esjava 同步mysql_Elasticsearch和mysql数据同步(elasticsearch-jdbc)

1、介绍 对mysql、oracle等数据库数据进行同步到ES有三种做法:一个是通过elasticsearch提供的API进行增删改查,一个就是通过中间件进行数据全量、增量的数据同步,另一个是通过收集日志进行同步。 明显通过API增上改查比较麻烦,这里介绍的是利用中间件进行数据同步。 2、常用的同步中间件的介绍和对比 都可以完成数据同步; elasticsearch-jdbc更通用,GitHub活跃度很高; elasticsearch-river-mysql 自2013年后便不再更新; go-mysql-elasticsearch仍处理开发不稳定阶段; elasticsearch-river-jdbc和elasticsearch-river-mysql都不支持对删掉的数据进行同步,go-mysql-elasticsearch希望可以改善这个问题。 总的来说,elasticsearch-jdbc更适合使用,对于删掉的数据可以采用API进行同步,或者在数据中不进行物理删除可以避免该问题的出现。 3、elasticsearch的安装 这里使用的是2.3.2版本,可以到官方网站下载,这里不提供官方地址,或者访问http://download.csdn.net/detail/carboncomputer/9648227 下载本篇文章所用到的两个安装包。 得到elasticsearch-2.3.2.tar.gz [zsz@zsz ~]$ tar -zxvf elasticsearch-2.3.2.tar.gz [zsz@zsz ~]$ mv elasticsearch-2.3.2 /usr/local/elasticsearch-2.3.2 启动elasticsearch服务 [zsz@zsz ~]$./bin/elasticsearch 另外,bin/elasticsearch -d(后台运行); 如何需要修改配置,可以查看/elasticsearch-2.3.2/config/elasticsearch.yml; 查看节点情况: [zsz@zsz downloads]$ curl 'localhost:9200/_cat/nodes?v' host ip heap.percent ram.percent load node.role master name 127.0.0.1 127.0.0.1 12 79 0.18 d * node-1 查看索引,当前为无索引: [zsz@zsz downloads]$ curl 'localhost:9200/_cat/indices?v' health status index pri rep docs.count docs.deleted store.size pri.store.size 创建索引: [zsz@zsz downloads]$ curl -XPUT 'localhost:9200/customer?

mysql需要配置环境变量吗_mysql配置环境变量(win 10)

1、安装完mysql后就需要配置环境变量 (win 10) 选择“我的电脑”,单击右键,选择“属性->高级->环境变量中的系统变量,对 MYSQL_HOME、Path 这 2 个系统变量分别设置如下相应的值(设置原则:如果存在相应的变量,直接对该变量进行编辑,注意只添加不删除;如果该变量不存在,则新建后再编辑。) 这里由于没有于是就新建一个环境变量 MYSQL_HOM MYSQL_HOME=D:\App\Mysql ( 目录选择自己的安装目录) (此处需注意,如果是为某个已存在的变量新增变量内容,在输入变量内容前必须先输入英文输入法状态下的分号) 2、新建完环境变量后,在环境变量里面找到Path,点击编辑,在弹出的框里面点击新建,新建一个环境变量 Path=%MYSQL_HOME%\bin (在Path路径下添加 %MYSQL_HOME%\bin) 3、输入%MYSQL_HOME%\bin,之后点击确定,记住一定是3个确定 如果点击编辑Path,打开是这样的 需要在变量值最后面添加 ;%MYSQL_HOME%\bin (MYSQL_HOME%\bin前面带有英文状态下的分号) 编辑完成后确定就配置完成了 配置完成后我们可以在cmd 中输入 mysql -u root -p 回车后输入密码 ———————————————— 版权声明:本文为CSDN博主「一个木函」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/li93675/article/details/80700152

实验室数据采集系统_ADC数据采集系统

点击蓝字关注我们 AD转换电路 近来,为了实现传感器输出信号的采集,购买了AD7705、微控制器(stm32f103)等相关模块,如下图所示;经过一番摸索,也算成功达到了预期要求,感觉收获最大的应该就是不断调试程序的过程中加深了对微机原理相关内容的理解,能够更好地与电子电路相关的研发人员沟通交流,?~ 好久不见,?,主要包含两方面原因:1、本推文内容较多,花费的时间较久:最开始想要把信号的AD转换、存储等集成到一篇推文中,展示一个最后的结果,奈何一个星期还没有达到预期要求,?;2、本科时候因为偷懒,嵌入式开发相关的课程好多没有去上,现在想要重新拾起来需要花费的时间成本大大的增加,希望以后引以为戒吧,?~ 附录:补充材料 1、各种ad转换芯片以及相应的区别? ads1115、pcf8591、tm7705以及STM32F103等微处理器都能够实现模拟信号与数字信号的转换,选用时主要的依据点有:如果要求不高,就用TM7705,能够直接外接传感器,电路原理极其简单;如果追求高精度适合ads1256相关的采集电路;STM32F103的ADC是12位逐次逼近型的模拟数字转换器,具有16个外部通道,系统能够尽可能做到微型化,适合可穿戴设备等对体积要求较高的场合。 附1、tm7705属于数据采集芯片,内部包含信号放大电路、滤波电路等,能够实现信号与微控制器之间转换与传递;输入电路带分压电阻和R-C滤波;芯片内部带可编程增益放大器,增益范围:1-128倍;最大刷新速率500k,芯片内部输入带缓冲放大器,可以直接连接传感器。 TM7705能够直接外接传感器,实现压力传感器以及温度传感器输出信号的模数转换,与此同时,电路原理极其简单,具体如下图所示: 其中,LM258D-2.5提供一个2.5伏的偏置电压;原理图中0R表述为在PCB上放一个电阻位置,以便以后调试时,方便更改电阻值 附2、ADS1256是非常低噪声的24位模数转换器,最高30KSPS的采样速率,能够提供4通道的差分信号输入,ads1115测试频率860样本/秒,16位精度。 _____ 附3、pcf8591是一个单片集成、单电源供电、8 bit CMOS数据获取器件,具有4个模拟输入,1个模拟输出和1个串行I2C总线接口,PCF8591的3个地址引脚A0、A1和A2可用于硬件地址编程。 在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。

