
服务器编程
文章平均质量分 76
chinaclock
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
再谈select, iocp, epoll,kqueue及各种I/O复用机制
摘自:http://blog.youkuaiyun.com/shallwake/article/details/5265287上篇文章太过幼稚,一派胡言,希望没有误导大家。。我也是菜鸟,学习本身就是一个不断追求真理的过程,希望能谅解:)首先感谢kasicass GG指出错误(已经指导我很多次了,非常感谢~~),然后我又查阅了一些资料,再次整理,more seriously and detailed转载 2015-09-25 15:09:02 · 1062 阅读 · 0 评论 -
Reactor和Proactor应用代码编写对比
Reactor和Proactor应用代码编写对比原创 2015-10-22 16:44:20 · 930 阅读 · 0 评论 -
网络编程socket相关错误号及信息的获取
这里不讨论直接调用后,通过返回值返回错误号的情况,因为这种情况是比较简单的。而实际在网络编程中很多情况都是在发送和接收数据时出现了socket上有异常导致操作无法完成,而返回值只能涉及到操作相关的字节数和是否错误,并不能反映完全的错误信息。 也不讨论windows上的错误信息获取,而主要是Linux上的。 实际的常用方法如下: 方法一:strerror 这个函数以及errno全局变量是最常用原创 2015-10-09 20:06:06 · 8252 阅读 · 0 评论 -
Linux网络编程socket错误分析
文章未见转载出处,从http://blog.youkuaiyun.com/nellson/article/details/5669935转载 socket错误码:EINTR: 4 阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。 只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrup转载 2015-10-09 19:17:40 · 2822 阅读 · 0 评论 -
ACE6.3.3 在Linux上的安装
严重注意:ACE6.3.3是没有configure配置文件的,不能和之前5.x版本一样去执行configure配置从 ACE 官网(http://download.dre.vanderbilt.edu/)下载 ACE-6.3.3.tar.bz2,放在/home/yourname; 用tar xvjf ACE-6.3.3.tar.bz2解压得到 /home/yourname/ACE_wrappers原创 2015-10-13 12:15:44 · 2823 阅读 · 0 评论 -
Netty系列之Netty线程模型
关注点在于:如何灵活的动态绑定IO事件处理,又能进行串行化处理减少锁的使用摘自:http://www.infoq.com/cn/articles/netty-threading-model1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当转载 2015-09-24 11:20:32 · 1652 阅读 · 0 评论 -
Netty系列之Netty高性能之道
http://www.infoq.com/cn/articles/netty-high-performance/虽然不是用java开发,但是Netty的框架设计还是可以借鉴和思考一下的。1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调转载 2015-09-24 10:09:18 · 689 阅读 · 1 评论 -
Memcached源码解析--多线程网络模型
摘自http://blog.chinaunix.net/uid-22312037-id-3563755.html一、网络模型 Memcache网络底层采用的Libevent,其网络模型就是大名鼎鼎的半同步半异步。关于Libevent可以参看我之前写的一篇拙文《Libevent源码解析--事件处理框架》,半同步半异步可以看这篇有名的博文。 在阅读本文前,建议先转载 2015-09-24 16:00:38 · 662 阅读 · 0 评论 -
ACE框架理解(一)
一、框架的理解 1. 框架与类库之间的比较 类强调数据及对数据操作的方法的内聚性,所以其支持比函数库更加有效的小规模的复用。且其并未捕捉软件中的规范控制流、协作和可变性,因而虽广泛应用但有效范围有限。 类库为第一代面向对象的开发技术。而框架被称为第二代面向对象开发技术,其对类库的扩充在于框架中的哪些类可以相互协作,来为一组相关的应用提供可复用的架构,其相互协作产生的是不完全的应用。 白盒原创 2015-10-15 20:29:50 · 10986 阅读 · 0 评论 -
ACE_POSIX_AIOCB_Proactor和ACE_WIN32_Proactor的区别
在调用流程上这两种Proactor的具体实现并无太大差异。 基本上的流程是这样的: 0.在handler的open接口中调用异步读写的例如ACE_Asynch_Read_Stream和ACE_Asynch_Write_Stream的open接口,用于绑定handler和异步完成事件。 1.调用proactor_run_event_loop来持续调用handle_events持续等待完成事件发生原创 2015-10-22 13:22:17 · 1062 阅读 · 0 评论 -
ACE_Proactor实现
ACE_Proactor实现了Facade模式。 其方法可以分为四类。生命周期管理方法事件循环管理方法定时器管理方法IO操作facilitator方法: -须知ACE_Proactor是使用Bridge模式的。ACE_aynch_Read/Write_Stream都是使用Bridge模式来访问他们用于特定的OS平台的IO操作工厂的灵活实现。所有的ACE_Proactor实现实际都转原创 2015-10-20 18:31:03 · 1565 阅读 · 0 评论 -
ACE_Service_Handler类的理解和使用
从代码的接口中直接可以看到很多相关的回调,例如 handle_write_stream ,那么它们是什么时候被调的呢?00369 void00370 ACE_POSIX_Asynch_Write_Stream_Result::complete (size_t bytes_transferred,00371原创 2015-10-20 18:28:53 · 2928 阅读 · 0 评论 -
ACE_Reactor(四):ACE_WFMO_Reactor
实现接口不同于原创 2015-10-19 11:24:16 · 1020 阅读 · 0 评论 -
ACE_Reactor(六)ACE_TP_Reactor
源码可以到http://www.aoc.nrao.edu/php/tjuerges/ALMA/ACE-5.5.2/html/ace/上去找虽然ACE_Select_Reactor是灵活的,但是由于只有拥有者才能调用它的handle_events方法,所以在多线程应用程序中它还是有一定的局限性的,因而ACE_Select_Reactor得事件多路分离层的序列化处理可能对某些场景来讲约束太多了。一原创 2015-10-19 11:25:52 · 1360 阅读 · 0 评论 -
ACE_Reactor(三)ACE_Select_Reactor_T
源码可以到http://www.aoc.nrao.edu/php/tjuerges/ALMA/ACE-5.5.2/html/ace/上去找. ACE_Select_Reactor_T主要是使用select来进行多路复用和分离。为了监测多个fd,ACE中新增了ACE_Handle_Set,就像类说明的说的,C++ wrapper facade for the socket @c fd_set ab原创 2015-10-19 11:22:57 · 1808 阅读 · 0 评论 -
ACE_Reactor(五)ACE_TP_Reactor和ACE_Select_Reactor的区别
在ACE_Select_Reactor_T的handle_events中,进去就会获取Token,调到ACE_Guard直至ACE_Token的share_acquire函数,会调用一个sleepHook,这个hook的代码是:00058 // Used to wakeup the reactor.00059 00060 template class ACE_TOKEN_TYPE> v原创 2015-10-19 11:25:05 · 2436 阅读 · 0 评论 -
ACE框架理解(二)服务以及配置的设计空间
服务以及服务器设计空间 1.短持续事件服务与长持续事件服务 当系统资源或许能够在别的地方被更好地利用时却占据它们,以及当需要时重新启动一项服务所需要的开销之间的权衡,是这一设计空间所包含的主要权衡要素。 2.内部服务与外部服务 服务初始化的事件,将一种服务与另一种服务隔离,以及简单性都是在这一空间中要权衡的主要因素。 3.原创 2015-10-19 09:32:20 · 935 阅读 · 0 评论 -
ACE_Reactor(一)整体理解ACE_Reactor
ACE_Reactor框架的任务:检测来自于各种各样事件源的事件的发生将事件多路分离到他们的预先注册的事件处理器上将事件分派给由处理器所定义的挂钩方法,以按照应用程序所定义的方式来处理事件ACE_Reactor类的实现。 接口声明放在Reactor.h中, 接口实现则分别放在Reactor.cpp和Reactor.ini文件中,而Reactor.inl作为内联函数直接在Reac原创 2015-10-19 11:20:22 · 7039 阅读 · 0 评论 -
ACE_Reactor(二)ACE_Dev_Poll_Reactor
ACE_Reactor一些重要的细节int ACE_Dev_Poll_Reactor ::register_handler_i(handle, event_handler,mask)//step 1if(this->handler_rep_.find(handle)==0){ //Handler not present in the repository.Bind it.原创 2015-10-19 11:21:26 · 2268 阅读 · 0 评论 -
ACE_Proactor框架
Proactor的模型允许以下两个阶段来执行IO模型而无须等待它们完成: (1)不须等待它们完成,应用就可以在多个IO句柄上并行地发起一个或多个异步IO操作 (2)在每个操作完成时,OS会通知应用定义的完成处理器,由它随后对已完成的IO操作的结果进行处理。 而reactor的模型,这两个阶段是刚好相反的: (1)使用一个事件多路分离器来确定某个IO操作何时可以进行,并且有可能即使完成 (原创 2015-10-20 12:12:08 · 1145 阅读 · 0 评论 -
通讯系统经验谈【一】TCP连接状态分析:SYNC_RECV,CLOSE_WAIT,TIME_WAIT
摘自:http://maoyidao.iteye.com/blog/1744277面试时看到应聘者简历中写精通网络,TCP编程,我常问一个问题,TCP建立连接需要几次握手?95%以上的应聘者都能答对是3次。问TCP断开连接需要几次握手,70%的应聘者能答对是4次通讯。再问CLOSE_WAIT,TIME_WAIT是什么状态,怎么产生的,对服务有什么影响,如何消除?有一部分同学就回答不转载 2016-01-11 20:59:10 · 1506 阅读 · 0 评论