常用的计算机网络设备有,常用网络设备有哪些,初学者必须要知道的五大网络设备...

在我们接触计算机的同时,网络知识也是必不可少的,搞懂网络我们先要认识这些网络设备,以及它们有什么作用。 第一个:路由器(分无线跟有线路由器) 如今家用一般都用的无线路由器(俗称WIFI),因为无线路由器都带有线功能,不过大型网络的核心路由器都不用无线的,路由器与其他设备最大的区别是既有WAN口,同时也有LAN口,而交换机的话只有LAN,有些光猫如果带路由功能的话那么它上面一定标有WAN口的。 路由器的主要功能是组成一个小型的局域网,同时它可以有自己的管理程序,进入他的管理设置界面一般通过在IE输入它的网关IP,然后输入用户名跟密码。还自带拨号功能跟DHCP服务器,装了路由器可以不用拨号和设置IP了。 第二个:交换机 一般交换机的作用是用来扩展网络设备,可以带更多的电脑或者其他网络设备,它一般都是LAN口,接口都一样,接到电脑上面的网线可以随便插入交换机的哪个接口,但是,不能够将一跟网线同时插入这交换机的任意两个端口,这样交换机就不能工作的,导致整个交换机上面的设备都不能正常工作。一般交换机的端口也比较多,有5口的,8口,16口,24口,36口,48口等交换机,可以根据自己的需要选择交换机,比如一个局域网是42台电脑,那么你可以选择48口的交换机,如果是150台的电脑,那么可以选择4台48口的交换机。接线的话你可以从路由器上面接一根网线到交换机上面,切记,一定不能同时接两根到交换机上面,然后再从交换机上面接一根线到另外一个交换机上面,比如是150台的电脑,那么我们先从路由器上面接一根网线到一个交换机上面,然后剩下的三个交换机分别从这个交换机拉一跟线到上面,最好不要将这四个交换机串联,这样会影响网速的。 光猫(modem) 光猫是将光信号转换成网络信号的设备,由于PON技术主要分为EPON和GPON,两种技术互不兼容;此外,不同运营商,不同省份订制的onu(也就是光猫)都不太一样:基本工作原理虽然一样,但是光猫的注册细节,性能参数,管理方式各省,各运营商都不相同;所以在市场上买光猫的话,一定要注意是哪家运营商(电信,移动还是联通),哪个省市的。 网络测线仪 网络测线仪主要用来检测网络中网线问题的,一般只要你检测到1236线通的话网线是可以上网,没问题的,不过也不排查部分网线短路也使得1236通,那个就需要仔细检查哪里破皮或者水晶头短接了。 网线钳 主要用来做网线水晶头或者电话线水晶头用的。

BM算法简单理解

