原创开源
文章平均质量分 67
DreamFreeLancer
这个作者很懒,什么都没留下…
展开
-
烽驿2009开源实时通信平台
本博主供职于一家著名国际公司(因尚在从业,恕不点名)从事大型实时通信服务器软件设计与开发, 有感于国内软件业的"大而不强"和"原创土壤"的贫乏以及国外开源社区的兴旺. 想拿点东西出来与大家分享, 在遵循开源精神的前提下, 大家可以将本博主提供的源码用于商业或个人用途, 但需注明出处, 以示对本博主劳动成果的尊重. 如在使用中发现Bug或不足,希望能及时反馈给博主,以便及时更正或改进。在未来的原创 2009-04-27 23:21:00 · 1812 阅读 · 1 评论 -
异步IO框架实现之完成端口(Completion Port)
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 微软在Windows 2000之后提供了真正可伸缩(Scalable)的异步IO机制,即完成端口。本异步 IO框架(有关该框架的详细介绍请参:http://blog.csdn.net/DreamFreeLanc原创 2009-07-31 23:33:00 · 4239 阅读 · 2 评论 -
引用计数与对象生存期管理
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 对象生存期管理是程序设计的一项重要内容。目前流行的对象生存期管理手段主要是各类垃圾回收(GC)机制。其优点是使用简单,程序员只需负责对象创建,而不用关心对象销毁,但垃圾回收机制通常和语言本身绑定,主要用原创 2009-05-20 09:33:00 · 1269 阅读 · 0 评论 -
对象流化与基于内存的流实现
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 将一个对象转换成字节流形式,或从这种字节流中还原出对象是通信及存储类软件中最普遍的操作之一。对该类操作的称谓则五花八门:编码/解码(Encode/Decode);序列化/反序列化(Serialize(TRUE/原创 2009-05-27 14:58:00 · 1328 阅读 · 0 评论 -
不加锁的线程间通信
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 在线程间共享内存时需要加锁应该算是多线程编程的常识了,因此,这个标题显得有些颠覆性。但请注意这里说的是共享内存,而标题说的是通信,两者并不是一回事,仔细分析,后者在内涵上应该包括前者,即通信才是目的,而原创 2009-06-01 10:28:00 · 6782 阅读 · 1 评论 -
Windows下CriticalSection和Mutex的性能比较
Windows下100万次加/解锁测试:CriticalSection用时:31msMutex用时:953ms结论:CriticalSection性能远远高于Mutex(高出约30倍)。因此,在能用CriticalSection时绝不用Mutex,当然,后者可命名,而前者不行,因此,Mutex可用于进程间通信,但CriticalSection通常只能用于线程间通信。另外,Windo原创 2009-06-02 21:55:00 · 5052 阅读 · 1 评论 -
高性能日志服务
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 笔者在博文《系统localtime性能评测》(http://blog.csdn.net/DreamFreeLancer/archive/2009/05/06/4155180.aspx)中曾提及日志对于大型服原创 2009-06-07 23:48:00 · 4552 阅读 · 0 评论 -
可移植的线程对象
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 笔者在前面的博文中陆续介绍了本项目实现的若干基础服务,如:时间服务(http://blog.csdn.net/DreamFreeLancer/archive/2009/05/05/4150165.aspx, h原创 2009-08-14 22:30:00 · 3078 阅读 · 3 评论 -
Command模式,消息驱动与模块化设计
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 模块化是复杂系统架构设计所应遵循的基本原则之一,其目的是降低局部复杂度,便于大团队协同开发,有利于系统诊断,维护及功能复用。其中,模块划分基于所谓“高内聚,低耦合”的原则。在C语言中,通常通过CallBack函原创 2009-06-13 14:05:00 · 3203 阅读 · 1 评论 -
线程池(Thread Pool)
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 众所周知,线程并非越多越好,理论上一个CPU(或Core)一个活动线程可获得最佳性能。线程池可根据具体硬件的情况(如CPU或Core的数量)配置一个适当的线程数,从而将系统性能调到最佳,因此在可伸缩多线程Server原创 2009-08-19 23:23:00 · 2795 阅读 · 0 评论 -
系统可跟踪性(Tracibility)设计与异常处理
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 可跟踪性(Tracibility)设计是软件架构设计的重要内容之一。在面向对象系统中,对象的可跟踪是实现系统可跟踪的基本前提。在本项目中为此定义了一个接口如下:class object_id_it : pu原创 2009-05-16 14:18:00 · 2060 阅读 · 0 评论 -
异步IO框架实现之实时信号(Real-Time Signal)
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only Linux下可伸缩(Scalable)的异步IO机制是什么?熟悉Linux下网络编程的人可能会不加思索地回答:当然是EPOLL。没错,EPOLL是个优秀的异步IO机制(笔者将会在专门的博文中讨论它),但那是原创 2009-07-27 10:48:00 · 5714 阅读 · 1 评论 -
异步IO框架实现之EPOLL
烽驿2009开源实时通信平台 源码获取:https://fy2009.googlecode.com/svn/trunk/ fy2009 Linux2.5.44之后,主流的异步IO机制是EPOLL--尽管基于实时信号(http://blog.csdn.net/DreamFreeLancer/archive/2009/07/27/4383193.aspx)的机制仍被支持。EPOLL是一种性原创 2009-07-28 15:53:00 · 6451 阅读 · 0 评论 -
烽驿2009开源实时通信平台开工了!
烽驿2009开源实时通信平台的第一行代码终于上传了, 开发语言C++,目前支持平台Linux,Windows。源码位置:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009欢迎同道中人能给予持续关注,并提供宝贵意见,帮助测试及Review Code。该项目采用较宽松的“New BSD”许可证类型。目前刚刚起了个头,看着原创 2009-04-30 07:56:00 · 2198 阅读 · 5 评论 -
轻量级自描述缓冲区
对上篇博文中提到的缓冲区模板类型做一些补充说明。下面这段是笔者的源码注释,是对上篇博文有关该缓冲区模板的重要补充说明。烽驿2009开源实时通信平台 源码位置:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only /*[tip] buffer type template *[desc] * buffe原创 2009-05-01 08:59:00 · 1646 阅读 · 6 评论 -
Linux 下高性能用户空间时间服务
源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 高性能,大容量服务器软件多数采用异步工作方式,但该方式却是典型的双刃剑,需要较高设计与实现水平,否则,不仅不能提高性能,反而使软件的复杂性大大增加,可靠性大大降低。本篇不打算对此全面展开去,只就异步模型中最常用的一个基本问题,时间服务,进原创 2009-05-04 23:37:00 · 5565 阅读 · 1 评论 -
高性能Tick-Count服务,代码已上传
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 高性能时间服务入口函数(其实是个#define)get_tick_count(user_clock_t *user_clock)语义上和Windows下的GetTickCount()相似--在Windows原创 2009-05-05 15:41:00 · 2645 阅读 · 0 评论 -
系统localtime性能评测
前面的博文陆续讨论了异步执行系统中, 主要以测算任务执行时间为目的的高性能时间服务get_tick_count,并特别强调,get_tick_count并不适合需要知道确切时间(即某年某月某时某刻...)的场合。但这类场合仍然是客观存在的,其中典型的Case是写系统日志。有过大型Server开发经验的同仁不会怀疑日志对于这类系统的重要性,日志可能被用于多种目的:系统行为跟踪,错误诊断,安全审计,以原创 2009-05-06 16:42:00 · 4351 阅读 · 0 评论 -
高性能Localtime服务(LINUX),源码已上传
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 高性能localtime只在Linux上进行了实现,获得1000万次调用用时890ms的高效率, 比简单调用localtime_r版的性能(23000ms)提高了约25倍; Window原创 2009-05-12 08:32:00 · 3811 阅读 · 1 评论 -
“窄接口”设计与动态类型发现
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 一个实用大型软件系统也象生活中任何一个复杂系统一样,往往需要涵盖并有机整合来自多方面的需求,除满足功能性需求外,通常还要满足系统对可扩展性(Extensibility),可维护性(Maintainabili原创 2009-05-13 14:49:00 · 2491 阅读 · 1 评论 -
用string_builder_t高效格式化字符串,源码已上传
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 字符串拼装或格式化是软件开发中经常使用的功能。对于通信软件,随着各类文本协议(如基于HTTP或XML)的日趋流行,这种需求更普遍。多数编程语言也都提供了这类服务,C中的可用方法主要是sprintf,C++中既可原创 2009-05-14 16:54:00 · 2040 阅读 · 1 评论 -
异步IO框架
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 大型通信服务器通常要处理成千上万的并发用户,如果采用同步IO方式处理用户数据收发,意味着需要为每个用户创建一个甚至两个线程(一个接收线程,一个发送线程)。 同步IO的优点是编程简单,当用户数比较少(比如几个,最原创 2009-07-26 13:17:00 · 8711 阅读 · 3 评论 -
Linux和Windows下Socket句柄(描述符)的分配策略
烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only 大型通信服务器软件通常需要管理成千上万的连接,为了在底层Socket句柄(Linux上称为描述符)上收到数据时能快速递交给应用层连接对象,实现一种高效的以Socket句柄为Key的连接对象查找算法是绝对必要的。毫原创 2009-07-09 18:24:00 · 7027 阅读 · 2 评论