跳至正文

技术

Http服务器正式版

  • 技术

  经过昨天一晚上的奋斗+今天一早上的奋斗,服务器总算是能够真正的使用了。

昨晚上:

  今天晚上拼了命在写服务器,打算把进程池写出来,反复的翻Unix 环境高级编程,天啊,进程之间的通信真的很麻烦,没对进程都需要两个管道(如果需求移植能力强的话是2个,不然可以是1个。)然后我就放弃了,考虑线程池,但[......]

继续阅读

Http 服务器 beta 0.1 版

  • 技术
  修改了一两个小时,把文件的源代码由一个分成了几个,每个文件完成各自的功能,(有点模块化的感觉,哈哈)。然后自然是写了一个Makefile,不过只有2行代码咯,关键是可以捕捉信号了,就是说可以处理子进程僵死的问题了,成功升级为真正的并发服务器,关于这点我打算写成线程池或进程池,可以可以提高服务器的[……]

继续阅读

算法导论 习题之插入排序从大到小

  • 技术

插入排序其实很好理解,就是保证前i – 1个都是排好序了的,再排第i个,下面这个是从大到小排序的:


/* 从大到小的插入排序 */
void insert_sort(int a[], int n)
{
 int i, j;
 int key;
 for(i = 1; i < n; i++){[......]

继续阅读

Glibc 中的 qsort

  • 技术

这函数真够长的,吓死!
记得我前两天看到别人做的一个程序,用的是自己写的快速排序,而我用的qosrt,结果我的100ms,他的350ms。这程序真贼快的
因为我把每天的倾城都安排好了,所以只有半个小时的时间看,所以没看完,先注释一部分吧,明天再补一部分,估计一下子还看不完。整个qsort的代码如下:[……]

继续阅读

Glibc 中的 memset

  • 技术

Glibc的效率真的快!快到让我想不到!!!
这个memset跑的贼快~!不过我还是没想通,为什么不用汇编呢?sep movw,速度可能更快!
对memset的注释如下:

C语言: [Codee#12483](http://fayaa.com/code/view/12483/)

void *mem[......]

继续阅读

Glibc 的 strcmp

  • 技术

Glibc的设计确实巧妙的让人想不到,如下strcmp的代码就十分巧妙:

C语言: Codee#12462

int
strcmp (p1, p2)
 const char p1;
 const char p2;
{
 register const unsigned char s1 = (const[......]

继续阅读

快速成法

  • 技术

  当x乘以n的时候,一般人使用的是mul指令(即直接相乘),而我会使用位运算来优化这些速度,比如乘以3,就等于((x << 1) + x),相当于2x+x 就是3x了,然而这后者的速度比前者的速度快很多。
  乘以3只是一个情况,乘以n的话,就要把n拆分成2的次方相加,更一般地,就是把n[……]

继续阅读

快速置零 xor %eax, %eax

  • 技术

  在<<Linux 内核完全注释>>里面看到了几次xor ax, ax,很想不通,为什么不直接用mov ax, 0呢?今日到网上一搜才知道,我的天啊,xor ax, ax 只需要计算机2条指令,而mov ax, 0会消耗计算机5指令,什么意思?就是近三倍的速度差别。

[……]

继续阅读