Spring IOC介绍及其原理

一、Spring IOC是什么 IOC:控制反转,是一种设计模式。一层含义是控制权的转移,由传统的在程序中控制依赖转移到由容器来控制。第二层是依赖注入:将相互依赖的对象分离,在Spring配置文件中描述他们的依赖关系,他们的依赖关系只在使用的时候才建立,简单来说就是不需要的NEW一个对象了。 二、Spring IOC简单原理 实现步骤: 加载并且保存Spring配置文件路径信息,然后保存到configLocation中。刷新Spring上下文。创建并且载入DefaultListableBeanFactory(即BeanFactory)。根据DefaultListableBeanFactory创建XMLBeanDefinitionReader,用于后面读取xml配置文件信息。创建BeanDefinitionDelegate代理类,用于解析xml配置信息。解析xml中配置的<import>、<beans>、<alias>等不同的标签信息,以便于可以使用不同的解析器进行解析。通过XMLBeanDefinitionReader结合location路径信息读取Resources资源信息。使用BeanDefinitionDelegate代理类解析Bean元素并且依次进行实例化操作,实例化完毕之后将Bean信息注册(put)到BeanDefinitionMap中以便于可以下次继续使用。

为什么华为a1路由器网速变慢_华为路由器上网速度慢怎么办?

摘 要 1、检查线路连接是否正常,使用的是否是千兆网线(8芯网线,4芯为百兆),检查水晶头和网口连接接触是否良好。2、检查是否开启了设备限速功能。登录路由器web,在 终端管理 页面,查看是否开启了 网络限 一、有线上网慢措施如下: 1、检查线路连接是否正常,使用的是否是千兆网线(8芯网线,4芯为百兆),检查水晶头和网口连接接触是否良好。 2、检查是否开启了设备限速功能。登录路由器web,在“终端管理”页面,查看是否开启了“网络限速”,如果开启了建议关闭。 3、检查是否开启了智能带宽功能,登录路由器web,在“智能带宽”页面,查看是否为“公平竞争”模式,如果是其他模式,建议先修改为“公平竞争”。另外如果要开启其他模式,也需要查看测速结果是否和家里实际带宽一直,如果不一致可以点击“重新设定”进行修改。 4、可能是因为计算机的DNS服务器地址不正确或者WAN接口最大发送单元(MTU)不恰当。您可以按照以下步骤进行排查。确认计算机的DNS服务器地址是否正确 1) 单击桌面右下角的图标,选择“打开网络和共享中心”。 2) 单击“更改适配器设置”。右键单击本地连接,选择“属性”。 3) 双击“Internet 协议版本4(TCP/IPv4)”。 4) 确认计算机是否是“自动获得 DNS 服务器地址”或已手动设置了正确的”首选DNS服务器”和“备用DNS服务器”。 5、尝试重新设置WAN接口MTU值 MTU即最大传输单元。网络中对传输的数据包大小有限制,路由器的MTU默认值根据国际标准设置,可达到最大效率。但有部分宽带服务商未按照国际标准设置,自行将默认值调小,使得有些比较大的数据包无法通过。因此,可以通过将MTU值调小来快速解决此问题。具体方法如下: 1) 登录路由器Web配置界面 2) 进入“我要上网”页面。 3) 将“最大传输单元(MTU)”值由默认的1500或1492修改为1400或更小进行尝试。 二、无线上网慢,先对比有线网速是否正常,如果正常则从下面开始,如果有线不正常先将有线网速正常。 1、请将路由器安放在平稳、通风、无强光照射的环境中。选择开阔空间,使计算机和设备之间没有阻挡物,例如水泥墙、木板墙等阻挡物会影响无线网络的无线信号传输效果。 2、确保设备及计算机远离具有强磁场或强电场的电器,例如微波炉等。 3、尝试修改路由器的Wi-Fi频道(与其它Wi-Fi信号的信道间隔最好为5个以上),减少无线串扰。登录路由器web,在“更多功能-Wi-Fi设置-WiFi高级”页面修改WiFi信道。 4、将终端设备拿到离路由器较近无阻挡的1-2米位置进行测速。 5、您可以尝试将路由器的Wi-Fi模式修改为“穿墙模式”。登录路由器web,在“我的WiFi”页面,修改Wi-Fi 功率模式为“穿墙”。 6、使用WiFi分析仪查看网络环境,如果周围干扰较大,“Wi-Fi 频宽设置”建议修改为20Mhz。登录路由器web,在“更多功能-Wi-Fi设置-WiFi高级”页面修改。

