layui javascript 导航菜单设置为href跳转后保持选中状态

问题: 通过layui的导航栏可以完成如下的布局: <ul class="layui-nav layui-nav-tree" lay-filter="test"> <li class="layui-nav-item"> <a class="" href="javascript:;">A</a> <dl class="layui-nav-child"> <dd><a href="../">1</a></dd> <dd><a href="../clean_table_manage">2</a></dd> <dd><a href="../index_table_manage">3</a></dd> <dd><a href="../black_manage">4</a></dd> </dl> </li> <li class="layui-nav-item"> <a href="javascript:;">B</a> <dl class="layui-nav-child"> <dd><a href="../etl">1</a></dd> </dl> <dl class="layui-nav-child"> <dd><a href="../etl_compute_manage">2</a></dd> </dl> </li> <li class="layui-nav-item"> <a href="javascript:;">C</a> <dl class="layui-nav-child"> <dd><a href="../index_manage">1</a></dd> </dl> <dl class="layui-nav-child"> <dd><a href="../index_compute_list_manage">2</a></dd> </dl> <dl class="layui-nav-child"> <dd><a href="../index_compute_manage">3</a></dd> </dl> </li> <li class="layui-nav-item"> <a href="javascript:;">D</a> <dl class="layui-nav-child"> <dd><a href="../model_manage">1</a></dd> </dl> </li> <li class="

ERP系统配置注意事项

1.idea配置JDK,JDK统一用1.8 2.添加web模块 3.web指定为WebContent模块,配置文件指定为旗下WEB-INFO的xml 4.指定lib文件 注:lib1指定为WebContent\WEB-INF\lib下面所有jar包 5.Facets 6.部署 7.选择SDK 8.java complier 9.java encoding 10.tomcat部署 11.修改 注:以上四个文件只修改mysql和redis的url和密码,改成本地或者远程均可 12 idea配置SVN 找到share control即可,最后输入url和svn用户密码 

7系列FPGA数据手册:概述------中文翻译版

7系列FPGA数据手册:概述------中文翻译版 总体介绍7系列FPGA功能摘要Spartan-7系列FPGA功能摘要Artix-7系列FPGA功能摘要Kintex-7系列FPGA功能摘要Virtex-7系列FPGA功能摘要堆叠式硅互联(SSI)技术CLBs, Slices, and LUTs时钟管理混合模式时钟管理器与锁相环MMCM附加的可编程功能时钟分配全局时钟线区域时钟I/O时钟 Block RAM同步操作可编程数据宽度错误检测和纠正FIFO控制器 Digital Signal Processing---DSP slice输入/输出I/O电气特性三态数控阻抗和低功耗I/O特性I/O逻辑输入输出延迟ISERDES和OSERDES 低功耗G比特收发器发送器接收器带外信号传输 用于PCI Express设计的集成接口模块配置加密、回读和部分重配置XADC(数模转换器)7 Series FPGA Ordering Information 总体介绍 Xilinx®7系列FPGA包括四个系列(Spartan®,Artix®-7,Kintex®-7,Virtex®-7),能够满足系统全部范围的要求,价格低廉,尺寸小,对成本敏感,超高端的连接带宽,逻辑容量及信号处理能力的大量应用,满足了系统对高性能的要求。7系列的FPGA包括: Spartan®-7系列:价格低廉,供电电源低,I/O性能高。可提供低成本,非常小的外形尺寸封装,以实现最小的PCB占地面积。Artix®-7系列:针对需要串行收发器以及高DSP和逻辑吞吐量的低功耗应用进行了优化。为高吞吐量、成本敏感型应用提供最低的总物料成本。Kintex®-7系列:针对最佳性价比进行了优化,与上一代产品相比提高了两倍,支持新一代的FPGA。Virtex®-7系列:针对最高系统性能和容量进行了优化,系统性能提高了两倍。通过硅堆叠技术(SSI)实现的最高性能器件。 7系列FPGA采用最先进的高性能、低功耗(HPL)、28nm、高k金属栅(HKMG)工艺技术,I/O带宽为2.9TB/s,逻辑单元容量为200万个,DSP定点运算性能为5.3TMAC/s,[其中Virtex-7系列的DSP处理能力为5,335 GMAC/s(GMAC/s:每秒10亿次乘加运算)],实现了无与伦比的性能提升,同时功耗比前一代器件低50%,为ASSP(Application Specific Standard Parts 专用标准产品)和ASIC提供了完全可编程的替代方案。 7系列FPGA功能摘要 先进的高性能FPGA逻辑,基于可配置为分布式内存的实6输入查找表(LUT)技术;36KB双端口块RAM 内置FIFO逻辑,用于片上数据缓冲;高性能SelectIOTM技术,支持高达1866Mb/s的DDR3接口;内置多千兆收发器实现高速串行连接,最高可达600Mb/s。针对6.6Gb/s至28.05Gb/s的速率,提供特殊的低功耗模式,并对芯片间的接口做了优化。用户可配置模拟接口(XADC),集成12位1Msps带片上热传感器和电源传感器的模数转换器;带有25×18乘法器、48位累加器和前值加法器的DSP片可实现高性能滤波,包括优化的对称系数滤波;强大的时钟管理模块(CMT),结合锁相环(PLL)和混合模式时钟管理器(MMCM),可实现高精度和低抖动;利用MicroBlazeTM处理器快速部署嵌入式处理器;适用于PCI Express®(PCIe)的集成块,最多可支持×8 Gen3端点和根端口设计;多种配置选项,包括支持商用存储器、带HMAV/SHA-256(加密算法)身份验证的256位AES(Advanced Encryption Standard高级加密标准)加密,内置SEU检测和纠正。低成本、线耦合、裸芯倒片封装和高信号完整性倒片封装,可在同一封装系列的产品之间轻松移植。所有封装均提供无铅封装和精选含铅封装选项;专为高性能和低功耗而设计,具有28nm、HKMG、HPL工艺、1.0V核心电压工艺技术和0.9V电压选项,可实现更低功耗。 表1:7系列FPGA比较 注释: 以分布式RAM形式提供额外内存。峰值DSP性能是基于对称滤波器实现的。MicroBlaze CPU的峰值性能是基于微控制器预置来实现的。 Spartan-7系列FPGA功能摘要 表2:按型号划分的Spartan-7 FPGA功能摘要 注释: 1.每个7系列FPGA包含4个LUT和8个触发器;只有某些片可以将它们的LUT用作分布式RAM或SRL(移位寄存器)。 2.每个DSP片包括一个前置加法器、一个25×18乘法器、一个加法器和一个累加器。 3.Block RAM的大小基本上为36KB;每个BRAM也可以用作两个独立的18KB Blocks。 4.每一个CMT包含一个MMCM和一个PLL。 5.不包括配置库0。 表3 Spartan-7 FPGA封装组合及最大I/O数 注释: 1.HR=高范围I/O,支持1.2V到3.3V的I/O电压。 Artix-7系列FPGA功能摘要 表四:按型号划分的Artix-7 FPGA功能摘要 注释: 每个7系列FPGA包含4个LUT和8个触发器;只有某些片可以将它们的LUT用作分布式RAM或SRL(移位寄存器)。每个DSP片包括一个前置加法器、一个25×18乘法器、一个加法器和一个累加器。Block RAM的大小基本上为36KB;每个BRAM也可以用作两个独立的18KB Blocks。每一个CMT包含一个MMCM和一个PLL。Artix-7系列FPGA接口块用作PCIe时,最多支持x4 Gen 2。不包括配置库0。此数字不包括GTP收发器。 表五:Artix-7 FPGA封装组合及最大I/O数 1.所有列出的封装均为无铅封装(SBG、FBG、FFG、除了15)。一些封装在有铅选项中可用。 2.FGG484和FBG484引脚兼容。 3.FGG676和FBG676引脚兼容。 4.CP、CS、FT、FG封装的GTP收发器支持最高6.25Gb/s的数据速率。

chemdraw怎么画拐弯的箭头_柯赛分享:地下停车场标识应该怎么标注电梯口的位置?...

这几天我们一直在谈关于停车场标识的一些问题,从场外说到场内,一系列的标识牌把司机引导到画好格子的停车位上面,当停车场属于地下停车场的时候,一般情况下司机停好车以后是需要步行去找电梯的,不然怎么进入建筑物呢。在这个过程中,就涉及到了一个重要类型的标识,电梯相关的引导标识,这种标识需要传递给人们的信息很明确,电梯在哪里,以当前位置为起点应该怎么走才能到达电梯口所在位置,带着这个问题,我们还是以柯赛的实际工程项目为基础来分析,下面分别对3种标注方法进行展开。 1,通过吊牌标注,这种标注法在实际生活中是使用比较广泛的,我们在大型的地下停车场停好车以后,步行到公共过道上面基本上稍微抬头就能够看到各种带箭头的标识牌,再具体看箭头旁边的图案,很容易找到电梯的标志,只要人们顺着电梯和箭头指引的方向走,一般都可以顺利找到电梯口的; 2,通过立柱张贴标注,现代化大型建筑物的框架结构必然有大量的立柱,在地下停车场,这些立柱都是直接裸露着的,除了张贴相关的标识牌或者制作一些彩绘图案,也没有别的更好的用途,所以一部分的停车场会把这些立柱利用起来,整齐划一的张贴一些导向标识,其中就包含了电梯位置的标识和路径走向箭头,对运营商来说,通过立柱来标识电梯口的位置不但可以美化停车场的环境,还可以为人们提供导向导视服务,可谓一举两得; 3,通过地面划线标注,在前面的文章里面我们也提到了停车场的地面标识部分,在一些定位相对比较高端的场所,停车场基本是做了地坪漆处理的,看上去美观大方,车辆行驶不打滑,也没有像普通水泥地面那么大的灰尘,这种地坪漆表面可以发挥的空间也更大,通常情况下划出来的线条效果远远超过普通水泥地面,电梯口相关标识完全可以直接标注在公共过道上,具体以图案还是线条的方式来展示,就要看设计师的构思和场地的实际需求了; 不管是商业场所还是住宅小区,对大多数地下停车场来说,人们停好车以后必然要找电梯口,所以电梯口的标注在整个停车场标识系统中就不能马虎,运营商通常应该根据实际情况对电梯口的相关信息进行准确的标注,方便人们安全快速方便地找到电梯口。在标注电梯口位置的时候,也可以融入一些与环境互相协调的元素,让停车场这个功能单一的场所变得更加人性化更加舒服,作为进入相关场所的一个中转站,地下停车场标识系统如果能够给人们一个良好的第一印象,后面的相关工作开展起来会轻松不少。 本文由柯赛标识原创,首发柯赛官网,转载请保留版权,违者必究。

windows10+Ubuntu双系统卸载旧Ubuntu并重装Ubuntu(绝对安全)

一、删除Ubuntu开机导引 在windows系统下,以管理员的权限打开命令行,依次输入一下命令 diskpart # 进入系统的diskpart组件 list disk # 查看系统所有的磁盘,并找到Ubuntu系统所安装的磁盘 select disk $ # $是Ubuntu所安装的磁盘 list partition # 找到类型为Ubuntu系统的分区 select partition $ # $为类型为Ubuntu系统的分区 assign letter=p # 将分区分配到磁盘P中,分配到哪个磁盘其实随意,只要不和现有的磁盘冲突即可 exit # 退出diskpat p: # 进入P盘 cd efi # 进入引导文件夹 dir # 查看所有引导 rd /s ubuntu # 删除Ubuntu引导,这个时候需要谨慎操作,不要误删其他系统的引导 diskpart # 再次进入到diskpart select disk $ # $是之前选择的盘符 select partition $ # $是之前选择的分区 remove letter=p # 删除P盘 二、删除旧Ubuntu占用的磁盘空间 谨记!!该步骤一定要在完成步骤一之后再进行。而且务必确保删除的是Ubuntu占用的磁盘,一定要与windows磁盘空间区分开。 1、删除非"EFI系统分区" 比较容易,直接鼠标右击相应分区,然后选择“删除卷”即可删除。 2、删除“EFI系统分区” 第一种方法(本人亲测,绝对安全):在windows系统下,以管理员的权限打开命令行,依次输入一下命令 diskpart # 进入系统的diskpart组件 list disk # 查看系统所有的磁盘,并找到Ubuntu系统所安装的磁盘 select disk $ # $是Ubuntu所安装的磁盘 list partition # 找到类型为Ubuntu系统的分区 select partition $ # $为类型为Ubuntu系统EFI分区 SET ID=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 # 重置分区ID 第二种方法:跟第一种方法类似,只是把方法一的最后一条指令换成如下指令(此法本人没有亲测过)

