- 博客(42)
- 资源 (19)
- 收藏
- 关注
原创 阻塞,非阻塞,同步,异步的区别
开发中,经常会听到同步IO,异步IO,阻塞IO,非阻塞IO然而很多人经常混淆认为,同步IO就一定是阻塞的。其实他们是一个不同的概念。阻塞和非阻塞的区分:IO系统调用,如果进行系统调用,进程会陷入内核态直到系统调用完成为阻塞IO,进程无论调用是否成功,会直接返回为非阻塞IO。同步IO: 指的是IO操作的完成是在当前执行流程下同步完成的异步IO:指的是调用返回后,IO操作并没有完成,而是由某个线程负责真正的IO操作,完成后通知原来的线程。所以有,同步阻塞IO, 同步非阻塞IO,异步非阻塞
2022-05-30 01:08:49
113
原创 高并发服务器-无锁队列实现1 (基于ZMQ 1读1写) C++
无锁队列实现,1读1写锁引起的问题: Cache损坏(Cache trashing) 在同步机制上的争抢队列 动态内存分配 Cache损坏(Cache trashing) 无锁队列在保存和恢复上下⽂的过程中还隐藏了额外的开销:Cache中的数据会失效,因为它缓存的是将被换出任务的数据,这些数据对于新换进的任务是没⽤的。处理器的运⾏速度⽐主存快N倍,所以⼤量的处理器时间被浪费在处理器与主存的数据传输上。这就是在处理器和主存之间引⼊Cache的原因。Cache是⼀种速度更快但容量
2022-05-24 12:38:06
360
原创 重温算法导论(六) 堆排序
堆排序,思想就是先建立最大堆,然后从最大堆中取出最大数,作为数组的最后一个数据,重复并把数据取完。排序的数组结构,包含堆数组的长度,有效的堆大小 和堆数据A{ length heap-size A[]}每个节点对应的父节点,左子节点,右子节点维护最大堆的性质,先假定先假定Left[i] 和Right[i] 为最大堆,实现伪代码:MaxHeapify(A, i) //先假定Left[i] 和...
2018-07-05 13:34:36
234
原创 重温算法导论(五) 归并排序
归并排序,就是利用递归的思维,解决排序的问题首先嘉定L R中已经是排好序的数据,利用Merge函数,将他们合并起来Merge函数伪代码Merge(A, p, q, r) n1 = q - p + 1 n2 = r - q L[n1] = A[p, q] R[n2] = A[q+1, r] j = 0 i = 0 for k=p to r-1 if L[i] <= R[i...
2018-07-04 20:56:40
208
原创 重温算法导论(四) 希尔排序
希尔排序,就是插入排序的改进,具体改进的办法,就是利用增量对排序队列进行划分,再使用插入排序,如以下:利用分组排序后,再进行最后的排序其伪代码为:for path=0 to length_dlta for i=path to n //一趟分段直接插入排序 temp = data[i] j=i-path while j>=0 and ...
2018-07-04 19:26:40
527
原创 重温算法导论(三) 冒泡排序
冒泡排序原理简单,从最后的元素与前面的元素比较,小于则交换,最后最小的在最左边伪代码实现如下:for i ← 1 to length[A] //实际数组的下标从0开始 do for j ← length[A] downto i + 1 do if A[j] < A[j - 1] then exchange A[j] ↔ A[j...
2018-07-04 16:58:29
329
原创 重温算法导论(二) 快速排序
快速排序的思想,就是分而治之的思想,也就是把问题分成两个,再继续分解,到最后。具体举例的思想如下:算法导论原书的例子:其实现的伪代码:将一个问题,分解为两个子串的排序问题,利用递归,继续对子串排序,最后实现整串排序QUICKSORT(A,p,r) //原地重排 p,r 对应下标 if p < r q = PARTITION(A, p, r) QUICKSORT(A, p, q-1)...
2018-07-04 13:50:07
156
Python爬虫开发与项目实战(代码)
2017-10-25
eclipse-cpp-helios-SR2-linux-gtk-x86_64_PART2
2017-05-20
eclipse-cpp-helios-SR2-linux-gtk-x86_64
2017-05-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人