一周思进

每周学习总结,相信可以走的更远.

python学习-ssh脚本自动登入

之前项目中需要用到 ssh 端口转发功能,因为需要 ssh 账户和密码进行认证,且是以非交互的方式执行,最后通过使用 expect 库来完成了 ssh 自动登入。 python 同样有类似的库,pexpect。做嵌入式开发,平常可能经常需要 ssh 登入设备,而不同设备 ip 不一样,但账户及密码基本都是一样的,那很适合通过 python 脚本来实现 ssh 自动登入操作。 首先需要按照...

树莓派-ssh密码及公钥登入

一、SSH 登入 树莓派系统在 sd卡 烧录好后,可以直接在 sd 卡里创建个 ssh 空白文件,这样就默认打开 ssh 服务了。 系统启动后,就可以使用如下命令方式 ssh 登入 ssh -p port 用户名@远程主机iP 如果端口默认就是22,则可以省去 -p 选项 因为树莓派支持 bonjour 协议,如果设备 IP 是 DHCP 分配的,搞不清当前的 ip 地址(当然,...

C语言不完整类型

因为 openssl 1.0.2 已不再维护,在进行 openssl 升级到 1.1.1 版本的时候,应用中有不少使用 openssl 的接口都需要进行相应的修改。 而修改最大的感受就是很多结构体都无法直接声明使用了,只能改为指针声明使用。 在 openssl 的 CHANGES 文档(该文档对于 openssl 的变更很有必要查看了解)中也有说明,如下: Made EVP_MD...

python学习-运算符

使用 python 运算符操作的时候,总是会和 C 语言的一些运算符搞混… 做个记录,如下表所示,无表示不支持对应的操作符 操作符 说明 示例 Python结果 C 结果 + 加 10+11 21 21 ...

tcp close send RST

一直以为网络套接字进行 close 的时候,就是发送 FIN 包给对端,但发现有时候发送的却是 RST 包,通过内核源码查看,如果 close 套接字的时候,接收缓冲区还有未读数据,则是发送的 RST,源码中有如下注释: /* As outlined in RFC 2525, section 2.17, we send a RST here because data was lo...

CMake 创建简单工程

最近在看 《Professional-CMake-A-Practical-Guide》,下面对于如何使用 cmake 编译生成一个可执行文件做下记录。 cmake 工程创建时一般分两个目录,一个是源码目录,一个是构建目录,CMakeLists.txt 及工程代码都在源码目录,而 cmake 构建产物则都在构建目录。这样便于文件的版本管理,看起来也会非常干净,不至于中间成果物与源码在一起而显...

openssl交叉编译

一、源码下载 去官方网站下载最新版本的 openssl,需要注意推荐使用1.1.1版本,1.1.0及1.0.2版本都已不再支持维护,如系统还在使用老版本的openssl,也应尽快升级到1.1.1版本。 直接点击上图中的 openssl-1.1.1g.tar.gz 下载源码压缩包,通过浏览器完成下载,也可以使用 wget 方式下载,如下 wget https://www.openss...

Cmake 逻辑操作

6.1.5. Existence Tests 如下语句用于判断 CMake 实体是否存在,在较大、复杂的工程尤其有用 if(DEFINED name) if(COMMAND name) if(POLICY name) if(TARGET name) if(TEST name) # Available from CMake 3.4 onward DEFINED 只判断对象是否...

二分查找

二分查找常用场景就是针对已排序的数组进行搜索,下面是代码实现: def bsearch(list, num): low = 0 high = len(list) - 1 while(low <= high): # 注意要包含等于,否则如果只有一个的情况下,还需要单独写if语句 mid = low + (high-low) // 2 ...

分治题解

最近学习积极性不高啊… 要控制啊 = = 将之前 ARTS 做的三个分治思想的题目单独整在一块再发下,方便后面回顾吧 一、归并排序 思路: 将数组拆分成两半,分别对这两半进行排序,然后将这排序后的两半再进行排序得到最终结果 将数组拆分两半的过程可以使用递归编程方式,直到无法再进行拆分为止 def merge(array: List, start: int, midd...