摄像头各参数的意义_详解:摄像头参数介绍说明

摄像头的核心是CCD,由于CCD在生产过程中分不同等级和和生产商获得的途径不同,造成CCD的采集效果也不同。一个简单的检测方法,就是将摄像头通电,不接镜头,用手遮住镜头接口,看图像有没有亮点,雪花大不大,然后接上镜头,将摄像头对准一个色彩鲜明的物体,查看器的颜色是否有偏色,图像有无扭曲现象,色彩和灰度是否平滑。 由于摄像头的核心部件是CCD,所以其主要参数大多与CCD有关,下面就列出摄像头的主要参数介绍说明: 1)CCD尺寸,亦即摄像头靶面。原多为1/2英寸,现在1/3英寸的已普及化,1/4英寸和1/5英寸也已商品化。 2)CCD像素,是CCD的主要性能指标,它决定了显示图像的清晰程度,分辨率越高,图像细节的表现越好。CCD是由面阵感光元素组成,每一个元素称为像素,像素越多,图像越清晰。现在市场上大多以25万和38万像素为划界,38万像素以上者为高清晰度摄像头。 3)水平分辨率。彩色摄像头的典型分辨率是在320到500电视线之间,主要有330线、380线、420线、460线、500线等不同档次。 分辨率是用电视线(简称线TV LINES)来表示的,彩色摄像头的分辨率在33到500线之间。分辨率与CCD和镜头有关,还与摄像头电通道的频带宽度直接相关,通常规律是1MHz的频带宽度相当于清晰度为80线。频带越宽,图像越清晰,线数值相对越大。 4)最小照度,也称为灵敏度。是CCD对光线的程度,或者说是CCD正常成像时所需要的最暗光线。照度的单位是勒克斯(LUX),数值越小,表示需要的光线越少,摄像头也越灵敏。月光级和星光级等高增感度摄像头可工作在很暗条件,2~3lux属一般照度。 5)扫描制式。有PAL制和NTSC制之分。 6)摄像头电源。交流有220V、110V、24V,直流为12V 或9V。 7)信噪比。典型值为46db,若为50db,则图像有少量噪声,但图像质量良好;若为60db,则图像质量优良,不出现噪声。 8)视频输出。多为1Vp-p、75Ω,均采用BNC接头。 9)镜头安装方式。有C和CS方式,二者间不同之处在于感光距离不同。 更多精彩内容请关注:西安监控摄像头

判别多项式有无重因式的方法_几种有理分式分解的方法

分解步骤总览: 判别真假分式.真分式分解出待定式.待定系数求解方法: 实根法(一次式), 复根法(二次式), 求导法(一次n重), 极限法(一、二次的二重) 1. 判别真假分式 形如 的分式, 若分子指数等于或高于分母, 则要化为真分式. [1] 化简方法: 做多项式除法[2] 例如: 2. 真分式分解 重一次因式 形如: 当 时 其中 为待定系数. 当 时 例如: 为待定系数. 二次因式 形如 当 时, 当 时, 例如: 3. 待定系数求解[3] 无特征——反解方程法 将各项通分合并, 将分子与原式的分子做系数比对, 写出关于待定系数的方程, 进行求解 多个不同的一次式, 且无重因式——实根代入法 形如 (1) 列出等式: (2) 两边同时乘以 (3)令 , 化简即可求出 . 例如分解 令 同理可得 同一个因式的n重式——求导法 形如 (1) 设 (2) 两边同时乘以 得: (3) 分别对等式两边求 阶导(即把 旁边的多项式导成常数) (4) 令 , 这样没有导成常数的多项式均为0 (5)最后进行化简, 得出结果即为所求.

奥维地图如何显示2000坐标_奥维地图和cad

科学网-2000坐标系经纬度和转换方法 - 周朝宪的博文​blog.sciencenet.cn 转换成经纬度 如何选择坐标系 | 奥维互动地图浏览器 第一种方法走到那个点位上 然后用奥维地图蹲点获得 第二种 找到参考点 通过奥维地图 cad点击工具-查询-坐标点 可以获得图上的坐标XY值 这样来在系统设置里找到关联电位 三个点关联让cad导入 我们的图太大导入不进去 导入不是dwg格式,而是dwf格式 点击标签来获得电位 来获得平面坐标 如何使用关联点将CAD导入到奥维 | 奥维互动地图浏览器​www.ovital.com 因为我们使用另一个地图坐标,所以我首先获得三个图中坐标点位 XY值,这三个点不要一条线,最好三角 然后导入 横轴墨卡托投影坐标设置与导入导出CAD文件讲解 | 奥维互动地图浏览器​www.ovital.com 将设计线路CAD图导入到奥维互动地图的方法 - 中海达RTK教程网​www.zhdrtk.com https://www.fffsky.com/blog/post/ovital_cpii_road_line.html​www.fffsky.com 奥维可以到处dxf文件,用于cad的创建

