最新 | 最热门 | 最高评价

+0  “过家家”版的移动离线计费系统实现

陈硕 发于 2011年04月22日 15:16 | 点击: 1956 | 展开摘要
看到一道热烈讨论的“移动用户资费统计系统”编程面试题,本文给出我的做法。 http://blog.csdn.net/zhangxiaoxiang/archive/2011/04/06/6304117.aspx 为避免版权纠纷,我这里就不引用原文了。   完整的代码见 https://github.com/chenshuo/recipes/tree/master/java/ 其中 billing/ 目录是 Java 代码,groovy/ 目录是计费规则。这份代码依

查看全文: http://www.udpwork.com/item/4910.html

+0  Muduo 网络编程示例之五: 测量两台机器的网络延迟

陈硕 发于 2011年04月20日 09:27 | 点击: 2366 | 展开摘要
Muduo 网络编程示例之五: 测量两台机器的网络延迟 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice  t.sina.com.cn/giantchen 这是《Muduo 网络编程示例》系列的第五篇文章。 Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx   本文介绍一个简单的网络程序 roundtrip,用于测量两台机器之间的网络延迟,

查看全文: http://www.udpwork.com/item/4894.html

+0  Muduo 设计与实现之一:Buffer 类的设计

陈硕 发于 2011年04月17日 12:26 | 点击: 2809 | 展开摘要
本文介绍 Muduo 中输入输出缓冲区的设计与实现。 本文中 buffer 指一般的应用层缓冲区、缓冲技术,Buffer 特指 muduo::net::Buffer class。 本文前两节的内容已事先发表在 muduo 英文博客 http://muduo.chenshuo.com/2011/04/essentials-of-non-blocking-tcp-network.html 。 如果文中的图形看不清楚,请移步 http://www.cnblogs.com/So

查看全文: http://www.udpwork.com/item/4876.html

+0  模拟银行窗口排队叫号系统的运作

陈硕 发于 2011年04月15日 09:13 | 点击: 3275 | 展开摘要
最近在网上看到了一道面试题,初看很简单,细看有点意思的一道题目: http://blog.csdn.net/zhangxiaoxiang/archive/2011/04/01/6294132.aspx 为避免版权纠纷,我这里就不引用原文了。   各人对题目的理解不一样,我把它当成一道离散事件仿真题目来做,用一个优先队列解决。 完整的代码见 https://github.com/chenshuo/recipes/tree/master/java/bankqueue 。

查看全文: http://www.udpwork.com/item/4861.html

+0  在 muduo 中实现 protobuf 编解码器与消息分发器

陈硕 发于 2011年04月13日 08:12 | 点击: 2750 | 展开摘要
陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice  t.sina.com.cn/giantchen Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx 本文是《一种自动反射消息类型的 Google Protobuf 网络传输方案》的延续,介绍如何将前文介绍的打包方案与 muduo::net::Buffer 结合,实现了 protobuf codec

查看全文: http://www.udpwork.com/item/4862.html

+0  一种自动反射消息类型的 Google Protobuf 网络传输方案

陈硕 发于 2011年04月03日 15:57 | 点击: 4029 | 展开摘要
这篇文章要解决的问题是:在接收到 protobuf 数据之后,如何自动创建具体的 Protobuf Message 对象,再做的反序列化。“自动”的意思是:当程序中新增一个 protobuf Message 类型时,这部分代码不需要修改,不需要自己去注册消息类型。其实,Google Protobuf 本身具有很强的反射(reflection)功能,可以根据 type name 创建具体类型的 Message 对象,我们直接利用即可。

查看全文: http://www.udpwork.com/item/4724.html

+0  构建易于维护的分布式程序

陈硕 发于 2011年03月30日 00:03 | 点击: 2161 | 展开摘要
陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice 摘要:本篇博客没有新东西,只不过是把去年在珠三角技术沙龙做的一次演讲的其中一张 ppt 展开讲一讲。 本文标题中的“易于维护”指的是 supportability,不是 maintainability。前者是从运维人员角度说,程序管理起来很方便,日常的劳动负担小;后者是从开发人员的角度说,代码好读好改。 前文《分布式系统中的进程标识》我提到一个观点:分布式系统中的每个长期运行

查看全文: http://www.udpwork.com/item/4667.html

+0  分布式系统中的进程标识

陈硕 发于 2011年03月29日 01:29 | 点击: 2170 | 展开摘要
昨天跟朋友聊天,谈到了分布式系统中如何为进程取标识符(process identifier),写篇博客简单总结一下我的观点:以四元组 ip:port:start_time:pid 作为分布式系统中进程的全局唯一标识符(gpid)

查看全文: http://www.udpwork.com/item/4658.html

+0  C++ 工程实践(5):避免使用虚函数作为库的接口

陈硕 发于 2011年03月12日 22:01 | 点击: 2218 | 展开摘要
摘要:作为 C++ 动态库的作者,应当避免使用虚函数作为库的接口。这么做会给保持二进制兼容性带来很大麻烦,不得不增加很多不必要的 interfaces,最终重蹈 COM 的覆辙。 本文主要讨论 Linux x86 平台,会继续举 Windows/COM 作为反面教材。 本文是上一篇《C++ 工程实践(4):二进制兼容性》的延续,在写这篇文章的时候,我原本以外大家都对“以虚函数作为接口”的害处达成共识,我就写得比较简略,看来情况不是这样,我还得展开谈一谈。

查看全文: http://www.udpwork.com/item/4507.html

+0  C++ 工程实践(4):二进制兼容性

陈硕 发于 2011年03月09日 10:46 | 点击: 6798 | 展开摘要
陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice 本文主要讨论 Linux x86/x86-64 平台,偶尔会举 Windows 作为反面教材。 C/C++ 的二进制兼容性 (binary compatibility) 有多重含义,本文主要在“头文件和库文件分别升级,可执行文件是否受影响”这个意义下讨论,我称之为 library (主要是 shared library,即动态链接库)的 ABI (application bi

查看全文: http://www.udpwork.com/item/4468.html

+0  C++ 工程实践(3):采用有利于版本管理的代码格式

陈硕 发于 2011年03月05日 15:16 | 点击: 2206 | 展开摘要
版本管理(version controlling)是每个程序员的基本技能,C++ 程序员也不例外。版本管理的基本功能之一是追踪代码变化,让你能清楚地知道代码是如何一步步变成现在的这个样子,以及每次 check-in 都具体改动了哪些内部。所谓“有利于版本管理”的代码格式,就是指在代码中合理使用换行符,对 diff 工具友好,让 diff 的结果清晰明了地表达代码的改动。

查看全文: http://www.udpwork.com/item/4421.html

+0  为什么 muduo 的 shutdown() 没有直接关闭 TCP 连接?

陈硕 发于 2011年02月25日 21:30 | 点击: 2252 | 展开摘要
今天收到一位网友来信:在 simple 中的 daytime 示例中,服务端主动关闭时调用的是如下函数序列,这不是只是关闭了连接上的写操作吗,怎么是关闭了整个连接?陈硕答复如下:
Muduo TcpConnection 没有提供 close,而只提供 shutdown ,这么做是为了收发数据的完整性。

查看全文: http://www.udpwork.com/item/4367.html
|<<<12345>>>| 一共5页, 56条记录