re: 我的2009 那谁 2010-01-18 21:26
@王李李
感谢指点,很有建设性.
@code
汗,你这个回复也太快了吧.
呵呵,周四去面试.
@阿福
巧了,我也去过你blog看过,说起来,还是国内研究TC的人,或者说阅读TC代码的人太少了点儿。
@cui
1)父进程不用通知子进程,因为子进程是继承了从父进程里创建的监听socket
2)没有事件的时候子进程将会阻塞在select/poll操作上。
@zuhd
可能我的意思表达不清楚,我补充了一个示意图,你可以再看看.
BTW:那个不是二维数组,而是存放的元素类型都是char*的数组,本质还是一维数组,说到这个点又是"指针与数组的区别"了,呵呵.
re: 人不奋斗枉青年[未登录] 那谁 2009-10-31 13:26
麻烦,这种与技术无关的帖子以后能不能不要放到首页来.
re: epoll学习笔记 那谁 2009-10-13 21:04
@lxjeanse
LZ,你用ET写的server在关闭客户端的时候才收到的后面几个数据吧?那是因为客户端关闭的时候,server也会收到io消息,这时就会去接收剩下的数据了.
re: 二分查找学习札记 那谁 2009-10-08 16:35
综上,我想这篇文章还需要做一些说明.稍后我会补充上,谢谢几位.
re: 二分查找学习札记 那谁 2009-10-08 16:30
@OwnWaterloo
是的,你这么分析有道理.所以最后的那个算法"精确"(都找到相同元素的第一个)的代价就是在一些情况下不如3-way高效.
re: 二分查找学习札记 那谁 2009-10-08 15:51
@饭中淹
我这边测试的结果是我的稍好一些的,测试的数据是这样的:
#define LEN 400000
int main()
{
int array[LEN];
int i;
for (i = 0; i < LEN; ++i)
{
array[i] = i;
}
xbinary_search<int, int> search;
for (i = 0; i < LEN / 1000; ++i)
{
search.search_value(array, LEN, i * 10);
}
printf("done123\n");
return 0;
}
这个测试数据, 你的表现是0.176s,我的是0.047.
另外,你的代码在我的cygwin上面的g++上不能直接编译过去,我稍作了一些修改.
re: 二分查找学习札记 那谁 2009-10-08 10:09
@饭中淹
可以把你的算法贴出来吗?
re: 二分查找学习札记 那谁 2009-10-07 10:59
@饭中淹
哦?怎么测试的?
re: 协议设计之一 基本类型的编码 那谁 2009-09-25 15:55
@sd
赞同你的观点.
两位,似乎还有一个问题,考虑一个极端情况,假如一个序列中都是同样值的元素,而所需查找的就是这个元素,很显然,第一次查找就会找到了,但是找到的却是序列的中间元素.
汗,你们俩晚上都不睡觉的吗,怎么回复时间都在凌晨....
@OwnWaterloo
看了你给的帖子,感觉我的算法还有问题,就是在存在多个相同元素的时候没有返回第一个元素.回头再研究一下了,目前至少算法是"正确的",只是不够"精确",哈哈.
@OwnWaterloo
编程珠玑里面确实有一章讲解算法正确性的,是以二分查找算法来讲解的.
@阿福
你可能没有仔细看我对问题的描述,事实上,如果使用这里所用的二分查找算法,都不用遍历一次,O(log(n))的时间复杂度就搞定问题了.
re: 同步/异步与阻塞/非阻塞的区别 那谁 2009-05-14 23:54
@啸天猪
我看了一下你的评论,我想我们之间观点最大的分歧点在于:
我的观点是同步/异步仅是消息通知的机制,至于消息到来时如何处理与这两个概念无关.
而你的观点则认为,同步/异步不仅仅包括消息通知,还包括了对消息的处理,所以select之类的通知消息的触发机制你归类为"同步",而AIO这种俘获了消息也对消息进行了处理(比如你说的将数据从内核copy到用户态)的机制才是真正的异步.
也就是说,你上面回复的这句话:
异步: 交代要做的事情,然后忙其他的事情;'别人'(内核)会充当你的跑腿,在条件就绪后将这事办成,然后通知你(callback);
事实上是我们之间对这个概念认知的最大分歧,你认为异步就是不止通知了消息,还要加上将这件事情办妥.而我认为,异步仅在于通知这个消息发生了,而具体如何处理该消息不在它关注的范围之内.
我在写上上面这段评论的时候也在思考对这个概念的理解,我还是认为我的观点是正确的,今天太晚了,改天找来UNP详细看看.
re: 同步/异步与阻塞/非阻塞的区别 那谁 2009-05-14 13:09
@ttplay
排队等待是处理消息者自己等待,取小纸条是由别人通知你.
re: epoll学习笔记 那谁 2009-05-11 18:36
@qq957863054
实际上同一个socket上是可以既recv又send的,因为这是全双工的服务,只不过这样的情况在逻辑上错误.比如你可以想象两个人对话,一个人一边说话一边听别人说话吗?
re: epoll学习笔记 那谁 2009-05-06 11:07
@qq957863054
写的处理跟读应该差不多吧,我想你只要理解了ET模式的要点就可以理解了--ET仅在所关注的事件状态发生变化,也就是从无到有或者从有到无的时候才会有通知,而从多到少或者从少到多不会有通知.
@Tim
你的blog在我google reader里面,时不时也会去看看,以后请多指教了.
re: 项目失败的经验 那谁 2009-04-29 18:01
收到.
@candy
你的编译命令是??
我这边直接gcc就行了
@bruin
如果不转换为char,而是别的类型,那么就会根据该类型的长度进行加减.
这个也是C语言的基础知识了.
re: 自己实现的memcpy[未登录] 那谁 2009-04-19 09:29
@ClassyK
你说的有道理.
@小名阿铁
我看的英文版电子书,中文版纸书在看不懂的情况下拿来参考(目前还没有参考到).这个是我最新发布的随笔,以前没发布过.
re: Pascal简化版[未登录] 那谁 2009-04-10 14:30
mark
@xiaoxiao
是的,当时的考虑是如果是运行的时候做这个判断,那么就会多一些运行时的判断,所以做成了编译时可配置的情况.
re: 另类的链表数据结构以及算法 那谁 2009-03-27 19:03
感谢指出错误,已经做了修改了.
re: 自己设想的一个IM服务器的架构 那谁 2009-01-14 13:49