• [新手课堂] 什么是双亲委派模型?
    如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。类加载的源码如下:protected Class<?> loadClass(String name, boolean resolve)        throws ClassNotFoundException    {        synchronized (getClassLoadingLock(name)) {            // 1、检查请求的类是否已经被加载过了            Class<?> c = findLoadedClass(name);            if (c == null) {                long t0 = System.nanoTime();                try {                    // 2、将类加载请求先委托给父类加载器                    if (parent != null) {                        // 父类加载器不为空时,委托给父类加载进行加载                        c = parent.loadClass(name, false);                    } else {                        // 父类加载器为空,则代表当前是Bootstrap,从Bootstrap中加载类                        c = findBootstrapClassOrNull(name);                    }                } catch (ClassNotFoundException e) {                    // 如果父类加载器抛出ClassNotFoundException                    // 说明父类加载器无法完成加载请求                }                 if (c == null) {                    // 3、在父类加载器无法加载的时候,再调用本身的findClass方法来进行类加载                    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;        }    }
  • [基础组件] 程序中连接kafka时报错且确认配置的bootstrap.servers正确
    【功能模块】kafka【操作步骤&问题现象】1、编写程序,大致逻辑:SparkStreaming读取kafka中的数据,然后写入hbase中2、此demo是华为云上的样例demo,视频地址:https://bbs.huaweicloud.com/forum/thread-90888-1-1.html提交方式使用的是yarn-client【截图信息】【日志信息】(可选,上传日志内容或者附件)一直在重复报地址连不上[Consumer clientId=consumer-testGroup-1, groupId=testGroup] Bootstrap broker 172.31.8.38:21007 (id: -2 rack: null) disconnected | org.apache.kafka.clients.NetworkClient.handleServerDisconnect,详细日志见附件
  • [新手课堂] 什么是双亲委派模型?
    如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。类加载的源码如下:protected Class<?> loadClass(String name, boolean resolve)        throws ClassNotFoundException    {        synchronized (getClassLoadingLock(name)) {            // 1、检查请求的类是否已经被加载过了            Class<?> c = findLoadedClass(name);            if (c == null) {                long t0 = System.nanoTime();                try {                    // 2、将类加载请求先委托给父类加载器                    if (parent != null) {                        // 父类加载器不为空时,委托给父类加载进行加载                        c = parent.loadClass(name, false);                    } else {                        // 父类加载器为空,则代表当前是Bootstrap,从Bootstrap中加载类                        c = findBootstrapClassOrNull(name);                    }                } catch (ClassNotFoundException e) {                    // 如果父类加载器抛出ClassNotFoundException                    // 说明父类加载器无法完成加载请求                }                 if (c == null) {                    // 3、在父类加载器无法加载的时候,再调用本身的findClass方法来进行类加载                    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;        }    }
  • [新手课堂] 什么是双亲委派模型?
    如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。类加载的源码如下:protected Class<?> loadClass(String name, boolean resolve)        throws ClassNotFoundException    {        synchronized (getClassLoadingLock(name)) {            // 1、检查请求的类是否已经被加载过了            Class<?> c = findLoadedClass(name);            if (c == null) {                long t0 = System.nanoTime();                try {                    // 2、将类加载请求先委托给父类加载器                    if (parent != null) {                        // 父类加载器不为空时,委托给父类加载进行加载                        c = parent.loadClass(name, false);                    } else {                        // 父类加载器为空,则代表当前是Bootstrap,从Bootstrap中加载类                        c = findBootstrapClassOrNull(name);                    }                } catch (ClassNotFoundException e) {                    // 如果父类加载器抛出ClassNotFoundException                    // 说明父类加载器无法完成加载请求                }                 if (c == null) {                    // 3、在父类加载器无法加载的时候,再调用本身的findClass方法来进行类加载                    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;        }    }
  • [中间件] 【华为云鲲鹏云服务最佳实践】【工具篇】第138期Bootstrap-3.3.7安装配置指南
    1、简介Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。官方链接:https://getbootstrap.com/类别:框架2、基础环境类别子项版本获取地址(方法)华为云虚拟机KC1(920)--OSCentOS7.5Kernel4.14软件包Nodejs9.3.0https://mirror.tuna.tsinghua.edu.cn/nodejs-release/v9.3.0/node-v9.3.0.tar.gzBootstrap  3.3.7npm下载 3、依赖安装  Requires:node.jsRequires:webpackRequires:GruntRequires:RubyRequires:BundlerRequires:Jekyllyum -y install gcc gcc-c++4、组件编译安装yum install npm 全局安装webpacknpm install webpack -g        安装ruby:参考《华为云鲲鹏云服务最佳实践-ruby-2.5 安装配置指南》https://bbs.huaweicloud.com/forum/thread-21266-1-1.html安装node.js:wget https://mirror.tuna.tsinghua.edu.cn/nodejs-release/v9.3.0/node-v9.3.0.tar.gztar -zxvf  node-v9.3.0.tar.gzcd node-v9.3.0./configuremakemake installnode -v 部署步骤:cd /opt/npm install bootstrap@3.3.7        安装Grunt,以编译CSS和 JavaScript文件,使用命令npm install -g grunt-cli 切换到BootStrap目录执行 安装项目依赖。npm install         安装Bundlergem install bundler  安装jekyll和所需依赖gem install jekyll 本次安装时提示之一如下图,然后安装提示所需要的依赖包(有版本号的必须写上版本号,不然会出现安装错误的情况)                             其余依赖安装如下:                     运行jekyll serve开启服务 5、系统配置无6、测试测试内容:在命令行输入:links http://127.0.0.1:4000访问服务测试结果:如下图 7、参考信息官方文档8、FAQQ:执行bundle命令时,提示错误Could not locate GemfileA:是因为缺少Gemfile文件,执行bundle init,可以生成一个新的Gemfile文件Q:编译node.js,执行./configure时编译出错提示:WARNING: C++ compiler too old, need g++ 4.8 or clang++ 3.4 (CXX=g++)A:提示 C++ 编译器 g++ 版本太老,需要重新安装gcc的高版本Q:npm install报如下错误:A:执行npm install phantomjs@1.9.20 --ignore-scripts,下载依赖Q:执行gem install bundler下载bundler报如下错误:报错一: A:1)cd ruby-2.5.1/ext/zlib目录,执行 ruby ./extconf.rb、make 、make install命令。2)make时报错(chmod +x Makefile):make: *** No rule to make target `/include/ruby.h', needed by `zlib.o'.  Stop.           3)更改Makefile文件, zlib.o: $(top_srcdir)/include/ruby.h  改成   zlib.o: ../../include/ruby.h;到这里就可以make成功了。报错二:yum install openssl-devel –ycd /opt/ruby-2.5.0/ext/openssl/执行ruby ./extconf.rb 执行make,出错: 在Makefile文件顶部加上top_srcdir = ../.. make make install  继续执行gem install bundler即可。