origin三图合一_利用Origin将多组拟合图放在一张表中的方法

如何将多组拟合图放在一张表中呢?比如有如下要求 1、有两组或两组以上拟合数据。 2、目标是实现多组数据之间关系的对比。 3、如何进行分别对其拟合,并最终将各个拟合结果都整合到一张图中呢? 现在来就用Origin软件来解决这个问题。 1、首先新建Origin 工作表: 2、需要用到两组数据,所以在数据列上右键,插入两个新列。 3、插入的新列默认都是Y轴数据,而我们需要的是两个X和两个Y,所以对其中一个新列双击列标题,在弹出的列属性对话框中,设置其数据属性为X轴。 4、输入数据(本例中的数据无物理意义,纯为了做实例而编的)。 5、画出散点图是这个样子的。 6、这时候,新建了一个工作表,并将数据都粘贴到新表中,在新表进行数据拟合——当然,完全可以不这样做的,在原表上操作也好。 7、选择两列一组数据后,进行数据拟合,这是拟合之后的结果。 8、当然也可以调整拟合过程中的参数。 9、这是另一组数据的拟合结果。 10、好了,回到最终要整合的那张散点图上,下面要把拟合结果添加到这张图中。 11、在左上角的小“1”上点击右键(这里是设置图层属性的地方),点击图层内容,在图层内容对话框中,把刚刚完成拟合的曲线添加进来。 12、添加进来后,还可以双击曲线,对其进行线宽等属性参数设置。 13、这就是添加之后的效果了: 当然,这只是两组数据,还可以很多组的哦。 不过要提醒一下,多组拟合结果放入一张图中的操作过程一定要注意保存,因为比较耗费内存资源 ,Origin可能随时会卡主并自己退出。 更多相关阅读

Nacos启动报异常[failed to req API:127.0.0.1:8848/nacos/v1/ns/service/list. code:503 ]

问题描述 在本地环境下单机启动Nacos正常且可以正常打开web端,但是启动微服务项目,IDE控制窗口报异常错误failed to req API:127.0.0.1:8848/nacos/v1/ns/service/list. code:503 问题分析 最直接的原因是Nacos的缓存宿主机ip引发的问题; 查询宿主机ip为192.168.0.101 查询nacos目录下缓存的宿主机ip为10.19.0.181 cd usr/local/nacos/data/protocol/raft/naming_persistent_service/meta-data bamawdeMacBook-Pro:meta-data bamaw$ ls raft_meta bamawdeMacBook-Pro:meta-data bamaw$ cat raft_meta jraft.StablePBMet10.19.0.181:7848bamawdeMacBook-Pro:meta-data bamaw$ 解决方案 两种解决方案 方案一:删除nacos文件下data文件夹,重新启动 路径: /usr/local/nacos/data 不足: 存的配置也会被删除(可考虑方案二) 方案二:修改raft_meta和__raft_snapshot_meta文件,重新启动 1.修改raft_meta对应的ip为目前宿主机ip 路径: /usr/local/nacos/data/protocol/raft/naming_persistent_service/meta-data 2.修改__raft_snapshot_meta对应的ip为目前宿主机ip 路径: /usr/local/nacos/data/protocol/raft/naming_persistent_service/snapshot/snapshot_1

自己发送的广播报文为什么自己不能收到_这些问题你都答不上,还好意思说自己学过网络?...

