- 博客(15)
- 收藏
- 关注
原创 网络部分常见问题
UDP协议具有无连接、不可靠、面向数据报的特点,而TCP是面相连接、可靠传输、面向字节流的。三次握手的目的是为了确认双方的接收和发送能力是否正常,第一次握手验证了客户端的发送和服务端的接收正常,第二次握手验证了服务端的发送正常,但站在服务端的角度看并不确定客户端是否收到了SYN+ACK报文,因此并不能确认客户端的接收是否正常。,此时B以为是A发送的新的请求连接,于是发出确认字符,如果没有三次握手,该连接建立,但是A并没有发出请求连接,所以B就会一直等待A发送确认字符,这样B等了很久,白白浪费B的资源。
2024-08-02 09:26:18 743
原创 Linux系统编程常见问题
程序执行的结果出现二义性行为,例如多个线程对同一个变量进行加或减操作,可能会发生一个线程从内存中读取变量值到寄存器时,线程被切换,另一个线程被调度执行从内存中拿到相同的变量值进行操作。当之后前者线程被调度时,直接从寄存器中拿值操作并将结果写回内存。就会出现变量分别被两个线程操作了一次减一,而结果只减了一次1的现象。
2024-08-01 22:40:01 796
原创 KMP算法笔记
求next数组的过程,相当于用整体的匹配规则(自己用自己的next数组)匹配前缀和后缀。上面代码的回退j=next[j-1]和整体匹配的时候 j 回到对应的next数组的位置操作一样。一次循环需要和前后缀不同的情况,考虑前后缀相同的情况(得到next数组的值)i代表后缀末尾,j代表前缀末尾和j++是最大回文串的长度。kmp算法:(还是没理解太懂,但是差不多)i从1开始一直循环size()-1次。
2024-07-30 18:33:16 175
原创 六大排序算法(4):快速排序
快速排序是对冒泡排序算法的一种改进。以一个数为基准,将数组分为两个子序列,左子序列放比基准数小的数,右子序列放比基准数大的数,然后再将子序列以上述方式操作,直到整个数组有序。
2024-07-23 22:50:26 242
原创 六大排序算法(3):冒泡排序
从左到右,相邻元素进行比较,第一轮比较之后所有数中最大的数浮到最右边;第二轮比较后,所有数中第二大的数浮到倒数第二个位置;依次循环,最后实现从小到大的排序。
2024-07-22 22:44:34 149
原创 六大排序算法(2):希尔排序
希尔排序是对的优化。上次总结了插入排序的性能,在被排序对象逆序有序或接近逆序时插入排序的效率最低,时间复杂度为;在被排序对象顺序有序或解决顺序时效率最高,时间复杂度为。那是否有办法将数组变成接近有序后再用插入排序,希尔找到了这个方法,并命名为希尔排序。
2024-07-22 22:08:19 322
原创 项目框架(2):Socket通讯的服务端类
成功返回一个有效的socket,失败返回-1,errno被设置单个进程创建的socket数量受系统参数open files的限制。(ulimit -a查看)PF_INET为面向连接的socket:1)数据不会丢失;2)数据的顺序不会错乱;3)双向通道。SOCK_DGRAM为无连接的socket:1)数据可能会丢失;2)数据的顺序可能会错乱;3)传输的效率更高。protocol(最终使用的协议):在IPv4网络协议家族中,数据传输方式为的协议只有,数据传输方式为SOCK_DGRAM。
2024-07-05 11:38:59 892
原创 项目框架(1):进程的心跳
进程的心跳用来辅助守护模块对项目的各个进程是否正常运行进行判断,当进程的心跳间隔大于阈值时,认定程序异常,守护模块终止程序并由调度模块重新启动。保障了项目运行的稳定性。
2024-07-04 10:30:43 155
原创 学习记录:中序线索二叉树
char data;int ltag;//左指针是否为线索化指针标志位,1为线索化,0为非线索化int rtag;//左指针是否为线索化指针标志位,1为线索化,0为非线索化。
2024-05-09 18:05:14 340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人