进程间通信——Pipe

UNIX中实现进程间通信的方式很多,比如管道、消息队列、共享内存、信号量、套接字等,前面四种主要用于同一台机器上的进程间通信,而套接字主要用于不同机器之间的通信。但是极少方法能在所有的UNIX系统中移植,而作为半双工的管道则是唯一一种方法。

tinyhttpd 阅读与分析

tinyhttpd 是一个简易的 http 服务器,支持CGI。代码量少,非常容易阅读,十分适合网络编程初学者学习的项目。 麻雀虽小,五脏俱全。在tinyhttpd中可以学到 linux 上进程的创建,管道的使用。linux 下 socket 编程基本方法和http 协议的最基本结构。

二叉堆与堆排序

一般我们所说的堆通常指的是二叉堆,即结点的分布满足完全二叉树,一颗大小为N的完全二叉树高度为logN的向下取整。并且该二叉树中根节点的值大于其两个子节点,此时称其为最大堆;或者根节点的值小于两个子节点的值则称之为最小堆。由于其是一个完全的二叉树,通常使用一个数组存储每个节点。因此节点序号为k的节点其左右两个子节点的序号分别是2k和2k+1(从1位置开始存储)。

常见的基本排序算法

排序问题作为计算机领域的基本问题,在计算机世界的每个角落都有着她的身影。一个合适的排序算法往往能够让一类算法问题的求解速度得到极大地提升。本文主要总结了常见的排序算法的基本原理和时间复杂度。

C++的智能指针

在使用C++开发过程中,最容易也是最麻烦的问题便是内存泄漏。相较于Java、python或者go语言都拥有垃圾回收机制,在对象没有引用时就会被系统自动回收而且基本上没有指针的概念,但是C++则要求程序员自己管理内存,这一方面让程序员有更大的自由度但是也会很大影响程序员的开发效率。因此C++11标准中新推出了shared_ptrunique_ptrweak_ptr三个智能指针来帮助管理内存。