sql中foreach标签的使用

sql中foreach标签的使用 (学习笔记,欢迎指导!) foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代。 解析: collection :collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合,我在上面传的参数为数组,所以值为array item : 表示在迭代过程中每一个元素的别名 index :表示在迭代过程中每次迭代到的位置(下标) open :前缀 close :后缀 separator :分隔符,表示迭代时每个元素之间以什么分隔 示例如下: <insert id="insertList"> INSERT INTO "BIZ_PLATFORM_USER"."DEVICE_OPERATION_TEAM"( <include refid="BaseSql"/> ) VALUES <foreach collection="list" item="item" index="index" separator=","> ( #{item.name,jdbcType=VARCHAR}, #{item.md5,jdbcType=VARCHAR}, #{item.post,jdbcType=VARCHAR}, #{item.brief,jdbcType=VARCHAR}, #{item.deviceUuid,jdbcType=VARCHAR}, #{item.createBy,jdbcType=VARCHAR}, #{item.updateBy,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.updateTime,jdbcType=TIMESTAMP} ) </foreach> </insert> 或: <select id="selectByFolderId" parameterType="list" resultMap="docManagerMap"> select d.* from doc_manager d left join folder_doc fd on fd.doc_id = d.id where fd.folder_id in <foreach collection="list" item="folderId" index="

conda安装yolov5

conda安装yolov5 # 创建conda环境 $ conda create -n yolov5 python=3.7 $ source activate yolov5 $ git clone https://github.com/ultralytics/yolov5 $ cd yolov5 pip install -i https://pypi.doubanio.com/simple --trusted-host pypi.doubanio.com -r requirements.txt # 验证是否安装成功 $ python detect.py

uniapp小程序端点击预览图片并且左右手势切换图

前言 此篇文章主要讲述如何在uniapp端通过点击图片进入预览,手指外扩放大缩小图,左右手势切换下一张图。 1.点击图片进入预览 2.手指外扩放大缩小图 3.左右手势切换下一张图 4.长按保存图片到相册 5.uni.previewImage预览图片,uni.saveImageToPhotosAlbum保存图片 核心区域: <view class="uni-list" v-for="(item, index) in displayList" :index="index" :key="index"> <image :src="item.allimage" @click="TanPreviewImage(index)" mode="scaleToFill"></image> </view> data() { return { phones: [] }; }, //点击图片进入函数,传入当前列表的索引index TanPreviewImage(indexa) { uni.previewImage({ // 预览图片 图片路径必须是一个数组 => ["http://21111889:8970/6_1597822634094.png"] current: indexa,//这里是判断到点击列表上的某个图片,就读取索引的图片 urls: this.phones,//这是整个内容的图片数组,放一个数组里,就可以左右切换了 longPressActions: { //长按保存图片到相册 itemList: ['保存图片'], success: (data) => { console.log(data); uni.saveImageToPhotosAlbum({ //保存图片到相册 filePath: payUrl, success: function() { uni.showToast({ icon: 'success', title: '保存成功' }) }, fail: (err) => { uni.

word页眉前后不一致怎么设置_Word排版到天亮?我有特别的使用技巧!

Word,一款让人又爱又恨的反人类办公软件。 “正是在下!(歪嘴笑)” 设想一下,deadline在即,排版却怎么也排不齐,页眉改来改去没有改好,结果页码又乱了…… 小白平时使用word的时候,也经常遇到各种奇葩问题,每次求救度娘之后都会(骂一顿然后)顺手记下来,渐渐地也攒了不少。今天的这篇文章就分享一些word常见的问题与技巧,希望能对大家有所帮助。兴许哪条小技巧就能让你相见恨晚呢 1 删除/修改某几页页眉或页码 在需要删除页眉的页面插入分节符(区别于分页符); 分节符:页面布局-分隔符 双击下一页的页眉,取消“链接到前一条页眉” 这套操作将前后文分成两个独立小节,于是就可以对页眉页码分别进行删除和修改了。妈妈再也不用担心我封面上有页码了! 2 页眉横线如何删除 有时候删除了页眉之后,还会遇到页眉横线没删掉的尴尬情况 方法1:点击“清除所有格式” 方法2:适用于需要保留页眉文字内容的情况 双击页眉进入编辑界面后,找到“页面边框”选项 (不同版本的word,“页面边框”选项位置还不一样,属实反人类) 点击“边框”,设置为“无”,应用于段落,点击确定,搞定。 3 如何删除空白页 别笑,这是个很严肃的问题。退格键制裁不了的空白页是真实存在的。 就像这样 顽固空白页往往是分节符或表格的锅,我们对症下药: 情况1:简单粗暴,在空白页按下“Delete”键删除分节符。 情况2:有时delete键也删除不了空白页,可能是因为上一页的表格太大,将段落标记“挤”到了空白页。如果表格不方便挪动或者缩放的话,可以考虑如下做法:右键空白页-段落,将行距调为1磅。 4 有关表格的一些技巧 1. 表格的拆分与合并 拆分:行尾使用组合键“Ctrl+Shift+回车” 合(反)并(悔):Delete删除表格间的回车。 2. 表格竖线对齐 单击表格左上角十字(进行全选)- 光标置于竖线处双击。 5 其它使用细节 1. 勤点保存!勤点保存!勤点保存!重要的事情说三遍。小白就曾见过师兄因为忘记保存而白忙活一下午的悲惨案例。与其将希望寄托于自动保存,不如时不时地“ctrl+s”一下。 当然,什么剪视频啦、建模啦同理。另外及时备份也是个好习惯 2. 码字前设置模板,后续排版的时候能省去许多工作量 3. 我敢打赌,我绝对不是最后一个知道双击格式刷能够重复使用的人 4. Word也可以像QQ截屏一样框选:按住alt+鼠标左键并拖动 5. 善用导航窗格,有效节约鼠标滚轮寿命 END

使用HybridSN进行高光谱图像分类

文章目录 一、前言二、高光谱图像三、HybridSN模型四、注意力机制五、开始实验5.1 下载数据集5.2 PCA降维5.3 训练模型5.4 可视化结果5.5 分析结论 六、思考七、结语 一、前言 高光谱图像(Hyperspectral image,以下简称HSI)分类广泛应用于遥感图像的分析,随着深度学习和神经网络的兴起,越来越多的人使用二维CNN对HSI进行分类,而HSI分类性能却高度依赖于空间和光谱信息,由于计算复杂度增加,很少有人将三维CNN应用于HSI分类中。这篇 Exploring 3-D–2-D CNN Feature Hierarchy for Hyperspectral Image Classification构建一种混合网络(HybridSN)解决了HSI分类所遇到的问题,它首先用三维CNN提取空间-光谱的特征,然后在三维CNN基础上进一步使用二维CNN学习更多抽象层次的空间特征,这与单独使用三维CNN相比,混合的CNN模型既降低了复杂性,也提升了性能。经实验证明,使用HybridSN进行HSI分类,能够获得非常不错的效果。 二、高光谱图像 在进行高光谱图像分类之前,我认为有必要了解什么是高光谱图像。从计算机的角度来说,高光谱图像(Hyperspectral image)就是由多通道(几十甚至几百个)的数组构成的图像,每个像素点都有很多的数来描述,单个通道上的“灰度值”反映了被拍摄对象对于某一波段的光的反射情况。 我们知道,常见的RGB彩色图像只有三个通道,而高光谱图像有几十甚至几百个通道,所以高光谱图像包含包含更多的目标信息,利用高光谱图像进行目标的分类识别也必然比采用RGB图像具有更高的准确度。如下图所示,利用高光谱相机可以拍摄出由不同波长组成的空间立方体图像(即高光谱图像),用一个光谱曲线将其显示出来,横轴表示波长,纵轴表示反射系数,由于同一物体对不同波长的光反射因子不一样,因此利用高光谱图像更能反映出不同物体的差异性。 其实高光谱成像技术在很早以前就已经被广泛应用了,天上的卫星拍摄到的就是高光谱图像,通过分析每个像素点的光谱曲线,可以把不同地面目标对应的像素点分类,从而在高光谱图像中把地面、建筑物、草坪、江河等等区分开。 三、HybridSN模型 对于HSI分类问题,我们在提取空间信息的同时,也希望能获取到不同波长的光谱信息,而二维CNN是无法处理光谱信息的,也就无法提取到更具有判别性的特征图。幸运的是,三维CNN能够同时提取光谱和空间的特征,但代价是增加计算复杂度。为了充分发挥二维和三维CNN的优势,Swalpa Kumar Roy等人提出了HSI分类模型HybridSN,其模型图如下图所示,它由三个三维卷积、一个二维卷积和三个全连接层组成。 在HybridSN模型中,三维卷积核的尺寸分别为8×3×3×7×1(即图中 K 1 1 K_1^1 K11​=3 , K 2 1 K_2^1 K21​=3 , K 3 1 K_3^1 K31​=7)、16×3×3×5×8(即图中 K 1 2 K_1^2 K12​=3 , K 2 2 K_2^2 K22​=3 , K 3 2 K_3^2 K32​=5)和32×3×3×3×16(即图中 K 1 3 K_1^3 K13​=3 , K 2 3 K_2^3 K23​=3 , K 3 3 K_3^3 K33​=3),分别位于第一、第二和第三卷积层中。其中,16×3×3×5×8表示输入特征图的个数为8,输出特征图个数为16,三维卷积核大小为3x3x5,可理解为有两个空间维度和一个光谱维度。二维卷积在flatten之前被应用一次,它能有效的判别空间信息,也不会大量损失光谱信息,这是对HSI数据非常重要。

差分阻抗为多少_谈谈差分信号

更多经验分享,关注 加油射频工程师 习惯了单端信号,对差分信号的使用还是会有点发怵。所以有的器件厂商,虽然输入接口是差分,但是会注明一下,单端输入时的具体接法。 差分信号的抗扰以及EMI特性 但其实,由于差分信号是对差模信号响应,对共模信号不敏感,所以差分信号的抗干扰特性是优于单端信号的。 即差分信号是对两根线之间的差值响应,而不是对线与地之间的差值响应。比如说,有一干扰信号,耦合到一对差分线上,我们可以近似认为,耦合到两根线上的干扰是等幅同相的,所以差分信号对它不响应。 同时,差分信号上两根线上的电流是相反的,所以一定程度上,两者在两根导体外产生的磁场是有相消的情况存在的。而电场又紧密的耦合在一起,所以,差分信号对外产生的辐射干扰也是小于单端信号的。 射频差分信号需要地平面么? 差分信号两线之间互为参考,那下面还需不需要地平面呢(2)(3)?这个问题稍微有点复杂。 如果结构中,有两根耦合微带线以及参考平面的话,如上图所示,那在其结构中存在两种模式: (1) 奇模模式 给两根线的驱动电压等幅反相,则会激发出奇模模式。 (2) 偶模模式 给两根线的驱动电压等幅同相,则会激发出偶模模式。 从上图可以发现,不管是偶模模式还是奇模模式,都存在着微带线与参考平面的耦合。 虽然在奇模模式下,微带线之间会有一定程度上的互为参考面,但是还是有部分回流存在于参考地平面上。 如果地平面被分割或被移除,肯定会造成模式的破坏。 如果在实际设计时,需尽量保持差分线下地平面的完整。如果真的没办法,不能保证地平面完整的话,可以参考文献【3】,合理设计差分线之间的间距,选择介质材料的厚度,以减小地平面对微带差分线的阻抗。 差分信号为什么会有偶模模式呢? 理想的差分信号,共模就是DC,这个时候是不存在偶模模式的;只存在奇模模式。 但是如果差分信号的相位之间不是严格相差180度,而是有几度的偏移,这在实际应用中经常发生。这个时候,就产生偶模模式了。 我们可以用公式推导一下。 如果假设频率为50Hz,用matlab画出上述的曲线,则可以看到共模信号已经产生,只不过幅度比较小。 差分滤波器等怎么设计 如果需要在差分回路上放置滤波器,应该怎么设计呢? 其实很简单,比如你要设计输入输出阻抗为200ohm的差分滤波器【5】,就先设计输入输出阻抗为100ohm的单端滤波器,然后将两个这样的滤波器的接地端连接在一起,将原来并联支路上可合并的合在一起,即可得到输入输出差分阻抗为200ohm的滤波器。 差分线绘制时,要注意哪些事项?【6】 (1) 差分线之间,首要任务是保持等长。 因为差分接收器主要通过检测正负信号的交叉点位置,所以,如果不等长,交叉点位置就会改变。 (2) 尽量保证差分线宽度、间距不变,因为这两个参数改变的话,会引起差分线特征阻抗的改变,引起反射。 (3) 补等长的时候,哪边有不等长不哪边。 (4) 和单端信号一样,避免使用90度角。 (5) 差分线之间布局尽量对称,特别在串联电阻或电容处。 (6) 在差分线上不要有stub. 参考文献: (1)https://wk.baidu.com/view/b482383edd3383c4ba4cd274?pcf=2 (2) https://wk.baidu.com/view/b1e5115b312b3169a451a432?pcf=2 (3)the impact of a nonideal return path on differential signal integrity (4)Eric Bogatin,Not all common currents are bad (5)Design of Differential Filters for High-Speed Signal Chains,TI 应用文档

STM32实现LED闪烁——基于HAL库

一、利用CubeMX生成点亮LED的代码 具体操作参考下面链接: https://blog.csdn.net/qq_43279579/article/details/112213196 二、实现闪烁过程 1.闪烁原理 通过控制LED上管脚输出高低电平,来实现LED闪烁。 通过电路原理图,可以看出当LED的管脚输出为低电平时,LED处于一个连通的状态,因此,LED被点亮,而当LED的管脚输出高电平时,LED两边不存在电势差,就不会有电流流过,即LED被熄灭。 2.闪烁实现所用到的函数 由于使用HAL库进行开发,它提供了一些相关函数进行使用。(此处只说明使用的函数) ①延时函数(HAL_Delay) 函数原型: void HAL_Delay (__IO uint32_t Delay) 参数说明:Delay表示所要延时的时间大小,单位是毫秒 ②写管脚函数(HAL_GPIO_WritePin) 函数原型:void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) 参数说明: GPIOx: 管脚组(x的取值为A~G) GPIO_Pin: 管脚编号(x的取值为0~15) PinState: 管脚的状态(取值为GPIO_BIT_RESET表示0, GPIO_BIT_SET表示1) 3.具体实现主要代码 while (1) { //写循环执行的代码 //第一步LED 亮 PC0 设置为0 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET); //第二步 延时 HAL_Delay(1000); //第三步LED 灭 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET); //第四步 延时 HAL_Delay(1000); } 4.编译下载 实现效果 核心板上的LED实现了循环闪烁。 小结 本过程主要是理解到实现闪烁的原理,如何使用HAL库提供的函数进行编写程序。对于不同板子,原理基本上是一样的,主要是学会如何看懂原理图和查看HAL库开发手册。

MATLAB函数 zp2tf详解

zp2tf: 将零极点增益滤波器参数转换为传递函数的形式 语法格式:[b,a] = zp2tf(z,p,k) 例如: [b,a] = zp2tf(z,p,k)将单输入/多输出(SIMO)系统的分解式传递函数表示 : 转换为多项式传递函数表示:

高光谱图像分类--HybridSN: Exploring 3-D–2-DCNN Feature Hierarchy for Hyperspectral Image Classification

《HybridSN: Exploring 3-D–2-DCNN Feature Hierarchy for Hyperspectral Image Classification》 S. K. Roy, G. Krishna, S. R. Dubey, B. B. Chaudhuri HybridSN: Exploring 3-D–2-D CNN Feature Hierarchy for Hyperspectral Image Classification, IEEE GRSL 2020 这篇论文构建了一个 混合网络 (3D卷积+2D卷积)解决高光谱图像分类问题。 Q:3D卷积和2D卷积的区别? 首先两者都是多通道卷积,而3D卷积比2D卷积多一个深度信息,本质上是一样的,因为2D卷积可以默认深度信息为1。 2D卷积 shape:(batch_size, channel, height, weight) 3D卷积shape:(batch_size, channel, depth, height, weight) 模型网络结构 三维卷积部分: conv1:(1, 30, 25, 25), 8个 7x3x3 的卷积核 ==>(8, 24, 23, 23) conv2:(8, 24, 23, 23), 16个 5x3x3 的卷积核 ==>(16, 20, 21, 21)

Spring Cloud Alibaba-在nacos环境下整合dubbo

echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。 我们之前整合了fegin来调用相对应的服务,本章我们来整合dubbo。那有了fegin为什么还要dubbo?这是本章的核心,本章不仅会讲怎么整合使用dubbo,同时也会讲dubbo和fegin的区别 fegin和dubbo怎么选 首先,不谈技术的区别和具体作用,fegin和dubbo最大的区别就是:dubbo是alibaba的亲儿子 为什么要整合dubbo dubbo按理来说,自己就是一个很好的微服务治理框架。既然SpringCloudAlibaba也是一套微服务治理方案,那这个时候使用dubbo是不是显得有很多的重复?其实不然。在Spring Cloud Alibaba的整合之下,Dubbo用户既可以享受到原本RPC带来性能优势,又可以更好的享受Spring Cloud的各种福利;而对于Spring Cloud用户来说,在服务治理层面,又对了一个不错的可选项。可以说这块的整合是真正的让这两大用户群体得到了很好的融合,起到了互相成就的作用。 整合dubbo,入门案例 利用Dubbo来实现服务提供方与服务消费方,这里我们就需要创建对应的两个项目,一个是服务提供者,一个是服务消费者。我们先来创建一个服务提供者。 创建一个简单的SpringBoot服务,这里SpringBoot的版本我选择的:2.2.11.RELEASE 引入整合dubbo需要的依赖 1、spring-cloud-starter-dubbo2、spring-cloud-starter-alibaba-nacos-discovery 我的server项目pom文件如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.11.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.echo</groupId> <artifactId>dubbo-server</artifactId> <version>0.0.1-SNAPSHOT</version> <name>dubbo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.

变压器符号_电气图形符号你认识几个?

如果你想进入电气成套行业,基础一线或者是设计岗之类的,CAD图纸会看吗?基础元器件图形符号认识吗?今天我来教大家认识下这些图形符号。 1、断路器 这是一个1路的16A的微型开关 我们平常口头上叫开关,其实也就是断路器,分为微型断路器和塑壳断路器,都是这个符号表示。 2、隔离开关 这是一个4路的电流32A的隔离开关 隔离开关基本也都是这个符号表示,有的图纸中刀开关也用此符号表示。 3、负荷开关 3P 电流100A 的负荷开关 4、接触器 1P 9A的接触器 5、热继电器 电流2.5~4 的热继电器 6、电流互感器 电流150A 的电流互感器 7、变压器 8、熔断器 10A的熔断器 9、变频器 参数3.7kw 的变频器 10、浪涌保护器 图1 图2 图1和图2都代表是浪涌保护器,需要注意参数,有TI和T2级别在之分。 11、漏电开关 图1 图2 塑壳和微断开关的图形符号上,加上一个圆圈,表示带漏电。图1和图2 表示方法都可以。 12、控制与保护开关 13、双电源开关 4p 电流100A的双电源开关 14、后备保护器 15、电度表 16、电流表 代表3个电流表 17、变压器 电气成套涉及到的元器件大部分都在这里了。 如有不对的地方,欢迎指正。

图片中的放大镜怎么弄_2种方法,教你如何在PPT中局部放大图片

我们常看到在一些细节显示的图片上,会使用局部放大的效果来看展示,也可以说是放大镜效果。 那么这种效果是怎么做出来的呢? 今天小编解锁了2种方法来制作这种图片。 一种,是使用合并形状中的“相交功能”; 一种,是使用了裁剪功能; 其实不管哪一种,最后呈现出来的效果都是一样的。 一,用“相交功能”制作局部放大效果 1,先在PPT中插入一张图片; 2,将这张图片复制一份,且按住“shift键”等比放大;且选中放大的这张图片,选择“格式”——“校正”,将亮度和对比度都调整为20%; 3,在这张PPT中,插入一个形状,即最后局部放大的形状,如果想局部放大为圆形,那么,选择插入“椭圆”这个形状,按住“shift键”画出来的即为圆形; 4,选中刚画好的“圆形”和“放大的这张图片”,选择“格式”——“相交”,即可得到局部放大的效果。 在这个效果上面插入一个“放大镜”,就是我们看到的放大镜局部放大效果了。 二,使用“裁剪功能”制作局部放大效果 1,先在PPT中插入一张图片; 2,将这张图片复制一份,且按住“shift键”等比放大;这两步与上面第一种方法制作的前两部相同; 3,紧接着,选中被放大的这张图片,选择“格式”——“裁剪”,裁剪出我们需要放大的那一部分; 4,此时,我们已经完成局部放大,不过么看着还不太明显,为了让局部放大明显一些,我们除了选择上面的增加“放大镜”素材之外,还可选择图片,点击“格式”——“图片效果”选择一个你想要的效果就可以了。 以上就是在PPT制作局部放大功能的两种做法,你也可以试试!

由空间三对点求解两个坐标系之间的变换矩阵

三维刚体变换模型(即旋转/平移矩阵,RT矩阵)的估计方法 原理简单阐述: 只要算出变换矩阵,就可以算出A坐标系的一个点P在坐标系B里的对应点坐标,即 T为3x3的转换矩阵, t 为3x1的位移变换向量,这里点坐标均为3x1的列向量(非齐次形式,齐次形式下为4x1列向量,多出的一个元素值补1而已)。理论上只要给定至少3对点,就能计算出 T 和 t 。自然的,点对越多,计算出来的转换就越精确。详细的原理请参考《Estimating 3-D Rigid Body Transformations: A Comparison of Four Major Algorithms》,它使用SVD方法计算 T 和 t 。 下面就话不多说,上代码。亲写亲测有效 cv::Mat Get3DR_TransMatrix(const std::vector<cv::Point3f>& srcPoints, const std::vector<cv::Point3f>& dstPoints) { double srcSumX = 0.0f; double srcSumY = 0.0f; double srcSumZ = 0.0f; double dstSumX = 0.0f; double dstSumY = 0.0f; double dstSumZ = 0.0f; //至少三组点 if (srcPoints.size() != dstPoints.size() || srcPoints.size() < 3) { return cv::Mat(); } int pointsNum = srcPoints.

萤石云平台接入_从制造商到平台赋能,萤石如何成为转型范本

百度搜索萤石,可以看到很多有关萤石产品的信息,包括智能家居摄像机、智能锁、智能猫眼等,这也侧面反映了外界对萤石的印象——产品制造商。但,萤石要做的不仅仅是智能硬件提供者。 早在2019年,萤石便调整了企业愿景,由原来的“成为公众信赖的视频产品及云平台提供商”转变为“成为可信赖的安全智能家居产品及物联网平台提供商”。今年3月,萤石官方微信号也正式更名,从“萤石智能生活”改名为“萤石智居物联”。从这一系列举措可以看出,萤石有意识的在转变自己的定位。 5月28日,萤石举办了以“易智居·逸生活”为主题的线上战略暨新品发布会,并在会上发布了EZIoT平台与企业萤石云,两大产品的发布标志着萤石正式从产品制造商走向平台赋能者。 寻根溯源,萤石转变的背后 看似简单的定位变更,背后显示的却是企业自身深厚的积累。 成立于2013年的萤石,最初以民用安防品牌进入人们的的视野,推出了一系列民用安防摄像头,开启了民用智能监控的时代。 虽然在视频技术上拥有深厚的基础,但萤石没有像大多数公司一样依靠原有技术输血,而是专注硬件的自主研发。随后几年,萤石逐渐丰富产品品类、延展产品线,并大力在系统生态方面获得长足发展,品牌定位也从初期类消费品牌、到消费品牌,再转变为现如今平台提供商。 其中最值得一提的是萤石云的研发,这片“云”也成为萤石业务发展的关键。 2019年,萤石首次提出1+4+N的业务架构,即以萤石云为中心,搭载包括智能安防、智能入户、智能控制、智能机器人在内的四大自研硬件,开放接入环境控制、智能影音、智能会议等子系统生态,实现住宅、办公室、商铺、学校、酒店等场所的全屋智能化,构建以安全为核心的智能家居IoT生态。 据悉,截至2019年底,萤石已经积累数千万级用户,每日活跃用户在千万级,每天稳定承接的消息处理量在10亿级,已具备亿级设备运维及金融级信息安全加密能力。 赋能赋利,共启智联物居新篇章 除了自身多年的业务能力沉淀以及强大的技术支持,萤石转变的背后其实也是对市场战略变化的深刻把握。 根据Statista数据显示,2017年世界智能家居市场规模约334亿美元,到2022年有望增至782亿美元。可见,智能家居行业有望迎来更大发展机遇。面对这样的市场环境,萤石提出成为可信赖的安全智能家居产品及物联网平台提供商,无疑顺应了市场趋势。 另一方面,艾瑞数据显示,受益于智能家居场景的率先爆发,而后由于5G商用,低功耗广域物联网的超广覆盖,中国物联网连接量2025年将增至199亿。目前,物联网正处于连接高速增长的阶段,未来数百亿的设备并发联网产生的交互需求、数据分析需求将促使IoT与AI的更深融合。而萤石CMO郭航标在发布会现场提到,“AI技术和IoT技术的发展,加速了商业的智能化和数字化,商业智居的需求将会显著增长。”因而,萤石选择物联网这一领域,意味着更广阔的未来、更宽阔的赛道。 在“1+4+N”的战略牵引下,萤石发布了EZIoT平台与企业萤石云,这是智能家居向空间智能化拓展的必然选择,更多的商业场景智能化需求激增。针对商用场景的智能化需求,萤石开发了丰富的IoT连接组件、SaaS组件、AI服务模块,极大地降低了合作伙伴的开发难度和开发投入,帮助中小企业打造智能化解决方案,快速响应需求落地。以蓝鸥微校为例,依托萤石商业智居SaaS生态平台,集成了云监控、云直播组件,打造了智慧幼教解决方案,该方案提供了视频、管理、互动三位一体的智慧教育新模式,实现了园方和家长间的有效互动。因而,EZIoT平台与企业萤石云的开放不仅能够为开发者提供了稳定的能力开放服务,也给中小商业智能化转型提供了可能。 随着5G商业化落地加速,AI+IoT时代全面开启,萤石平台赋能者的角色无疑会给更多的合作伙伴赋能赋利,形成开放合作的行业生态,从而共同开启智联物居的新篇章。相信随着萤石云生态建设的不断完善,未来萤石将会以开放的心态、过硬的平台实力,丰富的服务积累,走进更宽广的物联网大战场。

keil5怎么放大字体_如何解决Win10屏幕字体缩放模糊?高分屏难道还要忍受毛玻璃?...

新买的电脑为什么字看起来很糊?对于这个问题,下面简单聊下原因和解决办法,希望对有类似问题的朋友有所帮助。 新买的电脑为什么字看起来很糊? 现在新买的电脑,预装的都是Windows10系统,并且屏幕分辨率多为1080P全高清,甚至是2K超清屏。对于很多高分辨率电脑来说,尤其是屏幕比较小的笔记本电脑,如果100%显示字体完全不会存在模糊现象,但会出现图标和字体非常小,严重影响使用,因此一般需要设置放大125%或150%显示,已解决图标和文字太小的问题,但这样一来就容易出现因放大,字体变得模糊的问题。 那么,Win10电脑字体模糊怎么办呢?目前的解决办法主要是通过设置合适的显示比例,尽量使得画面图标、字体又大又清晰来解决。 1、在Win10桌面空白的地方点击鼠标右键,然后点击打开“显示设置”。 2、在Win10显示设置中,可以对缩放和布局、屏幕分辨率进行调整,一般分辨率选择最高,一般1080P即可,无需调节,主要是缩放和布局可以调节下,直到自己满意为止。 默认推荐放大比例为100%、125%、150%、175%,选择放大比例越大,字体和图标就越大,但相应的字体模糊就更为明显,100%虽然最清晰,但图标和字体很小,会严重影响工作效率,一般建议选择125%或150%比较合适。 屏幕缩放显示设置 另外,还可以自定义缩放,比如不少网友发现,将缩放比例自定义为124%,具备适中的图标大小和字体清晰度,体验不错,感兴趣的朋友不妨试试,找个适合自己的缩放比例。

如何下载道客巴巴付费文档_你知道如何能够下载文库的文档吗?

同学们好,我是陆十二 今天和大家分享如何下载网络文库文档,通过以下软件可以做到在大部分文库进行下载。 一、百度文档 0.95 这款软件可以做到百度文库word和excel的原格式下载。 使用方法:打开软件,复制文档链接至输入框内,点击提交,稍等片刻,文档就会下载到同文件夹下download文件夹内。 二、冰点文库 这款软件可以做到百度,豆丁,丁香,畅享网,it68,mbalib,mab.book118,open-open, 金字塔医学,大桔灯文库等文库文档下载,下载后文件格式为PDF。 使用方法:打开文件夹内Fish程序,复制文档链接至输入框内,点击下载,在下载进度完成后,可以在同文件夹下kpdf文件夹内找到了。文件为PDF格式,想要编辑的话需要自行转换。 三、豆丁当当 这款软件与上一款功能大致相同,唯一区别就是这款软件可以下载道客巴巴文档,同时可以去除文档中文库网站水印。 使用方法:打开文件夹内豆丁当当程序,复制文档链接至输入框内,点击下载,在下载进度完成后,可以在同文件夹下pdf文件夹内找到了。文件为PDF格式,想要编辑的话需要自行转换。 陆拾贰 下载链接:https://www.lanzous.com/b015dnilc 密码:g34q 分享可以简化工作与生活的黑科技软件

fcpx怎么合成延时摄影_记第一个延时摄影

一月前脑海中出现一个想法:用手机在固定的地方,每隔一段时间拍摄一张照片,再合成一个延时摄影。看花开花落,瞧云卷云舒。 有了这个念头,就开始想怎么实现,拍照可以用手机(iphone6s);固定,嗯,就用三脚架固定;地方嘛,就是阳台了;每隔一段时间拍照,没找到合适的的App,自己动手写一个;照片合成视频使用final cut pro;整个流程还是很清晰的。 有了上述流程就开干,第一件就是写一个demo实现设定拍照间隔,即多长时间拍一张照片。由于半路出家,swift语言只能说刚刚入门,遇到的第一个难题就是自动拍照后怎么自动存储到相册,默认的效果拍照后会有个按钮让你选择使用这个照片还是重拍,肯定不能去手动选择,必须要自动保存,没解决这个问题,也就没法继续了,网上搜索了好几下,翻阅拍照、photo、image等开发者文档,发现有可用方法,可以自动拍照并保存到相册了,高兴!接下来又遇到一个问题,拍照时没有对焦,拍照界面一打开直接就拍照了,根本就没有对焦,拍出来的照片都是近视眼,这肯定不能看,继续找,没找到自动对焦的属性,想了一个傻方法-拍照时延时一秒,给它时间去对焦,效果还行。再用定时器每隔一段时间执行拍照保存,终于算是实现了需求,没啥艺术细菌,界面比较丑,黄色的图片是桂林万达广场游乐设施,元旦的时候正在倒球球儿,满围栏的球球儿。 https://www.zhihu.com/video/1065361768586563584 实现了手机拍照保存,接下来的就简单了 ,三脚架整起,找一个视角,测试视角就用阳台下的停车场了,夜晚的停车场,车很少,人很多,有散步的,有打球的,有并行聊天的,有坐地沉思的,这些都成了美丽的风景。 测试时设定每5秒拍一张,拍了6百多张,测试的素材够了。 接下来就是合成视频了,我是用的是fcp x。将素材从手机导出,新建项目,把每一张照片时间长度设定为1帧,速率24p,6百多张也就是20多秒,想要时间更短,可以试下更高的速率。 导出后还行,demo完成,接下来计划拍一个24小时的素材,每分钟拍一张,1440张,从星光到日出到日落到星光。 https://www.zhihu.com/video/1065366284916563968

软通动力华为java机考题库_【西安软通】2019全员大练兵基础代码知识案例系列宣传Vol.4...

java编码规范之命名规范要牢记 案例分析 01 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 02 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 03 类名使用UpperCamelCase风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / BO / DTO / VO等。 04 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 05 接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的Javadoc注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。 要点总结 代码千万行,注释第一行 编程不规范,同事两行泪 请持续关注后续案例宣传 往期回顾 Vol.1 Vol.2 Vol.3 软通动力MAG西安 关注解锁更多精彩内容 软通动力重大客户事业群西安地域官方号

C语言strncpy()函数

描述 char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。 声明 下面是 strncpy() 函数的声明。 char *strncpy(char *dest, const char *src, size_t n) 参数 dest -- 指向用于存储复制内容的目标数组。src -- 要复制的字符串。n -- 要从源中复制的字符数。 返回值 该函数返回最终复制的字符串。 实例 下面的实例演示了 strncpy() 函数的用法。 #include <stdio.h> #include <string.h> int main(void){ char dest[20] = "Hello\0Hi"; char src[6] = "World"; strncpy(dest, src,2); printf("将src的字符串赋值到dest:%s\n",dest); return 0; } 打印结果: 代码分析: 1、在设置字符数组长度的时候根据字符数计算,如果字符数的长度大于字符数组的长度则编译不能通过。

keil勾选Use MicroLIB 的作用

MicroLib是一个针对用C编写的基于ARM的嵌入式应用程序的高度优化的库。与包含在ARM编译器工具链中的标准C库相比,MicroLib提供了许多嵌入式系统所需的代码大小的显著优势。 下图对使用标准库和使用微库代码大小进行了对比 MicroLib和标准C库之间的主要区别是: 1、MicroLib是专为深度嵌入式应用程序而设计的。 2、MicroLib经过优化,比使用ARM标准库使用更少的代码和数据内存。 3、MicroLib被设计成在没有操作系统的情况下工作,但是这并不妨碍它与任何操作系统或RTOS一起使用,如Keil RTX。 4、MicroLib不包含文件I/O或宽字符支持。 5、由于MicroLib已经优化到最小化代码大小,一些函数将比ARM编译工具中可用的标准C库例程执行得更慢。 6、MicroLib和ARM标准库都包含在Keil MDK-ARM中。 官方描述:https://www.keil.com/arm/microlib.asp

力扣435.无重叠区间----贪心策略三法(一暴力贪心,一优化验证过程,一另辟蹊径反面思考)

435. 无重叠区间 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1: 输入: [ [1,2], [2,3], [3,4], [1,3] ] 输出: 1 解释: 移除 [1,3] 后,剩下的区间没有重叠。 示例 2: 输入: [ [1,2], [1,2], [1,2] ] 输出: 2 解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。 示例 3: 输入: [ [1,2], [2,3] ] 输出: 0 解释: 你不需要移除任何区间,因为它们已经是无重叠的了。 题解: 对于此题,只要以一种贪心的视角取看待即可。 首先由于给的数组是乱序的,所以不妨先将其排下序再进行计算。 那么是按每个数组的start值大小排序还是按照end值大小排序呢? 首先我们要明白,秉着贪心的原则,我们为了尽可能的去少删,故我们删去的应该是其end值较大的。 因为在以一个区间为基准,找到n个区间重合时时,我们必定要删去n-1个区间,只留下一个区间,而为了使留下的这个区间尽可能的不要再和别的区间“沾上关系”,故选择end值小的留下。 且在经过排序后,我们从第一个元素开始已经是end最小的了,所以只要发现与此元素的区间有重合的就直接删去即可,因为若留下end大的可能不只与该元素区间重合,可能还与别的区间重合。 可由一图加深理解: 图片来源:labuladong的算法小抄 因此下面是我第一次写出的代码,而我开始没有恰当考虑怎样去验证两个区间是重合的,因此代码较为繁杂,效率较低,且我着重于直接找到要删去的区间。 -------------注:下面的right相当于我原先提到的end,left相当于我原先提到的start 代码: int cmp(void*_x,void*_y) { int *x=*(int**)_x; int *y=*(int**)_y; return x[1]>y[1]; } int eraseOverlapIntervals(int** intervals, int intervalsSize, int* intervalsColSize){ if(intervalsSize==0) return 0; int sum = 0;//储存要删去的区间数目 qsort(intervals,intervalsSize,sizeof(int*),cmp);//不排序会误删 for(int i=0;i<intervalsSize;i++)//遍历一遍数组,即将每个数组都当成“基准”试一试 { if(intervals[i][0]==INT_MAX)//由下面可知此代表“删去”,所以“删去”的不用进行循环了 continue; for(int j=0;j<intervalsSize;j++)//在进行一次循环找是否有重合的区间 { if(i==j||intervals[j][0]==INT_MAX)//已经“删去”的和下标一样的不用进行循环了 continue; if((intervals[j][0]>=intervals[i][0]&&intervals[j][0]<intervals[i][1])||(intervals[j][1]>intervals[i][0]&&intervals[j][1]<=intervals[i][1]))//此为重合的条件,也是此代码繁杂之处 { if(intervals[j][1]>intervals[i][1])//比较end { sum++; intervals[j][1]=INT_MAX;//此代表“删去”的意思,因为c语言不能严格的执行删除操作 intervals[j][0]=INT_MAX;//所以我们把这个区间变成无穷远即可代表他是被删去了 continue; } else { sum++; intervals[i][1]=INT_MAX;//“删去”基准 intervals[i][0]=INT_MAX; break;//若基准被“删去”了,则直接跳出循环进行下次即可,因为基准已经没了 } } } } return sum; } 后来由以前的“打气球问题”想到可以对重合区间的验证过程进行优化,

tps协议和onvif协议_海康摄像头如何配置开启ONVIF协议接入视频流媒体服务器?...

熟悉我们的小伙伴都知道,当我们的RTSP/Onvif流媒体服务器与摄像头可以进行网络连接时,通过RTSP/Onvif流媒体服务器自带的Onvif探测即可实现Onvif摄像头的设备IP探测,成功后返回需要的流地址,实现摄像头的PTZ云台控制,PTZ控制包含转动、变焦等。 我们接受到的大多摄像机包括海康、宇视、大华等,海康威视部分摄像机在默认情况下没有开启ONVIF协议(例如:DS-2CD2320D-I摄像机),需要进入摄像机web管理页面手动开启。 下面是将海康摄像头ONVIF配置进我们流媒体服务器的步骤: 1、通过摄像机IP地址访问摄像机web管理页面,输入用户名和密码登录管理后台。点击顶部导航栏的“配置”选项。 2、依次点击“网络”-“高级配置”-“集成协议”,勾选“启用ONVIF”复选框。 3、点击“用户列表”右侧的“添加”按钮,在弹出的“用户添加”窗口中填入用户名、密码、确认密码等信息,点击“确定”按钮。 4、点击“集成协议”下方的“保存”按钮,开启ONVIF协议成功。现在可以使用刚添加的用户名和密码使用ONVIF协议接入EasyNVR了。

西门子real是什么数据类型_西门子数据类型REAL转WORD和S5TIME的方法

real转双整数是有一个取整指令的round,这样就可以实现把real转换为双整数,当然余数丢失了。 双整数比如MD10,那么MD10=(MW10+MW12)组成的,当然这里不是数学符号,不明白的可以去看看西门子中的数据格式。---说这个的意思是你知道了MD10中的内容很容易知道MW12中的内容,因为存储的时候是靠右排列的,低位就是MW12。 而一个双整数转换为S5TIME格式的时间值,也是很简单的,当然其实中间是用到了一个TIME变量! 直接来看图片吧: 这个图片可以看到1250.35就是一个浮点数,直接用round指令转成了1250。这个1250是小于MW122的最大表示范围2的16次方65536的,因此MD120中装的1250,实际上就是存储在MW122中,如果比65536更大的值,MW122就装不下了,就必须用MD120来装。---所以real转换为双整数后,再转为word值,其实就直接使用MD的低字节就可以,这里就是MW122! real转S5TIME格式的话,就可以使用FC40这个块去实现,当然FC40的输入端是要求的双整数。可以看到这里转换的结果是1s250ms!这里的MD120的值其实相当于一个32位time格式的值了,它的时基是1ms的,因此MD120处的时间就是1250ms,所以最后转换为S5TIME就是1s250ms! 加#号的变量,表示在当前子程序中使用的局部变量(只存在于此子程序的调用过程中)。?PLC可编程逻辑控制器,它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令 real-word的转换,使用Round指令。 取低16位就是word了,全取就是dword。再将word数据和时基异或,就是可作为s5时间设定。

KPI 为什么会有?没有怎么办?

一、kpi 是什么? 关键绩效指标(KPI:Key Performance Indicator)是通过对组织内部流程的输入端、输出端的关键参数进行设置、取样、计算、分析,衡量流程绩效的一种目标式量化管理指标,是把企业的战略目标分解为可操作的工作目标的工具,是企业绩效管理的基础。KPI可以是部门主管明确部门的主要责任,并以此为基础,明确部门人员的业绩衡量指标。建立明确的切实可行的KPI体系,是做好绩效管理的关键。关键绩效指标是用于衡量工作人员工作绩效表现的量化指标,是绩效计划的重要组成部分。 KPI法符合一个重要的管理原理--“二八原理”。在一个企业的价值创造过程中,存在着“80/20”的规律,即20%的骨干人员创造企业80%的价值;而且在每一位员工身上“二八原理”同样适用,即 80%的工作任务是由20%的关键行为完成的。因此,必须抓住20%的关键行为,对之进行分析和衡量,这样就能抓住业绩评价的重心。 KPA(Key Process Area)意为关键过程领域,这些关键过程领域指出了企业需要集中力量改进和解决问题的过程。同时,这些关键过程领域指明了为了要达到该能力成熟度等级所需要解决的具体问题。每个KPA都明确地列出一个或多个的目标(Goal),并且指明了一组相关联的关键实践(Key Practices)。实施这些关键实践就能实现这个关键过程域的目标,从而达到增加过程能力的效果。KRA(Key Result Areas)意为关键结果领域,它是为实现企业整体目标、不可或缺的、必须取得满意结果的领域,是企业关键成功要素的聚集地。 二、为什么要有 kpi? 管理者的角度上,kpi 是衡量员工每个时期工作的内容指标,最终以结果为导向,给出对应的奖惩制度。 如果没有kpi: 1、从管理者的角度无法知道员工的工作内容和结果,只能通过员工的直系leader 才知道员工的实际工作内容,这是有弊端的 2、员工如果贿赂或者是leader 直系,那么就会出现此员工绩效很好,但实际绩效很差 3、其他的员工会有异议 这上面都是不利于公司发展的,因此 kpi 是有利的。 但从另外一方面说: 1、kpi 制定是在没有实际工作处就制定的,真正在实际的工作期间,战略,组内和个人都会出现一些特殊情况,比如战略调整,组内变动,个人变动等,都会影响当前实施和预计的 kpi 不一样 2、kpi 在制定的时候,一般都会比较保守,这是不利的,因为太保守就创新不够,但不保守,kpi 指标制定太大,又会可能完不成,导致 kpi 差 3、在审核 kpi 的时候,总会有评审的规则和审核制度,比如 阿里的 361,华为的末位淘汰的,这些硬性指标是有害于员工和公司的,部分会因为这个而导致人才的损失 从这方面看,kpi 是有害的 三、是否可以没有kpi? 我刚才读到一篇文章,文章的内容是可以没有 kpi,为什么呢? 咨询公司: 1、公司有特有的职级,并且2年内必须要升级,如果没有升到,就要淘汰 --- 对员工有个危机感 2、公司内的升级打评都是由合伙人打分的,没有经历项目合伙人打分,他们会匿名访问30多人,客观的分析打分员工的能力等 --- 客观平均打分,不会因少数因素导致评分不准确 3、薪资很高,奖金是所有人平分的 --- 在薪资上,大家都不会为了薪资而发愁 netflix,奈飞,就是那个发布电视剧的公司: 1、发员工行业内最高的工资,鼓励员工去市场上试水自己的价值,如果市场给出高的,他们会比这个给的多 2、只招成年人,这样的人不会像小孩子一样发脾气 3、取消考勤和休假制度,可以随时放假,只要领导同意 樊登读书,樊登老师的公司: 1、没有那么高的管理层 2、给很高的固定工资,不会给奖金。如果某个职位有奖金,某个没有,那么这个职位是否更受欢迎,大家都会为奖金而拼搏,但奖金就那么多,怎么获取更多,大家可能会在除业绩上想手段,而放弃创造力。 3、大家都要有创造力 综上,都有同样的特性: 1、 高工资,这样员工就不会因为工资问题苦恼,生计问题,如果都不能很好的生活,何来理想 2、内部有个比较好的打分机制,从机制上避免,让大家还是要有危机感的 3、依靠文化,自我驱动,这个要在高工资的基础上才能实现

foreign 磁盘阵列_RAID 磁盘状态为foreign,怎么变成ready

我们在关掉电源,插入三块硬盘,打开电源 这时候: 首先启动服务器,出现[Pressto Run Configuration Utility]提示时,按下ctrl+r 这时候我们进入RAID卡BIOS设置界面,这时候我们会发现三块硬盘的状态时foreign的,(foreign:外来的,online:正常,missing:磁盘未找到,failed:失败) 这时候我们要把foreign状态变成ready状态,这时候我们进行如下操作: 进入VD Mgmt中选择contrllor 0,按F2,选择foreign,选择clear 这时候我们会发现硬盘状态变成了ready了。这样我们就可以做RAID了。 工作中遇到的例子,现在在一台服务器上加三块1TB的硬盘,然后给这个做成raid 5 ,现在记录过程 1.关电源,加硬盘 2.开机启动,当页面出现提示“CTRL+R”的时候,按下ctrl+r 进入raid管理界面。 3.我们使用CTRL + N 到下一页,看到新进来的设备的状态都是foreign,(foreign:外来的,online:正常,missing:磁盘未找到,failed:失败),现在我们使用ctrl+n到最后一页,选择clear 4.我们到VD Mgmt主界面,进行初始化操作,按回车确认即可继续。 5.配置完成后,会返回至VD Mgmt主界面,将光标移至图中Virtual Disk 0处,按回车 6.然后我们来做raid 5 ,因为我们现在是要把 vd 1 做raid,所以我们到 vd 1 下操作。完成

ypid编码是什么_重复ypid查询,重复记录查询,准确

SELECT fangjianhao, xiaoshouzhuangtai, dingjiadanjia FROM S_fangyuanxinxi a WHERE (loupanmingcheng = '陶然庭苑小区') AND ((SELECT COUNT(*) FROM S_fangyuanxinxi WHERE fangjianhao = a.fangjianhao AND loupanmingcheng = '陶然庭苑小区') > 1) ---------多字段重复,a.loupan, a.niandu, a.fangjianhao, a.biaozhunmingcheng 四个字段重复 SELECT * FROM (SELECT a.loupan, a.niandu, a.fangjianhao, a.biaozhunmingcheng FROM W_fangjian_yishoukuan a INNER JOIN (SELECT loupan, niandu, fangjianhao, biaozhunmingcheng FROM W_fangjian_yishoukuan GROUP BY loupan, niandu, fangjianhao, biaozhunmingcheng HAVING COUNT(*) > 1) b ON a.loupan = b.loupan AND a.niandu = b.

python 网络传输_Python3中使用零拷贝技术来提高网络文件传输时的系统吞吐量

首先,推荐一篇好文,这篇文章细致地描述了零拷贝技术的原理,以及其与传统拷贝过程的区别:http://www.linuxjournal.com/article/6345?page=0,0 从总体上来简单总结一下零拷贝技术可以通过对比来理解: 传统的拷贝过程大致是这样一个过程: 1. 通过直接内存访问数据进入操作系统内核的缓存(数据拷贝到内核空间)——CPU将数据拷贝到用户空间——CPU将数据写入到套接字缓存——内存直接访问拷贝发送数据; 零拷贝技术的过程是这样的: 2. 通过直接内存访问数据进入操作系统内核缓存(数据拷贝到内核空间)——CPU直接调用sendfie系统调用直接将内核缓存拷贝到套接字缓存——内存直接访问拷贝发送数据;甚至通过进一步的优化,内核之内的那次数据复制也可以省掉,这是通过将内核缓存的相关信息传递给套结字缓存,系统利用这些信息直接读取内核缓存发送数据。 至于具体效果如何,可以使用Python3提供的相关系统调用的封装来测试对比一下。 首先,要实现一个简单的文件接收服务器,实现起来非常简单(zerocopyserver.py): ''' Created on Aug 28, 2015 @author: felix ''' import socket import hashlib sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_address = ('0.0.0.0', 10000) print('starting up on %s port %s' % server_address) sock.bind(server_address) sock.listen(1) while True: print('Waiting for a connection') connection, client_address = sock.accept() size = 0 try: i = 0 while True: data = connection.recv(65536) #print('Received data: "%s"' % data) i += 1

gg修改器偏移量修改_GG修改器正版

GG修改器正版是一款模拟游戏的辅助游戏,在这个修改器中我们可以尽情的使用模拟各种辅助游戏的方式,让我们可以在游戏中得到更多的游戏帮助,操作简单,并且包含了大量的游戏辅助能力,是一款非常好用的游戏辅助。 GG修改器正版介绍 1.玩家可以根据自己的想法随时随地修改游戏的值,修改位我们需要或者是最大值进行游戏; 2.操作方法非常简单,让您在游戏中拥有真实的上帝体验,并体验游戏的乐趣和无限的能力; 3.该软件不需要root权限,可以在没有任何权限的情况下将游戏数据修改为用户想要的内容; 4.准确而快速,无需担心游戏速度,超级好用的一个非常实用的游戏辅助工具带给玩家使用; 5.作为一款简单的游戏辅助工具我们可以尽情的使用,不会对游戏造成影响也不会有任何损失。 GG修改器正版特色 -游戏辅助的兼容性非常广泛,几乎所有游戏都可以进行修改,是一款强大的辅助游戏工具。 -支持各种安卓手机和安卓游戏,支持干净安全的内容,让玩家可以随时随地的使用这个。 -超多语言支持,并且有超强的修改能力,让我们可以快速修改,还可以加速游戏进程。 GG修改器正版评测 平台上可以修改很多数据,基本上所有用户需要修改的数据都可以在平台上修改,尽管用户以英语打开,但可以将英语更改为中文,只需在设置中选择它即可,用户只要选择相应的更改方面,就可以实时输入要更改的值,操作非常方便。

stm32 工业按键检测_STM32中断方式检测按键

1.简述 对于按键,常见的是通过MCU不断检测按键连接 GPIO 的状态变化(高–>低或低—>高),来确认是否有按键输入,这样的缺点很明显,MCU 一直在循环检测,对资源是一种浪费,不够高效。对于STM32,GPIO 是可以配置成中断的,有这个优势,我们就可以通过中断的方式来检测 GPIO 上电平的变化,进一步的得到按键的状态。 2.硬件电路 按键无上拉电阻,需要在 GPIO 上设为上拉状态,提供一个确定电平。 3.驱动实现 //按键初始化做了三件事 ///1.按键连接的GPIO初始化;2.中断配置初始化;3.中断优先级配置 void Key_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //GPIOA时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //复用功能时钟打开 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //关闭JTAG GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource15); //配置GPIO为中断引脚 EXTI_InitStructure.EXTI_Line = EXTI_Line15; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

nginx 手机版页面判断_Nginx if 条件判断

Nginx if 条件判断: 1.公司网站上线有这样的需求: 由于公司网站域名从http到https的转移,在测试阶段需要公司内部进行测试,公司内部局域网访问时强制访问加密的https服务,外部用户访问正常的http服务. 第一种方法: if ( $http_x_forwarded_for ~ ^106\.38\.53\.130|210\.12\.103\.18) { return 301 https://www.xxx.cn$request_uri; } #有的说nginx不支持这种if写法,但我在nginx配置后是成功了,可能是版本高了以后,nginx也支持呢。我的nginx是1.8.0版本. 第二种方法: #用变量的方式来间接实现 set $flag 0; if ( $http_x_forwarded_for ~ ^106\.38\.53\.130|210\.12\.103\.18) { set $flag "${flag}1"; } if ($flag = "01") { return 301 https://www.xxx.cn$request_uri; } $remote_addr 为获取客户端访问地址,如果网站使用了前端代理或负载均衡的话使用$http_x_forwarded_for #################################################################################################### 2.当访问某个php应用时,我只想让ip地址为106.38.53.130访问,别的ip都跳转至另一个页面。如下: #访问/cms/index.php,且ip地址不是106.38.53.130的跳转到https://www.xxoo.cn set $ssl_80 ''; if ( $request_uri ~* /cms/index.php ) { //客户端请求的完整请求路径 set $ssl_80 A; } if ( $http_x_forwarded_for !~* ^106\.38\.53\.130.* ) { //前端有负载均衡的客户端ip地址

文档路径_模拟人生4|Mod占用C盘空间,修改我的文档位置

玩模拟人生4 下载了超多Mod,直接放在C盘的[我的文档]中,导致C盘空间不够 通过修改[我的文档]的位置解决这个问题。 第一步:找到[我的文档]的位置 我的文档的路径:C:UsersAdministratorDocuments 第二步:在【我的文档】上右键,选择【属性】 如图为属性的弹出窗,当前位置C盘。 第三步:修改位置 ---- 不可设置为根目录 设置新路径为:F:我的文档 (可选择任意盘) 点击【确定】,弹出确认弹窗 点击【是】 点击【是】 系统自动开始复制文档,复制完成后,位置更换成功。

dell idrac 复位_dell idrac 初始化失败_开机特别慢_服务器维修

idrac 初始化失败 怎么解决 Warning! iDRAC initialization error.Continuing to boot may yield unexpecte power loss due to unknown power inventory and various features lost such as remote Access, Active power Management, Thermal Management,Inventory,LCD,or system error reporting自检很慢 cpu风扇转速始终最大(声音很大) 解决办法: 1、按住前面板i的按钮大概5秒,重启下iDRAC试试看。另外也可以移除电源线,按着开关按钮大概30秒不放手释放静电 。 2、笔记本直连idrac口,若能成功登陆,可以尝试更新idrac固件。 3、开机按F2-->iDRAC Settings -->Lifecycle Controller -->Enabled -->Back -->Finish -->Yes to save the settings and exit the utility,然后看看是否可以正常。 4、通过F10 lifecycle升级一下idrac 5、更换IDRAC模块,如果是集成的更换主板。

高级人工智能课程重点目录

前言 记录下这门课学了什么东西,日后如果有用得上的地方,方便快速索引到知识点。这门课虽然叫高级人工智能,但实际上讲授的内容并不深,偏人工智能的基础,但讲的范围广,算是起了普及作用。 三位老师分别讲授了三大行为主义的主要内容,其中符号主义部分我在本科期间已经学过个大概了,一并在此整理,犹记得当年我的本科老师跟我讲,他当年读研的时候是搞图论和网络的,他当时就觉得人工智能以后用不上,然后人工智能这门课就挂科了。后来到我们学校教书,因为硕士是吉林大学的,吉林大学有个符号实验室名气很大,所以院里就觉得他人工智能也不会差,就让他负责教人工智能课了哈哈哈。然后就告诉我们说,不要觉得今天这个东西你学了没有用,总会有突然找上你的一天。这不,当年我觉得以后可能不会用上的符号主义部分,总归是在读研的时候就又遇上了哈哈哈。 知识结构 连结主义 BP反向传播的原理BM玻尔兹曼机RBM受限玻尔兹曼机DBN深度置信网络DBM深度玻尔兹曼机CNN卷积神经网络 ResNet残差网络RNN循环神经网络 LSTM GRU BPTT Beam SearchGAN 训练方法 优化目标 极大极小博弈GNN 谱方法与空间方法 符号主义 可靠性和完备性的概念原子命题(文字) 证明 KB|=a则kb->a永真 或者kb与上非a不可满足(永假)第一套规则:十一条 不用背 会给出第二套:归结原理 归结树归结原理的sound和complete证明modus ponens 因为归结原理搜索的消耗时间高,因此引入modus ponensmodus ponens中 definite clause和horn clause概念definite:有且只有一个positive horn:至多有一个positivemodus ponens证明可靠性和完备性。证明modus ponens时间效率和KB size线性相关,高效率一阶谓语逻辑一阶谓词逻辑归结原理比上面的难在哪里?量词前束(存在量词用skolen范式消去)合一算子 合一算法general modus ponens概念prolog语言 考虑inference过程中进行了大量的简化,使得prolog可能推出错误答案。因此prolog是既不完备也不可靠。不确定性推理 不确定性表示 可信度计算方法 主观贝叶斯方法模糊计算 隶属度函数定义模糊集操作 相等 子集 交并模糊关系的定义 合成操作模糊集表示 量词 谓词 修饰词 行为主义 群体智能 蚁群算法 粒子群算法 遗传算法 原理 算法 适用范围强化学习 基本要素 1.策略 2.奖励 3.价值 4.环境模型多臂赌博机 探索与利用 贪婪策略 e-贪婪策略 乐观初值法 UCB行为决策 梯度赌博机马尔科夫决策 策略 策略估值 策略提升策略提升:贝尔曼方程 格子问题求解策略估值:动态规划 蒙特卡洛方法 时序差分法 参数近似法博弈 要素 效用函数穷徒困境纳什均衡概念(穷徒困境是纳什均衡的一个例子)帕累托最优和社会最优maxmin和minmax策略 零和博弈时是等价的价值导向匹配 中介价值均衡计算 均衡结局 球问题计算 搜索 深度优先搜索 迭代深度优先搜索广度优先搜索 代价一致搜索启发式搜索A* 树搜索/图搜索 可采纳性/一致性 最优性证明 传教士与野人问题与或图搜索极大极小搜索过程a-b剪枝 机器学习 类比学习示例学习 两空间模型

Android抓包工具tcpdump

前言 Android在测试应用程序时,有时候需要抓包查看一下请求信息,这就可以用tcpdump抓包来实现 提示:这里的手机要先root,(开发者模式好像不行,我没试,直接root简单粗暴) 一、使用步骤 下载 tcpdump 软件 查看用Wireshark软件 按下面命令执行: adb shell su chmod 777 /data/local/ //此操作是让此目录为可读可写 //然后退出adb shell (Ctrl+D) adb push D:\tcpdump /data/local/ //首先将tcpdump程序文件放在D盘 执行命令放在手机/data/local/目录下 adb shell su chmod 6755 /data/local/tcpdump //次命令修改tcpdump权限 adb shell cd /data/local ./tcpdump -i any -p -s 0 -w /sdcard/capture.pcap //执行此命令,然后就可以抓包了,当抓包结束后Ctrl +C停止转包 //退出adb shell adb pull /sdcard/capture.pcap D:\qw //将文件放在D盘qw文件下 然后就可以用Wireshark查看抓包记录了

springboot全局常量_springboot多环境下的自定义配置文件,并读取到常量

importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.PropertySource;importorg.springframework.stereotype.Component; @ConfigurationProperties @PropertySource("classpath:env/${spring.profiles.active}/constant.properties") @Component("constantProperties")public classConstantProperties {/**etl接口的地址*/ public staticString ELT_ENGINE_TRIGGER_URL;public staticString PLATFORM_SYN_URL;public staticString PLATFORM_PARAM_SYN_URL;public staticString SYN_GAME_RATE_FILE_PATH;public staticString SYN_GAME_RATE_SHELL;public static booleanIZ_PUBLISHED;//set注入把 eltEngineTriggerUrl 属性注入,然后赋值给我们定义的静态变量,完成了配置文件赋值给静态常量//set 方法一定不能是static的,不然不能注入//而且这个变量名字和properties 文件中的对应,经过测试发现不区分大小写、并会忽略下划线_符号 public voidsetEltEngineTriggerUrl(String eltEngineTriggerUrl) { ConstantProperties.ELT_ENGINE_TRIGGER_URL=eltEngineTriggerUrl; }public voidsetPLATFORM_SYN_URL(String platform_syn_url) { ConstantProperties.PLATFORM_SYN_URL=platform_syn_url; }public voidsetPlatform_param_syn_url(String platform_param_syn_url) { ConstantProperties.PLATFORM_PARAM_SYN_URL=platform_param_syn_url; }public voidsetSYN_GAME_RATE_FILE_PATH(String sYN_GAME_RATE_FILE_PATH) { SYN_GAME_RATE_FILE_PATH=sYN_GAME_RATE_FILE_PATH; }public voidsetSYN_GAME_RATE_SHELL(String sYN_GAME_RATE_SHELL) { SYN_GAME_RATE_SHELL=sYN_GAME_RATE_SHELL; }public voidsetIZ_PUBLISHED(String iZ_PUBLISHED) { IZ_PUBLISHED=Boolean.parseBoolean(iZ_PUBLISHED); } }

Android整理-Activity

1 Activity 的 4 种状态 Active/Paused/Stopped/Killed 2 Activity 的生命周期 1 Activity A 启动时 onCreate()–>onStart()–>onResume() 2 再点击home键回到桌面时 onPause() ->onSaveInstanceState()->onStop() 应用退出系统回收 或者强杀 都会执行 onDestory() 3 再次回到 Activity A时 onRestart()–>onStart()–>onResume() 4 退出当前 Activity A时 onPause()–>onStop()–>onDestroy() 5 Activity A 启动Acticity B时 A Activity ----onPause B Activity ----onCreate B Activity ----onStart B Activity ----onResume A Activity ----onSaveInstanceState A Activity ----onStop 6 退出B 返回到A 时 B Activity ----onPause A Activity ----onRestart A Activity ----onStart A Activity ----onResume B Activity ----onStop B Activity ----onDestroy 7 接5 ,强杀时

Netty实战

1. Netty介绍与相关基础知识 1.1 Netty介绍 简介 Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。“快速”和“简单”并不用产生维护性或性能上的问题。Netty 是一个吸收了多种协议(包括FTP、SMTP、HTTP等各种二进制文本协议)的实现经验,并经过相当精心设计的项目。最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。 (1) Netty提供了简单易用的API (2) 基于事件驱动的编程方式来编写网络通信程序 (3) 更高的吞吐量 (4) 学习难度低 应用场景: JavaEE: Dubbo 大数据:Apache Storm(Supervisor worker进程间的通信也是基于Netty来实现的) 1.2 BIO、NIO、AIO介绍与区别 阻塞与非阻塞 主要指的是访问IO的线程是否会阻塞(或者说是等待) 线程访问资源,该资源是否准备就绪的一种处理方式。 同步和异步 主要是指的数据的请求方式 同步和异步是指访问数据的一种机制 BIO 同步阻塞IO,Block IO,IO操作时会阻塞线程,并发处理能力低。 我们熟知的Socket编程就是BIO,一个socket连接一个处理线程(这个线程负责这个Socket连接的一系列数据传输操作)。阻塞的原因在于:操作系统允许的线程数量是有限的,多个socket申请与服务端建立连接时,服务端不能提供相应数量的处理线程,没有分配到处理线程的连接就会阻塞等待或被拒绝 NIO 同步非阻塞IO,None-Block IO NIO是对BIO的改进,基于Reactor模型。我们知道,一个socket连接只有在特点时候才会发生数据传输IO操作,大部分时间这个“数据通道”是空闲的,但还是占用着线程。NIO作出的改进就是“一个请求一个线程”,在连接到服务端的众多socket中,只有需要进行IO操作的才能获取服务端的处理线程进行IO。这样就不会因为线程不够用而限制了socket的接入 AIO(NIO 2.0) 异步非阻塞IO 这种IO模型是由操作系统先完成了客户端请求处理再通知服务器去启动线程进行处理。AIO也称NIO2.0,在JDK7开始支持。 1.3 Netty Reactor模型 - 单线程模型、多线程模型、主从多线程模型介绍 1.3.1 单线程模型 用户发起IO请求到Reactor线程,Ractor线程将用户的IO请求放入到通道,然后再进行后续处理,处理完成后,Reactor线程重新获得控制权,继续其他客户端的处理,这种模型一个时间点只有一个任务在执行,这个任务执行完了,再去执行下一个任务。 但单线程的Reactor模型每一个用户事件都在一个线程中执行:性能有极限,不能处理成百上千的事件当负荷达到一定程度时,性能将会下降某一个事件处理器发生故障,不能继续处理其他事件 1.3.2 Reactor多线程模型 Reactor多线程模型是由一组NIO线程来处理IO操作(之前是单个线程),所以在请求处理上会比上一中模型效率更高,可以处理更多的客户端请求。这种模式使用多个线程执行多个任务,任务可以同时执行,但是如果并发仍然很大,Reactor仍然无法处理大量的客户端请求 1.3.3 Reactor主从多线程模型 这种线程模型是Netty推荐使用的线程模型,这种模型适用于高并发场景,一组线程池接收请求,一组线程池处理IO。 1.4 Netty - 基于web socket简单聊天DEMO实现 后端编写 导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="

2020-12-29

博客园Logo 首页 新闻 博问 专区 闪存 班级 代码改变世界 搜索 注册 登录 杨木木v 博客园 首页 新随笔 联系 订阅 订阅 管理 随笔 - 3 文章 - 1 评论 - 0 如何对项目中的问题进行分析——FPGA失败案例小结 本人最近在做一个小项目,自己取名叫做《基于zedboard的千兆以太网底层设计》,一般我都是写好各模块的verilog代码,确定模块没bug后再做整个系统级联,之后直接先进行综合看看有没有bug,有则改进,没则继续写约束,然后器件实现。 但是这个项目,我在第一步就错了,先把我找到的原因说下:是因为zedboard分为ps和pl端,zedboard的PHY芯片是有ps端控制,而我直接将其引脚用ps端驱动了。出现了以下vivado报错: 废话不多说,来看问题,vivado综合时保持如下: [Vivado 12-1411] Cannot set LOC property of ports, Site location is not valid [“F:/xilink_file/ethernet_test/ethernet_test.srcs/constrs_1/new/ethernet_constraints.xdc”:10] 。。。。。 [Vivado 12-1411] Cannot set LOC property of ports, Site location is not valid [“F:/xilink_file/ethernet_test/ethernet_test.srcs/constrs_1/new/ethernet_constraints.xdc”:24] 基本上我是在所有设计都完成时,先约束引脚,最后综合后再做时序约束,再利用singnaltapii(vivado上叫ILA)做板级验证。但是我在综合时遇上上述问题,说明我的引脚不可用。 去查阅xilinx官方论坛与器件商DIGILENT论坛,发现国外一老哥也是做以太网遇到了同样的问题。 大意是“我用的zedboard z7010开发版写了一个以太网驱动程序,按照原理图上搭配了引脚但是还是出现了严重警告的问题,难度是我原理图拿错了吗?” 大佬的回答是 大意是通过pl(纯逻辑)驱动以太网现在在论坛还处于讨论阶段,因为zedboard上的以太网芯片是直接与PS端(ARM端)相连的,PL端没有与PHY芯片直连,所以没法用纯底层verilog逻辑电路驱动PHY芯片。 看到这里,我马上又去翻了一下zedboard的用户手册。 PHY芯片通过MIO Bank连接z7000Soc,也就是说,想要驱动PHY芯片,需要看看MIO Bank是谁家管的引脚(PL还是PS)。我又去翻了下原理图。

力扣解题思路:488. 祖玛游戏

488. 祖玛游戏 思路: 实际上就是简单的消消乐,如果时间允许,最简单的暴力递归法也是可以的,就是把所有字母插入所有的位置,取最短且可以消去的插入球数即可。但是这样无脑插入是很浪费时间的,所以我们在插入的时候应该先选好合适的位置,分一下两种情况: (1)插入一个或两个颜色相同的球引发连锁反响。 (2)往两个颜色相同的球中间插入一个颜色不同的球(为什么要这么做呢?见特殊测试用例二)。 注意两个特殊的测试用例: 测试用例一: "WWRRGGRRWWRRGGRRWW", "GG" 无论怎么插入,都无法完全消除,结果应是-1。 测试用例二: "RRWWRRBBRR", "WB" "R(B)RWWRRBBRR" -> "R(B)RWW(W)RRBBRR" -> "" 结果应是2。 首先我们需要一个方法来用于消去字符串,返回消去后的结果: private StringBuilder eliminate(StringBuilder sb) { boolean flag = true; while (flag) { flag = false; for (int i = 0; i < sb.length(); i++) { int j = i + 1; while (j < sb.length() && sb.charAt(j) == sb.charAt(i)) { j++; } if (j - i >= 3) { sb.

java与流式编程详解

文章目录 流的性质创建流中间操作终止操作Collectors单列集合收集器双列集合收集器字符串收集器 流的性质 流遵循了做什么而非怎么做的原则,它有以下性质: 流不存储元素,这些元素可能存储在底层集合中或者是按需生成的流的操作不会改变数据源,而是会生成一个新的流,其中不包含被过滤掉的元素流的操作是尽可能惰性执行的 使用流一般需要三个操作步骤:创建流、中间操作和终止操作。 创建流 Stream中的静态方法 static <T> Stream<T> of(T... values)//返回包含values元素的流 static <T> Stream<T> empty()//返回一个空流 static <T> Stream<T> generate(Supplier<T> s)//返回一个由s提供元素的无限流 static <T> Stream<T> iterate(T seed, UnaryOperator<T> f)//返回一个由f提供元素的无限流,f的起始参数为seed,之后的参数为该方法的返回值 集合类的stream方法 List<Integer>list=new ArrayList<>(); Collections.addAll(list,new Integer[]{1,2,3,4,5}); Stream<Integer> stream = list.stream(); Arrays.stream() static <T> Stream<T> stream(T[] array) static <T> Stream<T> stream(T[] array, int from, int to) Files.lines() static Stream<String> lines(Path path) static Stream<String> lines(Path path, Charset cs) 并行流 Stream<T> parallel() 中间操作 Stream<T> limit(long maxSize)//限制流的长度 Stream<T> skip(long n)//跳过流中的前n个元素 Stream<T> distinct()//清除流中的重复元素 Stream<T> sorted()//对流中的元素进行排序 Stream<T> sorted(Comparator<?

spark保存数据到hbase_用spark导入数据到hbase

packagescala;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.hbase.HBaseConfiguration;importorg.apache.hadoop.hbase.KeyValue;importorg.apache.hadoop.hbase.TableName;importorg.apache.hadoop.hbase.client.Admin;importorg.apache.hadoop.hbase.client.Connection;importorg.apache.hadoop.hbase.client.ConnectionFactory;importorg.apache.hadoop.hbase.client.Table;importorg.apache.hadoop.hbase.io.ImmutableBytesWritable;importorg.apache.hadoop.hbase.mapreduce.HFileOutputFormat2;importorg.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles;importorg.apache.hadoop.hbase.util.Bytes;importorg.apache.hadoop.mapreduce.Job;importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;importorg.apache.hadoop.mapreduce.lib.input.TextInputFormat;importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;importorg.apache.spark.SparkConf;importorg.apache.spark.api.java.JavaPairRDD;importorg.apache.spark.api.java.JavaRDD;importorg.apache.spark.api.java.JavaSparkContext;importorg.apache.spark.api.java.function.PairFlatMapFunction;importorg.apache.spark.storage.StorageLevel;importutil.HFileLoader;public classHbaseBulkLoad {private static final String ZKconnect="slave1,slave2,slave3:2181";private static final String HDFS_ADDR="hdfs://master:8020";private static final String TABLE_NAME="DBSTK.STKFSTEST";//表名 private static final String COLUMN_FAMILY="FS";//列族 public static void run(String[] args) throwsException { Configuration configuration=HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", ZKconnect); configuration.set("fs.defaultFS", HDFS_ADDR); configuration.set("dfs.replication", "1"); String inputPath= args[0]; String outputPath= args[1]; Job job= Job.getInstance(configuration, "Spark Bulk Loading HBase Table:" +TABLE_NAME); job.setInputFormatClass(TextInputFormat.class); job.setMapOutputKeyClass(ImmutableBytesWritable.class);//指定输出键类 job.setMapOutputValueClass(KeyValue.class);//指定输出值类 job.setOutputFormatClass(HFileOutputFormat2.class); FileInputFormat.addInputPaths(job, inputPath);//输入路径 FileSystem fs =FileSystem.get(configuration); Path output= newPath(outputPath);if(fs.exists(output)) { fs.delete(output,true);//如果输出路径存在,就将其删除 } fs.close(); FileOutputFormat.setOutputPath(job, output);//hfile输出路径//初始化sparkContext SparkConf sparkConf = new SparkConf().

c++ 计算 两个时间 差值_综合判别改善指数IDI的计算方法

题记:这一章讲综合判别改善指数(Integrated Discrimination Improvement, IDI)计算原理与方法。这个指标也用于判断预测模型改善情况,与NRI有类似也有不同,请各位斧正。 1. 背景知识 上一章《净重新分类指数(NRI)的计算原理与方法》我们比较了ROC分析曲线下面积与NRI,NRI有两个优点:1. 较ROC分析计算的C-Statistics/AUC更为敏感;2.NRI用于在设定的cut-off值下,例如某个指标的诊断截断值或低、中、高风险划分的界值等,来比较新、旧模型的预测能力是否有所提高,在实际临床应用中更容易理解。但NRI也有一些不足:它只考虑了设定某个切点时的改善情况,不能考察模型的整体改善情况,此时我们可以选择另一个指标:综合判别改善指数(IntegratedDiscrimination Improvement, IDI)。有的读者可能会提出疑问:C-Statistics/AUC不就是反应模型整体改善情况的吗?这个问题又回到我们上一章提到的C-Statistics/AUC的两个局限性的问题,如果一定要把IDI与C-Statistics/AUC比较,那么IDI更敏感,临床也更容易解释。 我无法从一个读者的角度判断我上面这段话讲得是不是“可以听懂的人话”?但有一个最简单的解决办法:先存疑不论,即不去计较C-Statistics/AUC、NRI、IDI的优劣,在进行两个指标诊断效能比较或两个预测模型比较时,除了传统的ROC曲线计算AUC,也可以同时给出NRI和IDI,更加全方位、立体的展示新模型的改善情况,犹如绘画技法中的多点透视。 2. IDI计算原理 从IDI的计算公式看,它反映的是两个模型预测概率差距上的变化,因此是基于疾病模型对每个个体的预测概率计算所得。它的计算公式为: 其中Pnew,events、Pold,events表示在结局事件发生组(患病组)中,新模型和旧模型对于每个个体预测疾病发生概率的均值,两者相减表示预测概率提高的量。对于患病组来说,预测患病的概率越高,表示模型越准确,因此,Pnew,events与Pold,events差值越大则提示新模型越好。 而Pnew,non-events、Pold,non-events表示在结局事件发生组(未患病组)中,新模型和旧模型对于每个个体预测疾病发生概率的均值,两者相减表示预测概率减少的量,对于未患病组来说,预测患病的概率越低,表示模型越准确,因此Pnew,non-events与Pold,non-events差值越小则提示新模型越好。 最后,将两部分相减即可得到IDI,总体来说IDI越大,则提示新模型预测能力越好。与NRI类似,若IDI>0,则为正改善,说明新模型比旧模型的预测能力有所改善,若IDI<0,则为负改善,新模型预测能力下降,若IDI=0,则认为新模型没有改善。 我们可以通过计算Z统计量,来判断IDI与0相比是否具有统计学显著性,统计量Z近似服从正态分布,公式如下: 其中SEevents为Pnew,events-Pold,events的标准误,首先在患病组,计算新、旧模型对每个个体的预测概率,求得概率的差值,再计算差值的标准误即可;SEnon-events为Pnew,non-events-Pold,non-events的标准误,是在未患病组,计算新、旧模型对每个个体的预测概率,求得概率的差值,再计算差值的标准误即可。 3. R语言实现 表1. R中可计算IDI的包 包的名称 下载地址 分类资料结局 生存资料结局 PredictABEL CRAN reclassification函数 不支持 survIDINRI CRAN 不支持 IDI.INF函数 [案例]示例数据来自于survival包里自带的一份梅奥诊所的数据,记录了418位患者的临床指标与原发性胆汁性肝硬化(PBC)的关系。其中前312个患者来自于RCT研究,其他患者来自于队列研究。我们用前312例患者的数据来预测是否发生死亡。这个表中的结局变量是status,0=截尾(删失),1=接受肝移植,2=死亡。为了R语言代码解释的方便,我们首先把“死亡与否”是作为二分类变量处理。然后再考虑时间因素,当做生存资料处理。其他关于数据中各变量的具体含义可用命令:? pbc 查看。 (1) 二分类结局 代码如下:here consider pbc dataset in survival package as an example library(survival) dat=pbc[1:312,] dat$sex=ifelse(dat$sex=='f',1,0) subjectscensored before 2000 days are excluded dat=dat[dat$time>2000|(dat$time<2000&dat$status==2),] predcitingthe event of ‘death’ before 2000 days event=ifelse(dat$time<2000&dat$status==2,1,0) standardprediction model: age, bilirubin, and albumin

绘制一幅蓝图_给未来画一幅蓝图

《活法》第一章里讲到实现理想要有强烈的愿望,这个愿望必须是你睡也想着、醒也想着的愿望才可以。就是所谓的“心不唤物,物不至”,只有你的愿望足够清晰,你的愿望之树才能扎根、长茎、开花、结果。 稻盛和夫讲到他的大学专业是石油化学、有机化学和他就职的陶瓷企业无任何联系,而且刚毕业的他入职的这家企业持续亏损,只有非常简陋的研究设备和仪器,但他就在这中情况下投入到研究当中,因为他相信只要他全身心投入研究中,终会打开“智慧的宝库”。 结果不久以后他真做出了与世界一流的公司相匹敌的科研成果。即使在如此简陋的条件下他也坚信自己可以找到一种可以让公司有所突破的新材料。 当你有强烈的愿望时,这个愿望才有变成现实的可能性。 最近看考研老师刘晓艳的视频时,听到她讲了这样一个故事。她之前带的一位学生,一个中专学生,中专毕业后不知道那一天突然醍醐灌顶了,想要上大学。可你知道中专生是连高中都没上过的,所以她想要上大学需要经过哪些历程吗?中专生她需要先考大专,大专考上了,然后在专升本上大学,考上大学后又考研究生,后来这女孩考上了北大研究生。 她都不能想象这一路走来这女孩用了多少年,但至少她现在做到了。这个女孩就是给自己了一个上大学的愿望然后持续付出努力成就了今天的自己。 我们大多数人从未认真想过我们未来要过怎样的生活,对自己未来生活的一个蓝图都没有。首先要给自己画一幅未来生活愿景的蓝图,把它描绘的越清晰越好,不要觉得那是多么遥远的事,五年以前的事现在回看不都是转眼之间。既然你想要做某件事,就说明你是具备这种愿望变成现实的潜在力量的,人们不会凭空去想象自己力所不能及的事情,就像上文刚毕业的稻盛和夫,谁能想象一个非专业人士在如此简陋的条件下能研究出来和世界一流公司匹敌的科研成果;谁能想象一个中专生可以考上北大的研究生,但有人做到了。所以给自己一个大胆的猜想,然后不断地,不断地向着这个愿景靠近。

Windows 无法启动xx服务 错误1053

Windows 无法启动xx服务 错误1053:服务没有及时响应启动或控制请求 系统的很多系统关键服务,启动不了,双击该服务也弹不了操作框,系统服务是设置为自动 的,但是就是启动不了,在本地服务窗口中只能启动该服务,但是双击会弹不了窗口,你点启动后会出现错误提示1053,本地用户组,里面可以看到用户和组但 是双击话也没反应,照成后果,网站打不开,远程连接连不上,但是服务器实际上是开着的,其实具体原因就是因为系统关键服务未正常开启,实验结果表明是权限 不够,导致系统服务一律停止,为什么会这样呢?估计是服务器中毒,被木马程序影响照成的,照成了Network Service账户的权限不够,因为win2003系统中很多的系统关键服务都是依靠Network Service账户的权限来运行的,所以解决办法只能将Network Service账户的权限提高,如果本地用户组里可以操作,那么把’NETWORK SERVICE’ 添加到Administrator组中:我的电脑–>右键–>管理–>本地用户和组; 选择“组”–>双击Administrators–>单击“添加”–>单击“高级”–>单击“立即查找”–>在下面的列表中选择Network Service用户–>两次单击“确定”–>加入。

虚拟机集群搭建

搭建可供局域网访问的虚拟主机 关闭防火墙 查看防火墙状态 systemctl status firewalld.service 关闭防火墙 systemctl stop firewalld.service 禁止防火墙服务(防止自动重启) systemctl disable firewalld.service 修改网络配置 进入/etc/sysconfig/network-scripts/ifcfg-enp0s3(文件名不固定) 重启网络 service network restart 验证 ip addr 遇到的问题 主机无法ping通虚拟机 解决方案:在主机的网络适配器中,修改对应适配器的地址,将ip4地址固定为指定的虚拟机ip 修改完静态ip后虚拟机无法访问主机Destination host unreachable 在Vmware的编辑中,进入虚拟网络编辑,选择桥接模式,桥接模式并指定为自动 修改主机名称 修改名称 hostnamectl set-hostname 新主机名称 修改hosts文件内的名称