编辑 | 排版 | 制图 | 测试 | ©瑞哥 此文用时3小时08分钟,原创不易,坚持更不易,希望我的每一份劳动成果都可以得到大家的一个【在看】 1、三层交换机接口收到报文如何处理? 答:三层交换机接收到报文后,会查找硬件转发表,找目的MAC地址,然后根据硬件转发表进行转发。 2、二层交换跟三层交换的区别? 答:二层交换机是数据链路层设备,只能够实现根据MAC地址表交换数据的功能,三层交换机就是具有部分路由功能的交换机,三层交换机是二层交换+三层转发,”一三层交换机最重要的功能就是加快大型局域网内部的数据交换,可以实现一次路由,多次转发功能。对于数据包转发等规律性的过程由硬件高速完成。 3、 trunk端口、hybrid端口的区别?应用举例说明? 答: (1)TRUNK端口只允许一个缺省VLAN不带标签通过 (2)HYBEID允许多个VLAN不带标签通过 例如:TRUNK,如果是这种情况就解决不了,一个经理需要管理两个组,这两个组处于不同的VLAN,经理是一个单独的VLAN,那么这样的话,一个经理要管理两个组的话就要让这个数据帧能够到达经理那,也就是如果是一个交换机分别连接三台PC机,这样的话,就需要有一个端口实现两个VLAN的不带数据帧的通过才行。 4、三层交换跟路由的区别? 答:三层交换更复杂。 三层交换机只能够实现数据包转发等规律性的过程由硬件高速完成,但是对于路由信息更新,路由表维护,路由计算,路由确定等功能,由软件实现。 5、静态路由写下一跳IP和本地出站接口有什么区别? 答: (1)在点到点网络环境下,无论指定下一跳地址还是出接口,其效果都是一样的,例如PPP/HDLC等都是一样的。 (2)但是在广播网络环境下,指定下一跳和指定出接口将会达到不同的效果,如果指定为出接口的话,那么不管数据包的目的地址是否有效,每次当数据包到达时都会触发一个ARP请求,这就意味着路由器需要配置大量的ARP高速缓存。而如果是指定为下一跳地址的话,仅当第一个去往目标网络的数据包到达时,才会触发ARP请求。 6、Tag在交换机上内部处理帧时,(从一个接口转发到另一个接口过程中),帧中有没有tag标签? 答:交换机内部如果设置了VLAN,则一定有标签。 7、两台交换机通过trunk接口相连后,两个交换机上两个不同的VLAN能不能通讯? 答:可以,把TRUNK端口当作ACCESS端口用。 8、Hybird接口是怎么应用的?举个例子。 答:比如:一个经理需要管理两个组,这两个组处于不同的VLAN,经理是一个单独的VLAN,那么这样的话,一个经理要管理两个组的话就要让这个数据帧能够到达经理那,也就是如果是一个交换机分别连接三台PC机,这样的话,就需要有一个端口实现两个VLAN的不带数据帧的通过才行。 9、下一跳地址是非直连的路由是什么应用的? 答:迭代查询。 10、路由器上能不能接收到127.0.0.1的数据报文?这个地址能不能够作为目标地址? 答:能接受到,不能作为目标地址,因为这个地址是自己的,0.0.0.0是可以的。比如做了WEB服务器就要0.0.0.0到你的WEB上。 11、两台交换机通过trunk接口相连后,两个交换机上两个不同的VLAN能不能通讯? 答:可以的,把TRUNK当作ACCESS端口用。 12、度量值和优先级怎么向学生讲清楚?用简单的方法。 答: (1)度量值。从南京到北京,整个路途上的消耗,包括坐车,时间,吃饭,睡觉等等,到达一个目的地的代价。 (2)优先级,都去北京,考虑时间来说,飞机比火车快,则飞机的优先级比火车要高,选优先级高的。 13、下一跳地址不是直连地址什么应用中使用? 答:迭代查询 14、为什么说DHCP能提高IP地址的使用效率? 答:因为DHCP里有一个租约的情况,动态分配IP地址,如果租约到期就收回,你再用的话就再申请,只有在想要用,或者这个IP地址你需要用的时候才续约,比固定的配一个IP地址,只在需要的时候用,不用的时候就放着要好。 15、DHCP整章出现的每种报文哪个是广播、组播或单播? 答:DHCP主要的协议报文类型分为8种。其中, DHCP Discover【广播】、 DHCP Offer【广播或单播】、 DHCP Request【根据DHCP客户端当前所处的不同状态采用单播或广播的方式发送】、 DHCP Ack和DHCP Release【当客户端想要释放已经获得的IP地址资源或取消租期时,将向DHCP服务器发送DHCP Release报文,采用单播方式发送】这5种报文在DHCP协议交互过程中会比较常见,而DHCP Nak、DHCP Decline广播和DHCP Inform这3种报文则较少使用。 DHCP服务回应的OFFICE报文是单播还是广播取决于DHCP客户端的discover报文,客户端发送的discover报文时会对flag位置位,0表示单播,1表示组播。 16、IP地址拒绝及释放那个PPT中客户端如何知道IP地址被别人使用? 答:当DHCP客户端收到DHCP服务器包含配置参数的DHCP Ack报文后,会发送免费ARP报文【把这个地址作为自己的地址发送到网络中,看有没有地址冲突】进行探测,目的地址为DHCP服务器指定分配的IP地址,如果探测到此地址没有被使用,那么DHCP客户端就会使用此地址并完成配置。 如果DHCP客户端探测到地址已经被分配使用,DHCP客户端会发送给DHCP服务器DHCP Decline报文,并且重新开始DHCP进程,另外,如果DHCP客户端收到DHCP Nak报文,DHCP客户端也将重新启动DHCP进程。

org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /

