这一节的算法都基于归并, 所以会给算法的模板新增加一个操作. 归并就是将两个有序的数组归并成一个更大的有序数组. 归并和之前的快速排序有一个区别是, 我们开始使用递归, 而且给递归函数传递的都是索引, 这样比较清晰. 实现归并方法 自顶向下的归并排序方法 自底向上的归并排序 快速排序 快速排序的改进
排序算法是解决很多问题的第一步, 而且排序算法发展时间长, 都非常经典, 优雅和高效. 初级排序算法 选择排序 插入排序 希尔排序 初级排序算法 算法这里很好, 没有上来就讲排序, 而是将排序算法类抽象出了一个共同的模板. 将排序抽象为排一个数组中元素的序, 每个元素都有一个主键(我个人理解就是据以
这一部分是结合Coursera上边塞奇威克本人的视频来看的, 讲的确实不错. 定量测量程序的运行时间 union-find 动态连通性算法 动态连通性算法 类似于集合的实现 动态连通性算法 树结构实现 动态连通性算法 加权树实现 动态连通性算法 加权+路径压缩 定量测量程序的运行时间 有一个三嵌套循
为了继续提高自己的水平, 是时候开始接触算法了. 看了很多算法的推荐, 这本算法第四版是很好的入门教材. 在Coursera上找到了这门课程的第一部分和第二部分, 还有书的配套网站 材料备
之前的加锁并发其实并没有真正的提高效率, 因为还是就一个共享变量来操作, 本质上还是执行完了全部计算. 实际上现代处理器具有多个核心, 可以同时执行与核心数量相等的线程. 现在来看一下真正利用多个线程并行处理的程序 提高并行性的代码 并行程序的性能评价 线程安全 - 线程不安全的函数 线程安全 -
线程 线程包的接口 多线程echo server 多线程程序中的共享变量 信号量 - 线程同步的理论 信号量 - 接口 信号量 - 二元信号量 信号量 - 生产者/消费者模型 信号量 - 读者/写者模型 线程实际使用 - 预线程服务器 线程 线程有点像上边两个方
终于站在CSAPP最后一章的门前了, 一年以前买这本书的时候还看不进去, 现在竟然已经全部看完而且看懂了. 内心还是有点小小的激动, 这种力量正不断涌现的感觉... 并发 多进程程序 I/O多路复用 - select 函数 I/O多路复用 - 事件驱动的并发 I/O多路复用 - 优缺点 并发 在第八
这一节来编写一个简单的Web服务器, 一切都是从一个简单的原型开始的. 套接字读写的客户端与服务端 微型Web服务器 - 主程序 doit 函数 clienterror 函数 read_requesthdrs 函数 parse_uri 函数 server_static 函数 函数 serve_dyn
套接字接口函数一般都是由系统实现, 所以必须掌握, 应用程序全部要使用系统调用来进行套接字操作. 通用 - socket 客户端 - connect 服务端 - bind 服务端 - listen 服务端 - accept getaddrinfo getnameinfo open_clientfd
网络编程要依赖于一直依赖学习的几乎所有系统概念, 包括进程, 信号, 处理字节, 内存映射和动态内存分配. 除此之外, 就是一些关于网络的概念, 包括最基础的客户端-服务器模型, 因特网的基础概念. CS模型 Internet - 抽象模型 Internet - IP地址 Internet - 域名