什么是BM算法 BM算法算是RK(模式串与主串按位比较,主串按位后移)算法的变种,提高了移动的范围。达到优化的目的 BM算法的两大核心:坏字符&好后缀的处理。 坏字符 从***高->低***按位比较时的第一个不匹配的字符。 移动位数计算:mi = s i - xi 解析 mi:主串比较向后移动位数si:坏字符对应的模式串下标xi:坏字符首次比对成功的模式串下标(初始值-1) 场景一:无一匹配 场景二:存在匹配 好后缀 说明模式串后缀存在部分匹配,那么针对这些部分匹配的内容需要进行优化滑动,如果匹配串再模式串中没有匹配的就可以整体跳过。 解析 一、后缀在模式串没有匹配的,那么可以直接移动到后缀之后 二、整个后缀再模式串中存在匹配,那么可以后缀对齐 三、部分后缀与模式串前缀部分匹配则需要前缀部分对齐了 完整代码 public class BMStringOther { private static final int SIZE = 256; // 全局变量或成员变量 private void generateBC(char[] b, int m, int[] bc) { for (int i = 0; i < SIZE; ++i) { bc[i] = -1; // 初始化 bc } for (int i = 0; i < m; ++i) { int ascii = (int) b[i]; // 计算 b[i] 的 ASCII 值 bc[ascii] = i; } } public int bm(char[] a, int n, char[] b, int m) { int[] bc = new int[SIZE]; // 记录模式串中每个字符最后出现的位置 generateBC(b, m, bc); // 构建坏字符哈希表 int i = 0; // i 表示主串与模式串对齐的第一个字符 while (i <= n - m) { int j; for (j = m - 1; j >= 0; --j) { // 模式串从后往前匹配 if (a[i + j] !

STM32存储器映射学习笔记

STM32存储器映射学习笔记 一、怎么根据芯片地址范围算容量 1.1、储单元与地址线的关系: CPU访问存储器的最小单位是存储单元且每个存储单元都有一个地址,1 根地址线可以查找 2 个地址既2个存储单元,16根地址线则可以查找 2^16个存储单元。 1-2、存储字长与数据线的关系 : 存储字长是指存储器中一个存储单元(存储地址)所存储的二进制代码的位数,而二进制代码的位数是由数据线的根数决定的,也就是说: 存储字长 = 数据线根数字节(B)与位(b)的关系 : 计算机里规定 1Byte = 8bit 1-3、怎么根据芯片地址范围算容量 30FFFH +1 - 30800H = 800H = 8 * 16^2 = 2048 如果没说明位数,不用管。该芯片的存储容量为2K 。 1-4、位数是什么 位数是数据线的宽度。如8位单片机系统的数据线是8位( D0 ~ D7),芯片的数据线也是8位(比特,bit,二进制的最小单位)。地址长度2K的芯片,数据线是8位,容量是 8 * 2K = 16Kb ,以字节计算则是 2KB 。B(字节) = 8b(比特)。 二、存储器映射 2.1存储器映射图 2.2存储器区域功能划分(此处举例Block 02区域) ARM公司给Block 2 片上外设 划分的区域为: 0x4000 0000 ~ 0x5FFF FFFF(512MB) 备注 :512M怎么算的:0x5FFF FFFF+1-0x4000 0000=0x2000 0000=(2 * 16^7)/(1024*1024)=536,870,912/1,048,576=512MB

CRNN代码笔记

CRNN代码笔记 主要由五个模块组成: 数据集的加载与切分CRNN代码复现训练过程预测过程训练过程中对的评估 文章目录 CRNN代码笔记数据集的加载与切分RCNN模型构建训练部分训练辅助函数注意超参数设置判断cuda是否可用,是则基于GPU训练,否则用cpu训练设置训练数据加载器、验证数据加载器,常规操作collate_fn用法 实例化CRNN模型,加载模型参数,并运行至可用设备(CPU or GPU)定义优化方法、损失函数开始训练 预测部分超参数设置判断cuda是否可用,否则用cpu预测设置预测数据加载器,常规操作实例化CRNN模型,加载模型参数,并运行至可用设备(CPU or GPU)实例化进度条,用于查看预测进度执行预测结果展示 验证部分 数据集的加载与切分 import os import glob import torch from torch.utils.data import Dataset from scipy import signal from scipy.io import wavfile import cv2 from PIL import Image import numpy as np class Synth90kDataset(Dataset): CHARS = '0123456789abcdefghijklmnopqrstuvwxyz' CHAR2LABEL = {char: i + 1 for i, char in enumerate(CHARS)} LABEL2CHAR = {label: char for char, label in CHAR2LABEL.items()} def __init__(self, root_dir=None, mode=None, paths=None, img_height=32, img_width=100): if root_dir and mode and not paths: paths, texts = self.

解决微信小程序input textarea输入框内容以及palceholder随页面滚动式跟着滚动,飘起来了。

bug 类型效果: 输入框内的文字跑了。 解决办法: 测试了网上的监听滚动事件,手动调用wx.hideKeyboard等方式,都不好使。 大概原因: 在页面出现滚动时,输入框跑了。 如果不是滚动页面,不能滚动,就不会出现。 刚开始整个外层标签是<view></view>, 换成<scroll-view></scroll-view> 再加个样式min-height:100vh; 就完美解决了。 原因可能和小程序原生对scroll-view内的input等滚动做了更好的优化,滚动式input及时失去焦点。 查询文档,另外看到两种解决办法:记录一下 这三种方法,未亲测。 https://developers.weixin.qq.com/community/develop/article/doc/000a00e1fd0790488e6a034f156813 1 页面可通过样式的滚动(overflow-y: auto)来写,但是不要用 -webkit-overflow-scrolling: touch; 2、页面用scroll-view,通过变量{sysScroll}来控制 view: <scroll-view scroll-y="{{sysScroll}}" scroll-top="{{scrollTop}}" class="scroll-hei-2 bg-def"> <form > <input bindfocus="onfocus" bindblur="onblur" /> </form> </scroll-view> js: onfocus: function() { this.setData({sysScroll: false}) }, onblur: function (e, param, inst) { this.setData({sysScroll: true}) } 3、试一下这个属性 always-embed = true

windows10 编译pytorch源码

之前gtx1660显卡在高价位卖了,现在只能凑合用gtx650爷爷级显卡。但是使用yolov5时出现 PyTorch no longer supports this GPU because it is too old 百度后解释说gtx650算力太低,当前发布最新版本不支持其显卡。 所以之只能靠自己编译源码 首先下载pytorch源码 我是用1.8.0版本 git clone --recursive https://github.com/pytorch/pytorch cd pytorch # if you are updating an existing checkout git submodule sync git submodule update --init --recursive 根据github指示进行下载,这个最好翻墙节省时间。 再用conda建立环境,安装编译环境 conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses conda install -c conda-forge libuv=1.39 这里面cmake安装时老版本的可以去掉,手动安装cmake最新版本 https://zhuanlan.zhihu.com/p/106977910 参考这篇文章使用vs2019进行编译,找到你对应显卡算力,我显卡为gtx650 对应算力为3.0 因此要设置环境 set TORCH_CUDA_ARCH_LIST=3.0 然后再修改代码,不然安装tourchversion会说CUDA_ARCH=3.0 没有找到

centos7 安装MongoDB数据库的采坑经历 + 超级用户创建

文章目录 目标:安装步骤:1、安装依赖包:2、下载MongoDB源码压缩包注意点: 3、设置权限:4、接下来启动 Mongodb 服务:5、连接:6、创建超级用户和普通用户:超级用户创建过程:1、先修改配置并将mongo启动的去掉`--auth`参数:修改配置:之前的启动先关闭:重启启动【不带--auth参数】 2、进入mongo,新建一个角色3、然后新建一个用户:4、重新修改配置并启动带上--auth参数。修改配置:之前的启动先关闭:重启启动【不带--auth参数】 5、使用刚刚的用户连接 参考文章: 目标: 今天想在自己买的服务器【centos7】上面配置一个mongodb数据库 其实,这个文章老早就写了一点,然后一忙给忘了,决定今天把这个文章补全。 安装步骤: 1、安装依赖包: sudo yum install libcurl openssl 2、下载MongoDB源码压缩包 下载地址: 我这里选择rpm安装方式: # 下载1 wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-server-4.4.0-1.el7.x86_64.rpm # 或者 wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-shell-4.4.6-1.el7.x86_64.rpm # 安装: rpm -ivh mongodb-org-server-4.4.0-1.el7.x86_64.rpm 注意点: linux有server、shell。其实server的rpm,直接使用rpm安装之后,说明服务端已经安装成功。 shell代表是客户端,可以连接服务端。 根据需要安装。 # 服务端-server https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-server-4.4.6-1.el7.x86_64.rpm # 客户端-shell https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-shell-4.4.6-1.el7.x86_64.rpm 3、设置权限: 默认情况下 MongoDB 启动后会初始化以下两个目录: 数据存储目录:/var/lib/mongodb 日志文件目录:/var/log/mongodb 我们在启动前可以先创建这两个目录并设置当前用户有读写权限: sudo mkdir -p /var/lib/mongo sudo mkdir -p /var/log/mongodb sudo chown `whoami` /var/lib/mongo # 设置权限 sudo chown `whoami` /var/log/mongodb # 设置权限 启用身份验证配置

用户名和计算机名不一致,联想笔记本为何任务管理器里显示的用户名和用户帐户里面的不一致...

联想笔记本WinXP下的用户帐户分两个标识,分别是“名称”和 “全名”,第一次创建时两者是完全一样的,假设创建的是ABC,在计算机管理-本地用户和组--> 用户。如果在控制面板的用户帐户中修改此帐户名为BCD,那么更改的只有全名,而不是名称。 而XP系统有2种登陆方式,分别是欢迎界面和传统方式,登陆方式为欢迎界面时显示的是全名,传统方式时显示的是名称。所以在使用传统登陆方式时,由于只更改了全名,故显示的是名称:ABC,但手动输入BCD也可以登陆。在任务管理器里显示的用户名即是用户的名称。 彻底修改的方法如下: 1.在计算机管理里面,右键单击需要修改的用户名称选择“重命名”。 2.然后在“常规”选项卡下双击欲修改的用户名,即可修改用户名称。 需要注意的是由于Windows Home版操作系统没有本地用户和组,以上方法无效,可以在开始-->运行中输入如下命令: rundll32 netplwiz.dll,UsersRunDll(需要注意大小写)。 3.通过以上操作,即可修改任务管理器里的用户名了。

查看计算机桌面隐藏文件夹,怎么查看隐藏文件?2种方法教你查看电脑中的隐藏文件...

有时候我们在打开文件夹的时候,明明是空的什么文件也没有,但是却发现仍然会占用磁盘空间,这是怎么回事呢?后来听说可能是有隐藏文件,这文件都隐藏了怎么才能看见呢?关于电脑中怎么查看隐藏文件的问题,小编给大家找了两种可以查看隐藏文件的方法,一起来瞧一下吧。 方法一:文件夹中查看隐藏文件 第一步,打开“空的”文件夹,点击窗口上方的【工具】选项,然后点击选择【文件夹选项】。 第二步,在新弹出的对话框中,点击【查看】选项卡。 第三步,在【高级设置】模块下,勾选【显示隐藏的文件,文件夹和驱动器】选项,然后去掉【隐藏受保存的操作系统文件】的勾选项,点击【确定】即可。 方法二:我的电脑中查看隐藏文件 第一步,双击打开【我的电脑】,然后点击展开【查看】选项卡。 第二步,在查看选项卡中的左右侧,点击【选项】按钮。 第三步,这时候就会进入到【文件夹选项】对话框,然后我们需要还是点击【查看】选项卡。 第四步,跟方法一相同,去掉勾选【隐藏受保存的操作系统文件】选项,勾选【显示隐藏的文件,文件夹和驱动器】选项即可。 不管你是什么系统的电脑,这2种方法中总有一个是你需要的。怎么查看隐藏文件的方法就讲完了,以后再遇到有隐藏文件的情况,就可以用以上的方法显示隐藏文件,最主要的还是这两种方法都非常的简单,而且还有好多操作都是相同的,回了一种另一种也就会了。好了,今天的分享就到这里了,希望能对你有所帮助。

html css 图像 crop,CSS显示调整大小并裁剪的图像

我想显示具有特定宽度和高度的URL的图像,即使它 具有不同的尺寸比例。所以我想调整大小(保持比例), 然后将图像切成我想要的大小。 我可以使用html img属性调整大小,也可以使用剪切background-image。 我该怎么办? 例: 这个图片: 具有800x600像素大小,我想显示为200x100 像素图像 通过img我可以调整图像大小200x150px: style="width: 200px; height: 150px;" src="http://i.stack.imgur.com/wPh0S.jpg"> 这给了我这个: 而且background-image我可以削减图像200x100像素。 style="background-image: url('https://i.stack.imgur.com/wPh0S.jpg'); width:200px; height:100px; background-position:center;"> 给我: 我该怎么办? 调整图像大小,然后将其切成我想要的大小?

启用计算机无线网络连接,简单几步解决win7无线网络连接启用不了的问题

近日有使用win7系统的用户向小编反映说自己的电脑出现了无线网络连接启用不了的状况。无法使用无线网络会给我们带来非常大的不便,但用户不知道怎么办,所以下面小编就来为大家分享关于解决win7无线网络连接启用不了的方法。 解决方法如下: 1、打开电脑以后,点击“开始”,右边找到“控制面板”点击进入,就会出现一个“控制面板”对话框; 2、点击“网络和Internet”进入下一个对话框,点击第一个“网络和共享中心”,找到“更改适配器设置”; 3、将鼠标放在“无线网络连接”的选项上,单击鼠标右键,点击“启用”; 4、在更改网络适配器中点击“开启”以后,发现无线网络连接仍为灰色,这个时通过“运行”命令打开,再点击“开始”,接着找到运行点击进去; 5、在“运行”的对话框中输入“services.msc”,然后点击确定; 6、出现“服务本地”的一个对话框。在对话框中的名称中找到“WLAN AutoConfig”的字母,手动点击启动。这时候就会有启动该型服务的进度条,以后电脑的无线网络连接就可以正常使用了; 7、通过“运行”命令打开无线网络连接的时候,会有找不到运行对话框的情况。这时候大家可以在打开“开始菜单”,然后在右下角点击鼠标右键就会出现“属性”,接着点击“自定义”找到“运行命令”的选项,在其方框中点勾就可以。 以上就是关于解决win7无线网络连接启用不了的方法啦,有出现同样问题的可以按照上面的方法来解决哦。

SQL比较时间(datetime)大小

如果需要比较时间的大小,可以使用DATE函数进行比较 假如有个表product有个字段add_time,它的数据类型为datetime, 在product表中找到2019年11月5日至11月30日生产的产品 SELECT * FROM product WHERE date(add_time) BETWEEN '2019-11-05' AND '2019-11-30' ------------------- mapper.xml 通过sql语句时间格式转化: date_format(b.create_time,'%Y-%m-%d') as create_time,

怎样用计算机做ppt,利用电脑如何做PPT 电脑做ppt详细步骤

1、首先,我们打开PPT,新建一些不同版式的界面。至少选择三种是必备的,【标题页】、【内容页】、【致谢页】即空白页。系统模板非常丰富,可以根据需要灵活选用:选择“文件”→“新建”,在打开的任务窗格中可以看到它提供了“新建”、“根据现有演示文稿新建”和“根据模板新建”三种调用模板的方式。 2、然后,我们输入相关的文字和插入图片,完成内容的填充,选择相应的主题,来美化版面。对于动画方式,增加了“之前(从上一项开始)”和“触发器动画”两项控制动画的新功能。利用“之前”动画方式,在一张幻灯片中就可以设置多个对象同时运行动画的效果,并且不同对象动画的开始时间可以自行设定。 3、接着,选择一些关键部分,例如标题、图片等,插入【动画】,以丰富PPT的展示方式,给观众一些亮点。点击下拉箭头,有更多的演示提供选择,但是要注意动画的时间不宜过长,否则会影响放映的效果,主次不分。 4、最后,为不同的界面设置【切换方式】,例如同类型的界面,可设置一种切换方式,给观众带来层次感。如果你需要重复播放某一段动画,除了用触发器控制外,还可以在“重复”框中选择重复的次数或停止该动画的条件(“直到下一次单击”或“直到幻灯片末尾”)。

计算机网络自顶向下 第1章 计算机网络和因特网

1.1 什么是因特网? 1.1.1 具体构成描述 主机(host) 或称为端系统(end System)通信链路(communication link):由不同类型的物理媒体组成。包括同轴电缆、铜线、光纤和无线电谱等。链路的传输速率以比特/秒(bit/s,或bps) 度量。分组交换机(packet switch): 路由器(router):通常用于网络核心中。链路层交换机(link-layer switch):通常用于接入网中。 因特网服务提供商(Internet Service Provider,ISP):端系统通过ISP接入因特网,比如有住宅区ISP、公司ISP、大学ISP、国家ISP等。协议(protocol):用于控制因特网中信息的接收和发送。 1.1.2 服务描述 因特网的两种描述方式: 一种是根据它的硬件和软件组成来描述。二是根据基础设施向分布式应用程序提供的服务来描述。(比如应用程序编程接口(Application Programming Interface,API))。 1.1.3 什么是协议 一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送和/或接收一条报文或其他事件所采取的动作。 1.2 网络边缘 网络边缘通常是指网络的接入层,就是靠近用户端,用于汇聚用户网络(LAN)的网络层面。与网络边缘连接的设备即是端系统(主机)。 1.2.1 接入网 接入网(access network) 是指将端系统连接到其边缘路由器(edge router)的物理链路。边缘路由器是端系统到任何其他远程端系统的第一台路由器。 1.家庭接入:DSL、电缆、FTTH、拨号和卫星 宽带住宅接入有两种最流行的类型:数字用户线(Digital Subscriber Line,DSL)和电缆因特网接入(cable Internet access)。DSL利用本地电话公司现有的本地电话基础设施。用户使用现有的电话线(双绞铜线)从本地电话公司处获得DSL因特网接入。当使用DSL时,用户的本地电弧公司就是它的ISP。电缆因特网接入利用了有线电视公司现有的有线电视基础设施。住宅从提供有线电视的公司获得了电缆因特网接入。(比如光纤和同轴电缆,或者都用称为混合光纤同轴)。光纤到户(Fiber To The Home,FTTH),它从本地中心局直接到家庭提供了一条光纤路径。最简单的为每户设置一根光纤,更一般的时每根光纤由许多用户共享,直到接近住宅时才分为每户一根。 2.企业(和家庭)接入:以太网和WIFI 以太网是一种计算机局域网(LAN)技术。以太网用户使用双绞铜线与一台以太网交换机相连,以太网交换机再与更大的因特网相连。基于IEEE 802.11 技术的无线LAN接入,通常称为WIFI。 3.广域无线接入:3G和LTE 1.2.2 物理媒体 物理媒体(physical medium) 分为两类: 导引型媒体(guided media):电波沿着固体媒体前行,如光缆、双绞铜线或同轴电缆。非导引型媒体(unguided media):电波在空气或外层空间中传播,如无线局域网或数字卫星频道。 1.3 网络核心 网络核心 即由互联因特网端系统的分组交换机和链路构成的网状网络。 通过网络链路和交换机移动数据有两种基本方法:分组交换(packet switching)和电路交换(circuit switching)。 1.3.1 分组交换 在各种网络应用中,端系统彼此交换报文(message)。为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组(packet)。在源和目的之间,每个分组都通过通信链路和分组交换机传送。分组以等于该链路最大传输速率的速度传输通过通信链路。如果某源端系统或分组交换经过一条链路发送一个 L L L比特的分组,链路的传输速率为 R b p s R bps Rbps,则传输该分组的事件为 L / R L/R L/R秒。 1.

日期格式转化 yyyymmdd格式化为yyyy-mm-dd

日期格式的转换 yyyy-MM-dd格式的日期转换为yyyyMMdd容易转换,但反过来的转换貌似就不那么容易了,在此记录一下: /** * 格式化日期 * 从yyyymmdd格式化为yyyy-mm-dd * date 日期yyyymmdd */ formatDate: (date) => { if (date != '' && date != undefined && date.toString().length == 8) { return date.toString().replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3"); } else if (date != '' && date != undefined && date.toString().length == 6) { return date.toString().replace(/^(\d{4})(\d{2})$/, "$1-$2"); } else { return ""; } } 以上就是利用正则表达式实现的日期格式转换。 还有带上时分秒日期的转换,与此类似: /** * 格式化日期时间 * 从yyyymmdd.xxxxx格式化为yyyy-mm-dd hh:mi:ss * datetime 日期时间 */ formatDatetime: (datetime) => { if (datetime !

【深度学习】模型压缩——量化

基本原理 将浮点存储(运算)转换为整型存储(运算)的一种模型压缩技术。 例: 原本需要用 float 32 表示的权重,量化后只需要使用 int 8 表示,仅仅这一个操作,可以获得接近4倍的网络加速!(float 32 指的是 32 位的 float 型数据,int 8 指的是 8 位的数据。) 一般情况下不同数据类型所占位数或字节数参考: 数据类型位数字节数int占一个内存单元: 如 64 位系统一个内存单元占 64 位64 位系统:8 字节 32 位系统:4 字节 16 位系统:2 字节char81char*(指针变量)占一个内存单元64 位系统:8 字节 32 位系统:4 字节 16 位系统:2 字节short int162unsigned int324float324double648long648long long648unsigned long648 量化目的 降低模型消耗的内存大小 尤其是手机、机器人等嵌入式终端,很多情况下无法配备非常大的内存空间。 加速模型推理 对大多数处理器而言,整型运算的速度一般(但不总是)要比浮点运算更快一些; 降低模型所需的内存带宽 网络运行时,如果模型需要很大的内存带宽,则内存,CPU 和电池都会飞速消耗,影响用户体验,变得智能却要付出过多的代价。 更低的能耗与占用面积 FP 32 乘法运算的能耗是 INT 8 乘法运算能耗的18.5倍,芯片占用面积则是 int 8 的27.3倍,而对于芯片设计和 FPGA 设计而言,更少的资源占用意味着相同数量的单元下可以设计出更多的计算单元;而更少的能耗意味着更少的发热,和更长久的续航。 尚可接受的精度损失 int 8 支持性良好

Rethinking Training from Scratch for Object Detection

Rethinking Training from Scratch for Object Detection 一. 概述 正常训练目标检测的流程分为以下几种: 在imagenet上进行预训练,然后在特定数据集进行tune直接在数据集上进行从头训练 两种方式各有千秋,前者可以很快收敛(在特定数据集收敛快),但是训练复杂(预训练实际长)。后者直接训练较为容易(尤其在修改模型结构时),但是训练周期较长(比tune阶段长很多)。这篇文章就是解决从头训练的时长问题,从而达到集成两者的优点(夸大其词的说法)。 二. 流程 论文比较简单,这里进行总结如下: 代码地址: 链接地址 论文地址: 链接地址 精度和 \(batchsize\) 有关,且在一定范围内,越大越好。精度和图像的分辨率(大小)有关,且图像越大分辨率越好,图像过小对精度影响较小。精度和缩放有关,按照分类的缩放进行,不仅提高速度,且精度也比正常缩放效果好。精度和BN层有关,正相关。 按照上述的总结,论文进行改进的训练如下: 使用BN层(当前网络基础结构) Pretrained先用小尺度图像进行训练,\(batchsize\)设置较大 数据处理部分-->先将图像缩放到 \((H,W)\times(1.0,1.2)\) ,随机RandomCrop-->\((H,W)\),最后进行Padding到 \((h,W)\) Finetune阶段按照正常训练即可 三. 总结 有一定使用意义,对于大数据集,直接使用此方法较好。对于小的数据集,还是重新训练imagenet比较好VOC的数据集太小,而且分布较为散乱,这里对比意义不大。笔者会在实际数据集上尝试之后进行补充(TODO)

这可能是介绍Android UvcCamera最详细的文章了

设备外接usb摄像头,进行基本的预览、拍照、录像。相信有些同学在工作中有遇到类似的需求。 uvc camera?不管你之前有没用过,有没遇到过,相信看完这篇文章,一定会带给你一些收获。 这篇文章将从下面几点展开讲解: 一、什么是UVC? 二、UVCCamera开源项目? 三、开源项目集成? 四、demo小改动,录像同时获取实时yuv流? 五、遇到的问题及解决? 一、什么是UVC? UVC全称为USB Video Class,直接翻译过来的意思就是:USB视频类,它是一种专门为USB视频捕获设备定义的协议标准。 这个标准是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,已经成为USB org标准之一。 现在的主流操作系统,都已提供UVC设备驱动,因此符合UVC规格的硬件设备在不需要安装任何的驱动程序下即可在主机中正常使用。是的,目前Android系统已经支持uvc设备。 小结: 讲到这里大家应该有这么个概念了,uvc是一种协议,不同的设备可能会支持不同的协议。如果我们的usb摄像头,需要在Android设备上获得支持的话,那这个摄像头就得是支持uvc协议的摄像头。 二、UVCCamera开源项目? https://github.com/saki4510t/UVCCamera 现在我们在网上搜索uvc camera相关的文章,能查找到的uvc camera相关的项目,可以毫不夸张的说,基本都是基于上面这个开源项目来改的,这个开源项目的确比较牛逼,而且类封装的很好,代码逻辑比较清晰,使用起来也是非常的方便,而且关于摄像头基本的预览、拍照、录像功能都实现了,是个比较完整的工程项目。 我们通过git pull先把代码拉到本地,导入到AndroidStudio中,(不通过git pull 也行,直接下载代码也是可以的。 github 网站在国内不翻墙的话,可能有时访问不了,如何访问不了,大家也可以尝试在gitee上去搜索这个项目下载)。 整个工程的目录结构如下图所示。当然导入的过程中,会遇到一些报错的问题,其实主要是gradle版本的问题。 导入报错的问题,我们统一在这个文章后面再给大家做详细的讲解,包括遇到的问题以及是如何去解决这些问题的。 这个开源项目,除了sdk库的源码,作者还提供了8个demo。这8个demo的具体功能介绍如下: 1)USBCameraTest0 显示如何使用SurfaceView来启动/停止预览。 2)USBCameraTest 显示如何启动/停止预览。这与USBCameraTest0几乎相同, 但是使用自定义的TextureView来显示相机图像而不是使用SurfaceView。 3)USBCameraTest2 演示如何使用MediaCodec编码器将UVC相机(无音频)的视频记录为.MP4文件。 此示例需要API>=18,因为MediaMuxer仅支持API>=18。 4)USBCameraTest3 演示如何将音频(来自内部麦克风)的视频(来自UVC相机)录制为.MP4文件。 这也显示了几种捕捉静止图像的方式。此示例可能最适用于您的定制应用程序的基础项目。 5)USBCameraTest4 显示了访问UVC相机并将视频图像保存到后台服务的方式。 这是最复杂的示例之一,因为这需要使用AIDL的IPC。 6)USBCameraTest5 和USBCameraTest3几乎相同,但使用IFrameCallback接口保存视频图像, 而不是使用来自MediaCodec编码器的输入Surface。 在大多数情况下,您不应使用IFrameCallback来保存图像,因为IFrameCallback比使用Surface要慢很多。 但是,如果您想获取视频帧数据并自行处理它们或将它们作为字节缓冲区传递给其他外部库, 则IFrameCallback将非常有用。 7)USBCameraTest6 这显示了如何将视频图像分割为多个Surface。你可以在这个应用程序中看到视频图像并排观看。 这个例子还展示了如何使用EGL来渲染图像。 如果您想在添加视觉效果/滤镜效果后显示视频图像,则此示例可能会对您有所帮助。 8)USBCameraTest7 这显示了如何使用两个摄像头并显示来自每个摄像头的视频图像。这仍然是实验性的,可能有一些问题。 9)usbCameraTest8 这显示了如何设置/获取uvc控件。目前这只支持亮度和对比度。 供的demo,代码逻辑都很清晰,大家可以根据自己的需求去看对应的demo。 这些demo包含了预览、录像、拍照这些基本的功能。关于调节亮度、对比度这点,可能是不同摄像头的原因,我本地验证了下,看实际上并没有效果,如果有哪位同学后面试试到有效果的,欢迎给我留言,大家交流交流。 Demo7我们可以看到是一个支持2个摄像头的Demo。有多摄像头支持需求的,可以参考这个里面的逻辑。 三、开源项目UVCCaemra的编译、集成? UVCCamera的核心代码都在libuvccamera里面了。 我们要在我们的项目工程中集成这个项目的话,需要2个东西,一个是so库,一个可以调用的java sdk源码。 从上面的截图我们可以很清楚的看到,代码里面主要是包含了jni和java两大部分的内容。编译jni,就可以得到我们需要的so库,java代码可以打包成aar,或者之间直接把整个代码复制到我们的工程目录下,作为库引用也是可以的。 1) so库的编译 现在so库的编译,已经非常的方便了,如下图所示,我们在as的Terminal终端界面,切到jni目录下,直接ndk-build,就可以生成我们需要的so库文件了。

清除计算机用户缓存,如何清除电脑存储的账号 缓存用户名和密码清除方法介绍...

如何清除电脑存储的账号? 我们都知道访问局域网后你的用户名和密码都会被保存下来,当然这在很多时候都给了你方便,这样你就不用因为忘记密码而苦恼了,但是有时你不想保留这些信息又该怎么办呢? 那么,缓存用户名和密码清除方法是什么? 大家都知道,如果你访问局域网后,系统会自动保留当时的访问用户名与密码,如果不想继续用改账号访问工作组里一台服务器(保存了用户名和密码),现在想用另外一个身份登录那台服务器,该如何清除windows访问局域网时保留的缓存用户名和密码呢?有人建议用net use * /d /y和net session 計算機名/delete提示操作成功,但是最后发现仍然可以连接,不起作用。 经过不断试验,最后发现可以通过以下方法清空计算机上存储的用户名和密码,具体的操作步骤如下: 1.单击win7旗舰版的“开始”,单击“运行”,键入“control userpasswords2”或 输入“control keymgr.dll”,然后按 Enter. 2.单击“高级”选项卡,然后单击“管理密码”。 3.移除所有存储的密码。 “存储用户名和密码”的行为根据我的测试,无论是移除所有存储的密码,还是使用net use * /d删除所有的已有连接,都需要重新启动计算机才会在访问该共享文件夹的时候,重新出现输入用户名和密码的提示。如果您不希望重启计算机的话,可以重启“workstation”服务来进行测试。 以上三大方法,都可以轻轻松松帮你清除windows访问局域网时保留的缓存用户名和密码,希望对您有所帮助。

由先序中序,或后序中序,可以唯一确定二叉树;完全二叉树的顺序存储,c/c++描述

这是课本里的,两个定理。由先序(根左右)、后序(左右根)可以确定根节点是哪个。由中序(左根右)可以确定左子树和右子树的范围。所以我们也找到了二叉树的左子树和右子树的先序(或后序)和中序排列。由归纳法,可得出这个构造二叉树链表的方法。 对于完全二叉树,相对于满二叉树,只有最后两行可以不排满,是非常接近于满二叉树的,其跟满二叉树一样,父母节点与子节点的层序排列序号有2倍的规律可循。所以可以由完全二叉树的顺序排列构造其链表排列,非完全二叉树,比较稀疏的二叉树要补充至完全二叉树形式,才可以使用顺序存储,比如后两行以上的行中的空节点,以存储字符‘#’代替表示。 本程序包含以下几个函数,程序执行思路是:由函数createBiTreeCommaExpre完成从逗号表达式建立二叉树;由函数displayBiTree输出二叉树的逗号表达式形式到屏幕,以检测建立二叉树的createBiTreeCommaExpre是否正确;由函数totalNumberOfNodes统计二叉树的总节点数。 由函数preOrderRecursion输出二叉树的先序遍历结果至数组,(这里以节点为字符为例,所以遍历结果存储到字符数组里);由函数inOrderRecursion输出二叉树的中序排列结果至数组;由函数postOrderRecursion输出二叉树的后序遍历结果至数组。由函数dispalyArray输出字符数组至屏幕,以检验各种遍历结果是否正确。 由函数buildBiTreePreIn根据二叉树的先序中序遍历结果重新构造新的另一个二叉树;由函数buildBiTreePostIn根据二叉树的后序中序遍历结果重新构造另一个新的二叉树;由函数buildBiTreeSequen根据二叉树的顺序存储结果构造其对应的二叉树;由函数compareBiTree比较这四个二叉树是否完全相等,以确认我们这三个构造函数是否写的正确。由主函数main调用以上所有函数。 完整代码如下,这是主函数main所在的源文件: #include<iostream> #include<stdio.h> using namespace std; #define MAXARRAY 20 #define STACKDEPTH 15 struct BiTreeNode { char value; BiTreeNode* leftChild; BiTreeNode* rightChild; }; extern void createBiTreeCommaExpre(BiTreeNode*& biTreeRoot, char* ptChar); extern void displayBiTree(BiTreeNode*& biTreeRoot); extern int totalNumberOfNodes(BiTreeNode*& biTreeRoot); extern void dispalyArray(char array[]); extern void preOrderRecursion(BiTreeNode*& biTreeRoot, char* &ptArrayPreExp); extern void inOrderRecursion(BiTreeNode*& biTreeRoot, char* &ptArrayInExp); extern void postOrderRecursion(BiTreeNode*& biTreeRoot, char* &ptArrayPostExp); extern BiTreeNode * buildBiTreePreIn(char * ptPreExpre,char* ptInexpre,int length); extern BiTreeNode * buildBiTreePostIn(char* ptPostExpre, char* ptInexpre, int length); extern BiTreeNode * buildBiTreeSequen(char* ptSequenExpre,int location); extern bool compareBiTree(BiTreeNode * &biTreeA, BiTreeNode* &biTreeB); int main() { char arrayCommaExpress[MAXARRAY] = "

Android应用内存管理机制

引言 有个客户统计了APPs 统计的数据(我司的产品是Android 机顶盒),跟实际每个APK 统计的数据对不上,需要我们给出解释。客户的问题总结起来有三个: App总内存和所有Apk内存之和不对应:是否有系统APK是隐藏没有出现了Apps 列表的. 如果有,是否有方法/命令可以查询到盒子上安装的所有的APK?Data 和 Cache不对应:手动清除了APK 的data和cache之后,APK 显示的storage used 数据减少与data 减少不匹配。低内存的情况:除此之外,针对这个cache 不断增加, 内存一直减少的情况, Android有没有做什么应对机制 为了查这个问题,就需要去看源码: Note: 以下所有源码基于Android 10.0,UI部分源码和手机有不同。如果只对问题答案感兴趣,而不关系具体源码分析过程,可直接跳到问题总结。 源码解析 本文中涉及到的代码有: packages\apps\TvSettings\Settings\src\com\android\tv\settings\device\apps\AllAppsFragment.java packages\apps\TvSettings\Settings\src\com\android\tv\settings\device\storage\StorageFragment.java packages\apps\TvSettings\Settings\src\com\android\tv\settings\device\apps\AppManagementFragment.java packages\apps\TvSettings\Settings\src\com\android\tv\settings\device\apps\AppStoragePreference.java packages\apps\TvSettings\Settings\src\com\android\tv\settings\device\apps\AllAppsFragment.java frameworks\base\packages\SettingsLib\src\com\android\settingslib\deviceinfo\StorageMeasurement.java frameworks\base\packages\SettingsLib\src\com\android\settingslib\applications\ApplicationsState.java frameworks\base\core\java\android\app\usage\StorageStatsManager.java frameworks\base\services\usage\java\com\android\server\usage\StorageStatsService.java frameworks\base\services\core\java\com\android\server\am\ActivityManagerService.java frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java frameworks\base\services\core\java\com\android\server\storage\DeviceStorageMonitorService.java frameworks\base\services\core\java\com\android\server\pm\Installer.java frameworks\native\cmds\installd\InstalldNativeService.cpp Apps列表的显示 Apps 列表对应的是AllAppsFragment,三种不同的APP分别是 InstalledPreferenceGroup,代表已安装的app;DisabledPreferenceGroup,代表被disable的app;OtherPreferenceGroup,除以上两者之外的app。 获取方式是用过ApplicationsState.AppFilter来筛选不同的App,其中OtherPreferenceGroup的规则是: 很显然,不属于是 InstalledPreferenceGroup和DisabledPreferenceGroup的App都被划分到OtherPreferenceGroup中了,因此并不存在有三种App之外的App,即所有App都显示了。 Internal shared storage计算 Internal shared storage 对应的java类是StorageFragment,在StorageFragment中,Apps数据对应的设置语句是updateDetails中的: Details是StorageFragment通过StorageMeasurement计算内存,StorageMeasurement调用了内存的MeasureTask这个AsyncTask,异步执行measureExactStorage方法得到的: measureExactStorage方法中先调用StorageStatsManager#queryExternalStatsForUser来获得music,movies,pictures等文件的大小,这里和本文目的无关,我没有深究。 接下来是调用StorageStatsManager#queryStatsForUser获取到StorageStats,计算得出details.appsSize,即最终显示的Apps大小。 接下来看stats是怎么得到的: queryStatsForUser的实现在StorageStatsManager对应的系统服务StorageStatsService的同名方法中。其中通过Installer#getUserSize方法获取到PackageStats。 translate方法的实现如下: 因此,接下来要看PackageStats是如何计算出来的,Installer类是IInstalld类的代理。getUserSize的实现中就是调用了IInstalld的getUserSize方法。IInstalld的实现是native服务InstalldNativeService。在InstalldNativeService的getUserSize中,就是最终APPS内存计算的终点。 getUserSize中有两种实现方式: 先尝试通过Quota(Quota参考资料)计算,如果不支持Quota,则手动遍历计算。我们的盒子会使用Quota,但是这两者的计算结果是相同的,所以我们可以看手动遍历计算的实现。 手动遍历的逻辑大同小异,以codeSize为例, 计算/data/app/的总大小,将值赋给codeSize。 相应的,每个属性和分别对应的目录为: codeSize = /data/app/ + /data/misc/profiles/ref/ + /data/dalvik-cache

☀️post和get到底有哪些区别?

前言 面试官:说一说get和post的区别吧。 我:🔥… 从应用层次上来说,post和get主要有着以下的几类的区别。 大小 区别: Get 传递的内容一般存在大小限制, Post 理论上没有。因为浏览器对 URL 存在限 制的(谷歌:8kb,火狐:7KB,IE:2kb的长度),超出 URL 长度的,就会对 UR 字段进行截取。 缓存 区别: Get 请求会出现浏览器把请求内容缓存下来(这个缓存不一定是304), POST 是没有缓 存的。解决缓存问题,一般会在 URL 后边加一个随机数。 安全 区别: GET 请求 URL 暴露在外边不安全,容易被 URL 劫持。 Post 相对 Get 是安全的。 编码 区别: GET 请求只能进行 url 编码, Get 只接受 ASCll 字符, POST 没有限制。 发送 区别: GET 方式会将请求报文一次性发出,而 Post 先发送 header ,服务器响应 100 continue ,然后 body 再发送,服务器响应 200(火狐浏览器 POST 只发送一次)。 但是,不管哪一种方式,都可以向服务器传递数据,也可以服务器获取到数据。 而且从本质意义来讲,以下的方式是没有任何区别的。他们之间的区别就是开发者约定俗称的规范。可以说,其实GET和POST本质上没有区别。 GET和POST是什么?

张量的广播机制

tensorflow 的字面翻译是----张量(tensor)—流(flow) 为什么要引入张量的广播机制,原因是有利可图,这个利益就是 能节约内存空间,说白了就是省钱!!! 凡事都有两面,既然能省钱,那一定费脑子,哲学一点的说法就是’抽象’ 对于张量的加法,乘法,不要求两个张量的维度完全相同,对于有很多重复元素的张量而言,可以用一个低纬度张量代表高维张量 1.广播的原则 如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符, 2. 或其中的一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。 1,2句话乃是理解广播的核心。广播主要发生在两种情况,一种是两个数组的维数不相等,但是它们的后缘维度的轴长相符,另外一种是有一方的长度为1。 1. 两个数组各维度大小从后往前比对均一致 案例一 import numpy as np A = np.zeros((2,5,3,4)) B = np.zeros((3,4)) print((A+B).shape) # 输出 (2, 5, 3, 4) A = np.zeros((4)) B = np.zeros((3,4)) print((A+B).shape) # 输出(3,4) 案例二 import numpy as np arr1 = np.array([[0, 0, 0],[1, 1, 1],[2, 2, 2], [3, 3, 3]]) #arr1.shape = (4,3) arr2 = np.array([1, 2, 3]) #arr2.shape = (3,) arr_sum = arr1 + arr2 print(arr_sum) print('-'*30+'分割线'+'-'*30) import numpy as np arr1 = np.

taro路由传参正确的接收方式

扯淡 taro路由传参官方文档只说明了怎么传参,但是并没有说明具体怎么去接收参数,它又不像微信小程序那样在onload生命周期里拿到,百度搜出来的解决办法是在componentWillMount生命周期里通过this.$router.params拿到,qunidayede组件里的this里就没有$router属性,打印出来是undefined,这个方法根本行不通。。。下面正文是正确方法 正文 比方说从A页面携带一个参数id跳到B页面 A页面的路由: Taro.navigateTo({ url: '/pages/B/B?id='+id }) B页面接收参数:引入Taro,并在componentWillMount生命周期中通过Taro.getCurrentInstance()获取到路由对象,从中拿到参数 import Taro from '@tarojs/taro' // 引入Taro componentWillMount () { let id = Taro.getCurrentInstance().router.params.id console.log(id) } (完) 

搜索引擎推荐(可以代替谷歌的搜索引擎)

搜索引擎推荐 前言国内可使用BingBaiduYandexSwisscowsOneSearchQwantSearch Encrypt 国内不可使用GoogleDuckDuckGoStartPageWiki.com 视频搜索Bilibili电影盒子AGEZzzFunYouTube 特殊CSDNStack OverflowCC SearchEcosiaSlideShareInternet ArchiveTwitter 结论 前言 本推荐参照网站searchenginejournal.com,原版为英文网站,且推荐的部分搜索引擎无法在国内使用,因此推荐阅读本篇博客。 参照网站链接:17 Great Search Engines You Can Use Instead of Google 想必大家都被搜索引擎的事情困扰过,百度有大量的广告,谷歌又无法在国内使用,那么到底有没有比较优秀的搜索引擎呢。下面我就来推荐几款优秀的、甚至可以代替谷歌的搜索引擎。本文将要推荐的搜索引擎分为4类,分别是国内可使用、国内不可使用、视频搜索、特殊。每个搜索引擎都将展示网址、介绍、效果图。 国内可使用 Bing 传送门:Bing 网址:https://cn.bing.com/ 介绍: 国内可以使用。 分为国内版和国际版,点击标签即可切换,且会切换对应的界面语言,中文/英文。 Bing的图片搜索GUI要优于它的竞争对手,而且直观得多。 Bing也为视频提供了同样干净的用户体验,使其成为视频搜索的首选源。 截至2020年1月,微软网站处理了美国四分之一的搜索查询。 效果图: Baidu 传送门:Baidu 网址:https://www.baidu.com/ 介绍: 国内可使用。 不做过多介绍,用过的都知道。 存在大量广告,搜索结果排序不合理,当做备用的搜索引擎还是可以的。 效果图: Yandex 传送门:Yandex 网址:https://yandex.com/ 介绍: 国内可以使用。 想要在美国以外寻找搜索视角? 超过45%的俄罗斯互联网用户使用Yandex。白俄罗斯、哈萨克斯坦、土耳其和乌克兰也在使用。 Yandex是一个总体上易于使用的搜索引擎。作为额外的奖励,它提供了一套非常酷的工具。 效果图: Swisscows 传送门:Swisscows 网址:https://swisscows.com/ 介绍: 国内可以使用。 隐私性较好。 它以尊重用户隐私为荣,从不收集、存储或跟踪数据。 它使用人工智能来确定用户查询的上下文。 随着时间的推移,Swisscows承诺会以惊人的准确性回答你的问题。 效果图: OneSearch 传送门:OneSearch 网址:https://www.onesearch.com/ 介绍: 国内可以使用。 OneSearch在2020年1月被Verizon Media推出,是专注于隐私的搜索引擎。 它承诺:

解决uni-file-picker组件在ios点击失效的问题

做一个跨端的小程序项目,用的是uni-app框架,uni-app踩坑记录。。。 从组件源码里找到choose-and-upload-file.js文件,查找chooseAndUploadFile方法,在方法里添加下面代码,保存即可解决。 opts.sourceType = ['album','camera'] 如下图所示: 

html背景图片如何和div一样大,怎么让div的大小随着背景图片的大小变大

在做网页的时候,经常会遇到为div添加背景图片,那么我们应该怎样做才能让div的大小随着背景图片的变大而变大呢,也就是让我们的div被背景图片所撑起来。下面学习啦小编告诉你! 让div的大小随着背景图片的大小变大的方法 首先,我们需要新建一个html页面,并在页面中写上一个div。并为div添加背景图片,为背景图片添加一些基本的样式。 然后,我们按下键盘上的F12,查看其在浏览器中的效果。效果肯定是页面中没有相应的背景图片,理由是我们做的是背景图片,无法将div撑起一定的高度。 既然不能撑起来,我们也不能单纯的为div设置高度,这样无法解决不同大小背景图片的问题,我们可以利用css中的伪元素::after或者::before 可以简单的解释一下,利用伪元素是将指定标签的前面或者后面的内容设为空,并设成块元素,并设定以百分比为单位的padding-bottom或者padding-top。以此撑开这个div。 另一种方法是,我们在有背景图片的div的内部再套一个div,然后为这个内部的div添加相应的样式,使得外层div可以被撑起来。 这里我采用的是和第一个相同的做法,为这个内部div设定内部边距上或者下都可以。同样是以百分比作为单位。这样我们再次在浏览器中查看,就可以看到作为背景的图片了。 最后告诉大家一些注意事项,不管我们采用方法一还是方法二,都是设置的上下的内边距而不是外边距,并且要以百分比作为单位。 看了“怎么让div的大小随着背景图片的大小变大”的人还看了

Zigbee零基础教程(二)在模板工程上修改成想要的功能并使用HAL库(HAL库跑马灯为例)

Zigbee零基础教程(二)在模板工程上修改成想要的功能并使用HAL库(HAL库跑马灯为例) 前言一、官方提供文档以及模板目录?二、使用步骤1.相关点灯的HAL库API2.找官方提供的样例模板3.怎么驱动其他GPIO呢四个LED呢,控制风扇继电器呢? 现象 前言 协议栈安装好之后会有官方提供的文档,还有样本代码 一、官方提供文档以及模板目录? 有了HAL库就不需要看寄存器了,直接调用接口即可 二、使用步骤 1.相关点灯的HAL库API 介绍很详细,英文看不懂怎们办!百度呗! 2.找官方提供的样例模板 SampleApp够用 复制一份,然后改代码 注意写在osal_start_system(); // No Return from here 前,加while(1)先不进入osal 代码如下(示例): int main( void ) { //。。。。。。。此处以上官方提供的关键代码如下 WatchDogEnable( WDTIMX ); #endif HalLedSet(HAL_LED_ALL,HAL_LED_MODE_ON); while(1) { HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE); MicroWait(0xffff); HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE); MicroWait(0xffff); HalLedSet(HAL_LED_3,HAL_LED_MODE_TOGGLE); MicroWait(0xffff); } osal_start_system(); // No Return from here return 0; // Shouldn't get here. } // main() 3.怎么驱动其他GPIO呢四个LED呢,控制风扇继电器呢? 改呗进入板载配置文件! 代码如下,复制粘贴加个LED4即可(示例): * 1 - Green */ #define LED1_BV BV(0) #define LED1_SBIT P1_0 #define LED1_DDR P1DIR #define LED1_POLARITY ACTIVE_HIGH #if defined (HAL_BOARD_CC2530EB_REV17) /* 2 - Red */ #define LED2_BV BV(4) #define LED2_SBIT P1_4 #define LED2_DDR P1DIR #define LED2_POLARITY ACTIVE_HIGH /* 3 - Yellow */ #define LED3_BV BV(1) #define LED3_SBIT P1_1 #define LED3_DDR P1DIR #define LED3_POLARITY ACTIVE_HIGH /* 4 - 新加的 */ #define LED4_BV BV(1) #define LED4_SBIT 设置成想要控制的GPIO//P1_1 #define LED4_DDR P1DIR #define LED4_POLARITY ACTIVE_HIGH //往下找还有这里 \ /* Turn on cache prefetch mode */ \ PREFETCH_ENABLE(); \ \ HAL_TURN_OFF_LED1(); \ LED1_DDR |= LED1_BV; \ HAL_TURN_OFF_LED2(); \ LED2_DDR |= LED2_BV; \ HAL_TURN_OFF_LED3(); \ LED3_DDR |= LED3_BV; \ //新加的复制粘贴改就完了 HAL_TURN_OFF_LED4(); LED4_DDR |= LED4_BV; \ //继续往下找 * ----------- LED's ---------- */ //继续往下找 #if defined (HAL_BOARD_CC2530EB_REV17) && !

vue-cli3打包上线时遇到的坑(打包后页面空白、接口404、进入二级页面刷新404)

前言: 刚开始以为打包上线挺简单的,不就是 cnpm run build 打包然后把代码往服务器一扔吗。但是打包后发现遇到了各种问题,首先就是页面空白的问题,页面空白有两个原因,第一个是因为路径找不到造成的页面空白,第二个是渲染问题。其次就是后台接口404错误。在这里,我会建一个新的vue3项目,来重新走一遍打包时遇到的坑。 vue-cli3打包上线后页面空白 vue-cli3打包上线后调用后台接口404错误 首先,创建一个新项目,创建项目过程太过简单,毕竟是基础,就不写在这里了,我创建一个新项目名为 test01,创建成功后的项目如下: 接下来打开终端,输入 cnpm run serve 运行这个项目查看效果: 现在来进入正题:项目打包。 首先,在终端输入 cnpm run build 进行项目打包,等待片刻后提示如下: 打包成功后,会在项目文件夹下创建一个新的文件夹:dist 在这个文件夹下就是test01这个项目打包后的内容了,内容如下: 接下来我们双击index.html看一下效果: 现在,我们发现打开后页面是一片空白,打开F12查看控制台 可以发现,报错找不到文件,后面的路径显示的是/F:/css/与/F:/js/。看到这里应该明白原因了,这是路径错误,我们想要的路径是从打包后的项目根目录查找,也就是从dist文件夹下查找,但是这里却是从/F:查找,也就是说是从绝对路径查找,并非相对路径,这个问题解决方法就是,回到test01项目,在test01项目下新建一个vue.config.js文件,默认是不存在这个文件的。创建成功后,在vue.config.js中输入: module.exports = { publicPath: './' } 重新打包:cnpm run build 再来看一下效果: dist文件夹下的index.html直接打开控制台没有报错了,页面也完整显示了。 但是呢!有个地方让我很难受!那就是url里面有个#,而且这个#在进入下一级子页面时还会卡在前面: 在经过度娘的调教下,我进入了 test01项目下的 src/router/index.js 文件下的 new VueRouter{} 下,加入了下面一句代码: mode:'history' 这里可以直接输入 cnpm run serve 运行查看效果,在这里就不要打包看效果了 现在这样就舒服多了,但是呢,知道我为什么说不打包看效果吗,直接上图: 就两个按钮在这里了,其他的样式什么的全都没了,控制台也没有错误,这就是我之前说的渲染问题,因为用的history模式,url是更美观了,开发模式下也没有什么问题,但是打包后直接在index.html打开就会什么都看不到,不仅如此,现在这样放到服务器上也会是一片空白。所以现在需要回到项目中,继续在index.js中的 mode:'history' 前添加一行代码 base:'/dist' 。: base:'/dist' 添加这一行的目的是为了给模式为history时提供一个路径,vue项目打包后,会生成一个dist文件夹,而这里的/dist就是指的打包后生成的dist文件夹,不添加这个路径,在使用history模式的就无法获取到正确的地址,无法渲染网页。当然,这个dist也可以改成别的,比如我在index.js中修改base的内容为/abc,那么在打包完成后,就需要将dist文件夹的名字重命名为abc,否则页面还是无法渲染。 我打包后的vue项目是放在nginx服务器上发布的,nginx可以在这里下载: http://nginx.org/en/download.html 在Mainline version下下载对应版本的nginx下载就行,我是windows系统,所以下载的nginx/Windows-1.17.6 ,可直接点击下载,下载成功直接解压缩,配置一下环境变量就行了,nginx目录如下: 启动可以双击nginx.exe,或者在命令行进入到nginx文件夹下输入start nginx,在这里我要提醒一下,直接双击nginx.exe是一直启动,除非你主动去关闭它或者电脑关机,否则会一直启动,哪怕你把dos窗口关闭,它也不会结束进程,所以如果只是测试用的话,建议还是打开命令行输入start nginx。 另外,再补充下nginx的一点小知识,nginx默认启动端口是80,如果你想修改默认启动端口,那么请移步到nginx文件夹下找到conf文件夹,找到nginx.conf文件,打开这个文件,找到server{},下面有一个listen,表示端口监听,我这里已经修改为了8888,保存就行了,在修改这个配置文件后,需要重启nginx,可以在命令行输入nginx -s reload。补充一下关闭nginx的命令:nginx -s stop

Fatal error:the launch timed out and was terminated

在windows 上运行 "cuda by example" 第四章的程序时,出现这个问题。 原因在于:windows 为了提升用户体验,在检测到GPU长时间没有响应时,会preempt kernel的运行程序。系统的解释参照如下几篇文章: https://forums.developer.nvidia.com/t/fatal-error-the-launch-timed-out-and-was-terminated/42339 https://www.impetus.no/blog/hrf_faq/i-get-the-error-message-the-launch-timed-out-and-was-terminated-whats-wrong/ 解决方案参考如下几篇文章: https://blog.csdn.net/weixin_30736301/article/details/96516121 https://docs.microsoft.com/en-us/windows-hardware/drivers/display/tdr-registry-keys

LocalDateTime接收页面date

1. 数据库类型 数据库采用datetime类型 2. 实体类类型 因为采用mybatis的自动生成代码,会默认将datetime生成LocalDateTime 3.实体类加上两个注解 @DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”) 4. 页面 页面数据:2021-01-27 21:37:50 总结: 当时查阅了好多博客 只加了一个注解,每次运行都会出错: Field error in object 'article' on field 'issueDate': rejected value [2021-01-27 21:37:50]; codes [typeMismatch.article.issueDate,typeMismatch.issueDate,typeMismatch.java.time.LocalDateTime,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [article.issueDate,issueDate]; arguments []; default message [issueDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.time.LocalDateTime' for property 'issueDate'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.

docker alpine镜像中遇到 sh: xxx: not found

如题,在docker-compose 编排Go应用的时候alphine容器出现可执行文件不存在的问题。 猜测: 一:难道文件在容器中没有执行权限? 针对这个操作,我在command命令中加入了chmod 700 运行结果:not found … 二:由于可执行文件是通过volume映射过去的,莫非哪里出了问题导致容器中不存在该文件? 为了验证上面的想法于是在command命令中加上了ls -l,运行结果显示是存在该文件的。 三:莫非是alphine的问题?? 于是我直接将整个alphine镜像换成的golang,运行发现没有再报not fount异常。 这样基本就可以断定是alphine镜像的问题了,但是为什么会这样呢,经过一番搜索引擎操作,发现这样的原因: Alpine 使用的标准库与大多数发行版不同,它使用的是 musl libc,这个库相比于 glibc 更小、更简单、更安全,但是与大家常用的标准库 glibc 并不兼容。 我们知道正常的golang应用的编译一般上会将大部分的依赖打包进二进制文件,但是某些包是需要依赖系统标准库的,只要代码中有使用到这样类似的包,应用就会去调用系统中对应的库,Golang使用cgo(允许go调用c)机制去实现这样的调取过程。 解决办法 所以在知道原因后我们也就有些解决办法了。 一:不要直接使用alpine:latest镜像,而是使用官方给我们提供的golang:alpine版本(没有解决,照样会报not found异常-2021.6.14更新) 二:使用静态编译,静态编译将不使用动态链接库,所以可以在alpine:latest中使用。 三:增加软连接 mkdir /lib64 ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2 其实在第三点的时候我们知道musl跟glic是兼容的所以采取增加软连接后就可以使用。那么如何增加软连接呢,难道是在容器创建了之后像第三点一样进入容器手动创建?如果有多个那不是得麻烦死。所以最好的办法是我们使用Dockerfile创建一个符合要求的镜像,然后我们再使用这个二次创建的镜像来开发。如: //Dockerfile文件 FROM alpine:3.14 RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2 创建好Dockerfile文件后编译成镜像: sudo docker build -t my-alpine:v1.0 . 然后在docker-compose中使用 //docker-compose.yml文件 version: "3" services: app: image: my-alpine:v1.0 volumes: - /work/testmysql/:/app working_dir: /app command: .

Linux下实现FFmpeg+nginx(nginx-http-flv-module)搭建 RTMP&flv流媒体服务器

前言 因为有需要所以简单研究下监控视频直播流,需要把监控的(Onvif)协议通过硬盘录像机(RTSP)转成视频播放(RTMP)通过flv.js进行web直播,所以先从简单入手,走了不少坑,在此记录一下 建议有问题的话多看官方文档,文档地址在下面 先简单介绍下各种流媒体协议 RTMP(Real Time Messaging Protocol)是基于TCP的,由Adobe公司为Flash播放器和服务器之间音频、视频传输开发的开放协议。 HLS(HTTP Live Streaming)是基于HTTP的,是Apple公司开放的音视频传输协议。 HTTP FLV则是将RTMP封装在HTTP协议之上的,可以更好的穿透防火墙等。 Http_flv 对比 RTMP 这两个协议实际上传输数据是一样的,数据都是flv文件的tag。http_flv是一个无限大的http流的文件,相比rtmp就只能直播,而rtmp还可以推流和更多的操作。但是http有个好处,就是是以80http通信的,穿透性强,而且rtmp是非开放协议。 这两个协议是如今直播平台主选的直播方式,主要原因就是延时极低 关于Flv.js flv.js是B站开源的一款HTML5 Flash Video(FLV)播放器 官方文档:https://github.com/Bilibili/flv.js 搭建服务 一、环境准备 1.1、环境描述 服务器系统CentOS7.4(os:这两天的Centos新闻挺多啊,希望RockyLinux早点出来) 服务器:Nginx和nginx-http-flv-module模块作为推流服务端(之前是用的旧的nginx-rtmp-module,坑,nginx-http-flv-module具有nginx-rtmp-module所有功能) nginx-http-flv-module和nginx-rtmp-module的对比 推流端工具:FFmpeg 拉流端:h5+ng、VLC测试 视频转码:x264 重点文档,有问题可以查询这里,非常详细 nginx-http-flv-module的官方地址:https://github.com/winshining/nginx-http-flv-module/blob/master/README.CN.md 1.2、所需材料提前准备,如果后续步骤下载失败,可手动下载 1 . Nginx编译包:https://nginx.org/download/nginx-1.19.5.tar.gz 2 . Nginx所需模块nginx-http-flv-module:https://github.com/winshining/nginx-http-flv-module/archive/master.zip 3 . FFmpeg:http://www.ffmpeg.org/releases/ffmpeg-4.3.tar.gz 4 . x264: https://code.videolan.org/videolan/x264/-/archive/master/x264-master.zip 5 . nasm: https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.gz 如果以上仍下载失败,可以到百度网盘进行下载,如果需要新版本下载可留言 链接:https://pan.baidu.com/s/1S8lMmX2pi8GDM8pd-ehm8w 提取码:7cq6 1.3、所需依赖项,需提前装好 # yum install unzip -y # yum install gcc-c++ -y # yum install pcre pcre-devel -y # yum install zlib zlib-devel -y # yum install openssl openssl-devel -y # yum install yasm -y 注意:安装yasm的时候,可能会失败

Java EE大作业——基于Java EE的图书管理系统的设计与实现(二)

大二狗开始做Java EE大作业了,按照要求要编写开发文档。结合上个学期学的《软件工程导论》、《Java程序设计》和这个学期学的《数据库系统概论》、《软件需求工程》、《Java Web》来完成此次作业,顺带复习本学期学习的内容,以编写blog的方式记录开发历程。 由于个人能力有限,不敢保证文档的正确性,开发过程可能不会按照严格的规范进行,如果有大佬发现错漏的地方,敬请指出,不胜感激。 UML类图: (1)实体类 实体类对应数据库的表,除了构造方法和get/set方法等方法外最好不要再定义操作的方法 (2)操作类 数据库E-R图 数据库模型图 各类图的说明以后有空补充,下次准备更新数据字典和详细设计。 参考文献: 数据库的设计(E-R图,数据库模型图,三大范式) UML详细设计类图 最通俗易懂的UML类图详解及实例 图书管理系统--数据库表设计

什么,缺“Java项目经验”找不到工作?锋哥送你80个“项目经验”

很多学计算机小伙伴从校园刚出来,因为没有项目经验,找工作出出碰壁,尤其是普通大学大专和本科。今天锋哥送80个“Java项目经验”给你,无套路,谢谢; 看看下面的“惨剧”就知道: 没项目经验,找不到工作 没有项目经验,得不到面试机会 对于普通大学毕业的大专或者本科生,要想找份好实习单位或者工作,还真得搞点“项目经验”,至少能有面试机会,最终才能有工作机会; 经常有应届生找我,说“锋哥啊,给点项目经验啊,实在编不出来”; 今天“它来了”,一次性给你80个;(资源来自互联网) 截图几个大伙看看: 这里说明几点: 1,给“项目经验”仅仅是为了让大家参考学习,通过了解项目业务,然后结合自己所学知识,能够讲解出来,至少让面试官认为你还行,有培养价值; 2,如果时间足够,可以尝试自己实现业务功能,不一定全部实现,可以实现一部分; 3,这些“项目经验”,适合应届生,不适合中高级; CSDN下载地址(0积分白嫖系列): https://download.csdn.net/download/caoli201314/19598579 微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。

铜仁一中高考2021成绩查询,2019年高考各高中600分以上人数排名(2018年)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2006年高考 上一本(重点)分数线有311人,上本科分数线,778人。 2007年高考 (1)600分以上95人,其中理科82人,文科13人。 (2)上一本(重点)分数线有349人,其中理科290人,文科59人;上二本分数线600人,其中理科455人,文科145人。 2008年高考 (1)上一本(重点大学)分数线人数:399人(其中文科79人,理科304人,体育艺术16人),占参考人数的40.8%。二本分数线以上人数达686人,占参考人数的70.2%,本科分数线以上人数达891人,占参考人数的91.2%,专科以上人数占参考人数的99.5%; (2)其中600分以上有68人(文科28人,理科40人。 2009年高考 上一本(重点大学)分数线人数:447人(其中文科95人,理科335人,体育艺术17),占参考人数的46%;二本分数线以上人数达778人,占参考人数的81%。 2010年高考 (1)进入全省前100名的有6人; (2)600分以上28人(全区50人)。 (3)一本上线人数581人(其中文科130人、理科418人,体艺生33人),一本上线率55.5%;二本线以上人数928人(含体艺),二本以上上线率88.7%。 2011年高考 文科最高分631,全省排名10名,理科最高分652,全省排名16名;600分以上的18人(全区27人,其中文科8人,理科10人;一本上线637人,一本上线率60.66%;二本以上上线1010人,二本以上上线率96.2%。 2012年高考 600分以上63人,其中理科38人,文科25人(全市158人)。一本上线713人,上线率60.12%;二本上线1134人,上线率95.6%。 2013年高考:600分以上共63人(全市131人)。文科最高分644分,理科最高分642分;一本上线人数804人,其中文科173人,理科631人,一本上线率67%;二本以上上线人数1123,其中文科317人,理科806人,,二本以上上线率95%。 2014年高考:600分以上228人(占铜仁市434人的53%,理科123人,文科105人)。一本上线903人,一本上线率66.80%,其中理科717人,文科186人;二本以上1316人,二本以上上线率97.30%; 2015年高考:600分以上94人(占铜仁市一半,文科56人、理科38人),1人数学150单科排名全省第一。一本上线人数1063人,一本上线人数首次突破1000人大关。 2016年高考:600分以上262人(占铜仁市692人的37.9%,其中理科147人,文科115人)。一本上线1269人(一本上线率73%,理科969人,文科300人);二本以上1732人(本科上线率98%,理科1265人,文科467人)。理科最高分678,文科675; 2017年高考:600分以上165人(其中文科116人,理科49人,占铜仁市600分总人数396人的42%);全省前100名有6人。一本上线1353人,一本上线率74.1%,其中理科1078人,文科275人。本科以上上线1802人,本科以上上线率98.7%,其中理科1387人,文科415人。 不得不说,铜仁一中规模扩大了,高考成绩保持得也不错,去年参考人数接近2200人了,加上铜仁二中去年1880多人,在拥有两个大规模高中,成绩都不错,挺厉害的。未来继续把规模搞大,整到3000人一届就厉害了。

C语言-Day2

学习内容: 1. 变量的定义 程序可操作的存储区的名称。变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。 2.变量的赋值与初始化 3.关于scanf C 库函数 int scanf(const char *format, …) 从标准输入 stdin 读取格式化输入。 4. 常量与变量 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。 常量就像是常规的变量 变量就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表 5.浮点常量 由整数部分、小数点、小数部分和指数部分组成 6. 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号 7. 运算符的优先级 8. 交换变量 9. 求平均数 学习时间: 上午11点–下午4点 学习产出: ​ 1.找钱 #include<stdio.h> int main() { int jiage=0; printf("输入金额(单位:元):"); scanf("%d",&jiage); int change=100 - jiage; printf("找%d元",change); return 0; } 2.scanf的用法 #include<stdio.h> int main() { int a=0; int b=0; scanf("%d,%d",&a,&b); printf("%d,%d\n", a , b ); return 0; } 3.

目标检测算法——YOLOv1

文章目录 1.YOLOv1简介2.YOLOv1结构3.YOLOv1损失函数4.YOLOv1总结 1.YOLOv1简介 yolov1全称: You Only Look Once:Unified, Real-Time Object Detection,论文链接 有博主将其进行了翻译,论文翻译:翻译链接 YOLOv1也是目标检测网络中one steap的网络。在pascal voc2007的测试数据集的效果为63.4mAP,在448x448的图像上进行推理处理的时延为45FPS。 SSD在pascal voc2007的测试数据集的效果为74.3mAP,达到59mAP,详细见:目标检测算法——SSD,所以其实相比SSD后,yolov1的效果不算是那么好的,但是和当时的RCNN来说,其确实更快。 思想 将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object。(paper中S设定为7) 每个网格要预测B个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测C个类别的分数。(paper中B设定为2,而爬山al voc数据集中有20个类别,所以C为20) 解析: 为了在Pascal VOC上评估YOLO,我们使用S=7,B=2。Pascal VOC有20个标注类,所以C=20。我们最终的预测是7×7×30的张量。 confidence 是yolov1中首次提出来的概念,置信度分数反映了该模型对那个框内是否包含目标的信心,以及它对自己的预测的准确度的估量。在形式上,我们将置信度定义为。如果该单元格中不存在目标,则置信度分数应为零。否则,我们希望置信度分数等于预测框(predict box)与真实标签框(ground truth)之间联合部分的交集(IOU)。 对于预测的bounding box的四个数值中,(x,y)坐标表示边界框的中心相对于网格单元的边界的值,而宽度和高度则是相对于整张图像来预测的。 其中(x,y)的预测值是被限定在对于的cell中的,其不会超出那个框格,所以(x,y)的数值会是0-1之间。而由于(w,h)也是相对于整个图像的预测值,所以其数值也会是0-1之间。也就是说,就是让标注的目标的中心点的那个对应网格,去预测这个目标的中心点与宽高。 每个网格单元还预测C个条件类别概率,这些概率以包含目标的网格单元为条件。不管边界框的的数量B是多少,每个网格单元我们只预测一组类别概率。在测试时,我们把条件类概率和每个框的预测的置信度值相乘, 它给出了每个框特定类别的置信度分数。这些分数体现了该类出现在框中的概率以及预测框拟合目标的程度。 2.YOLOv1结构 没有标注s,stride默认值为1。 经过一系列的卷积特征提取之后会通过一个展平处理通过全连接层,然后再将输出的1470维的向量通过reshape变成一个7x7x30的特征矩阵。 其中这个7x7就对应着将图像分成7x7份, 然后每一个grid cell预测的30个参数,其中的参数包含两个预测框的具体位置(4个)与置信度(1个),还有每个类别分数(20个),总共30个参数。 3.YOLOv1损失函数 yolov1中的损失包含bounding box位置回归损失、confidence置信度损失,classes分类损失,计算损失过程中主要使用误差方和来处理。 1)bounding box损失 需要注意,宽和高的损失因为对于小目标和大目标的损失不能一概而论。相同的相对位置的损失对小目标来说损失应该更大,而对大目标来说损失应该没有小目标的损失那么大,如图所示: 而为了不出现在同样的偏移情况下小目标的差值与大目标的差值相同这样的状况,作者使用了开方差来计算损失。 边界框损失就是预测边界框与真实标注边界框的损失 2)confidence损失 对于置信度的损失,就直接使用了真实值-预测值来计算。其中obj表示计算的是正样本的损失,此时C^^i = 1;而noobj表示计算的是负样本的损失,此时 C^^i = 0。 置信度损失就是是否包含了检测目标的损失。 3)classes损失 对于类别损失同样也是平方和去计算误差的。 类别损失就网格的类别与真实类别的损失。 概括: 损失由三部分组成,分别是:坐标预测损失、置信度预测损失、类别预测损失。使用的是差方和误差。需要注意的是,w和h在进行误差计算的时候取的是它们的平方根,原因是对不同大小的bounding box预测中,相比于大bounding box预测偏一点,小box预测偏一点更不能忍受。而差方和误差函数中对同样的偏移loss是一样。 为了缓和这个问题,作者用了一个比较取巧的办法,就是将bounding box的w和h取平方根代替原本的w和h。定位误差比分类误差更大,所以增加对定位误差的惩罚,使λ c o o r d =5。在每个图像中,许多网格单元不包含任何目标。训练时就会把这些网格里的框的“置信度”分数推到零,这往往超过了包含目标的框的梯度。从而可能导致模型不稳定,训练早期发散。因此要减少了不包含目标的框的置信度预测的损失,使 λ n o o b j=0.

2021年铜仁一中中学高考成绩查询,2021年铜仁高考状元名单公布,铜仁文理科高考状元是谁...

每年高考放榜的时候,高考状元总是一大热门话题。教育部会同国家教育统一考试工作部际联席会议成员单位召开的电视电话会议上,教育部党组书记、部长陈宝生再次强调,严禁炒作“高考状元”“高考升学率”,一经发现将严肃处理。主要包括:不得在各类新闻媒体上报道升学率、升学人数、升入重点高校及一本高校等情况。所以在此高考助手网提醒各位读者要理性看到高考状元。那么2019年铜仁高考状元是谁呢?铜仁文科状元是谁?铜仁理科状元是谁?本文小编为你介绍。 一、2019年铜仁高考文科理科状元名单 由于截至本文小编发稿前,2019年铜仁高考状元名单暂无公布,稍后我们第一时间更新。 二、2018年铜仁高考状元名单及分数 6月23日中午获悉,玉屏信用社农村业务部经理唐少明的女儿唐川以705的高分摘冠,荣夺铜仁市文科状元。这也是继玉屏联社多位员工子女连续多年高考取得优异成绩又一喜事,联社第一时间送上祝贺。 三、2017年铜仁高考状元名单及分数 在2017年高考中,我校学生再创佳绩,600分以上165人,一本线以上1353人,本科线以上上线1802人。对同学们取得的优异成绩表示热烈祝贺!现将截至2017年8月7日的录取名单公布如下。(录取名单以碧江区招办发给学校的数据为准,并且在不断更新中。) 文史、理工类 序号班级姓名科类录取院校名称学校类别 130刘志雄1.文史北京大学985 21戴峰飞越5.理工北京大学985 31王嘉谊5.理工伦敦大学学院世界名校 四、2016年铜仁高考状元名单及分数 铜仁市文科第一名: 龙腾辉,701分。铜仁市民德衡民中学(民办中学)。 铜仁市理科第一名: 杨栋,684分。印江县民族中学。 铜仁市文科第二名: 张胜,678分。思南中学。 铜仁市理科第二名: 邓江兰,678分。铜仁一中。 铜仁市文科第三名: 杨秋芳,675。铜仁一中。 铜仁市理科第三名: 陈楷元,676。铜仁一中。 吴鑫午,676。松桃县二中。

2021年铜仁二中高考二本成绩查询,铜仁第二中学2021年排名

学校好与不好是需要家长去了解的,但是很多家长都不知道如何区分一所学校的好不好,总是一头雾水的在网上找资料,而小编就准备了铜仁第二中学排名,这样家长们就能一眼看出那所学校好。由于铜仁第二中学今年排名暂未公布,同学们可以参考参考2016年铜仁地区重点高中排名: 2016年铜仁地区重点高中排名 排名 学校名称 人气 所在省 所在市 类型 1 贵州省思南中学 2264 贵州 铜仁地区 省级示范高中 2 石阡县民族中学 1896 贵州 铜仁地区 省级示范高中 3 沿河民族中学 1458 贵州 铜仁地区 省级示范高中 4 松桃民族中学 1441 贵州 铜仁地区 省级示范高中 5 贵州省铜仁地区德江县第一中学 1275 贵州 铜仁地区 省级示范高中 6 铜仁市第二中学 1196 贵州 铜仁地区 省级示范高中 7 石阡中学 1183 贵州 铜仁地区 省级示范高中 8 印江自治县民族中学 1181 贵州 铜仁地区 省级示范高中 9 铜仁地区民族中学 1159 贵州 铜仁地区 省级示范高中 10 铜仁第一中学 1146 贵州 铜仁地区 省级示范高中 铜仁第二中学高一新生入学须知

ffmpeg学习------avcodec_find_encoder() 和 avcodec_find_decoder()

avcodec_find_encoder() 用于查找 FFmpeg 的编码器,avcodec_find_decoder() 用于查找 avcodec_find_encoder() 用于查找 FFmpeg 的编码器,avcodec_find_decoder() 用于查找 FFmpeg 的解码器,声明都位于 libavcodec\avcodec.h。其原型如下: // 函数的参数是一个编码器的ID,返回查找到的编码器(没有找到就返回NULL)。 AVCodec *avcodec_find_encoder(enum AVCodecID id); // 函数的参数是一个解码器的ID,返回查找到的解码器(没有找到就返回NULL)。 AVCodec *avcodec_find_decoder(enum AVCodecID id);

三年工作经验——Java后端社招面试经历(有赞、网易、华为等)

今年互联网形式依旧严峻,再次爆发几次大规模裁员潮。我决定把这篇文章分享出来帮助那些对前途感到迷茫的朋友。根据粉丝投稿的真实经历改编 在现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱,只是被互联网的高薪吸引,毕竟技术岗位非常枯燥,不仅要面对奇奇怪怪的需求,还要不停的充实自己避免被淘汰。所以想要吃好技术这碗饭并不容易。在这给还在找工作的朋友几点建议以及文末还有一些免费的JAVA架构进阶面试笔记及学习资料! java基础知识真的要扎实,面试准备阶段不像考试有题可压,任何一个问题都有可能都会问到,所以,对自己负责,欺骗自己等于拿自己的事业开玩笑。大部分的面试官不是真的要问倒你,他们只是想看看你的解决思路和套路是否能够灵活多变,问到一个你不知道,你就说不知道了,那这个还怎么继续。所有的问题都有相通性,找到相似的场景扩展自己的思路。深入浅出!大部分的面试官都喜欢刨根接底的问,从简单的应用到底层原理再到某一个点,不要仅仅是知道了解,要有一定深度的学习关于薪资,八仙过海各显神通,看你自己能力,只要你有能力,要多少还不是你自己说了算么! 有赞: 一面 hashMap原理,put和resize过程线程池有哪些类型,concurrentHashMap分段锁原理,java8和java7实现的区别B-树和B+树区别,数据库索引原理,组合索引怎么使用?最左匹配的原理spring生命周期,几种scope区别,aop实现有哪几种实现,接口代理和类代理会有什么区别 二面 项目介绍斐波那契数列非递归实现短URL实现 三面 HR+主管你现在做的事情,为什么要离职?反正对你性格生活薪资全面了解 今日头条: 一面 自我介绍,做的项目价值,架构设计,给你一个集群你会怎么分布,考虑哪些因素,容灾、负载均衡让你来设计咸鱼,你会怎么设计?模型设计linux常用指令 二面 算法在线编程项目,主要做了什么,项目中碰到的问题有哪些,都市怎么解决?你觉得哪个项目是最有挑战的java多线程,线程池的选型,为什么要选这个,底层实现原理 三面 你最熟悉的项目,做了什么,为什么这么做,怎么体现你项目的价值让你来推广广告,你会怎么设计?java基础问了些,JVM内存模型 G1和CMS垃圾回收器如何中断线程,await和sleep区别设计一个秒杀系统spring生命周期,几种scope区别 四面 跟上面差不多 五面 主管面,主要问项目,然后说下他们在做什么 六面HR 期望薪资,为什么要离职,现在的级别,会考北京的原因 网易: 一面 RPC原理,netty原理hashMap原理redis缓存回收机制,准备同步,哨兵机制要统计10分钟内订单的亏损,你会怎么设计(strom窗口模式)项目:你做了什么,为什么要这么做,用了什么技术要解决什么问题 二面 分布式缓存redis原理,zookeeper锁是如何实现的分布式缓存读写不一致问题java线程你是怎么使用的数据库是如何调优的git rebase命令发生了什么讨论项目 三面HR 薪资,为什么要离开,级别 华为 一面 结构数据库和非结构数据库区别,你了解的非结构数据库有哪些频繁的增删数据量某个表,数据库最终数据只有几万或者更少,为什么查询会变慢数据如果出现了阻塞,你是怎么排查的,top和jstack命令用过没,jstack命令的nid是什么意思,怎么查看java某个进程的线程大数据算法聚类算法有哪些写一个算法判断某个数是2的n次方说你最熟悉的项目 二面HR 薪资级别,你是怎么抗压的,平时喜欢做什么,对加班什么看法 三面业务主管 你想做什么,会给你介绍他们部门做的东西你自己做的项目,怎么设计的 根据以上面试题小编整理出一些核心知识,同时也是面试时面试官必问的知识点,篇章也是包括了很多知识点 由于分享的文档里的细节内容实在过多所以只编辑了部分知识点的章节粗略的介绍下,每个章节小节点里面都有更细化的内容!以下就是部分章节目录,由于篇幅限制目录上的详细讲解也无法完全列出,感兴趣的朋友可以转发关注一下点击https://shimo.im/docs/wP9txRcVRyDcQWKx免费获取 Java架构进阶面试及知识点文档笔记 这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理 Java分布式高级面试问题解析文档 其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等! 互联网Java程序员面试必备问题解析及文档学习笔记 Java架构进阶视频解析合集 最后 送大家一个小福利,点击领取Java全套进阶资料 料](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)** [外链图片转存中…(img-s1oxeYW1-1623421843249)] [外链图片转存中…(img-xk7zy1y1-1623421843251)]

云厂商视角安全

1. 公有云安全(AWS、Azure、Google) 早期:AWS, 租户层面安全 AWS安全模块化,安全最佳实践,客户的安全体系 AWS组织管理、VPC的安全架构管理、美国国防部做的SCCA安全架构 云平台的SDL和内部的安全架构 Google的底层安全架构非常完善,虚拟化安全体系包括: KVM漏洞挖掘、QEMU代码重构、业界第一个重构QEMU的沙箱、gVisor、业界第一个可信实例、Titan芯片、BeyondCorp、BeyondProd、 Zero Touch Prod、Zero Touch Network等等一些底层的安全实现思路(基础设施安全) Azure安全收入已经100亿美金, Azure会减少跟AWS的收入差距甚至超越AWS. Azure的安全架构整体安全思路和架构还是比较偏传统厂商,内部的网络安全架构、云防火墙的架构, Azure这一架构符合Azure ToB、 ToG的业务场景, 所以做的架构比较传统。 Azure的安全已经开始发力,Azure AD Conditional Access 、 Office 365安全、 Azure Active Directory、微软终端安全、Sharepoint Online、Exchange Online、 Microsoft Teams安全、Azure Information Protection、 Azure Defender系列,都有强力的客户需求, 这些需求都非常贴近实际需求的, 大部分的客户上云之后必须要跟Azure Active Directory 进行融合, 融合的过程中需要Azure AD Conditional Access 和针对SaaS的CASB等认证和DLP的需求。 另外上云之后文档、邮箱都开始使用Azure Sharepoint Online和Exchange Online等,OnPermises域和Azure Active Directory的域打通, 必须使用Azure Defender For Identity。Azure之后对于企业办公包括聊天、文件处理、文件共享等办公场景,还有终端安全保护、云上的DLP、CASB、统一的身份认证等都非常完善了, AAG的云特点讨论云安全架构和云安全技术的两点。 云安全面临的风险: 1、国家级对抗风险 其实从我个人角度我发现,国家级对抗已经特别关注云安全了,不管是SolarWinds针对微软的攻击(窃取Azure部分少量核心代码)还是从一些公开途径了解到的AWS的一些安全防护思路(假设美国也会攻击、其他国家也会攻击)的思路来做的全链路加密(针对光纤进行物理、链路层、应用层加密)、检测针对监听光纤的行为和动作进行告警,安全团队进行应急响应。 因为云承载了大量核心的客户数据,这些数据是客户甚至一个国家的重要资源,所以美国一直在打压中国不能让中国的云厂商在美国落地生根,发展壮大。如果能针对云平台进行控制,那影响的后果绝对非常大的,云上面承载客户的数据太多了,还包括政府的数据(疫情、疾控等数据)、美国国防部的DIB计划(武器数据)、国家人力情报(OPM等人力数据)、高科技企业(微软、Amazon)等。 所以对于云厂商来说每年数十亿的投入、大量的顶尖安全人才、核心的云安全技术都是云厂商特别关注的,说真的云和云安全更需要创新技术、更渴望顶尖的安全架构、更渴望有理想的追梦和同路的技术大牛、更渴望客户提出更高的安全要求、更渴望把技术做深入解决客户面临的APT攻击,保证国家新基建数字化转型过程中的关键基础设施的安全增强和落地。 2、上云后面临的风险 ① 企业上云后的云侧风险 云上安全风险是企业上云之后,混合云环境下面临的巨大风险,包含AK凭证风险、云上默认配置导致的风险、云厂商自身的信任问题导致的风险;

2021安徽舒城中学高考成绩查询,2021安徽省地区高考成绩排名查询,安徽省高考各高中成绩喜报榜单...

怀宁中学 芜湖 2017年芜湖市高考文科头名是来自于芜湖师大附中的唐逸云,高考成绩653分。 2017年芜湖市高考理科头名是来自于芜湖师大附中的茅志鹏,高考成绩676分。 师大附中 芜湖一中 淮南 淮南二中文科考生最高分631(市应届生第一名),理科考生最高分662(市第一名) 蚌埠市 蚌埠市2017年高考文科状元出自蚌埠二中,理科状元出自怀远一中。 蚌埠二中的潘雨欣,文科高考分数达645分获得全市文科第一名,怀远一中的沈宇翔,理科高考分数达676分获得全市理科第一名。 淮北 淮北一中文科实验班的张欣阳以总分652分的成绩(语文117分,数学146分,英语143分,文科综合246分),在全省排名第五,十拿九稳获得淮北“文科状元”的桂冠。 马鞍山 马鞍山二中 屠润平 701 安徽省2017年高考理科全省第二名 陈远哲 693 安徽省2017年高考理科全省第五名 黄山 2017年高考黄山市文理科第一名考生都出自黄山市屯溪一中。 理科第一名方言同学,总分693分,其中外语150分满分。 文科第一名程雨倩同学,总分640分。 铜陵 铜陵中学 浮山中学 枞阳已划到铜陵,所以浮山中学归铜陵了,安庆有点依依不舍啊。 宿州 未找到相关信息。 六安 2017年六安市高考文科最高分656分,来自霍山中学蒋文锦(全省第二);2017年六安理科最高分680分,来自舒城中学龙凯 。 滁州 2017年安徽高考滁州市文、理科最高分揭晓,明光中学的万义文以646分成为全市文科最高分 明光中学曾在2010年因违规补课被省教育厅撤销省示范高中称号,2012年恢复称号,后再2016年8月份再次违规组织补课,又被撤销其省示范高中称号,不过名誉是虚的,实力才是真的,明光中学,厉害! 滁州中学的王祥鹤以676分摘得全市理科桂冠。 亳州 亳州市今年高考成绩的文科最高分为亳州一中高三(31)班的秦文慧,总分645;理科最高分为涡阳一中高三理(18)班的李飞强,总分659分。 宣城 郎溪中学李文傲同学和宁国中学齐志超同学以总分669分并列宣城市今年高考理科第一名。 宁国中学徐梦阳同学以总分640分位列宣城市文科第一名。 池州 2017年高考文理状元均花落池州一中。其中,凌欣洁同学以683分获得池州市理科第一名,檀少俊同学以639分获得池州市文科第一名。

禁用Windows Defender Antivirus Service

💫1. 问题描述 无意间看到: 从名字上就可以看出来,Windows Defender Antivirus Service服务是一个防止病毒的,但是偶尔会出现高cpu占用的情况 💢2. 解决方案 2.1 官方社区回答 点击这里 系统出现Windows Defender进程占用CPU的问题,这说明Windows Defender应用正在对您的计算机进行操作维护,后台运行进程可能会导致CPU出现占用高的问题. 可以耐心等待Windows Defender进程后台运行完成,或直接打开Windows Defender应用进行全盘扫描,或直接结束掉这个进程, 结束进程时,提示 可以“Win+R”打开运行,键入:gpedit.msc,打开本地组策略编辑器, 找到:计算机配置>>管理模板>>Windows组件>>Windows Defender防病毒程序, 启用“关闭Windows Defender防病毒程序”的项 2.2 网友智慧 2.2.1 借助小工具/软件关闭 点击这里 使用Defender Control软件对Windows Defender快速关闭 2.2.2 自己操作注册表等 参考:禁用Windows Defender Antivirus Service,让你文件正常运行

Emerging Properties in Self-Supervised Vision Transformers(2021)

[paper] Emerging Properties in Self-Supervised Vision Transformers [code] facebookresearch/dino 摘要 在本文中,我们质疑自我监督学习是否为视觉变压器(ViT)[18]提供了与卷积网络(convnets)相比脱颖而出的新属性。除了使自我监督方法适应这种体系结构特别有效的事实之外,我们还做出以下观察:首先,自我监督的ViT功能包含有关图像语义分割的明确信息,而对于监督的ViT来说,这显然不明显, 也没有卷积网。其次,这些功能也是出色的k-NN分类器,使用较小的ViT在ImageNet上的top-1达到78.3%。我们的研究还强调了动量编码器[31],多作物训练[10]以及在ViT上使用小补丁的重要性。我们将研究结果实施为一种简单的自我监督方法,称为DINO,我们将其解释为无标签的自我蒸馏形式。通过使用ViT-Base进行线性评估,在ImageNet上达到80.1%的top-1,我们展示了DINO和ViT之间的协同作用。 介绍 变压器[67]最近出现,可以替代卷积神经网络(convnets)进行视觉识别[18、66、80]。它们的采用与自然语言处理(NLP)启发的训练策略相结合,即对大量数据进行预训练并对目标数据集进行微调[17,53]。最终的视觉变形器(ViT)[18]与卷积网络相比具有竞争优势,但是,它们还没有比卷积网络带来明显的好处:它们在计算上要求更高,需要更多的训练数据,并且它们的功能没有表现出独特的性能。 在本文中,我们质疑变压器在视觉上的成功是否可以通过在他们的训练前使用监督来解释。我们的动机是,成功实现NLP的主要因素之一是使用自我监督的预训练,形式是BERT [17]中的紧密过程或GPT [53]中的语言建模。这些自我监督的预训练目标使用句子中的单词来创建借口任务,这些任务提供比预测每个句子单个标签的监督目标更丰富的学习信号。类似地,在图像中,图像级监督通常将图像中包含的丰富视觉信息减少为从几千个类别的对象的预定义集合中选择的单个概念[58]。 尽管NLP中使用的自我监督的前置任务是特定于文本的,但许多现有的自我监督方法已在具有卷积网络的图像上显示了它们的潜力[10、12、28、31]。它们通常具有相似的结构,但具有不同的组件,旨在避免琐碎的解决方案(崩溃)或提高性能[15]。在这项工作中,受这些方法的启发,我们研究了自我监督的预训练对ViT功能的影响。特别令人感兴趣的是,我们发现了受监督的ViT或卷积网络都没有出现的几个有趣的属性: 自我监督的ViT功能明确包含场景布局,尤其是对象边界,如图1所示。在最后一个块的自我关注模块中可以直接访问此信息。自我监督的ViT功能在没有任何微调,线性分类器或数据增强的情况下,使用基本的最近邻分类器(k-NN)尤其出色,在ImageNet上达到了78.3%的top-1准确性。 分割掩码的出现似乎是跨自我监督方法共享的属性。然而,仅当结合某些要素(例如动量编码器[31]和多作物增强[10])时,k-NN的良好性能才会出现。我们研究的另一个发现是,将较小的补丁与ViT配合使用对于提高最终功能质量的重要性。 总体而言,我们对这些组件重要性的发现促使我们设计了一种简单的自我监督方法,可以将其解释为一种无标签的知识蒸馏形式[33]。产生的框架DINO通过使用标准的交叉熵损失直接预测由动量编码器构建的教师网络的输出,从而简化了自我监督的训练。有趣的是,我们的方法只能对教师的输出进行居中和锐化,以避免崩溃,而其他流行的组成部分,例如预测变量[28],高级归一化[10]或对比损失[31],则在稳定性或稳定性方面几乎没有增加任何益处或表现。尤其重要的是,我们的框架非常灵活,可以在卷积网络和ViT上工作,而无需修改架构,也无需调整内部标准化[56]。 我们通过以小补丁的ViT-Base优于ImageNet线性分类基准的以前的自我监督功能,以80.1%的top-1准确性,来进一步验证DINO和ViT之间的协同作用。我们还通过将最先进的技术与ResNet-50架构进行匹配,确认了DINO可与卷积网络一起使用。最后,我们讨论了在计算和内存容量有限的情况下将DINO与ViT结合使用的不同方案。特别是,使用ViT训练DINO仅需两台8-GPU服务器,即可在3天之内达到ImageNet线性基准测试的76.1%,该性能优于基于可比较大小的卷积网络的自我监督系统,并且显着降低了计算需求[10,28]。 相关工作 自我监督学习 关于自我监督学习的大量工作着重于区分实例分类[12、19、31、70]的判别方法,该方法将每个图像视为不同的类别,并通过将它们区分为数据扩充来训练模型。但是,明确学习分类器以区分所有图像[19]并不能很好地缩放图像的数量。Wu等[70]建议使用噪声对比估计器(NCE)[30]来比较实例,而不是对它们进行分类。这种方法的一个警告是,它需要同时比较大量图像中的特征。实际上,这需要大批量[12]或存储库[31、70]。有几种变体允许以聚类的形式对实例进行自动分组[2、8、9、25、34、40、71、77、82]。 最近的工作表明,我们可以在不区分图像的情况下学习不受监督的功能。特别有趣的是,Grill等[28]提出了一种称为BYOL的度量学习公式,其中通过将特征与动量编码器获得的表示进行匹配来对特征进行训练。已经表明,像BYOL这样的方法即使没有动量编码器也可以工作,但会降低性能[15,28]。其他一些工作也呼应了这个方向,表明人们可以训练匹配它们的特征到 l 2 l_2 l2​超球体上的均匀分布[6]或使用增白[22,78]。我们的方法是从BYOL中汲取灵感的,但是在相似度匹配损失方面却有所不同,并且为学生和老师使用了完全相同的体系结构。这样,我们的工作就完成了BYOL发起的自我监督学习的解释,这是一种没有标签的中庸教师自我提炼的形式[62]。 自我训练和知识升华 自我训练旨在通过将少量的初始批注传播到大量的未标记实例来提高要素的质量。可以使用标签[39、75、76]的硬分配或使用软分配[73]来完成此传播。当使用软标签时,该方法通常被称为知识提炼[7,33],并且主要用于训练小型网络以模仿大型网络的输出以压缩模型。谢等[73]最近表明,蒸馏可以用于在自训练管道中将软伪标签传播到未标记的数据,从而在自训练和知识蒸馏之间建立了必不可少的联系。我们的工作建立在这种关系的基础上,并将知识提炼扩展到没有标签可用的情况。先前的工作还结合了自我监督学习和知识提炼,从而实现了自我监督模型压缩[24]和性能提升[13,45]。但是,当我们的老师在培训过程中动态建立时,这些作品依赖于受过培训的固定老师。这样,知识提纯而不是被用作自我监督式预训练的后处理步骤,而是直接转化为自我监督的目标。最后,我们的工作还涉及到协作[1],即学生和教师拥有相同的体系结构,并在培训过程中使用蒸馏。然而,协同教学中的教师也是从学生身上提炼出来的,而在我们的工作中则是用学生的平均动量来更新的。 方法 SSL与知识蒸馏 用于这项工作的框架 DINO 与最近的自我监督方法具有相同的整体结构 [10、15、12、28、31]。然而,我们的方法与知识蒸馏 [33] 也有相似之处,我们在这个角度下呈现它。我们在图 2 中说明了 DINO,并在算法 1 中提出了一个伪代码实现。 知识蒸馏是一种学习范式,我们训练学生网络 gθs 以匹配给定教师网络 gθt 的输出,分别由 θs 和 θt 参数化。给定输入图像 x,两个网络都输出 K 维的概率分布,用 Ps 和 Pt 表示。概率 P 是通过使用 softmax 函数对网络 g 的输出进行归一化得到的。 更确切地说, τs > 0 是控制输出分布锐度的温度参数,类似的公式适用于温度为 τt 的 Pt。给定一个固定的教师网络 gθt ,我们通过最小化交叉熵损失 w.

VNC SERVER 安装

1. 用root用户身份运行以下命令 yum install tigervnc-server 2. 停用防火墙 systemctl stop firewalld.service systemctl disable firewalld.service 3. run服务 which vncserver 结果:/usr/bin/vncserver /usr/bin/vncserver 2. 停用防火墙 VNC SERVER 配置: 1. 创建一个新的配置文件,以第一个连接为例(也可以同时开启多个连接,修改数字即可。类似windows的多用户连接),方法如下: cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:2.service 2. 查看以上创建的配置: ls /lib/systemd/system 3. 编辑配置文件/lib/systemd/system/vncserver@:1.service. 用你需要连接的用户名代替<USER>, 一般建议第一个连接给root用户。 vi /lib/systemd/system/vncserver@:1.service [Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking # Clean any existing files in /tmp/.X11-unix environment ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/sbin/runuser -l root -c "