org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /XXX 这几天都在学习zookeeper,这个难呀,因为对于Linux特别不熟悉,等同于盲区,所以学起来很困难,基本就是视频,软件 ,百度,三者直接切换,真的一波三折 先上我跟着视频敲得代码: //要连接的zookeeper private String connectString="192.162.2.135:2181,192.168.2.248:2181,192.168.2.123:2181"; private int sessionTimeout =10000; //超时时间 private ZooKeeper zkCli; @Before public void init() throws IOException { zkCli = new ZooKeeper(connectString, sessionTimeout, new Watcher() { public void process(WatchedEvent watchedEvent) { } }); } @Test public void create() throws KeeperException, InterruptedException { String path = zkCli.create("/test", "yangyi".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(path); } 这短短几行代码算是看起来比较简单,,乍一眼看不会报错的那种,但是,他就是偏偏报错了 org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /XXX 报的是上面的错,我百度了好几个跟我一样问题的,但是他们得解决方式,我都排查过,没有问题,总结一下解决方式

虹科工业树莓派:结合Codesys实现软PLC功能

虹科工业树莓派RevolutionPi是以树莓派计算模块为核心并进行了工业级封装的模块化智能网关与控制器,能在恶劣的工业环境下运行。其操作系统也是优化后的树莓派Raspbian系统,带有实时补丁,能更好地满足工业场合的实时性要求。 方案简介 虹科工业树莓派RevolutionPi是以树莓派计算模块为核心并进行了工业级封装的模块化智能网关与控制器,能在恶劣的工业环境下运行。其操作系统也是优化后的树莓派Raspbian系统,带有实时补丁,能更好地满足工业场合的实时性要求。 Codesys是一款是一种功能强大的PLC软件编程工具,它支持IEC61131-3标准IL 、ST、 FBD 、LD、 CFC、 SFC 六种PLC编程语言,用户可以在同一项目中选择不同的语言编辑子程序,功能模块等。通过在硬件平台上移植Runtime,可以将任何嵌入式设备或基于PC的设备转变为符合IEC 61131-3标准的工业控制器。本文将以RevPi Connect模块为例介绍如何在虹科工业树莓派RevPi上安装Codesys Runtime并进行简单的应用。 所需材料 RevPi ConnectPC(预装好Codesys IDE开发环境)Codesys Control for Raspberry Pi(可在codesys中国官网下载)Codesys Package for RevPi Family 安装Codesys Runtime 在安装Runtime之前首先需要搭建好RevPi运行环境,PC与RevPi处于同一局域网内。 打开Codesys软件,选择工具-》包管理器,安装已经下载好的Codesys Control for Raspberry Pi。安装完成之后就可以在“工具”下找到Update Raspberry Pi,进入可以看到如下界面: 输入RevPi的IP地址以及登录账号名及密码,并选择对应的Codesys Runtime Package,点击Install即可。在安装过程中需要选择单核还是多核模式,由于本次只是演示,所以选择单核模式,稍等一会安装即可完成。 建立工程 点击文件-》新建工程,选择新建一个标准工程并将工程命名为RevPiDemo。 在开始编程之前,首先需要安装Codesys Package for RevPi Family。安装方式同样是通过包管理器实现,此处不再赘述。同时在此包文件中也会包含一些工程示例。 包安装完成之后就可以向工程中添加设备了,在Device上右击,选择“添加设备”。选中Connect模块,单击“添加设备”按钮即可。然后关闭此窗口。 然后在新添加的Connect模块上右击,选择“添加设备”,选中其他项-》left并添加。 然后再left上右击添加设备即可选择自行添加IO模块。在PiBridge上右击选择“插入设备”即可插入网关模块。 设备添加完成之后,就可以开始编程了。所有已添加的设备相关的变量都可以在Codesys中显示出来并进行配置。 下载程序 程序编写完成之后,需要将程序下载到Connect模块中,在此之前需要安装好Runtime。首先双击Device,点击通讯设置》扫描网络,选择RevPi即可。 然后点击上方的登录按钮,等待将信息下载到RevPi模块即可。 总结 上面介绍的如何在RevPi上运行Codesys并建立工程的详细步骤。通过Codesys不仅可以实现将RevPi作为软PLC从而利用各种PLC编程语言进行编程外,还可以实现Canopen主站,Ethercat主站等功能。 注: RevPi家族扩展网关模块除DMX外只提供从站模块。Codesys是一款商业软件,需要购买licence才能正常使用,未安装licence的设备有运行时间限制。

Linux 密钥保留服务keyring入门

