
网络程序设计
文章平均质量分 75
sparkliang
新版优快云,查看&批准好友申请的地方在哪呢?
展开
-
Epoll vs. IOCP
Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Styl原创 2009-11-19 17:21:00 · 17016 阅读 · 14 评论 -
libevent源码深度剖析十
libevent源码深度剖析十——支持I/O多路复用技术张亮 Libevent的核心是事件驱动、同步非阻塞,为了达到这一目标,必须采用系统提供的I/O多路复用技术,而这些在Windows、Linux、Unix等不同平台上却各有不同,如何能提供优雅而统一的支持方式,是首要关键的问题,这其实不难,本节就来分析一下。1 统一的关键 Libevent支持多种I/O多原创 2009-12-30 12:41:00 · 16660 阅读 · 6 评论 -
libevent源码深度剖析十一
libevent源码深度剖析十一——时间管理张亮 为了支持定时器,Libevent必须和系统时间打交道,这一部分的内容也比较简单,主要涉及到时间的加减辅助函数、时间缓存、时间校正和定时器堆的时间值调整等。下面就结合源代码来分析一下。1 初始化检测 Libevent在初始化时会检测系统时间的类型,通过调用函数detect_monotonic()完成,它通过调用clo原创 2009-12-30 12:54:00 · 15629 阅读 · 7 评论 -
libevent源码深度剖析十二
libevent源码深度剖析十二——让libevent支持多线程张亮 Libevent本身不是多线程安全的,在多核的时代,如何能充分利用CPU的能力呢,这一节来说说如何在多线程环境中使用libevent,跟源代码并没有太大的关系,纯粹是使用上的技巧。1 错误使用示例 在多核的CPU上只使用一个线程始终是对不起CPU的处理能力啊,那好吧,那就多创建几个线程,比如原创 2010-01-04 17:47:00 · 18856 阅读 · 3 评论 -
可伸缩性最佳实践:来自eBay的经验
转帖一篇文章,来自eBay主架构师对可伸缩性系统的一些最佳实践,很赞!像功能分割,水平切分,基于阶段处理的架构模式等等...可伸缩性最佳实践:来自eBay的经验 作者 Randy Shoup 译者郭晓刚 发布于 2008年6月12日 下午7时5转载 2010-01-06 18:01:00 · 3752 阅读 · 2 评论 -
TProactor浅析二
TProactor源码浅析二 为了模拟Proactor,必须要提供异步操作和异步操作结果的表示方法,TProactor对这点的处理相当复杂化,而且对异步操作进行了细分,复杂化了,下面来简要描述一下。异步操作的表示首先是异步操作的表示,这就是TRB_Asynch_Operation基类,TProactor为不同的异步操作类型定义了不同的类,分为:TRB_Asynch_Read原创 2010-03-31 09:15:00 · 3546 阅读 · 0 评论 -
Eventually Consistent(最终一致性)
应该说搞分布式系统必读的文章了,转过来,这是2008年12月Werner revise过的版本,先贴上内容简介:分布式系统的CAP理论CAP理论(data consistency, system availability, and tolerance),也就是数据一致性,系统可用性和网络分区容错性,在一个分布式系统中CAP是不能同时保证的,最多只能同时满足两个。如果一个系统不必转载 2010-03-31 18:07:00 · 9938 阅读 · 3 评论 -
进程间传递描述符一
Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 <!-- /* St原创 2010-04-14 17:54:00 · 18238 阅读 · 8 评论 -
进程间传递描述符二
Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2010-04-15 19:48:00 · 8571 阅读 · 1 评论 -
进程间传递描述符三
进程间传递描述符三--Windows上发送接收套接字(Socket)Windows平台上内核对象都是HANDLE,如果要在进程间传递内核对象,Windows提供了DuplicateHandle函数。复制的HANDLE和原HANDLE实际上指向的是内核中的同一个对象。对于Socket而言,则需要使用WSADuplicateSocket来传递Socket,这个操作不像Duplica原创 2010-04-20 10:09:00 · 6215 阅读 · 0 评论 -
CRC32算法详细推导(1)
<br />CRC算法详解(1)<br />作为blog再次发出来,详细描述一下CRC32算法的推导过程。CRC算法的数学基础<br />CRC算法的数学基础就不再多啰嗦了,到处都是,简单提一下。它是以GF(2)多项式算术为数学基础的,GF(2)多项式中只有一个变量x,其系数也只有0和1,比如:<br /> 1*x^6 + 0*x^5 + 1*x^4 + 0*x^3 + 0*x^2 +1*x^1 + 1*x^0<br /> =x^6 + x^4 + x + 1<br />加原创 2010-06-14 23:55:00 · 61187 阅读 · 7 评论 -
CRC32算法详细推导(2)
<br />CRC算法详解(2)<br />初见Table-Driven<br /> <br />变换到上面的方法后,我们离table-driven的方法只有一步之遥了,我们知道一个字节能表示的正整数范围是0~255,步骤1中的计算就是针对reg的高Byte位进行的,于是可以被提取出来,预先计算并存储到一个有256项的表中,于是下面的算法就出炉了,这个和上面的算法本质上并没有什么区别。<br />#define POLY 0x04C11DB7L // CRC32生成多项式static unsigned原创 2010-06-15 11:13:00 · 7043 阅读 · 5 评论 -
apache mod_dav框架的dav_hooks_propdb结构真的烂透了
apache的mod dav框架,其他说来还行,但是对于dead properties的dav_hooks_propdb结构真的烂透了。摘取做更新、删除操作的几个hook函数:dav_error * remove(...)dav_error * store(...)dav_error * get_rollback(...)dav_error * apply_rollback原创 2011-12-02 17:38:23 · 2402 阅读 · 0 评论 -
oceanbase之RootServer(三)
琐事太多,又太懒了,好久不想动笔,进展也比较慢。5 日志系统有伟大的GFS作指引,OceanBase的master也是采用redo log加checkpoint机制,以保证master的响应速度。此外root server采取了主备机制,因此redo log一写两份, 在flush redolog时先写slave,成功了才写master并重置log的内存缓存区。日志系统原创 2012-11-26 11:39:14 · 4124 阅读 · 0 评论 -
Linux Epoll介绍和程序实例
Linux Epoll介绍和程序实例1. Epoll是何方神圣?Epoll可是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thre原创 2009-11-05 10:52:00 · 123351 阅读 · 109 评论 -
人人网UGC海量存储系统Nuclear介绍
转kuqin网上一篇介绍人人网实现海量存储的文章,人人网构建了自己的存储系统Nuclear,先简单列列感想。 又一个使用java构建的分布式的key-value存储系统,在设计思想上严重受到GFS的影响。在存在中心管理节点的情况下,怀疑其提到的“无限扩展性”,夸张了;不过通过一致性hash算法来确定key对应的value会落到哪个存储节点上,使得中心节点对存储节点的信息知晓最少转载 2010-03-10 14:36:00 · 3799 阅读 · 2 评论 -
开源网络框架HPServer0.2.10版发布
HPServer是一个为并发高性能网络服务应用而开发的,轻量级的开源网络框架,以C++作为开发语言。HPServer的一些特性: 采用事件驱动的机制,并且统一支持I/O事件、定时器事件和Signal事件; 支持精度为ms的定时器; 内建支持Acceptor,Connector组件,方便程序设计; 支持多线程(但不是线程安全的); 跨平台,目前H原创 2010-03-05 18:12:00 · 7817 阅读 · 15 评论 -
libevent源码深度剖析PDF
最近把libevent源码深度剖析系列文章整合成了一个完整的PDF,方便朋友们阅读,也算是对libevent源码的分析做一个总结。可以到我的资源下载:http://sparkliang.download.youkuaiyun.com/原创 2010-01-17 12:02:00 · 41194 阅读 · 23 评论 -
有关libevent事件注册的一个小问题
最近一直在使用libevent,发现一个有关libevent事件注册的一个小问题:对于一个服务器,我很可能需要注册的时间类型是持续读和一次写;也就是 EV_READ|EV_PERSIT(READ) ,然后每次需要发送时才注册EV_WRITE事件,但是libevent却做不到这点,libevent中的EV_PERSIST是对event的所有事件起作用;如果注册事件类型为EV_READ|E原创 2009-12-01 11:02:00 · 8932 阅读 · 1 评论 -
Map Reduce – the Free Lunch is not over?
现在已经进入了一个张口就是“今天你云了没?”的时代,应该好好研究研究大规模数据存储和处理了,像google的map reduce技术,开源的hadoop;map reduce的思想来自于函数式编程语言,看来要想进步提高,还得眼界开阔啊!转载一篇孟岩关于map reduce的文章。Map Reduce – the Free Lunch is not over?微软著名的C++大师转载 2010-01-30 13:04:00 · 3520 阅读 · 1 评论 -
libevent源码深度剖析一
libevent源码深度剖析一——序幕张亮 1 前言Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少。写这一系列文章的用意在于,一则分享心得;二则对libevent代码和设计思想做系统的、更深层次的分析,写出来,也可供后来者参考。附带一句:Libevent是用c语言编写的(MS大牛们都偏爱c语言哪),而且几乎是无处不函数指针,学习其原创 2009-12-07 16:10:00 · 163145 阅读 · 23 评论 -
libevent源码深度剖析三
libevent源码深度剖析三——libevent基本使用场景和事件流程张亮1 前言学习源代码该从哪里入手?我觉得从程序的基本使用场景和代码的整体处理流程入手是个不错的方法,至少从个人的经验上讲,用此方法分析libevent是比较有效的。2 基本应用场景基本应用场景也是使用libevnet的基本流程,下面来考虑一个最简单的场景,使用livevent设置定时器,应用程序只需要原创 2009-12-07 16:25:00 · 70061 阅读 · 23 评论 -
libevent源码深度剖析四
libevent源码深度剖析四——libevent源代码文件组织1 前言详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!2 源代码组织结构Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、libevent框架原创 2009-12-07 16:32:00 · 45091 阅读 · 9 评论 -
Hadoop分布式文件系统:架构和设计要点
转一篇关于Hadoop系统架构设计的文章,作者翻译的不错,其英文原文是理解Hadoop的经典文章。原文出处:http://www.blogjava.net/killme2008/archive/2008/06/05/206043.htmlHadoop分布式文件系统:架构和设计要点 原文:http://hadoop.apache.org/core/docs/current转载 2010-02-02 09:31:00 · 5790 阅读 · 0 评论 -
libevent源码深度剖析二
libevent源码深度剖析二——Reactor模式张亮前面讲到,整个libevent本身就是一个Reactor,因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念。1 Reactor的事件处理机制首先来回想一下普通函数调用的机制:程序调用某函数?函数执行,程序等待?函原创 2009-12-07 16:15:00 · 95131 阅读 · 20 评论 -
libevent源码深度剖析五
libevent源码深度剖析五——libevent的核心:事件event张亮对事件处理流程有了高层的认识后,本节将详细介绍libevent的核心结构event,以及libevent对event的管理。1 libevent的核心-event Libevent是基于事件驱动(event-driven)的,从名字也可以看到event是整个库的核心。event就是Reac原创 2009-12-09 23:02:00 · 52494 阅读 · 10 评论 -
libevent源码深度剖析十三——libevent信号处理注意点
libevent源码深度剖析十三——libevent信号处理注意点前面讲到了libevent实现多线程的方法,然而在多线程的环境中注册信号事件,还是有一些情况需要小心处理,那就是不能在多个libevent实例上注册信号事件。依然冠名追加到libevent系列。 以2个线程为例,做简单的场原创 2010-02-11 20:00:00 · 19071 阅读 · 14 评论 -
libevent源码深度剖析六
libevent源码深度剖析六——初见事件处理框架张亮 前面已经对libevent的事件处理框架和event结构体做了描述,现在是时候剖析libevent对事件的详细处理流程了,本节将分析libevent的事件处理框架event_base和libevent注册、删除事件的具体流程,可结合前一节libevent对event的管理。1 事件处理框架-event_base回想Re原创 2009-12-11 13:50:00 · 39550 阅读 · 6 评论 -
libevent源码深度剖析七
libevent源码深度剖析七——事件主循环张亮 现在我们已经初步了解了libevent的Reactor组件——event_base和事件管理框架,接下来就是libevent事件处理的中心部分——事件主循环,根据系统提供的事件多路分发机制执行事件循环,对已注册的就绪事件,调用注册事件的回调函数来处理事件。1 阶段性的胜利 Libevent将I/O事件、定时器和信号原创 2009-12-11 18:40:00 · 32685 阅读 · 6 评论 -
libevent源码深度剖析八
libevent源码深度剖析八——集成信号处理张亮 现在我们已经了解了libevent的基本框架:事件管理框架和事件主循环。上节提到了libevent中I/O事件和Signal以及Timer事件的集成,这一节将分析如何将Signal集成到事件主循环的框架中。1 集成策略——使用socket pair 前一节已经做了足够多的介绍了,基本方法就是采用“消息机制”原创 2009-12-15 14:48:00 · 27720 阅读 · 8 评论 -
libevent源码深度剖析九
libevent源码深度剖析九——集成定时器事件张亮 现在再来详细分析libevent中I/O事件和Timer事件的集成,与Signal相比,Timer事件的集成会直观和简单很多。Libevent对堆的调整操作做了一些优化,本节还会描述这些优化方法。1 集成到事件主循环 因为系统的I/O机制像select()和epoll_wait()都允许程序制定一个最大等原创 2009-12-22 11:25:00 · 22543 阅读 · 7 评论 -
个人数据搜索
有时间再仔细讲讲。原创 2014-10-24 14:11:48 · 6069 阅读 · 0 评论