前言 3D模型画完后,通常需要转成2D工程图用于加工生产(也有部分企业直接标注PMI信息在3D上直接加工),绘图有机械制图的规范,每个企业的设计部也有对应的图框、绘图标注。下面看下如何制作SOLIDWORKS图框。
软件支持通过其他已有的工程图,转换成自己所需的工程图模板,步骤如下:
1.打开工程图 打开工程图,使用的是基础培训的课件。
2.预设比例、第一/第三视角 右键sheet图纸→属性,设定比例和投影类型,注意比例是指三视图的比例。设定完成后点确定。
3.修改标题栏内容、字体 图纸区域右键→编辑图纸格式,标题栏中的内容使用“注释功能”编辑,支持中英文。也可以直接复制(ctrl+c、ctrl+v)已有的文字段,注意修改文本框的字体(字体文件夹在c盘→windows→fonts中,可自定义安装)。
4.标题栏格子可自定义绘制 标题栏格子可自定义绘制,使用“直线”命令即可,草图线可以定义到对应图层中,图层设定可指定线的粗细、线型、颜色等。
5.为文本段添加属性连接 模型属性例如材料、重量、名称想要连接到图纸中,需要2个条件,1.模型中有对应属性,2.图纸中有超链接读取模型属性并呈现。具体操作是双击文本段,点击超链接功能,选择属性来源(一般都来源于模型,除了部分特殊属性),选择属性(建议先在模型里输入属性,然后工程图中可以直接读取、测试,类似于图中的测试)
6.绘图标准设定 退出编辑图纸格式状态,选项中设定绘图标准,绘图标准可以随同工程图模板自动保存,也可以单独保存一份文件,用于加载到其他图纸模板中去。
7.保存 保存前,需要去除载入的模型。三视图可以保留。
点击文件,另存为,选择“工程图模板”,输入名称建议按大小横竖命名,保存的路径会自动跳转,用户也可以手动设定,只要在选项中让SW识别到即可。
随 着5G网络概念的日益火热,人们对5G网络的期待也越来越高,但由于5G网络的商用普及还需要继续等待1-2年的时间,因此人们对于5G的期待感又逐渐出现淡化的趋势。当下的宽带网络以及4G网络已经能够满足用户的网络需求,而当初4G网络推出的时候也曾大力宣传传输速率大幅度提升,但当人们真正使用4G网络之后,感觉也并没有此前期待的那么神奇,因此,虽然人们对于5G网络有所期待,但想要很大程度改变现在的生活状态,似乎还要在5G普及之后等待相应的设备推出之后才能感受到。 5G网络的到来也让有些人开始质疑WiFi技术,担心其是否会被取代。虽然5G网络号称可以大幅提升传输速度甚至可以超过目前的宽带传输,但确切地说5G网络可以取代WiFi还为时过早。 实际上,WiFi技术也在不断发展,最新的WiFi 6也已推出。相较于上一代WiFi技术,WiFi 6基于802.11ax标准,不仅在传输速度方面有40%左右的提升,而且在MU-MIMO方面有创新的优化,能够实现一次传输更大的数据量,同时AP接入点也能够同时连接协调更多的接入设备。 不仅如此,WiFi 6的安全性也得到了进一步提升,全新的WPA3将会成为支持WiFi 6硬件设备的标准安全加密方式,支持WiFi 6的硬件设备想要得到WiFi联盟的认证就必须要使用WPA3的加密方式。 此外,从资费方面来看,5G网络也是无法完全代替WiFi的。5G网络的实现是需要运营商利用频谱建立基站扩大5G网络所占用的信号频段,而这些频谱是需要付费租用的许可频谱,因此用户需要向运营商支付话费和流量费等费用。但WiFi网络所使用的频谱是免费的非商业许可频谱,虽然我们在接入宽带时需要向运营商支付宽带费用,但我们连接AP的WiFi信号时是不需要支付任何费用的。 而且5G网络所使用的毫米波和高频无线电磁波都是极易受到外界干扰的,因此在传输速度方面虽然会非常快,但在覆盖面积以及稳定性方面并不占优势,所以5G网络在当下是无法替代WiFi的。WiFi 6的快速普及成了大势所趋。 作为在有线和无线领域奠定了领导地位的领先企业,Ruckus产品和解决方案一直以性能、安全性、稳定性等优势著称,在WiFi 6年终优势的日益凸显以及应用场景的不断增多,Ruckus也开始在WiFi 6领域提供更好的接入服务,并推出了业界首款支持物联网和LTE功能的802.11ax无线接入点Ruckus R730,支持大容量和12个空间串流,可以满足体育场、火车站和学校等超高密度用户环境的传输需求,为更多用户提供一致和可靠的数据吞吐量,为融合式WiFi、物联网和LTE部署奠定了基础。 Ruckus R730 Ruckus R730配备了嵌入式蓝牙低功耗(BLE)和Zigbee无线通讯技术,同时还可以使用Ruckus物联网模块(该模块可以根据低功耗蓝牙(BLE)、Zigbee和低功耗远距离无线传输(LoRa)协议等不同标准连接终端)进行扩容,支持LoRa等其他物理层协议,使得R730可以融合这些独立的网络和与之相关的物联网终端接入、传输网络并且进行管理、协调和连接到物联网云服务平台。 Ruckus还提供了入门级ICX 7150 Z系列和ICX 7650,来满足R730不断增长的以太网供电(PoE)需求,还提供了支持ICX 7650 Z系列交换机数千兆位吞吐量所需的接入端口以及每秒100千兆位超高密度部署所需的上行链路,可以实现无线吞吐量的阶梯式增长,让WiFi 6的部署达到最佳效果。 同时,Ruckus R730支持在公民宽带无线电服务(CBRS) 3.5 GHz频段运行的模块化Ruckus OpenG™ LTE基站功能,使R730能够直接提供LTE接入服务。使用模块化或独立的LTE AP,用户可以搭建自己的私有LTE网络,提高室内蜂窝LTE服务的质量和容量。 此外,Ruckus R 730在安全性上也做了进一步提升,采用了下一代WPA3无线安全协议和WiFi Enhanced Open协议,拥有兼容设备的用户将享受到更多重要的安全功能,如:通过使用新的SAE(对等实体同步认证)密钥交换协议,防止暴力和字典攻击以及公共场所网络常见的未经身份验证的流量嗅探攻击,让用户在家里、办公室和公共场所使用WiFi时都更加安全。 Ruckus在802.11ax领域的领先地位,主要得益于优异的产品性能和无与伦比的高密度设计。Ruckus R730的使用表现,也得到了用户的充分认可。未来,Ruckus还将继续紧随无线、有线和物联网市场的发展趋势,提供更加全面的产品和服务支持。
网络环境的逐步完善、电子设备的迅速普及,让办公领域迎来了新革命。
大家所用的 WPS,其实也已经逐步打破了过去诸多功能限制,在方方面面迎来了全新的升级。
「云空间」组件就是其中最好的例子,它的每一种用法,都能让你通往高效世界的大门。今天,就给大家介绍它的 5 种代表用法~
01
化身「移动 U 盘」
手机、电脑轻松查看文档
在以前,工作文档总会存储在公司电脑本地。可这样一来,下班时间若要临时处理就会十分麻烦。
虽然微信、QQ 可以传输备份,但是一份文档也会因此变成多个版本,存储管理不易。
在 WPS 中,其实你可以通过云空间的「文档云同步」功能,让打开的文档自动同步。在家用家里的电脑、外出用手机就能直接查看/编辑。
只要在设备间使用同一个账号,就能轻松实现同步。
点击查看使用教程:《如何正确开启 WPS 文档云同步》
02
文档版本恢复器
改动不满意,都可随时恢复
一份正式的文档总需要经历多次修改,但版本一多不易存储管理,十分容易混淆。更怕遇到对方来一句「还不如最初的版本好」
而通过 WPS 云空间的「历史版本」功能,文档的每一次改动都会自动以时间、修改人为维度,自动存储改动的版本。
这意味着文档即便改动多次,存储一份就足够。若需要查看之前的版本,选择「历史版本」便能查看此前所有的改动版本,支持一键预览+恢复。
点击查看使用教程:《如何使用 WPS 历史版本功能》
03
文件分享神器
无需下载发送,永不过期
日常工作和生活,总少不了在微信上进行文件收发。但它存在着两个问题:
1) 文件要下载本地才能发送,且大小限制 100MB 内
2)微信会自动清理文件,想找份文件却提示已经过期
而通过 WPS 云空间的「分享」功能,文档将会以链接的形式进行分享,不需要下载本地,也无惧微信清理。
分享前,自由设置文档的有效期,文档有效期自己做主;分享后,对方点击链接就能查看文档,保持原有排版格式。
点击查看使用教程:《如何用链接分享文档?》
04
团队的高效法宝
告别反复沟通,让效率翻倍提升
一个团队/公司,如果有快捷的「资料共享」,那么就能省下许多反复沟通的成本。
而通过 WPS 云空间的「共享文件夹」功能,可以提前将各种教程文档放入同一个文件夹,当有人询问时,发送一个「共享文件夹」链接,员工点击就能自行查阅。
后续若教程有改动,财务的同事能直接更新「共享文件夹」内的文档,员工点击后就能直接看到最新的教程,极大地减少反复沟通的成本。
点击查看使用教程:《如何使用「共享文件夹」功能?》
05
多人协作的好工具
一份文档,多人同时在线编辑
工作中常需要和他人共有协作完成一份文档,比如活动方案、工作报告、信息填写等等。
但以往总是各自填写,文件发来发去.......偶尔还出现内容被删改,甚至不知道是谁干的「好事」,搞得人一个头两个大 而通过 WPS 云空间的「多人协作」功能,发送链接给好友/同事,便可多人同时编辑一份文档。内容编辑实时同步,编辑状态自动提示,避免多人同一位置编辑。
点击查看使用教程:《如何开启「多人协作」模式?》
目前,WPS 用户皆可自动免费获得 1GB 的云空间。它就像普通的网盘,可存储任意文档、照片、音频等格式文件,让你的每份资料唾手可得。
如果你觉得免费的 WPS 云空间不够用,可升级会员实现扩容(最高可提升至 365GB,并享有 70+ 办公特权)。
肇庆街拍——了解家乡事,关心身边人,总有一个理由让你爱上肇庆!
双色球2020116期开奖结果出炉了!双色球12亿派奖火热进行中!本期一等奖特别奖派奖金额为3000万元,一等奖普惠奖派奖金额为500万元。本期的奖池为7.57亿元,单注最高可中2000万!开奖号码如下,拿起彩票看看有无中奖吧! 红球:05 06 14 16 19 27 蓝球:10 附1:双色球中奖规则图表(点击图片查看):
附2:双色球复式投注金额对照表(点击图片查看):
附3:双色球胆拖投注金额对照表(点击图片查):
附4:双色球复式投注中奖金额计算表(点击图片查看):
附5:双色球近30期走势图(点击图片查看):
双色球玩法规则:
开奖时间:每周二、四、日21:15开奖;每周三期,开奖号码通过摇奖方式产生,中国教育电视台对开奖进行现场直播。
玩法说明:双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01~33,蓝球号码范围为01~16。双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码,顺序不限。
问题描述 Windows10 下使用
Traceback (most recent call last): File "C:\Users\xxx\Anaconda3\lib\site-packages\jupyterlab_server\server.py", line 14, in <module> from notebook.base.handlers import ( File "C:\Users\xxx\Anaconda3\lib\site-packages\notebook\base\handlers.py", line 22, in <module> from tornado import web, gen, escape, httputil File "C:\Users\xxx\Anaconda3\lib\site-packages\tornado\web.py", line 87, in <module> from tornado.httpserver import HTTPServer File "C:\Users\xxx\Anaconda3\lib\site-packages\tornado\httpserver.py", line 29, in <module> import ssl File "C:\Users\xxx\Anaconda3\lib\ssl.py", line 98, in <module> import _ssl # if we can't import it, let the error propagate ImportError: DLL load failed while importing _ssl: 找不到指定的模块。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "
1062:最高的分数
时间限制: 1000 ms
内存限制: 65536 KB提交数: 44885 通过数: 33047【题目描述】
孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?【输入】 输入两行,第一行为整数n(1 ≤ n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。【输出】 输出一个整数,即最高的成绩。【输入样例】585 78 90 99 60【输出样例】99
#include<iostream> using namespace std; int main () {int n,a[101]; int i; cin>>n;//输入人数 a[0]=0; for(int i=1;i<=n;i++) { cin >>a[i] ;//输入成绩 if(a[i]>a[0]) a[0]=a[i]; } cout << a[0] << endl; return 0; }
文章目录 在vue3.0中引入我们的antdv在项目中使用图标(icon)在项目中定制主题(遇坑)按需加载 随着我们vue3.0的出现,我们的ui组件库也有了一些变化,像我们的旧版的element-ui已经不能在vue3.0中使用了,如果要使用element的话需要使用最新版的element-plus,由于发现它并不太好用,因此我选择了Ant Design Vue。
如果我们以前经常使用antd的话,我们使用起来这个上手会非常方便。
在vue3.0中引入我们的antdv 1.首先使用我们的vue/cli创建vue3.0项目并使用less
2. 在vue3.0中使用的话我们需要安装 ant-design-vue@next 版本,安装完之后,我们只需要在main.js文件中把antdv引入到全局(由于博主比较懒,为了省事,并没有按需加载),这样我们就可以使用所有的组件了(icon除外)。如果想按需加载请参考 官方文档。
import { createApp } from 'vue'; import Antd from 'ant-design-vue'; import App from './App'; import 'ant-design-vue/dist/antd.css'; const app = createApp(); app.config.productionTip = false; app.use(Antd); 在项目中使用图标(icon) 在我们vue3.0中我们使用icon需要在我们使用的地方额外的引入我们的icon库,如下写法
import { UserOutlined } from '@ant-design/icons-vue'; 由于我们的vue的标签并不支持驼峰命名法,在我们的template中使用的时候需要,换成短横线的连接的方式如下:
<user-outlined /> 在项目中定制主题(遇坑) antd 的样式使用了 Less 作为开发语言,并定义了一系列全局/组件的样式变量,你可以根据需求进行相应调整。
我们有两种方式可以定制主题:一是创建我们的vue.config.js文件进行配置,二是创建一个less文件进行变量覆盖。
创建vue.config.js文件 module.exports = { css: { loaderOptions: { less: { lessOptions: { modifyVars: { 'primary-color': '#1DA57A', 'link-color': '#1DA57A', 'border-radius-base': '2px', }, javascriptEnabled: true, }, }, }, }, }; 并且我们要把main中改为如下
GBD-Net 明天考试今天简单理解理解吧
算法背景 物体检测中,不同大小和分辨率的多个proposal的特征细节在进行分类的时候是互补的,来自这些proposal的上下文特征的整合是目标检测中的基本问题,在本文中,作者提出了一种门控双向神经网络(GBD网络),用于在特征学习和特征提取的过程中在来自不同proposal的特征之间传递信息。这种信息传递可以通过两个方向上相邻的proposal之间的卷积来实现,并且可以在不同层之中进行。
算法原理 在不同分辨率的proposal之间根据不同的图像实例来控制传递信息是非常必要的,蓝色框代表GT,红色框是候选框,由于(a)中相似的局部特征和(b)中对遮挡区域的忽略,很难对proposal进行分类。
作者的思路就是来自不同分辨率和proposal的特征验证彼此的存在,例如兔子耳朵在局部区域的存在有助于加强兔子头的存在,而兔子上半身在更大的context区域存在也有助于验证兔子头的存在,因此作者建议具有不同分辨率和proposal的特征应该在多个层中互相传递信息,以便于在特征学习和特征提取过程中共同验证。
网络结构 GBD-Net采集Context信息的方式是直接在目标窗口基础上放大窗口以获得更多的context信息,或缩小窗口以保留更多的目标细节,以此得到多个support region,双向连接的网络让不同尺度和分辨率的信息在每个support region之间相互传递,从而综合学习到最优的特征。然而如研究动机中所说,并非所有的上下文信息都能给决策带来“正能量”,所以在双向互通的连接上都加了一个“门”,以此控制context信息的相互传播。
U盘设计 “USB闪存盘”(以下简称“U盘”)是基于USB接口、以闪存芯片为存储介质的无需驱动器的新一代存储设备。U盘的出现是移动存储技术领域的一大突破,其体积小巧,特别适合随身携带,可以随时随地、轻松交换资料数据,是理想的移动办公及数据存储交换产品。
U盘的结构基本上由五部分组成 USB端口、主控芯片、FLASH(闪存)芯片、PCB底板、外壳封装。
U盘的基本工作原理 USB端口负责连接电脑,是数据输入或输出的通道;主控芯片负责各部件的协调管理和下达各项动作指令,并使计算机将U盘识别为“可移动磁盘”,是U盘的“大脑”;FLASH芯片与电脑中内存条的原理基本相同,是保存数据的实体,其特点是断电后数据不会丢失,能长期保存;PCB底板是负责提供相应处理数据平台,且将各部件连接在一起。当U盘被操作系统识别后,使用者下达数据存取的动作指令后,USB移动存储盘的工作便包含了这几个处理过程。
通用串行总线(Universal serial Bus)是一种快速灵活的接口,
当一个USB设备插入主机时,识别出USB设备是一个支持Bulk-Only传输协议的海量存储设备。这时应可进行Bulk-Only传输方式。在此方式下USB与设备之间的数据传输都是通过Bulk-In和Bulk-Out来实现的。在这种传输方式下,有三种类型数据在USB和设备传送,它们是命令块包(CBW),命令执行状态包(CSW)和普通数据包。CBW是主机发往设备的命令。
格式如下:其中dCBWSignature的值为43425355h,表示当前发送的是一个CBW。
DCBWDataTransferLength:表示这次CBW要传送数据长度。
BmCBWFlags:表示本次CBW是读数据还是写数所BBWCBLength:表示命令的长度。 CBWCB:表示本次命令内容。也即是SCSI命令。
当设备从主机收到CBW块以后,它会把SCSI命令从CBW中分离出来,然后根据要求执行,执行的结果又以CSW的形式发给主机。 CSW的格式如下:
其中dCSWSignature的值为53425355h,表示当前发送的是一个CSW。 DCSWTag:必须和CBW中dCBWTag一样。
DCSWDataResidue:还要传送的数据。
BCSWStatue:命令执行状态,命令正确执行时,为0。
由于USB设备硬件本身的原因,它会使USB总线
闪存 闪存(Flash Memory)是非挥发存储的一种,具有关掉电源仍可保存数据的优点,同时又可重复读写且读写速度快、单位体积内可储存最多数据量,以及低功耗特性等优点。 其存储物理机制实际上为一种新型EEPROM(电可擦除可编程只读存储)。是SCM(半导体存储器)的一种。
早期的SCM采用典型的晶体管触发器作为存储位元,加上选择、读写等电路构成存储器。现代的SCM采用超大规模集成电路工艺制成存储芯片,每个芯片中包含相当数量的存储位元,再由若干芯片构成存储器。目前SCM广泛采用的主要材料是金属氧化物场效应管(MOS),包括PMOS、NMOS、CMOS三类,尤其是NMOS和CMOS应用最广泛。
RAM(随机存取存储),是一种半导体存储器。必须在通电情况下工作,否则会丧失存储信息。RAM又分为DRAM(动态)和SRAM(静态)两种,我们现在普遍使用的PC机内存即是SDRAM(同步动态RAM),它在运行过程当中需要按一定频率进行充电(刷新)以维持信息。DDR DDR2内存也属于SDRAM。而SRAM不需要频繁刷新,成本比DRAM高,主要用在CPU集成的缓存(cache)上。
PROM(可编程ROM)则只能写入一次,写入后不能再更改。
EPROM(可擦除PROM)这种EPROM在通常工作时只能读取信息,但可以用紫外线擦除已有信息,并在专用设备上高电压写入信息。
EEPROM(电可擦除PROM),用户可以通过程序的控制进行读写操作。
闪存实际上是EEPROM的一种。一般MOS闸极(Gate)和通道的间隔为氧化层之绝缘(gate oxide),而Flash Memory的特色是在控制闸(Control gate)与通道间多了一层称为“浮闸”(floating gate)的物质。拜这层浮闸之赐,使得Flash Memory可快速完成读、写、抹除等三种基本操作模式;就算在不提供电源给存储的环境下,也能透过此浮闸,来保存数据的完整性。
Flash Memory芯片中单元格里的电子可以被带有更高电压的电子区还原为正常的1。Flash Memory采用内部闭合电路,这样不仅使电子区能够作用于整个芯片,还可以预先设定“区块”(Block)。在设定区块的同时就将芯片中的目标区域擦除干净,以备重新写入。传统的EEPROM芯片每次只能擦除一个字节,而Flash Memory每次可擦写一块或整个芯片。Flash Memory的工作速度大幅领先于传统EEPROM芯片。
MSM(磁表面存储)是用非磁性金属或塑料作基体,在其表面涂敷、电镀、沉积或溅射一层很薄的高导磁率、硬矩磁材料的磁面,用磁层的两种剩磁状态记录信息"0"和"1"。基体和磁层合称为磁记录介质。依记录介质的形状可分别称为磁卡存储器、磁带存储器、磁鼓存储器和磁盘存储器。计算机中目前广泛使用的MSM是磁盘和磁带存储器。硬盘属于MSM设备。
ODM(光盘存储)和MSM类似,也是将用于记录的薄层涂敷在基体上构成记录介质。不同的是基体的圆形薄片由热传导率很小,耐热性很强的有机玻璃制成。在记录薄层的表面再涂敷或沉积保护薄层,以保护记录面。记录薄层有非磁性材料和磁性材料两种,前者构成光盘介质,后者构成磁光盘介质。
ODM是目前辅存中记录密度最高的存储器,存储容量很大且盘片易于更换。缺点是存储速度比硬盘低一个数量级。现已生产出与硬盘速度相近的ODM。CD-ROM、DVD-ROM等都是常见的ODM。
FLASH芯片 FLASH 芯片是应用非常广泛的存储材料,与之容易混淆的是RAM芯片,我们经常在有关IT的文章里面谈到这两种芯片。由于它们的工作条件与方式不一样,决定它们性能和用途也有差异。
硬盘( FLASH芯片)——硬盘就是采用磁性物质记录信息的,磁盘上的磁性物质被磁化了就表示1,未被磁化就表示0,因为磁性在断电后不会丧失,所以磁盘断电后依然能保存数据。而内存的储存形式则不同,内存不是用磁性物质,而是用RAM芯片。现在请你在一张纸上画一个“田”,就是画一个正方形再平均分成四份,这个“田”字就是一个内存,这样,“田”里面的四个空格就是内存的储存空间了,这个储存空间极小极小,只能储存电子
内存(RAM芯片) ——内存通电后,如果我要把“1010”这个信息保存在内存(现在画的“田”字)中,那么电子就会进入内存的储存空间里。“田”字的第一个空格你画一点东西表示电子,第二个空格不用画东西,第三个空格又画东西表示电子,第四个格不画东西。这样,“田”的第一格有电子,表示1,第二格没有,表示0,第三格有电子,表示1,第四格没有,表示0,内存就是这样把“1010”这个数据保存好了。电子是运动没有规律的物质,必须有一个电源才能规则地运动,内存通电时它很安守地在内存的储存空间里,一旦内存断电,电子失去了电源,就会露出它乱杂无章的本分,逃离出内存的空间去,所以,内存断电就不能保存数据了。
再看看U盘、MP3,它们的储存芯片是Flash芯片,它与RAM芯片的工作原理相似但不同。现在你在纸上再画一个“田”字,这次要在四个空格中各画一个顶格的圆圈,这个圆圈不是表示电子,而是表示一种物质。好,Flash芯片工作通电了,这次也是保存“1010”这个数据。电子进入了“田”的第一个空格,也就是芯片的储存空间。电子把里面的物质改变了性质,为了表示这个物质改变了性质,你可以把“田”内的第一个圆圈涂上颜色。由于数据“1010”的第二位数是0,所以Flash芯片的第二个空间没有电子,自然里面那个物质就不会改变了。第三位数是1,所以“田”的第三个空格通电,第四个不通电。现在你画的“田”字,第一个空格的物质涂上了颜色,表示这个物质改变了性质,表示1,第二个没有涂颜色,表示0,以此类推。当Flash芯片断电后,物质的性质不会改变了,除非你通电擦除。当Flash芯片通电查看储存的信息时,电子就会进入储存空间再反馈信息,电脑就知道芯片里面的物质有没有改变。就是这样,RAM芯片断电后数据会丢失,Flash芯片断电后数据不会丢失
作者:恺忻
排版,审核:恺忻 R中有很多绘制基因表达热图的包,下面介绍其中一种较为简单的绘制方法(使用pheatmap包)。所绘制的基因可以是筛选出来的差异表达基因,也可以是自己感兴趣的基因。本推送中所使用的输入数据input.txt如下所示:
每一行为一个基因,每一列为一个样本,WT为对照组,HOM为实验组。这里值得注意的是,这组数据为RNA-seq的数据(fpkm标准化后),通常而言,这种数值几千或几百的数据都是没有取log,如果数值是在10左右的,一般是取了log之后的。我们从GEO datasets中下载的matrix数据需要在网站上阅读一下他的数据处理过程。通常在筛选差异基因或绘制热图之前,我们可以先取log,来缩小数值的变化范围。下面是绘图的代码:
library(pheatmap)#载入所需包,没有安装的需要先安装 setwd("D:\\kwkx") #设置工作目录 data=read.table("input.txt",sep="\t",header=T,check.names=F)#读取输入文件rownames(data)=data[,1]data=data[,-1]exp=log2(data+0.01)##以2为底取logpdf(file="heatmap1.pdf",height=8,width=5)##根据所绘制热图的大小,调整长和宽pheatmap(exp, color = colorRampPalette(c("green", "black", "red"))(50), cluster_cols =F,####如果需要对行也不进行聚类,可添加cluster_rows =F show_colnames = T,##也可不显示列名 show_rownames = T,##也可不显示行名 fontsize = 12, fontsize_row=5)dev.off() 上述代码所绘制结果如下:
现在的热图中样本数比较少,所以可以将8个样本的名称全部标出,但如果有几十或几百个样本时,这样标出这些样本就会导致画面非常不清晰。如果我们希望将样本的表型在热图中进一步进行显示,则可以使用下述代码对每个样本用不同颜色的标签表示:
library(pheatmap)setwd("D:\\kwkx") #设置工作目录 data=read.table("input.txt",sep="\t",header=T,check.names=F)#读取输入文件rownames(data)=data[,1]data=data[,-1]exp=log2(data+0.01)label=c(rep("WT",4),rep("HOM",4))###根据实际情况设定标签names(label)=colnames(exp)label=as.data.frame(label)pdf(file="heatmap2.pdf",height=8,width=5)pheatmap(exp, annotation=label, ###对样本在上方加标签 color = colorRampPalette(c("green", "black", "red"))(50), cluster_cols =F, show_colnames = T, show_rownames = T, fontsize = 12, fontsize_row=5)dev.off() 所绘制结果如下图所示:
上述便是基因表达热图的简单绘制方法。
我们建立了一个读者群,将在里面分享一些生信编程小知识,生物信息化学信息文献,欢迎加入:
excel 数据划分测试集和训练集 速度很快,在大量数据下仍然能够保持较高的速度,觉得不错的,请帮忙点个赞!
代码 // An highlighted block import random import xlrd import numpy as np from xlutils.copy import copy data_path = 'C:\\Users\\gj7520\\Desktop\\pythob_files\\file_select\\data2\\train10000_2.xls' train_file = 'C:\\Users\\gj7520\\Desktop\\pythob_files\\file_select\\data2\\train_split14000.xls' test_file = 'C:\\Users\\gj7520\\Desktop\\pythob_files\\file_select\\data2\\test_split14000.xls' def write_excel_xls_append(path, value): index = len(value) # 获取需要写入数据的行数 workbook = xlrd.open_workbook(path) # 打开工作簿 sheets = workbook.sheet_names() # 获取工作簿中的所有表格 worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格 rows_old = worksheet.nrows # 获取表格中已存在的数据的行数 new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象 new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格 for i in range(0, index): for j in range(0, len(value[i])): new_worksheet.
main.js引入
import '../node_modules/echarts/map/js/world.js'
JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应用程序。Java桌面应用程序以JNLP 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点。
以前都是直接在windows下直接安装了jre,可以通过控制面板中java选项进行设置,然后点击安全选项卡,添加相应网址
但由于当前笔记本上已经安装了jdk及jre,但都是免安装的,只是在环境变量中配置了jdk的路径,jre并没有直接安装。由于要运行jnlp文件,通过网上查询得知命令
javaws -verbose D:\xxxx.jnlp 可以运行jnlp文件。但运行后报 "应用程序已被java安全阻止.........."。通过这个信息知道需要设置java安全选项,但由于不是安装版的jre,windows控制面板中并无java选项,上网上方法无果,但想到既然是通过安装版jre安装后出的选项,说不定就是个java命令。于是在jre1.8.0_271\bin中找到了 javacpl.exe,运行起来后果然是java控制面板(如上图),配置好后再执行上面命令 OK。
注意,如果有多个jre环境,要使用某个jre的javaws,要进到这个jre目录下的bin中运行javaws -verbose 命令。默认的话会根据jdk的环境变量进行查找javaws命令。
很多同仁都为选择微课剪辑视频工具烦神过。
Premiere、Edius过于专业,学习使用有些吃力。
爱剪辑、喵影等剪辑的视频有水印或需要会员。
自己以前主要推荐使用Camtasia制作教学视频,但Camtasia也是一款商业软件,对多数老师来说费用不低,2019年被国内代理后升级使用越来越难,所以重新介绍一款免费的替代工具:OpenShot Video。
OpenShot Video Editor官方版是一款专业可靠、功能强大、操作便捷的视频编辑软件。OpenShot Video Editor官方版支持跨平台编辑视频,支持修剪与切片视频,能够帮助用户很好的找到完美时刻。同时OpenShot Video Editor也拥有强大的动画框架,可以淡、滑动、反弹和动画视频项目中的任何内容。
OpenShot Video Editor软件特色
1、跨平台
OpenShot是一个跨平台的视频编辑器,支持Linux,Mac和Windows。
2、修剪和切片
快速修剪您的视频,找到完美的时刻。
OpenShot有很多简单的方法来剪切你的视频。
3、动画与关键格
使用我们强大的动画框架,您可以淡出、滑动、反弹和动画视频项目中的任何内容。
4、无限的影音轨
为水印,背景视频,音轨等添加所需数量的图层。
5、影片特效
使用我们的视频效果引擎,从视频中删除背景,反转颜色,调整亮度等。
6、音讯波形
将您的音频文件可视化为波形,甚至可以将波形输出为视频的一部分。
7、标题编辑器
为视频添加标题从未如此简单。使用我们的模板之一,或自己创建。
8、3D动画
渲染漂亮的3D动画标题和效果,例如雪,镜头光晕或飞行文本。
9、慢动作与时间特效
控制时间的力量,反转,减慢和加速视频,使用预设或设置播放速度和方向的动画。
10、编辑影片
从档案管理器拖放视讯,音讯或图片到OpenShot中。开始视讯编辑就是这么简单。
11、70+语言
OpenShot有多种语言版本,可以使用LaunchPad在线翻译。
11、简单使用者介面
我们设计的OpenShot是有史以来最简单,最友好的视频编辑软件,试一试,亲眼看看吧。
OpenShot Video Editor软件功能
主要视窗
OpenShot中的主要视窗用来加入音乐与影片档案,并能直接在时间轴上排列剪辑,同时也能放大与缩小时间轴。
拖曳
将新档案加入OpenShot的编辑项目非常容易。只需将音乐、影片或图像档案从您的档案管理员中拖拉到OpenShot的视窗中。
影片与音乐效果
要在剪辑中加入软体内建的影片与音乐特效,只需切换至特效选项页籤,然后将特效直接拖曳至剪辑区中。就是这么容易!
专案设定
在每个专案中,包含影片剪辑的名称、长度、每秒帧数、高度、宽度与宽高比,甚至是其他重要项目都能在专案中依自已需求设定。
特效设定
每个影片与音乐特效都有控制其行为的设定。使用剪辑属性视窗,您可以轻鬆地更改任何特效的设定。
旋转设定
旋转影片或图像剪辑很容易。只需拖曳旋转特效,然后调整几个设定。您就可以将您的影片以圆圈显示,或者只是静态旋转您的影片。
3D动画标题
使用Blender(3D开源动画包)的资源,在 OpenShot 中就能做出一个简单的3D动画标题画面。选择一个模板,更改一些设定,就是这样容易!
静态标题
在软体中能轻松加入标题与子标题。选择模板,字体,颜色和文字大小,然后点击存档。标题与副标题可以放在时间轴上排列。
预览视窗
在预览视窗中能控制影片项目的播放、快转、倒带或搜寻到特定的帧数,甚至还能直接跳至预先定义的标记。
OpenShot Video Editor使用方法
首先点击软件主界面中的添加按钮,打开文件浏览窗口,选择视频导入到软件中;
在文件浏览窗口中,根据MP4视频文件的存放路径,打开文件夹,选中想要进行编辑的MP4视频文件,然后点击打开,就可以将选中的视频导入到软件中;
视频成功导入到软件中,这时候我们可以在软件的视频素材窗口中看到我们刚刚选择导入的视频;
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <!--引入js文件--> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.8.0/echarts-en.common.js"></script> <div id="charts2" style="width: 99%; height: 390px; margin: 3px auto;"></div> <script> window.onload = function () { var option = { title: { text: 'xxxx统计', x: 'left', y: 'top', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'bold', } }, tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, legend: { x: '15%', textStyle: { //图例文字的样式 fontSize: 12 }, data: ['xxxx'] }, grid: { left: '3%', right: '2%', top: '15%', containLabel: true }, xAxis: { type: 'category', scale: true, triggerEvent: true, //设置文本过长超出隐藏.
紫薇树也叫百日红,现在种植的比较多。紫薇的树形不高,有独杆的,也有丛生的,还有老桩盆景和造型苗。紫薇树的叶片比较小,它的花一般是粉红色的,花瓣为褶皱状,整体是细碎的感觉,紫薇开花的时候是成簇的,非常漂亮。那么,紫薇树怎么种植?紫薇树的种植技术与养护方法有哪些?接下来我们一起去看看吧!
一、紫薇树怎么种植?
紫薇树可地栽种植,也可盆栽种植,般在11月落叶后到次年3月栽植,种植地选择在向阳的地方,土壤疏松、肥沃为宜,种植的时候可适当修剪枝叶,修剪一下紫薇树的根系。先挖好树穴,在底部施肥,覆盖一层土壤,然后将紫薇树小苗种植在树穴中,浇一次定根水。盆栽的话可将紫薇树培育成造型盆景,放在室内、阳台或庭院中观赏。
二、紫薇树的种植技术与养护方法
1、圃地选择
紫薇喜欢干燥的生长环境,土地要求地势高,利于排水浇灌,土质疏松肥沃,光照充足,只有好地块才能培育种植出优质的苗木。
2、整地
育苗的土地肥力直接决定小苗的生长质量,在深耕前,每亩施肥6~8吨鸡粪,或猪粪,牛粪等农肥,撒匀后用拖拉机翻耕,深度30厘米为宜,最好是冬季前耕地,这样可以冻死大部分害虫。整地后作畦,畦宽最佳以1.5米,各地视情况而定,靶平整,大块土壤打碎整平,畦头要留灌溉渠,畦尾要留排水沟,高低以起头高结尾低。
3、播种
全国气温都不一样,相距甚远,大部分地区在春夏秋都可以种植,选优良的品种,在种植前清将紫薇种子用水浸泡催芽,时间1天即可。然后按照行距30厘米种植,条播,和种植玉米类似,播种深度1厘米,每亩用量10~15斤,一般10~15天发芽,种植后要覆盖保湿稻草或地膜。
4、养护方法
当紫薇苗长到8~15厘米时,结合除草的时机,进行第一次间苗,主要拔除堆苗,弱苗和出芽迟的苗,改善通风透光条件,让强壮的苗木长的更好,跟匀称。当苗高25~30厘米时,进行第二次间苗,此时按株行距10厘米留苗,亩留苗20000株左右。6—8月是紫薇的速生期,应结合浇水,亩施氮磷钾三元素复合肥40公斤,做到少施、勤施,共施肥3次。雨水多时,应及时排水防涝。
三、紫薇树能活多少年?
紫薇树树龄很长,长达200年的属于正常时间范围。热带地区已广泛栽培为庭园观赏树,有时亦作盆景。紫薇具有极高的观赏价值,并且具有易栽、易管理的特点。在园林中可根据当地的实际隋况和造景的需求,采用孤植、对植、群植、丛植和列植等方式进行科学而艺术地造景。
文章来源于网络,如有侵权请联系删除。
文章目录 简介服务器网络版本1、打开网络库2、校验版本3、创建socket4、绑定地址和端口5、监听6、接受链接7、与客户端收发消息 客户端1、打开网络库2、校验版本3、创建socket4、连接服务器5、与客户端收发消息类比 运行结果源码链接遇到的问题头文件冲突 简介 socket又是什么?
将网络底层复杂的协议体系,执行流程,进行了封装后就是SOCKET了,也就是说,SOCKET是我们调用协议进行通信的操作接口,将复杂的协议过程与我们编程人员分开,我们直接操作一个简单SOCKET就行了,对于底层的协议 过程细节,我们可以完全不用知道。
在编译器转定义后就是一个unsigned int,目测当作id使用。
最简单的客户端、服务器通信流程大致如下:
收发信息可以进行很多次。
服务器 网络版本 我们使用新版本第二版
网络版本一:
#include <winsock.h> #pragma comment(lib, "wsock32.lib") 网络版本二:
#include <WinSock2.h> #pragma comment(lib, "ws2_32.lib") 注:不管是64编译环境还是32编译环境,都是用这个ws2_32.lib,并没有ws2_64.lib。
1、打开网络库 int WSAAPI WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); 功能:打开网络库/启动网络库(函数名字分析W—windows、S—socket、A—Asynchronous 异步)
参数:
wVersionRequested — 调用者可以使用的Windows套接字规范的最高版本。高位字节指定次版本号;低位字节指定主版本号。(支持版本:1.0、1.1、2.0、2.1、2.2)lpWSAData — 接收Windows套接字实现的详细信息。struct WSAData { WORD wVersion; // 我们要使用的版本 WORD wHighVersion; // 系统能提供给我们最高的版本 unsigned short iMaxSockets; // 返回可用的socket的数量,二版本之后就没用了 unsigned short iMaxUdpDg; // UDP数据报信息的大小,2版本之后就没用了 char *lpVendorInfo; // 供应商特定的信息,2版本之后就没用了 char szDescription[WSADESCRIPTION_LEN + 1]; // 当前库的描述信息 char szSystemStatus[WSASYS_STATUS_LEN + 1]; } 程序调试截图:
农作物管理系统(openlayers、python、django) 客户需求原始数据软件安装服务发布源码功能界面 客户需求 项目名称是:农作物长势遥感监测信息发布平台
农作物长势分析:做成下拉菜单,下拉菜单里面是月份。点击地块之后可以出现每个月份的长势图(是曲线图)农作物分类:农作物共分了6类,也可以做成下拉菜单,点击菜单出现棉花,玉米等类,在点击下拉菜单的时候可以在图中显示对应的种类。农作物面积:也是下拉菜单,也主要是棉花,玉米,小麦等5类作物面积。在点击下拉菜单时出现地块和面积统计数据。(要是地块数据不好显示可以只做显示面积数据)用户在点击每个地块数据时可以给用户显示地块的种植类和面积已经属于那个乡镇定位用户的地理位置,可以显示该位置的地块信息(如果是耕地就显示,不是耕地就不用显示了)地图常用的放大缩小功能,和搜索查询功能 以上是原始需求,实现上做了一些改动
原始数据 原始数据,点我
软件安装 用于发布地图服务java环境:Tomcat + geoserver + jdk用于后端python用于前端nodejs开发工具visual studio code、pycharm等 服务发布 简单发布shp 和 tif影像数据wms服务即可
源码 前端主要是react+dva+umi+antdesign框架
前端 核心源码 pages/openlayers_nongye/index.js
/* global mars3d Cesium*/ import React, { Component } from 'react'; import { connect } from 'dva'; import { Divider, Checkbox, Button, Row, Col, Tooltip, Modal, Select, Tree,Icon } from 'antd' import styles from './style.less' import echarts from 'echarts' import Pie from './pie' import Source from '.
神舟电脑新品:神舟精盾发布会已于2019年10月31日上午在深圳神舟电脑大厦招开,此次发布会一共发布了6款精盾系列的轻薄笔记本。 此次还有英特尔、英伟达、微软等重量级合作伙伴的大咖站台助力,神舟电脑产品总监王小陈先生、神舟电脑创新一部销售总监赵通先生先后上台,精心阐述神舟新产品的设计理念、畅谈行业格局在新技术变革下的发展前景。 英特尔10nm十代酷睿,锐矩显卡凸显强悍性能 神舟精盾不断创新的精神,致力于打造行业商务本标杆。此次发布的神舟电脑新品精盾X55/X57搭载最新十代酷睿10nm Ice Lake处理器,相比于 Sky Lake(六代酷睿)有了巨幅提升。与英特X55S1、X55A1分别搭载I5-1035G7、I5-1035G4处理器,第 9 代集成图形引擎相比,新一代集显的图形性能将提高近一倍。,为大家带来更畅快的电脑使用体验。 超薄全金属机身,15.6吋72%色域全面屏 精盾X55/X57外壳采用高硬度轻薄的铝合金材质,整机厚度只有17.3mm,使于携带。另外,X55/X57搭配15.6吋,72% 色域全面屏,色彩丰富饱满,真实艳丽。还采用了四个扬声器,为你带来舒爽听觉享受。 雷电3接口强大拓展,Wi-Fi 6畅快连接 神舟精盾主打轻薄的设计理念之外,精盾X55/X57还采用了Type-C雷电3接口,可以外接雷电3拓展坞、显卡坞、雷电移动硬盘,在4K视频传输、AI计算等领域实现突破,加上新一代802.11AX(Wi-Fi6)无线传输标准的无线网卡,使得扩展性、可玩性更强。 总结:从上面可以看出神舟精盾X55/X57笔记本无论是办公学习,还是休闲娱乐,都可轻松应对。特别是在图形、视频编辑方面性能显得更突出。对于5000元档位的笔记体更有优势,喜欢的伙伴不妨去看看,相信会给你惊喜。
【太平洋汽车网 导购编辑推荐频道】《选车晚9点》的栏目已经运作了有一段相当长的时间了,每天晚上关注我们的网友都很多,问题是五花八门,对我们的信任在此表示无比感激,我们导购组的编辑也将继续竭尽所能为大家排忧解难,也欢迎大家多多关注我们的《选车晚9点》这一档真人即时在线回答的栏目。虽然我们把每天的量定在30个问题左右,但是这30个问题都是比较有代表性的内容,而现在大家看的这篇文章,我们就是从精选出一些问题汇总给大家,希望可以让有共同疑惑的网友能够得到个了解,同时也会对回答内容做一个补充说明,针对因为晚上在线时长太短进行一个补充。
关于周四、五晚上的内容,大家可以点击《选车晚9点》,右侧还可以点击参加下午4点进行的《用车下午茶》进行关于用车疑问的提问,希望大家踊跃参与。
问题1:想买辆家用带步车,看了老款K2自动1.4GLS,新款1.5自动远景请帮我评价,哪个性价比更高,主要看皮实耐用,小毛病少点,其实心里还是支持国产的,希望老师帮我分析一下,谢谢了
解答人:朱志延——十万预算,选?合资小车还是自主SUV?
这个问题其实很多人都会有遇到,10万元目前是很多人第一购车时的预算区间,那这个价位往往有两种选择,一是品牌知名度高,空间不大配置不高的合资小型车,另一种是选择空间大配置丰富,但是品牌知名度不高,对于有些人来说自觉定位更低的自主品牌SUV。这种时候,是要空间还是要面子?
其实呢,首先对于那些觉得买自主品牌低人一等的朋友来说,只能说还是带着老眼光看世界,目前自主品牌SUV崛起迅速,无论从造车工艺、产品稳定性上都已经有了长足的进步,特别是在10万元区间内,自主品牌SUV已经取得了统治性地位,哈弗H6多年蝉联SUV销量排行榜冠军,后起之秀传祺GS4、吉利博越也引起了很大范围的关注。所以说,目前的车市,10万元预算选择自主品牌SUV无疑是最为理性和最划算的选择。
但如果对于合资品牌情有独钟,10万元的小型车该如何选择呢?这里比较推荐的还是日系的几款小型车,首先是丰田旗下的致炫和威驰,一款两厢一款三厢,空间大、质量稳定,内饰设计也很温馨,后期维护成本不高,对于年轻小家庭代步,是非常高性价比的选择。其次就是本田飞度,经典小车,身材小空间大,对于首次购车的用户来说,能够满足日常通勤需求,还有这一定的操控乐趣。
问题2:你好专家,雅阁2.0与天籁2.0哪辆从使用,日后保养及性价比更好一点?
解答人:朱志延——雅阁和天籁选谁好?
这也是一个经常在论坛里争论不休又多年没有一个确切答案的问题,日系热门中级车之间的争论,各自相持不下,加上一个丰田凯美瑞,三台车之间的较量可以做成一篇大文章(事实上我们已经做了,文章不久后推出,敬请期待)。其实,这两台无论是从保养费用、空间配置、可靠性稳定性,都是伯仲之间,所以还是要看不同的驾驶风格来做不同选择,正所谓没有最好的,只有最合适的。
首先,本田在操控上颇有建树,作为曾经在性能车领域有过一番传奇,缔造了红头万转发动机的厂家,在雅阁这样的中级车上也有着不错的运动调校,无论是转向手感还是底盘质感,有着在同级中都算是优秀的操控感,如果你是喜欢开快车热爱这种驾驭感的朋友,选择雅阁会让你有更多归属感;而天籁以移动的沙发著称,虽然近年来也开始打运动牌,但是实际驾驶感受还是强调安静的车内氛围和放松舒适的驾乘体验,柔软的座椅和绵密的滤震相得益彰,对于驾驶风格温和追求舒适的朋友来说,天籁才是他们的归宿
问题3:凯美瑞,君越和金牛座,老师推荐哪款,市区上下班
解答人:黄志宏——鸡头凤尾的选择
凯美瑞、新君越和金牛座,客观来说,这并不是一个级别的车型选择,也就是我们经常谈到的“鸡头和凤尾的选择”,一般来说,定位略低的凯美瑞在同价位下的配置肯定是无敌的,而且它是一款比较中庸的车型选择,相对来说,没有什么突出的优势,但也没有劣势。
对于新君越来说,换代以后,无论是外观还是内饰设计都有很大的突破,看起来就很高档,而低配的新君越配置就不算理想,只能说安全配置比较有保障,但舒适性享受就有些不足了。金牛座和君越的处境有些相似,好在后排的空间营造上做的比较好,而且对后排乘客的照顾比较贴心,不过还是市场认可度一般,不能满足一般人的面子需求。综合来看,我还是更推荐实用的凯美瑞。
问题42:预算12万落地,轩逸、英朗、卡罗拉、昂克赛拉选哪个?
解答人:黄志宏——12万最适合的家用车
预算12万元的家用车在提问中还是很多的问题,通常来说,热销的新轩逸、英朗、卡罗拉和昂克赛拉都是很热门的选择。我认为新轩逸的后排空间比较有优势,乘坐舒适度也很高,更重要的是油耗比较低,用车成本不高。而英朗的设计我认为比较大气,有中级车的感觉,但是变速箱的表现比较一般,且有很多案例反应变速箱会出质量问题;卡罗拉作为中庸的家用车选择,不会有什么大问题,但是设计也太过平庸了。
最后是昂克赛拉了,它是定位运动的,所以后排空间就很一般了,而且油耗方面也没有特别的优势,从家用的角度出发就不太推荐了。
编辑推荐阅读:
《选车晚9点》回顾 速腾和蔚领怎么选
《选车晚9点》回顾 昕动/致炫怎么选
《选车晚9点》回顾 ATSL和君越怎么选?
《选车晚9点》君越和金牛座1.5T怎么选?
《选车晚9点》 7座车选MPV还是SUV?
(图/文/摄:太平洋汽车网 朱志延)
正常情况下,ONU接入到PON网络中,按照预定的时隙发光,ONU之间互不干涉、互不影响。但是如果使用了非正规的ONU,就会出现ONU不按照预定时间发光,持续发光或者乱发光现象,此类ONU就是流氓ONU。
了解了流氓ONU的概念,再来看流氓ONU造成的后果。转载请注明出处:通信百科 公众号
PON上行采用的是时分复用的技术,如果流氓ONU存在,流氓ONU上行长时间或短时间占用其他ONU的通信时隙,带来的影响就是流氓ONU所在PON口下的其他ONU无法正常工作。如果流氓ONU是长发光,则同一PON口下其他的ONU将一直无法上线;如果流氓ONU是乱发光,则同一PON口下其他ONU可能会出现反复上线和下线的现象。
想象一下,坐在沙发上津津有味地看着4K视频,或者与远方的闺蜜煲电话粥聊得正嗨,然后屏幕黑了,电话掉线,瞬间感觉世界都灰暗了。而这有可能就是流氓ONU造成的通信故障。既然流氓ONU威力这么大,一定要想办法快速处理此类故障。
不用着急,让我们来看流氓ONU的处理过程。针对长发光流氓ONU的处理一般分为三个过程:检测、排查、隔离。需要记得,OLT默认只对流氓ONU做检测,不进行自动排查和隔离。转载请注明出处:通信百科 公众号
检测(check):检测就是定时对PON口进行测试,检查是否存在流氓ONU。检测过程不影响ONU的业务转发,但是也无法确定具体哪个ONU是流氓ONU。
排查(detect):排查过程就是确定具体哪个ONU是流氓ONU的过程。排查过程中所有ONU都会下线,会影响ONU的正常业务转发。
隔离(isolate):隔离就对ONU下发指令,关闭ONU光模块的发送电源,消除流氓ONU对PON口下其他ONU的影响。
流氓ONU检测过程如图1所示,ONU上行按照时间顺序依次发光,在空闲时刻,OLT无法接收到光;当存在长发光ONU时,空闲时刻就会接收到光信号,说明有长发光流氓ONU。如果自动排查开关关闭,则上报流氓ONU的告警;如果自动排查开关打开,则系统进入排查阶段。
图1 PON口发现长发光ONU的原理
流氓ONU排查过程如图2所示,关闭所有ONU的光模块发送电源,OLT无法接收到光信号,然后依次打开ONU的光模块发光电源,如果OLT无法接收到光信号,则表明此ONU不是长发光流氓ONU;如果OLT能接收到光信号,则表明该ONU就是长发光流氓ONU。流氓ONU的排查分为手工排查和自动排查。由于排查过程中会中断该PON口下的所有ONU的业务,所以一般不建议打开系统的自动排查功能。
图2 排查长发光ONU原理
排查检测到长发光ONU后,OLT下发指令重新关闭ONU上行光模块的电源,禁止其上行发光。一旦ONU光模块上行发光被OLT关断后,这个关断将是永久性的,即ONU复位或掉电重启其光模块的上行发光也是被关断的,除非OLT下发命令重新打开,该机制保障了长发光ONU被彻底隔离。 往期文章:
GPON业务资源共享-复用
GPON网络光功率损耗及预算
GPON是如何实现上下行传输的?
GPON的灵魂:GEM port与T-CONT
GPON升级10G GPON:外置合波方案和Combo PON方案
ODN链路总损耗预算
GPON光分路器的选择与布放
你的每一次“在看”,对我来说都是最大的鼓励
深度学习 进一步提高识别精度 集成学习,学习率衰减,数据扩充
Data Augmentation基于算法“人为地”扩充输入图像。
对于输入图像,通过施加旋转、垂直或水平方向上的移动等微小变化。
通过裁剪图像的“crop处理”、将图像左右翻转的“flip处理”对于一般图像,施加亮度等外观上的变化、放大缩小等尺度上的变化也是有效的。
加深层的动机 可以减少网络的参数数量。加深了层的网络可以用更小的参数达到同等水平的表现力。叠加小型滤波器来加深网络的好处是可以减少参数的数量,扩大感受野(给神经元施加变化的某个局部空间区域)。并且,通过叠加层,将ReLU等激活函数夹在卷积层的中间,进一步提高了网络的表现力,通过非线性函数的叠加,可以表现更加复杂的东西。
另一个好处就是使学习更加高效。与没有加深层的网络相比,通过加深层,可以减少学习数据,从而高效学习。
VGG VGG是由卷积层和池化层构成的基础的CNN。特点在于将有权重的层叠加至16层,具备了深度。
VGG中需要注意的地方是,基于3×3的小型滤波器的卷积层的运算是连续进行的。重复进行“卷积层重叠2次到4次,再通过池化层将大小减半“的处理,最后经由全连接层输出结果。
GoogLeNet GoogLeNet在横向上有“宽度”,这称为“Inception结构”。Inception结构使用了多个大小不同的滤波器(和池化),最后再合并它们的结果。GoogLeNet的特征就是将这个Inception结构用作一个构件(构成元素)。在GoogLeNet中很多地方使用了1×1的滤波器的卷积层。这个1×1的卷积运算通过在通道方向上减小大小,有助于减少参数和实现高速化处理。
ResNet ResNet的特征在于具有比以前的网络更深的结构。
在深度学习中,过度加深层的话,很多情况下学习将不能顺利进行,导致最终性能不佳。为了解决这类问题,导入了“快捷结构”(也称为“捷径”或“小路”)。导入这个结构后,就可以随着层的加深而不断提高性能了。
在连续两层的卷积层中,将输入x跳着连接至2层后的输出。通过快捷结构,原来的2层卷积层的输出 F ( x ) F(x) F(x)变成了 F ( x ) + x F(x)+x F(x)+x。
通过快捷结构,反向传播信号可以无衰退地传递。
因为快捷结构只是原封不动地传递输入数据,所以反向传播时会将上游的梯度原封不动地传向下游。这里的重点表示对来自上游的梯度进行任何处理,将其原封不动地传向下游。因此,基于快捷结构,不用担心梯度会变小(或变大),能够向前一层传递“有意义的梯度”。
迁移学习
实践中经常会灵活应用使用ImageNet这个巨大的数据集学习到的权重数据,这称为迁移学习,将学习完的权重(的一部分)复制到其他神经网络,进行再学习。
说明 此为本人学习《深度学习入门》的学习笔记,详情请阅读原书.
答案Github库
https://github.com/jzplp/OSTEP-Answers
问题 1 答案 [testjz@localhost cpu-sched]$ ./scheduler.py -p FIFO -l 200,200,200 -c ARG policy FIFO ARG jlist 200,200,200 Here is the job list, with the run time of each job: Job 0 ( length = 200.0 ) Job 1 ( length = 200.0 ) Job 2 ( length = 200.0 ) ** Solutions ** Execution trace: [ time 0 ] Run job 0 for 200.00 secs ( DONE at 200.
使用优考试在线考试系统进行组织考试,若在防作弊方面有“想要阻止考生切换页面找答案”的需求,一般可以通过“防切屏设置”和“霸屏考试”这两个功能来实现。
开启防切屏或者霸屏考试,其防止切屏的方式,有一个共同点就是需要考生在全屏的环境下考生。那么,【防切屏】与【霸屏考试】功能下的全屏考试有什么区别?
1.进入全屏考试的方式不同:
(1)开启防切屏设置的考试,在PC端进行考试时,系统会给出提示,点击【进入全屏,开始考试】将进入全屏考试。
(2)开启【霸屏考试】,在PC端进入考试时,首先需要先下载霸屏考试模块,下载后返回考试即可进入全屏考试。
注意:防切屏考试的全屏考试模式仅支持PC端,手机端不会进入全屏但切换页面也会计如切屏次数;霸屏考试功能仅支持PC端考试使用。
2.退出考试的方式不同:
(1)防切屏下的全屏考试,如果退出了全屏下的考试,会被视为切屏一次,而如果出卷人设置了切屏一次就强制交卷,那么一旦考生退出了全屏考试,即失去了考试的资格;若是有给出2次或以上的机会,那么系统会给出相应的提示警告。
(2)霸屏考试下的全屏考试是无法退出的,一旦进入了霸屏考试,那么考生需要交卷后方可退出全屏。
以上即为使用优考试系统使用了防作弊的【防切屏】与【霸屏考试】功能下的全屏考试的区别。有需要的话不妨可以试试!优考试支持免费试用。
马上免费试用优考试
推荐阅读:
在线考试系统有什么智能防作弊功能?
ANR有哪些类型?什么情况下会产生ANR?ANR如何解决? ANR概念 ANR(Application Not Responding) 应用程序无响应。如果应用程序在UI线程被阻塞太长时间,就会出现ANR,通常出现ANR,系统会弹出一个提示提示框,让用户知道,该程序正在被阻塞,是否继续等待还是关闭。
出现ANR必须解决
ANR类型 KeyDispatchTimeout(常见) input事件在5S内没有处理完成发生了ANR。
logcat日志关键字:Input event dispatching timed out
BroadcastTimeout 前台Broadcast:onReceiver在10S内没有处理完成发生ANR。
后台Broadcast:onReceiver在60s内没有处理完成发生ANR。
logcat日志关键字:Timeout of broadcast BroadcastRecord
ServiceTimeout 前台Service:onCreate,onStart,onBind等生命周期在20s内没有处理完成发生ANR。
后台Service:onCreate,onStart,onBind等生命周期在200s内没有处理完成发生ANR
logcat日志关键字:Timeout executing service
ContentProviderTimeout ContentProvider 在10S内没有处理完成发生ANR。
logcat日志关键字:timeout publishing content providers
为什么出现ANR 1:主线程频繁进行耗时的IO操作:如网络请求,数据库读写 UI线程进行潜在的耗时操作都很可能造成ANR,如网络请求,操作数据库、IO操作、复杂的layout、庞大的for循环、高耗时的计算(如改变位图尺寸)等。
这些耗时操作都应该在子线程中来完成,然而并不是说主线程阻塞在那里等待子线程的完成(也不是调用Thread.wait()或是Thread.sleep()),而是主线程应该为子线程提供给一个Handler或者使用AsyncTask等异步操作的方式,以便子线程完成操作时能够提交结果给主线程,主线程根据结果更新UI。以这种方式设计应用,将可以保证主线程保持对输入事件的响应的敏感性,并能避免由于输入事件的5秒超时引发的ANR对话框。
具体例子:
(1)Realm数据库官方称速度非常快,可以在UI线程中操作,测试时的确没有问题,但是上线后,发现一大堆anr问题(项目接入bugly)。(2)在onlayout读写一个文件,用sysytrace测试执行时间,只有微秒级别,测试时没有任何问题,但是上线后一大堆anr问题。(3)主线程使用SharedPreference,测试时没有任何问题,但是上线后一大堆anr问题。 原因:
为什么测试时没有任何anr问题,一上线就报各种anr问题?
测试用的手机都是性能比较好的手机,而且手机没有安装各种一大堆软件,内存占用少,硬件性能好。而用户的手机可能是性能不大好的机子,而且可能还安装了大量的软件,手机速度下降等等。
总结:
凡是进行IO读写操作(数据库,文件,网络,序列化等),都不要在UI线程操作。
2:多线程操作的死锁,主线程被block; 并发编程导致的死锁引起的ANR,比如调用thread的join() / Sleep() / Wait() 或者等待lock的时候
3:主线程被 Binder 对端block; Binder通信机制默认是同步的,会阻塞调用的线程,当然也有异步的oneway机制。
4:System Server中WatchDog出现ANR; framework层的开发遇到的比较多。
5:service binder的连接数量达到上线无法和和System Server通信 Binder被占满导致主线程无法和SystemServer通信
6:系统资源已耗尽(管道、CPU、RAM、IO),无法获取到系统资源 大量的线程死循环的去做任务,导致应用获取不到CPU的时间片去处理用户输入事件。
ANR问题如何解决 线下开发过程中,如果出现ANR,Android Studio的logcat会有输出信息提示(但并不一定真的是那一行代码导致的anr,需要根据提示信息综合判断),并且还会在/data/anr/traces_*.txt 中保存有anr相关信息,结合logcat中的提示信息判断anr是由什么原因导致的。
炸弹人游戏 题目内容:《炸弹人》游戏的地图是一个mn的方格矩阵。有的方格是空地(数字0表示),有的方格是障碍物(数字2表示),有的方格里是游戏玩家们操控的“炸弹人”(数字1表示)。玩家可以在空地上安放炸弹,炸弹爆炸的火焰呈十字型,并可延伸到无限远处,只有遇到了障碍物才会停下来。火焰所经过的方格内如果有“炸弹人”,该“炸弹人”会被炸死,每炸死一个“炸弹人”,玩家就会获得1分。现现在某玩家手中只剩下一颗炸弹了,他可以把这颗炸弹安放在任何空地上,编程求他安放在什么位置才能获得最大得分。
输入:第一行,两个整数m和n(1<=m,n<=100),表示有一个mn的地图。接下来m行是一个由整数0、1、2构成的m*n的矩阵,表示当前地图情况,保证有空地安放炸弹。其中数字0表示空地,数字1表示“炸弹人”,数字2表示障碍物。
输出:输出玩家安放炸弹的最佳位置及最大得分数。
#include <stdio.h> int main () { int a[100][100],m,n,max=0,cnt; int i,j,k,row=0,col=0; scanf("%d%d",&m,&n); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<m;i++) { for(j=0;j<n;j++) if(!a[i][j]) { cnt=0; for(k=j-1;a[i][k]!=2&&k>=0;k--) //左 cnt+=a[i][k]; for(k=i-1;a[k][j]!=2&&k>=0;k--) //上 cnt+=a[k][j]; for(k=j+1;a[i][k]!=2&&k<n;k++) //右 cnt+=a[i][k]; for(k=i+1;a[k][j]!=2&&k<m;k++) //下 cnt+=a[k][j]; if(cnt>max) max=cnt,row=i,col=j; } } printf("row=%d,col=%d,max=%d\n",row+1,col+1,max); return 0; }
什么是H桥? H桥是一个比较简单的电路,通常它会包含四个独立控制的开关元器件(例如MOS-FET),它们通常用于驱动电流较大的负载,比如电机,至于为什么要叫H桥(H-Bridge),因为长得比较像字母H,具体如下图所示;
这里有四个开关元器件Q1,Q2,Q3,Q4,另外还有一个直流电机M,D1,D2,D3,D4是MOS-FET的续流二极管;
开关状态 下面以控制一个直流电机为例,对H桥的几种开关状态进行简单的介绍,其中正转和反转是人为规定的方向,实际工程中按照实际情况进行划分即可;
正转 通常H桥用来驱动感性负载,这里我们来驱动一个直流电机;
打开Q1和Q4;
关闭Q2和Q3;
此时假设电机正转,这电流依次经过Q1,M,Q4,在图中使用黄色线段进行标注,具体如下图所示;
正转 反转 另外一种状态则是电机反转;此时四个开关元器件的状态如下;
关闭Q1和Q4;
打开Q2和Q3;
此时电机反转(与前面介绍的情况相反),这电流依次经过Q2,M,Q3,在图中使用黄色线段进行标注,具体如下图所示;
反转 调速 如果要对直流电机调速,其中的一种方案就是;
关闭Q2,Q3;
打开Q1,Q4上给它输入50%占空比的PWM波形,这样就达到了降低转速的效果,如果需要增加转速,则将输入PWM的占空比设置为100%;
具体如下所示;
停止状态 这里以电机从正转切换到停止状态为例;
正转情况下;Q1和Q4是打开状态;
这时候如果关闭Q1和Q4,直流电机内部可以等效成电感,也就是感性负载,电流不会突变,那么电流将继续保持原来的方向进行流动,这时候我们希望电机里的电流可以快速衰减;
这里有两种办法:
第一种:关闭Q1和Q4,这时候电流仍然会通过反向续流二极管进行流动,此时短暂打开Q1和Q3从而达到快速衰减电流的目的;
第二种:准备停止的时候,关闭Q1,打开Q2,这时候电流并不会衰减地很快,电流循环在Q2,M,Q4之间流动,通过MOS-FET的内阻将电能消耗掉;
应用 实际使用的时候,用分立元件制作H桥是很麻烦的,市面上已经有很多比较常用的IC方案,比如常用的L293D、L298N、TA7257P、SN754410等。接上电源、电机,通过输入控制信号就可以驱动电机了;
下面是某宝上的L298N模块,比较常见,对于新手玩家非常友好,接线也十分简单;
L298N模块 这个模块有一个板载5V稳压器,该稳压器可使用跳线的方式进行使能。
如果电机电源电压高达12V,我们可以启用5V稳压器,并且5V引脚可以用作输出,例如给Arduino板供电。
但是,如果电动机电压大于12V,则必须断开跳线,因为这些电压会损坏板载5V稳压器。
在这种情况下,5V引脚将用作输入,因为我们需要将其连接到5V电源,以使IC正常工作。
我们在这里可以注意到,该IC的电压降约为2V。因此,如果使用12V电源,则电动机端子上的电压约为10V,这意味着我们将无法从12V直流电动机中获得最大速度。
这里使用Arduino为例,这是网上找的一个Demo整体的框架如下图所示;
架构 #define enA 9 #define in1 6 #define in2 7 #define button 4 int rotDirection = 0; int pressed = false; void setup() { pinMode(enA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(button, INPUT); // Set initial rotation direction digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } void loop() { // Read potentiometer value int potValue = analogRead(A0); // Map the potentiometer value from 0 to 255 int pwmOutput = map(potValue, 0, 1023, 0 , 255); // Send PWM signal to L298N Enable pin analogWrite(enA, pwmOutput); // Read button - Debounce if (digitalRead(button) == true) { pressed = !
内容来源:2019年3月6日,阎贵成在路演中分享了对于边缘计算的理解和投资逻辑。
主讲人:阎贵成。中信建投通信行业首席分析师,北京大学学士、硕士;专注于光通信、物联网、5G、海外新经济等领域研究。2017年《新财富》、《水晶球》,2018年《水晶球》通信行业最佳分析师第一名团队核心成员。
核心观点 客观来讲,边缘计算确实已经进入产业化阶段,但尚处早期。我们认为,制约边缘计算发展的核心不是技术,而是应用需求与商务模式。
毕竟边缘计算更多强调靠近用户的计算、存储与分发,采用“建设边缘机房DC、部署边缘服务器等硬件、加强边云协同”的方式实现即可,但恰恰因为这样,额外的固定资产投资亟待新的应用场景及其衍生而来的为边缘计算额外付费的模式,否则边缘计算也是空中楼阁。
但5G已经进入商用冲刺阶段,未来的应用将可能百花齐放,自动驾驶、工业控制、赛场直播等场景对边缘计算有着强烈需求,因此随着边缘计算发展,投资机会就会出现。
一、边缘计算和云计算 1、边缘计算:靠近用户一侧来完成的运算程序。
2、云计算:利用互联网实现随时随地、按需、便捷地使用共享计算、存储、应用程序等资源的计算模式(举例:云盘)。
3、区别:云计算把握整体,边缘计算专注局部。边缘计算是对云计算的补充和优化。
4、两者配合的运行模式:边缘端先对数据进行预处理,提取特征传输给云端再进行计算分析。
二、边缘计算的应用场景 1、车联网/自动驾驶领域
车联网对于数据处理的要求较为特殊:一、低时延,车辆高速运动过程中,要实现碰撞预警功能,通信时延应在几毫秒以内;二、高可靠性,由于车辆是高速运动的,信号需要在能够支持高速运动的基础上实现高可靠性。
2、工业控制类的场景
该场景要求满足低时延要求。
3、视频直播类的场景
5G的云 VR/AR,对体育赛事或演唱进行现场直播。通过对信息进行实时处理,降低时延、消除眩晕感、提升用户体验。
三、边缘计算未来的发展路径 1、当前进一步推动边缘计算发展的核心来自于应用场景
原因:如果没有应用场景为其单独付费,商务模式无法成立,边缘计算就很难发展起来。
2、目前边缘计算的应用场景和商务模式还处于探索阶段
未来边缘计算需要下沉到什么位置,取决于应用。
3、未来的市场空间实际上是取决于它是否足够下沉
如果下沉节点非常密集,它的市场空间会比较大。
四、投资逻辑 看好未来发展趋势,但当前仍处于产业化早期,具体空间测算较难。
关注4个强相关方向:
1、边缘计算设备;如浪潮信息、紫光股份、中兴通讯、日海智能、创意信息等;
2、边缘计算节点资源;如中国联通、鹏博士;
3、边缘计算运营方;如中国联通、阿里云、网宿科技等;
4、边缘计算安全监测;如深信服、中新赛克、恒为科技等。
五、精选问答 1、边缘计算这个概念会不会成为公有云厂商的一个领地,和公有云合为一体?
边缘计算大概率是需要和大的公有云、私有云相结合,可能是协同关系。
未来核心考验的是边缘节点是否丰富,以及是否能在用户有需求的地方去建设边缘计算资源池。在这个过程中,运营商有自身的优势,例如带宽资源、云资源、IDC资源等,这两方都存在机会。
但是客观来说,目前大量的数据和未来应用更多的沉淀在互联网企业的公有云上,在这个情况下,云计算厂商可能也有优势。
2、边缘计算的业绩爆发周期大概未来会在几年之内出现?
具体可能的空间取决于:
1、应用。到底是什么应用?这些应用是否愿意为边缘计算单独付费?
2、网络。5G网络的出现,会把新型应用推向真正的产业化,从而带动边缘计算的需求增长。
具体哪一年比较难判断,但2019年可能不是边缘计算能够较大规模产业化的一年,因为整体的网络和基础设施还不完全具备、应用还在探索。
3、边缘计算有什么领先的指标可以关注?
关注建设以及相关硬件设备的出货。比如关注运营商、云计算厂商对边缘计算的想法。
关注预计什么时间点启动招标,以及计划初期的边缘计算要下沉到什么位置等。
点击右边链接下载聪明投资者APP,更多精彩在等你!LinkedME
声明:凡注明“聪明投资者”的作品,版权均属聪明投资者。未经授权严禁转载、摘编或利用其它方式使用,违者必究。所有文章旨在记录和传递信息,不代表“聪明投资者”赞同或反对其观点。
由于生产需要、项目组需要,需要将之前神经网络训练的模型(keras模型hdf5类型),转换成在window环境下C++能够调用的类型。
Tensorflow支持windows环境,而且可以被vs2010调用。
在配置好windows + tensorflow的前提下,需要将Keras(*.h)模型文件转换为Tensorflow(*.pb)模型文件,便于相关api调用模型属性。
主要参考一篇教程
amir-abdi/keras_to_tensorflowgithub.com import tensorflow as tf from tensorflow.python.framework import graph_util from tensorflow.python.framework import graph_io from pathlib import Path from absl import app from absl import flags from absl import logging import keras from keras import backend as K from keras.models import model_from_json, model_from_yaml K.set_learning_phase(0) FLAGS = flags.FLAGS flags.DEFINE_string('input_model', None, 'Path to the input model.') flags.DEFINE_string('input_model_json', None, 'Path to the input model ' 'architecture in json format.
卷积神经网络 本章的主题是卷积神经网。CNN被用于图像识别、语言识别等各种场合。
整体结构 之前介绍的神经网络中,相邻层的所有神经元之间都有连接。这称为全连接。CNN中新增了Convolution层和Pooling层。CNN层的连接顺序是“Convolution-ReLU-(Pooling)”(Pooling层有时会被省略)。这可以理解为之前的“affine-ReLU”连接被替换成了“Convolution-ReLU-(Pooling)”连接。
卷积层 CNN中出现了一些特有的术语。比如填充,步幅等。此外,各层中传递的数据都是有形状的数据。
全连接层存在的问题 全连接层存在什么问题呢?那就是数据的形状被”忽视“了。比如,输入数据是图像时,图像通常时高,长、通道方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平维1维数据。
图像是3维形状,这个形状中应该含有重要的空间信息。比如,空间上邻近的像素为相似的值,RGB的各个通道之间分别有密切的关联性、相距较远的像素之间没有什么关联等,3维形状中可能隐藏有值得提取的本质模式。
而卷积层可以保持形状不变。当输入数据是图像时,卷积层会以3维数据的形式接受输入数据,并同样以 3维数据的形式输出至下一层。因此,在CNN中,可以(有可能)正确理解图像等具有形状的数据。
另外,CNN中,有时将卷积层的输入输出数据称为特征图。其中,卷积层的输入数据称为输入特征图,输出数据称为输出特征图。
卷积运算 卷积层进行的处理就是卷积运算。
对于输入数据,卷积运算 以一定间隔滑动滤波器的窗口并应用。将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算)。将这个过程在所有位置都进行一遍,就可以得到卷积运算的输出。
CNN中,滤波器的参数就对应之间的权重。
包含偏置的卷积运算的处理流
填充 在卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0等),这称为填充,是卷积运算中经常会用到的处理。在下图中对大小为(4,4)的输入数据应用了幅度为1的填充。”幅度为1的填充“是指用幅度为1像素的0填充周围。
通过填充,大小为(4,4)的输入数据变成了(6,6)的形状。然后,应用大小为(3,3)的滤波器,生成了大小为(4,4)的输出数据。
使用填充主要是为了调整输出的大小。比如,对大小为(4,4)的输入数据应用(3,3)的滤波器时,输出大小变为(2,2),相当于输出大小比输入大小缩小了2个元素。在反复进行多次卷积运算的深度网络中会成为问题。为什么呢?因为如果每次进行卷积运算都会缩小空间,那么在某个时刻输出大小就有可能变为1,导致无法再应用卷积运算。
步幅 应用滤波器的位置间隔称为步幅。
如果将步幅设为2,应用滤波器的窗口间隔变为2个元素。
综上,增大步幅后,输出大小会变小。而增大填充后,输出大小会变大。如何计算输出大小。
假设输入大小为(H,W),滤波器大小为(FH,FW),输出大小为(OH,OW),填充为P,步幅为S。此时,输出大小 O H = H + 2 P − F H S + 1 OH=\frac{H+2P-FH}{S}+1 OH=SH+2P−FH+1 O W = W + 2 P − F W S + 1 OW=\frac{W+2P-FW}{S}+1 OW=SW+2P−FW+1
上述公式只适用于可以除尽的情况。
3维数据的卷积运算 通道方向上有多个特征图时,会按通道进行输入数据和滤波器的卷积运算,并将结果相加,从而得到输出。
在3维数据的卷积运算中, 输入数据和滤波器的通道数要设为相同的值。滤波器的大小可以设定为任意值(不过,每个通道的滤波器大小要全部相同)。
在这个例子中,数据输出是1张特征图。所谓1张特征图,就是通道数为1的特征图。那么,如果要在通道方向上也拥有多个卷积运算的输出,该怎么做?为此,就需要多个滤波器。
如果追加偏置的加法运算处理,结果如下:
不同形状的方块相加时,可以基于NumPy的广播功能轻松实现。
批处理 神经网络的处理中进行了将输入数据打包的批处理。通过批处理,能够实现处理的高效化和学习时对mini-batch的对应。
我们希望卷积运算也同样对应批处理。为此,需要将在各层间传递的数据保存为4维数据。(batch_num,channel,height,width)的顺序保存数据。
也就是说,批处理将N次的处理汇总成了1次进行。
在linux下调试并测试串口
在一般的驱动中都有串口驱动一般都是在menuconfig中选中,然后在dts中写下对应引脚就可以了,驱动的话一般对应板子都带了,本文就不过得讨论了,本文主要写如何测试串口是否正常工作。
出现过得问题:串口通信的两端采用的ttl和rs232要保持一致,当时调试时不一致导致一直通信不上。
总结:
1.将要驱动的串口硬件脚TX、RX和GND连线到串口板上,将串口板接上电脑。
2.打开串口调试助手,
3.写串口app测试程序,uart_recv和uart_send函数并执行某个程序,通过串口调试助手接收或发送信息
附代码:
uart_recv.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop)
{
struct termios newtio,oldtio;
if ( tcgetattr( fd,&oldtio) != 0) {
perror(“SetupSerial 1”);
return -1;
}
bzero( &newtio, sizeof( newtio ) );
newtio.c_cflag |= CLOCAL | CREAD;
newtio.c_cflag &= ~CSIZE;
switch( nBits ) { case 7: newtio.
文章目录 一、概述二、前期准备三、总体架构图四、环境搭建1、环境准备(可选)2、Gitlab安装(1)安装并配置必要的依赖(2)安装邮件服务(3)添加 gitlab 镜像(4)安装 gitlab 安装命令(5)修改gitlab配置文件指定服务器ip和自定义端口(6)重置并启动GitLab(7)访问 GitLab页面 3、安装 Runner(1)下载一个二进制文件(2)修改执行权限(3)创建 GitLab CI 用户(4)安装并作为服务运行(5)注册 Runner 4、安装应用服务器环境(1)允许用户远程登录(可选)(2)安装JDK1.8(3) 安装 Maven3.3.9 五、创建 SpringBoot 项目1、使用Gitlab Spring 模板快速创建一个 SpringBoot 项目;2、添加环境变量(登录应用服务器密码) 六、总结 一、概述 本文主要记录如何通过Gitlab CI/CD自动部署SpringBoot项目jar包。
二、前期准备 准备三台 CentOS7服务器,分别部署以下服务:
序号系统IP服务1CentOS7192.168.56.10Gitlab2CentOS7192.168.56.11Runner (安装Docker)3CentOS7192.168.56.12SpringBoot 项目 jar 包(安装jdk、maven等) 上述服务也可以只用一台CentOS7,将所有程序都部署在同一机器上,但是更建议分开部署;
三、总体架构图 说明:
Gitlab Server 用于部署Gitlab远程仓库,对CPU和内存要求比较高,建议4核CPU,4GB以上内存;Runner Server 用于部署执行.gitlab-ci.yml 文件中定义的 stage(阶段);需要具有访问 Gitlab 仓库的权限,可以下载代码,通过注册方式(gitlab-runner register)实现;Your Laptop Server 用户部署你的应用程序,这里就是SpringBoot的 jar 包,需要提前安装 JDK 和 Maven 并配置好环境变量; 四、环境搭建 1、环境准备(可选) 三台服务器执行以下命令:
yum -y upgrade yum -y install wget yum -y install vim 2、Gitlab安装 参考地址:
怎么用word制作标书?word制作标书是每一个制作标书的制标员,如何用我们常用的办公软件来制作标书呢?除了将必要的材料编写入里面,还需要注意格式、字体等固定排版问题。如果你还是一枚制作标书的新人,请一起来和保标招标网小编学习怎么用word制作标书?
word制作标书:
鼠标右键按桌面空白处新建word文档,打开新建的word文档。
第一步:先可以编辑页面布局,页边距适中或者可以自定义页边距。个人比较喜欢上下左右各2.5厘米。
第二步:分节:点击页面布局选择分隔符选择下一页点击。设置完后双击页眉处可看见具体第1节和第2节的字样,这样就代表分节成功了。(制作投标书很重要的一步就是分节,目的是为了目录的生成,使目录页无页码,从页码“第1页”从你文档的正文开始。)
第三步:设置大纲:点击开始右键选中标题一点击修改,根据自己的要求修改,修改完成后选中你要设置的标题点击“标题一”就可以了。
第四步:设置页码:双击页脚那边就会出现页眉和页脚工具,点击页码选择你要的页码格式,如果页码开始页不是“1”可以选择“设置页码格式”起始页码输入“1”确定。确保页码“1”是从正文的第一页开始的。
第五步:生成目录:做完全部的标书内容,设置完所有的大纲,就可以生成目录了,点击引用选择目录点击自动目录就可以了。这样就可以看到生成后的目录了。
编写目录的更多方式:
一、设置标题格式
1、选中文章中的所有一级标题;
2、单击开始选项卡上的标题1;
二、自动生成目录
1、把光标定位到文章第1页的首行第1个字符左侧(目录应在文章的前面);
2、单击引用---->目录---->插入目录;
3、弹出目录对话框,选择目录选项卡,进行相关设置后,单击“确定”按钮,文章的目录自动生成完成。
三、更新目录
1、单击引用---->更新目录按钮;
2、弹出更新目录对话框,根据需要,选择其中一项即可。
四、目录的使用
通过上面方法自动生成的目录,按住Ctrl键,在目录上单击鼠标,即可进入到该标题所在位置。
成分分析技术主要用于对未知物、未知成分等进行分析,通过成分分析技术可以快速确定目标样品中的各种组成成分是什么,帮助实验人员对样品进行定性定量分析,鉴别等。今天,小析姐就给大家介绍四种成分分析的常见设备:XRF、ICP、EDX和WDX。
1
X射线荧光光谱仪(XRF) XRF指的是X射线荧光光谱仪,可以快速同时对多元素进行测定的仪器。在X射线激发下,被测元素原子的内层电子发生能级跃迁而发出次级X射线(X-荧光)。从不同的角度来观察描述X射线,可将XRF分为能量散射型X射线荧光光谱仪,缩写为EDXRF或EDX和波长散射型X射线荧光光谱仪,可缩写为WDXRF或WDX,但市面上用的较多的为EDX。
WDX用晶体分光而后由探测器接收经过衍射的特征X射线信号。如分光晶体和探测器做同步运动,不断地改变衍射角,便可获得样品内各种元素所产生的特征X射线的波长及各个波长X射线的强度,并以此进行定性和定量分析。EDX用X射线管产生原级X射线照射到样品上,所产生的特征X射线进入Si(Li)探测器,便可进行定性和定量分析。EDX体积小,价格相对较低,检测速度比较快,但分辨率没有WDX好。
近些年,X射线荧光光谱技术飞跃发展,在多项核心技术取得突破,例如,硅漂移探测器SDD(Silicon Drift Detector)技术,大幅提升X射线荧光计数率和谱线分辨率;双曲面弯晶DCC(Doubly Curved Crystal)技术,双曲面弯晶可设计为仅衍射X射线光管出射谱中的高强度特征X射线,X射线入射到样品为单色化X射线,避免了由于X射线管出射谱中连续轫致辐射造成的背景干扰,从而大幅提升被测元素荧光射线的信噪比;
近十几年才进入实际应用的全反射X射线荧光TXRF技术,仪器小型化,同时对元素有高的灵敏度,元素检出限达到ppb级别,但其制样复杂,需要样品在一个超平面平台上,从而限制了其使用范围等等;
另外还有微焦斑X射线管技术以及快速数字脉冲成形技术;偏振二次靶技术;在此不一一累述。
总之,在元素分析领域,近十年来,X射线荧光法是提升快的方法,可以预示,在不久的将来,X射线荧光光谱法可以将元素检测延伸至微量和痕量应用领域。
高灵敏度X射线荧光光谱仪(HS XRF○R)原理
高灵敏度X射线荧光光谱仪也可以称为单波长激发-能量色散X射线荧光光谱仪,采用微焦斑X射线管,依靠全聚焦型双曲面弯晶将X射线管出射谱中靶材高强特征射线单色化取出并聚焦到被测样品点,由于单色化入射,避免了由于X射线管出射谱中连续轫致辐射造成的背景干扰,从而大幅提升被测元素荧光射线的信噪比,同时采用高分辨率硅漂移探测器窗口接近样品测试点,取得样品中元素荧光射线的极大立体角,进一步提升元素荧光入射到探测器的射线强度。
X射线光管出射谱中连续轫致辐射的散射构成荧光光谱的连续散射背景
X射线光管出射谱由靶材的特征X射线分立谱以及轫致辐射连续谱组成,这些射线入射到样品中,激发样品中元素特征X射线的同时,又会产生入射谱的康普顿散射和瑞利散射,探测器同样会接收到这些散射背景,从而造成了连续背景信号的干扰,降低了元素检测的峰背比,使样品中微量或痕量元素难以被检出。
单波长激发-能量色散X射线荧光原理
X射线管出射谱由连续谱线和特征谱线组成,全聚焦型双曲面弯晶仅衍射X射线光管出射谱中的高强度特征X射线,从而入射到样品的X射线具有很好的单色性,因此从样品出射的X射线除了样品中的元素被激发产生的荧光X射线(线光谱)和单色入射线的瑞利散射和康普顿散射以外,不存在连续散射背景,从而保证待测元素特征线具有极低的背景干扰,被激发元素的荧光X射线用SDD(硅漂移探测器)检测,得到高分辨和高灵敏度的测试结果。
2
电感耦合等离子谱仪(ICP) ICP是电感耦合等离子谱仪。根据检测器的不同分为ICP—OES(电感耦合等离子发射光谱仪,也称ICP-AES)和ICP-MS(电感耦合等离子质谱仪)。两者均能测元素周期表中的绝大部分元素,但能测得元素稍微有异,检测能力上后者要比前者高。因为ICP光源具有良好的原子化、激发和电离能力,所以它具有很好的检出限。对于多数元素,其检出限一般为0.1~100ng/ml,可以同时测试多种元素,灵敏度高,检测限低,测试范围宽(低含量成分和高含量成分能够同时测试)。
ICP-OES其前身为ICP-AES(电感耦合等离子体原子发射谱仪),它基于物质在高频电磁场所形成的高温等离子体中有良好的特征谱线发射,再以半导体检测器检测这些光谱能量,参照同时测定的标准溶液计算出试液中待测元素的含量.ICP-AES测试的有效波长范围是120-800 nm,因为原子发射光谱的所有相关信息都集中在这个范围内。其中,120-160 nm波段尤其适用于分析卤素或者某些特殊应用的替代谱线。
注:测试的有效波长范围跟仪器当然也直接相关,有些仪器只能测160 nm以上的波段。一般情况下,ICP-AES测试的都是液体样品,因此测试时需要将样品溶解在特定的溶剂中(一般就是水溶液);测试的样品必须保证澄清,颗粒、悬浊物有可能堵塞内室接口或者通道;溶液样品中不能含有对仪器有损坏的成分(如HF和强碱等)。由于现在ICP发射光谱技术用到了越来越多的离子线,“原子发射光谱仪”已经不是那么科学,所以现在都叫OES了。
ICP—OES可同时分析常量和痕量组分,无需繁复的双向观测,还能同时读出、无任何谱线缺失的全谱、直读等离子体发射光谱仪,具有检出限极低、重现性好,分析元素多等显著特点,ICP-OES大部份元素的检出限为1~10ppb,一些元素也可得到亚ppb级的检出限。ICP-OES的检测元素如下图:
ICP-MS电感耦合等离子体质谱仪以质谱仪作为检测器,通过将样品转化为运动的气态离子并按质荷比(M/Z)大小进行分离并记录其信息来分析。若其所得结果以图谱表达,即所谓的质谱图。ICP-MS的进样部分及等离子体和ICP-AES的是极其相似的。但ICP-MS测量的是离子质谱,提供在3~250amu范围内每一个原子质量单位(amu)的信息。还可进行同位素测定。
ICP-MS具有极低的检出限,其溶液的检出限大部份为ppt级,石墨炉AAS的检出限为亚ppb级,但由于ICP-MS的耐盐量较差,ICP-MS的检出限实际上会变差多达50倍,一些轻元素(如S、Ca、Fe、K、Se)在ICP-MS中有严重的干扰,其实际检出限也很差。ICP-MS的检测元素和检测极限如下图:
整体来说,ICP-OES和ICP-MS可分析的元素基本一致,不过由于分析检测系统的差异,两者的检测限有差异:ICP-MS的检测限很低,最好的可以达到ng/L(ppt)的水平;而ICP-AES一般是ug/L(ppb)的级别。不过ICP-MS只能分析固体溶解量为0.2%左右的溶液(因此经常需要稀释),而ICP-AES则可以分析固体溶解量超过20%的溶液。
3
能量色散X射线谱仪(EDS) EDS是能量色散X射线谱仪,简称能谱仪,常用作扫描电镜或透射电镜的微区成分分析。利用发射出来的特征X射线能量不同而进行的元素分析,称为能量色散法。X射线能谱仪的主要构成单元是Si(Li)半导体检测器,即锂飘移硅半导体检测器和多道脉冲分析器。目前还不能用于分析超轻元素(O、N、C等)。由于能谱仪中Si(Li)检测器的Be窗口吸收超轻元素的X射线,故只能分析Na以后的元素。能谱仪结构简单,数据稳定性和重现性较好。
EDS所用信号:高速运动的电子束轰击样品表面,电子与元素的原子核及外层电子发生单次或多次弹性与非弹性碰撞,有一些电子被反射出样品的表面,其余的渗入样品中,逐渐失去其动能,最后被阻止,并被样品吸收。在此过程中有99%以上的入射电子能量转变成热能,只有约1%的入射电子能量从样品中激发出各种信号。其中,特征X射线是高能电子激发原子的内层电子,使原子处于不稳定态,从而外层电子填补内层空位使原子趋于稳定的状态,在跃迁的过程中,直接释放出具有特征能量和波长的一种电磁辐射,即特征X射线。
能量色散X射线谱仪(EDS)的结构与工作原理:不同元素发射出来的特征X射线能量是不相同的,利用特征X射线能量不同而进行的元素分析称为能量色散法。所用谱仪称为能量色散X射线谱仪(EDS),简称能谱仪。
X射线能谱仪的主要构成单元是Si(Li)半导体检测器,即锂漂移硅半导体检测器和多道脉冲分析器。能量为数千电子伏特的入射电子束照射到样品上,激发出特征X射线,通过Be窗直接照射到Si(Li)半导体检测器上,使Si原子电离并产生大量电子-空穴对,其数量与X射线能量成正比。
EDS能谱曲线:常用的X射线能量范围在0.2-20.48 keV。如果总道址数为1024,那么每个道址对应的能量范围是20 eV。X光子(射线)能量低的对应道址号小,能量高的对应道址号大。根据不同道址上记录的X射线的数目,就可以确定各种元素的X射线强度。然后,在X-Y记录仪或阴极射线管上把脉冲数与脉冲高度曲线显示出来,这就是X射线的能谱曲线。
能谱仪的优点(相对于另一项常用的成分分析工具——波谱仪(WDS)而言)
①检测效率:能谱仪中锂漂移硅探测器对X射线发射源所张的立体角显著大于波谱仪,所以前者可以接收到更多的X射线信号;其次波谱仪因分光晶体衍射而造成部分X射线强度损失。因此能谱仪的检测效率较高。
②空间分析能力:能谱仪因检测效率高,可在较小的电子束流下工作,使束斑直径减小,空间分析能力提高。目前,在分析电镜中的微束操作方式下能谱仪分析的最小微区已经达到纳米数量级,而波谱仪的空间分辨率仅处于微米数量级。
③分辨本领:能谱仪的最佳能量分辨本领为149eV,波谱仪的波长分辨本领表述为能量的形式后相当于5-10eV,可见波谱仪的分辨本领比能谱仪高一个数量级。
④分析速度:能谱仪可在同一时间内对分析点内的所有X射线光子的能量进行检测和计数,仅需几分钟时间可得到全谱定性分析结果;波谱仪只能逐个测定每一元素的特征波长,一次全分析往往需要几个小时。
⑤分析元素的范围:波谱仪可以测量铍(Be)-铀(U)之间的所有元素,而能谱仪中Si(Li)检测器的铍窗口吸收超轻元素的X射线,只能分析钠(Na)以后的元素。
⑥可靠性:能谱仪结构简单,没有机械传动部分,数据的稳定性和重现性较好。波谱仪的定量分析误差(1-5%)远小于能谱仪的定量分析误差(2-10%)。
⑦样品要求:波谱仪在检测时要求样品表面平整。能谱仪对样品表面没有特殊要求,适合于粗糙表面的分析。
4
波长分散谱仪(WDS) WDS全称波长分散谱仪,简称波谱仪,常用作电子探针仪中的微区成分分析,其分辨率比能谱仪高一个数量级,但它只能逐个测定每一元素的特征波长,一次全分析往往需要几个小时。在电子探针中,X射线是由样品表面以下m数量级的作用体积中激发出来的,如果这个体积中的样品是由多种元素组成,则可激发各个相应元素的特征X射线。被激发的特征X射线照射到连续转动的分光晶体上实现分光(色散),即不同波长的X射线将在各自满足布拉格方程的2θ方向上被(与分光晶体以2:1的角速度同步转动的)检测器接收。波谱仪的突出特点是波长分辨率很高,缺点是X射线信号的利用率极低,难以在低束流和低激发强度下使用。波谱仪可分析铍(Be)— 铀U之间的所有元素。
波谱仪的定量分析误差(1-5%)远小于能谱仪的定量分析误差(2-10%)。波谱仪要求样片表面平整,能谱仪对样品表面没有特殊要求。EDS需要与SEM、TEM、XRD等联用,可做电分析、线分析和面分析。WDS对于微量元素即含量小于0.5%元素分析明显比EDS准确。波谱仪分辨本领为0.5nm,相当于5-10eV,而能谱仪最佳分辨本领为149eV。
综上所述,XRF和ICP常用作成分的定量分析,其中XRF用物理方法检测而ICP用化学方法进行测试。相对XRF,ICP的检测范围更宽,检测极限更低,检测出的数据更准确。EDS和WDS常用作电镜的附件进行成分分析,但多作为半定量分析,仅可以看出各个元素的比值和大概分布情况及含量,准确性不如XRF和ICP。
(内容来源:测试狗 由小析姐整理编辑)
推荐阅读
X荧光光谱仪的应用及发展
【区别】ICP-AES、OES、MS、AAS究竟该选哪一个?
搞懂ICP-MS的原理就靠这一文啦!
与小析姐交流请添加微信:
18201399725
投稿请发送邮件到
zhaomin@vogel.com.cn (欢迎业内人士踊跃投稿,将您的文章分享给大家)
刚来英国逛街、网购,或者在国内海淘的时候,相信总会有一个问题困扰你:这衣服和鞋子上标注的英码怎么看啊?分不清楚的时候,不得不拿上好几件试过才知道自己的码数;有时候不清楚码数连帮爸妈买件合身的衣服都困难;海淘的宝宝买错了尺码再退货更是个麻烦事儿…… 为了帮助大家以后不在尺码这个问题上“栽跟头”,今天就送上这份最全中英尺码对照表(美码也一并贴心附上),教你看懂英国鞋码和衣服尺寸。
下面咱们入正题:
英国衣服尺码 在英国买衣服的时候,一般会遇到两种尺码形式:一种是标注着“S/M/L”的国际码,另一种是数字UK码。UK数字码是数字越小,尺寸越小。在网购的时候,各大品牌或电商一般都会有Size Guide(尺寸说明),比如Zara家有些衣服会标明“型号偏大,平常穿M号的人建议买S号的”。所以大家在用下方中英衣服尺寸对照表的时候,也别忘了仔细看购物网站上的具体说明。另外,如果你要买特殊的衣服版型,比如超小款Petite系列,是会有不同尺码标准的。大部分标准版型的衣服尺码大家可以参照下面这三个表:
女士衣服尺码对照表 StandardSize DetailsChina145/73A150/76A155/80A160/84A165/88A170/92A175/96AInternationalXXXSXXSXSSS/MM/LL/XLUSA024681012Italy36384042444648UK–4-66-888-1010-1212-14France/Europe32343638404244 男士衣服尺码对照表 StandardSize DetailsChina165/84A170/88A175/92A180/96A185/100AInternationalSMLXL XXLUK3436384042US3436384042France/Europe4446485052 童装衣服尺码对照表 尺码年龄0-11-22-33-44-55-66-78-910-1112-1314-15China52-7373-8085-9595-105105-115115-125125-135125-135135-145145-155155-165Europe80-8686-9298-104104-110 110-116116-122122-134134-140140-146146-152152-158UK0-12M18-24M3Y4Y5Y6Y7Y9Y11Y13Y15YUS3M6M24MXS(2T)XS(3T)4T79111315Japan70-8080-9090-100100-110100-110110-120110-120120-130130-140140-150150-160 英国裤子尺码 在买裤子的时候,女生同样可以用到刚刚衣服尺寸的对照表。不过要注意有些裤子,比如Skinny Jeans、Pencil Pants、Boyfriend Jeans等因为版型的不同,尺码标注也会不同,大家在买的时候一定要量好自己的腰围、臀围、腿长再购买。
女士裤子尺码对照表 StandardSize DetailsInternationalXSSMLGermany34363840Italy(Inches)26272829303132France/Europe36/38/40/42UK6/812101214-16USA(Inches)26272829303132China24252627282930 男士裤子尺码对照表 StandardSize DetailsInternationalXSSMLXLChina (waist)42 (68-72cm)44 (71-76cm)46 (75-80cm)48 (79-84cm)50 (83-88cm)Italy4446485052UK/US2830323436France3638404244 英国内衣尺寸 在英国买内衣估计是很多女生需要烦心的一项,因为欧洲人的身材偏丰满,看不好尺码的话,很容易买错内衣型号。具体的尺码对比大家可以参照下面的对照表(中国码是以厘米为单位的;英码和美码都是以英寸为单位的:1英寸=2.54厘米):
女生文胸尺码对照表 InternationalChinaItalyFanceUKUS60A75A00A75A28A28A60B75B00B75B28B28B60C75C00C75C28C28C60D75D00D75D28D28D60E75E00E75E28DD28DD/E60F75F00F75F28E28DDD/F65A80A0A80A30A30A65B80B0B80B30B30B65C80C0C80C30C30C65D80D0D80D30D30D65E80E0E80E30DD30DD/E65F80F0F80F30E30DDD/F70A85A1A85A32A32A70B85B1B85B32B32B70C85C1C85C32C32C70D85D1D85D32D32D70E85E1E85E32DD32DD/E70F85F1F85F32F32DDD/F 女士内裤尺码对照表 StandardSize DetailsChina(臀围)72-7676-8181-8787-9393-98InternationalSMLXLXXLUSA(Inches)28-3030-3232-3434-4838-42 男士内衣尺码对照表 StandardSize DetailsChina165170175180185InternationalSMLXLXXLUSA(Inches)28-3030-3232-3434-4838-42 鞋子 英国的鞋码系统和中国的不一样,标准中国鞋码是以厘米为单位的。大家在中国买的鞋都能找到一个标准鞋号(比如230、235等等),只不过这个标准鞋号在日常生活中很少被使用,大家更习惯用“37码”、“40码”等来表达。那么这些码数对应的英国鞋码是多少呢?大家可以参考下面的鞋码对照表:
女鞋尺码对照表 USChinaUKItalyJapan535235225.535.52.535.522.5636336236.536.53.536.523.5737437247.537.54.537.524.5838538258.538.55.538.525.5939639269.539.56.539.526.5104074027 男鞋尺码对照表 ChinaUKUSItalyJapan3845382338.54.55.538.523.53956392439.55.56.539.524.54067402540.56.57.540.525.54178412641.57.58.541.526.54289422742.58.59.542.527.543910432843.59.510.543.528.5441011442944.510.511.544.529.5451112453045.511.512.545.530.54612134631 童鞋尺码对照表 年龄USChinaUKEUJapan2 YEARS7-824-256-723-2414.5-153 YEARS9268-8.525-2615.54 YEARS102792716.55 YEARS11281028176 YEARS1229.5112917.57 YEARS13311230188 YEARS13212.5-1331-3218.59 YEARS233.51331910YEARS3352342011YEARS3.535.52.535 21.512YEARS43633622.513YEARS537.543723 婴幼儿鞋尺码对照表 年龄USChinaUKEUJapan0-3个月11817.59.53-6个月21918.5106-9个月320.5220119-12个月421.53211212-18个月523422.512.518-24个月624.552413.5 英国很多品牌鞋店其实用的都是欧洲码,就算用的是英码,只要你告知你的中国鞋码,大部分店员也能估摸出适合你的码数。欧洲码一般都有“半号”,所以那些脚丫子长得特别“刁钻”的小伙伴,买鞋的时候记得问一句是否有半号的鞋码。
英国鞋码和美国鞋码非常相似,一般都是10以下的数。一般来说,女生如果是37码的脚,那么就相当于英国的4码;男生如果是42码的脚,一般对应英国的8码。虽然上面的对照表符合大部分情况下的“码数换算”,但有些品牌会有自己的一套尺码标准。举个例子,Clarks其乐的鞋往往比中国的鞋小半号,不过很贴心的是,它家可以挑选鞋子的肥瘦!比如,女鞋的“D”代表“Standard”;“E”代表“Wide”(加宽)。中国鞋码“36偏肥”,对应的Clarks鞋码就是“3号半(36.5),E宽版”。详见下方:
WomenMenC(Narrow)F(Narrow)D(Standard)G(Standard)E(Wide)H(Wide) 英码小贴士 1. 如果刚开始对英国尺码始终拿捏不准的话,大家可以去店内试好了再踏踏实实地买。在之后的网购中,查看Size Guide的时候心里也能有个最基础的参考。
2020年最后一天了,感谢大家一年来对我文章的支持,有你们的支持就是我强大的动力。
今天来给大家介绍一个USB 协议分析软件LeCroy USB Advisor,软件安装包下载连接如下:
链接:https://pan.baidu.com/s/12qBCOjuy4i8kr1MHjBrfYQ
提取码:2rpx
这个软件对于USB协议学习有很大帮助,下面就给大家介绍这个软件的强大作用:
(1)软件主界面
(2)USB传输、事务、包协议显示(序号和具体域的细节)
(3)协议可折叠
(4)每个具体包可查看差分NRZI编码波形
(5)安装完毕之后,由详细的使用文档
1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除。
2.未经原作者允许不得转载本文内容,否则将视为侵权;
3.转载或者引用本文内容请注明来源及原作者;
4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。
下面是我的个人微信公众号,关注**【一个早起的程序员】**精彩系列文章每天不断。
今年文章产出确实非常少,只有6篇,不可否认的是自己确实偷懒了。但是今年的收获还是挺多,其中方向的确定,让我更加的有目标,而不再仅仅的是钻研一些零零散散的技术了。希望我这篇自我总结和思考,也能对那些迷茫的同学有一点启示。
一、成长 mysql深入了解 系统的将java并发编程深入学习一遍kafka看了部分源码,以及实现思想深入了解大数据领域相关知识形成了自己做事以及思考的一些方法论 二、思考以及未来方向 工作的前两年,我一直觉得技术就是一切(达到XX领域的top的话确实可以),所以工作之余,就死钻那些各种技术难点,觉得特别有成就感。 但是慢慢的发现,这对于我来说并没有很大的提升,出去面试人家也不会问这种那么偏的点,人家关心的是你的项目经历以及你的技术是否能达标(所以问的就比较广,深入的没有多少)。 所以我思考了一下,是时候转变一下自己的思想了,喜欢钻研技术没错,这应该是每个技术人所需要具备的,但是不能一根筋的往前冲,偶尔停下来思考一下,现在你的瓶颈是啥? 所以我停下来了,我思考了,我觉得我现在的瓶颈并不是什么技术不够,因为平时开发所用到的技术是比较浅显的,并不是造火箭,那么到底缺什么呢?我和应届生比,到底区别在哪?难道就只是熟练CRUD吗? 当然不是,业务经验,领域经验,这些都是应届生不具备的。我可以举个例子,比如我,做大数据下的BI分析工具,如果只会按部就班的满足产品提出的一些既定的开发任务,那是非常简单的,都不需要思考太多。难的是,如何结合大数据和数据分析领域相关知识,以及业务实际使用场景等,去打造一个足够智能的BI分析工具?这就需要你对大数据领域和数据分析领域等相关知识的深入了解,而这些恰巧是很多人不具备的,因为很多人没时间思考和学习,甚至懒得思考和学习,这就是你和其他人拉开差距的时候。 有时候做一件事情,难道不是实施阶段,而是规划阶段,能规划出来,那肯定就能实施出来,这是必然的。公司缺的是有想法,有创造力的人才,而不是按部就班的螺丝钉,因这随时可替换。 所以接下来,方向就很明确了,业务经验&领域经验为主,技术为辅,打造属于自己的一个成长体系。虽然不知道最后结果如何,但起码先尝试努力一下!
三、旅游 我从不会为了工作放弃了生活,所以比较抵制996和加班(偶尔需要可以理解,一直加不可能)。我从18年毕业到现在,一直秉着这个理念,工作之余,走遍全国各地去旅游,去做各种没做过的事,去体验,去放松。所以真希望以后互联网的环境能改善一下(也只能小声bb一下了),不过我相信以后00后应该会对加班说不的,哈哈。
最后,附上自己拍的一些美图!圆满结束2020这多灾多难的一年吧!平平安安是这一年老天送给我最好的礼物吧!
以上都是我个人的一些思考和规划,仅供参考,最后,愿看到这篇文章的,2021一切都变得更好!
在 2 月 20 日的小米 9 发布会上,除了早已官宣的小米 9 系列,小米还带来了一款 One More Thing,更新了小爱智能音箱的产品线,一款带着屏幕的小爱音箱——小爱触屏音箱。
一开始还以为是类似锤子 TNT 的触屏设备
说起小爱音箱,初代小米 AI 音箱亮相于 2017 年 7 月的小米 5X 发布会上,一经发布便成为了小米商城最为抢手的小米设备之一,笔者也是在这款设备发售之初便购入了这款智能音箱。经过一年半的发展,小爱同学越来越聪明,小爱音箱的产品线也越来越丰富:小米 AI 音箱、小米小爱音箱mini、小米小爱蓝牙音箱随身版,以及小米小爱音箱 HD。 不过遗憾的是这些产品均为传统智能音箱形态,只能让人“听到”,不能让人“看到”。那在小爱音箱上加上的这一块屏幕除了能让“小爱同学”变得可视化,还有没有其他让人意想不到的地方呢?接下来我们就来一探究竟。
01
外 观 包装方面,小爱触屏音箱的配件十分简单:触屏音箱主体、接口为 Micro USB 的电源适配器(5V1A)以及一张说明书。
在外观设计上,小爱触屏音箱为一个梯形立方体造型,机身长宽高分别为 113mm、68mm、81.5mm;重量方面,官方称小爱触屏音箱的重量为 272g,十分轻巧,配合 Micro USB 接口的移动电源可以轻轻松松实现出门场景;配色方面,小爱触屏音箱沿承了米家产品一贯的简洁设计语言,机身整体为白色,黑色前面板与屏幕能够融为一体(在这里吐槽一句,小爱触屏音箱并没有使用全贴合屏幕,因此这块屏幕观感与两三年前山寨机的大灰屏十分相似);机身顶部分别为降噪麦克风*2、音量-键、屏幕开关、音量+键,机身底部则是整个音箱的扬声器部分内置一颗 1.5 英寸全频扬声器。
既然是触屏音箱,那免不了说说小爱触屏音箱上这块屏幕,小爱触屏音箱正面采用一块 3.97 英寸的圆角矩形屏幕,分辨率为 800*480,支持多点触控,屏幕材质为 LCD,槽点嘛,前面也说过,大灰屏+低分辨率,不过考虑到这是小米最便宜的触屏设备(目前官方未公布售价,结合此前小爱智能音箱定价,个人猜测价格会在 299 左右),也就不能要求要什么自行车了。 02
功 能 外观部分介绍的差不多,那么久开机吧。在使用之前需要下载「小爱音箱」APP,由于笔者在用小爱智能音箱标准版,在打开「小爱音箱」APP 时,软件就自动捕捉到有一台小爱音箱新设备并提示绑定,这部分的体验还是十分不错的,节约了傻傻的扫码绑定动作,给个赞!
不过在手机软件端,小米并没有为小爱触屏音箱做特别定制,首页的几个大功能模块依旧是「收藏」、「QQ音乐」、「有声读物」、「儿童」这四项,不支持自定义设置。(既然都有屏幕了又和爱奇艺合作了,为什么不在首页放个爱奇艺的位置呢?)
连接上了小爱触屏音箱,就收到了系统升级提醒,因此我们本次文章测试的版本是 3 月 16 日更新的 1.7.5 开发版。(在这里插句嘴,小爱触屏音箱在连接方式上支持 2.4GHz Wi-Fi 和蓝牙 5.0)
在音箱的系统逻辑中,音箱桌面分为五个模块,分别是时间、日历、米家、新闻、音乐。 ← →
大家下午好,我是你们的好朋友少白,今天呢给大家带来的是车铣加工编程以及车铣复合实例知识讲解,希望你们能够喜欢,在这里如果有没做好的方面希望老铁们能够提出来让我改进、让我成长,如果说你们有什么想看或者想学习的都可以在下方面评论留言出来,我都会给大家发出来的,谢谢支持
你的点赞关注就是对我最大的支持,也是我不间断为大家更新作品的动力,我也还在成长,希望大家能给我一点点时间,谢谢了
作为一名专业从事数控编程方面工作的我,今天就来给大家分享一些心得,首先“世上无难事只怕有心人”,我希望你能先明白这个道理,其次我们不管是在做什么还是要去学习什么,我们第一时间想到的不应该是我要是学不会怎么办或者直接说我学不会,如果你一开始就这么想,那么我可以告诉你你不管做什么事情都很难去完美的做成功,首先我们不管是做什么还是去学习什么,我们第一时间一定要想到如果我学会以后它会带给我什么,只有当你目标明确了,那么不管你做什么都是有动力的,有动力才有信心去完成,不管怎么样我们自己一定要相信自己 加油
文章目录 TransformerSequence用CNN取代RNNSelf-AttentionSelf-attention is all you need(重点)Self-attention是如何并行计算的? 矩阵运算!Multi-head Self-attention(Self-attention的变形 )Position EncodingSeq2Seq with AttentionTransformer(重点)简介基本架构EncoderDecoderAttentionSelf-AttentionContext-AttentionScaled Dot-Product AttentionScaled Dot-Product Attention 代码实现Multi-head attention 代码实现ResnetLayer normalizationMaskPadding MaskSequence mask Positional EmbeddingPosition-wise Feed-Forward network Transformer的实现针对Transformer的三个疑惑疑惑一:Transformer的Decoder的输入输出都是什么?疑惑二:Shifted Right到底是什么?上面两个疑惑的总结疑惑三:Transformer里decoder为什么还需要seq mask? 参考 Transformer Transformer的知名应用——BERT——无监督的训练的Transformer。
Transformer是BERT的核心模块
Transformer是一个seq2seq模型,并且大量用到了"Self-attention",接下来就要讲解一下"Self-attention"用到了什么东西
Sequence Sequence就会想到RNN,单方向或者双向的RNN。
RNN输入是一串sequence,输出是另外一串sequence。
RNN常被用于输出是一个序列的情况,但是有一个问题——不容易被平行化(并行)。
单向RNN的时候,想要算出b4,必须先把a1,a2,a3都看过才可以算出a4。双向则得全部看完才会有输出。
用CNN取代RNN 于是有人提出用CNN取代RNN
一个三角形是一个filter,输入为sequence中的一段,此刻是将三个vector作为一个输入,输出一个数值。
将三个vector的内容与filter内部的参数做内积,得到一个数值,将filter扫过sequence,产生一排不同的数值。会有多个filter,产生另外一排不同的数值 我们可以看到,用CNN也可以做到和RNN类似的效果:输入一个sequence,输出一个sequence。
表面上CNN和RNN都可以有同样的输入输出。
但是每个CNN只能考虑很有限的内容(三个vector),而RNN是考虑了整个句子再决定输出。
CNN也可以考虑更长的信息,只要叠加多层CNN,上层的filter就可以考虑更加多的信息。
eg:先叠了第一层CNN后,叠加第二层CNN。第二层的filter会把第一层的output当作输入,相当于看了更多的内容。
CNN的好处在于可以并行化。
CNN的缺点在于必须叠加多层,才可以看到长时间的信息,如果要在第一层filter就要看到长时间的信息,那是无法做到的。
所以,我们引入了 一个新的想法:Self-Attention
Self-Attention Self-Attention做的事情就是取代RNN原本要做的事情。
关键: 有一种新的layer—— Self-Attention,输入输出与RNN一样,都是sequence。
特别的地方在于,和双向RNN有同样的能力,每一个输出都是看过整个input sequence,只不过b1 b2 b3 b4是可以同时算出来的,可以并行计算!
Self-attention is all you need(重点) 在此,我先讲将oogle的论文贴出来吧:👉 Attention Is All You Need
QCustomPlot的demo实例给的都是x轴和y轴 一起缩放的 用起来有点不方便。
下面实现的功能是,点击选中x轴 或者y轴 就能缩放;
下面是实现功能图:点击x轴 就能实现x轴的单独放大。
第一个方法是,改变缩放比例。
QCustomlot给我们提供了 setRangeZoomFactor()函数,设置区域放大因子,
ui->customPlot->axisRect()->setRangeZoomFactor(1.2,1);//x方向为1.2 y为1 是不改变。
第二个方法是,Qcustomplot 自己提供的函数设置办法。
setRangeZoom函数
源代码 (代码测试过 有效,)
void MainWindow::wheelEvent(QWheelEvent *event) { static int i=0; i++; if (ui->customPlot->xAxis->selectedParts().testFlag(QCPAxis::spAxis)) { qDebug("%d",i); ui->customPlot->axisRect()->setRangeZoom(ui->customPlot->xAxis->orientation()); // ui->customPlot->axisRect()->setRangeZoomFactor(1.2,1);//x方向为1.2 } else if (ui->customPlot->yAxis->selectedParts().testFlag(QCPAxis::spAxis)) { ui->customPlot->axisRect()->setRangeZoom(ui->customPlot->yAxis->orientation()); // ui->customPlot->axisRect()->setRangeZoomFactor(1.2,1);//x方向为1.2 } else ui->customPlot->axisRect()->setRangeZoom(Qt::Horizontal|Qt::Vertical); }
服务器不稳定会对SEO是致命的吗?为避免后续的朋友为了贪图便宜而选择不稳定的服务器,有必要跟大家分享下服务器不稳定对网站优化的几个致命影响:一、网站出现降权表现;二、网站快照延迟更新慢;三、网站被K;四、对查找引挚不友好;五、网站内页不录入;六、不利于晋升网站权重和排名;七、不利于用户体验
一、网站出现降权表现
网站的降权主要表现在网站排名下降,而因为服务器不稳定而导致的降权主要原因是:如果百度蜘蛛来到你的网站多次都打不开你的网站,那他就不会也无法抓取你的网站内容百度就不会更新你的快照,长期打不开的网站,对用户一点用处都没有,为什么还要给你排名呢?
二、网站快照延迟更新慢
大家都知道,百度需要了解我们每天对网站的优化细节,就是从他自身的百度快照来了解,给予我们的搜索引擎排名也是通过快照来给予的排名。一旦百度快照更新缓慢,甚至是不更新网站快照,也就失去了百度重新认识我们网站的机会。
三、网站被K
不稳定的空间也可能被搜索引擎给K了,这也是搜索引擎对你的网站最严重的惩罚,K,就是kill的意思。顾名思义,就是搜索引擎将暂时或者永久不收录你的网站。
四、对查找引挚不友好
查找引挚判别网站的价值天然就先从服务器能否正常运营来剖析的,正常的查核期就是检测网站能否正常运营,而关于一些服务器不能正常安稳的运转,天然查找引挚对其的形象极差,即便搞得再多的原创内容也不会让查找引挚另眼看待的,究竟连最基本的网站运营条件都达不到怎样会有好形象,怎样会遭到特另外照看呢。
五、网站内页不录入
空间不稳定,就会使搜索引擎蜘蛛无法抓取网站内容了,更不必想网站内页被录入了,连空间都进不去,怎样录入呢?所以空间的不安稳肯定影响着内页会不会被录入。
六、不利于晋升网站权重和排名
权重的凹凸关于网站服务器的依赖性是很强的,究竟网站要想正常拜访必定要服务器的正常运营,而关于网站服务器连正常运营都不可,天然更甭说从查找引挚取得权重的晋升了。何况已然没权重,那么排名也不会好到哪里去。所以,网站服务器的不安稳还影响着权重、排名两大重要网站要素。
七、不利于用户体验
现在的网站越来越重视用户体验了,试想下,用户查打开你的网站想进一步了解你的时候,发现网站打不开,还会想继续深入了解你吗?经常打不开或者打开速度过慢的网站急都急死了,谁还有心思看?所以,网站服务器稳定与否也是影响用户体验的重要一环。
综上所述,服务器的稳定,对于网站来说至关重要,没有稳定的服务器,再好的SEO也是枉然。那么如何寻找性价比高,售后服务好的服务器提供商?这里推荐数脉科技的服务器租用和云服务器可以满足不同用户的需求,对于空间产品,是绝对的稳定、高速,售后更是放心可靠。
服务器不稳定会给企业网站带来那么多危害,那企业在选择服务器的时候一定不能马虎,也不能图省钱就随便租用一个服务器,如果服务器经常出问题,那将会大大拖累企业在网络营销领域的发展。
最近在学python,经常遇到的一个问题,这里记录一下,希望能帮到遇到同样问题的码友 from test.Human import Human class Student(Human): """ docstring """ def test(): print('extend test!') student1 = Student('小明',20) print(Student.sum) print(student1.name) print(student1.age) print(student1.getName) class Human(): sum = 0 """ docstring """ def __init__(self,name,age): self.name = name self.age = age def getName(self): """ docstring """ print(self.name) 报错如下 <bound method Human.get_name of <__main__.Student object at 0x01D962B0>> 原因: print(student1.getName) 这里调用函数时没有加小括号。。。。。。。。。
修改为这样就没问题了:
print(student1.getName())
汉字与机内码相互转换程序
罗可
【期刊名称】
《智能计算机与应用》
【年
(
卷
),
期】
1991(000)004
【总页数】
2
页
(P42-43)
【关键词】
汉字
;
程序
;
机内码
;
转换程序
【作
者】
罗可
【作者单位】
无
【正文语种】
中
文
【中图分类】
工业技术
1991
年
8
月
也』内学习第
4
期汉字与机内码相互转换程序
长沙水利电力师范学
院计算中心(
410077)
罗
可用户在开发软件时,常常需要知道汉字对应的机内码
和机内码对应的汉字,怎样才能
方便地实现汉字与机内码之间的相互转换是许多
用户所关心的问题。实际上,无论是
ASCII
字符和汉字字符都以十六进制数的形
式存贮于计算机内,
ASC E
字符占用一个字节,汉字占
用两个字节,且两字节的
二进制数的高位都为
1
。利用
dBASE
的语句、函数和运算符,可
方便地实现它
们之间的相互转换。-、汉字转换为机内码、区位码方法-:先利用
a
町、
substr
函数分别求得汉字高位字节、低位字节的十进制机内码,然后转化为十六
制机内码。由于汉字机内码与区位码有下列关系
z
高位机’内码=区码+
20H +
北大青鸟主机显示屏上,显示1C?
主机会定期采集现场设备的工作电流信号,称为主机检测。1C为现场设备的工作电流值,十六进制(即1-f)。大于1C,1为1D;大于1f为f,1为20。正常值一般在1b-22之间。如果值太大或太小,则存在问题。一般情况下,回路信号较小,如0f,需要测量现场信号线的电阻值,看接地是否符合要求。例如,您写入的三个值是正常范围。开头10位数字3或4表示现场存在设备重复代码。从火警或反馈开始的十位数的五位数。我希望它能帮助你。
如何编辑中文编码【消防主机】北大青鸟?
将要编码的设备连接到编码器。编码器线上有两个夹子,夹在感烟探测器、手动报警、声光的L1、L2端子上。然后打开编码器,选择“写入”,输入要写入的地址,然后按右上角的键进行编码。
北大青鸟消防主机密码?
北大青鸟:通用密码:111操作员密码:111111壁挂式北大青鸟的密码是:111或119
整个电路的红色显示意味着整个电路始终接通。检查回路隔离器并复位。
北大青鸟主机显示屏上,显示1C,1E,1D,是什么意思啊?谢谢?
看看十位数。十位数是1或2。他们很正常。3或4是重复代码。5或6是设备操作。R
北大青鸟主机jdf5015主机显示24v故障怎么回事?
1环路132声光联动程序为空并删除。
2432
捆 42688 困 42944 括 43200 扩 43456 廓 43712 阔 43968
L:
垃 44224 拉 44480 喇 44736 蜡 44992 腊 45248 辣 45504
啦 45760 莱 46016 来 46272 赖 46528 蓝 46784 栏 47296
拦 47552 篮 47808 阑 48064 兰 48320 澜 48576 揽 49088
览 49344 缆 49856 烂 50112 滥 50368 廊 51392 郎 51648
朗 51904 浪 52160 捞 52416 劳 52672 牢 52928 老 53184
1.本地数据集上传到数据仓库Hive 1.1命令 sudo mkdir -R /usr/local/bigdatacase/dataset //这里会提示你输入当前用户(本教程是hadoop用户名)的密码 //下面给hadoop用户赋予针对bigdatacase目录的各种操作权限 cd /usr/local/ sudo chown -R hadoop:hadoop ./bigdatacase cd bigdatacase //下面就可以解压缩user.zip文件 cd ~ //表示进入hadoop用户的目录 cd 下载 ls unzip user.zip -d /usr/local/bigdatacase/dataset cd /usr/local/bigdatacase/dataset ls head -5 raw_user.csv 1.2数据集进行预处理 1.2.1删除首行 cd /usr/local/bigdatacase/dataset //下面删除raw_user中的第1行 //1d表示删除第1行,同理,3d表示删除第3行,nd表示删除第n行 sed -i '1d' raw_user.csv //下面删除small_user中的第1行 sed -i '1d' small_user.csv //下面再用head命令去查看文件的前5行记录,就看不到字段名称这一行了 head -5 raw_user.csv head -5 small_user.csv 1.2.2 添加字段 添加随机省份字段
1.3 导入HDFS中 略
1.4 Hive创建数据库 //这个为小数据集,下面的为大数据集 hive> create database dblab; hive> create database dblab_big; //创建表并映射入HDFS中的文件 hive> CREATE EXTERNAL TABLE dblab.
HP LaserJet Pro MFP M125-M126,扫描文件HPScan不能用?
234游戏网友 提出于 2019-07-24 16:05:25
你好我的电脑打印机能用,HPLaserJetProMFPM125-M126,扫描文件HPScan也有,但是点击扫描没反应,怎么样打不开,不能扫描,怎么办?...
1:先把未打印的打印任务删掉,再删除打印机。
2:控制面板,卸载打印机126的驱动和scan to 重启计算机。
3:计算机图标右键--管理----服务和应用程序--服务===print soopler停用。
把C:WINDOWSsystem32spool下面的东东全删除。
4:启用 print soopler服务
5:不插usb线
你好 我的电脑打印机能用,HP LaserJet Pro MFP M125-M126,扫描文件HPScan也有,但是点击扫描没反应,怎么样打不开,不能扫描,怎么办?
我的电脑打印机能用,HP LaserJet Pro MFP M125-M126,扫描文件HPScan也有,但是点击扫描没反应,怎么样打不开,不能扫描,怎么办?
优质回答 回答者:一袋松狮
1、在xp系统中,只需要在开机时按键盘上的F8键就可进入安全模式了。
2、而在windows7操作系统中,开机进入安全模式跟xp相似,但是需要先重新启动。
3、机器重启后,在硬件自检之后系统启动之前,按F8键即可,如果你把握不好按F8的时机,可以在重启后不停的按F8。
4、在安全模式的菜单中,选择第一项进入安全模式。
5、还有一种方法也可以进入安全模式,在系统开机时,出现系统选择进入的菜单时,按住CTRL键不妨,会出现系统多操作启动菜单了,这个时候你只需要选择“安全模式”,就可以直接进入到安全模式了。
-----------------------------------------------------------------
回答者:铭丶记于心
请问你是什么系统,是DELL原装XP吗?一般按F8选任一种都能进安全模式.建议先查毒,如果不行,重新装次系统
-----------------------------------------------------------------
回答者:DamonLT
尊敬的戴尔用户您好:
以下方法供您参考:
不管是不是DELL的机器,安全模式的进入方法是在开机windows徽标画面出现之前按住F8~然后在菜单中选择“安全模式”
PS~你有可能问的是DELL的BIOS,顺便提一下~DELL笔记本和其他许多intel主板的机器开机BIOS都是按F2进入的。
其他问题可以拨打DELL技术支持8008582968
为您提供戴尔提供维修网点查询链接:http://support.ap.dell.com/support/topics/topic.aspx/ap/shared/support/dellcare/zh/cn/cis_index?c=cn&cs=cndhs&l=zh&s=dhs&CID=247239&LID=4282626&DGC=SP&DGSeg=DHS
戴尔真诚为您服务
-----------------------------------------------------------------
回答者:威威威威
开机后狂按F8
-----------------------------------------------------------------
回答者:15179162811
出现DELL蓝色图标时,按F8.
TAGS:
设置界面:第一个Appearance 下的systemSetting
ThinkPad如何开启或关闭自动更新
对于“更新总是失败”这个问题,鉴于我知识有限,无法回答,但可以参考我下面说明的“阻止更新”的方法。
【关闭Windows自动更新】1、右键任务栏空白处,选择“任务管理器”,如图1。
【图1】2、在任务管理器中,进入“服务”选项卡,再点击底部的“打开服务”,如图2。
【图2】3、在服务窗口中,找到“Windows Update”,如图3,双击进入,在弹出的窗口中将该服务“禁用”,如图4,点击确定。
完成。
【图3】【图4】工作完成之后,系统将不会自动检查和下载更新,何时更新需要管理员自行决定(手动检查更新时也需要将Windows Update服务重新开启)。
intellij idea 怎么让class自动更新到war
有个配置on update action,就是手动操作的时候采取什么动作,可以重启服务器,也可以像上面一样更新类和资源文件,我选的是Redeploy。
可是当前项目没有update classes and resources这个选项,有个Hot Swap classes。
这是由于服务器添加的Artifact类型问题,一般一个module对应两种类型的Artifact,一种是war,一种
联想笔记本电脑总是更新
如果不想让系统自动更新,可以将Windows Update关闭,方法如下:点击“开始菜单”→控制面板→系统和安全→Windows Update下的“启用或禁用自动更新”→在“重要更新”下选择“从不检查更新”→确定这样即可关闭Windows Update的自动更新功能。
Intellij IDEA怎么关闭自动代码提示
建议将自动更新关闭,用软件更新,自己的时间自己做主。
下载超级兔子,让她帮助你下载补丁。
你选择快速检测后,按安装按钮,她会自动帮助你下载安装,并且不需要重启。
到目前为止,使用超级兔子打补丁全部成功(对于系统不需要安装全部补丁,因此超级兔子有快速检测(推荐)、全面检测、自定义,选择快速检测只安装对系统有严重安全漏洞的补丁打,你使用的杀毒、杀木马的软件都有这个功能)。
关闭自动更新的方法:控制面板-Windows Update-(左边)更改设置-把重要更新下选项改为从不检查更新即可(Win7)。
这个方法也可以,请开始/运行输入gpedit.msc打开组策略,在左侧选用户配置/管理模板/Windows组件/Windows Update/在右侧选“删除使用所有Windows Update功能的访问”双击它,在打开的对话框中选择“已启用”然后按应用确定,重启电脑即可。
CUDA out of memory解决办法 当使用Pytorch GPU进行计算时经常遇到GPU存储空间过满,原因大致有两点:
1.Batch_size设置过大,超过显存空间
解决办法: 减小Batch_size
2.之前程序运行结束后未释放显存
解决办法: 按住键盘上的Win+R在弹出的框里输入cmd,进入控制台, 然后输入命令
nvidia-smi 查看GPU的使用情况,和占用GPU资源的程序,我们看到 PID 2492 运行着python占用很大空间
可以使用如下命令杀死进程
taskkill -PID 进程号 -F 如果还不能解决:
参考链接:具体结束各个小程序步骤(Linux系统)
缓存 缓存使用 为了系统性能的提升,我们一般都会将部分数据放入缓存,加速访问。而db承担数据落盘工作。
哪些数据适合放入缓存?
即时性、数据一致性要求不高的 访问量大且更新不高的数据(读多、写少) 举例:电商类应用,商品分类,商品列表等适合缓存并加一个失效时间(根据数据更新频率来定),后台如果发布一个商品,买家需要5分钟才能看到新的商品一般还是可以接收的
data=cache.load(id); if(data==null){ data=db.load(id); cache.put(id,data); } return data;
设 是 上的稠密开集,有如下问题: 1)(开集构造定理)证明: 可以写作至多可数个不相交开区间的并集 2) 是否一定是可数集? 证明:
对所有 中的元素取连通分量可得若干个互不相交的开区间。由于有理数的稠密性,在每个开区间内可以取一有理数。由此可知这些区间至多只有可数个。 2. 错误,考虑集合 (此为 中由小数展开里仅有0,1构成的数字全体组成的集合, )。由对角线论证可以证明该集合是不可数集。下面考虑 , 则有: i) 是开集: ,由构造,我们知道 . (例如,假设 是 的小数展开中第一个不是0或1的数字,并假设它是2,则在 中距离 最近的数字是 . 设 ,我们就有 ) 所以 是开集。 ii) 是稠密集: , 设 ,则我们有 且 . 故 . 综上, 是 上的稠密开集。但 是不可数集。 注:这个题的唯一难点是坚定的认识到命题2是不成立的,因为后面的集合构造和论证其实并没有偏离常规。
人人都离不开网络的今天,你有没有遇到这样的情况?刷视频三分钟、转圈1小时,网络延迟,玩游戏只能送“人头”,网速不给力,秒杀购物手慢无,那么问题来了,如何才能get到又快又稳定的网络?
随着移动4G网络信号的普及,很多人都感受过4G带来快速的上网体验。但有些场所依然会存在手机信号差的现象,比如地下室、别墅区等场所的信号是不太稳定的,其实林创手机信号放大器,可为您轻松解决通讯信号疑难。想在家愉快地上网,无奈网速上不来?不妨试试这个招数!通过安装林创手机信号放大器来满足手机信号。
小体积,大覆盖,双倍提速、三倍快乐,林创手机信号放大器具有独特的外观设计,搭配独立的穿墙模块,让你通讯无忧,还可以实现多频信号同时传输、通讯更流畅,瞬间让你进入顺畅网络的美好时代。
#产品标准套装#
林创手机信号放大器主机
室外对数天线
室内吸顶天线
专用馈线
安装手机信号放大器后,在家的每个角落都可轻松上网,完全释放4G网速,体验到真正的上网快感,幸福就是如此简单,再也不用为信号差而苦恼,林创在手,信号全有!
如何安装手机信号放大器来增强我们的信号呢?
1.首先我们要选择一套适合你所需的手机信号放大器套装,具体可以跟客服说明需求,然后会给你制定适合的安装方案。如果是偏远山区、城中村、农村这些地理位置比较特殊,其中八木天线或栅格天线是必不可少的重要配件;
2.收到产品之后,要检查配件是否齐全,套装齐全就可以安装了。首先安装室外天线,安装的时候要朝着基站方向安装,这样才能接收到好的信号;
3.安装的时候保证室外天线和室内天线之间的距离,室外与室内天线要相隔10米以上或者室外天线与室内天线有混凝土墙或者隔墙相隔,避免一方天线之间相互干扰。
4.安装完后,通电测试,看看设备显示屏上信号是否正常,如不正常,调节室外天线的方向,室内信号不强,调整下室内天线之间的距离或者是增加室内天线的个数,以确保手机接收信号良好
目前双11活动,各店都有优惠哦,欢迎前往店铺咨询客服~林创科技,专业解决手机信号问题!详情请与客服联系
原文来自:稳健回归
INTRODUCTION 我们以线性回归中的一些概念开始关于稳健回归的讨论。
残差: 预测值(基于回归方程)与实际观察值之间的差。
离群值: 在线性回归中,离群值是具有大量残差的观察值。换句话说,鉴于其对预测变量的价值,这是一个因变量不寻常的观察结果。离群值可能表示样本特性,或者可能表示数据输入错误或其他问题。
杠杆: 对预测变量具有极高价值的观察点具有很高的杠杆作用。杠杆作用是对自变量偏离均值的程度的度量。高杠杆点可能会对回归系数的估计产生很大影响。
影响: 如果删除观察结果会显着改变回归系数的估计值,则认为该观察结果具有影响力。可以将影响视为杠杆和离群值的产物。
库克距离: 一种结合了杠杆作用和观测值残差信息的度量。
可以在使用最小二乘回归的任何情况下使用稳健回归。在拟合最小二乘回归时,我们可能会发现一些离群值或高杠杆点。我们已经确定这些数据点不是数据输入错误,也不是来自与我们大多数数据不同的总体。因此,我们没有令人信服的理由将它们排除在分析之外。稳健的回归可能是一个很好的策略,因为这是从完全排除这些异常点与包括所有数据点OLS回归的折中方案。稳健回归的想法是根据这些观察的表现如何对观察进行不同的加权。粗略地说,它是加权和最小二乘回归的一种形式。
在MASS包中,使用rlm在命令可以实现稳健回归的几个版本。在此,我们将展示使用 Huber 和 bisquare权重的M估计。M估计定义了权重函数,使估计方程变为 ∑ i = 1 n w i ( y i − x T b ) x T = 0 \sum_{i=1}^{n} w_i (y_i - x^Tb)x^T = 0 ∑i=1nwi(yi−xTb)xT=0. 但是这一权重又取决于残差。这一方程使用迭代重加权最小平方法(Iteratively Reweighted Least Squares,IRLS)求解。例如,第j步迭代的稀疏矩阵为: B j = [ X T W j − 1 X ] − 1 X T W j − 1 Y B_j =[X^TW_{j-1}X]^{-1}X^TW_{j-1}Y Bj=[XTWj−1X]−1XTWj−1Y.
1、下载i18n npm install vue-i18n --save
2、main.js文件引用i18n import VueI18n from "vue-i18n"; //下面是elementui组件的国际化引用 import enLocale from "element-ui/lib/locale/lang/en"; //英文 import zhLocale from "element-ui/lib/locale/lang/zh-CN"; //中文 import twLocale from "element-ui/lib/locale/lang/zh-TW"; //繁体 import locale from "element-ui/lib/locale"; //将要切换的语言 // 国际化语言 const i18n = new VueI18n({ locale: "Chinese", // 将要切换的语言 messages: { //路径写自己相关国际化文件的路径 Chinese: Object.assign(require("@/assets/language/Chinese.json"), zhLocale), English: Object.assign(require("@/assets/language/English.json"), enLocale), TraditionalChinese: Object.assign(require("@/assets/language/TraditionalChinese.json"),twLocale ) } }); locale.i18n((key, value) => i18n.t(key, value)); //创建vue实例,将i18n挂载到vue实例上 var vue = new Vue({ el: "#app", i18n, router, store, render: h => h(App) }); //导出vue实例 export default vue 3、在需要使用国际化的js文件中引入main.
进入vi/vim编辑器,按CTRL+V进入可视化模式(VISUAL BLOCK) 移动光标上移或者下移,选中多行的开头,如下图所示 选择完毕后,按大写的的I键,此时下方会提示进入“insert”模式,输入你要插入的注释符,例如注释符号# 最后按ESC键,你就会发现多行代码已经被注释了 去掉多行注释 vi/vim进入命令行模式,按ctrl + v进入visual block模式,按小写字母l横向选中列的个数,例如 // 需要选中2列按小写字母j,或者k选中注释符号按d键就可全部取消注释 vim模式下粘贴原内容的格式 有时候在vim模式下粘贴内容会发现,粘贴进去的内容格式乱了,这就让人很捉急了.其实vim有专门的paste模式可以解决这个问题
开启
#进入命令行模式 : #输入命令 set paste 关闭
#进入命令行模式 : #输入命令 set nopaste 在vi/vim下跳到指定行数 比如我们要跳到文件的80行,输入下面命令
三个命令任选一个即可
80gg 80G :80
目录
引言
项目介绍
主要代码
项目下载:https://download.csdn.net/download/weixin_42253874/13985690
打包为exe
引言 打印字符print(text)是大家在编程学习初期最最经常使用的操作,而打印出来的字符多是没有颜色的,或者通过复杂的换行方式才能达到字符画的效果。下面来介绍一种新的玩法
---> 根据原图颜色进行图像文字填充使图像含有更深一层的意思. 嘿嘿嘿,,,,
有一天,小明同学突然给同桌的小美发了一张这样的图片
小美心想,这他丫的是要告诉我大爱无疆吗?质量还这么差,,, 小美脑子昏沉沉,越想越不明白。回到家里,有经验的老妈点开图像一看,,。。。。
小明和小美过上了幸福、美好的生活,,,,,,,全 剧 终。
不明白的同学点开“爱”看一下哈。下面进入正题。
项目介绍 原理:根据原图像素的颜色重新绘制另一张图,比如跨五个像素填充一个字,如何保证尺寸大小一致呢?选定宋体中文,字号大小为FontSize,原图像大小为imgW*imgH,可以将我们需要绘制的图看成是一个(imgW/FontSize)*(imgFontSize)大小的文字矩阵.填充文字的时候使用文字循环填充方式,而文字的颜色为原图中相应的颜色. 如文字(x,y)的颜色为image(x*FontSize,y*FontSize)该像素点的颜色.
打包:使用pyinstaller进行py界面程序打包,注意一定要使用虚拟环境,不然可能会出现下面错误,pyinstaller打包的时候回连带虚拟环境一起打包,所以不会出现丢包的问题了
This application failed to start because it could not find or load the Qt platform plugin "window... 需要安装PyQt环境:https://mp.csdn.net/console/editor/html/81153103
软件界面:
主要代码 conversion.py文件
from PIL import Image,ImageDraw,ImageFont # 导入图像处理模块(图像、图像绘制、图像文字) import numpy # 导入numpy模块,用于创建数组对象 from PyQt5 import QtGui scale = 1 # 生成后图片的缩放比例 default_char ='$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft我爱Python' # 默认字符 """ 该方法用于实现字符画图片的转换与生成 import_img:该参数为指定原图片的路径 export_img:该参数为转换后字符画图片输出路径 input_char:该参数为自定义字符画中的字符内容,如果该参数为空将使用默认参数 pix_distance:该参数为字符画图片的字符密度,3为清晰,4为一般,5为字符 "
我所知道的,微信小程序页面跳转有以下方法,下面分情况说明下 一、利用小程序提供的 API 跳转: 1、简单page页面之间跳转 // 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。
(注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,但是 redirectTo不会)
wx.navigateTo({ url: 'page/home/home?user_id=111' }) // 关闭当前页面,跳转到应用内的某个页面。
wx.redirectTo({ url: 'page/home/home?user_id=111' }) 2、page页面之间跳转后触发点击事件返回跳转前的页面 // 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。
wx.navigateTo({ url: 'page/home/home?user_id=111' // 页面 A }) wx.navigateTo({ url: 'page/detail/detail?product_id=222' // 页面 B }) // 跳转到页面 A
wx.navigateBack({ delta: 2 }) 3、从page跳转到topbar页面 // 跳转到tabBar页面(在app.json中注册过的tabBar页面),同时关闭其他非tabBar页面。
wx.switchTab({ url: 'page/index/index' }) 4、直接到应用内的某个页面 // 关闭所有页面,打开到应用内的某个页面。
wx.reLanch({ url: 'page/home/home?user_id=111' }) 二、wxml 页面组件跳转(可以通过设置open-type属性指明页面跳转方式): 1、跳转到新页面 // navigator 组件默认的 open-type 为 navigate <navigator url="
Strapi 是什么? Strapi 是基于 Node.js 开发的,开源,无头内容管理系统(Headless CMS)。当安装完成后,你可以在界面编写内容(文字),上传图片。最后,你可以用API的方式去调用这些内容(以JSON形式返回)。
Strapi 官网截图
21云盒提供了极简单的 Strapi 部署方法,你可以在21云盒子上通过以Node环境的方式进行部署。
如何部署? 注册成为21云盒子会员Fork strapi示例在21云盒子上创建一个云服务, 并允许21云盒子访问你的代码库(repo)配置相关参数 环境Node 12.19构建命令yarn && yarn build启动命令rsync -a public/ /data/public/ && yarn start 在选择配置方面,Strapi官方文档建议至少使用 2GB 内存和 1核CPU 的服务器,如果选择较少内存的机器进行部署,有可能会导致部署失败。
点 进阶配置 进行环境变量配置
环境变量Key环境变量ValueNODE_ENVproductionDATABASE_FILENAME/data/strapi.dbJWT_SECRET随机生成32位字符*ADMIN_JWT_SECRET随机生成32位字符* 其他相关环境变量可以参考 strapi官方文档
# 随机生成32位字符方法 # 在 命令行输, 然后把生成的字符贴进环境变量 echo $(base64 /dev/urandom | head -c32) 点 “马上创建” 如果对上描文字描述不清晰,可以参考以下实际操作示频: 第一部分内容:
如何一键部署Headless CMS Strapi 需要配置的参数如何使用环境变量存放敏感讯息 如何把 Strapi 部署到服务器 (一) | 21云盒子
第二部分内容:
如何通过修改环境变量进入development模式上传示例 Shop如何访问接口内容 如何把 Strapi 部署到服务器 (二) | 21云盒子
Java教程数据类型的转换是在所赋值的数值类型和被变量接收的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。数据类型的转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。
本篇文章由 泉州SEO www.234yp.com 整理发布,Java教程 www.234yp.com/Article/198105.html 谢谢合作!
隐式转换(自动类型转换) 如果以下 2 个条件都满足,那么将一种类型的数据赋给另外一种类型变量的时,将执行自动类型转换(automatic type conversion)。
两种数据类型彼此兼容目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据) 当以上 2 个条件都满足时,拓宽转换(widening conversion)发生。例如 byte 类型向 short 类型转换时,由于 short 类型的取值范围较大,会自动将 byte 转换为 short 类型。
在运算过程中,由于不同的数据类型会转换成同一种数据类型,所以整型、浮点型以及字符型都可以参与混合运算。自动转换的规则是从低级类型数据转换成高级类型数据。转换规则如下:
数值型数据的转换:byte→short→int→long→float→double。字符型转换为整型:char→int。 以上数据类型的转换遵循从左到右的转换顺序,最终转换成表达式中表示范围最大的变量的数据类型。
例 1
顾客到超市购物,购买牙膏 2 盒,面巾纸 4 盒。其中牙膏的价格是 10.9 元,面巾纸的价格是 5.8 元,求商品总价格。实现代码如下:
public static void main(String[] args) { float price1 = 10.9f; // 定义牙膏的价格 double price2 = 5.8; // 定义面巾纸的价格 int num1 = 2; // 定义牙膏的数量 int num2 = 4; // 定义面巾纸的数量 double res = price1 * num1 + price2 * num2; // 计算总价 System.
视频很小,可以用流量观看,不是土豪也没事。
下面先看一下使用说明的翻译吧。
1. 搭建
用LDD打开release/CubeSpinner.lxf,照图搭之!这个魔方机器人的大多数零件来自EV3套件,你只需要再准备白色和黄色的圆砖(当然颜色随意,白色和黄色会比较友好)。第二个颜色传感器(连接到4端口)是可选的,加上它可以使扫描时间缩短4秒。因为LDD搞不定皮筋,所以请大家参照视频用皮筋拉紧两个手臂使棘轮结构能够正常工作
2.准备一个魔方
你需要一个竞速魔方,色块有倒角会更顺滑,你还可以方便地取掉中心帽来调节螺丝。我使用的是“速度魔方极限II版”(Speed Cube Ultimate II)。你需要对魔方进行一下改造,用两个LEGO 2x2 板替换中心帽,凸点向外。要让你的魔方拥有视频里的那种魔力,你只需要把LEGO板用锉锉掉一点点边角,使它能够适合魔方块的形状。我选择把板粘上去,这样更耐用,如果你不想永久破坏原来的魔方也可以选择不粘。魔方的配色方案必须遵循带有贴纸/板材的标准红宝石魔方和黑色背景。
3.安装软件
你需要在EV3主机上创建一个工程目录,一个简单的方法是利用EV3-g上传“launcher/CubeSpinner.ev3”自动建立这个目录,然后下载“release/CubeSpinner.rbf”和“spinnermain.rbf”到这个目录。
也可以用如下步骤:
a.将主机连接到电脑
b.启动EV3-g
c.新建一个新项目“CubeSpinner”,它将只包含开始模块
d.下载到主机,主机上就有文件夹“CubeSpinner”了,里面有一个程序文件
e.启动内存浏览器。这将显示“CubeSpinner”文件夹和内容
f.删除CubeSpinner文件夹中的程序文件
g.选择“CubeSpinner”文件夹,并使用“下载”功能将“release/CubeSpinner.rbf”和“spinnermain.rbf”文件下载到主机。
4.操作魔方机器人
在启动程序之前,请确认所有的电机臂对齐。两个大型电机带动的红色3M跨接块对齐的时候,你可以用手指感觉到它跟黑色11M梁过渡地地方是光滑的。红色3M跨接块应该能顺时针和逆时针转动动相同的角度。(老妖怪注,这应该说的是大型电机内部齿轮有空隙,需要调整到顺时针和逆时针空隙一样。这里颜色以图纸为准)。同样,你可以将中型电机带动的旋转结构与离中型电机最近的红色11M梁对齐。程序运行后,就不能对齐了。
从项目“CubeSpinner”启动“CubeSpinner”。主机的中心按钮已经用7M梁转到侧面,往下按7M梁即可。启动后,程序会用大概1分40秒的时间来创建一些大型数据表。完成之后颜色传感器的灯变白,就可以放魔方了。
打乱魔方,插入正确的方向:白色中心块必须在左边,黄色中心块必须在右边(按机器人上的两个圆砖的颜色放),橙色中心块必须在上面。
按中心按钮开始运行。
如果你只连接了一个颜色传感器,机器人将直接还原魔方(如果没有出错)。
如果你用了两个颜色传感器,首次运行只能校准颜色传感器,并且进行一些看似杂乱的步骤,然后魔方会回到刚放进去的状态。再次按中心按钮,机器人才还原魔方。每次启动程序后都需要进行这样的校准步骤。
每次成功还原之后,你可以在显示屏上看到一些信息:所用的时间和解决的步数。
5.故障排除
这个机器人的结构和程序是用9V电源开发和测试的(一些直流电源适配器或不可充电电池)。我试过7.2V(可充电电池)也似乎工作正常,就是电机转得慢一点。
颜色传感器在昏暗的灯光下效果最佳,太亮的灯光尤其是新式LED灯会对颜色传感器造成真正的麻烦。如果扫描程序无法获得合理的颜色组合(老妖怪注,如果颜色识别错误会导致建立数据结构的时候发现自相矛盾),主机会发出哔声并在屏幕上显示扫描结果图。
看完了之后是不是有点蒙,不知道从何下手?大体意思就是先把那个只有开始的程序的EV3程序文件下载到主机。然后用EV3编程软件的内置浏览器把那两个rbf文件下载到ev3里面去 ,就可以运行了。
再谈谈做的过程中的注意事项啥的。
1. 搭建
如果你用普通5号电池,照图搭建即可
如果你用乐高原装充电电池,需要在图中四个地方用梁垫高一个单位。
2.魔方的选择
原作者说了,需要竞速魔方,需要有倒角。不要不把这句话当回事,一般魔方是不行的。
两个方面,一是颜色要正,尤其是红,绿,橙这三种颜色,有些魔方红像粉红,有些魔方绿得太鲜艳像青色,有些魔方橙得偏黄,都是不行的,传感器要是不能正确识别,一切都是浮云。至于是不是黑底倒是无所谓,我喜欢用彩色。理论上白底容易造成干扰,黑底和彩色不会。二是阻力要小,也就是所谓竞速魔方,要有倒角,这样可以有一定的容错性。这款机器人用中型电机转魔方,力量偏小,如果魔方比较紧可能会转不到位,很容易就卡住了。有朋友说竞速魔方太贵了,呵呵,一分钱一分货,请按你家小朋友参加魔方比赛的规格买魔方。
3. 魔方的改造
原作者说,魔方的白色和黄色中心帽需要用乐高2x2板替换,其实不必如此
你只需要把白色和黄色中心帽取下来。
然后把2x2板锉掉四个角就可以了,没有锉刀,可以用剪刀,小心一点剪,我就是用剪刀剪的。
接下来,把2x2板放进中心块。
最后,把2x2板直接拼到圆砖上。魔方放机器人上的时候,只需要卡住就行了。
4. 对齐
对齐操作是非常重要的,两个大型电机带动的跨接块需要与11M梁对齐,也就是原作者说的用手指感觉应该是光滑的。再在齿轮空隙的范围内左右转动一下,左右转动角度应该差不多,这点要求不是太高,差不多就行。中型电机带动的11M梁和不动的那根11M梁也要对齐。
装上魔方,注意魔方的各面要规规矩矩的,如果你放上去就有肉眼可以看出来的偏差,可能会失败。
观察一下,光感的光斑要完全落在棱块上,如果落在棱块和角块之间,可能会失败。
5. 运行程序
程序运行之后,需要大概2分种时间来建立一个数据表,这个阶段光感发红光,稍安勿躁,耐心等待。光感变成彩色光,放入魔方,白色中心块左边,黄色中心块右边,橙色中心块上面,不能放错了。强烈建议圆砖,圆板,2x2板都左边用白色,右边用黄色。按中心按钮,机器人会进行一次校准操作,需要的时间比解魔方要长一些,完了之后魔方会回到刚放进去的状态。稍安勿躁,好戏还没开始。校准完之后,再一次按中心按钮,机器人正式开始解魔方。它的行为并非像原作者说的那样扫描之后会停下来,估计是更新程序忘了更新说明文件。你可以看到光感的颜色先是彩色,那是它在扫描,然后变成红色,后面的过程就是解魔方了,一气呵成。根据屏幕显示,扫描大概是4秒,计算零点几秒,还原大概是8秒。
还原之后,取下魔方,打乱再放回去,以后都是扫描还原一气呵成了。
有时候机器人中途会停一下,不要去管它,大概一秒之后它会继续还原动作。
最后提醒一句,电池电不足容易卡住。
大家如果需要在小伙伴面前展(zhuang)示(B),注意在后台做完建数据表和校准操作之后再亮相,按键之后10秒左右搞定,绝对的展示利器。
关注「豆皮范儿」,回复“加群”
加入我们一起学习,day day up
Hello,豆皮粉们,我来了!顶着十二月的寒潮,诚意满满的来了!
这回约稿又得到来自字节跳动数据平台的的“阳羡”关于React最新特性的文章翻译 。
本周,React 团队发布了零打包体积的 React 服务端组件[1](Server Components),旨在用服务端驱动的心理模型实现现代 UX。这与组件的服务器端渲染(SSR)有很大的不同,可能会导致客户端 JavaScript 打包体积大大减少????。
我对这项工作的方向相当兴奋,虽然它还没有准备用于生产环境中,但非常值得继续关注。我强烈建议大家阅读 RFC[2] 或观看 Dan 和 Lauren 的演讲[3],了解更多细节。
原文 :https://addyosmani.com/blog/react-server-components/
一、服务端渲染局限性 今天的客户端 JavaScript 的服务器端渲染可能是次优的。你的组件的 JavaScript 代码在服务器上被渲染成一个 HTML 字符串。这个 HTML 被传递给浏览器,这可能会导致快速的首次内容绘制(First Contentful Paint)或大内容绘制(Largest Contentful Paint)。
然而,JavaScript 代码仍然需要被下载并解析以实现交互性,这通常是通过水合(hydration)步骤实现的。服务器端渲染通常用于初始页面加载,所以在水合(hydration)后您不太可能再看到它被使用。
注意:虽然确实可以利用 SSR 构建一个仅使用服务端渲染(SSR)的React应用,完全避免在客户端上水合,但界面上的重交互性往往需要跳出 React。服务端组件启用的混合模型将允许在每个组件的基础上决定是否是 SSR/CSR,或者两者都是。
通过 React 服务端组件,我们的组件可以定期重新获取。当有新的数据时,可以在服务器上运行带有组件的应用程序,从而限制了需要发送给客户端的代码量。
[RFC]: 开发者需要不断地选择使用第三方的包。使用一个包来渲染markdown或格式化一个日期,对于我们开发者来说是很方便的,但是它增加了代码的大小,影响了用户的性能。
二、服务端组件 React 新的服务端组件与服务器端渲染相得益彰,实现了渲染成中间抽象格式,而不需要添加到 JavaScript 打包结果中。这既可以在不损失状态的情况下将服务器树与客户端树合并,又可以扩展到更多组件。
服务端组件不是 SSR 的替代品。当搭配在一起时,它们支持以中间格式快速渲染,然后由服务器端渲染基础架构将其渲染成 HTML,使早期的渲染更加快速。我们对服务端组件生成的客户端组件进行 SSR,类似于 SSR 与其他数据获取机制的使用方式。
然而这一次,JavaScript 的捆绑规模将大大缩小。早期的探索表明,服务端组件对于减少打包体积尤为有效(-18-29%),但一旦进一步的基础设施工作完成,React 团队将对实际的收益有一个更清晰的认识。
[RFC]: 如果我们把上面的例子迁移到服务端组件上,我们就可以为我们的功能使用完全相同的代码,但避免将其发送到客户端--节省了超过 240K 的代码(在未压缩的情况下)。
项目在gitlab的http请求的url:
http://gitlab.xxx.com/test.git
用以下方式请求不需要再输入用户名和密码
git clone http://用户名:密码@gitlab.xxx.com/test.git
密码不要包含@/等特殊符号,会跟后面的@gitlab.com冲突,导致clone失败
css背景图片显示不完是什么原因?怎么解决?下面本篇文章就来给大家介绍一下css背景图片显示不完的解决方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
css设置背景图片显示不全是因为背景图片过大导致的,我们可以通过设置div大小大于背景图片或使用background-size属性设置背景图片小于div大小使背景图片显示完全。
示例:
下面我们来看一下通过设置div大小来使背景图片完全显示:
div
{
width:100px;
height:100px;
background-size:cover;
background: url
('https://img.html.cn/upload/article/000/000/013/5da3e4e32f6e0593.jpg') no-repeat;
}
效果图:
设置div大小后
div
{
width:200px;
height:200px;
background-size:cover;
background: url
('https://img.html.cn/upload/article/000/000/013/5da3e4e32f6e0593.jpg') no-repeat;
}
效果图:
更多前端开发知识,请查阅 HTML中文网 !!
1、编写函数计算 1 1 + 2 2 + ⋯ + n n 1^{1}+2^{2}+\cdots+n^{n} 11+22+⋯+nn #####第一题############ fun1 = function(n){ s = 0 for (i in 0:n) { s = s + i^i } message('前n项目和为:',s) } fun1(2,4) # 调用函数 2、编写函数计算1到50的和,分别用for循环和while循环 ######第二题############### ## for 循环 fun2 = function(n){ s = 0 # 这里设为1来装连乘 for (i in 1:n) { s = s+i } message('最后和为:',s) } fun2(50) ###########分割线############################### ## while 仅此条件不同而已 fun3 = function(n){ s = 0 i = 1 while (i<=n) { s = s + i i =i + 1 # 需要更新变量 } message('最后和为:',s) } fun3(50) 3、用循环函数求出1-100之间能被3和5整除的数的和,并输出结果。 ######第三题########### k = 100 a = c() for (i in 1:k) { if(i%%3==0 & i%%5==0){ a = c(a,i) } } message('能被3和5整除的数:') print(a) message('和为:',sum(a)) 4、(1)读入文件4.
2010-03-08
北京三维动画动漫设计培训班离国贸最近的是
本人推荐ACG国际动画教育,本人在苹果社区北区工作,有自已的工作室,由于ACG国际动画教育在苹果社区也有工作室,所以相对了解一些,我给你简单介绍一下我所了解的一个ACG的教育项目吧!!ACG-CCTV专业3D影视动画师进阶课程/Animation Foundation Courses ACG-CCTV三维动画师进修计划(简称AFC)是一个基础性的专业影视三维动画制作课程,主要培养CG动画领域的制作型人才,使学员能够在系统的进阶式强化训练后达到CG产业流程对艺术、技术、综合素质上的要求,可胜任三维动画技术制作或相关教学工作。 基于国内外影视动画制作公司对生产创作的实践经验和入职标准,ACG...全部
本人推荐ACG国际动画教育,本人在苹果社区北区工作,有自已的工作室,由于ACG国际动画教育在苹果社区也有工作室,所以相对了解一些,我给你简单介绍一下我所了解的一个ACG的教育项目吧!!ACG-CCTV专业3D影视动画师进阶课程/Animation Foundation Courses ACG-CCTV三维动画师进修计划(简称AFC)是一个基础性的专业影视三维动画制作课程,主要培养CG动画领域的制作型人才,使学员能够在系统的进阶式强化训练后达到CG产业流程对艺术、技术、综合素质上的要求,可胜任三维动画技术制作或相关教学工作。
基于国内外影视动画制作公司对生产创作的实践经验和入职标准,ACG国际动画教育精心设计了AFC制作课程培训,并与央视风云(CCTV数字频道)合作,为学员提供更广阔的学习资源和CG发展平台,ACG-CCTV项目官方网址:WWW。
ACGCCTV。COM。收起
一、修饰符 修饰符有五种类型:
二、表单修饰符 1.trim trim:去除数据头尾的空格
<input type="text" v-model.trim="value"> 2.lazy lazy:光标离开标签的时候,会赋值给变量,也就是在change事件之后再进行信息同步
<input type="text" v-model.lazy="name"> 3.number number:将数据转化成数字类型,当无法被parseFloat解析时返回原值(即字符串中的首个字符为数字时即可返回数字,否则返回原值)
例:
输入1323dsdhd,返回1323;输入 asdd414,返回 asdd414 <input type="text" v-model.number="num"> 三、事件修饰符 1.stop stop:阻止冒泡,相当于调用event.stopPropagation()
<div @click="shout(2)"> <button @click.stop="shout(1)">按钮</button> </div> 此例中不加stop会执行1,2,加上stop阻止冒泡,只执行1,不会执行2
2.prevent prevent:阻止默认事件,相当于调用event.preventDefault()
<a href="https://www.baidu.com" @click.prevent="shout(3)">百度</a> 此例中点击a标签不会跳转到百度,而是执行shout(3)
3.self self:当event.target为自身元素时触发
<div @click.self="shout(2)"> <button @click="shout(1)">按钮</button> </div> 此例中只执行shout(1),不执行shout(2)
使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。
<div @click="shout(3)"> <div @click.self.stop="shout(2)"> <button @click="shout(1)">按钮</button> </div> </div> 此代码执行1,执行3,因为阻止了2自身的执行 <div @click="shout(3)"> <div @click.stop.self="shout(2)"> <button @click="shout(1)">按钮</button> </div> </div> 此代码只执行1,因为阻止了全部冒泡 4.once once:绑定了事件以后只能触发一次,第二次就不会触发,但仍然有冒泡
<div @click="shout(3)"> <div @click="
文章目录 数据增强说明导入必要的包读取图片并显示显示方式一显示方式二 Pytorch 数据增强transforms 之旋转transforms 之裁剪transforms.functional 之裁剪特殊数据增强方式 Augmentor导入 Augmentor 包读取图像并进行弹性形变 数据增强实践导入新需要的模块定义数据增强函数开始处理效果展示 数据增强说明 1.本次将演绎常用的Pytorch数据增强方式
2.本次将简单介绍数据增强模块Augmentor的使用方式
导入必要的包 import PIL.Image as Image import os from torchvision import transforms from IPython import display import matplotlib.pyplot as plt 读取图片并显示 transforms是对PIL图像进行处理(特殊函数除外RandomErasing),因此我们需要导入PIL包进行图像读取
显示方式一 利用IPython.display模块展示图片
display.Image('./augmentation/Pytorch_logo.png') 显示方式二 读取图片
image = Image.open('./augmentation/Pytorch_logo.png') image.size (1025, 205) image Pytorch 数据增强 transforms 之旋转 随机水平(左右)翻转
torchvision.transforms.RandomHorizontalFlip(p=0.5)
以给定的概率水平翻转给定的图像。该图像可以是PIL图像或torch Tensor,在这种情况下,它应具有[…, H, W]形状,其中...表示任意数量的前导维度,比如...可以是通道数,或者是batchsize和通道数,最后两位必须指定高度与宽度
参数:
p(float)–图像被翻转的可能性。默认值为0.5
fig = plt.gcf() fig.set_size_inches(15, 4) for i in range(4): randomHorizontalFlip = transforms.
调试相关 1. adb 服务 开启服务adb start-server关闭服务adb kill-server 2. 设备 列出设备及其idadb devices使用特定设备操作adb -s device_id
例如:adb -s 47db0de20304 shell 3. 重启 正常重启adb reboot重启到 bootloader (刷机模式)adb reboot bootloader重启到 recovery (恢复模式)adb reboot recovery 4. Monkey 测试 随机测试adb shell monkey -p your.package.name 1000script文件测试adb shell monkey -f /sdcard/xxx.script 5. 查看进程 列出进程列表及其pidadb shell ps杀死指定pid的进程adb shell kill pid查看指定进程信息adb shell ps -x pid 6. 查看 service adb shell service list
7. 查看系统当前内存使用情况 adb shell cat /proc/meminfo
查看指定包名应用内存使用情况adb shell dumpsys meminfo package 8.
K8s安装可以采用:
Minikube:Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。官方地址:https://kubernetes.io/docs/setup/minikube/Kubeadm:一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/二进制包: 从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。 这里采用kubeadm,方便点
版本:
docker:19.03.13
kubeadm:1.19.2-0 kubelet:1.19.2-0 主节点,从节点,重置命令
kubeadm reset 根据提示 删除 /etc/cni/net.d
我用的flannel网络插件,删除网络
sudo ifconfig cni0 down sudo ip link delete cni0 sudo ifconfig flannel.1 down sudo ip link delete flannel.1 镜像不要删
master重新init
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.197 --kubernetes-version=v1.19.2 保存加入命令
kubeadm join 192.168.1.197:6443 --token l95n27.ebimpogkckiu1lm3 \ --discovery-token-ca-cert-hash sha256:20b3bdd7745a06ecba0a3b1476be5a821f764a7f4b1cfd272459458e9c23df5b 按照提示执行
创建flannel
kubectl apply -f kube-flannel.yml 下载flannel
wget --no-check-certificate https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 如果连接失败,将raw.githubusercontent.com的ip地址写入host文件 查看组件状态
kubectl get pod --all-namespaces -o wide 如果coredns显示pending,有污点,可以再等等它启动
遇到的情况是在linux_aarch64下编译的程序(使用tensorflow pb文件做预测),在执行时报错:
Traceback (most recent call last): ...... File "google/protobuf/message.py", line 199, in ParseFromString File "google/protobuf/internal/python_message.py", line 1145, in MergeFromString File "google/protobuf/internal/python_message.py", line 1212, in InternalParse File "google/protobuf/internal/decoder.py", line 731, in DecodeRepeatedField google.protobuf.message.DecodeError: Truncated message. [32503] Failed to execute script 奇怪的是源码运行是ok,但编译后的程序执行报错。
经检查是读取pb时出错,例如:graph_def.ParseFromString(f.read())
再看错误具体原因:DecodeRepeatedField decode...看来可能是字符集的坑。
怀疑是文件读取后异常,大概率是字符集问题,查看并尝试修改系统字符集
通过locale命令看到系统字符集是zh_CN.UTF-8
修改为 en_US.UTF-8后,执行一切正常。
LANG=en_US.UTF-8
/** * 根据QQ号获取用户信息 * @param $qqCode * @return array * @author zayn * @date 2020-12-29 */ function getQQInfo($qqCode): array { $html = file_get_contents("http://r.qzone.qq.com/fcg-bin/cgi_get_score.fcg?mask=7&uins=" . $qqCode); //获取编码 $encode = mb_detect_encoding($html, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5')); //转换编码 $html = mb_convert_encoding($html, 'UTF-8', $encode); preg_match('/portraitCallBack\(([\s\S]+)\);/', $html, $mat); $res = json_decode($mat[1], true); $qqCode = array_keys($res)[0]; //QQ号为空 if ($qqCode == 'error') { return fail($res[$qqCode]['msg'], $res); } $array = $res[$qqCode]; //名字为空 if ($array[6] == '') { return fail('名字为空'); } return success(['img' => getQQHeader($qqCode), 'name' => $array[6], 'qq' => $qqCode]); } /** * 根据QQ获取头像 * @param $qqCode * @return string * @author zayn * @date 2020-12-29 */ function getQQHeader($qqCode): string { return 'http://q1.
数据科学三分天下,Python占其一。Python数据科学 NumPy是基础,不管pandas还是tensorflow, NumPy都是基础库,学习NumPy基础类型和操作必不可少。本文我们就介绍NumPy基础,并以图形方式展现,以方便初学者理解。
概述
NumPy中最基本数据类型是数组,所有数据组织都是n维数组形式组织的。其中一维和二维数组是基础,其他多维数组的操作和其类似。
NumPy数组形式上和Python列表相似。两者都可以用作数据容器,可以快速访问和设置项目,但是数据插入和移动比较慢。
NumPy数组支持对其进行简单算术运算:
NumPy数组还具有:
比较紧凑,尤其是在一个以上的维度上;
可以向量化操作时比列表快;
将元素追加到末尾比列表慢(O(1)和O(N));
通常是同质的:只能快速处理一种类型的元素;
注意:O(N)表示完成操作所需的时间与数组的大小成正比,以及O(1),表示消耗时间固定和数组的大小无关。
向量——一维数组
向量初始化:创建NumPy数组的一种方法通过Python列表转换。数组类型会从列表元素类型中自动推导:
确保输入为同类型列表,否则其类型dtype='object',不仅转换耗时,而且只保留NumPy中包含的语法糖。
NumPy数组无法像Python列表那样增长:在数组末尾没有保留空间以方便快速追加。
一种常见的做法要么长出一个Python列表,并将其转换为NumPy的数组时,它已准备就绪或预分配必要的空间,可以用np.zeros和np.empty。
通常可以使用zeros_like()函数创建一个空数组,以大小和元素类型匹配现有数组:
创建以常量值填充的数组的函数都有一个对应的的_like函数:
在NumPy中,对有序数组有两个初始化函数:argnge()和lispace()
如果需要类似的浮点数组,例如[0., 1., 2.],可以修改arange输出的类型:arange(3).astype(float)。arange函数对类型敏感:如果将int作为参数输入,它将生成int,并且如果输入float(例如arange(3.)),则将生成float。
但是arange在处理浮点数方面并不是特别擅长:
0.1对于我们来说,这看起来像是一个有限的十进制数,但对计算机而言却不是:用二进制表示,它是一个无穷小数,必须四舍五入到精度需求的位数。所以给arange赋值为小数通常会有问题:会抛出一个错误。可以使间隔的非整数步数,但这会降低可读性和可维护性。
而linspace不受舍入错误的影响,它始终生成要求的元素数量。不过,需要注意的的是它计算的是点,而不是间隔,因此最后一个参数始终,通常认为是加一。因此结果11,而不是上面示例中的10。
在数值计算中,通常需要生成随机数组:
向量索引
一旦将数据保存在了数组中,就可以使用NumPy数组索引对其进行操作。
除花式索引外,以上介绍的所有索引方法实际上都是所谓的"视图":如果索引的值做操作发生更改,则它们不会影响原始数组中存储的数据。
所有这些方法,包括花式索引,都是可变的:如上所述,它们允许通过分配修改原始数组的内容。该功能通过切片来改变数组复制行为:
从NumPy数组中获取数据的另一种超级有用的方法是布尔索引,它允许使用各种逻辑运算符:
any和all行为都和python中的一样,但不支持短路。
Python中的"三元"比较,比如3
如上所述,布尔索引也是可写的。它有两个常见的用例,它们是专用功能:过度重载的功能np.where和np.clip。
向量运算
算术是NumPy性能最耀眼的地方之一。向量运算符已经用c++重构,可使我们避免慢的Python循环。NumPy允许像普通数字一样操作整个数组:
和Python中一样,a//b表示div b(除法的商),x ** n表示x 将加法或减法将int提升为浮点数的方式相同,将标量提升(也称为broadcast)至数组:
大多数数学函数都有NumPy对应项,可以处理矢量:
标量类型支持特殊的运算符:
三角函数:
数组可以进行四舍五入:
名称np.around只是np.round为了避免round和Python函数干扰,而引入的别名from numpy import *(对比常见的import numpy as np)。也可以使用a.round()。
NumPy还可以执行以下基本统计计算:
这些函数中的每一个都有支持nan的变体:例如nansum,nanmax等
排序功能比Python对应功能具有更少的功能:
向量搜索
与Python列表相反,NumPy数组没有index方法。
查找元素的一种方法是np.where(a==x)[0][0],它既不优雅也不高效,因为即使要查找的项在开头,从一开始就需要遍历数组的所有元素。
更快的方式做到这一点是通过Numba加速:
但是,一旦对数组进行排序,情况就会变得更好:复杂度为O(log N)的情况下确实非常快,但是首先需要O(N log N)的时间。
实际上,通过在C中实现搜索来加速搜索不是问题。问题是浮点数比较。
浮点数比较
函数np.allclose(a, b)比较具有给定精确度范围内的浮点数组
ABR为area border router的缩写 释义:区域边界路由器 用于将一个或多个OSPF区域边界上、将这些区域连接到主干网络的路由器 2.ASBR为Autonomous System Boundary Router的缩写 释义:自治系统边界路由器 ASBR位于OSPF自治系统和非OSPF网络之间。ASBRs可以运行OSPF和另一路由选择协议(如RIP),把OSPF上的路由发布到其他路由协议上。发出的LSA5,用于向自治系统区域通告网络拓扑 ASBR可以认为是OSPF域外部的通信量进入OSPF域的网关路由器,也就是说,ASBR路由器是用来把其他路由选择协议学习到的路由通过路由选择重分配的方式注入到OSPF域的路由器。一个ASBR路由器可以是位于OSPF域的自治系统内部的任何路由器,他可以是一台内部路由器或者ABR路由器 OSPF宣告路由的方式,有两种: -network ,仅仅能针对直连路由; -import-route ,可以针对所有类型的路由,该命令后跟的是“路由的类型”
区域划分: 骨干区域 非骨干区域: 普通区域 特殊区域:不允许接收4类LSA和5类LSA区域 Stub末梢区域 :允许接收1类、2类、3类LSA,ABR自动产生一个默认路由3类LSA Totally Stub 完全末梢区域:允许接收1类,2类LSA ABR自动产生一个默认路由3类LSA NSSA Totally NSSA
展开全部
这种情况对方是听不到的,送话器和扬声器都在被微信暂e68a84e8a2ad3231313335323631343130323136353331333433643733用。
语音通话是通过语音并借助传输媒介的沟通方式,常见的有座机通话、手机通话、对讲机通话、网络上面的语音聊天等。可分为消耗流量及消耗话费的两种形式。
上个世纪,语音通话只停留在电话、手机跟对讲机、到现在逐渐发展成一种普遍的通讯手段、不仅仅只通过电话、还有聊天软件、甚至于手机软件都能实现语音通话。在不久的将来可能会被视频通话所取代。
扩展资料
微信打电话按了静音对方是不会显示通话的另-方已经开启了静音模式的,虽然不会有显示,但对方是无法听到通话声音的。而且很多用户在通话的时候突然无法听到对方的声音或者对方无法听到自己的声音,多数是由于误触了静音键导致的。
微信使用技巧:若在使用微信邀请好友进行语音通话的时候提示对方正在忙线中,可能是对方正在和其他好友语音或者视频通话中,因此会有该提示音,用户可以选择给对方发送文字消息,对方是可以收到并且可以查看的,对于这一点还是需要了解的。
若用户收到的微信语音消息在点击收听的时候提示播放失败,一般是由于用户所在环境网络信号较差导致的,可以换一个信号比较好的地方再播放,若不是信号问题,可以将手机关机重启一下再试试,一般就可以解决问题了。
除此之外,也有可能是对方在录制语音消息的时候出现了问题,可以和对方说明情况,让对方重新发送。当然了,若用户所有的语音消息都无法查看的话,那么则是与权限设置有关的,只需要设置一下微信语音麦克风权限就可以了。
1 概述
字符串,string,一串固定长度的字符连接起来的字符集合。Go语言的字符串是使用UTF-8编码的。UTF-8是Unicode的实现方式之一。
Go语言原生支持字符串。使用双引号("")或反引号(``)定义。
双引号:"", 用于单行字符串。
反引号:``,用于定义多行字符串,内部会原样解析。
示例:
// 单行
"心有猛虎,细嗅蔷薇"
// 多行
`
大风歌
大风起兮云飞扬。
威加海内兮归故乡。
安得猛士兮守四方!
`
字符串支持转义字符,列表如下:
\r 回车符(返回行首)
\n 换行符(直接跳到下一行的同列位置)
\t 制表符
\' 单引号
\" 双引号
\\ 反斜杠
\uXXXX Unicode字符码值转义,例如 "\u5eb7" 就是 "康"
Go语言中字符串的顶层结构是由一个指针和长度构成的。使用 unsafe.Sizeof("") 会得到16长度,其中8个字节是指针,指向字符串的内存地址,8个是存储字符串的长度。
2 常规操作
以下是针对字符串的操作总结,主要来自于Go语言的API的说明和测试。
[]索引访问
可以使用[index]方式,访问到字符串中的字符。可以访问,不可以修改。
s := "Hank"
fmt.Printf("%c", s[2])
// 返回 n
unicode/utf8 包
多字节字符的处理,请参考 unicode/utf8 包的相关说明。
例如:
import "unicode/utf8"
utf8.RuneCountInString("小韩说课")
// 返回 4
len(),字符串占用的字节数
utf-8 是变长字符集,英文标点占用1个字节,中文占用3个字节。
len("Hank康")
1. 概述
python中内置了 append() 以及 extend() 方法,这两个方法功能类似,但是实际的使用上是完全不同的; 首先用法类似,均是list.appenf(obj) , list.extend(seq).
list.append(obj)和list.extend(seq)的不同点:
项list.append(obj)list.extend(seq)参数不相同append(obj)参数是obj,任意对象都是可以的;extend(seq)参数必须是可迭代的对象,例如整型数字就不可以。功能不相同append(obj)是直接将整个obj放入列表末尾;extend(seq)是将seq打散后依次放入列表末尾
2. append()
2.1 描述
append() 方法用于在列表末尾添加新的对象。
2.2 语法
append()方法语法:list.append(obj)
2.3 描述参数
obj – 添加到列表末尾的对象。
2.4 返回值
该方法无返回值,但是会修改原来的列表。
2.5 实例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2019/1/12 17:00
# @Author : Arrow and Bullet
# @FileName: append_extend.py
# @Software: PyCharm
# @Blog :https://blog.csdn.net/qq_41800366
A = [1, 2, 3]
B = 4
C = A.append(B)
JavaScript
语言:
JaveScriptBabelCoffeeScript
确定
var c = document.getElementById('canv');
var $ = c.getContext('2d');
var w = c.width = window.innerWidth;
var h = c.height = window.innerHeight;
var tile = (function() {
tile.prototype.rects = null;
tile.prototype.divved = false;
function tile(x, y, w, h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
tile.prototype.div = function() {
this.t = [];
if (this.w > this.h) {
this.t[0] = new tile(this.
DDR4内存颗粒--美光篇
美光目前已经量产的DDR4内存颗粒主要包括三款MT40A1G8PM-083E、MT40A2G4PM-083E、MT40A512M16HA-083E,其余产品均处于流片阶段或者交付阶段,单颗容量均为8Gb,三者的内存位宽分别为x8、x4、x16,三款产品均只需双面16颗就可以组成16GB单条。
美光DDR4内存颗粒规格参数
在DDR3时代,美光引以为傲的D9颗粒除了优秀的超频性能,还拥有所以内存颗粒最出色的时序参数,DDR3 2133 9-9-9这样的参数成为DDR3时代的绝唱。进入到DDR4内存时代,美光颗粒并没有带来期待已久的D9传奇,同第一代SK Hynix MFR内存颗粒一样,内存频率平平,同时超频不吃电压,基本处于超不动的状态。
采用美光DDR4内存颗粒的海盗船复仇者LPX DDR4 2400内存
美光MT40A1G8PM-083E、MT40A2G4PM-083E、MT40A512M16HA-083E三款内存颗粒官方定义的频率均为DDR4 2400MHz,CL时序也均为16,所以市面上采用美光颗粒的内存频率基本都是DDR3 2400,例如海盗船复仇者LPX DDR4 2400(CMK8GX4M1A2400C14),不过内存时序被优化到14,但频率基本超不动。
不过在美光的官方产品列表中我们看到了大量的DDR4内存颗粒处于流片或交付阶段,不知道这些新的产品是否会回归D9时代的超频传奇,带来更高的频率和更优秀的时序。
电脑开机无显示故障的排除方法。(无报警声)
第1步:首先检查电脑的外部接线是否接好,把各个连线重新插一遍,看故障是否排除。
第2步:如果故障依旧,接着打开主机箱查看机箱内有无多余金属物,或主板变形造成的短路,闻一下机箱内有无烧焦的糊味,主板上有无烧毁的芯片,CPU周围的电容有无损坏等。
第3步:如果没有,接着清理主板上的灰尘,然后检查电脑是否正常。
第4步:如果故障依旧,接下来拔掉主板上的Reset线及其他开关、指示灯连线,然后用改锥短路开关,看能否能开机。
第5步:如果不能开机,接着使用最小系统法,将硬盘、软驱、光驱的数据线拔掉,然后检查电脑是否能开机,如果电脑显示器出现开机画面,则说明问题在这几个设备中。
接着再逐一把以上几个设备接入电脑,当接入某一个设备时,故障重现,说明故障是由此设备造成的,最后再重点检查此设备。
第6步:如果故障依旧,则故障可能由内存、显卡、CPU、主板等设备引起。接着使用插拔法、交换法等方法分别检查内存、显卡、CPU等设备是否正常,如果有损坏的设备,更换损坏的设备。
第7步:如果内存、显卡、CPU等设备正常,接着将BIOS放电,采用隔离法,将主板安置在机箱外面,接上内存、显卡、CPU等进行测试,如果电脑能显示了,接着再将主板安装到机箱内测试,直到找到故障原因。如果故障依旧则需要将主板返回厂家修理。
第8步:电脑开机无显示但有报警声,当电脑开机启动时,系统BIOS开始进行POST(加电自检),当检测到电脑中某一设备有致命错误时,便控制扬声器发出声音报告错误。
因此可能出现开机无显示有报警声的故障。对于电脑开机无显示有报警声故障可以根据BIOS报警声的含义,来检查出现故障的设备,以排除故障。
将BIOS电池放电(恢复BIOS出厂默认值)建议插拔一下显卡、内存,清理一下卫生,并且擦亮显卡、内存的金手指。
如果在不操作的情况下自动关机,可能是设置的问题。右击桌面选属性/屏幕保护程序/电源/电源使用方案。1、点下拉列表选:“家用/办公桌”将关闭监视器、关闭硬盘、系统待机、这三个内容的列表中设置为“从不”按应用。2、点下拉列表选:“演示”将关闭监视器、关闭硬盘、系统待机、这三个内容的列表中设置为“从不”按应用。
3、点下拉列表选:“一直开着”将关闭监视器、关闭硬盘、系统待机、这三个内容的列表设置为“从不”按应用即可。4、点下拉列表:“便携/袖珍式”将关闭监视器、关闭硬盘、系统待机、这三个内容的列表中设置为“从不”按应用。
自动关机故障排除方法:
1、有可能是BIOS的设置问题,进入BIOS里恢复默认设置或把主板的电池拿出来,反扣放电,等5分钟在反装进去即可。
目的:是BIOS的设置恢复默认值,排除BIOS的散热预设自动重启或关机现象。
2、如果电脑在使用某一个应用程序软件时发生自动关机,则自动关机故障可能是由此程序软件引起的,一般将程序软件卸载即可。
3、接着检查电源,电源品质差,老化或功率过小,无法满足电脑各配件的供电需求,可更换大功率高质量的电源,如果故障排除,则是电源引起的自动关机故障。
4、接着使用排除法,检查内存、显卡、CPU、CPU风扇、主板等。
5、检查内存,内存质量不过关、散热不良、超频、不同品牌的内存混插及CAS值设置过低等都可引起电脑自动关机,可用测试内存,并将BIOS中对内存参数进行相应调整。
6、检查主板,主板老化、电容失效或爆浆、主板电源插针、主板与机箱背板发生短路等均可引起自动关机,可将主板从机箱取出检查或测试,接着检查CPU的风扇转动及CPU的温度是否正常,接着检查CPU风扇散热片的底部硅胶是否变干,如果变干,将CPU风扇上的硅胶清理干净,然后重新涂上好的硅胶即可。
如果风扇不正常,更换CPU风扇。
7、清洁法:是通过对电脑主机中部件的灰尘进行清洁来排除故障的方法。灰尘是也可造成电脑自动关机故障的因素之一,灰尘可以造成部件老化、引脚氧化、接触不良及短路等故障。对于灰尘造成的这些故障,一般使用清洁法比较有效。
8、供电系统不稳定,也可造成自动关机故障的发生,可以考虑配置一台带稳压功能的UPS后备电源。
如果是软件或系统引起的,修复系统试试:
建议你下载恶意软件和木马强杀工具windows清理助手查杀恶意软件和木马:
下载网址:
下载安装后,首先升级到最新版本,然后退出正常模式并重启按F8进入到安全模式。
打开软件,点击“系统扫描”,对扫描结果全选,然后点击“执行清理”按钮,如果软件提示你是否“备份”,选择“是”(备份是为了防止发生清理错误,如果清理后系统没有发生异常,就删除备份),按提示进行操作即可。
1、开机按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复。
2、如果故障依旧,请你用系统自带的系统还原,还原到你没有出现这次故障的时候修复(如果正常模式恢复失败,请开机按F8进入到安全模式中使用系统还原)。
3、如果故障依旧,使用系统盘修复,打开命令提示符输入SFC /SCANNOW 回车(SFC和/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。
4、如果故障依旧,在BIOS中设置光驱为第一启动设备插入系统安装盘按R键选择“修复安装”即可。
5、如果故障依旧,建议重装操作系统。
。
全部
2018-01-18 15:13:02
现在,Groove音乐Windows 10 UWP预览已经迎来了更新,此次更新带来了不少变化,其中最明显的就是添加了我们期待已久的均衡器功能。接下来,系统城小编就带大家看看具体更新...
2016-05-04 14:40:06
Win7系统怎么设置均衡器?什么是均衡器?均衡器是一种可以分别调节各种频率成分电信号放大量的电子设备,通过对各种不同频率的电信号的调节来补偿扬声器和声场的缺陷,补偿和修饰各种声源及...
2017-12-21 17:56:52
windowsxp系统下百度影音声音均衡器如何设置?一位用户反馈自己想要利用百度影音声音均衡器设置出符合应用环境的声音效果,可是不懂得怎样操作,感觉非常烦恼。今天,系统城小编就给大...
2016-01-25 15:38:56
最近有位朋友告诉小编,新买了一个蓝牙耳机,想用它连接电脑来听音乐,但是发现蓝牙耳机接出来的音效却不好,没有像有线头戴式耳机那样的音质。如果不是买到了比较劣质的产品,那么应该是由于选...
2016-08-26 10:15:16
在Win7操作系统有用户反应,在听音乐的时候QQ好友发来消息,响了两声,音乐的音量就变小了,影响我们听歌,该怎么办呢?出现这样的情况,我们可以设置音频。下面更随小编脚步一起来看看...
2016-03-31 14:55:48
很多用户喜欢在win7系统电脑插入耳机听音乐或观看电影,这样播出的声音音效比较好。但是最近有位用户说win7系统插入耳机听音乐有回声,听着低音特别重,不清晰,怎么办呢?这时候我们需...
2016-02-02 14:29:07
有用户反馈Win7系统使用酷狗听音乐没有声音,怎么回事呢?检查系统声音一切都是正常的,可能是酷狗软件的设置问题或是系统设置出现问题了,Win7系统使用酷狗音乐听音乐没有声音如何解...
2016-11-01 14:43:24
大家在Win7系统中播放电影有双语电影,有两种播放语言,我们只要听其中一种语言就好了,那么套打开音量平衡器进行设置左右声道,许多电脑小白不知道Win7音量平衡器怎么打开?更不知道W...
2015-06-17 10:34:32
最近有用户反馈电脑在听音乐的时候经常出现声音变小的情况,根本就没有对这个声音进行调节,怎么回事呢?电脑会出现声音自动变小的情况,都是因为系统自带的通信检测到活动时会智能调控,从而导...
2016-01-08 17:22:14
win7/win8/win10系统听音乐或播放视频时声音出现卡顿,怎么回事?而且连系统自带的音乐播放器,如酷狗、酷我等都会出现,尤其当音乐出现低音时容易卡顿,卡顿大都在1秒钟以内。...
2017-08-10 11:50:57
相信没有人是不喜欢音乐的,音乐是没有国界的。歌曲一般由人声和伴奏两部分组成,可最近有位win7用户的电脑上在播放音乐的时候发现只有伴奏却没有人声,并不是因为音乐本来就没有人声,确实...
2016-05-05 18:20:36
win7系统下QQ有这么个功能,当我们使用QQ音乐在听歌的时候,我们的QQ好友就能看到自己在听什么歌了,QQ会显示你的状态和歌名的,有些用户觉得隐私被暴露。那么 有什么办法能够不让...
2016-08-04 12:50:36
安装win7旗舰版系统后,发现一个小问题,就是耳机插入win7系统电脑听音乐竟然没有声音,也不知道怎么回事?把耳机插入到其他电脑中都可以正常使用,排除耳机故障问题,那么该如何解决...
2017-12-27 10:59:39
百度音乐随心听是百度mp3推出的一个在线音乐收听页面,能够给我们带来很棒的听觉体验。不过,一些新手们对百度音乐随心听还不大了解。今天,系统城小编就要在这教教大家如何使用百度音乐随身...
2016-02-23 10:51:03
win10系统内置音乐播放器,所以不需要下载第三方音乐播放器。win10用户发现内置音乐器播无法播放音乐,怎么回事呢?重新浏览器和重装win10系统也没办法解决这个问题,win1...
2015-04-13 11:31:11
相信大家在操作win7系统过程中都遇到一些小问题,最近有用户发现看电影或者是听音乐的时候,QQ或者是其他提示消息音量会特别的刺耳,而音乐的声音就会变得很小。怎么回事呢?难道是win...
2016-10-11 11:41:01
win7扬声器声音小怎么调节变大呢?win7系统语音聊天或者看视频时发现声音很小,大家可通过调节扬声器声音来解决问题。那么win7扬声器声音小怎么调节?调节扬声器声音的方法很简单,...
2015-06-14 18:13:59
酷狗音乐深受广大win7系统用户喜爱,酷狗音乐播放器是一款音乐播放器软件,很多用户在日常使用电脑时会通过该软件来播放音乐。不过有win7 64位系统用户反映在使用该播放器播放音乐时...
2016-10-11 16:44:20
现在小伙伴们经常用电脑听歌放松心情,win7系统电脑播放音乐发生一件奇怪的事情。win7播放音乐扬声器没声音但耳机有声音,怎么回事呢?检查耳机和扬声器都是正常的,排除硬件问题,可能...
2016-09-28 09:48:13
大家用win8系统电脑听音乐时,想要有环绕立体声的效果,感觉亲临现场。win8系统有很多的音效模式供我们选择,环绕立体声效果是最好的,听音乐更有感觉。但是很多用户不知道Win8系...
2017-11-10 17:00:27
通常我们使用音乐播放器在播放歌曲之后都会产生试听缓存的,不同于下载的歌曲,试听的歌曲的音质通常没有下载的好,不过可以在播放器中设置。提取缓存的歌曲的话就不需要再下载一次了,可是有很...
2015-09-10 11:29:38
通过均衡调节,它能使语言声、各种演唱声(男声、女声、童声、合唱等)都有不同的意境。
比如:
①调演讲人的声音,语言声的基音频率范围是100HZ-1KHZ,泛音成分可达8KHZ,泛音成分所占比例小(约占5%),但其反映了每个人不同的发音音色,为了使演讲声音清澈、明亮、减低声音混浊干,还要在调音台上的均衡器进行调解,对中高频成分提升3-dB的同时,对4-8KHZ成分提升4dB左右,减弱8KHz以上的成分,以免出现齿音。
②对节目主持人声音的调法。节目主持人多为女性,而且声音一般都比较明亮,因此,发声的基因频率范围为200Hz-1.1KHz,为了减少可能出现的齿音,同时保持适度的音量,使后排观众也能听清声音,需要在调音台上进行均衡补偿,对2-4KHz成分提升约为3dB-6dB,降低6KHz以上成分,这样使音透亮、清晰、亲切感人。
③对演唱声调整,人们唱歌时运用肌肉拉动声带,发出诸多泛音成分,频率高达8-10KHz,通过鼻腔的作用,对某些频率(包括基音和泛音成分)产生共鸣,使声音更明亮,他们的基音频率范围是:童声高音频率范围为260-880Hz,低音频率范围为196-700Hz,女声高音频率范围为220-1.1KHz,低音频率范围为200-700KHz,男声高音频率范围为160-523KHz低音频率范围为80-358Hz。
另外为了使歌声令观众喜爱、扣人心弦、感人肺腑,在调音台上的参量均衡器,还要进行音质补偿,将中高频提衰旋钮放在6dB上,转动中心频率调节旋钮,从低端行到高端扫频,再从高端行到低端扫频,一般扫两遍,便能发现某一频点声音较亮,固定在频点上,提衰旋钮略做增减调节,明亮度就能得到补偿,每个演唱者声音频率不同,补偿频点亦不一样。运用类似方法,对歌声的力度进行补偿,使歌声有朝气,充满活力又不生硬。对于歌声的清晰度补偿可使用高频衰旋钮,清晰度不够,从零往右提升2-3dB左右。唱声模糊,往右提升4-6dB,若齿音、气音较重,有刺耳感,则从零往左衰减2-3dB左右。在低音区用低频是衰旋钮,男声低音较重,尤其在100Hz附近应衰减4-6dB,女声欠缺,应提升4-6dB,以保证声音浑厚有不混浊,丰满而不单薄,使唱者高兴,听者满意。因此,均衡器是用来补偿音量、音调和音品,是人耳听觉是否美妙的设备。
如题,vue在构建项目的时候选择了airbnb规则,同时项目构建后被windows的unix bash工具pull并且push过,这之后在windows上进行开发,就开始一直报
Expected linebreaks to be 'CRLF' but found 'LF'
这样的错误,后经查是一种强制统一方式,并且解决方法是
linebreak-style: ["error", "windows"]
强制使用windows方式,我将之添加到了项目根目录下的 .eslintrc.js 文件中的rule字段下:
// add your custom rules here
'rules': {
// don't require .vue extension when importing
'import/extensions': ['error', 'always', {
'js': 'never',
'vue': 'never'
}],
// allow optionalDependencies
'import/no-extraneous-dependencies': ['error', {
'optionalDependencies': ['test/unit/index.js']
}],
// try to fix the line break problem
'linebreak-style': ["error", "windows"],
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ?
与学习相关的技巧 本章介绍的方法,可以高效地进行神经网络(深度学习)的学习,提高识别精度
参数的更新 神经网络的学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题,解决这个问题的过程称为最优化。
在前几章中。为了找到最优参数,我们将参数的梯度作为线索,使用参数的梯度,沿梯度方向更新参数,并重复这个步骤若干次,从而靠近最优参数。这个过程称为SGD 随机梯度下降法。
代码
SGD class SGD: def __init__(self, lr = 0.01): self.lr = lr def update(self, params, grads): for key in params.keys(): params[key] -= self.lr * grads[key] 变量名optimizer表示“进行最优化的人”的意思。
SGD的缺点 如果函数的形状非均向,比如呈延伸状,搜索的路径就会非常低效。 SGD低效的根本原因是,梯度的方向并没有指向最小值的方向。
Momentum Momentum是“动量”的意思。
v ← α v − η ∂ L ∂ W v \leftarrow \alpha v - \eta \frac{\partial L}{\partial W} v←αv−η∂W∂L
W ← W + v W \leftarrow W + v W←W+v
W表示要更新的权重参数, ∂ L ∂ W \frac{\partial L}{\partial W} ∂W∂L表示损失函数关于W的梯度, η \eta η表示学习率。这里新出现了一个变量v,对应物理上的速度。表示了物体在梯度方向上受力,在这个力的作用下,物体的速度增加这一物理法则。
IDEA将分支代码合并到主分支 1、在主分支msater中项目右键git->Respository->pull
主分支上会自动合并分支的代码:
2、出现冲突文件
冲突提示:等号上边时当前分支代码,下边时合并分支的代码.
另一中方法是点击冲突文件右键->Git->Resove Conflicts
合并后的代码:
https://blog.csdn.net/su1573/article/details/91990437
sourcetree将分支代码合并到主分支 1、要将分支合并到master,如下有一个master分支,一个自定义分支(如果分支上没有显示要合的分支在远程/origin里先检出到分支)
2、先定为到自定义分支,提交所有修改。
3、切换到master分支,右键自定义分支,选择合并到当前分支,如下
4、单独合并某次提交记录
将当前分支切换到所有分支,如下图红框内
选择待合并的提交记录,右键 – 》遴选
在确认遴选的弹窗中点击是。
执行完后。切换到当前分支,可以看到master分支的本地仓库多了一个” 新增test2.txt文件 add func1” 的提交历史记录。
推送该次合并到master分支的远程仓库。这样就完成了,合并某次提交到另一分支的操作。
5、合并过程中出现冲突,解决完后将文档提交并推送。
单行查看解决 查看冲突,可选择'暂存区块'或者选中某行后‘暂存行块’,或者‘放弃区块’或者选中某行后‘暂存行块’
整个文件解决 通过菜单栏->动作->解决冲突,一般在冲突较多时候采取该方法
或者在已暂存文件中右键,选择解决冲突
使用他人版本解决冲突,会自动将当前分支对应文档更改成他人文档内容。使用自己版本解决冲突,则对当前分支对应文档不做任何改变。
此时该文档从未暂存文件中去除,在已暂存文件中的提示由感叹号变成三个点,然后选项置灰;
也可以自行修改文档,并在修改完成后,将该文档标记为已解决
外部差异对比合并 在已暂存文件->右键->解决冲突->打开外部合并工具,一般使用BeyondCompare
解决好冲突保存更改,退出即可
http://www.downza.cn/xy/48549.html
https://blog.csdn.net/weixin_41803874/article/details/88415439
https://www.baidu.com/link?url=A1RV5XHzdV5t7Zo8WqFIuZCvmW2fDLmxdwRoSEPgws6mNUBfb6aG5TJCml36TBZ77BcqCabIU4BqSrYuNVBh1a&wd=&eqid=b74bea3900004bb6000000055fe99e7e
客户在使用光模块时或多或少会遇到各种各样的故障问题,像光模块型号选用是否正确、使用的跳线是否正确等一些常见问题,客户是有判断能力且有明确的解决方法,但对于某些使用时出现的故障问题,如传输异常等,很多客户不知道该如何排查并解决。本文将重点教您如何排查并解决传输、信息读取以及硬件三个方面的故障。
传输类故障排查及解决方法 该类故障问题主要包含端口不UP、端口状态为UP但不接收或发送报文、端口频繁up或down以及CRC错误。具体排查方式及解决方案如下:
端口不UP 以10G SFP+/XFP光模块为例,当光模块光口与其他设备互连不能UP时,可从以下五个方面进行排查:
第一步,检查两端端口的速率和双工模式是否匹配——执行“show interface brief”命令进行查看,若是不匹配,通过speed命令和duplex命令配置端口的速率和双工模式。
第二步,检查设备端口与光模块的速率、双工模式是否匹配——执行“show interface brief”命令进行查看,若是不匹配,通过speed命令和duplex命令配置端口的速率和双工模式。
第三步,检查两端端口是否正常——通过环回测试两端端口是否能UP。在单板上的10G SFP+端口上使用10G SFP+直连线缆(适用于短距离连接,或用SFP+光模块和光纤跳线)进行互连,10G XFP端口上使用XFP光模块和光纤来进行测试,查看该端口是否能UP。如果能UP,则说明对端端口异常;如果不能UP,则说明本端端口异常。可通过更换本端、对端端口来检查故障是否解决。
第四步,检查光模块是否正常——主要是检查DDM、光功率、波长、距离等参数是否正常,若是不正常,则通过更换与光接口匹配的光模块。
DDM信息——通过“show interfaces transceiver detail”命令检查参数是否正常,若出现告警,则表示该光模块有故障或该光模块与光接口类型不匹配。光功率——使用光功率计测试端口收发光功率是否在正常范围内及稳定。波长/距离——通过“show transceiver interface”命令检查两端光模块波长、距离等是否一致。 第五步,检查光纤是否正常——如,单模SFP+光模块搭配单模光纤,多模SFP+光模块搭配多模光纤,若是不匹配立即更换与之相匹配的光纤即可。
若是通过上述检查仍未找到故障原因,建议您直接联系供应商的技术人员寻求技术帮助。
端口状态为UP,但不接收或发送报文 当端口状态为up,却不能接收或发送报文时,从以下三个方面进行故障排查:
第一步,查看端口报文统计结果。检查两端端口状态是否一直UP,并且检测两端的报文统计是否增长。
第二步,检查端口配置是否影响报文的接收。首先检查是否做过网络配置,核查配置是否正确,必要时全部删掉再测试看问题是否解决;其次检查端口MTU值是否为1500,若是大于1500,则需修改配置。
第三步,检查端口及链路截止是否正常。更换连接端口,将其连接到其他端口查看是否存在相同现象,若是仍然故障,则替换光模块。
若是经过上述检查故障仍未排查清楚,则建议您直接联系供应商的技术人员。
端口频繁up或down 当光模块的光端口频繁up或down时,先确认光模块是否异常,可通过查看光模块alarm信息来排查两端光模块及连接光纤问题;对于支持数字诊断功能的光模块可通过查看DDM信息确认光模块的光功率是否处于临界值,若是发射光功率处于临界值,则更换光纤、光模块作为交叉验证,若是接收光功率处于临界值,则排查对端光模块及连接光纤。当电口光模块出现该情况,尝试设置速率双工。
若是排查完链路、对端设备以及中间设备后,故障仍然存在,则建议您直接联系供应商的技术人员。
CRC错误 第一步,先查看报文统计信息判断故障问题。通过“show interface”命令,查看端口出入方向的错包统计确定体积是哪项增长,从而判断故障问题。
端口入方向出现CEC、frame、throttles错包且计数持续增加——使用仪器测试链路是否故障,若是故障则更换网线或光纤;或者更换网线或光纤光模块与其他端口连接,若是端口更换后错包又再次出现,则视为单板端口故障,若是更换到正常端口仍出现错包,则对端设备、中间传输链路故障的可能性较大,排查即可。检查端口入方向是否出现overrun错包且计数持续增加——通过多次执行“show interface”命令查询input errors是否有增加,若有则代表着overruns增加,单板内部可能拥塞或堵死。检查端口入方向是否出现giants错包且计数持续增加——检查两端Jumbo配置是否一直,如端口默认的最大报文长度是否一致,允许最大报文长度是否一致等。 第二步,检查光模块的光功率是否正常。通过“show transceiver interfaces detail”命令查看光口所插光模块的数字诊断参数的当前测量值。若是光模块的光功率不正常,则需更换光模块。
第三步,检查端口配置是否正常。通过“show interface brief”命令查看端口配置是否有异常,其中两端的协商状态双工模式和端口速率是否一致,若是存在半双工模式或速率不一致,则通过duplex命令和speed命令分别配置双工模式和端口速率。
第四步,检查端口及链路介质是否正常。更换连接端口查看是否存在相同现象,若是存在相同现象,则检查连接链路中中间设备以及传输介质是否正常,若是正常,则替换光模块。
第五步,检查端口是否收到大量流控帧。通过“show interface”命令,查看端口pauses帧计数,若是不断增长,则说明该端口发出或接收到了大量的流控帧。另外,检查端口出入流量是否过大以及对端设备的流量处理能力。
通过上述检查完成后若是配置、对端以及链路都没有问题,那么请直接联系供应商的技术支持人员。
信息读取异常类故障排查及解决方法 显示不支持 当查看系统日志时发现存在上报非合法光模块信息,如unqualified、unapproved、unknown等,则先检查编码信息,若是编码出现差错,则重新编码,若是编码正确,可联系供应商的技术支持人员寻求帮助。
不支持DDM 当系统提示光模块不支持数字诊断时,通过“show transceiver interfaces detail”命令查询对数字诊断功能的支持与否,或直接联系供应商咨询该光模块是否支持数字诊断功能。若该模块支持数字诊断功能,却没办法解决故障,直接联系供应商的技术支持人员寻求帮助。
DDM异常 当安装光模块的接口无法正常工作时,可根据以下三步骤进行故障排查:
第一步,检查光模块Alarm告警信息。若是告警信息中存在接收有问题,一般是对端端口、光纤或中转设备所导致的;若是存在发送问题或者电流、电压异常,则需排查本端端口。
第二步,检查光模块的接收、发送光功率是否正常。可通过“show interfaces transceiver detail”命令,查询光模块的接收/发送光功率是否正常,以及其他参数是否在阈值范围内;或者通过实时查询,检查光功率、温度、电压、偏直电流等参数是否正常。
第三步,检查是光模块本身故障还是相邻设备或中间连接链路故障。可更换端口、光模块等来进行交叉验证。
经过上述步骤,仍然无法确认,可联系供应商的技术支持人员需求技术帮助。
硬件类故障排查及解决方法 硬件类故障排查主要是从光模块自身出发。首先,需确保购买的光模块品质经过认证,若是没有认证,质量无法得到保障,建议不再使用该光模块;其次,检查光模块的金手指是否有损伤,若是有损伤则需替换光模块;最后,检查接口是否受到污染或损伤,若是接口有污染清洁即可,若是有损伤建议替换。
Spring钩子方法和钩子接口的使用详解
zhrowable
1
2017.05.07 02
文章目录 前言 SpringFramework其实具有很高的扩展性,只是很少人喜欢挖掘那些扩展点,而且官方的Refrence也很少提到那些Hook类或Hook接口,至于是不是Spring官方有意为之就不得而知。本文浅析一下笔者目前看到的Spring的一些对外开放的扩展点、Hook接口或者Hook类,如果有什么错误,希望多多交流指正,一切以Spring的源码为准,文章编写使用的Spring版本为4.3.8.Release,对应SpringBoot的版本为1.5.3.RELEASE 1、Aware接口族
Spring中提供了各种Aware接口,方便从上下文中获取当前的运行环境,比较常见的几个子接口有:
BeanFactoryAware,BeanNameAware,ApplicationContextAware,EnvironmentAware,BeanClassLoaderAware等,这些Aware的作用都可以从命名得知,并且其使用也是十分简单。
例如我们经常看到SpringContext工具类:
@Component
public final class SpringContextAssisor implements ApplicationContextAware {
private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) { SpringContextAssisor.applicationContext = applicationContext; } public static Object getBeanDefinition(String name) { return applicationContext.getBean(name); } public static <T> T getBeanDefinition(String name, Class<T> clazz) { return applicationContext.getBean(name, clazz); } }
实现ApplicationContextAware接口可以获取ApplicationContext
又例如想获取到当前的一个Spring Bean的BeanFactory:
@Component
public class OneBean implements BeanFactoryAware {
private BeanFactory beanFactory;
1. Charles教程1:安装及证书的导入
2. Charles教程2:如何拦截、修改、发送请求
3. 1 Charles教程3:如何修改响应内容
3.2 利用charles修改返回体
4. charles教程4:如何跨域
5.1 抓包微信小程序
5.2 抓包微信小程序
6.1 微信开发者工具抓包
6.2 微信开发者工具设置代理
设置为系统代理
项目开发时登陆测试环境验证问题,使用新的tab页面打开该地址,登陆时页面卡死白屏,卡死前打开F12查看控制台中的ajax请求,显示部分请求始终处于pending状态,最终导致页面白屏,一段时间后弹窗提示“页面无响应”,使用接口测试工具确认所有pengding的接口均正常。其他同事相同版本浏览器可以登陆。通过网络查询该问题,无相关结果,大部分说发是后台有断点、请求超时等待之类的。而我可以确认接口本身没有问题,后来决定重装浏览器,准备先看下chrome中的设置页面,有个重置功能,点击,确定,再试登陆,好了。原因未知,可能是由于不知什么情况下修改了chrome的某些设置导致的,如果遇到了建议试下重置设置,理论上与重装软件效果一致,若重装以后仍旧无法解决,建议考虑重装系统,一劳永逸!
如果我们想在发那科机器人编程中对一定的内容进行多次重复执行,可以用什么指令来满足?
一般来讲,介于FOR和ENDFOR指令中间的程序内容可以实现多次重复执行,FOR和ENDFOR是一组成对出现的指令,缺一不可,在专业上称之为循环指令。
图1-1 FOR/ENDFOR指令菜单
? FOR 代表循环指令的开始;通过 FOR指定的值来确定循环的次数。
? ENDFOR 代表循环指令的结束。
FOR 指令的格式如下:
图1-2 FOR指令(选择 TO时)
计数器使用的是暂存器(R[i]),用于记录循环的次数。
初始值可以使用常数(Constant)、暂存器(R[i])、自变量(AR[i]),常数可以给定的范围:-32767 到 32766 的整数。
目标值可以使用常数(Constant)、暂存器(R[i])、自变量(AR[i]),常数可以给定的范围:-32767 到 32766 的整数。
当指定 TO 时,初始值 < 目标值,其意思是每循环一次使得计数器的值增加 1,直到条件不再满足的时候才结束该循环指令,也就时说初始值与目标值决定了循环的次数;
Eg:初始值为1,目标值为3,则循环执行三次该内容。
执行 FOR 指令时,在计数器的值中代入的是初始值。
图1-3 FOR指令(选择 DOWNTO时)
计数器使用的是暂存器(R[i]),用于记录循环的次数。
初始值可以使用常数(Constant)、暂存器(R[i])、自变量(AR[i])。常数可以给定的范围:-32767 到 32766 的整数。
目标值可以使用常数(Constant)、暂存器(R[i])、自变量(AR[i])。常数可以给定的范围:-32767 到 32766 的整数。
当指定 DOWNTO 时,初始值 > 目标值,其意思是每循环一次使得计数器的值减1,直到条件不再满足的时候才结束该循环指令,也就时说初始值与目标值决定了循环的次数;
Eg:初始值为3,目标值为1,则循环执行三次该内容。
执行 FOR 指令时,在计数器的值中代入的是初始值。
ENDFOR指令的格式如下:
图1-4 ENDFOR 指令
执行 ENDFOR 指令时,只要满足如下条件,就可以反复执行 FOR与ENDFOR 之间的内容。
?指定 TO 时,初始值 < 目标值。
import axios from 'axios' import { Notification, MessageBox, Message } from 'element-ui' import store from '@/store' import { getToken } from '@/utils/auth' import errorCode from '@/utils/errorCode' axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' // 创建axios实例 const service = axios.create({ // axios中请求配置有baseURL选项,表示请求URL公共部分 baseURL: process.env.VUE_APP_BASE_API, // 超时 timeout: 10000 }) // request拦截器 service.interceptors.request.use(config => { // 是否需要设置 token const isToken = (config.headers || {}).isToken === false if (getToken() && !isToken) { config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 } return config }, error => { console.
本文比较简短,仅用于记录,装完之后弃坑了,转向了ubuntu server。
下载 百度搜索centos,点击第一个,找个下载,3b、3b+ 选armhfp
下载地址-清华镜像
刻录 下载的文件是xxxx.raw.xz格式的,先解压一次,再用Etcher刻录
配置wifi 执行以下命令,按提示操作
nmtui 扩展根分区 centos安装后默认根分区只有2G左右,执行以下命令扩展到tf卡该有的容量。可参考root用户根木录下的readme。
export LANG=en_US.UTF-8 rootfs-expand 更新源 默认华为镜像,跳过
安装docker yum install docker-io 其它软件 参考 树莓派折腾记 - 基础配置
在项目中遇到这样一个问题,困扰了我几天 SQL语句如下:
select * from t_instance where instance_code like '%姓名%' or instance_name '%姓名%' and classfired='cloumn'
我想要的结果的条件是:1. instance_code like '%姓名%' or instance_name '%姓名%' 2. classfired='cloumn'
但是结果并非如此,出现了 classfired !='cloumn'的结果,但是却匹配了 instance_name '%姓名%' and classfired='cloumn'
为什么呢
原来这个SQL的执行是这样的:
select * from t_instance where instance_code like '%姓名%' or instance_name '%姓名%' and classfired='cloumn'
修改为:
select * from t_instance where classfired='cloumn' and instance_code like '%姓名%' or instance_name '%姓名%' 依然不正确
呵呵,发现问题了:
where 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or。原因就是:and的执行优先级最高!
关系型运算符优先级高到低为:not and or
问题的解决办法是:
通常使用‘()’可以改变运算符的优先级 来改变执行顺序!!!!
CS CS简介CS功能安装CSCS的基本使用深入标题介绍 Beacon Commands基础操作演示 CS简介 CS 是Cobalt Strike的简称,是一款渗透测试神器,常被业界人称为CS神器。Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。
CobaltStrike集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。
CS功能 Cobalt Strike可以使用 AggressorScripts脚本来加强自身,能够扩展菜单栏,Beacon命令行,提权脚本等。
Cobalt Strike通信配置文件是 Malleable C2,你可以修改CS的通讯特征,Beacon payload的一些行为。
Cobalt Strike可以引用其他的通讯框架ExternalC2,ExternalC2是由Cobalt Strike提出的一套规范/框架,它允许黑客根据需要对框架提供的默认HTTP(S)/DNS/SMB C2 通信通道进行扩展。
安装CS 下载并解压文件
目录如下
agscript 拓展应用的脚本
c2lint 用于检查profile的错误异常 teamserver 服务端程序 cobaltstrike,cobaltstrike.jar客户端程序(java跨平台) logs 目录记录与目标主机的相关信息 update,update.jar用于更新CS third-party 第三方工具 最核心的就是teamserver和cobaltstrike.jar,分别是服务端和客户端 启动服务端,我们首先给teamserver权限 chmod 777 teamserver 启动,第一个参数是地址,第二个参数是密码,地址是我们本机的地址,密码任意设置,这里为password
在服务端输入命令 ./teamserver 服务端ip地址 密码
接下来在客户端打开CS图形化界面
打开终端,输入
java -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar命令启动。
界面如图
这里由于我们的服务端和客户端在一台机器上,我们就使用默认的host 127.0.0.1即可,port默认为50050,在启动服务端的时候通过回显也可以得知。如果更改了teamserver文件里的server_port值那么在此处就需要改成对应的。user可以随意设置,password为我们前面启动teamserver时的密码password
都设置好后,点击connect
启动后的界面如图
CS的基本使用 作为cobalt strike的第一课,直接简单地进行实战,先感受下cobalt strike最基础的使用流程及其魅力。
首先创建一个listener
左上角的cobaltstrike->listeners
机器学习和深度学习中,梯度是一个很重要的概念。在大部分机器学习优化问题中都可以通过梯度下降法处理。要介绍梯度就必须了解导数(derivative),偏导数(partial derivative)和方向导数(directional derivative)。
这些概念在高等数学中都有介绍,也可以参考百度和维基百科,这里我们就只做简单回忆:
导数 导数反映函数在某点处沿x轴正方向的变化率,可以理解为,如果某点导数大于0,则该点沿x轴正方向递增,如果某点小于0,则递减。
偏导数 导数和偏导数性质一致,但偏导数指多元函数中函数在某点沿坐标轴(x1,x2,xn)正方向变化率。也可以理解为,导数是自变量只有一个时的函数沿正方向变化率,而偏导数则是函数自变量大于一个时,每个自变量的变化率。
方向导数 导数和偏导数的定义中,都是沿坐标轴正方向讨论函数变化率,而方向导数则是:函数上某点沿某一方向上的导数值(方向可选择)。
梯度 那么引出梯度的定义:
函数在某点梯度是一个向量,它的方向与取得最大方向导数的方向一致,而它的模则为方向导数的最大值。可以理解为梯度是函数在某点最大的方向导数,函数沿梯度方向有最大的变化率。
梯度的求法也很简单,对于函数只要在已知点求出X方向偏导数和Y方向偏导数,再取两方向偏导数和就可以。
梯度算子 图像的梯度计算可以通过使用不同的梯度算子实现,具体实现的过程是通过用梯度算子进行卷积运算的到,不了解卷积的同学可以自行百度。。。
这里介绍几种常用的梯度算子:
Roberts交叉梯度算子 Roberts交叉梯度算子(Roberts Cross Edge Detector)很好理解,就是对目标进行一个2*2的卷积核的卷积计算。卷积核有两个,分别用来计算垂直方向和水平方向,卷积核如下所示:
梯度幅值可以表示为:
为了方便计算,也可以这样计算:
梯度角度则可以表示为:
Sobel算子 Sobel梯度算子(Sobel Edge Detector)和Roberts算子类似,只不过引用了两个3*3的卷积核,分别用来计算垂直方向和水平方向,卷积核如下所示:
梯度幅值和梯度角度也可以通过上面介绍的式子求得
Sobel算子计算速度较慢于Roberts算子,但3*3的卷积核在更大程度上平滑了输入图像,使得图像对噪声的敏感性降低。
Prewitt算子 Prewitt算子与Sobel算子类似,卷积核如下所示:
Laplace算子 以上介绍的Roberts算子,Sobel算子和Prewitt算子都是一阶算子,而Laplace属于二阶算子。Laplace算子对噪声敏感,所以一般在降噪后的图像上使用。卷积核如下所示:
由于一阶算子的原理是计算目标点的一阶导数,由导数定义可知,x点导数可通过以下公式计算:
那么二阶算子则是计算目标点的二阶导数,可通过以下公式计算:
这也等同于(上式变量减1):
在图像中就可以表示为:
这就是上图第一个Laplace算子的由来。为了让该算子在45度方向上也有方向性,对该算子进行扩展得到上图第二个Laplace算子。
上述算子也可用于图像的边缘检测,边缘检测和检测算子及优缺点将在接下来的文章中介绍。
参考:
https://blog.csdn.net/walilk/article/details/50978864?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160885544016780296812509%252522%25252C%252522scm%252522%25253A%25252220140713.130102334..%252522%25257D&request_id=160885544016780296812509&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-6-50978864.first_rank_v2_pc_rank_v29&utm_term=%E6%A2%AF%E5%BA%A6
https://blog.csdn.net/qq_18815817/article/details/78625845?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160902977216780266269292%252522%25252C%252522scm%252522%25253A%25252220140713.130102334..%252522%25257D&request_id=160902977216780266269292&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-78625845.first_rank_v2_pc_rank_v29&utm_term=%E6%A2%AF%E5%BA%A6%E7%AE%97%E5%AD%90
https://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm
目录
1. 场景再现 (进程停止,无法从守护程序中获取信息)
2. 解决方案(打开AS、初始化项目、下载依赖、重新打包)
1. 场景再现 (进程停止,无法从守护程序中获取信息) Starting a Gradle Daemon, 1 incompatible and 5 stopped Daemons could not be reused, use --status for details.翻译:启动 Gradle守护程序时,1个不兼容的守护程序 和 5个已停止的守护程序,无法被重用,使用 --status 了解详细信息 Could not receive a message from the daemon翻译:无法从守护程序接收消息 2. 解决方案(打开AS、初始化项目、下载依赖、重新打包) 原因分析:用 Android Studio 打开并初始化项目,发现正在自动下载 gradle依赖说明电脑本身缺少一种 gradle 依赖缓存 解决此种问题的思路:打开 Android Studio,初始化项目,下载 gradle依赖,重新打包
前几日,华为诺亚,北京大学,悉尼大学共同发表了论文《A Survey on Visual Transformer》,本文针对其重点内容进行翻译概括如下。
导言:
Transformer是一种主要基于自注意力机制的深度神经网络,最初是在自然语言处理领域中应用的。受到Transformer强大的表示能力的启发,研究人员提议将Transformer扩展到计算机视觉任务。与其他网络类型(例如卷积网络和循环网络)相比,基于Transformer的模型在各种视觉基准上显示出竞争性的甚至更好的性能。
在本文中,我们通过将这些Visual Transformer模型按不同的任务分类,并分析了这些方法的优缺点,提供了文献综述。主要类别包括基本图像分类,high-level vision,low-level vision和视频处理。由于self-attention是Transformer的基本组成部分,因此也简要回顾了计算机视觉中的自注意力。包括将Transformer推向实际应用的有效Transformer方法。最后,我们讨论了Visual Transformer的进一步研究方向。
1. 总体概述 卷积神经网络(CNN)引入了卷积层和池化层以处理图像等位移不变性的数据。递归神经网络(RNN)利用循环单元来处理顺序数据或时间序列数据。Transformer是一种新提出的神经网络,主要利用自我注意机制提取内在特征。在这些网络中,Transformer是最近发明的神经网络(2017年),对于广泛的人工智能应用具有巨大的潜力。
Transformer最初应用于自然语言处理(NLP)任务,并带来了显着的改进。例如,Vaswani等人首先提出了一种仅基于注意力机制来实现机器翻译和英语选区解析任务的Transformer。Devlin等人引入了一种称为BERT的新语言表示模型,该模型通过共同限制左右上下文来预训练未标记文本的翻译器。BERT在当时的11个NLP任务上获得了SOTA结果。Brown等人在45TB压缩明文数据上预训练了基于巨型Transformer的GPT-3模型,该模型具有1,750亿个参数,并且无需微调即可在不同类型的下游自然语言任务上实现出色的性能。这些基于Transformer的模型显示了强大的表示能力,并在NLP领域取得了突破。
受NLP中Transformer功能的启发,最近的研究人员将Transformer扩展到计算机视觉(CV)任务。CNN曾经是视觉应用中的基本组件,但是Transformer显示出了其作为CNN替代品的能力。Chen等人训练一个sequence Transformer去自动回归预测像素并在图像分类任务上与CNN取得竞争性结果。ViT是Dosovitskiy等人最近提出的Visual Transformer模型。ViT将一个纯粹的transformer直接用于图像块序列,并在多个图像识别基准上获得SOTA性能。除了基本的图像分类,transformer还用于解决更多计算机视觉问题,例如目标检测,语义分割,图像处理和视频理解。由于其出色的性能,提出了越来越多基于transformer的模型来改善各种视觉任务。
为了获得更好的方便研究人员研究不同的主题,我们按其应用场景对transformer模型进行分类,如表1所示。特别是,主要主题包括基本图像分类,high-level vision,low-level vision和视频处理。high-level vision对图像中可以看到的内容进行提取和解析,例如对象检测,分割和车道检测。已经有许多用于解决这些high-level vision任务的transformer模型,例如DETR,deformanble DETR用于物体检测,以及Max-DeepLab用于分割。low-level vision主要涉及从图像(通常通常表示为图像本身)中提取描述子,其典型应用包括超分辨率,图像去噪和风格迁移。在 low-level vision的transformer研究很少,需要进行更多的研究。
由于视频的顺序特性,transformer可以自然地应用于视频。与传统的CNN或RNN相比,Transformer开始在这些任务上显示出具有竞争力的性能。在这里,我们对基于transformer的视觉模型给出了一个综述,以跟上该领域的进展。Visual transformer的开发时间表如图1所示。
2. Transformer结构 详情请看另一篇文章《transformer解读》
3. Visual Transformer 在本节中,我们将对基于transformer的计算机视觉模型进行全面回顾,包括图像分类,high-level vision,low-level vision和视频处理中的应用。我们还简要总结了自注意力机制和模型压缩方法在高效transformer中的应用。
3.1 Image Classification
受到transformer在自然语言处理方面取得巨大成功的启发,一些研究人员试图检验相似的模型是否可以学习图像的有用表示。 作为一种比文本更高维度,更嘈杂,更冗余的形式,人们认为图像很难生成模型。 iGPT 和ViT是仅使用transformer进行图像分类的两个模型。
3.1.1 iGPT
自从最初的生成式图像预训练方法浪潮问世以来,已经有很长时间了。Chen等人重新检查这类方法,并结合自我监督方法的最新进展。该方法包括一个预训练阶段,然后是一个fine-tune阶段。在预训练中,应尝试使用自回归和BERT目标。此外,在NLP中应用sequence transformer体系结构来预测像素而不是语言标记。预训练使得训练可以尽早地停止,因此可被视为有利的初始化或正则化。在fine-tune过程中,他们向模型添加了一个小的分类头,该分类头用于优化分类目标并适应所有权重。
给定一个由高维数据x =(x1,...,xn)组成的未标记数据集X。他们通过最小化数据的负对数似然来训练模型:
其中p(x)是图像数据的密度,可以将其建模为:
其中1 <= i <= n采用单位置换 πi = i,也称为栅格顺序。他们还考虑了BERT目标,该目标对子序列M⊂[1,n]进行采样,以使每个索引i独立地具有在M中出现的0.15的概率。M称为BERT掩码,模型为 通过最小化“unMasked”元素x [1,n] \ M上的“Masked”元素x[1,n]\M的负对数似然来训练:
在预训练中,他们选择LAR或Lbert中的一种,并在预训练数据集上最大程度地减少损失。他们使用transformer decoder模块的GPT-2公式表示。特别是,layer norms先于注意力和多层感知器(MLP)操作,并且所有操作都严格按照残差路径进行。 序列元素之间唯一的混合发生在注意力操作中,并且为了确保在训练AR目标时进行适当的调节,他们将标准的上三角mask应用于attention logits的n×n矩阵。当使用BERT目标时,不需要attention logits mask:将内容嵌入应用于输入序列后,它们会将位置清零。
import java.math.BigDecimal;
public class BigDecimaDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 计算结果,未知
* 原因:计算二进制中,表示浮点数不精确造成
* 超级大型的浮点数据,提供高精度的浮点运算,BigDecimal
*/
function();
function1();
}
/*
* BigDecmial实现三则运算
* + - *
*/
public static void function() {
BigDecimal b1 = new BigDecimal("0.00009");
BigDecimal b2 = new BigDecimal("0.045783219");
BigDecimal bigAdd = b1.add(b2);
System.out .println(bigAdd);
BigDecimal bigSub = b1.subtract(b2);
System.out .println(bigSub);
BigDecimal bigMil = b1.multiply(b2);
System.out .println(bigMil);
此学习笔记主要基于CTF WIKI 中的Basic rop部分。附攻防世界cgpwn2的WP 网址为:https://wiki.x10sec.org/pwn/linux/stackoverflow/basic-rop/ -------------------------------------------------------------------- 首先翻译了一下文章的开头,内容为:
打开NX保护后,很难继续直接将代码注入堆栈或堆中。攻击者也提出了相应的绕过保护的方法。目前最主要的是面向返回的程序设计。主要思想是基于堆栈缓冲区溢出使用程序中现有的小片段。)改变某些寄存器或变量的值以控制程序的执行流。所谓gadgets就是以ret结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,以方便控制程序的执行过程。
之所以称之为ROP,是因为核心是使用指令集中的ret指令来改变指令流的执行顺序。ROP攻击通常必须满足以下条件
1.程序有溢出,可以控制返回地址。
2.您可以找到符合条件的小工具以及相应小工具的地址。
3.如果小工具的地址不是每次都固定的,那么我们需要找到一种方法来动态获取相应的地址。
可以从中获取的信息有:
1.使用ROP的前提是有栈溢出
2.ROP链由一系列小片段构成,对于这些具有特定作用的小片段我们可以将它们组装起来构造出payload,最终获取flag
3.寻找的这些小片段必须含有ret指令 。
一.ret2text
第一个例子 ret2text 这是一个简单的栈溢出,没有用到rop的方法,在此不做赘述。
二.ret2shellcode
首先是最基本的检查
可以看到这是一个32位的ELF文件,基本没有保护。
然后我们用IDA看一下反编译后的代码
可以从gets(&s)处进行栈溢出,但是这里面并没有bin/sh的地址。但是我们可以看到这里面有个未在main中定义的变量buf2,所以这应该是一个全局变量。我们直接点进去看这个变量。
可以看到全局变量buf2被储存在了bss字段,地址为0X0804A080.
我们打开gdb进行调试
可以看到bss对应的段是可读可写可执行的,可以从这里写入shellcode。
对于32位的文件shellcode 可以通过代码shellcode = asm(shellcraft.sh()) 来构造,对于64位文件则为 1.context.arch = "amd64" 2.shellcode = asm(shellcraft.amd64.sh())
最终构造的payload如下
拿到flag。
三.ret2syscall
首先是检察保护机制和文件类型
可以看到这是一个32位文件,只打开了NX保护。
打开IDA分析
这里有一个简单的栈溢出,继续反编译出的函数,并没有找到能让我们获取shell的代码,所以我们需要自己构造出一个能够让程序进行系统调用的函数,即执行execve("/bin/sh",NULL,NULL),从而拿到shell。
通过查阅资料可知对于32位的ELF文件,有以下关系:
mov eax, 0xb
mov ebx, [“/bin/sh”]
mov ecx, 0
mov edx, 0
int 0x80
=> execve("/bin/sh",NULL,NULL)
接下来的目标就很明确了,修改对应寄存器的值即可。
首先找到能够返回的寄存器地址,这里用到了ROPgadget工具。
如图,我们取第二条地址,同理,可以找到其它指令对应的地址。
另外,我们还需要获取bin/sh的地址。可以打开IDA,用shift+F12,再按ctrl+F直接搜索bin/sh,IDA就会找到含有这个字符串的地址。
还有一种方法。