Linux 密钥保留服务入门 Linux 密钥保留服务(Linux key retention service是在 Linux 2.6 中引入的,它的主要意图是在 Linux 内核中缓存身份验证数据。远程文件系统和其他内核服务可以使用这个服务来管理密码学、身份验证标记、跨域用户映射和其他安全问题。它还使 Linux 内核能够快速访问所需的密钥,并可以用来将密钥操作(比如添加、更新和删除)委托给用户空间。 本文将概述 Linux 密钥保留服务,定义它的术语,帮助您快速掌握 Linux 密钥的使用方法。您将通过示例代码了解如何在内核模块中使用 Linux 密钥保留服务。在编写本文时使用的内核版本是 2.6.20。 什么是密钥? **密钥(key)**是一组密码学数据、身份验证标记或某些相似的元素,它在内核中由 struct key 表示。在 Linux 内核源代码中,struct key 是在 include/linux/key.h 下定义的。 清单 1 给出 struct key 中一些重要的字段。注意,为了支持密钥,已经修改了 task_struct、user_struct 和 signal_struct。 清单 1. struct key 中的重要字段 struct key { atomic_t usage; /* number of references */ key_serial_t serial; /* key serial number */ struct key_type *type; /* type of key */

Android 打字机效果

1、导入Rxjava库 implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' implementation 'io.reactivex.rxjava2:rxjava:2.2.12' 2、自定义TextView /** * 打字机效果 * @author yi */ public class JumpShowTextView extends androidx.appcompat.widget.AppCompatTextView { public Disposable mDisposable; private String text; private StringBuilder stringBuilder; public JumpShowTextView(@NonNull Context context) { super(context); } public JumpShowTextView(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public JumpShowTextView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public void start(String text) { this.text = text; startView(); } private void startView() { stringBuilder = new StringBuilder(); mDisposable = Flowable.

捕获 flutter app的崩溃日志并上报

flutter 的崩溃日志收集主要有两个方面: flutter dart 代码的异常(包含app和framework代码两种情况,一般不会引起闪退,你猜为什么)flutter engine 的崩溃日志(一般会闪退) Flutter App 代码异常捕获 人写的代码是无数异常交织起来的偶然产物,代码发生异常才是正常情况。 除了在关键的地方加上 try-catch 让它们变成已知异常之外,抓到未知异常才是真本事。 比如下面的一段代码中的try-catch是无效的: 1 2 3 4 5 try { Future.error("asynchronous surprise"); } catch (e){ print(e) } 好在,Dart 有一个 Zone 的概念,有点类似sandbox的意思。不同的 Zone 代码上下文是不同的互不影响,Zone 还可以创建新的子Zone。Zone 可以重新定义自己的print、timers、microtasks还有最关键的how uncaught errors are handled 未捕获异常的处理 1 2 3 4 5 runZoned(() { Future.error("asynchronous error"); }, onError: (dynamic e, StackTrace stack) { reportError(e, stack); }); 在 reportError 里即可以进行上报处理(详见后面介绍)。 Flutter framework 异常捕获 注册 FlutterError.onError 回调,用于收集 Flutter framework 外抛的异常。

4自动排版步骤_干货 | 让领导赏心悦目的6个word排版技巧

一份完美的毕业论文、报告书、策划书,都需要有美观的排版!不仅阅读起来更加便利,视觉舒适度也能提高不少~ 今日份干货就来分享一下 超全的 Word排版技巧 1页边距设置 一般文档类的材料需要打印装订,如果没有调整页边距,打印出来就极大可能造成悲剧...字可能不见了一半!所以动笔之前建议先调整页边距。 点击【页面布局】-选择【页面设置】,调整页边距,选择纸张类型。 2设置多级标题 相信不少人遇到多级标题都用手打的,如果需要更改顺序,你就哭吧。从你看到这篇文章起,用这4步处理多级标题,文章怎么增加删减,更改内容、顺序,你都能轻松应对。 步骤1:选择多级列表 开始选项卡下的段落格式工具组中,打开【多级编号菜单栏】-【更多编号格式】。选择一款带【标题N】且全部左对齐的样式。 步骤2:修改一级列表的格式 展开多级编号菜单栏,打开【定义新的多级列表】设置窗口。将第一级的格式修改为「第一章」的形式。 步骤3:在更多选项里正规格式 此时,编号格式自动变成了「一.1、一.2、一.3……」的形式。可以在更多选项里,把【正规形式编号】打钩,点击【确定】即更改为「1.1、1.2、1.3……」。 步骤4:套用样式 在上方的菜单栏选择你要的样式直接套用即可。 3设置页眉页脚 设置页眉页脚时,封面总会很合群地一起带上它们,然而这却大大影响美观。这总是让人对他手足无措。其实只要3步就能搞定它。 步骤一:在第 2、3 页之间插入一枚分节符(下一页) 步骤二:在第 3 页页眉区域,单击取消【链接到前一条页眉】 步骤三:在第 1 页页眉处直接删除页眉。 若黑线仍在,再点击清除格式。 4格式刷统一格式 格式刷可将选定的格式复制到多个位置,不仅大大提高效率,也不用担心因操作疏忽带来的格式错误。再次单击格式刷或者Esc键即可关闭格式刷。 双击选中格式样本 - 点击【格式刷】- 选取需要调整的内容,即可完成格式统一 5设置上下标注 选中需要设置为上、下标的内容,【Ctrl+Shift+= 】就可将文字设为上标 【Ctrl+=】可以将文字设为下标,再按一次又恢复到原始状态 6排版常用快捷键 Word顶端工具栏,能够一眼找到,一步点击就能快速调整样式。 有些版式的调整就需要多次点击设置才能达到目的,这时候不妨记一下快捷键,能够更方便快捷地调整好内容。 (以上部分图片资料源自网络)

Buck DC-DC 的PCB layout

Buck DC-DC 的PCB layout 1、C~IN~、 C~BYPASS~、 D1的放置2、电感的放置3、输出电容的放置4、反馈网络布线5、总结如果大家还有什么想法,评论区见:)欢迎转载,转载注明出处! 在我刚开始学习画PCB的时候,对于电源这一部分的布局不是很在意,只要输出电压正确,走线载流够就可以了,当时布局布线都是以尽量紧凑为原则。后来在PLL和PA的测试过程中,发现电源网络的噪声会直接影响输出信号的相位噪声(PN)和输出频谱的杂散值。一个好的电源网络设计甚至可以将杂散值降低十几个dB。 当然,在读这篇博客时,我默认大家已经知道了BUCK Converter的原理了。 我们先来看看BUCK DC-DC工作时的电流通路: 当开关管Q1开启时,电流路径如下: 当开关管Q1关闭时,电流路径如下: Q1开启和关闭时,差异部分如下图,而在这一部分电路中,电流的变化是剧烈的,因此在PCB布局中需要格外注意 1、CIN、 CBYPASS、 D1的放置 当输出电流IO ≤ 1A时,可以将CIN和CBYPASS用一个陶瓷电容来替代;当输出电流比较大时,则不能将这两个电容合并,并且CIN需要一个容值更大的电容,一般来说,容值越大通常意味着频率特性越差(自谐振频率越低);CBYPASS一般采用X5R或X7R的 0.1uF~0.47 uF贴片型陶瓷电容。 我们先来看看两幅比较好的layout: 在上述两幅图中,CBYPASS都靠近IC引脚放置,当布局空间紧张时,可以将CIN放置的稍远,2cm以内都可以。在空间允许的条件下,当然第一种更好了。 当布局空间紧张到不得不把CIN放置到底层时,这种布局会有什么影响呢? 答:当输出电流比较大时,由于过孔的电阻会使得输出电压的纹波增加。 如果将CIN和CBYPASS都放置在底层,会有什么影响? 答:CIN和CBYPASS的过孔寄生电感会使输出电压噪声显著增加。在布局时不要这么做! 说完电容的布局,接下来说说D1的布局。下图的D1布局是很好的。 而下面这种布局就不太好了 为啥呢? D1与DC-DC的连线越长,走线的寄生电感越大,走线一定要短而粗。IC至D1,D1至地的走线都太长,寄生电感增加,输出电压的尖峰噪声会变的更大。 2、电感的放置 1、电感要靠近IC放置,但是不要太靠近输入电容CIN、CBYPASS 2、在散热和载流满足要求的条件下 不要增加电感的出线线宽 不要增加电感的出线线宽 不要增加电感的出线线宽 一定要来张图片才形象,不要像下图这样布线 3、电感下方的GND铜皮要挖空;不要像下图这样布线 4、避免电感下方的两块铜皮过近,寄生电容会直接将开关节点出的噪声直接引入至输出,不要像下图这样布线 最后,来张推荐的的布线图 3、输出电容的放置 输出电容CO尽量靠近电感,但是不要太靠近CIN和CBYPASS,建议CIN与CO相距1-2cm 4、反馈网络布线 最最最重要的部分!! 反馈网络布线是最需要注意的,如果这根线上加载了噪声,将会直接体现在输出电压上。 (1)电阻分压网络连接至FB的走线一定要走短线;且用parallel的方式走线,如图 (2)从output取电压时一定要从CO后取电压 (3)在远离电感和二极管开关节点的地方出线。不要在电感器和二极管正下方布线。(左图布线更优) ps 感谢m0_4646863网友提出之前文章中的错误。 5、总结 1、输入电容CIN和CBYPASS要和二极管D1和DC-DC在同一表面,输入电容尽量靠近DC-DC放置; 2、电感尽可能靠近IC引脚放置,在载流满足输出电流的要求下,不要加粗电感出线(与pin保持一样粗细即可); 3、输出电容靠近电感放置; 4、反馈网络取电压时,从输出电容后侧取电压,且走线远离电感和二极管。 如果大家还有什么想法,评论区见:) 欢迎转载,转载注明出处!

vs code c#常用拓展

拓展说明C# for Visual Studio Code (powered by OmniSharp)c#编辑支持,包括语法高亮、智能感知、Go to Definition、查找所有引用,对. net Core (CoreCLR)的调试支持以及在Windows, macOS和Linux中对的json和csproj项目支持C# XML Documentation Comments(k–kato.docomment)为Visual Studio代码生成XML文档注释。C# Extensions (jchannon.csharpextensions)添加c#类,添加c#接口,从构造函数中添加字段和属性,从属性添加构造函数REST Client(humao.rest-client)允许发送HTTP请求并直接在Visual Studio代码中查看响应ILSpy .NET Decompiler (icsharpcode.ilspy-vscode)反编译MSIL程序集—支持dotnet框架、dotnet core和dotnet standardSharpPad(jmazouri.sharppad)SharpPad是Visual Studio Code的一个扩展,可以让你轻松地检查代码的结果。它的工作原理类似于独立的工具,如LinqPad和RoslynPad。