精华内容
下载资源
问答
  • 在工作中,交互设计师应学会的“僭越” 何岩 交互设计师可能来自“五花八门”的专业,他们之前可能是艺术家、UI设计师、动画设计师、景观设计师、产品设计师、前端工程师、产品经理等,但现在都涌进看似“没有门槛”...
  • 当代性感文化的张力

    2020-07-09 06:32:38
    性感是现代审美文化的一大特点,实践中,它常常与社会规范产生博弈和僭越。性感的表达很重视身体的暴露,但它常常在遮蔽和暴露之间寻找适当的平衡。优秀的性感作品必须摆脱纯粹的暴露,要吸纳艺术风格学的元素,才能具有...
  • 而要从根本上改变工具理性的僭越所带来的人类精神危机和道德危机,实现价值理性的复归与人的意义的回归,就要改变以往在处理人与自然、人与社会、人与他人之间关系上的态度和原则,以最终实现工具理性与价值理性的协调...
  • 遵纪守法演讲词.doc

    2021-01-18 16:10:04
    遵纪守法演讲词 篇【1】 纪律法则,是一个布置精密的栅栏,僭越过去,就破坏了保护我们的屏蔽,小心呵护,就成就了一番文明。实践诚信,是一方源自心田的甘泉,停滞流动,会让我们的良知黯然失色;汩汩涌出,却使...
  • 因为其可以全局监听和发送事件,所以我们可以通过这个功能来进行一些“僭越”的操作,比如自动抢红包,修改键值等。 查看Android官方网站关于accessibilityservice介绍,如下: 原文: The classes in this package...

    1 简介

    AccessibilityService中文翻译是辅助功能,本意是帮助残障人士来方便使用手机的功能。因为其可以全局监听和发送事件,所以我们可以通过这个功能来进行一些“僭越”的操作,比如自动抢红包,修改键值等。

    查看Android官方网站关于accessibilityservice介绍,如下:

    原文:
    The classes in this package are used for development of accessibility service that provide alternative or augmented feedback to the user.
    An AccessibilityService runs in the background and receives callbacks by the system when AccessibilityEvents are fired. Such events denote some state transition in the user interface, for example, the focus has changed, a button has been clicked, etc. Such a service can optionally request the capability for querying the content of the active window. Development of an accessibility service requires extends this class and implements its abstract methods.
    An AccessibilityServiceInfo describes an AccessibilityService. The system notifies an AccessibilityService for AccessibilityEvents according to the information encapsulated in this class.
    Accessibility events are messages about users interaction with visual interface components in your application. These messages are handled by Accessibility Services.
    翻译:
    accessibilityservice包下的类用来开发能提供可选或扩展的反馈给用户的服务。
    一个AccessibilityService在后台运行,并且在AccessibilityEvent发出时接收系统回调。这些事件显示了用户界面上某些状态发生改变——比如焦点变化,按钮点击等。这个类可以查看当前活动窗口的内容。如果要使用这些功能,你需要继承AccessibilityService类并实现其中的抽象方法。
    一个AccessibilityServiceInfo描述了一个AccessibilityService。系统通过将信息装在AccessibilityServiceInfo类中,通知AccessibilityService发生了AccessibilityEvent。
    AccessibilityEvent是关于用户和界面交互的信息,并由AccessibilityService来处理。

    https://developer.android.google.cn/reference/android/accessibilityservice/package-summary
    https://developer.android.google.cn/training/accessibility/service

    2 使用

    1、创建一个继承自AccessibilityService的类,并在manifest中定义。

    public class RedPacketService extends AccessibilityService {
    
        @Override
        public void onAccessibilityEvent(AccessibilityEvent event) {
        }
    
        @Override
        public void onInterrupt() {
        }
    
    }
    

    2、配置自定义的AccessibilityService。也就是说,定义何时需要执行处理,何时不需要。
    我们可以通过代码中,或者xml文件进行配置。这里只介绍xml配置模式,因为在代码中某些设置是不可用的。

    创建redpacket_accessibility_config.xml文件如下:

    <?xml version="1.0" encoding="utf-8"?>
    <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
        android:accessibilityEventTypes="typeViewClicked|typeViewFocused|typeNotificationStateChanged"
        android:canRetrieveWindowContent="true"
        android:notificationTimeout="100" />
    

    并在manifest中加入如下meta-data标签:

    <service android:name=".RedPacketService">
        <intent-filter>
            <action android:name="android.accessibilityservice.AccessibilityService" />
        </intent-filter>
        <meta-data
            android:name="android.accessibilityservice"
            android:resource="@xml/redpacket_accessibility_config" />
    </service>
    

    好了,大功告成,这时候一个基本的辅助功能就实现了,我们可以在RedPacketService中处理事件了。

    3 利用辅助功能抢红包

    展开全文
  • web的越权访问的处理(步骤详解)

    千次阅读 2018-07-04 12:49:00
    一般来说,越权放问就好比你是非系统管理员用户,却偷偷的跑进了系统管理菜单,僭越权利访问里面的信息甚至修改其中的数据(不同级别的越权又称垂直越权访问),因此对数据的安全性造成极大的威胁,是故每家企业都有...

    用户越权访问的处理

    一般来说,越权放问就好比你是非系统管理员用户,却偷偷的跑进了系统管理菜单,僭越权利访问里面的信息甚至修改其中的数据(不同级别的越权又称垂直越权访问),因此对数据的安全性造成极大的威胁,是故每家企业都有其方法来保证企业内部数据的安全性,也就是解决越权访问的问题。

    有关改业务处理主要考虑下面两个方面:

    url的越权访问和接口方法的越权访问

    1. 通过角色用户来判断是否越权访问

    分下面几种情况来讨论:

      a.当没有用户登录的时候:

        只允许登录界面和一些js,css等非jsp/html的页面访问,这样算是越权

      b.当用户登录了之后:

        首先通过角色关系去数据库中查找他能够访问的页面,这样的话就可以针对能访问的做一个放行处理,非权限内的页面属于越权,这个时候拦截掉,可以直接让其跳转到登陆界面表示他越权了已经(自行处理越权后的操作)。

      2.具体实现流程

      a.统计好每个菜单url对应的接口方法和子页面访问路径(jsp或html等)

      b.将统计好的数据一一对应起来,存放在配置文件中或者数据库某个表中,这些数据随着业务的新增或者裁剪应有相关对应的维护,暂时以配置文件为例

      c.在登录模块中通过登录的用户角色查找它能够访问的菜单URL(写一个接口方法),存放在一个静态公有list变量中,如下定义:

    public static List<String> MENU_URLS = new ArrayList<>();

    将查询返回过来的url集合塞给MENU_URLS

      d,定义一个静态公有Properties变量,用来存放配置文件中的键值对,如下定义:

    public static Properties MENU_INTERFACE = null;

    然后对其进行读取配置文件并赋值

    String url = request.getSession().getServletContext().getRealPath("/WEB-INF/classes/porturl.properties");
    File file = new File(url);
        try {
            MENU_INTERFACE = new Properties();
            FileInputStream inStream = new FileInputStream(file);
            MENU_INTERFACE.load(inStream);
            } catch (Exception e) {
                System.out.println(e);
    }

      e.SpringMVC拦截器,判断session中用户是否过期,在doFilter 方法里匹配,只要js,css,pdf,png,jpg等文件可放行,在里面判断用户是否登录,没有登录的话只要是非登录页面的页面,统一视为越权访问。如果是已经登录的用户,我们可以取到登录后的MENU_URLS  MENU_INTERFACE 的信息,可以做如下判断:

    如果访问的路径checkURL和MENU_URLS 中的任意子串能匹配的上的话说明是可以访问的,这种情况放行,否则拦截下来跳转登录,记录越权访问信息;

    在上面的情况下,还会存在一种情况,当访问的路径是子页面的时候,这个时候需要去匹配,能匹配上的可以放行,这个需要通过checkURL去配置文件中找到对应的父URL,然后再进行匹配MENU_URLS这个里面的父URL是唯一的,配置文件中一(父)对多(子)。

    接口访问的也是同样的道理。

    其中放行方法:

    //正常访问,直接放行
    filterChain.doFilter(servletRequest, servletResponse);
    return;
    //初始化printWriterURL
    String printWriterURL="<script>window.location.href='"+httpRequest.getContextPath()+ "/jsps/login/login.jsp';</script>";
    //其他jsp的时候算是越权访问
    logger.info("用户越权访问!!!!" + url);
    PrintWriter p = httpResponse.getWriter();
    p.write(printWriterURL);
    p.flush();
    p.close();
    return;

    这样就大功告成,具体代码细节如下所示:

    public class SystemFilter implements Filter {
        private static Logger logger = Logger.getLogger(SystemFilter.class);
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
                throws IOException, ServletException {
            HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
            HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
            HttpSession session = httpRequest.getSession(true);
            String url = httpRequest.getRequestURI();
            String printWriterURL = "<script>window.location.href='" + httpRequest.getContextPath() + "/jsps/login/login.jsp';</script>";
            String checkURL = url;
            if(checkURL.endsWith("/")){
                checkURL = checkURL.substring(0, checkURL.length()-1);
                if(checkURL.split("/").length == 2){
                    PrintWriter p = httpResponse.getWriter();
                    p.write(printWriterURL);
                    p.flush();
                    p.close();
                    return;
                }
            }
            Object object = session.getAttribute("user");
            User user = object == null ? null : (User) object;
            boolean isAjaxRequest = false;
            if (!StringUtils.isBlank(httpRequest.getHeader("x-requested-with"))
                    && httpRequest.getHeader("x-requested-with").equals("XMLHttpRequest")) {
                isAjaxRequest = true;
            }
            StringBuffer server = httpRequest.getRequestURL();
            if (server.toString().contains(".css") || server.toString().contains(".jsp")
                    || (server.toString().contains(".js") && !server.toString().contains(".jsp"))
                    || server.toString().contains(".png") || server.toString().contains(".jpg") || server.toString().contains(".gif") || server.toString().contains(".svg")
                    || server.toString().contains(".so") || server.toString().contains(".woff") 
                    || server.toString().contains(".ttf") 
                    || server.toString().endsWith("/downPDF")         // 下载放行
                    || server.toString().contains("/websocket")     // 推送放行
            ){
                if(user ==null && server.toString().contains(".jsp")){
                    if(server.toString().contains("index.jsp")){
                        logger.info("!!!用户未登录且使用index.jsp页面:" + url);
                        PrintWriter p = httpResponse.getWriter();
                        p.write(printWriterURL);
                        p.flush();
                        p.close();
                        return;
                    }else if(server.toString().contains("login.jsp")){
                        //当访问的是login.jsp的时候放行
                        filterChain.doFilter(servletRequest, servletResponse);
                        return;
                    }else{
                        //其他jsp的时候算是越权访问
                        logger.info("用户越权访问!!!!" + url);
                        PrintWriter p = httpResponse.getWriter();
                        p.write(printWriterURL);
                        p.flush();
                        p.close();
                        return;
                    }
                }else if(user !=null && server.toString().contains(".jsp") && !(server.toString().contains("login.jsp"))){
                    Boolean ISURL = false;
                    //获取访问url的字符串
                    int urllen = checkURL.split("/").length;
                    String checkurl = "";
                    for(int i=2;i<urllen;i++){
                        if(i<urllen-1){
                            checkurl+=checkURL.split("/")[i]+"/";
                        }else{
                            checkurl+=checkURL.split("/")[i];
                        }
                    }
                    c:for(int j=0;j<LoginService.MENU_URLS.size();j++){
                        //获取角色用户对应二级菜单的URL
                        String _orUrls = LoginService.MENU_URLS.get(j);
                        if(_orUrls.equals(checkurl)){
                            System.out.println("符合条件的:"+checkurl);
                            ISURL = true;
                            break c;
                        }
                    }
                    //当上一个判断时不能访问考虑第二种情况
                    if(!ISURL){
                        //通过二级菜单读取配置文件中对应的子url,防止空指针异常
                        String purls = LoginService.MENU_INTERFACE.get(checkurl)==null?"":LoginService.MENU_INTERFACE.get(checkurl).toString();
                        d:for(int j=0;j<LoginService.MENU_URLS.size();j++){
                            String _orUrls = LoginService.MENU_URLS.get(j);
                            //获取角色用户对应二级菜单的URL和通过访问路径去查配置文件时候存在吻合则放行
                            if(_orUrls.equals(purls)){
                                System.out.println("符合条件的:"+purls);
                                ISURL = true;
                                break d;
                            }
                        }
                    }
                    
                    if(!ISURL){
                        //越权访问
                        String msg = "ip=" + user.getIpaddr() + "&name=" + user.getUsername();
                        logger.info("!!!越权访问:" + url + ";用户信息:" + msg);
                        printWriterURL = "<script>window.location.href='" + httpRequest.getContextPath() + "/jsps/login/login.jsp?" + msg + "';</script>";
                    }else{
                        System.out.println("========>"+LoginService.MENU_INTERFACE.get(checkURL.split("/")[2]+"/"+checkURL.split("/")[3]));
                        //正常访问,直接放行
                        filterChain.doFilter(servletRequest, servletResponse);
                        return;
                    }
                    PrintWriter p = httpResponse.getWriter();
                    p.write(printWriterURL);
                    p.flush();
                    p.close();
                    return;
                }
                // 如果发现是css或者js文件,直接放行
                filterChain.doFilter(servletRequest, servletResponse);
                return;
            }
            
            if (!isAjaxRequest) {
                if (user != null && (server.toString().contains("index.jsp") || server.toString().contains("login.jsp"))) {
                    // 如果发现是css或者js文件,直接放行
                    filterChain.doFilter(servletRequest, servletResponse);
                    return;
                } else {
                    if(user != null){
                        System.out.println("-----------1-----------"+checkURL);
                        if(LoginService.MENU_INTERFACE != null && LoginService.MENU_INTERFACE.size() != 0 
                                && LoginService.MENU_URLS != null && LoginService.MENU_URLS.size() != 0 ){
                            if(checkURL.split("/").length == 4){
                                System.out.println("-----------2-----------"+LoginService.MENU_INTERFACE.get(checkURL.split("/")[2]+"/"+checkURL.split("/")[3]));
    //                            if(LoginService.MENU_INTERFACE.get(checkURL.split("/")[2]+"/"+checkURL.split("/")[3]) == null){
    //                                // 如果发现是css或者js文件,直接放行
    //                                filterChain.doFilter(servletRequest, servletResponse);
    //                                return;
    //                            }
                                Boolean hasIn = false;
                                if(null != LoginService.MENU_INTERFACE.get(checkURL.split("/")[2]+"/"+checkURL.split("/")[3])){
                                    String[] urls = LoginService.MENU_INTERFACE.get(checkURL.split("/")[2]+"/"+checkURL.split("/")[3]).toString().split(",");
                                    // jsp/pages/configmgt/device/deviceList.jsp,jsp/pages/configmgt/systemmgt/systemmgtList.jsp
                                    a:for(int i=0;i<urls.length;i++){
                                        String _url = urls[i];
                                        for(int j=0;j<LoginService.MENU_URLS.size();j++){
                                            String _orUrls = LoginService.MENU_URLS.get(j);
                                            if(_orUrls.equals(_url)){
                                                System.out.println("符合条件的:"+_url);
                                                hasIn = true;
                                                break a;
                                            }
                                        }
                                    }
                                    
                                }
                                if(!hasIn){
                                    //越权访问
                                    String msg = "ip=" + user.getIpaddr() + "&name=" + user.getUsername();
                                    logger.info("!!!越权访问:" + url + ";用户信息:" + msg);
                                    printWriterURL = "<script>window.location.href='" + httpRequest.getContextPath() + "/jsps/login/login.jsp?" + msg + "';</script>";
                                }else{
                                    System.out.println("========>"+LoginService.MENU_INTERFACE.get(checkURL.split("/")[2]+"/"+checkURL.split("/")[3]));
                                    //正常访问,直接放行
                                    filterChain.doFilter(servletRequest, servletResponse);
                                    return;
                                }
                            }
                        }
                        
                        
                    }
                    PrintWriter p = httpResponse.getWriter();
                    p.write(printWriterURL);
                    p.flush();
                    p.close();
                    return;
                }
            }
            if (url.toString().contains(".jsp")) {
                logger.info(httpRequest.getSession().getServletContext().getRealPath("/") + "-------");
                logger.info("拦截器放行地址:-------------------" + url);
            }
            filterChain.doFilter(servletRequest, servletResponse);
            return;
        }
    
        /**
         * 判断是否为Ajax请求
         * 
         * @param request
         *            HttpServletRequest
         * @return 是true, 否false
         */
        public static boolean isAjaxRequest(HttpServletRequest request) {
            return request.getRequestURI().startsWith("/api");
            // String requestType = request.getHeader("X-Requested-With");
            // return requestType != null && requestType.equals("XMLHttpRequest");
        }
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }
    
        @Override
        public void destroy() {
            // To change body of implemented methods use File | Settings | File
            // Templates.
        }
    
    }

     

     

     

     

    展开全文
  • doc2vec

    2019-03-30 20:11:24
    doc2vec学习语料库学习代码总结 学习参考网站 语料库 乾隆六年二月初二,魏璎珞随其他待选宫女一道入宫。在从等候殿选的一众秀女...高贵妃对皇后言语不敬,十分僭越,皇后却浑不在意。随即,她见皇上眼中只有皇...

    NLP笔记 - Word Embedding // doc2vec 之 延禧攻略

    学习参考网站

    语料库

    下载链接:https://pan.baidu.com/s/1Av1q-Y_JbSkZsG4RGVo8Rg
    提取码:d10r
    结构图
    |-nlp //新建文件夹
    |- doc2vec.py //新建python文件
    |- data //新建文件夹
    |- yxgltext.txt //下载语料数据放在data文件夹目录下
    |- model //新建文件夹

    乾隆六年二月初二,魏璎珞随其他待选宫女一道入宫。在从等候殿选的一众秀女面前经过时,其中一名待选宫女吉祥不小心打翻了水桶,弄脏了秀女乌雅青黛的衣裙。乌雅氏勃然大怒,要重罚吉祥时,璎珞挺身而出,巧用香粉替乌雅氏的莲花鞋底添彩,救下吉祥。皇上、皇后和高贵妃三人一道主持殿选。高贵妃对皇后言语不敬,十分僭越,皇后却浑不在意。随即,她见皇上眼中只有皇后,对皇后愈加嫉恨。殿选时,高贵妃附和着皇上对众秀女一起评头论足。轮到乌雅氏时,她的步步生莲引起了众人的注意。就在她得意万分时,皇上震怒,以妖媚惑主为由命人将她叉出宫去,甚至将她的家人一并问罪,让等候的秀女们一阵心惊肉跳。随即,皇上兴致缺缺,在将与乌雅氏一道入宫的纳兰淳雪留用后,匆匆离开。高贵妃也随之告退,留皇后一人在此主持殿选。与此同时,待选宫女们正被考核绣工。吉祥因之前被乌雅氏惩罚而伤了手,不小心让绣绷沾上了血。她向交好的玲珑求助,却被玲珑婉拒。走投无路之时,璎珞又一次对她伸出援手,将自己未绣完图样换给了吉祥,助她渡过难关,两人也因此结交。
    魏璎珞和其他宫女一起入住宫女所,玲珑、锦绣等人因她受了吴总管的夸奖而嫉妒,故意生事,璎珞毫不畏惧,四两拨千斤,强硬地给了众人一个教训,成功立威。随后,躺在床榻上的魏璎珞辗转难眠,脑子里全是将自己一手带大的亲姐姐璎宁躺在棺材中的样子。事实上,她不顾家人阻拦执意进宫,就是为了追查曾在宫里当值的姐姐真正的死因。愉贵人称病躲避侍寝,交好的怡嫔帮她百般遮掩,被高贵妃看出破绽,带着太医赶到愉贵人居住的永和宫,不仅让太医帮愉贵人诊脉,还特赐了枇杷膏给她治咳疾。怡嫔认定枇杷膏有毒,向皇后告发,可却没有验出毒物反应来。高贵妃见状一口咬定怡嫔以下犯上,下令重罚。璎珞等人在干活的时候,宫女所方姑姑带人查找她们是否带了违禁物。她从璎珞的包袱里翻出一只古怪瓷瓶后,责怪璎珞夹带宫外物品入宫,璎珞谎称思乡土,避开了方姑姑的怀疑。 随后,璎珞向绣坊张嬷嬷打听姐姐璎宁,被张嬷嬷一顿斥责,心中深感失望。
    璎珞冲到御花园踢打灵柏泄愤,恰被皇上看到,大发雷霆,要严惩伤害灵柏的璎珞,璎珞巧言辩解,蒙混过关。皇上去给太后请安,太后责他过于宠幸皇后,忽略了其他妃嫔。弘历不想听太后唠叨,借口离开。在经过御花园灵柏时,皇上回过神来,知道自己是被璎珞忽悠了,于是命太监总管李玉把璎珞找出来,然后去长春宫探望皇后。彼时,皇后正因明玉将愉贵人拒之门外一事大发雷霆。见皇上过来了,皇后强抑怒火与皇上说话,皇上看出皇后的疏离之情,有些遗憾地离开了长春宫。皇上听闻高贵妃为难愉贵人一事,赐储秀宫金刚经,命高贵妃抄完一遍佛经,修身养性,高贵妃气恼万分。乾清门侍卫庆锡看到璎珞成为了宫女,十分震惊。他拉着璎珞去了一处杂物房说话,要求璎珞别再追查璎宁之死,被璎珞一口回绝。二人碰面一事被玲珑看到,玲珑向方姑姑告密,方姑姑试图捉奸,璎珞觉察到她的用意,凭借自己的机智化险为夷,并趁机教训了总爱找事的方姑姑一顿。方姑姑伤了腰,一瘸一拐地离开,璎珞看到她落下的络子正是她当年亲手送给姐姐的,对方姑姑起了疑心。
    璎珞及时赶来阻止锦绣继续在傅恒面前出丑,锦绣不满璎珞破坏自己攀高枝的计划,对璎珞怀恨在心,气咻咻离开。随后,璎珞被傅恒所拦,告诫她不要小看宫里的男子,璎珞敷衍了他一番后匆匆离开。傅恒去长春宫探望皇后,见皇后因思念已逝的儿子永琏而茶饭不思神情恍惚,又生气又心疼,与她发生了争执,提醒她不要忘了自己皇后的身份,皇后恼恨,冲傅恒发了好大一通火气。两人不欢而散,傅恒临走前给皇后留下一只木匣,叮嘱她一定要看,皇后恍若未闻。离开长春宫后,傅恒路遇纯妃,他跪请纯妃帮忙,以相助皇后重新振作,纯妃答应。随后,纯妃去长春宫拜见皇后,借皇后身边伺候的宫女红螺到岁数离宫却因皇后近来精神不济而无人回禀被耽搁一事提醒皇后,皇后恍然大悟。纯妃走后,皇后打开木匣,发现乾隆元年皇上立永琏为储君的诏书,方知自己一直都误会了他,决心重新振作起来,担负起六宫之主的责任。次日,妃嫔来向皇后请安,高贵妃以为皇后又抱恙缺席,将与皇后交好的纯妃挑剔了一番后刚准备离开,皇后出现,斥责了高贵妃。随即,她又安抚了愉贵人。
    贵妃百般试探无果,以为璎珞当真是个傻子,无奈放人。贵妃身边的嘉嫔却觉得璎珞并非真傻,对她存了一丝戒备之心。宫女所里,见璎珞久久未归,吉祥十分担心,锦绣却造谣璎珞是跟人私会去了,吉祥气急,跟她争执了起来。这时,璎珞回来,若有所思地看了众人一眼,不发一言的径直躺下休息。次日,璎珞找上玲珑,指出是她向高贵妃告的密,玲珑一口否认,被璎珞狠狠教训一顿,内心更加嫉恨。收拾完玲珑后,璎珞去找方姑姑,想看看能不能从她那里查到关于姐姐死因的蛛丝马迹,谁知却一无所获。因为锦绣造谣璎珞与乾清门侍卫有染,谣言越来越旺盛,甚至张嬷嬷都找上了璎珞询问情况,璎珞否认后,决心将计就计,彻底从根源杜绝谣言。于是她故意深夜出门被锦绣发现,锦绣告诉了方姑姑,方姑姑因跟璎珞接二连三的过节对她恨之入骨,因此嘱咐锦绣盯紧璎珞,有消息及时汇报。随后,锦绣发现璎珞与侍卫庆锡私相授受,没过多久,锦绣发现璎珞不仅闻到鱼腥就恶心呕吐,甚至腰身都粗了一圈。
    整理姐姐遗物的时候,璎珞发现了一枚陌生的玉佩,上面还刻着满文。璎珞去找张嬷嬷,经过一番软磨硬泡后,璎珞终于从张嬷嬷口中问出当年发生的事,更知道玉佩的所有者竟是皇后的亲弟弟富察傅恒。面对张嬷嬷的劝说,璎珞决心不管是谁,一定要追查到底,还姐姐一个公道。舒贵人纳兰淳雪为吸引皇上注意,特意在御花园唱歌,谁料反倒惹得皇上动怒,被罚在御花园唱一夜,顿时心灰意冷。与此同时,纯妃装病避宠,被弘历看破却不说破,遂了她的心意后离开她的寝宫,转道长春宫探望皇后。提及纯妃,皇后劝皇上多多担待。随即,皇后提起宫中奢靡浪费之风,皇上不置可否。明玉暗中提醒皇后要再生一位嫡子,稳固中宫之位,皇后表面斥责,内心深以为然。然皇上虽与皇后同床共枕,却没有旁的心思,皇后十分失望。眼看皇后千秋将至,各处都要为皇后献上寿礼,绣坊也不例外。张嬷嬷选定璎珞作为绣者,受到玲珑嫉妒。随后,玲珑设计调走看守孔雀羽线的吉祥,趁机盗走为皇后寿礼绣的凤袍所专用的孔雀羽线,要令璎珞出丑。
    在皇后身边的大宫女尔晴的催促下,璎珞刚准备掀开遮着凤袍的红布,这时,皇上派人送了贺礼过来。皇后见了凤心大悦,璎珞松了一口气,随即拿出绣坊送出的凤袍。这件凤袍用鹿尾绒毛作线,暗含不忘满洲旧俗,追忆祖先英灵之意,受到皇后赞赏,从所有寿礼中脱颖而出。千秋寿宴过后,璎珞跪在长春宫前,将真相和盘托出。皇后十分喜爱璎珞的机灵,要调她来长春宫伺候,此举正合璎珞心意。璎珞离开绣坊前,决定先找到当初盗取孔雀羽线的人。见皇后下旨彻查孔雀羽线丢失一事,玲珑十分惶恐。为了脱罪,她在吉祥生辰这天故意陷害吉祥,借口给吉祥藏了一份礼物,让吉祥去找,吉祥不知有诈,开心极了。就在她挖出玲珑藏的孔雀羽线时,吴总管出现,吉祥被当成盗贼杖毙,璎珞愤怒至极。璎珞干活接连出错,玲珑假惺惺地关心让璎珞愈加厌恶她。张嬷嬷带来了给皇上绣常服的工作,玲珑主动请缨,申请完成皇帝常服的绣制工作,璎珞不同意,提出要比试分胜负。玲珑全力以赴,却因龙目难绣而落败。
    张嬷嬷知道璎珞要被调去长春宫,十分担心她因为自己倔强的脾气受苦,璎珞反过来安抚张嬷嬷。璎珞进了长春宫后,明玉摆出大宫女的架子,对她各种训诫。恰好傅恒来看皇后,璎珞趁机露出那枚玉佩引起了傅恒的注意。傅恒向璎珞讨要玉佩,两人交谈时被明玉撞见。明玉素来倾慕傅恒,因此对璎珞更加深恶痛绝,百般刁难,甚至还唆使长春宫其他宫女疏远璎珞。不仅如此,她还在皇后面前百般中伤璎珞躲懒,皇后对此将信将疑。次日一早,璎珞识别前晚有月晕,认定将有大雨,提醒明玉照管好皇后心爱的茉莉花,明玉不以为意,还将璎珞好一通训斥,谁知当夜真的天降大雨,璎珞抢先一步遮挡茉莉,使得花儿免受风雨摧残,被皇后看在眼里,对明玉有些失望,明玉心中越发气闷不平。高贵妃来给皇后请安时,看到璎珞在院子里忙碌,想起之前她装傻充愣糊弄自己,气不打一处来,让人割掉她的舌头泄愤。璎珞拼命挣扎,惊动了皇后。皇后态度坚决地护着璎珞,高贵妃碰了一鼻子灰,讪讪离开。随后,璎珞将自己与高贵妃的过节告诉皇后,皇后得知璎珞竟敢戏弄高贵妃,不禁莞尔。
    娴妃坚持原则,一口拒绝母亲的请求,遭到母亲掌捆,伤心欲绝。皇后身体不适,请张院判来诊治,从张院判口中听闻愉贵人心思深沉,郁结于心,原本打算亲自探望以安她的心,被尔晴拼力劝阻,于是便派明玉带着人参去探望,谁知明玉转头就将差事交给了璎珞。娴妃泣涕涟涟地给家里写家书,纯妃突然来访,向娴妃进言,让她去求皇后替常寿求情,想借机拉拢娴妃,却被娴妃严词拒绝,无奈离开。璎珞去给愉贵人送人参时,撞见有小太监要杀她,忙奋力阻止,并冲出去找人求救,不料撞见高贵妃,她忙躲回永和宫,并反锁了宫门。高贵妃在外面命人撞门,璎珞在房间里呼唤昏迷不醒的愉贵人未果后,急中生智,利用屋子里的炭火盆造成走水的假象,引来傅恒等侍卫,救下愉贵人,破坏了高贵妃的计谋。面对那个杀人的小太监话里话外都在指证皇后是幕后主使,璎珞据理力争,与高贵妃辩驳,高贵妃哑口无言,向皇后道歉。傅恒见璎珞受伤,特意给她送来伤药,却又碍于男女大防格外拘谨,引来璎珞发笑。随后,璎珞故意提起阿满,傅恒断然否认相识。璎珞若有所思。
    璎珞经由永和宫一事深得皇后赏识,得以在皇后身边伺候,明玉见状十分嫉恨璎珞。恰逢皇后令内务府将库存旧物发往崇文门清仓变卖,得来的银钱全部捐给善堂,抚养无家可归的孤儿,璎珞听闻明玉抱怨皇后被众人误会中饱私囊,不解皇后为何不辩解,皇后一番言论让璎珞恍然大悟,同时也看到了皇后宽广的胸襟。提起愉贵人的近况,听闻皇上近来都没有去探望,皇后感慨难得有情郎,羡慕董鄂妃得到痴情帝王守护,璎珞却对顺治帝让三十宫人为董鄂妃殉葬一事颇有微词,被皇上无意听见,要严惩璎珞,皇后为璎珞求情,璎珞又巧言善辩,侥幸逃脱责罚。皇上认出璎珞是之前踢打灵柏的宫女,认为璎珞汲汲营营,品行不佳,提醒皇后小心,皇后却替璎珞辩驳,言语间对她颇为信任。常寿在狱中染病,娴妃母亲再来求援,娴妃去内务府提前支取银两被拒绝后,决定变卖珠宝,筹措银两。璎珞教傅恒用猪脬装热水取暖,被海兰察中途夺走,海兰察被突然爆开的猪脬烫伤,傅恒怀疑璎珞别有用心。璎珞巧妙应对,傅恒消除了怀疑。海兰察指璎珞一定暗恋傅恒,傅恒怦然心动,绝不承认。
    皇后邀请愉贵人游园,正好看到嘉嫔和高贵妃也在。愉贵人怕狗,看到高贵妃的宠物犬雪球瑟瑟发抖,想要提前告退,却被高贵妃拦下说话。嘉嫔趁机向看护雪球的小太监使了个眼色,小太监放出雪球,惊到了愉贵人,璎珞见状挺身而出,赶跑雪球,救下愉贵人。回到储秀宫后,高贵妃气恼嘉嫔利用自己为她的儿子谋福利,嘉嫔巧言令色,称是为贵妃着想,先行一步除掉愉贵人免除后患。并说用雪球惊吓愉贵人只是第一步,后招早已埋下。愉贵人受到惊吓,璎珞替皇后送珍珠粉去永和宫给她压惊,发现愉贵人身边的宫女芳草被嘉嫔收买,用有毒的贝壳粉调换了愉贵人服用的珍珠粉。愉贵人气急,要找嘉嫔对质,璎珞劝说她暂且隐忍,准芳草将功折罪,静待时机好让嘉嫔人赃并获,可芳草却急于戴罪立功,没有按照璎珞的吩咐回禀嘉嫔,露出马脚被嘉嫔察觉。
    璎珞摆脱嘉嫔的人的纠缠后,发现荔枝树被毁,深知如果不想办法,自己只有死路一条,还会连累皇后丢了颜面。她果断赶去永和宫,劝说愉贵人去参加荔枝宴上,并故意引走了雪球。荔枝宴上,皇后借由千秋节礼物的赏赐,赠金给娴妃解困,娴妃十分感动。随后,愉贵人的出现让高贵妃和嘉嫔心下不安。很快,鲜荔枝树被抬到会场,皇后准备亲手采摘,打开红绸,雪球跳出来,现场一片混乱,并再度惊吓到了愉贵人。面对愉贵人苦苦向自己求救,又看到荔枝树被“雪球所毁”,再加上纯妃等人的意有所指,弘历震怒。高贵妃因教唆恶犬伤害愉贵人,毁掉福建岁贡,被罚一年宫份。嘉嫔同样受到牵连,降为贵人、禁足三月。皇后在听罢璎珞将事情真相的回禀后,喜欢璎珞能言善辩,聪明果断,决定从此后教她读书习字,世间道理。海兰察奉旨处置雪球,璎珞向海兰察讨要,声称要杀之泄愤,海兰察乐得不用卷入高贵妃的愤怒当中,开心的交给她,被傅恒看到。傅恒责怪海兰察奸诈,海兰察却不以为意,反而担心璎珞下不去手,傅恒看着璎珞的背影,笃定璎珞没有表面看上去那么简单。
    傅恒发现璎珞并没有杀掉雪球,还把它偷偷养了起来,十分惊讶。见事情败露,璎珞坦言雪球是无辜的,自己下不去手,所以才会拿别的狗皮来应付海兰察。傅恒被璎珞的善良所打动,答应帮她把雪球送出宫,并为它找一个靠谱的主人。是夜,面对张嬷嬷的疑问,璎珞告诉她自己是故意让傅恒发现的,她所做的一切都是为了让傅恒放下戒心。高贵妃被皇上惩罚后,脾气愈加暴躁,甚至因没有喝到常喝的茶而大发雷霆。这时,怡亲王密报高贵妃,娴妃之父那尔布为了替子脱身,不惜向他行贿。高贵妃请怡亲王向弘历透露此事,弘历大发雷霆,将那尔布下狱。面对皇上的指控,娴妃不肯相信,于是皇上特许她前去探监。去了监狱娴妃才得知那尔布竟真的行贿,大失所望。从监狱出来后,走到神武门前,娴妃母亲匆匆赶到,求娴妃向皇帝求情救救那尔布,娴妃因一时恼火拒绝,谁料常寿病故的消息传来,绝望又愤怒的娴妃母亲撞死神武门,娴妃震惊痛苦。
    怡亲王因势力大不如前,为了向高贵妃示好,受了嘉贵人指使,特意去找庆锡交好,并许诺事成之后给他提升地位。庆锡为了得到晋升,同意跟怡亲王合作,陷害魏璎珞。他们先派长春宫的一个小太监偷了璎珞的一张习字,并着人模仿她的字迹写了一封邀约的信件交给了庆锡,随即,庆锡又约璎珞见面,被璎珞拒绝后,他用璎宁的死作诱饵,璎珞虽然答应赴约,但因庆锡前后态度迥异,暗中留了心眼。与此同时,傅恒发现庆锡和怡亲王来往密切,心中生疑,也暗中盯紧了他们。璎珞依约来到御花园,庆锡一出现,便被璎珞早已安排好的太监们痛打一顿,这时怡亲王赶来,庆锡指证璎珞勾引乾清门侍卫,怡亲王趁机给璎珞定罪,想要拖去慎刑司,谁料傅恒约弘历在御花园下棋,听到争执后,将他们带到圣前,请皇上裁决。庆锡言之凿凿,并取出情信作为证据,璎珞巧妙指出纸张与字迹的异常,引发弘历大怒,庆锡为求脱身,只好将怡亲王教唆他冤枉璎珞一事和盘托出,璎珞平安过关,庆锡却被杖责后驱逐出宫。
    祭祀分肉之时,怡亲王的肉中被查出含有盐巴,皇上勃然大怒,治了他大不敬之罪,革职查办关进了宗人府。随后,侍卫们手里的肉也接受了检查,但是没有查出异常,皇上深感欣慰。璎珞见傅恒没被捉到,有些意外。祭祀结束后,傅恒叫住璎珞,璎珞坦言是自己告发了怡亲王,目的就是为了给他一个教训,让他知道不是每次犯错都能逃过一劫。傅恒百感交集,犹豫再三后,质问璎珞给自己盐包意欲何为。璎珞承认自己是为了给姐姐报仇,并逼问傅恒是否杀害姐姐的凶手,傅恒否认,璎珞不信,争执中用匕首刺伤了傅恒。皇后因璎珞告发怡亲王一事召见她,准备敲打敲打她,璎珞却误以为皇后知道自己伤了傅恒要惩罚她,谁料傅恒根本未将受伤一事告知任何人,只是将发现璎珞告发怡亲王一事告知皇后,让皇后好生管教。皇后责罚璎珞抄写一百遍“宽容”二字,明玉对此十分不满。受皇后所托,璎珞带着参汤去探望傅恒。傅恒再次向璎珞发誓自己绝非伤害璎宁之人,并答应帮助她一同寻找凶手,璎珞动容。两人感情有所进展,气氛暧昧,海兰察闯进来,璎珞有些难为情,匆匆离开。
    嘉答应在冷宫被太监欺辱,此时娴妃来冷宫看望嘉答应,嘉答应恼羞成怒,一边倾吐自己内心的不满与委屈,一边出言嘲讽娴妃无能,才导致她自己家破人亡。娴妃想着自己曾经历的一切,愤而用长巾勒住了嘉答应的脖子。嘉答应临死之际,娴妃方才透露自己早知四阿哥生病的蹊跷,故意引纯妃发现,目的就是为了名正言顺向皇后靠拢。娴妃将嘉答应伪装成自尽的样子后离开冷宫,在雨中慢慢往承乾宫走去,目光变得更加坚定、冷酷,决心今后为自己而活,放弃愚蠢的正义与原则。璎珞没有按照皇后的执意抄写一百遍“宽容”二字,而是用“忍”字替代。皇后指出她心中并没有真正认识到自己的错误,悉心教导。这时,尔晴来劝说皇后将四阿哥接到长春宫抚养,皇后拒绝,尔晴又苦劝皇后早日生下嫡子好保重自己的地位,皇后气恼离开。夜深人静时,璎珞发现皇后身患寒疾,并不欲任何人知道。随后,皇后挥退左右并向纯妃求援。之后,纯妃屡次出入长春宫,停留的时间越来越长。高贵妃得知此事后,故意放出风声,说皇后与纯妃之间关系不正常,顿时宫中众人议论纷纷。
    璎珞去查看姐姐出事那天宫中进出人员的名册,被傅恒阻止。见璎珞依旧执着于寻找杀害姐姐的真相,傅恒苦劝无果,只好决定暗中相助。月圆之夜,皇后在庭院里思念逝去的儿子,愁眉不展,璎珞想法子逗皇后开心,跟明玉追闹时,皇上驾到,斥责璎珞不懂规矩大呼小叫行为无状。皇后忙替璎珞辩解,并挥退璎珞和明玉,将皇上迎进殿内。皇后受弘历所托,将愉贵人接入长春宫待产,明玉尔晴强烈反对,璎珞也苦劝皇后,皇后却将自己的想法告诉璎珞。看着皇后温文尔雅贤良淑德的样子,璎珞想起了自己的姐姐,潸然泪下。皇后随太后去礼佛,留明玉璎珞照看长春宫。明玉排挤璎珞,不让她插手宫中事宜。璎珞见状,也不欲与她多争辩,只是尽心做好自己的分内之事。深夜,愉贵人突然临产,惊了长春宫众人。明玉守在愉贵人身边,不让璎珞靠近。随即,愉贵人生下一个浑身金黄的男婴,众人皆惊。
    娴妃提议让从江南请来的名医叶天士为五阿哥医治,皇上应允。叶天士肯定五阿哥患了黄疸,并保证用退黄方就可治好,弘历松了口气。高贵妃见风使舵,向皇上告罪,皇上表示谅解。这时,纯妃带人抬了此前照料愉贵人饮食的一名蒙古厨师的尸体上来。了解过愉贵人孕期的饮食习惯后,叶天士禀报弘历,婴儿瞳孔金黄的怪病,多因母体湿热、胆汁淤积而生,孕妇应当注意饮食,不过分食用甜食烫食、腥膻之物。璎珞意有所指是高贵妃想对付愉贵人和五阿哥,高贵妃辩驳,纯妃却呈上证据,是厨师死前留下的一封指认高贵妃的血书,弘历大为恼火,软禁了高贵妃。皇上准备离开时,明玉拦住皇上,告发璎珞盗用皇后金印,璎珞打开匣子,里面只是一块砚台,明玉因诬告而受罚。随后,璎珞拦住纯妃与她说话,指出厨师自尽留下血书一事是她策划,纯妃提醒璎珞别站错了队。
    高贵妃巧妙利用这次机会对皇上诉说衷肠,赢得弘历谅解。与此同时,皇后在长春宫门口苦等弘历不至,深感失望。次日,璎珞在御花园发泄心中对皇上辜负了皇后的不满,遇到傅恒,璎珞向他替皇后鸣不平,出言不逊,被傅恒劝阻。随即,璎珞因百般查探姐姐死因却一无所获,越发焦躁。弘历深夜批阅奏章,身体不适,召太医前来诊治,发现他患了疥疮。皇后不顾传染危险,执意要搬入养心殿亲自照料弘历,原本她让明玉随行,可明玉却将此差推给了璎珞。璎珞为了调查皇上身边的亲信,查探姐姐的真正死因,于是同意跟明玉调换差事,跟随皇后一道搬去了养心殿。璎珞替皇上上药,皇上十分反感,拒绝了璎珞。可李玉粗手笨脚弄痛了皇上,皇上恼怒,璎珞告诉皇上养心殿伺候的多半都是太监,如果他坚持,那么只好请皇后来替他上药了。皇上无奈,只好让璎珞继续。皇上涂了药之后依然燥热瘙痒难耐,皇后衣不解带地照顾了他整整一晚上,璎珞见状,十分动容。璎珞试探李玉,询问乾清宫夜宴当晚曾经离席的宗室,可惜一无所获。 
    傅恒得知璎珞生病,偷偷前来照料,璎珞对此若有所觉。叶天士来探望璎珞,他知道璎珞并不是被染上疥疮,而是服用花生过敏引起出疹,于是问璎珞为什么这么做,璎珞解释说为了保命,并感谢叶天士帮忙隐瞒,叶天士恍然大悟。弘历病情痊愈,要找璎珞算总账,得知璎珞已经康复回到长春宫,弘历回过神来,气恼她装病欺骗自己,于是要去长春宫兴师问罪。行至一半,听闻宫中议论璎珞舍身救主一事,不禁进退两难,气愤不已。璎珞去感谢傅恒的照料,傅恒却不承认,这时,海兰察出现说漏了嘴,璎珞气恼傅恒骗自己,傅恒向璎珞解释自己也是为了她的清誉着想,璎珞谅解了他,两人的感情越加亲密。纳兰氏和陆晚晚来长春宫拜见皇后,意图讨好投靠,被心情不佳的明玉拒之门外,怀恨在心,转投高贵妃门下,被高贵妃奚落也在所不惜。璎珞见皇后思念二阿哥伤感失落,决心帮助皇后。弘历寿辰,皇后献上亲自画的山水图。高贵妃别出心裁,在纳兰氏的建议下组建了一支西洋乐队,讨得弘历欢心。纳兰氏随即又借花献佛,呈上一尊琉璃佛塔,塔内藏着一颗佛之莲,请皇上代她献给太后。
    

    学习代码

    # -*- coding:utf-8 -*-
    # author:chenqian time:2019/3/30
    
    import os
    os.chdir("C:/Users/Administrator.PC-20170407LSUI/Desktop/文本语义/NLP(Python)") # nlp文件夹的路径
    
    import jieba  # 中文分词工具
    import sys
    import gensim
    import sklearn
    import numpy as np
    from gensim.models.doc2vec import Doc2Vec, LabeledSentence #从gensim导入doc2vec
    TaggededDocument = gensim.models.doc2vec.TaggedDocument
    
    # 虚词,可以随意添加删除
    stoplist = ['的','了','被','。',',','、','她','自己','他','并','和','都','去','\n']
    
    
    # 进行中文分词
    def cut_files():
        filePath = 'data/yxgltext.txt'
        fr = open(filePath, 'rb')
        fvideo = open('data/yxglCut.txt', "w")
    
        for line in fr.readlines():
            curLine = ' '.join(list(jieba.cut(line)))
            fvideo.writelines(curLine)
    
    
    # 读取分词后的数据并打标记,放到x_train供后续索引,占用很大内存(供小数据量使用)
    def get_datasest():
        with open("data/yxglCut.txt", 'r') as cf:
            docs = cf.readlines()
    
            # 删除常用词,放入docs二维数组中,下标为段数
            for idx in list(range(0, len(docs))):
                docs[idx] = ' '.join([word for word in docs[idx].split() if word not in stoplist])
            docs = [doc for doc in docs if len(doc) > 0]
            print(len(docs))
    
        x_train = []
        for i, text in enumerate(docs):  # 返回相应的下标和元素
            word_list = text.split(' ')  # 返回一个数组
            l = len(word_list)
            word_list[l - 1] = word_list[l - 1].strip()  # 去掉最后一个词的回车符
            document = TaggededDocument(word_list, tags=[i])  # 词袋+标签,词袋为[],标签为[i]
            x_train.append(document)  # 数组里面为一个元素为TaggededDocument类型
            # print(document)
    
        return x_train
    
    
    # 模型训练
    def train(x_train, size=100, epoch_num=1):  # size=200 意味着 每个词向量是200维的
        # 使用 Doc2Vec 建模
        model_dm = Doc2Vec(x_train, min_count=1, window=3, size=size, sample=1e-3, negative=5, workers=4)
        # model_dm.train(x_train, total_examples=model_dm.corpus_count, epochs=70)
        model_dm.save('model/model_dm_doc2vec')
    
        return model_dm
    
    
    # 实例
    def test():
        #    model_dm = Doc2Vec.load("model/model_dm_doc2vec")
        test_text = ['我', '喜欢', '傅恒']
        inferred_vector_dm = model_dm.infer_vector(test_text)
    
        # 选取相关度最高的10个词
        sims = model_dm.docvecs.most_similar([inferred_vector_dm], topn=10)
        return sims
    
    cut_files()
    x_train=get_datasest()
    model_dm = train(x_train)
    sims = test()
    for count, sim in sims:
        sentence = x_train[count]
        words = ''
        for word in sentence[0]:
            words = words + word + ' '
        # print(words, sim, len(sentence[0]))
    # 输出’璎珞’的100维词向量:
    # print(model_dm.wv['璎珞'])
    # 可以用句向量模型直接根据词向量查询相似度
    print(model_dm.wv.most_similar('璎珞'))
    print(model_dm.similarity('璎珞', '傅恒'))
    # 查询字典的样子,输入:
    print(model_dm.wv.vocab)
    # 查询字典大小:
    print(len(model_dm.wv.vocab))
    
    

    Doc2Vec函数参数说明
    · size:是指特征向量的维度,默认为100。
    · alpha: 是初始的学习速率,在训练过程中会线性地递减到min_alpha。
    · window:窗口大小,表示当前词与预测词在一个句子中的最大距离是多少。
    · min_count: 可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5。
    · max_vocab_size: 设置词向量构建期间的RAM限制,设置成None则没有限制。
    · sample: 高频词汇的随机降采样的配置阈值,默认为1e-3,官网给的解释 1e-5效果比较好。设置为0时是词最少的时候!不进行降采样,结果词少,当设置1e-5,相应的词展现更丰富!
    · seed:用于随机数发生器。与初始化词向量有关。
    · workers:用于控制训练的并行数。
    · min_alpha:学习率的最小值。
    · sg: 用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法。
    · hs: 如果为1则会采用hierarchica·softmax技巧。如果设置为0(默认),则使用negative sampling。
    · negative: 如果>0,则会采用negativesampling,用于设置多少个noise words(一般是5-20)。
    · cbow_mean: 如果为0,则采用上下文词向量的和,如果为1(default)则采用均值,只有使用CBOW的时候才起作用。
    · hashfxn: hash函数来初始化权重,默认使用python的hash函数。
    · iter: 迭代次数,默认为5。
    · trim_rule: 用于设置词汇表的整理规则,指定那些单词要留下,哪些要被删除。可以设置为None(min_count会被使用)。
    · sorted_vocab: 如果为1(默认),则在分配word index 的时候会先对单词基于频率降序排序。
    · batch_words:每一批的传递给线程的单词的数量,默认为10000。
    一些参数的选择与对比:
    1.skip-gram (训练速度慢,对罕见字有效),CBOW(训练速度快)。一般选择Skip-gram模型;
    2.训练方法:Hierarchical Softmax(对罕见字有利),Negative Sampling(对常见字和低维向量有利);
    3.欠采样频繁词可以提高结果的准确性和速度(1e-3~1e-5)

    总结

    用到的Doc2vec的功能主要有三个:

    1.TaggedDocument语料预处理
    2.train训练模型,save 和 load 加载训练好的模型
    3.docvecs.most_similar 计算相似度

    展开全文
  • 20210221阅读笔记

    2021-02-21 15:53:13
    在懂得IT价值的同时,一定也要能看到整条价值链,看到其它团队的价值所在,不要做僭越自己身份的事情。把这些追新的精力用来提升自己取舍的能力,与人交流协作的能力,打磨工作方式的能力,价值定位的能力,对提升...

    对“懂IT的管理者”而言,IT只是众多技能中的一项,无甚稀奇,他考虑和决策的标准是生意,是通盘的管理。在懂得IT价值的同时,一定也要能看到整条价值链,看到其它团队的价值所在,不要做僭越自己身份的事情。把这些追新的精力用来提升自己取舍的能力,与人交流协作的能力,打磨工作方式的能力,价值定位的能力,对提升个人价值来说往往反而能起到事半功倍的效果。
    不过,千万不要被“越界”和“变身”给吓倒了,以我的经验,最大的困难来自于你的大脑,只要不时时刻刻绷着“我是(跟其他人不同的)IT人”的那根弦,剩下的都好办。

    管理类

    从“懂管理的IT人”,到“懂IT的管理者”
    https://mp.weixin.qq.com/s/sj9z5nwKytD8eOquOiwORA

    对“懂管理的IT人”来说,管理只是拱卫IT的能力之一,补齐短板所需,他考虑的坐标系仍然是IT,许多从IT出身的领导都是这样。
    但是对“懂IT的管理者”而言,IT只是众多技能中的一项,无甚稀奇,他考虑和决策的标准是生意,是通盘的管理。

    1. 取舍技术方案
    • “懂管理的IT人”,无论放弃哪个方面,都让我感到异常纠结,无比难受,因为它。但如果定位为“懂IT的管理者”,我非常清楚必须放弃某些方面,而且不能犹豫,因为犹豫反而会错失时机,而时机对生意来说往往是无比重要的。
    • 所以,“懂IT的管理者”平时可以耐心跟大家讨论技术方案的优劣,一旦遇到资源有效、目标明确的场合,必须毫不犹豫地放弃自己对技术的执念,迅速定下取舍。近年来,我已经不止一次地告诉程序员:对,这样做确实很丑,但别犹豫,赶紧动手吧。
    1. 与人打交道
      “懂IT的管理者”,那么面对面交流、讨论就变得相当重要——几乎所有的管理者课程都强调沟通的重要性。沟通交流的目的,绝不是需要草草敷衍,然后可以让自己醉心编码,而是保证自己的信息灵通,协作顺畅。这一切都搞定之后才轮到处理具体事务,IT只是诸多“具体事务”中的一项而已。

    2. 工作方式
      比较可取的办法是先着眼于目的,摸索出各方的最大公约数。然后,在自己能决定的范围里践行自己的工作方式,在这个范围之外,则以目的优先,绝对不要过多计较工作方式——要知道,在你没有绝对权力,也没有绝对话语权优势的时候,单纯强调工作方式多半会碰得头破血流,尤其是在业务部门面前。
      另外,也别执着于凡事都要以系统、流程、规范来做,它们未必是人人认可的工作方式,甚至可能让人觉得繁琐和反感。

    3. 价值眼光

    • “懂管理的IT人”,往往在能力上并没有明显的短板,但他的工作节奏和思考重心仍然是IT,想着如何把IT做好。这本来没有错,可惜的是,不是每家公司都需要那么好的IT,至少不那么迫切需要——别信老板们的鬼话,看看他们的投入就知道了。
      我以前的领导曾跟我说过一句话,让我印象深刻:你们把系统做好,公司当然喜欢,但更重要的是,你们应当从价值链的角度出发,找到自己的定位。
    • 如果你是“懂IT的管理者”,在懂得IT价值的同时,一定也要能看到整条价值链,看到其它团队的价值所在,不要做僭越自己身份的事情。同时,也需要想办法影响大家的印象,强调自身的价值。哪怕你很诚实,希望用一套客观的数据体系去证明自己的价值,起码也应当先设计出这套数据体系,获得大家的共同认可,并在工作中持续发出信号。
      所谓“价值链”,其实也没有那么玄乎,一般来说,主要包含两大因素:人事、财务。无论在哪家公司,这两大因素基本都是不变的,剩下的只是你如何从这两个角度展开,看待和证明自己的价值。
    1. 职业价值
    • “懂IT的管理人”的定位可以让人摆脱技术的焦虑感。什么是技术的焦虑感?就是面对层出不穷的新技术,永远在学习,永远在追赶,永远担心被拉下的忧虑。
    • 为什么“懂IT的管理人”可以摆脱这种焦虑?因为相比技术的更新速度,生意和组织的更新速度要慢得多。实际上,如果我们把目光从头部的那几家“技术弄潮儿”移开,就会发现很难有公司一直引领技术潮流,甚至大部分公司(恰恰是它们解决了大部分IT就业)根本不需要那么高精尖的技术,它们更需要的是用合适的技术去解决自己生意中的具体问题。
      一旦具备了这种“提供合适技术”的能力就会发现,错过几波技术新浪潮,或许并不那么让人担心,一味追新反倒很可能浪费。另一方面,把这些追新的精力用来提升自己取舍的能力,与人交流协作的能力,打磨工作方式的能力,价值定位的能力,对提升个人价值来说往往反而能起到事半功倍的效果。
      “懂管理的IT人”相对容易,只要懂IT的人补齐基本的管理知识,没有明显短板就可以,所以竞争也会相对激烈。“懂IT的管理者”相对更难,因为很难想象其它管理者能主动学会IT,所以它只能来源于搞IT的人主动变身,主动越界。

    不过,千万不要被“越界”和“变身”给吓倒了,以我的经验,最大的困难来自于你的大脑,只要不时时刻刻绷着“我是(跟其他人不同的)IT人”的那根弦,剩下的都好办。


    码农和技术管理者的区别,到底在哪里?
    https://mp.weixin.qq.com/s/U0o84rR3vtccQji2oIVK5w

    1. 两个问题
      第一个问题,技术管理者的核心能力是什么。技术管理者的核心能力就是技术判断力。技术判断力简单说来,就是某个技术项目“要不要做”,要做的话“能不能实现”,是否适合现在做,还要考虑技术风险、项目管理复杂度、成本等,已经远远超出了写代码的范畴。
      第二个问题,技术工程师和技术管理者的技术能力有什么差别呢?简单来说,技术工程师的技术能力就是写代码,做具体的技术实现。技术管理者的技术能力是技术判断力,通过在技术领域和非技术领域的长期积累培养起来的技术决策能力。

    2. 技术判断力主要体现在三个方面:
      第一,对结果的判断。
      第二,对技术方案的判断。技术管理者对技术方案的判断也比技术工程师思考得更深、更全面,技术工程师或许只考虑好不好实现,而技术管理者要确保在方向上不出现大的偏差。
      第三,对风险的判断。技术管理者平时做的技术评审、项目回顾、技术方案规划等工作就是在做技术判断,技术能力并没有变差,因为作为技术管理者,技术判断力在日常工作中得到了持续的锻炼和提升。

    3. 如何提升技术判断力?
      第一,团队日常技术和产品工作汇报。团队在汇报技术和产品进展时,是获取信息反馈、验证技术判断的大好时机,看看自己之前的技术决策产生了哪些影响,有无需要调整的地方,也可以学到下属们的思考和经验,及时更新自己的技术和产品认知。
      第二,参与技术方案评审。小到每次Code Review,大到系统整体方案评审,都要尽量参与,尤其是大型系统整体架构评审,这是系统化提升技术判断力最好的机会,架构师的讲解,包括架构设计的逻辑、每种技术的特性等,结合自己的理解和经验给团队提供反馈,架构判断能力也可以得到提升。
      第三,主持系统顶层设计和规划。
      第四,持续学习新技术。
      关注的是这项技术解决什么问题、实现的原理和机制,而不是如何熟练使用这个新技术写“Hello World”,当然写一些demo对于加深理解是有必要的。


    从“开发人员≠厨师”说起
    https://mp.weixin.qq.com/s?__biz=MzA3MDMwOTcwMg==&mid=2650004794&idx=1&sn=6262e972c1175b5bc07c0e8bb4f12230&chksm=8739bf13b04e36053aef64531ea8803613b1d375d86a7af4c8ffa39a117397566e347d7e243d&scene=21#wechat_redirect

    讲一样,也一样,都是靠手艺吃饭。我的经验是,吃手艺饭,你当个体户没问题。但是,你见过一群手艺人配合起来天衣无缝的不?我是没见过。关键还是那句话,这个世界上的本事千千万万,莫以为就你那点手艺最要紧,其它本事都看不上。我们靠手艺出身的人,只要过了这一关,其它就都好办。

    技术类

    https://mp.weixin.qq.com/s/JYRz5zu3AhTEovOcDR4FRQ

    搭指标体系可是数据分析师的必备技能,也是数据分析岗位进阶的核心竞争力
    在这里插入图片描述
    在这里插入图片描述


    进击的 Flink:网易云音乐实时数仓建设实践
    https://mp.weixin.qq.com/s/ssluyzPlNv8kBv_Teq24dw

    • 在一个 Flink 任务的开发中,涉及的数据源主要有三类:
      • 流式数据:来自 Kafka 或者 Nydus,可以作为源端和目标端;
      • 维表 JOIN 数据:来自 HBase 、Redis、JDBC 等,这个取决于我们自己实现了哪些;
      • 落地数据源:一般为 MySQL、HBase、Kudu、JDBC 等,在流处理模式下通常作为目标端。

    我们认为批流一体主要分以下三个方面:

    1. 结果的批流一体
      使用数据的人不需要关心数据是批处理还是流处理,在提交查询的那一刻,拿到的结果就应该是截止到目前这一刻最新的统计结果,对于最上层用户来说没有批和流的概念。

    2. 存储的批流一体

      • 上面的 ABTest 例子中我们已经看到 DWD、DWS 层数据的存储上还有很多不足,业界也有一些相应解决方案等待去尝试,我们希望的批流一体存储需要以下几个特性:
      • 同时提供增量订阅读取以及批量读取的能力,如 Apache Pulsar,我们可以批量读取它里面的归档数据,也可以通过 Flink 订阅它的流式数据,解决 DWD 层两套存储的问题。
      • 高性能的实时 / 批量 append 和 update 能力,读写互不影响,提供类似于 MVCC 的机制,类似于 Kudu 这种,但是性能需要更加强悍来解决 DWS 层存储的问题。
      • 和 OLAP 引擎的对接能力,比如 Impala、Presto 等,并且如果想要提升查询效率可能还要考虑到列式存储,具备较强的 scan 或者 filter 能力,来满足上层用户对业务结果数据查询效率的诉求
    3. 计算引擎的批流一体
      做到一套代码解决批流统一场景,降低开发运维成本,这个也是 Flink 正在努力的方向,未来我们也会在上面做一些尝试。

    展开全文
  • 库是工具箱。 比如宜家买个便宜的...对应软件框架来说,通常针对某类典型问题,预先规定好在什么地方做什么事情,不好僭越。更换框架,也是麻烦,就像架子一样,之前装的门,抽屉都要丢掉,架子里东西也要迁移,重新
  • 作者是享誉国内外的Java高手,除了技术相关的文章之外,他也没有僭越自己的专业,随笔中所提及的都是软件产业里的甘苦点滴。不眠之夜,一本蔡学镛的《Java夜未眠》恰能适应你的心情,就像一杯清香醇厚的咖啡,让孤独...
  • 人在社会中,有各种各样的规则需要遵守,就像你必须要遵守红路灯一样,一旦僭越这个规则,出事故的概率就会非常的高,就比如说道路行驶的规则,如果你没有驾照开车,那你势必会被惩治。这些其实都是法则。生活中除了...
  • 程序猿与艺术的碰撞

    2017-09-10 15:25:37
    礼乐不僭越,就会形成和谐社会。所以,一个有文化的人要以“格物·致远·正心·诚意·修身·齐家·治国·平天下”作为最高理想[2] 。 —–百度百科 礼乐文明 没有美女、零食的日子,音乐是最好的陪伴。coding 太多...
  • 2018.6.16

    2020-06-01 23:21:21
    2018.6.16 这里虽然没有直接记载楚武王设权县,但“尹之”可以看出是楚王指派县尹...一县之长官称为“公”可能于楚人对于周礼的僭越有关,童书业先生认为:“《左传》宣公十一年,楚庄王入陈,欲以陈为县,因大夫申叔
  • 作者是享誉国内外的Java高手,除了技术相关的文章之外,他也没有僭越自己的专业,随笔中所提及的都是软件产业里的甘苦点滴。不眠之夜,一本蔡学镛的《Java夜未眠》恰能适应你的心情,就像一杯清香醇厚的咖啡,让孤独...
  • 作者是享誉国内外的Java高手,除了技术相关的文章之外,他也没有僭越自己的专业,随笔中所提及的都是软件产业里的甘苦点滴。不眠之夜,一本蔡学镛的《Java夜未眠》恰能适应你的心情,就像一杯清香醇厚的咖啡,让孤独...
  • 作者是享誉国内外的Java高手,除了技术相关的文章之外,他也没有僭越自己的专业,随笔中所提及的都是软件产业里的甘苦点滴。不眠之夜,一本蔡学镛的《Java夜未眠》恰能适应你的心情,就像一杯清香醇厚的咖啡,让孤独...
  • 教授和张律师的告别

    千次阅读 2014-02-27 16:20:03
    这样说可能有点僭越了...可是真的有种白发人送黑发人的感觉啊..." 幸亏,万幸,至少,在这么些年,除了二千,教授还遇到了这么一个一直小心翼翼敬重着他爱护着他陪伴着他尽了自己最大努力守护他的人... ...
  • 这点大家应该不难想象,国内有强大的防火墙,肯定不会允许任何的僭越,国内服务一共有两个数据中心,北部和南部。 所以,Windows Azure中国的服务也不例外的被墙掉,但是万幸的是,在中国服务中访问其他数据中心...
  • Java夜未眠

    2012-09-09 23:14:44
    作者是享誉国内外的Java高手,除了技术相关的文章之外,他也没有僭越自己的专业,随笔中所提及的都是软件产业里的甘苦点滴。不眠之夜,一本蔡学镛的《Java夜未眠》恰能适应你的心情,就像一杯清香醇厚的咖啡,让孤独...
  •  在妇女衣饰方面,上至朝廷命妇,下至庶人妇女、奴婢,各有定制,禁止僭越。士庶妻女服制,洪武三年(1370)定为“服浅色团衫,用纻丝、绫罗、紬绢。”洪武五年(1372)又令:“民间妇女礼服惟用紫絁,不用金锈,袍衫止...
  • 堆排序复习

    2013-04-21 22:00:15
    2013-04-21翻阅《算法导论》 再谈堆排序 堆排序利用的特性——堆的数据结构特征:最大/最小的元素总是在根处取得。 那么要利用根来排序,我们只需要保持堆的特性...整堆就是对这种“僭越”的清洗,说起来很残忍,...
  • 职业规划的成功五诀

    2012-09-17 19:12:08
    第1诀:懂尊卑,不僭越 体制内的职场,通常设计了许多岗位层级,管理目标更侧重稳定而不是发展,也因为稳定的需要,下级对上级通常要绝对服从。一个人在工作中的效果与评价,上级握有绝对的话语权。在这种职场中,...
  • 抛开那些央视僭越界限,罗织非客观性证据、选择性曝光的争议不说。本文只希望在强势媒体下给这些企业提供多一个渠道解释的机会。 看了几篇企业发出的公关文,着实有些过于无趣,大多是“忠于革命忠于党”的体载。 ...
  • 在庫不具合修正

    2020-12-27 08:16:48
    僭越ながらpull requestを致します 同じproductClassを複数配送先に設定すると、在庫の減算処理に不具合が生じていたため修正しました 不具合の内容 現在の減算処理では、productClassの減算前の在庫数と比較して減...
  • “公共”责任对于艾尔弗雷德·斯隆而言,简直比“不够专业”还要糟糕,不但是不负责任,而且是一种权力的僭越。有一次,斯隆和我一起参加一个会议。会间,某位大公司的最高主管表示:“我们对高等教育负有责任。”...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

僭越