pytest用例执行顺序 pytest默认按字母顺序去执行的(小写英文—>大写英文—>0-9数字)用例之间的顺序是文件之间按照ASCLL码排序,文件内的用例按照从上往下执行。setup_module->setup_claas->setup_function->testcase->teardown_function->teardown_claas->teardown_module可以通过第三方插件pytest-ordering实现自定义用例执行顺序 pytest-ordering—指定用例的运行顺序 pytest默认是按照字母来执行执行顺序,由于多接口之间存在值引用的关系,此时就需要执行case的执行顺序。
pytest控制case执行顺序的插件是pytest-ordering,直接用pip安装。
1.安装依赖包
pip install pytest-ordering 2.pytest-ordering的使用
通过装饰器的方法来控制case的执行顺序
1.方式一:
- 第一个执行: @ pytest.mark.run('first') - 第二个执行: @ pytest.mark.run('second') - 倒数第二个执行: @ pytest.mark.run('second_to_last') - 最后一个执行: @ pytest.mark.run('last') 2.方式二:
- 第一个执行: @ pytest.mark.first - 第二个执行: @ pytest.mark.second - 倒数第二个执行: @ pytest.mark.second_to_last - 第四个执行: @pytest.mark.last 3.方式三:
第一个执行: @ pytest.mark.run(order=1) 第二个执行: @ pytest.mark.run(order=2) 倒数第二个执行: @ pytest.mark.run(order=-2) 最后一个执行: @ pytest.mark.run(order=-1) 执行优先级:
0>较小的正数>较大的正数>无标记>较小的负数>较大的负数
导入 pytest @ pytest.mark.run (order = -2 ) def test_three (): assert True @ pytest.
软件开发springboot项目过程中,不可避免的需要处理各种异常,spring mvc 架构中各层会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还影响代码的可读性。这样就需要定义个全局统一异常处理器,以便业务层再也不必处理异常。
实现:
目录
1、封装统一返回结果类
2、自定义异常封装类
3、错误枚举
4、全局异常处理类
5、测试
1、封装统一返回结果类 import com.jiusen.exercise.enums.ErrorEnum; import com.jiusen.exercise.exception.BusinessException; import lombok.Getter; import lombok.Setter; /** * @author: Lawson * @date: 2021/5/11 * @description: TODO 统一的返回结果 */ @Getter @Setter public class AjaxResult { //是否成功 private Boolean success; //状态码 private Integer code; //提示信息 private String msg; //数据 private Object data; public AjaxResult() { } //自定义返回结果的构造方法 public AjaxResult(Boolean success, Integer code, String msg, Object data) { this.
Windows共享文件夹
如果局域网中有Windows主机,请将指定的文件夹设置为共享文件夹,则可以在局域网中访问它。
如果要从Linux访问该怎么办?
使用mount.cifs
Windows共享文件夹使用的协议是SMB / CIFS。 因此,您可以在Linux下使用smbclient在命令行上进行操作。
如果要在图形桌面环境中更方便地使用它,可以使用mount.cifs命令将共享文件夹安装到指定位置,然后可以像访问本地文件夹一样访问它。
首先安装依赖包
使用mount.cifs需要cifs-utils软件包(以及cifs-utils依赖的软件包)。
$ sudo apt install cifs-utils
(插入一句话:现在apt安装可以直接使用apt代替apt-get)
挂载共享文件夹
可以使用以下两个命令(效果相同)
sudo mount.cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw]
或者
sudo mount -t cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw]
共享文件夹的地址是Windows主机的地址加上文件夹名称,可以在Windows主机上看到。 例如//192.168.0.100/share
挂载点是Linux上的空文件夹。
以下选项指定用户名和密码。
文件操作
成功挂载后,您可以通过图形文件管理器直接对其进行操作。 复制,粘贴,删除等
但是,但是。。。您很快就会发现此文件夹可读且不可写! 您只能复制到外部,不能创建新文件或复制到内部。
检查文件夹属性后,您会发现在安装原始文件夹之后,所有者成为根用户。 怎么做? 每次需要sudo时都不能复制文件吗? 然后,您必须打开命令行,这既不直观也不麻烦。
不用担心,mount.cifs还提供了一个选项,即在安装后指定所有者! 用法如下:
sudo mount.cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw],uid=[UID]
在选项中指定用户的UID就可以了。
查看某个用户UID的方法:
id -u [username]
之后就可以正常操作了!
卸载
最后如果要卸载共享文件夹,使用umount即可
sudo umount [mount point]
字、字节、位、字长的区别与关系 一.数据存储单位1、位(bit)2、字节(byte)3、字 二、字符与字节对应关系三、字长 一.数据存储单位 字 > 字节 > 位1位=1比特
1字=2字节
1字节=8位
1字=16位
(备注:字就是指一个汉字,bit为Binary digit(二进制数)的英文单词缩写)
1、位(bit) 来自英文bit,音译为“比特”,表示二进制位。二进制数系统中,每个逻辑0或1就是一个位(bit)。位是计算机内部数据存储的最小单位,11010100 是一个8位二进制数。一个二进制位只可以表示0和1两种状态 ;两个二进制位可以表示00、01、10、11四种状态;三位二进制数可表示23种状态… 拓展内容:计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32位数据。
2、字节(byte) 字节来自英文Byte,音译为“拜特”,习惯上用大写的“B”表示。字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二 进制位构成。
即1个字节等于8个比特(1 Byte=8bit)。八位二进制数最小为0000000,最大为11111111;通常1个字节可以存入一个ASCII码,2个字节可以存放一个汉字国标码。
*注:1个字节等于8个位只是惯例而已,C标准并没有定义这一点。
有些编译器并不遵守这个惯例,例如,在 Texas 的 C55x DSP 的平台上,1 个字节等于 16 个位。TB、GB、MB、KB、B均为字节单位。 3、字 计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。一个字通常由一个或多个(一般是字节的整数位)字节构成。例如286微机的字由2个字节组成,它的字长为16; 486 微机的字由4个字节组成,它的字长为32位机。计算机的字长决定了其CPU一次操作处理实际位数的多少,由此可见计算机的字长越大,其性能越优。通常称16位是一个字,而32位呢,则是一个双字,64位是两个双字。
————————————————
版权声明:本文为CSDN博主「阿泰s」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:link 二、字符与字节对应关系 常见的编码字符与字节的对应关系如下:
① ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。
② UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
③ Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。
符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
④ GBK编码方式是中文占两个字节,英文占1个字节。
三、字长 在同一时间中处理二进制数的位数叫字长。
通常称处理字长为8位数据的CPU叫8位CPU,32位CPU就是在同一时间内处理字长为32位(4字节)的二进制数据。二进制的每一个0或1是组成二进制的最小单位,称为位(bit)。常用的字长为8位、16位、32位和64位。字长为8位的编码称为字节,是计算机中的基本编码单位。
————————————————
版权声明:本文为CSDN博主「Sumjess」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:link
Android.bp与Android.mk的区别 通过Kati将Android.mk转换成ninja格式的文件,通过Blueprint+ Soong将Android.bp转换成ninja格式的文件,通过androidmk将将Android.mk转换成Android.bp,但针对没有分支、循环等流程控制的Android.mk才有效
ninja是一个编译框架,会根据相应的ninja格式的配置文件进行编译,但是ninja文件一般不会手动修改,而是通过将 Android.bp文件转换成ninja格文件来编译Android.bp是纯粹的配置,没有分支、循环等流程控制,不能做算数逻辑运算。如果需要控制逻辑,那么只能通过Go语言编写Soong类似于之前的Makefile编译系统的核心,负责提供Android.bp语义解析,并将之转换成Ninja文件。Soong还会编译生成一个androidmk命令,用于将Android.mk文件转换为Android.bp文件Blueprint是生成、解析Android.bp的工具,是Soong的一部分。Soong负责Android编译而设计的工具,而Blueprint只是解析文件格式,Soong解析内容的具体含义。Blueprint和Soong都是由Golang写的项目,从Android 7.0,prebuilts/go/目录下新增Golang所需的运行环境,在编译时使用kati是专为Android开发的一个基于Golang和C++的工具,主要功能是把Android中的Android.mk文件转换成Ninja文件。代码路径是build/kati/,编译后的产物是ckati Android.mk -> Android.bp Android.mk 转换为 Android.bp,Google提供了官方工具androidmk,只针对简单的mk文件转换,涉及分支,循环等控制转换并不准确
androidmk使用 :androidmk android.mk > android.bp
Android.bp使用 java_library { name: "services", dex_preopt: { app_image: true, profile: "art-profile", }, srcs: [ "java/**/*.java", ], static_libs: [ "services.core", "services.accessibility", "services.appwidget", "services.autofill", "services.backup", "services.companion", "services.coverage", "services.devicepolicy", "services.midi", "services.net", "services.print", "services.restrictions", "services.usage", "services.usb", "services.voiceinteraction", "android.hidl.base-V1.0-java", ], libs: [ "android.hidl.manager-V1.0-java", "miuisdk", "miuisystemsdk" ], } cc_library_shared { name: "libandroid_servers", defaults: ["libservices.core-libs"], whole_static_libs: ["libservices.core"], } Android.bp与Android.mk的对应关系 Android.
修改需要请求的微服务配置文件中的地址,改成0.0.0.0 方便从容器外部访问微服务,127.0.0.1只能本容器内部访问,所以造成Connection refused。
Keras中的两种模型:Sequential和Model用法 前言一、序列模型 Sequential二、通用模型:Model函数式模型补充知识:keras神经网络,Sequential序贯模型(二分类、多分类)1.Sequential参数2.compile配置学习过程3.案例01 基于多层感知器Softmax多分类02 MLP的二分类 拓展阅读: 前言 本文转载自Keras中的两种模型
在Keras中有两种深度学习的模型:序列模型(Sequential)和通用模型(Model)。差异在于不同的拓扑结构。
一、序列模型 Sequential Sequential 是实现全连接网络的最好方式。
序列模型各层之间是依次顺序的线性关系。Sequential 模型是多个网络层的线性堆栈,可以从 keras 的模型库中导入 Sequential 模型:
模型结构可以通过一个列表来制定,代码如下:
from keras.models import Sequential from keras.layers import Dense, Activation layers = [Dense(32, input_shape = (784,)), Activation('relu'), Dense(10), Activation('softmax')] model = Sequential(layers) 或者逐层添加网络结构,代码如下:
from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential() model.add(Dense(32, input_shape = (784,))) model.add(Activation('relu')) model.add(Dense(10)) model.add(Activation('softmax')) 二、通用模型:Model函数式模型 通用模型可以设计非常复杂、任意拓扑结构的神经网络,例如有向无环网络、共享层网络等。相比于序列模型只能依次线性逐层添加,通用模型能够比较灵活地构造网络结构,设定各层级的关系。
*函数式模型接口是用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径。*换言之,只要你的模型不是类似 VGG 一条路走到黑的模型,或者你的模型需要多于一个的输出,那么你总应该选择函数式模型。函数式模型是最广泛的一类模型,序贯模型(Sequential)只是它的一种特殊情况。
————————————————
from keras.layers import Input, Dense from keras.
除了网友其他办法,还有一种就是,右边maven里面当前模块是灰色,点击上面加号,选中响应模块pom文件,添加一下也是一种解决办法。
对于没有中文输入法的Linux系统中国使用者来说,没有中文输入法是十分痛苦的。我总结了一条比较方便使用的中文输入法的安装方法。
首先,无论是中文的还是英文的Linux系统,输入法基本都是内置的ibus输入法,如果你不想下载别的输入法,你可以就用ibus的中文输入法。
不管你的linux系统是中文的,还是英文的,你都可以进入System Settings-->Language Support查看一下已经安装的语言,如果没有中文语言,请安装中文语言:System Settings-->Language Support-->Install/Remove Languages。这个时候你可一安装ibus的中文输入法或者其他的中文输入法了,不过很有可能遇到Unable to lock directory /var/cache/apt/archives/这种问题,只需要在终端里面敲入两句话就可以解决:#:sudo
rm /var/cache/apt/archives/lock #:sudo rm /var/lib/dpkg/lock
这里推荐几种输入法:
1.IBus拼音:sudo apt-get install ibus-pinyin
2.SCIM:sudo apt-get install scim-chinese
3.谷歌拼音输入法:sudo apt-get install ibus-googlepinyin
4.Sun拼音输入法:sudo apt-get install ibus-sunpinyin
接下来只需要配置输入法就可以了:终端里面输入ibus-setup,输入法的配置界面就会弹出,IBus Preference设置被打开。我们在Input Method选项卡中,选择自己喜欢的输入方式,并配置自己喜欢的快捷键即可。
通常情况下,IBus图标(一个小键盘)会出现在桌面右上角的任务栏中。有时候这个图标会自行消失,可使用以下命令,找回消失的IBus图标:
ibus-daemon -drx
1.jenkins下载
镜像源
Index of /windows (jenkins-ci.org)
2.jdr环境下载:
1)镜像源资源下载
https://blog.csdn.net/qingliang4321/article/details/105001740
下载成功,要记住java的安装环境,比如我的是:
2)jre系统环境配置
· 进入环境变量设置:
--------------------分割线----------------------
A.添加用户变量
B.添加系统变量
C.添加Classpath
D.添加Path
------------------------------------------------------
A.添加用户变量,上半框,点击【新建】,变量名/变量值按照如下之指示输入,加变量名的目的是便于JAVA存放路径的更改
B.添加系统变量
C..........
3)check是否成功安装
C:\Users\Administrator>java //输入java命令查看是否安装成功, 控制台显示用法,说明安装成功 3. 继续控制台输入命令:
E:\>cd jenkins E:\jenkins>java -jar jenkins.war 5.因为jenkins的war包自带jetty服务器,所以启动成功后,直接打开浏览器操作即可。输入http://localhost:8080,点击回车,出现以下画面:
PS:第一次使用jenkins时,为了安全考虑,会生成一串字符口令!,进入对应的路径,按照控制台提示,打开本地路径查找密码,用文本文件打开,既可看到密码,打开该文件,将对应的字符复制进输入框内,点击继续按钮,等待安装成功。
C:\Users\Administrator\.jenkins\secrets
安装成功:
选择安装推荐的插件:
创建项目
git下输入git,root账号,复制HTTP gitlab仓库地址
构建触发器->在构建处添加打包脚本->在Execute wINDOWS BATCH COMMAND
命令
下添加打包脚本
测试:控制台输出。
查看生成文件 builiding in workplace C:\User\delljekins\workplace\Pair
Dashboard 权限管理
Anyone
占空比测量的思路: 分别对输入信号在高电平时间内计数,低电平时间内计数。
占空比 = 高电平计数值 / (高电平计数值 + 低电平计数值)
状态机实现: 仿真: 下板子
文章目录 前言一、粒子群算法学习过程二、特征选择实战1.数据集以及matlab源码2.参数说明3.实验结果 总结 前言 PSO算法是一种群智能优化算法,特点是布置速度快,收敛性强。同时面对着两大问题,容易早熟和容易陷入局部最优。对于特征选择这类离散型问题,我们使用二进制版本的BPSO进行优化。在PSO的迭代过程中,每个粒子都会向种群历史最优解(Gbest)和粒子本身历史最优解(Pbest)进行学习,同时也会不断地更新Gbest与Pbest,最后会收敛在Gbest与Pbest之间的某个区域。
注意:(Gbest只有一个,所有粒子都会向它学习,而Pbest对于每个粒子都有一个,只属于它们自己,它们只会向自己的Pbest进行学习,这样说应该大家都能听懂了)
一、粒子群算法学习过程 对于特征选择问题是这样描述的,现实中由于采样不均匀导致某些采样偏离了真实的分布,所以这部分特征反而会对数据的利用造成负面影响,那么特征选择的目的就是找出这些错误的特征和冗余的特征。
那么我们定义一个1*N维的0-1向量,每一位都只能是0或者1,0代表不用这一维特征,1代表选用这一维
特征。
那么BPSO是怎么进行学习的呢?公式如下:
先看到第一个公式: 代表着粒子的速度更新公式,粒子在每一维都有一个速度值(前面我们已经提到了数据有很多维特征),那么每一维都要进行更新。其中 ω ( t ) \omega(t) ω(t)代表着当前迭代次数的惯性系数,也就是说继承来自上次迭代速度的比重,写一篇博客好难啊啊啊啊,继续,另外加上的两项呢,分别是与Pbest和Gbest位置的差异,这里非常重要!!!,如果不好好理解,就弄不明白了。位置的差异通过两个系数c1,c2和两个[0,1]随机数r1,r2 相乘,学习系数的作用是加大向Pbest和Gbest靠拢的可能性,而随机数r1,r2的作用是也是一种精髓,启发式随机搜索的精髓,用它,肯定好,为什么?谁也说不清,不用它,鲁棒性真的会变差。
下面举个例子,
粒子 [0 0 1 1 0 1 0 1]
gbest [1 0 1 0 0 0 1 1]
pbest [0 0 1 0 0 1 0 1]
先看第1维,我们现在要更新速度,发现
这两个公式上面公式是0,下面公式是1,对吧,忽略前面的[0,1]随机数系数(期望值0.5)那么加起来对速度的提升我们就假设为 1
现在看第6维,变成了上面公式是-1,下面公式是0,对速度的提升是-1,
由此我们发现,对于一个粒子如果它的Pbest和Gbest的某个维度位置不一致,那么它获得速度的期望大概是-1。
好,再看第2维,上面公式是0,下面公式也是0,粒子没有获得速度提升,那么之后会怎么样呢?变成了这样
也就是说如果惯性系数小于1,那么速度值越来越小了,大于1则越来越大。
再看到第二个公式: 这就是一个sigmoid函数,没想到吧,这里也会碰见神经网络这哥们,为什么用它?其他函数行嘛?当然可以,S型函数大家族那么多,你挑一挑其他杀马特(非主流)函数也行。大家都用sigmoid,这里就照搬了。
再看到第三个公式:重点来了
如果sigmoid的返回值大于[0,1]随机数(期望0.5),就把这个维度置为1,否则为1.注意这里不是取反,而是单纯的大于随机数置1,小于随机数置0,千万不要记成取反了(我以前就这样做)
我们再来复习一下sigmoid
那么为什么公式3有效呢?速度大就置为1,速度小就置为0,合理吗?
我总结一下:
Pbest与Gbest为1,粒子为0,位置差异为正,那么速度就大,此时粒子变为1的概率也越大,即完成了学习行为(向Pbest与Gbest靠拢了)
Pbest与Gbest为0,粒子为1,位置差异为负,那么速度就小,此时粒子变为0的概率也越大,即完成了学习行为(向Pbest与Gbest靠拢了)
好好理解上述话语,即理解了BPSO粒子速度与位置更新的含义,网上有很多人说什么以概率表示巴拉巴拉,其实并不好理解,只是想当然得觉得很对。
二、特征选择实战 1.数据集以及matlab源码 用一个数据集Wine(178instance,13features and 3 classes,数据集下载链接和分类器ELM(没别的就是快,下载链接)进行实验。
众所周知,CAN网络具有易于实现、可扩展、并支持复杂拓扑结构等诸多优点,所以目前在各个行业特别是汽车领域,得到了非常广泛的应用。但是,它也存在着诸多问题,其中最大的一点就是总线带宽和数据场长度太低,导致承载能力非常有限。为此,CiA(CAN-in-Automation,国际用户与制造商联合组织)推出了CAN FD(CAN with Flexible Data rate)。CAN FD继承了CAN总线的主要特性,但是弥补了CAN总线带宽和数据场长度的制约,CAN FD总线与CAN总线的区别主要在以下两个方面:
可变速率:CAN FD采用了两种位速率:从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同。
新的数据场长度:CAN FD对数据场的长度作了很大的扩充,DLC最大支持64个字节,在DLC小于等于8时与原CAN总线是一样的,大于8时有一个非线性的增长,所以最大的数据场长度可达64字节。
CAN FD引入了更快的比特率,在数据阶段可设置为高达5 Mbit/s,但其后果是由于信号振铃而受到严格的拓扑结构限制。这就使CAN FD局限于线性网络,限制了设计的自由度,增加了布线和系统成本。所以,在2020年的第17届国际CAN大会(iCC)上,CiA又推出了第三代CAN通信技术CAN XL。
一、什么是CAN XL CAN XL是一种高度可扩展的通信技术,涉及比特率和数据字段的长度。物理层仍在开发中。目标是实现高达10+ Mbit / s的比特率。 CAN XL针对面向区域的异构网络体系结构进行了优化。该方法以最优的长度满足未来车载网络的要求。汽车工业试图减少布线,以最小化重量,或者换句话说,是限制能耗。它的几个核心期望特性如下:
有效负载长度:与以太网帧长度一样;可靠性:等于或者优于CAN,CAN FD和10Mbit/s以太网的稳定性;鲁棒性:与CAN FD一样好,甚至要优于10Mbit/s以太网;波特率:在数据段的传输速率最大可达10Mbit/s;兼容性:向后兼容CAN FD。 CAN XL是对CAN和CAN FD的进一步扩展,并且在很大程度上遵循相同的运行原理。CAN报文分为仲裁场和数据场。尽管CAN XL在仲裁场使用500kbit/s至1Mbit/s的低速率,但数据场的传输速率却可提升至2Mbit/s至10Mbit/s。相对于CAN FD的可选速率切换功能,CAN XL强制执行速率切换。
此外,总线访问仍旧采用CSMA/CD(载波侦听多路访问/冲突解决方案),通过位仲裁解决总线访问权限问题。CAN XL遵循严格的优先级概念,允许更重要的消息无延迟地传输。CAN XL仅支持11位标识符ID,不再使用29位标识符ID。CAN XL凭借用于报头和帧以及格式检查的汉明距离6算法,确保数据传输的高可靠性,实际上胜过FlexRay和以太网的CRC功能。
然而,对于未来的应用而言重要的不仅仅是提高数据传输速率。CAN XL主要功能之一是数据场支持1~2048Byte的可变长度。在必要时,可将以太网帧打包为CAN XL消息,直接或间接通过CAN XL使用IP通信技术。
CAN XL传承自经典的CAN和CAN FD,并缩小了CAN/CAN FD与Ethernet之间的传输速度和耦合的差距。在合适的应用领域中,CAN XL可以采用更小巧更便宜的控制器。利用高达2048Byte的有效数据长度,CAN XL为将来传输以太网帧和利用IP通信提供所需的功能。在不久的将来,这意味着CAN XL和10base-T1S可以共同在基于信号的通信和面向服务的通信之间提供连接。通过对协议层进行适当的扩展,将为应用提供更丰富的可能性。
二、CAN XL Vs CAN FD 不少同学会问,那么CAN XL与CAN FD究竟差在什么地方呢?下面就进行详细的对比。
与CAN FD相比,CAN XL增加了位的数量;
这些附加位位于报文头与报文末尾处;
大多数的所需位是CRC,必须增加它才能保护超出的更多的字节。
1、报头部分 上图中顶部的黑线表示隐性,底部的黑线表示显性。那么我们分析上图可得出以下结论:
SOF和11位的CAN ID场在CAN、CAN FD、CAN XL中是通用的; CAN FD和CAN XL始终不支持RTR远程请求;CAN XL不支持IDE标识符扩展(29位CAN ID),该位始终处于显性;隐性FDF位指示CAN FD,隐性FDF、XLF位指示CAN XL;CAN FD中res位始终处于显性,隐性BRS位(波特率切换)会提升传输速率;CAN FD中ESI位通常处于显性,但处于被动错误时会变为隐性;CAN XL中resXL位是隐性的,可用于将来的扩展;CAN XL中AL1、DH1和DL1作为新的波特率切换序列; CAN XL中Payload 8-bit用于不同数据包的预定义多路复用位;CAN XL中DLC是一个11位整数,其中数据字节数是该整数加1;CAN XL中Header-CRC用于保证DLC正确,DLC定义数据CRC从何处开始。 2、报尾部分 对于相同的数据长度,CAN XL中较长的报头可能需要较长的CRC;CAN XL包含用于波特率切换位,确保向前的兼容性;CAN XL CRC之后是波特率的切换模式,而不是CRC定界符;为了确保重新同步到未来格式的帧末尾,集成格式:将CAN XL中放置NACK添加到旧ACK中。 CAN XL每个CAN帧中有更多的数据:1-2048字节,并且在数据部分增加了波特率,具有更好的故障保护措施,可为下一代CAN做更好的准备。
本人小白,如有不对的地方请各位大佬指正,谢谢!
本文章使用的是ZCU102开发板
vivado版本:2019.1
petalinux版本:2019.1
创建项目流程(官网文档所给,根据自己需求酌情考虑做哪步指令)如下图所示:
注意:命令行的介绍请参考ug1157
将通过vivado生成好的硬件描述文件(.hdf/.dsa)复制到Ubuntu要建立工程的目录下。
注意:此目录不能与Petalinux工具安装目录相同,但文件夹权限是相同的,只能是0755
此例程,我将.hdf放在了 /home/wlp/nzywork/ petalinux19/中
创建新项目
分为两种:
第一种是直接创建空项目,自己去配置。
petalinux-create -t project -n hello_xilinx --template zynqMP
上述写法是在当前目录下创建项目。hello_xilinx是项目名称
出现下图报文,表示成功创建!
第二种是基于BSP创建项目,在其基础上增删一些自己想要的配置
petalinux-create -t project -s -n
初始化或更新petalinux项目的硬件配置
cd ./hello_xilinx
petalinux-config --get-hw-description=../ 此处路径为.hdf文件所在路径。
也可使用绝对路径:
petalinux-config --get-hw-description /home/wlp/nzywork/petalinux19
当非第一次进入此配置菜单时,可以使用petalinux-config即可。
根据需求配置菜单,配置完成后保存退出。
修改petalinux-config->DTG Settings->MACHINE_NAME为zcu102-rev1.0即可
不同的板卡,此处所填写的名字也不同,请按照官方ug1144里面给出的值对应的进行填写。
此处我们将网口IP设置成静态IP,以方便我们测试
由于硬件设计,此处我们使用串口1,波特率115200
设置完成后,保存并退出
注意:配置中默认是SD1卡启动
编译
petalinux-build
打包生成BIN文件
cd images/linux/
petalinux-package --boot --format BIN --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga *.bit
注意:当此目录下之前生成过BOOT.BIN,再次执行此操作时,在命令后要加上--force
在Linux系统特别是服务器系统中常常会需要查看设备的硬件信息,这时候使用命令查看就显得非常方便。本文介绍几个在Linux系统中查看硬件信息的命令,它们是lspci、lsblk、lscpu 和 lsusb。
lspci 命令
从命令的名称ls+pci的组合上大致也能看出来,lspci用于显示有关系统中的PCI总线以及与其连接的设备的信息。默认情况下,它显示设备的简短列表,如果配合指定的选项使用可以显示输出更详细的信息。
语法格式:
lspci [参数]
常用参数:
选项
描述
-n
以数字方式显示PCI厂商和设备代码
-t
以树状结构显示PCI设备的层次关系
-b
以总线为中心的视图
-s
仅显示指定总线插槽的设备和功能块信息
-i
指定PCI编号列表文件,不使用默认文件
-m
以机器可读方式显示PCI设备信息
使用示例:
默认情况下终端中直接输入该命令,显示当前主机的所有PCI总线信息:
lspci
输出类似如下:
00:00.0 Host bridge: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 (rev 04)
00:01.0 PCI bridge: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a (rev 04)
00:02.0 PCI bridge: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a (rev 04)
Python 导入 sklearn 模块错误 我是在做《Python大数据处理》书籍中的例题时导入 sklearn 遇到的错误 这个错误的原因是 sklearn 模块导入的问题,是由于 Python 版本与 sklearn 模块版本不对等的问题
首先是要安装 sklearn 模块 不是完全标准的pip安装,指令如下
pip install -U scikit-learn
在安装的时候可能会在cmd界面遇到如下警告:
WARNING: You are using pip version 21.0.1; however, version 21.1.1 is available. 警告:您使用的是pip版本21.0.1;但是,版本21.1.1可用。 之后再Python根目录下使用如下指令,更新pip版本以防一些模块更新与Python版本的冲突 python.exe -m pip install --upgrade pip 见到此语句即为安装成功 Successfully installed pip-21.x.x (帖子目前为21.1.1) 接下来是解决核心问题 错误语句:from sklearn.preprocessing import Imputer ImportError: cannot import name 'Imputer' from 'sklearn.preprocessing' Path 错误原因为 导入模块失败 from sklearn.preprocessing import Imputer 将导入模块的语句改为 from sklearn.
cuda 编程一般结构为:
1 主程序.c << 2 主机(H)端&设备(D)端数据传递及GPU子程序调用.cu << 3 GPU子程序.cu & CPU子程序.c
2.cu中一般结构为:
#1设定显卡号i cudaSetDevice(i); check_gpu_error("Failed to initialize device"); #2设定grid和block块 dim3 grid((nz+Block_Sizez-1)/Block_Sizez,(ny+Block_Sizey-1)/Block_Sizey,nx+Block_Sizex-1)/Block_Sizex); dim3 block(Block_Sizey,Block_Sizex,Block_Sizez); #3申请设备端内存并初始化 cudaMalloc(&d_data, n_data*sizeof(float)); cudaMemset(d_data, 0, n_data*sizeof(float)); #主机端到设备端数据传递 cudaMemcpy(d_data, h_data, n_data*sizeof(float), cudaMemcpyHostToDevice); #对于二维数组 #申请设备端内存并初始化 cudaMallocPitch((void**)&d_data, &pitch, nz*sizeof(float), nx); cudaMemset2D(d_data, pitch, 0, nz*sizeof(float), nx); #主机端到设备端数据传递 cudaMemcpy2D(d_data, pitch, h_data, sizeof(float)*nz, sizeof(float)*nz, nx, cudaMemcpyHostToDevice); #4调用GPU子程序 gpusubroutine<<<gridsize,blocksize>>>(pitch/sizeof(float),otherparameters) #运算同步 cudaDeviceSynchronize(); check_gpu_error("there is something wrong"); #5设备端到主机端数据回传 cudaMemcpy(h_data, d_data, n_data*sizeof(float), cudaMemcpyDeviceToHost); cudaMemcpy2D(h_data, sizeof(float)*nz, d_data, pitch, sizeof(float)*nz, nx, cudaMemcpyDeviceToHost); #6显存释放 cudaFree(d_data); 3gpusubroutine.
回顾第一篇的三次握手和四次挥手流程
三次握手
TCP连接在关闭的时候,执行的是一个四次握手的过程
客户端发送Fin报文段,进入Fin_wait1(终止等待1)状态服务器端收到FIN报文段,发送ACK表示确认,进入CLOSE_WAIT(关闭等待)状态,客户端收到Fin的确认报文段,进入Fin_wait2状态服务器发送Fin报文段,进入last_ack(最后确认状态)客户端收到fin报文端,发送ack,client进入time_wait状态,启动time_wait定时器,超时时间设置为2MSL,服务端收到ack进入close状态,客户端再2msl时间没有收到任何响应,time_wait超时,Client推断ACK已经被成功接收,结束tcp连接进入closed转态。 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态? 虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT(时间等待)状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。
time_wiat存在的理由 可靠的实现TCP全双工连接的终止 在进行关闭连接四次挥手协议时,最后的ACK是由主动关闭端发出的,如果这个最终的ACK丢失,服务器将重发最终的FIN,因此客户端必须维护状态信息允许它重发最终的ACK。如果不维持这个状态信息,那么客户端将响应RST分节,服务器将此分节解释成一个错误(在java中会抛出connection reset的SocketException)。然而这只是正常的关闭连接过程,并非异常。
因而,要实现TCP全双工连接的正常终止,必须处理终止序列四个分节中任何一个分节的丢失情况,主动关闭的客户端必须维持状态信息进入TIME_WAIT状态
允许老的重复分节在网络中消逝 TCP分节可能由于路由器异常而“迷途”,在迷途期间,TCP发送端可能因确认超时而重发这个分节,迷途的分节在路由器修复后也会被送到最终目的地,这个原来的迷途分节就称为lost duplicate。
在关闭一个TCP连接后,马上又重新建立起一个相同的IP地址和端口之间的TCP连接,后一个连接被称为前一个连接的化身(incarnation),那么有可能出现这种情况,前一个连接的迷途重复分组在前一个连接终止后出现,从而被误解成从属于新的化身。
为了避免这个情况,TCP不允许处于TIME_WAIT状态的连接启动一个新的化身,因为TIME_WAIT状态持续2MSL,就可以保证当成功建立一个TCP连接的时候,来自连接先前化身的重复分组已经在网络中消逝。
如何避免time_wait问题 首先服务器可以设置SO_REUSEADDR套接字选项来通知内核,如果端口忙,但TCP连接位于TIME_WAIT状态时可以重用端口。
在一个非常有用的场景就是,如果你的服务器程序停止后想立即重启,而新的套接字依旧希望使用同一端口,此时SO_REUSEADDR选项就可以避免TIME_WAIT状态。
参考博文:
https://blog.csdn.net/qq_38950316/article/details/81087809
time_waiy:https://blog.csdn.net/huangyimo/article/details/81505558
在安装过程中,Gigapixel AI安装程序将尝试告诉Photoshop在哪里可以找到该程序的插件。有时,由于某种原因该过程可能会出错,因此我们需要手动告诉Photoshop在哪里可以找到插件。
具体方法如下
1.关闭Photoshop。
2.在“应用程序”下导航至Topaz Gigapixel AI应用程序。
3.右键单击并选择“显示包装内容”。
4.导航到“资源”文件夹。
5.右键单击 PS_Plugins文件夹,然后选择“制作替身”。
6.将新替身重命名为 TopazGigapixelAI。
7.右键单击并复制 TopazGigapixelAI 替身。
8.导航到/ Library / Application Support / Adobe / Plug-Ins / CC下的Adobe插件文件夹。
注意:如果您使用的是Adobe 2021和Big Sur,则计算机上可能不存在此位置。在这种情况下,请改用/ Applications / Adobe Photoshop 2020 / Plug-ins
9.将TopazGigapixelAI 替身粘贴到此文件夹中。
10.打开Photoshop。现在应在“文件”->“自动”下显示“ Topaz Gigapixel AI”。
以上就是Topaz Gigapixel AI作为Photoshop插件未显示在“文件”->“自动”中的解决方法,需要的朋友欢迎参考操作!
本文停更,新篇发布于:https://www.jianshu.com/u/90c2509fcc3e
文章目录 开篇序May 202105-0805-0905-1005-1105-1205-1305-1405-1505-1605-1705-1805-1905-2005-2105-2205-2305-2405-2505-2605-2705-2805-2905-3005-31 June 202106-0106-0206-0306-0406-0506-0606-0706-0806-0906-1006-1106-1206-1306-1406-1506-1606-1706-1806-1906-2006-2106-2206-2306-2406-2506-2606-2706-2806-2906-30 July 202107-0107-0207-0307-0407-0507-0607-0707-0807-0907-1007-1107-1207-1307-1407-1507-1607-1707-1807-1907-2007-2107-2207-2407-2407-2507-2607-2707-2807-2907-3007-31 August 202108-0108-0208-0308-0408-05 完篇记 开篇序 真实原因是上一篇字数超上限不给写了,虽然我也确实很想重写新的…
目测上半年剩余时间会以更新运筹优化,数值计算以及随机分析的内容为主,等到下半年可能会重归本业做些有趣的事情。
今日凌晨VAE发布了新曲MV《乌鸦》,感觉VAE的创作风格真的是越来越剑走偏锋,与前三张专辑的风格迥异,但是多听几遍总是可以产生共情的。
所以有时候会想人和人的喜怒真的是不相通么?也许只是难以同乐,单论共悲或许要容易得多。
由于诸多的偏差,往往我们多数时候只能看到别人光鲜面,却发现自己大部分时候都是在平淡地活着,甚至是颓唐地活着,因此一旦觉察倒世上也有与我一样的人,难免就会触而生情。
但是我想到了这个年纪,并没有几个人真的可以做到无忧无虑,各式各样的烦恼总是会有。
人到底血肉之躯,脆弱的时候至刚易折,偶然有烛火照亮我,就会下意识地去追求这团微弱的光芒,渴求还能找到春天。
假若有缘,或许时间并不是问题,谁知道呢。确实是很久了,有时候觉得可能还是像这次决绝一点好罢。
宴尔新昏,如兄如弟。宴尔新昏,不我屑矣。品荼苦而故作乐,大约是会有一点这种感觉的罢。
May 2021 05-08 午休起来看到W已在801,克制,虽然看到了还是觉得有点遗憾, 定义【可达常数】:若存在常数 m m m,使得 ∀ n ≥ m \forall n\ge m ∀n≥m,图 G G G中任意两个顶点之间都存在一条长度为 n n n的路径,则称 m m m为可达常数。(简单也可以理解为 C n 2 C_n^2 Cn2对顶点之间最短距离的最大值,其实这个定义不是很严谨);
昨晚测试了一下随机生成的强连通图 G = ( V , E ) G=(V,E) G=(V,E),其中 ∣ E ∣ = 2 ∣ V ∣ |E|=2|V| ∣E∣=2∣V∣的一个可达常数(reachability constant)的情况,从 ∣ V ∣ = 2 4 |V|=2^4 ∣V∣=24测试到 ∣ V ∣ = 2 16 |V|=2^{16} ∣V∣=216,发现可达常数刚好是 4 4 4~ 16 16 16,也就是 log 2 ∣ V ∣ \log_2 |V| log2∣V∣的水平,这个确实是一件很巧的事情。
解决Virtual PC装Linux出现花屏
发布时间:2007-09-27 21:29:22来源:红联作者:TecCTO
昨天,我兴冲冲的装上了redhat Linux,因为没有CD,所以是用ISO镜像装的,三个文件我一共下了四个多小时,得来不易啊,我是装在Virtual PC上的,由于Virtal PC的速度比较慢,又花了半个多小时才装好,可就当要大功告成,就要见到我那熟悉的“红帽子”的时候,却是花屏了。我的心一下就凉了。以前用VM的时候为什么就没出现这个问题呢。说实话,要不是为了VPC可以很好的解决虚拟机的文件共享,我才不用VPC呢。
出现问题就得解决问题,出现这种问题,我第一感觉就是像素设置问题,我上网查了一下,果然,是由于VPC不支持Linux的24色,只用16色,而Linux默认的是24色,恨死微软了,于是还得手动的改动。
步骤如下:
1、进入GRUB后,按下E进入编辑状态。
2、然后会出现三个选项 a.Root(0,0) b.kernel ...... c. ..... 用上下键下拉选中b项,并按下E进入编辑状态。
3、在该项后敲空格键后,加上single,然后回车回到Grub界面,这是为了进入单人模式。
4、然后按b,等待一会会出现“#”提示符,然后键入 vi /etc/X11/XF86Config 会进入设置界面。找到Session选项,并将其中的Deafult Depth 24 ;Depth 24;的“24”都改为16 ,改过后为Deafult Depth 16;Depth 16;
5、然后按ESC,并按下Shift +wq,然后回车
6、最后键入 init 6 就重新启动,便可见到小红帽了。
最后来谈一谈VPC、VM和Bochs
首先是适用范围VPC和VM可以模拟各种平台,而Bochs则是以Linux为主,其次是运作方式,VM确实是名副其实的虚拟机,他除了I/O之外,可以用运行时去完成任务,当CLient进行一些操作时,VM把它传递给底层硬件去完成,所以说是虚拟,而Bochs是完全模拟,完全模拟了X86的硬件和外围设备,VPC就是介于这二者之间,一部分用虚拟,一部分用模拟,所以运行的效率和速度就有差异了,VPC的速度最快,其次是VM,最慢的就是Bochs,但Bochs有着很好的调试功能,所以一直沿用。
总之,只要用的顺手,称心如意,其实那种工具都无所谓,这就和程序语言的选择是一个道理。
文章目录 一个中心1046. 最后一块石头的重量 三个技巧295. 数据流的中位数1439. 有序矩阵中的第 k 个最小数组和264. 丑数 II871. 最低加油次数1642. 可以到达的最远建筑 一个中心 堆的中心就是动态求极值,动态与极值缺一不可。
1046. 最后一块石头的重量 有一堆石头,每块石头的重量都是正整数。
每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:
如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。
示例:
输入:[2,7,4,1,8,1]
输出:1
解释:
先选出 7 和 8,得到 1,所以数组转换为 [2,4,1,1,1],
再选出 2 和 4,得到 2,所以数组转换为 [2,1,1,1],
接着是 2 和 1,得到 1,所以数组转换为 [1,1,1],
最后选出 1 和 1,得到 0,最终数组转换为 [1],这就是最后剩下那块石头的重量。
在使用 HbuilderX IDE 开发时,有一次使用 git push 代码时,账号密码输入错误,导致后续的 git 操作都出现账号密码验证失败。但又找不到 git 账号密码重新设置的入口。
解决方案 控制面板 -> 用户账户 -> 凭据管理器 -> Windows 凭据 -> 找到自己的 git 凭据 -> 编辑(修改账号密码)
1.查看物流进度 主要用到了Element UI中的时间线组件
代码如下:
<!-- 显示时间线 --> <el-timeline> <el-timeline-item v-for="(activity, index) in activities" :key="index" :timestamp="activity.time" > {{ activity.context }} </el-timeline-item> </el-timeline> 注:timestamp:主要用于显示时间进度的属性
2.数据统计功能 主要用到了Echarts图表库
2.1 初识数据可视化技术 chrome浏览器支持绘图技术:canvas,svg,webGL
chrome浏览器支持的渲染引擎:skia,openGL
数据可视化需要会的技术:D3.js、HighCharts、Echarts、Three.js、WebGL,canvas, webGL, CSS3动画效
Echarts介绍:ECharts是一款基于JavaScript的数据可视化图表库。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,
2.2 Echarts如何使用 第一步:下载安装echarts.min.js
下载链接:https://echarts.apache.org/zh/download.html 第二步:引入echarts并创建一个存放图表的div容器
<!DOCTYPE html> <html lang="en"> <head> </head> <body> <!-- 存放图表的div容器 --> <div id="main" style="width: 600px;height:400px;"></div> <!-- 引入echarts --> <script src="./echarts.min.js"></script> </body> </html> 第三步:创建化图表对象
var myChart = echarts.init(dom对象); 例如: var myChart = echarts.init(document.getElementById('main')); 第四:指定图表配置项
在linux系统上打开anaconda的方法是:直接在终端中运行【anaconda-navigator】命令即可。anaconda指的是一个开源的python发行版本,其包含了conda、Python等多个科学包及其依赖项。
在linux系统中,一些软件在安装后没有桌面的快捷方式,这时我们就可以直接输入命令来打开这些软件。
(推荐学习:Python入门教程)
比如要打开Anaconda,直接在终端中执行如下命令即可:anaconda-navigator
相关介绍:
Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,所以Anaconda 的下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)。
conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。
是一个地球物理专家开发的主要用来处理勘探地球物理数据资料或进行模型测试的软件包,它是完全开源(免费)的。Madagascar提供了一个针对多维数据分析程序的集合,包括地震成像、地震数据处理和对有组织格式的数据进行处理流程实现与计算实验的综合环境。Madagascar遵从的是Claerbout(1992)提出的可重复性(再生性)研究的思想原理。
Madagascar的安装现在已经变得非常的简单。
(一)源码下载。(两种方法)
2. 直接是用命令(个人比较推荐第二种,可以随时更新)
svn co https://rsf.svn.sourceforge.net/svnroot/rsf/trunk RSFSRC
从网站下载源代码到 RSFSRC 目录,这种方法下载的好处一是代码都比较新,二是以后更新比较方便(直接在路径内输入命令svn update即可)
sudo apt-get install freeglut3-dev g++ gfortran libgd2-xpm-dev libglew1.5-dev libjpeg62-dev libx11-dev libxaw7-dev libnetpbm10-dev swig python-dev python-scipy python-numpy libtiff4-dev scons units libblas-dev libcairo2-dev libavcodec-dev libplplot-dev
(三)安装前配置。
./configure --prefix=/完整的安装路径
(四)编译和安装。
如果第三步配置没有问题,没有提示某个命令不能安装,那就可以开始编译安装了。
输入命令
scons;
scons install;
(五) 最后的配置。
全部编译安装完成后,要把madagascar的环境变量设置好。
打开 ~/.bashrc文件,将
source RSFROOT/etc/madagascar/env.sh
添加到文件的末尾,注意,RSFROOT要写成前面的完整路径
最后,保存,退出,在终端中输入
source .bashrc
madagascar的安装就完成了。
转载本文请联系原作者获取授权,同时请注明本文来自罗飞科学网博客。
链接地址:http://blog.sciencenet.cn/blog-898810-674969.html
下一篇:国际知名地球物理勘探研究小组简介
Sysaux表空间是system表空间的辅助表空间,他主要存放awr快照,审计信息等信息,默认情况下,sysaux表空间在日常使用的过程中会越来越大使用量,那么怎么才能安全有效的清理sysaux表空间呢?
col Tablespace_Name for a11 col Sum_m for 9999 col Max_m for 9999 col Free_Blk_Cnt for 9999 col Sum_Free_m for 9999 col PCT_USED for a8 col PCT_FREE for a10 Select Tablespace_Name, Sum_m, Max_m, Count_Blocks Free_Blk_Cnt, Sum_Free_m, To_Char(100 * Sum_Free_m / Sum_m, '99.9999') || '%' As Pct_Free, 100 - To_Char(100 * Sum_Free_m / Sum_m, '99.9999') || '%' As Pct_used From (Select Tablespace_Name, Sum(Bytes) / 1024 / 1024 As Sum_m From Dba_Data_Files Group By Tablespace_Name) Left Join (Select Tablespace_Name As Fs_Ts_Name, Max(Bytes) / 1024 / 1024 As Max_m, Count(Blocks) As Count_Blocks, Sum(Bytes / 1024 / 1024) As Sum_Free_m From Dba_Free_Space Group By Tablespace_Name) On Tablespace_Name = Fs_Ts_Name ORDER BY Sum_Free_m / Sum_m; 可以看到sysaux使用空间有260M左右,再去查询下sysaux表空间里具体存放了什么数据
pyecharts bar每个柱子显示不同的颜色 开门见山 X(或y)轴数据列表的元素,按照这个格式来就可以渲染成不同颜色了:
{'value': 200,'itemStyle': {'color': 'pink'}} 例如:
[{'value': 200,'itemStyle': {'color': 'pink'}},22,34,213,345,643,324,543] 第一列为粉色
工具介绍:
Binwalk是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具, 具体来说,它被设计用于识别嵌入固件镜像内的文件和代码。 Binwalk使用libmagic库,因此它与Unix文件实用程序创建的魔数签名兼容。 Binwalk还包括一个自定义魔数签名文件,其中包含常见的诸如压缩/存档文件,固件头,Linux内核,引导加载程序,文件系统等的固件映像中常见文件的改进魔数签名。
在CTF中Binwalk常用于分析隐藏文件
Windows下安装:
1.你需要先安装python
2.从github下载代码到本地 https://github.com/ReFirmLabs/binwalk
3.进入Binwalk所在文件夹 执行命令 程序将会自动安装
C++ vector return{} 返回错误 在解答LeetCode两数之和的题目使用{}返回vector出现了错误
部分源代码
int array1[4] = {2,7,11,15}; int array2[3] = {3,2,4}; int array3[2] = {3,3}; int target1 = 9; int target2 = 6; int target3 = 6; Solution s; vector<int> nums1(array1,array1 + 4); vector<int> result = s.twoSum(nums1,target1); cout << "[" << result[0] << "," << result[1] << "]" << endl; vector<int> nums2(array2,array2 + 3); result = s.twoSum(nums2,target2); cout << "[" << result[0] << "," << result[1] << "
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { for(int i=0;i<nums.size();i++) { for(int j=i+1;j<nums.size();j++) { if(nums[i]+nums[j]==target) { return {i,j}; } } } return {}; } };
package com.itheima.test; /*定义类Test03,请定义三个getSum()方法,可以分别求出: 两个整数的和 两个小数的和 一个整数数组所有元素的和 并在main()方法中对这三个方法进行测试*/ public class Test09 { public static void main(String[] args) { int sum1= getSum(3,4); System.out.println(sum1); double sum2= getSum(0.3,4.3); System.out.println(sum2); int[]arr={2,4,2}; int sum3= getSum(arr); System.out.println(sum3); } public static int getSum(int a,int b){ int sum1=a+b; return sum1; } public static double getSum(double a,double b){ double sum2=a+b; return sum2; } public static int getSum(int[]arr){ int sum3=0; for (int i = 0; i < arr.length; i++) { sum3+=arr[i]; }return sum3; } }
〇、软件清单 STM32CubeMXClionen.stsw-link009.zip —— ST-Link V2的驱动,Clion需要更新一下这个驱动gcc-arm-none-eabi-5_4-2016q3-20160926-win32.exe —— win下的arm架构交叉编译环境java1.8.0_261-jdkjava1.8.0_261-jreLLVM-9.0.0-win64.exe —— c编译器,我VScode搭配的是这个+下面的MinGWMinGW —— c编译器,知乎那个教程好像用的是这个openocd-esp32-win32-0.10.0-esp32-20200526.zip —— 下载程序用的st_nucleo_f103rb_stlink_v2.cfg —— 自己写的一个OpenOCD的配置文件,放在XXX\openocd-- esp32\share\openocd\scripts\board下,创建工程时需要选用这个 一、CubeMX 1、简介 cubemx是ST官方出的,一款使用HAL库,自动生成stm32初始化代码的软件。与其配套的IDE叫STM32CubeIDE,我没用过,你们可以试试。HAL库:Hardware abstract layer,硬件抽象层,ST官方出的。首先要和标准库做对比,野火那套用的库函数就是标准库,它的特点是非常细节,具体到硬件实施,接近寄存器操作。而HAL库封装程度要高一点,各种函数或者变量的命名格式也很容易看懂,总之就是用的更顺手一点。自动生成:字面意思,FULL AUTO。初始化代码:意思就是只帮你初始化了,启动还是需要自己启动的。野火那套是初始化和启动写一起了,假如有多个设备联合工作,初始化好的就自己先跑起来了(例如定时器中断),相当异端。 2、使用流程 2.1、一般使用流程 芯片选型配置RCC:选HSE-Crystal/Ceramic Resonator,配置时钟树配置SYS:选Debug-Serial Wire其他 注:只有当1-3步完成之后才能配置别的,否则可能会遇到奇怪的bug,例如没选debug方式的话下次程序就下不进去。 2.2、新手上路流程 一般软件下好打开之后就会让你导包,点这个 2. 选STM32F1系列,安装
3. 开始上路,新建工程
4. 直接输型号
5. 打开界面后我也不做翻译了,上面这些选项卡懂得都懂,不知道可以查一下
6. 配置系统核心(System Core),字面意思,都核心了肯定是重要的东西,在这里需要配置两个东西,一个是RCC,一个是SYS,其余默认。这俩一个是时钟树,一个是Debug方式,也就是下载方式,我们用的是SWD。
7. 然后打开Clock Configuration,这里是真·时钟树,一般直接在这里输入72然后回车就完事了,软件会自动给你找合适的方案。
8. 然后配置其他东西,这里就直接参考(可以暂时不弄):
定时器中断:https://blog.csdn.net/toopoo/article/details/79748683
定时器PWM:https://blog.csdn.net/toopoo/article/details/79749851
定时器输入捕获:https://blog.csdn.net/as480133937/article/details/99407485
9. 然后保存,起个名字ctrl+S
10. 然后选工具链和版本
11. 选这俩
12. 然后再保存一边直接点生成就好
13. 然后可以看一下它生成的代码,值得注意的一点就是,你自己编写的代码必须放在这种格式里面【USER CODE BEGIN/END】,写在其他地方的话下次【生成】会被直接删掉。
14. 剩下的自己看注释就好了。
二、Clion+CubeMX联动 clion是啥就不用多说了,目前为数不多支持正经c语言的现代化大厂IDE。
pycharm、idea、goland都是jetbrains一家公司的,它们有统一的界面,非常友好。
2.1、预习 用clion编stm32程序,首先看这篇:https://zhuanlan.zhihu.com/p/63672432以上工作配置好后(意思是可以编译通过),开始配置流程,如果不安这个步骤来的话可能联动不起来。只有当以上工作完成后才可以继续下一步。 2.2、一般使用流程 首先打开clion,创建一个stm32cubemx的工程。要明白工作区和工程文件夹的概念。例如下图中,建立在桌面的工作区【workspace】,在工作区中建立工程文件夹【project】,之后工程文件内容就存放在文件夹【project】里。如果是单级目录的话,cubemx或clion识别不到工具链。 2.
系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源# free -m # 查看内存运用量和交换区运用量
# df -h # 查看各分区运用情况
# du -sh # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
求两个整数的最大公因数的三种方法 //复习实验1 // 求两个整数的最大公约数 //1.连续整除法 m n //2.欧几里得算法 m n //3.相减法 m n #include<stdio.h> using namespace std; int commFactor1(int m,int n)//1.连续整除法,实质就是遍历,从2,一个一个尝试 { int i,factor=1; for(i=2;i<=m && i<=n;i++) { while(m%i==0 && n%i==0) { factor =factor*i; m=m/i; n=n/i; } } return factor; } int commFactor2(int a, int b) //2.欧几里得算法(辗转相除法) 被除数/除数=商....余数 //用较大的数除以较小的数,取余数,余数为0则最大公因数为除数 余数不为0,则用余数和较小的数 重复上述操作,直到余数为0,取此时的除数为最大公因数 { if (a >= b){ int r = a%b; if (r == 0) return b; else commFactor2(b, r); } else commFactor2(b, a); } int commFactor3(int m,int n)//相减法 被减数-减数=差 如果差==减数,则差即为最大公因数,若不相等,则在用减数和差重复上述操作直到差==减数为止。 { int t; if(m<n){ t = m; m = n; n = t; } if(m==n){ return m; }else{ return commFactor3(m-n,n); } } int main() { int a,b; printf("
1.挂载6.5-20190505.iso
mount -o loop /dev/cdrom /mnt
创建镜像存放目录并复制原镜像文件到此目录
mkdir WSOS-20190505-cd
cp -r /mnt/* /home/WSOS-20190505-cd/
2.修改isolinux目录下的isolinux.cfg中的内容(根据需要修改,此处我添加了一个背景图: menu background bg-install.jpg)
vi isolinux/isolinux.cfg
准备一张图片最好是 640×480像素的文件转换成<14位的色位上传到系统所在的目录下,我这里是/home/WSOS-20190505-cd/下面
这里也可以用PS软件做一个png-8的图片,我看网上说的只要是640*480像素下位深度不大于14都可以)
3.kscd.cfg和kscd1.cfg中关于装机完成后建议改成poweroff
4.利用mkisofs重新生成iso新镜像
mkisofs -o WSOS-6.5-20190505-cd-zjc.iso -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -joliet-long /home/WSOS-6.5.-20190505-cd/
最后通过ftp下载软件或者放到http服务器目录下使用迅雷下载出来,推荐迅雷,这个速度比较快,一s能达到20M,跟硬盘也有关系,
我测试的我23.2m/s峰值东芝ssd硬盘
You might also like...
centos7系统下的snapd和certbot的离线安装 什么是snap? 是一个包含应用程序代码和快照的squashFS文件系统。包含特定元数据的snap.yaml文件。它有一个只读文件系统,安装后还有一个可写区域。 是独立的。它捆绑了所需的大多数库和运行时,并且可以在不影响系统其余部分的情况下进行更新和还原。 是通过安全机制限制在OS和其他应用程序中的,但可以根据用户控制的细粒度策略和OS默认值与其他snap交换内容和功能。 什么是Snapd? Snapd是一个REST API守护进程服务,它在您的Linux系统上运行,用于管理snap包(“snaps”)。它与snap store交互,并提供与之交互的命令客户端snap。在开始管理任何Linux发行版上的snap之前,必须安装snapd。 为什么要使用snap? Snap为每个Linux桌面、服务器、云或设备打包任何应用程序。Snaps的安装速度更快,创建起来更容易,运行起来更安全,而且它们会自动更新,所以你的应用程序永远是最新的且永不中断。你可以带上你自己的基础架构或使用官方的。 Snappy包管理器是一个跨发行版的包管理器。它最初是为Ubuntu系统构建的,但现在其他主要的Linux发行版( Fedora, Linux Mint, RHEL, OpenSUSE,Arch Linux等)都能使用Snappy。与RPM和Deb不同的是,Snap软件包可以安装并运行在所有Linux发行版。可以简单的理解为这是一个类似yum dnf的包管理器,但,它有一个商店的概念,类似apple商店,而不是源的概念。
Snap包是一个经过压缩的文件系统,由宿主机操作系统动态挂载到/snap目录。其携带的元数据由snapd处理,然后snapd为其创建一个安全的沙盒环境。Snap软件包的优势在于它是一个通用的软件包,缺陷是体积比较大,这是因为snap软件包自带了依赖包和运行库以支持所有Linux发行版。
那么,certbot是snapd商店里的一个软件,如果按照正常的流程安装snapd然后安装certbot,我们可能需要先配置外部yum源,然后使用yum安装snapd,但,常常需要面对网速的考验,并且,snap的软件包通常都是很大的,500兆左右是常态。
经我收集并整理了一套可快速安装snapd和certbot的离线安装包,下载地址为:
链接:https://pan.baidu.com/s/1IF3EMx9aThJnITJiWHg7KQ 提取码:snap 下面简单介绍一下如何使用这个离线安装包。
离线包内有一个文件夹和一个tar.gz 包,文件夹的内容大概为:
[root@centos6 snapd]# ll total 19620 -rw-r--r-- 1 root root 346256 May 3 23:13 libzstd-1.4.9-1.el7.x86_64.rpm -rw-r--r-- 1 root root 86572 May 3 23:13 lz4-1.8.3-1.el7.x86_64.rpm -rw-r--r-- 1 root root 2971301 May 3 23:13 snap-confine-2.49-2.el7.x86_64.rpm -rw-r--r-- 1 root root 16082953 May 3 23:13 snapd-2.49-2.el7.x86_64.rpm -rw-r--r-- 1 root root 402221 May 3 23:13 snapd-selinux-2.
P1119 灾后重建(Floyd算法优化) 本题是一道Floyd算法的应用。
Floyd算法是基于动态规划方程的推导而来,利用每一个合理的中间点来实现对两点之间距离的更新,具体的状态表达方程为:
其中还有一些细节需要注意,本题给出了每一个村庄重建的时间,而这就需要我们额外注意,如果我们每次进行Floyd算法求询问中的两点最短路径那么时间复杂度就为O(q * n^3),显然已经超过了我们的所给时间,而事实也是这样,只能得50分,tle了5个点。
那么我们就需要对Floyd算法进行一些简单的优化,由于题干中给到,每次询问的时间都是不降的(果然高中老师说的对呀,题干没有废话),那么我们就可以按照每次询问的时间,分别按顺序更新每个中间点,这样我们就将时间复杂度大大缩减,达成了我们的目的。
来看一下代码叭。
#include<iostream> #include<stack> #include<algorithm> #include<cstring> #include<string> #include<map> #include<cmath> #include<queue> using namespace std; typedef long long ll; const int p = 1e9 + 7; typedef pair<int, int> pii; const int N = 310; int tim[N]; ll n, m; int g[N][N]; void init() {//初始化邻接矩阵 for (int i = 0; i <= n; i++) for (int j = 0; j <= m; j++) { if (i == j) g[i][j] = 0; else g[i][j] = 0x3f3f3f3f; } } int main() { cin >> n >> m; init(); for (int i = 0; i < n; i++)cin >> tim[i]; for (int i = 1; i <= m; i++) { int a, b, c; cin >> a >> b >> c; g[a][b] = g[b][a] = c;//存无向图 } ll q; cin >> q; int k = 0; while (q--) { int x, y, z; cin >> x >> y >> z; if (tim[x] > z || tim[y] > z) { cout << -1 << endl; continue; } while (k < n && tim[k] <= z) {//按照所给的时间来更新中间点(原为for(int k = 0; k < n; k++)) for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { g[i][j] = min(g[i][j], g[i][k] + g[k][j]); } } k++; } if (g[x][y] < 0x3f3f3f3f) { cout << g[x][y] << endl; } else cout << -1 << endl; } }
LaTeX插入参考文献,可以使用BibTex,也可以不使用BibTex。
方法一:不使用BibTeX 先在文章末尾(\end {document}之前)写好需要插入的参考文献,逐一写出,例如:
\begin{thebibliography}{99} \bibitem{ref1}Zheng L, Wang S, Tian L, et al., Query-adaptive late fusion for image search and person re-identification, Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2015: 1741-1750. \bibitem{ref2}Arandjelović R, Zisserman A, Three things everyone should know to improve object retrieval, Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on, IEEE, 2012: 2911-2918. \bibitem{ref3}Lowe D G. Distinctive image features from scale-invariant keypoints, International journal of computer vision, 2004, 60(2): 91-110.
jQuery中each方法
定义:each() 方法规定为每个匹配元素规定运行的函数
使用:$.each(arr,function(index,value){
})
参数:arr:遍历数组 function:回调函数 index: 当前遍历的每一个索引值 value:数据值
返回值:是一个数组:并且默认返回遍历的值
注意点:方法可以遍历伪数组.
使用实例:
var arr = [1,2,3,4,5,6,7,8,8,9];
var obj = {
0:1,
2:8,
3:4
}
$.each(arr,function(index,value){
console.log(index,value);
})
console.log("--------")
$.each(obj,function(index,value){
console.log(index,value);
})
结果:
刚把无线网卡驱动装好,但是又发觉输入法上面有问题,默认它是不显示五笔输入法的,真是汗死。。
拼音实在是不过关,所以俺又得把五笔输入法装上去才玩得顺畅。。。
下面二个是我在网上找到的相关资料,有兴趣的可以直接去看!!!
centos6.2安装五笔输入法
CentOS 6.5 安装五笔输入法
---这哥们讲得最详细,我是装好后才看到,我就是在找极点五笔这软件上,浪费了N多的时间,实在是不好了找,现在我把那二个文件全以附件的方式上传,有需要的请自行下载。。。
1、打开Centos的输入法一看,一大堆的输入法,但就是没有五笔。
所以只能是按网上找到的资料进行操作,不管它三七二十一,先把其它的输入法统统删除。
我是在ROOT用户的下面操作(这个其实是不安全的,但是没办法,懒人一个),打开终端,在上面直接输入命令:
yum remove ibus-----把 ibus table删除
接着,我们再把我们要的五笔安装上去,命令如下:
yum install ibus ibus-table------这个只是把基本的输入法框架安装上去。
注:其实Centos 还是比较人性化的,本身就集成了五笔输入法,只是它没有显示出来吧了,如果我们只是想要用到集成的五笔话,可以直接把上面的命令更改成:
yum install ibus ibus-table-wubi
这样,我们就是把Centos 集成的五笔86版本安装上去了
在点任务栏中那个键盘小图标,在下拉菜单选“重新重启” 重启ibus输入法,然后再点一下键盘小图标并在下拉菜单中选“首选项”,然后在弹出的窗口中点击“输入法”选项卡,接着点“选择输入法”>"汉语",然后点"添加" 五笔,OK!
我们就可以使用五笔了。但是集成的五笔实在是不怎么样,我用了一下,发觉《开》字与平时打的方法不一致,打不出来,所以只能是重新按找到的资料,安装《极点五笔》。
我又只好是在网上找《极点五笔》的软件包,时间就是浪费在找安装包的上面。。。。
所以为了让大家不要在这里浪费时间,我把安装包上传上来,给大家免去寻找的时间,因这里上传有限制,所以只能是上传到别的地方,请点下面的链接下载吧。大家也可以按上面分享的第二个链接里下载。
http://pan.baidu.com/s/1gd9slF1(我明明上传51上面去了,但是一直没有显示出来,可能还要审批吧,只能在百度网盘里共享出来)
把软件包下载下来后,我们就可以安装极点五笔了,我是把它放在桌面的一个WUBI文件夹里
先把终端打开
cd wubi(进入到安装包的文件夹里)
ls (显示当前文件夹里的内容,确认安装包存在)
tar -zxvf vissible-ibus.tar.gz (因为软件包是tar压缩的,所以用tar命令解压)
cp vissible.db /usr/share/ibus-table/tables
cp vissible.gif /usr/share/ibus-table/icons
因为我是直接用root用户登录的,所以没有前面的 sudo 命令
完成后,在点任务栏中那个键盘小图标,在下拉菜单选“重新重启” 重启ibus输入法,然后再点一下键盘小图标并在下拉菜单中选“首选项”,然后在弹出的窗口中点击“输入法”选项卡,接着点“选择输入法”>"汉语",然后点"添加" 极点五笔,OK!
祝大家玩得开心!!!!
1.两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例1
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例2
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例3
输入:nums = [3,3], target = 6
输出:[0,1]
提示
2 <= nums.length <= 103 -109 <= nums[i] <= 109 -109 <= target <= 109 只会存在一个有效答案 使用暴力枚举方法提出所有的数字对,尝试暴力解决方案并优化,但是速度过慢。 搜索(x,y)与搜索target - x 的速度差别 在不使用数组情况下,也可以使用图(散列图、哈希)来解决问题 代码演示
按“window+E”键出现【找不到应用程序】或【explore.exe找不到】的解决方法 问题描述 按“win+e键”无法打开此电脑
解决步骤 步骤1 按“win+r”键,调出运行框,输入“regedit”确定,打开注册表。 步骤2 找到以下目录 计算机\HKEY_CLASSES_ROOT\CLSID{52205fd8-5dfb-447d-801a-d0b52f2e83e1}\shell\OpenNewWindow\command
步骤3 右击“command”,选择【权限】,点击【高级】 步骤4 在command高级安全设置中,点击【更改】,修改权限所有者 步骤5 选择【高级】,点击【立即查找】,选择输入对象的名称,单击“确定” 步骤6 点击需要修改的“组或用户名”,修改Users的权限,单击“确定”。 步骤7 单击command,在右边出现的窗格中删除“DelegateExecute”项 步骤8 双击“(默认)”这一项,将数值数据设置为: explorer.exe ::{20D04FE0-3AEA-1069-A2D8-08002B30309D},单击“确定”。
最后,使用快捷键“win+e”键成功打开此电脑。
有时我们需要让linux系统按我们指定的时间规则自动的处理某些作业,例如在某个时间点执行某个脚本,周期性的备份数据,这时候就可以制定任务计划了。任务计划分为一次性和周期性两类。
一、制定一次性任务计划
一次性任务计划即执行完一次后就没有了的那种,可以通过at或batch命令生成。计划内容会以文件的形式写入/var/spool/at目录中,一个任务计划对应一个文件,系统的服务进程atd(at daemon)会读取这些文件并执行。某任务执行完毕后,其对应的文件也会被自动删除。
1、为安全起见,我们通常需要编辑/etc/at.allow(白名单)或/etc/at.deny(黑名单)以允许或拒绝某些特定用户制定任务计划,这两个文件对at和batch命令都适用
⑴直接在文件中输入用户名,一行一个用户
⑵若这两个文件都不存在,默认只有root可以使用at和batch命令
⑶/etc/at.allow若存在但没有任何内容,表示允许的用户为空,意即拒绝所有用户(root除外),同样/etc/at.deny若没有任何内容,则表示放行所有用户。
⑷为避免混乱,/etc/at.allow和/etc/at.deny通常不同时使用。但若两者都存在且有矛盾的地方,以/etc/at.allow优先。
2、at:生成一次性任务计划
用法:at [option]... [TIME]
at命令后不能为空,必须接选项或参数
常用选项:
-d 作业编号:删除指定的待执行任务,相当于atrm
-l:显示待执行的任务的列表,相当于atq
-m:任务执行完成后向用户发送E-mail(默认)
-c 作业编号:显示指定作业的实际内容
任务计划创建格式:
at TIME
> COMMAND1
> COMMAND2
...
> 按Ctrl+D结束,结束符为EOT
TIME格式:
HH:MM 如14:30
HH:MM YYYY-MM-DD 如14:30 2015-10-07
HH:MM[am|pm] [Month] [Date] 如02:30pm October 07
HH:MM[am|pm] + number [minutes|hours|days|weeks] 如14:30 + 2 weeks
now + #UNIT 如now + 5minutes
noon,midnight,teatime,tomrrow
其它命令:
atq:查看待执行任务列表,相当于at -l
atrm:删除指定作业,相当于at -d
注:任务作业执行后,若有错误或标准输出,则会以邮件形式告知提交者。可重定向至其他地方或干脆丢弃(> /dev/null)。[root@localhost ~]# at now+2minutes # 两分钟后执行
shFlags简介
看到有脚本中使用了shFlags,于是google了一下,发现还是个挺方便的东西. https://github.com/kward/shflags/wiki/Documentation12x sha ...
(转)C#序列化和反序列化小例子
网友关于序列化和反序列化的总结: ①序列化基本是指把一个对象保存到文件或流中,比如可以把文件序列化以保存到Xml中,或一个磁盘文件中 ②序列化以某种存储形式使自定义对象持久化: ③将对象从一个地方传递 ...
cmd.exe-应用程序错误 应用程序无法正常启动(0xc0000142)
之前还好好的,突然就遇到这个问题,运行CMD报错(如上图),后面无论怎么重启都是这样. 导致所有与CMD相关的程序任务都出错,例如Ctrl+Alt+Delete 只好开始各种百度谷歌 找到如下几种解决 ...
J2EE5(Servlet2.5)对EL表达式的支持
JAVA EE5默认 支持EL表达式. 办法一:在每个jsp文件的最上方加入以下代码: android 上下文菜单详解
本文使用xml来创建上下文菜单 <?xml version="1.0" encoding="utf-8"?> 算法之合并排序(mergeSort)
合并排序算法在结构上是递归的,采用分治策略:就是将原有的问题划分为 n 个规模较小但结构与原问题相似的子问题,递归地解决这些子问题,然后合并其结果,就得到原问题的解. 合并排序的模式一般如下: 1.分 ...
SKLabelNode类
继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架 /System/L ...
HTML_1
HTML 指的是超文本标记语言: HyperText Markup LanguageHTML 不是一种编程语言,而是一种标记语言标记语言是一套标记标签 (markup tag)HTML 使用标记标签来 ...
android sdk content loader 0%不动
Make sure that eclipse is not active. If it is active kill eclipse from the processes tab of the tas .
JDK的安装与环境变量配置详细教程 JDK是开发java程序必备的开发工具包,要想做java程序开发,那么就需要装jdk。下面跟大家分享下jdk安装和环境变量配置的详细过程。
下载jdk 首先先去下载jdk安装包。点击此处或复制地址:
https://www.oracle.com/java/technologies/javase-downloads.html
到浏览器打开打开Oracle官网(因为Oracle收购了sun公司,所以可以直接在Oracle官网上下载jdk)。可以看到,截至目前(2021-5-1),JDK已经更新到了JDK16了。害,吐槽一下这个更新速度。不过目前企业中任然以JDK8为主,所以我也是装jdk8的版本。
如图所示:
向下滑动页面,找到jdk8,我们下载jdk8就行,点击JDK Download
如图所示:
进入如下界面:
向下拉,找到自己操作系统对应的版本。我的电脑是windows10 64位的操作系统,所以我选择windows x64这个版本,小伙伴可以根据自己的操作系统选择对应的版本就行,然后点击下载。
如图所示:
然后把这个约束同意了,然后点击下载(不同意肯定就不能下载咯)
如图所示:
小伙伴们点了下载可能会让你登录,有Oracle账号的就登录一下,没有的注册一个也行,填一些简单的信息即可,然后就弹出下载的提示框了,选个路径,点击下载就行。如果不想注册的话,我在文末提供了百度网盘的下载链接,各位小伙伴可以用百度网盘下载。
安装jdk 下载完成我们得到一个.exe的执行文件,直接双击这个执行文件就行
如图所示:
这个不用管,直接下一步就好:
这里需要小伙伴们注意一下,这里有个路径,如果需要的话可以改,但是不建议路径中有中文或者含有空格。选好之后直接下一步就行:
执行安装中…
到这一步jdk就已经安装上了,但是还会弹出一个独立的jre,这个地方建议小伙伴们都把这个独立的jre都装一下,因为有些开发工具,例如eclipse就会去检测这个jre,如果没有可能会报错。我这里把这个独立的jre装上。
这里也是,路径中尽量不要出现中文和空格。选好路径之后直接下一步等待安装就好。
安装的过程不会持续很久,很快就能完成,完成之后会出现这个界面,点击完成即可完成对jdk和独立jre的安装,下面是配置环境变量了
配置环境变量 首先,右键此电脑,点击属性:
点击高级系统设置:
点击环境变量:
这里需要各位小伙伴注意一下,这个地方有两个配置环境变量的地方,上面这个配置的环境变量仅当前用户有效,下面这个是所有用户都有效,我就配在系统环境变量下。点击新建
弹出这个窗口,输入变量名:JAVA_HOME,注意是全大写,这既是约定俗成,也是为我们后面装tomcat做个铺垫。因为tomcat要搜索“JAVA_HOME”这个的目录。(反正这么做就对了)点击浏览目录,选择自己jdk的安装目录,到根目录就可以,这里各位小伙伴要根据自己的安装路径来选择,然后点击确定。
现在JAVA_HOME变量就设置好了:
现在我们要配置Path环境变量。在环境变量中找到Path环境变量,如果没有就新建一个就好,问题不大。如图所示:选择Paht变量之后,点击编辑(如果是windows7这一步有点区别)。
出现这个界面,我们点新建:
在输入框中输入变量值:%JAVA_HOME%\bin,然后点击确定
为了保证万无一失,这里建议各位小伙伴把我们刚刚新建的变量值往上移,移动到最上面(因为可能在电脑上的其他路径中存在相同的可执行文件,然后在搜索的时候不能正确执行),点击确认,环境变量配置就大功告成了!
(有的小伙伴可能在其他地方看到还要配置classpath环境变量,但是实际上是不需要的哦,配置了没什么鸟用,不用配置都可以的)
如图所示:
验证安装和配置是否正确 现在我们来验证环境变量是否配置成功。按快捷键:win+r打开运行,输入cmd命令,然后回车:
打开命令行窗口之后输入javac然后回车:
继续输入java:
输入java -version:
如果前面三步都正常输出了,那么就证明我们安装jdk并配置环境变量成功了!
jdk百度网盘下载链接:https://pan.baidu.com/s/10okBC5PJaAcT0wZUyB7mhw
提取码:j3nx
1. 编译oRTP海思平台移植ortp20过程如下:
编译及安装
进入主目录:cd ~/ortp-0.20.0
解压
执行如下命令:
a)./configure
b)make
c)make install
装好以后系统环境如下,静态动态库安装到了/usr/local/lib目录下,包括libortp.la、libortp.so libortp.so.8 libortp.so.8.0.0。头文件在/usr/local/include目录ortp目录下。
库文件复制到/usr/lib文件夹下,头文件复制到/usr/include下。
2. 交叉编译oRTP
1)库文件编译
进入主目录:cd ~/ortp-0.20.0
解压
执行如下命令:
a ) ./configure --host=arm-hisi-linux
或 ./configure --prefix=/opt/ortp --host=arm-hisi-linux
注:执行make时程序报错我们把文件/ortp-0.20.0/src/b64.c 中209-212行注释掉即可
#ifndef__WATCOMC__
// assert(characters[0] >= 0&& characters[0] < 64);
// assert(characters[1] >= 0&& characters[1] < 64);
// assert(characters[2] >= 0 &&characters[2] < 64);
// assert(characters[3] >= 0 &&characters[3] < 64);
#endif /*__WATCOMC__ */
/opt/ortp 是最后生成的库文件和头文件的文件夹
arm-hisi-linux是使用的平台,另外有可能用到arm-hismall-linux(如果编译器不匹配可能造成链接不上库文件)
b)make
c)make install
相关讨论
我装了windows系统,然后又装了suse,现在默认启动是suse,想改为windows不知道怎么改,希望有人可以帮我!
/etc/grub.conf没有权限!boot/grub.conf也没有权限,要怎么办呢?
by
qumingzhong
-
系统管理
-
2006-12-25 09:42:14阅读(1186) 回复(3)
我通过配置,已经将suse的177端口打开.但是xmanager还是不能登录.
通过抓包发现.xmanager向177端口发出request的upd报文请求后,suse根本不立即给响应,而是在120秒之后才回复willing响应. 此时xmanager早已超时退出了.请问这是什么原因.
我该怎么解决呢?
by
mingjwan
-
系统管理
-
2006-06-17 08:54:02阅读(727) 回复(0)
我按照http://www.ccw.com.cn/server/yyjq/htm2005/20050906_0994B.htm
上的把服务器设置好了,但是扫描服务器好像177端口并没有开,我应该怎么设置,服务器是CENTOS 4.1
netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:32769 0.0.0.0:* LISTEN
tcp ...
by
lingy
-
Linux论坛
-
2005-09-30 14:32:27阅读(3057) 回复(13)
我配置完XDM后,通过xmanager可以看到登录页面,如果我用其它用户可以登录。但是不允许root登录。
by
yesily
-
Linux论坛
-
2005-05-09 16:46:25阅读(1172) 回复(0)
要suse服务器上挂了127台终端,当再登录一台时,报“network port all in use”错。不知如何解决,请教各位大虾。
不好意思,还是把最新重启的一次一整段都贴上吧:
May 3 18:25:23 pul3 rtkit-daemon[6901]: Sucessfully made thread 6905 of process 6899 (/usr/bin/pulseaudio) owned by '42' RT at priority 5.
May 3 18:25:23 pul3 pulseaudio[6899]: conf-parser.c: [/usr/share/pulseaudio/alsa-mixer/paths/hdmi-output-0.conf:6] Unknown lvalue 'required-any' in section 'Jack HDMI/DP,pcm=3'.
May 3 18:25:23 pul3 rtkit-daemon[6901]: Sucessfully made thread 6906 of process 6899 (/usr/bin/pulseaudio) owned by '42' RT at priority 5.
May 3 18:25:24 pul3 kernel: snd_hda_intel 0000:81:00.1: IRQ timing workaround is activated for card #1.
编辑:2014年11月17日
这个答案可能仍然有效,但在2014年,using the Audisp plugin是更好的答案.
如果您正在运行stock ksyslogd syslog服务器,我不知道如何执行此操作.但是有很好的指示可以在Wiki上使用rsyslog.(http://wiki.rsyslog.com/index.php/Centralizing_the_audit_log)
我将总结一下:
>在发送客户端(rsyslog.conf):
auditd audit.log
$InputFileName /var/log/audit/audit.log
$InputFileTag tag_audit_log:
$InputFileStateFile audit_log
$InputFileSeverity info
$InputFileFacility local6
$InputRunFileMonitor
#
请注意,imfile模块需要先前已在rsyslog配置中加载.这是负责的一行:
$ModLoad imfile
因此,请检查它是否在您的rsyslog.conf文件中.如果不存在,请在### MODULES ###部分下添加它以启用此模块;否则,审计日志记录的上述配置将不起作用.
>在接收服务器(rsyslog.conf)上:
$template HostAudit,"/var/log/rsyslog/%HOSTNAME%/audit_log"
local6.*
在两台主机上重新启动服务(service rsyslog restart),您应该开始接收审计消息.