cstdlib.com
About
http://www.cstdlib.com/about
This is Xu Ruochen’s blog.
cstdlib.com
面朝大海,春暖花开
http://www.cstdlib.com/life/2014/07/04/mian-chao-da-hai-chun-nuan-hua-kai
Jul 4, 2014.
cstdlib.com
读《UNIX网络编程 卷1:套接字联网API》[下]
http://www.cstdlib.com/tech/2014/10/17/read-unix-network-programming-3
读 UNIX网络编程 卷1 套接字联网API [下]. Oct 17, 2014. 先看一段短短的代码,一个简单的回射 echo back 客户端的核心代码如下. Char sendLine[MAX LEN], recvLine[MAX LEN]; while (fgets(sendLine, sendLine, stdin) { write(sockFd, sendLine, strlen(sendLine) ; if (readline(sockFd, recvLine, MAX LEN) = 0) { / error } fputs(recvLine, stdout); }. 缺点就很多了 不然其他的设计方法不就没啥意义了 在等待用户输入时,无法知晓对端关闭连接等网络事件,比如第5秒时,对端关闭了连接,但是到第10秒用户才输入,这时候readline才返回错误 而且停-等的模式使得它在批处理输入的情况下,效率极低。 停-等的迭代客户端程序 中,无法实时的知晓网络状况的问题的核心在于 面临着多个事件 网络和用户输入 ,却只阻塞于一个事件 用户输入 上。 说到如何检测连接是否成功,网友们提出了各式各样...
cstdlib.com
C++11中的新特性
http://www.cstdlib.com/tech/2014/07/12/new-features-in-c++11
Jul 12, 2014. Assume v is vector of int vector int v; / find max element in vector int int maxNum = MIN INT; for (size t i = 0; i v.size(); i ) { if (maxNum v[i]) { maxNum = v[i]; } } / or use STL do it vector int : iterator maxNum = max element(v.begin(), v.end() ;. 看到别人写的C 代码中,总是有一些让我惊呼 我擦还可以这样 的一些C 的特性或者是STL函数。 而移动的语义呢 移动指的是将源对象的资源 窃取过来 ,完成资源所有权的转移。 举个具体的例子,一个正常的类,拷贝构造函数会做两件事 1.申请地址空间 2.将资源复制过来。 Foo(dying Foo& obj) { length = obj. length; data = obj. data; obj. data = nullptr; }. 1] 译 详解C 右值引用.
cstdlib.com
读《UNIX网络编程 卷1:套接字联网API》[中]
http://www.cstdlib.com/tech/2014/10/14/read-unix-network-programming-2
读 UNIX网络编程 卷1 套接字联网API [中]. Oct 14, 2014. 各种I/O模型 阻塞 / 非阻塞 / I/O复用 / 信号驱动 / 异步I/O. 各种I/O模型 阻塞 / 非阻塞 / I/O复用 / 信号驱动 / 异步I/O. 它的工作机制是告知内核启动某个操作, 并让内核在整个操作 包括把数据从内核复制到进程自己的缓冲区 完成后告知我们。 的原因是 会话头进程 即第一次创建的子进程 终止时, 会话中的所有进程 即第二次创建的子进程 会收到. 这样的话,有两方面问题 一方面是这些服务器进程长期驻留于系统,但是大部分时间其实是睡眠的,占据了进程表项 另一方面是这些进程包含大量的重复代码 典型的是用于进程守护化的代码和用于创建套接字的代码。 Ftp stream tcp nowait root /usr/bin/ftpd ftpd -l. Telnet stream tcp nowait root /usr/bin/telnetd telnetd.
cstdlib.com
Web Server 和 HTTP协议
http://www.cstdlib.com/tech/2015/05/17/http-and-web-server
Web Server 和 HTTP协议. May 17, 2015. 501 Method Not Implemented. 实现得更完整一些,关于CGI Server更详细的情况请看 CGI Server. HTTP的request的第二部分是header,header以 r n结尾,header中的每一行也以 r n结尾,也就是说,当header是空时,以一个 r n结尾 当header不空时,一定是以两个连续的 r n结尾的。 Heder中的每一行格式是 key : value,其中value可以是空,所以简单的说,header是一个map,键和值之间用:分隔,键值对之间用 r n分隔,在map的最后还有一个 r n。 HTTP的response的第一部分是response line,以空格分割得到的三部分依次是version,status code和Reason Phrase. 简单起见 删除了一些处理不完整http请求的代码,并且简化了now 和 startTime的设置 / 详见https:/ github.com/aholic/paekdusan/blob/master/KeepA...
cstdlib.com
读《UNIX网络编程 卷1:套接字联网API》[上]
http://www.cstdlib.com/tech/2014/10/09/read-unix-network-programming-1
读 UNIX网络编程 卷1 套接字联网API [上]. Oct 9, 2014. 最近看了 UNIX网络编程 卷1 套接字联网API , 英文名叫Unix Network Programming啦,后来上网查了查, 一般都叫 UNP. 他们的作者都是 W. Richard Stevens. SYN K, ACK J 1. SYN K, ACK J 1. SYN K, ACK J 1. SYN K, ACK J 1. SYN K, ACK J 1. 之后不再继续回复, 这使得服务器上存在很多的半开连接,这些半开连接一般情况下会持续63秒 在Linux下,默认重试次数为5次,重试的间隔时间从1s开始每次都翻倍,5次的重试时间间隔为1s, 2s, 4s, 8s, 16s,第5次发出后还要等32s都知道第5次也超时了,所以,总共需要 1s 2s 4s 8s 16s 32s = 63s,TCP才会把断开这个连接. SYN K, ACK J 1. Tcp max syn backlog. Tcp abort on overflow. Tcp max tw buckets.
cstdlib.com
编译器关于临时对象的优化
http://www.cstdlib.com/tech/2014/07/12/nrvo-and-copy-elision
Jul 12, 2014. 我只想和当时的那个学生说一句 再来让我给你讲一遍 T.T. Struct Foo { Foo(int) { cout "ctr" endl; } Foo(const Foo& foo) { cout "cp" endl; } }; Foo getFoo() {return Foo(1024);} Foo foo = getFoo();. Struct Foo { Foo(int) { cout "ctr" endl; } Foo(const Foo& foo) { cout "cp" endl; } }; Foo getFoo() {Foo foo(1024); return foo;} Foo foo = getFoo();. Struct Foo { Foo(int) { cout "ctr" endl; } Foo(const Foo& foo) { cout "cp" endl; } }; void useFoo(Foo foo) {} useFoo(Foo(10) ;.
cstdlib.com
如何使用PHPUnit测试Yaf的控制层
http://www.cstdlib.com/tech/2015/05/23/yaf-phpunit
May 23, 2015. 代码目前部署在sae上,得益于鸟哥在新浪工作,sae是直接支持Yaf的 PHP5.3运行环境支持,PHP 5.6运行环境不支持。 Dataset table name="user" column userID /column column userPassword /column column userNick /column row value 1 /value value xxxxxxx /value value ahoLic /value /row row value 2 /value value xxxxxxx /value value kost /value /row /table /dataset. Yaf框架的控制层接口的执行是在以上的第2步,使用Yaf框架时,所有非文件请求全部指向一个index.php文件 这条规则定义在.htaccess文件中 ,然后Yaf框架根据路由规则和URI去执行相应的控制层接口。 2] Yaf(Yet Another Framework)用户手册.
SOCIAL ENGAGEMENT