一周思进

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

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...

ARTS-WEEK10

Algorithm 用分治的思想重新做了下LeetCode 14题,还是没能直接做出来… class Solution: def longestCommonPrefix(self, strs): if not strs: return "" return self.lcp(strs, 0, len(strs)-1) ...

ARTS-WEEK9

Algorithm 这周学习快速排序 快排的整体思路是先选择一个值,比如直接选择末尾值,然后将数组中的元素与该值进行比较,比这小的放左边, 比这大的放右边,这样操作完之后,选择的这个值在数组中的位置就是明确了的,剩下的就是将左边的数据和右 边的数据通过同样的方法进行操作,可以通过递归方式来完成 这里的重点是如何原地将数值进行左右分区,方式是通过数值交换,思路有点类似双指针,一个指向要被...

ARTS-WEEK8

Algorithm 本周做了下 LeetCode 第8题,文章单独整理见 atoi实现 几个注意点: 1、int型最大值和最小值可以直接用宏INT_MAX和INT_MIN表示,在头文件”limits.h”中定义 2、越界需要通过越界值/10操作提前来进行判断,类似两数相加判断是否会越界,也可以提前通过最大值来减原有值与相加值进行比较 3、这里data需要声明成无符号int整型,否则L...