精华内容
下载资源
问答
  • jupyter_contrib_nbextension是Jupyter Notebook的一个扩展插件,里面集成了很多扩展功能,但是按照网上方法安装配置后,打开notebook总是未显示Nbextensions的标签: 开始安装后,查看pip list,插件都安装成功了,...

    Python 全栈工程师核心面试 300 问深入解析(2020 版)----全文预览

    Python 全栈工程师核心面试 300 问深入解析(2020 版)----欢迎订阅

    jupyter_contrib_nbextension是Jupyter Notebook的一个扩展插件,里面集成了很多扩展功能,但是按照网上方法安装配置后,打开notebook总是未显示Nbextensions的标签:

    开始安装后,查看pip list,插件都安装成功了,但是打开只有左边原始三个标签,Nbextensions的标签一直未显示出来,尝试了以下三种方法,但是都没有成功:

    1. 卸载了重新安装,重新配置,未成功
    2. 更换浏览器,通过密码登陆,未成功
    3. 打开http://localhost:8888/nbextensions?nbextension=toc2/main页面的方式,但是显示404 : Not Found You are requesting a page that does not exist!
      以上方法是参考以下两个连接,但是未成功,有人成功了,你们也可以试一下:
      https://ask.csdn.net/questions/701471
      https://blog.csdn.net/qq_34705900/article/details/80197956
      在这里插入图片描述
      **

    划重点,本人成功安装方法步骤:

    最后仔细阅读了官方文件,采用以下步骤成功安装显示了,安装命令可能会发生变化,你们如果安装失败,可以查看官方文档,里面有详细步骤:
    官方安装文档地址:
    https://github.com/ipython-contrib/jupyter_contrib_nbextensions/blob/master/README.md

    **
    安装步骤:
    如果你已经安装了,先执行卸载命令:

    pip uninstall jupyter_contrib_nbextensions
    pip uninstall jupyter_nbextensions_configurator
    
    1. 打开Anaconda Prompt窗口,执行第一个命令,用于安装nbextensions:
    pip install jupyter_contrib_nbextensions
    
    1. 再执行第二个命令,用于安装 javascript and css files
    jupyter contrib nbextension install --user
    
    1. 最后执行,用于安装configurator
    pip install jupyter_nbextensions_configurator
    

    然后重新启动Jupyter Notebook后,就会发现已经有Nbextensions标签了。

    常用扩展功能,勾选上即可:
    最常用功能说明,建议勾选上:
    Collapsible headings 折叠标题
    Notify 通知机制,跑一些耗时较久的任务,完成后通知
    Codefolding 折叠代码
    Zen mode extension 隐藏活动状态栏,方便注意代码
    Execute time extension 显示运行的时间

    是不是很惊喜,哈哈,如果帮到你了,记得转发收藏点赞,一键三连啊!!!

    Python 全栈工程师核心面试 300 问深入解析(2020 版)----全文预览

    Python 全栈工程师核心面试 300 问深入解析(2020 版)----欢迎订阅

    展开全文
  • 融云自定义扩展功能

    千次阅读 2017-05-13 17:40:25
    融云聊天中的扩展功能,通常都需要额外添加一些功能,所以就需要自己定义扩展功能,好了,不多说了,直接上吧。 首先需要对融云进行SDK的集成,并且还要进行注册、初始化 添加的这些功能都需要自定义一个provider的...

    融云聊天中的扩展功能,通常都需要额外添加一些功能,所以就需要自己定义扩展功能,好了,不多说了,直接上吧。
    首先需要对融云进行SDK的集成,并且还要进行注册、初始化
    添加的这些功能都需要自定义一个provider的提供类,需要去继承InputProvider.ExtendProvider,代码如下:

    //这里是我自定义的一个相册图片发送类
    public class ConversationFunPicture extends InputProvider.ExtendProvider {
        public ConversationFunPicture(RongContext context) {
            super(context);
        }
        /**
         * 设置展示图标
         */
        @Override
        public Drawable obtainPluginDrawable(Context context) {
            return context.getResources().getDrawable(R.mipmap.picture);//这里是功能图标
        }
        /**
         * 设置图标下的标题
         */
        @Override
        public CharSequence obtainPluginTitle(Context context) {
            return context.getString(R.string.conversation_camera);//功能名
        }
        /**
         * click事件
         */
        @Override
        public void onPluginClick(View view) {
           //实现呢该功能的逻辑功能
        }
    然后就将自己定义好的功能加入到数组InputProvider.ExtendProvider[],
    InputProvider.ExtendProvider[] providers = {
                    new ConversationFunPicture(RongContext.getInstance()),//图片
                    new CameraInputProvider(RongContext.getInstance()),//相机
    //                new RealTimeLocationInputProvider(RongContext.getInstance()),//地理位置
                    new ConversationFunVedio(RongContext.getInstance()),//vedio
                    new ConversationFunPerson(RongContext.getInstance()),//person card
                    new ConversationFunLocation(RongContext.getInstance()),//Location
                    new ConversationFunCollection(RongContext.getInstance()),//collection
                    new ConversationFunTransfer(RongContext.getInstance())//transfer mongey
            };
    RongIM.resetInputExtensionProvider(Conversation.ConversationType.PRIVATE, providers);
    RongIM.getInstance().resetInputExtensionProvider(Conversation.ConversationType.DISCUSSION, providers);
    RongIM.getInstance().resetInputExtensionProvider(Conversation.ConversationType.GROUP, providers);
    RongIM.getInstance().resetInputExtensionProvider(Conversation.ConversationType.CUSTOMER_SERVICE, providers);
    RongIM.getInstance().resetInputExtensionProvider(Conversation.ConversationType.CHATROOM, providers);
    

    这里我在讨论组、私聊、…………….等等里面都添加了这个功能,所以就都写了,我看过很多人都写在一个ConversationActivity里面的,我个人建议不要这样写,单独写一个事件处理类,把这些功能都放进去,然后在这个事件处理类中进行初始化的方法操作,在Application里卖对融云进行初始化的时候再对这个类的初始化方法进行初始化就行了,比如我这里就单独处理了,在Application中作了一个RongClouldEvent.getInstence(this).init();然后在事件处理类中实现了一个静态方法

    public static RongClouldEvent getInstence(Context context) {
        if (rongClouldEvent == null)
            rongClouldEvent = new RongClouldEvent(context);
        return rongClouldEvent;
    }

    可能解释的不够全面或者不是很严谨,还望包涵,对于初学者的我来说我已经很努力了。。。。。

    展开全文
  • Java SPI机制实现插件化扩展功能

    千次阅读 2018-09-20 17:37:04
    Java SPI机制实现插件化扩展功能。 我们有一个图数据库的服务,用户希望在不修改现有源代码的情况下扩展自定义的分词器,达到可插件式扩展功能的目标。通过Java的SPI机制实现插件式的扩展功能还是比较简便的。 特别...

    Java SPI机制实现插件化扩展功能

    1.背景

    我们有一个图数据库的服务,用户希望在不修改现有源代码的情况下扩展自定义的分词器,达到可插件式扩展功能的目标。

    通过Java的SPI机制实现插件式的扩展功能还是比较简便的,下面分主程序部分和插件实现2部分来说明。

    特别的,在实现过程中遇到一个比较怪异的问题:ServiceLoader.load()时抛出NoClassDefFoundError异常,经过Google及StackOverflow都没能找到原因,问题表现与这几个链接中描述的类似:serviceloader-issue-in-jettyserviceloader-in-glassfish4-java-ee-appserviceloader-next-causing-a-noclassdeffounderror
    文末会记录一下这个问题的解决过程及原因分析。

    2.SPI插件实现要素

    主程序部分主要包括:

    1. 定义插件接口
    2. 加载插件实现的Jar包
    3. 加载插件实现类对象

    插件实现部分主要包括:

    1. 实现插件接口
    2. 配置SPI入口
    3. 打Jar包

    3.实现插件化的流程

    下面以扩展一个分词器实例来说明插件化的流程。

    1. 定义接口
      定义接口com.baidu.hugegraph.plugin.HugeGraphPlugin,内容如下:
      public interface HugeGraphPlugin {
        public String name();
        public void register();
        public String supportsMinVersion();
        public String supportsMaxVersion();
      }
      
    2. 加载插件实现的Jar包
      参考SPI官方文档,我们定义了一个目录plugins来存放插件的Jar包,在启动Java主程序服务时通过参数-Djava.ext.dirs=plugins指定插件Jar包的目录。当需要扩展新的插件时,只需要把插件Jar包拷贝到plugins目录下,重启主程序服务即可生效。完整的启动命令示例:
      java -Djava.ext.dirs=plugins -Dname="HugeGraphServer" ${JAVA_OPTIONS} -cp ${CP}:${CLASSPATH} com.baidu.hugegraph.dist.HugeGraphServer ${APP_ARGS}
      
    3. 加载插件实现类实例
      在主程序中,我们通过ServiceLoader来加载所有插件实例。
      private static void registerPlugins() {
        LOG.info("Loading plugins...");
        ServiceLoader<HugeGraphPlugin> plugins = ServiceLoader.load(HugeGraphPlugin.class);
        for (HugeGraphPlugin plugin : plugins) {
          LOG.info("Loading plugin {}({})",
                   plugin.name(), plugin.getClass().getCanonicalName());
          try {
            plugin.register();
            LOG.info("Loaded plugin {}", plugin.name());
          } catch (Exception e) {
            throw new HugeException("Failed to load plugin '%s'",
                                    plugin.name(), e);
          }
        }
      }
      
    4. 实现插件接口,并注册自定义分词器
      新建一个project来实现自定义的分词器,命名为hugegraph-plugin-demo
      这里简单的实现一个以空格来切分词语的分词器。
      package com.baidu.hugegraph.plugin;
      import java.util.Arrays;
      import java.util.HashSet;
      import java.util.Set;
      import com.baidu.hugegraph.analyzer.Analyzer;
      public class SpaceAnalyzer implements Analyzer {
          @Override
          public Set<String> segment(String text) {
              return new HashSet<>(Arrays.asList(text.split(" ")));
          }
      }
      
      实现插件接口HugeGraphPlugin.register(),并把自定义好的分词器注册到主程序中去。
      package com.baidu.hugegraph.plugin;
      public class DemoPlugin implements HugeGraphPlugin {
          @Override
          public String name() {
              return "demo";
          }
          @Override
          public void register() {
              HugeGraphPlugin.registerAnalyzer("demo", SpaceAnalyzer.class.getName());
          }
      }
      
    5. 配置SPI入口
      1. 确保services目录存在:hugegraph-plugin-demo/resources/META-INF/services
      2. 在services目录下建立文本文件:com.baidu.hugegraph.plugin.HugeGraphPlugin
      3. 文件内容如下:com.baidu.hugegraph.plugin.DemoPlugin
    6. 打Jar包
      通过IDE或maven等工具将实现的插件打成Jar包,并且拷贝到主程序的plugins目录,重启主程序即可生效。

    4.异常NoClassDefFoundError分析

    4.1 问题表现

    在实现过程中,遇到一个NoClassDefFoundError问题,在ServiceLoader加载插件时提示找不到插件接口定义类HugeGraphPlugin,异常栈如下:

    java.lang.NoClassDefFoundError: com/baidu/hugegraph/plugin/HugeGraphPlugin
    	at java.lang.ClassLoader.defineClass1(Native Method)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    	at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Class.java:348)
    	at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)
    	at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
    	at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
    	at com.baidu.hugegraph.dist.HugeGraphServer.registerPlugins(HugeGraphServer.java:62)
    	at com.baidu.hugegraph.dist.HugeGraphServer.main(HugeGraphServer.java:44)
    Caused by: java.lang.ClassNotFoundException: com.baidu.hugegraph.plugin.HugeGraphPlugin
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    	... 20 more
    
    4.2 问题分析

    根据错误信息从网上搜索,并没有发现根本解决方法。初步分析觉得跟类加载器ClassLoader有关,因为本身HugeGraphPlugin类是明显定义了的。

    注意ServiceLoader.load()有一点比较特殊的地方,它的类加载器是Thread Context ClassLoader,关于类加载器的介绍可参考Java Classloader详解

    1. 判断类是否真的没有定义?
      分析发现,只是通过ServiceLoader加载DemoPlugin类时才报这个错误(DemoPlugin implements HugeGraphPlugin),如果将DemoPlugin与主程序放在同一个项目中是没问题的。也就是说代码本身是正确的,只是因为以插件方式加载才导致了问题。

    2. 判断ServiceLoader是否使用了Context ClassLoader
      经过调试发现ServiceLoader中使用的类加载器确实是通过Thread.currentThread().getContextClassLoader()方法获取的,并且和主程序中的AppClassLoader是同一个实例。

    3. 判断是否在加载DemoPlugin类时HugeGraphPlugin类的Jar包还没有被载入?
      这个假设是在遇到问题比较迷惑的时候才会提出来的(当时甚至怀疑SPI官方文档是不是写错了),事实上,通过Java参数-verbose:class打印类加载信息,在错误发生之前HugeGraphPlugin类就已经被加载进来了。

    4. 判断是否循环依赖导致?
      插件中DemoPlugin类依赖来自主程序的HugeGraphPlugin类,加载插件时主程序又依赖插件中的DemoPlugin类,难道是循环依赖导致的?于是将HugeGraphPlugin类拆分到单独Jar包中,主程序和插件分别依赖该独立Jar包,不过结果还是同样的错误。

    5. ClassLoader类加载机制导致?
      综合第2点和第3点结果分析,会更加发现问题的诡异之处,主程序和插件使用的是同一个ClassLoader来加载我们定义的类,而且HugeGraphPlugin类明明已经被加载了的,那为何加载DemoPlugin类时还报错找不到HugeGraphPlugin类?

      结合ClassLoader相关源码分析发现,AppClassLoader在加载DemoPlugin类时,需要委托给双亲ExtClassLoader来加载(因为插件的Jar包配置在java.ext.dirs路径下),而DemoPlugin类继承自HugeGraphPlugin类,ExtClassLoader又需要拿到或加载HugeGraphPlugin类,但是HugeGraphPlugin所属的Jar包不在ext路径下从而找不到HugeGraphPlugin(事实上它在AppClassLoader里面,ExtClassLoader只会加载lib/ext目录和java.ext.dirs目录)。

      总结一下,就是配置了DemoPlugin Jar包到ext,而插件Jar包所依赖的HugeGraphPlugin Jar包在classpath下,导致父加载器ExtClassLoader无法找到属于子加载器AppClassLoader所负责的类。

      下面是ClassLoader.loadClass()源码:

      // java.lang.ClassLoader.loadClass()
      protected Class<?> loadClass(String name, boolean resolve)
                throws ClassNotFoundException
      {
        synchronized (getClassLoadingLock(name)) {
          // First, check if the class has already been loaded
          Class<?> c = findLoadedClass(name);
          if (c == null) {
            long t0 = System.nanoTime();
            try {
              // 双亲委派机制,DemoPlugin就是在这里被AppClassLoader委派给ExtClassLoader的。
              if (parent != null) {
                c = parent.loadClass(name, false);
              } else {
                c = findBootstrapClassOrNull(name);
              }
            } catch (ClassNotFoundException e) {
              // ClassNotFoundException thrown if class not found
              // from the non-null parent class loader
            }
            if (c == null) {
              // If still not found, then invoke findClass in order
              // to find the class.
              long t1 = System.nanoTime();
              c = findClass(name);
              // this is the defining class loader; record the stats
              sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
              sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
              sun.misc.PerfCounter.getFindClasses().increment();
            }
          }
          if (resolve) {
            resolveClass(c);
          }
          return c;
        }
      }
      
    4.3 解决方法

    问题根源找到了,解决方法就很简单了,归根到底有2种解决方法,选择其中一种即可:

    • 将DemoPlugin Jar包以及它依赖的所有Jar包都放在java.ext.dirs下。
    • 将DemoPlugin Jar包放在classpath下。

    <–end–>

    展开全文
  • 问题:用Acrobat Reader DC添加注释,出现 “本文档启用了Adobe Reader扩展功能,文档自创建后已被更改,无法再使用扩展功能” 问题。 解决方案:用 Adobe Acrobat X Pro 解决。 1. 问题如图。 问题如图 文件...

    问题:用Acrobat Reader DC添加注释,出现 “本文档启用了Adobe Reader扩展功能,文档自创建后已被更改,无法再使用扩展功能” 问题。

    解决方案:用 Adobe Acrobat X Pro 解决。


    1. 问题如图。

    问题如图
    文件→属性→安全性,可以看到”注释“不被允许
    可以看到注释是灰色的,添加不了

    2.解决方案

    用 Adobe Acrobat X Pro打开要改的pdf文件,文件→保存副本→重命名(命名一个和原文件不一样的名字)→打开新的保存文件(重命名的那个文件)

    注意:这里是“保存副本”!不是“另存为”。


    文件→属性→安全性,可以看到 注释 已经允许被编辑了
    在页面添加注释,可以看到注释已经不再是灰的,可以添加

     


    补充说明:用 PDF Password Remover解决不了,我试过了,用这个软件remove之后,还是无法加注释,给大家排一下雷。

    展开全文
  • python扩展功能离线安装包下载

    千次阅读 2018-06-07 10:13:07
    为了实现这一点,python需要大量的扩展功能包的支持,才能一句话实现C++很多行语句实现的功能。那么,就不可避免的需要安装扩展功能包。 一般安装过程,可以通过pip在线完成,但是,当网络条件不好的时候,安装包...
  • 安装php的redis扩展扩展报错或未发现扩展功能
  • TS中的函数扩展功能

    千次阅读 2018-01-17 10:11:47
    TS中的函数扩展功能 完整函数类型 //js定义函数 function add(x, y) { return x + y; } //ts中定义完整函数 let add: (x: number, y: number) => number = function(x: numer, y: number):number { ...
  • Unity Editor扩展入门(2) Unity Editor扩展功能的标准使用 Translated by Xdestiny 2018/2/25 日文原文地址:http://anchan828.github.io/editor-manual/web/part2-standardextension.html。 渣翻,有些东西相当...
  • jQuery && jEasyUI 扩展功能集合

    千次阅读 2015-09-01 17:30:55
    jquery-extensions:jQuery && jEasyUI 扩展功能集合 该扩展功能基于 jQuery 1.9.x / 1.10.x / 1.11.x 和 jQuery EasyUI 1.3.6 实现   本扩展集合包含两大部分: jquery 基础库扩展;由文件 jquery.jdirk.js 实现...
  • IE的扩展插件可以使用BHO,就能实现,但是现在我的需求是给IE的开发者工具(也就是按下F12页面)里面增加一些扩展功能,这个该如何实现呢,有没有解决方向,或者跟这有关的网站链接或者相关论文贴吧等,希望懂这方面...
  • Echarts扩展功能之热力图(离线版)

    千次阅读 2019-03-25 23:49:53
    接下来我们看一看如何在离线环境下利用echarts的扩展功能开发热力图: 需要引入的文件:(其中bmap.js文件一定要是打包过的文件) <script type="text/javascript" src=...
  • 书的第一部分看完了,扩展功能就这么在看,不过还是有点概念模糊 网上看了一下其他前辈的文章,自己再记录下 然后是通过这篇文章看了以后自己做的记录 http://my.oschina.net/lijsf/blog/158828 好,先简单讲...
  • 中断INT 13H的扩展功能

    千次阅读 2012-09-25 15:17:19
    中断INT 13H的扩展功能  由于旧有的INT 13H中断只能采用10位二进制来表示磁道,所以对于大于8.4G的硬盘它已不能完全读写了。扩展INT 13H又称为INT 13 Extension APIs,它主要就是用来对超过1024个磁道的硬盘...
  • Windows10 关闭右键 WPS扩展功能

    千次阅读 2021-01-28 10:59:41
    背景: 2021年1月, win10 系统,电脑出厂自带WPS,未卸载,以备不时之需 需求: 删除文件管理系统右键WPS功能扩展,包括WPS云文档功能以及WPS广告推送等 操作:
  • 扩展功能集合 该扩展功能基于 jQuery 1.9.x 和 jQuery EasyUI 1.3.4 实现   本扩展集合包含两大部分: 1、  jquery 基础库扩展;由文件 jquery.jdirk.js 实现;该文件扩充了 jquery 的基础功能...
  • 成功解决 谷歌浏览器 安装插件出现扩展功能、应用和主题背景可能会损害您的计算机 解决问题 成功解决 谷歌浏览器 安装插件出现扩展功能、应用和主题背景可能会损害您的计算机 解决方法 点击谷歌浏览器的...
  • 怎样取消IBM笔记本电脑的桌面扩展功能? 在其它论坛看到的回复帖1: 1、冷开机,按F1键进入BIOS 2、进入BIOS后,在“CONFIG”中进入“Display” ,选择HV expansion,然后选择“On”。 3、LCD的画面将会...
  • 接下来会展示如何在ListView中去选择多个物件,以及如何使用ListView的“过滤”功能。1. 使用上一节的工程:BasicViews5。2. 在BasicViews5Activity.java中添加一些代码。 String[] presidents; /** Ca
  • IIS 6.0 中的 Web 服务扩展功能

    万次阅读 2007-12-28 10:07:00
    导读: 我可以提供您所需的技巧,但请允许我先简要地介绍一些有关 IIS 6.0 Web 服务扩展功能的背景知识,以方便那些不熟悉这些知识的读者。在以前版本的 IIS 中,如果在服务器上放置可执行文件(.dll 或 .exe),...
  • 数据长度扩展功能允许LE控制器在连接状态下发送具有高达251字节的PDU。此外,在连接期间的任何时间,任何一方可以协商新的PDU大小。 此前,控制器的最大数据通道有效载荷为27字节。与蓝牙核心规范版本4.0和4.1设备...
  • 症状当您启动 Microsoft Office Outlook 2003 时,会收到以下错误消息:扩展功能“Exchange Extensions;?”的注册表中出现错误。注册表条目的语法或格式不正确。请检查注册表设置,并将该扩展功能的注册表与注册表中...
  • 二、功能推荐: 1.代码导航功能 2.变量检查器 3.显示单元格运行的时间和长度 4.折叠/放下标题 5.折叠代码 6.隐藏代码 7.代码自动补全 8.通知 9.隐藏活动状态栏 10.tqdm_notebook为循环代码显示执行进度条 ...
  • 扩展记事本的功能 上次的文章只是给出了编写记事本的文件装载及保存的部分,但是对于一个记事本仅仅有基本的功能还是不能满足人们编辑文本的需要的,这里就接着上篇博文的内容,对记事本的大部分功能进行扩展。当然...
  • 1、将扩展功能类文件添加到TP框架目录的扩展文件夹中,即 项目目录/ThinkPHP/Extend/Library/ORG/Util文件夹中,在代码中通过 import('ORG.Util.功能类名'); 来导入。这种方法最简单,却有一个劣势,就
  • Android实现截图功能(可根据该代码进行扩展)(博客地址:http://blog.csdn.net/developer_jiangqq)  Auther:hmjiangqq  Email:jiangqqlmj@163.com  有些时候我们在进行做分享功能或者截图保存,今天写了一个简单的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,917,867
精华内容 767,146
关键字:

扩展功能