运算放大器采用图1所示的电路结构,电路中的电流源均采用共源共栅结构,可以获得较高的共模抑制比和电流复制精度。其性能指标为增益带宽积GBW=100MHz,负载电容CL=2pF。本设计采用的工艺库中NMOS的最小沟道长度为0.5μm,PMOS的最小沟道长度为0.55μm。
图1 二级运算放大器的电路结构
图1所示的运算放大器的增益带宽积
次主极点频率
在第一级差分放大级的NMOS电流镜负载处引入了零极点对,极点频率为
零点在左半平面,其频率为2fm。
设有如下关系:
则可以取
根据fnd的表达式和α、β、γ参数的定义可得
其中,fT,MN5为MN5晶体管的特征频率。代入数据可得
且有
取gm/ID=16,可以得到
根据图2所示的fT与gm/ID的关系曲线,可以得到MN5的沟道长度为
另外,根据图3所示的ID/W与gm/ID的关系曲线,可以得到MN5的沟道宽度为
图2 用于确定MN5沟道长度的fT-gm/ID曲线
图3 用于确定MN5沟道宽度的ID/W-gm/ID曲线
取所有PMOS电流源的gm/ID=10。较小的gm/ID值有利于减小负载管的噪声和减小阈值电压失配引起的电流复制误差。电路对于MP13和MP14的沟道长度没有严格的约束条件,可以选择沟道长度
根据图4所示的ID/W与gm/ID的关系曲线,可以得到
图4 用于确定MP13和MP14沟道宽度的ID/W-gm/ID曲线
由GBW的表达式可以计算出MP7和MP8的跨导为
在运算放大器的单位负反馈应用中,由于输出端与反相输入端直接相连,使得CGS,MP8与CL并联,导致等效负载电容CL’=CL+CGS,MP8增大,增益带宽积和相位裕度减小。为了减小CGS,MP8的影响,可以通过设计使得CGS,MP8<0.1CL。取CGS,MP8=0.2pF,可以计算出MP7和MP8的特征频率为
取gm/ID=16,则根据图5所示的fT与gm/ID的关系曲线,可以得到MP7和MP8的沟道长度为
通过MP7和MP8的电流均为
根据图6所示的ID/W与gm/ID的关系曲线,可以得到MP7和MP8的沟道宽度为
图5 用于确定MP7和MP8沟道长度的fT-gm/ID曲线
图6 用于确定MP7和MP8沟道宽度的ID/W-gm/ID曲线
为了减小镜像零极点对对于运算放大器相位裕度的影响,可以将镜像极点频率设置到GBW的10倍处,即fm=10GBW。据此,有
取gm/ID=10,根据图7所示的fT与gm/ID的关系曲线,可以得到MN3和MN4的沟道长度为
根据图8所示的ID/W与gm/ID的关系曲线,可以得到MN3和MN4的沟道宽度为
MN1和MN2的沟道长度和沟道宽度与MN3和MN4取相同值即可。
图7 用于确定MN3和MN4沟道长度的fT-gm/ID曲线
图8 用于确定MN3和MN4沟道宽度的ID/W-gm/ID曲线
MP5, 6的沟道长度取与MP13, 14相同的值,即
根据图9所示的ID/W与gm/ID的关系曲线,可以得到MP5和MP6的沟道宽度为
图9 用于确定MP5和MP6沟道宽度的ID/W-gm/ID曲线
第一级差分对的尾电流源大小为ID,MP5=157.5μA,第二级的负载电流源大小为ID,MP13=314.4μA。取IB1=IB2=78.75μA,则ID,MP5=2 IB1,ID,MP13=4 IB1。因此可以确定MP1~4的尺寸为
取ID,MP19=ID,MP7,8=0.5 ID,MP5=IB1,因此
为了使消零电阻RZ可以将补偿电容CC引入的右半平面零点移动到左半平面,并且最好能够和次主极点相抵消,则有
代入数据可得
用于仿真GBW和PM的电路如图10所示,其中的运算放大器采用前文所设计的运算放大器,对其施加共模电压2.5V作为输入端的静态工作点电压,负载电容CL=2pF。经过仿真,发现GBW只有82MHz,没有达到100MHz。为此,将IB1和IB2提高至108μA。仿真结果如图11所示,可以看出仿真结果为GBW=112MHz,PM=70˚,低频增益为75dB。
图10 用于仿真GBW和PM的电路图
图11 GBW和PM的仿真结果
用于仿真共模输入范围的电路图如图12所示。共模输入范围的仿真结果如图13所示,可以看出共模输入范围为0.05V至4.63V。电压跟随器连接方式的运算放大器在此范围内可以展现出很好的电压跟随特性,其电压传输特性曲线的斜率为1。
图12 用于仿真共模输入范围的电路图
图13 共模输入范围的仿真结果
用于仿真输出摆幅的电路如图14所示。在单位增益反馈结构中,电压传输曲线的线性受到共模输入范围的限制。因此,若采用高增益反馈,传输曲线的线性部分与放大器输出电压摆幅一致。图14采用增益为10的同相放大器。输出摆幅的仿真结果如图15所示,可以看出输出电压摆幅为0.15V至4.9V。
图14 用于仿真输出摆幅的电路图
图15 输出摆幅的仿真结果
用于仿真共模抑制比的电路如图16所示。仿真结果如图17所示,可以看出低频时的CMRR=77dB;在5MHz处CMRR下降3dB;在1kHz至10GHz频段内,CMRR最小为20dB。
图16 用于仿真共模抑制比的电路图
图17 共模抑制比的仿真结果
用于仿真电源抑制比的电路如图18所示,在电源线上引入小信号电压波动。电源抑制比的仿真结果如图19所示,可以看出,低频下的PSRR=104dB;在433kHz处,PSRR下降3dB;在1kHz至10GHz频段内,PSRR最小为15dB。
图18 用于仿真电源抑制比的电路图
图19 电源抑制比的仿真结果
用于小信号建立特性仿真的电路图如图20所示,在输入端施加0.1V的阶跃小信号电压。小信号建立特性的仿真结果如图21所示。在图21中,黄色曲线为输入电压的波形,红色曲线为输出电压的波形。从图21可以看出,峰值时间tp=5.8ns−1ns=4.8ns,最大超调σp=(2.600V−2.596V)/2.596V=0.15%,振荡次数N=1。
图20 用于仿真小信号建立特性的电路图
图21 小信号建立特性的仿真结果
由于所设计的运算放大器输入端均为栅极,其输入电阻为无穷大,因此可以只考虑等效输入噪声电压,而忽略等效输入噪声电流。用于仿真等效输入噪声的电路图如图22所示。仿真结果如图23所示,可以看出,在1kHz处,等效输入噪声电压大小为214nV/√Hz;在10kHz处,等效输入噪声电压大小为68nV/√Hz。
图22 用于仿真等效输入噪声的电路图
图23 等效输入噪声电压的仿真结果
有许多性能指标可以反应电路的非线性,在这里选择输入1dB压缩点作为衡量非线性的指标。用于仿真输入1dB压缩点的电路如图24所示,为单位增益负反馈结构,其中输入端口PORT0的频率设为1kHz,源阻抗设为50Ω,产生正弦波信号;输出端口PORT1的阻抗设为1MΩ。仿真结果如图25所示,可以看出输入1dB压缩点为+12.8dBm。
图24 用于输入1dB压缩点的电路图
图25 输入1dB压缩点的仿真结果
将第2节中计算所得的电路参数,以及在3.1节中调整的偏置电流IB1和IB2汇总到图26中。
图26 电路最终版本
大家好,又见面了,我是你们的朋友全栈君。一、前言 之前已经介绍了操作系统的各个模块,现在来具体深入学习操作系统中的进程管理。二、进程的基本概念 在未配置OS的系统中,程序的执行方式是顺序执行,即必须在一个程序执行完成后,才允许另外一个程序执行;在多道程序环境下,则允许多个程序并发执行。也正是程序的并发执行,才导致引入进程。2.1程序的顺序执行 通常可以把一个应用程序分成若干个程序段,在各程序段之间,必须按照某种先后次序顺序执行,仅当前一操作(程序段)执行完后,才能执行后继操作。如典型的输入->计算->打印任务就是顺序执行。 程序顺序执行时的特征如下 ①顺序性,处理机的操作严格按照程序锁规定的顺序执行,即每一操作必须在上一个操作结束之后开始。 ②封闭性,程序是在封闭的环境下执行的,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响。 ③可再现性,只要程序执行时的环境和初始条件相同,当程序重复执行时,无论它是从头到尾不停顿地执行,还是走走停停地执行,都将获得相同的结果。 在程序顺序执行时的特征,
题目一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组nums ,请计算 不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。示例1: 输入:nums=[1,2,3,1] 输出:4 解释:偷窃1号房屋(金额=1),然后偷窃3号房屋(金额=3)。 偷窃到的最高金额=1+3=4。 示例2: 输入:nums=[2,7,9,3,1] 输出:12 解释:偷窃1号房屋(金额=2),偷窃3号房屋(金额=9),接着偷窃5号房屋(金额=1)。 偷窃到的最高金额=2+9+1=12。复制提示:1<=nums.length<=1000<=numsi<=400解题思路classSolution: defrob(self,nums:[int])->int: dp=[0]*len(nums) #边界条件 iflen(nums)==1: returnnums[0] eliflen(nums)==2: ret
记录下如何为小程序评论组件添加内容安全检测功能 最近打算为之前做的小程序增加评论功能,提交审核被拒,理由是存在信息安全风险 于是就需要修改WxComment组件增加检测功能了。修改方法如下:#增加云函数参照官方文档增加内容检测云函数constcloud=require('wx-server-sdk') cloud.init() exports.main=async(event,context)=>{ try{ constres=awaitcloud.openapi.security.msgSecCheck({ content:event.inputText, }) returnres }catch(err){ returnerr } }复制注意在函数根目录增加config.json设置security.msgSecCheck云调用权限{ "permissions":{ "openapi":[ "security.msgSecCheck" ] } }复制package.json内容{ "nam
PHPquotemeta()函数实例在预定义的字符前添加反斜杠:<?php $str="Helloworld.(canyouhearme?)"; echoquotemeta($str); ?复制定义和用法quotemeta()函数在字符串中某些预定义的字符前添加反斜杠。预定义的字符:句号(.)反斜杠(\)加号(+)星号(*)问号(?)方括号([])脱字号(^)美元符号($)圆括号(())提示:该函数可用于转义拥有特殊意义的字符,比如SQL中的()、[]以及*。注释:该函数是二进制安全的。语法quotemeta(_string_)复制实例1在多个预定义的字符前添加反斜杠:<?php $str1="1+1=2"; $str2="1*1=1"; $str3="Couldyouborrowme5$?"; $str4="Areyounotentertained?(Iam..)"; $str5="Thecaret[^]Lookslikeahat!"; echoquot
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/luo4105/article/details/76612376excel的操作类POI是java操作office文件的函数库,下面是POI操作excel的基本类。POI操作excel的主要类和方法图POI操作Excel主要有四个类:HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell、分别对应Excel文档中的文档对象、sheet、行、和列。下面详细讲解。HSSFWorkbook对于创建Excel文档对象,我们通过HSSFWorkbook类的构造器来创建,一般是创建新的HSSFWorkbook对象或根据InputStream对象创建HSSFWorkbook对象。HSSFWorkbookworkbook=newHSSFWorkbook(); HSSFWorkbookworkbook=newHSSFWorkbook(newInputStream());复制HSSFWorkbook还有两个常用的方法是createSh
之前大概说过小程序的目录结构,这次在总体的说下微信小程序工程结构audio,button,canvas,checkbox都是由4个文件构成,而且他们的目录名称和文件内部的名称「保持一致」,这点特别重要。主目录结构app.js外部的全局的js,可以当作一个父类,把这个全局文件理解成java里面的一个类,这样理解对于java开发的容易理解些。app.json全局的配置文件,有点类似javaweb开发的resource目录下的properties文件3.app.wxss全局的主样式,公用。页面目录结构以官方demo的button为例子button.js私有的js,相当于子类可以调用app.js里面的东西button.json以json对象形式的配置文件button.wxml元素所渲染的页面button.wxss私有样式,可以调用app.wxss里面的东西PS:这就是对微信小程序工程结构的大致了解,了解了结构才方便按照规范开发,不容易入坑。
科技发展到今天,我们可以很自信地说企业软件已经取得了很大的进步。毕竟,过去几十年时间里企业办公的方式已经从简单地使用纸张和铅笔转变为使用云中的程序来管理其运营,这期间所取得的进步不得不让人惊叹。但是,如果我们仔细研究一下最近的技术进步,就会发现,从本地到非本地部署的转变是企业软件的最后一次重大变革。从那以后,好像再也没有发生过真正的转变。并且新的数据也表明,目前企业软件领域的进一步创新失误已经对当今企业产生了重大影响。事实上,虽然通过向“云”的迁移形式,使大型软件变得更加实惠,并通过克服分销和财务障碍获得了可访问性,但它几乎没有解决根本的终端用户挑战问题。这不仅仅是等待下一波创新浪潮,让企业生存变得更容易的问题了。根据TrackVia最近对500多家企业和IT管理人员的调查显示,目前的企业软件缺乏进展对企业产生了负面影响。更糟糕的是,这一问题还阻碍了公司的发展。调查显示,传统的企业软件(无论是安装在本地服务器上还是通过互联网交付)缺乏企业最需要的功能,同时阐明了当今企业软件加速业务失败的四种方式。1、几乎没有用于定制和可伸缩性的选项缺乏灵活性和整体的适应性是高管们提到的软件的最大挑战之
前言:今日,笔者受邀参加“Dell&RedHatHPC研讨会”。会上,分享了红帽在HPC领域的解决方案。由于很多朋友关心这个话题,因此将演讲的内容分享出来,供大家参考。PPT在书写过程中,得到了同事陈力锋的帮助,在此表示感谢。出于精研篇幅的目的,笔者对原演讲PPT做了部分裁剪。我的介绍分为三部分,第一部分是红帽2.0的公司介绍,我会用简短的篇幅介绍一下红帽在目前做什么。第二部分,我将着重介绍目前HPC的生态环境以及红帽相关的方案。最后一部分,将会介绍红帽SOE,也就是标准操作环境解决方案。谈到红帽,红帽在做什么产品?大多数人对于RedHat的了解,停留在CentOS,RedhatLinux的了解上。除此之外,做虚拟化的朋友,会了解KVM。以上对于红帽的了解,基本处于对红帽1.0时代的了解。目前,红帽公司已经进入了2.0的时代。2.0时代更加强调整体的解决方案。红帽做的事情,是把开源社区的项目,通过自己的研发人员,进行软件稳定性测试、硬件兼容性测试等,然后发布企业级软件产品,并且最为重要的是,提供持续的技术支持,如升级服务、800技术支持服务等(例如一个大版本的RHEL最长支持1
1.异常工作流模块Jar包启动报错:2021-02-1413:45:13.735[main]INFOliquibase-Waitingforchangeloglock.... 2021-02-1413:45:23.739[main]INFOliquibase-Waitingforchangeloglock.... 2021-02-1413:45:33.744[main]INFOliquibase-Waitingforchangeloglock.... 2021-02-1413:45:43.750[main]INFOliquibase-Waitingforchangeloglock.... 2021-02-1413:45:53.755[main]INFOliquibase-Waitingforchangeloglock.... 2021-02-1413:46:03.762[main]INFOliquibase-Waitingforchangeloglock.... 2021-02-1413:46:13.767[main]INFOliquibase-Waitingforchangelogl
Golang的文件读取方法很多,刚上手时不知道怎么选择,所以贴在此处便后速查。 一次性读取 小文件推荐一次性读取,这样程序更简单,而且速度最快。 funcReadAll(filePthstring)([]byte,error){ f,err:=os.Open(filePth) iferr!=nil{ returnnil,err } returnioutil.ReadAll(f) } 复制 嘿嘿,还有更加简单的方法,我经常使用ioutil.ReadFile(filePth) 分块读取 可在速度和内存占用之间取得很好的平衡。 packagemain import( "bufio" "io" "os" ) funcprocessBlock(line[]byte){ os.Stdout.Write(line) } funcReadBlock(filePthstring,bufSizeint,hookfnfunc([]byte))error{ f,err:=os.Open(filePth) iferr!=nil{ returnerr } deferf.
从《构建之法》第一章的“程序”例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行“软件”,满足以下需求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6+1/8=7/24 运算符为+,−,×,÷ 并且要求能处理用户的输入,并判断对错,打分统计正确率。 要求能处理用户输入的真分数,如1/2,5/12等 使用-n参数控制生成题目的个数,例如执行下面命令将生成10个题目 Myapp.exe-n10 一、需求分析以及功能设计 根据题目要求,要制作一个能自动生成题目的软件。 1.由于小学不同年级,算数的难易程度不同,最好能做到可以用户自由选择题目难易程度,是否有乘除法,是否有分数。(对于识别分数,当读入a/b时,先将a,b转化为整型,再将a除以b的结果保存为c,与题目结果相比较。或者对于分数问题,直接读入"'int'+'/'+'int'"格式的数据,并给出特殊情况“2/1=2这种结果为整数”的解决办法) 2.能够接受键入的答案,并判断对错,并给出成绩/正确率,以及答题时间(最好能给定时间记时,超出时间不能答题)。 3.实现能够使用参数控制生成题目的个数
我们的项目是面向学校老师的教学软件,所以肯定少不了互动白板的功能,而这个里面的画笔功能是由我来开发的,下面介绍这个过程中遇到的问题以及解决方法。 首先给大家明确下由于软件中的画布可以自由移动,会超出屏幕显示范围,同时支持点擦和线擦,所以需要存储所有点坐标。 第一版简单画笔实现并优化掉折线感 第一版实现的肯定是很简单的画笔线条,由给定的鼠标坐标位置连线画出线段,主要使用的canvas的API方法有:beginPathmoveTo lineTostroke。不过很快发现当鼠标快速画曲线时出现很明显的拐点,这里要用到贝塞尔曲线来解决,具体可参考《利用贝塞尔绘制平滑曲线》。 第二版解决快速画线时笔迹跟不上鼠标移动的问题 实现了贝塞尔曲线的绘制,同时也产生新的问题,绘制过程中会出现线条的延长跟不上鼠标的情况(这是由于贝塞尔曲线的应用引起的,二次贝塞尔曲线绘制的时候需要三点确定起始点和控制点,《利用贝塞尔绘制平滑曲线》有具体讲解,看懂就能明白为什么会跟不上了)。 由于我们存储了所有点坐标,所以解决这个题也好办,就是mousemove触发绘制时都遍历一遍本条线上所有点来绘制这条线。 所以每
Map是一个接口,其中一个唯一键与每个值对象相关联。因此,搜索,更新,删除等操作都是基于键来进行的。 完整的项目目录结构如下所示- 集合映射实例 在这个例子中,我们将一个对象嵌入到一个实体类中,并将其定义为一个集合类型-Map。 privateMap<Integer,Address>map=newHashMap<Integer,Address>(); 复制 Java 这个例子包含以下步骤- 第1步:在com.yiibai.jpa包下创建一个实体类Employee.java,这个类包含员工id,name和嵌入对象(员工地址)。注解@ElementCollection表示嵌入对象。 文件:Employee.java的代码如下所示- packagecom.yiibai.jpa; importjava.util.*; importjavax.persistence.*; @Entity publicclassEmployee{ @Id @GeneratedValue(strategy=GenerationType.AUTO) privateinte_id;
最近在将一个使用JavaScript写的npm包重构成TypeScript 。重构完后,发现原先的JSDoc注释在ts文件编译后失效了,便搜索了一下,但是谷歌并没有找到我所想要的答案,便只能自己研究了。这篇算是记录一下研究结果。 首先说明一下JSDoc的函数参数注释写法:在函数上方,内容放置于多行注释内,下面是一个基础的例子,详细内容请参考UseJSDoc:@param /** *@paramsomebody */ functionsayHello(somebody){ alert('Hello'+somebody); }复制 至于为什么要使用JSDoc?因为可以为函数参数添加描述信息(这样更新参数后就不用更新文档啦x)。 我先试着使用了 TypeScript的 interface关键词,先编写两个接口,然后将函数的参数的类型设置成对应接口,但是这样会使VSCode的代码提示只显示函数参数的类型,不显示类型的内容(如图1所示),具体例子如下 /**这是bar数组*/ interfaceBar{ /**这是bar数组的i字段*/ i:string; /
网络基础篇 1、OSI七层、TCP四层作用 2、TCP的三次握手 3、为什么TCP建立需要三次握手 4、四次挥手 5、断开为什么需要四次挥手 6、TCP的无差错传输? 7、TCP和UDP的区别 8、http的请求和相应组成 9、http状态码 10、http缓存 11、https的加密算法 12、TSL/TLL的握手过程 13、https的握手过程(原理) 14、keep-alive 15、websocket CSS篇 1、CSS盒模型 2、CSS选择器 3、CSS伪元素、CSS伪类 4、水平垂直居中 5、BFC原理和创建 6、postCSS、less、sass 7、CSS动画 8、CSShack兼容性写法 9、CSS单位 10、rem的布局原理 11、相邻的两个inline-block节点为什么会出现间隔,该如何解决 12、metaviewport 13、画三角形 14、为什么块级元素设置宽度后,默认居左显示 15、为什么固定宽度的块级元素设置margin:auto可以实现水平居中显示 16、为什么块级元素的高度默认为元素自身高度 17、什么块级元素设置margin:auto无法实现
Buffer缓冲区--------------------------------------什么是Buffer Buffer是用来存储二进制数据的对象但是结果以16进制的形式表示出来 #Buffer是一个类数组对象,不是数组 Buffer的作用 javascript能够处理字符串,对字符串进行一些操作,但是对于一些二进制数据就没法操作了。 buffer是用来处理二进制文件流和TCP流(http的底层协议)的文件缓存区,可以将二进制流和string进行相互转换 Buffer的特点 buffer对象里面存储的是字节,而不是字符串或者其他的数据类型主要热点是用来操作字节的 Buffer是一个类数组对象 什么时候用到buffer 用到数据流的地方就会用到buffer(比如文件读取,http中post请求传递的数据) 创建一个buffer对象 varbuf=Buffer(字符串); 将一个buffer对象转换为字符串 varstr=buf.toString(); -----------------------------------------流操作(stream)一般代表文
Jquery中队Ajax操作进行了封装,可分为3层:1、最底层$.ajax(),2、第二层load()、$.get()、$.post()方法,3、第三层$.getScript()和$.getJSON()方法 一、$.ajax()是jquery最底层的方法, $.ajax(options) 复制 该方法只有一个参数options,但是以key/value,形式存在,所有参数都是可选的, url type timeout data dataType beforeSend complete success error global url:发送请求的地址[String] type:请求的方式(post/get)[String] timeout:设置超时时间,毫秒 [Number] data:发送到服务器的数据[String] dataType:服务器返回的数据类型[String] success:请求成功后的回掉函数function
记录一点…… 官网,中文文档 mybatis–MyBatis3|XML映射器https://mybatis.org/mybatis-3/zh/sqlmap-xml.html 关联另一个mybatisselect查询<associationproperty="author"select="getAuthorById"column="author_id"foreignColumn="id"/>使用连表前缀映射的,主要结果映射与关联的结果映射,手动启用自动映射<resultMapid="article2"type="me.hzr.springmybatispractice1.entity.Article"autoMapping="true">加id字段映射<idcolumn="id"property="id"/><associationproperty="author"column="blog_author_id"javaType="Author"resultMap="authorResult"/>或者省略<associat
笔者实验环境:centos7.4.1708,hadoop-2.6.0-cdh5.14.2. 执行hadoop命令时出现以下告警,不能加载相关库: WARNutil.NativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswhereapplicable复制 检查发现本地并没有库: $hadoopchecknative-a 19/08/3013:11:53WARNutil.NativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswhereapplicable Nativelibrarychecking: hadoop:false zlib:false snappy:false lz4:false bzip2:false openssl:false 19/08/3013:11:53INFOutil.ExitUtil:Exitingwith