陈硕的 Blog

吾尝终日而思矣,不如须臾之所学也。吾尝跂而望矣,不如登高之博见也。……君子生非异也,善假于物也。

共3页: 上一页 1 2 3 下一页 

2011年7月17日

C++ 工程实践(7):iostream 的用途与局限

摘要: C++ iostream 的主要作用是让初学者有一个方便的命令行输入输出试验环境,在真实的项目中很少用到 iostream,因此不必把精力花在深究 iostream 的格式化与 manipulator。iostream 的设计初衷是提供一个可扩展的类型安全的 IO 机制,其整个设计复杂不堪,iostream 在实际项目中的用处非常有限,为此投入过多学习精力实在不值。阅读全文

posted @ 2011-07-17 15:08 陈硕 阅读(17765) 评论(9) 编辑

2011年7月1日

关于 TCP 并发连接的几个思考题与试验

摘要: 陈硕 (giantchen AT gmail)blog.csdn.net/Solstice前几天我在新浪微博上出了两道有关 TCP 的思考题,引发了一场讨论 http://weibo.com/1701018393/eCuxDrta0Nn 。第一道初级题目是:有一台机器,它有一个 IP,上面运行了一个 TCP 服务程序,程序只侦听一个端口,问:从理论上讲(只考虑 TCP/IP 这一层面,不考虑IPv...阅读全文

posted @ 2011-07-01 12:51 陈硕 阅读(26620) 评论(20) 编辑

2011年6月16日

Muduo 多线程模型:一个 Sudoku 服务器演变

摘要: 本文以一个 Sudoku Solver 为例,回顾了并发网络服务程序的多种设计方案,并介绍了使用 muduo 网络库编写多线程服务器的两种最常用手法。以往的例子展现了 Muduo 在编写单线程并发网络服务程序方面的能力与便捷性,今天我们看一看它在多线程方面的表现。阅读全文

posted @ 2011-06-16 13:04 陈硕 阅读(3911) 评论(7) 编辑

2011年6月6日

谈一谈网络编程学习经验(06-08更新)

摘要: 本文谈一谈我在学习网络编程方面的一些个人经验。“网络编程”这个术语的范围很广,本文指用Sockets API开发基于TCP/IP的网络应用程序。1. 网络编程的一些胡思乱想,谈谈我对这一领域的认识 2. 几本必看的书,基本上还是W. Richard Stevents那几本阅读全文

posted @ 2011-06-06 08:43 陈硕 阅读(15155) 评论(17) 编辑

2011年6月2日

Muduo 网络编程示例之十:socks4a 代理服务器

摘要: 本文介绍用 muduo 实现一个简单的 socks4a 代理服务器阅读全文

posted @ 2011-06-02 23:03 陈硕 阅读(2276) 评论(5) 编辑

2011年5月31日

分布式系统中要部署几台 NTP 服务器才够用?

摘要: 根据以上分析,似乎要 4 台 NTP 服务器才能满足基本的高可用需求,您同意吗?阅读全文

posted @ 2011-05-31 00:07 陈硕 阅读(3476) 评论(6) 编辑

2011年5月25日

Muduo 网络编程示例之九:简单的消息广播服务

摘要: 本文介绍用 muduo 实现一个简单的 topic-based 消息广播服务,这其实是“聊天室”的一个简单扩展,不过聊天的不是人,而是分布式系统中的程序。阅读全文

posted @ 2011-05-25 23:22 陈硕 阅读(2006) 评论(0) 编辑

2011年5月16日

C++ 工程实践(6):单元测试如何 mock 系统调用

摘要: 本文讨论了在编写单元测试时 mock 系统调用(以及其他第三方库)的几种做法。阅读全文

posted @ 2011-05-16 00:20 陈硕 阅读(2971) 评论(0) 编辑

2011年5月9日

分布式系统部署、监控与进程管理的几重境界

摘要: 根据公司的规模和技术水平不同,分布式系统的运维分为几重境界,以下是我对各重境界的简要描述。阅读全文

posted @ 2011-05-09 16:48 陈硕 阅读(5193) 评论(5) 编辑

2011年5月4日

Muduo 网络编程示例之八:用 Timing wheel 踢掉空闲连接

摘要: 本文介绍如何使用 timing wheel 来踢掉空闲的连接,一个连接如果若干秒没有收到数据,就认为是空闲连接。阅读全文

posted @ 2011-05-04 21:23 陈硕 阅读(5811) 评论(5) 编辑

2011年5月2日

Muduo 网络编程示例之七:“串并转换”连接服务器及其自动化测试

摘要: 本文介绍如何使用 test harness 来测试一个具有内部逻辑的网络服务程序。阅读全文

posted @ 2011-05-02 19:49 陈硕 阅读(1764) 评论(0) 编辑

2011年4月27日

Muduo 网络编程示例之六:限制服务器的最大并发连接数

摘要: Muduo 网络编程示例之六:限制服务器的最大并发连接数陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice t.sina.com.cn/giantchen这是《Muduo 网络编程示例》系列的第六篇文章。Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx本文已以大家都熟悉的 EchoServer 介绍如何限制服务器的并发连接数。本文的代码见 http://code.google.com/p/muduo/source/browse/trunk/examples/maxconne阅读全文

posted @ 2011-04-27 00:05 陈硕 阅读(2738) 评论(0) 编辑

2011年4月25日

分布式程序的自动化回归测试

摘要: 以单独的进程作为 test harness 对于开发分布式程序相当有帮助,它能达到单元测试的自动化程度和细致程度,又避免了单元测试对功能代码结构的侵入与依赖。阅读全文

posted @ 2011-04-25 00:28 陈硕 阅读(3543) 评论(4) 编辑

2011年4月22日

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

摘要: 看到一道热烈讨论的“移动用户资费统计系统”编程面试题,本文给出我的做法。http://blog.csdn.net/zhangxiaoxiang/archive/2011/04/06/6304117.aspx为避免版权纠纷,我这里就不引用原文了。 完整的代码见 https://github.com/chenshuo/recipes/tree/master/java/ 其中 billing/ 目录是 Java 代码,groovy/ 目录是计费规则。这份代码依赖 Groovy、JUnit、Joda date time (JSR-310) 等第三方库,见 run.sh 中 class path 的设置阅读全文

posted @ 2011-04-22 13:04 陈硕 阅读(4049) 评论(9) 编辑

2011年4月20日

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

摘要: 本文介绍一个简单的网络程序 roundtrip,用于测量两台机器之间的网络延迟,即“往返时间 / round trip time / RTT”。这篇文章主要考察定长 TCP 消息的分包,TCP_NODELAY 的作用。阅读全文

posted @ 2011-04-20 09:27 陈硕 阅读(2545) 评论(0) 编辑

2011年4月17日

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

摘要: 本文介绍 Muduo 中输入输出缓冲区的设计与实现。阅读全文

posted @ 2011-04-17 12:24 陈硕 阅读(6950) 评论(3) 编辑

2011年4月13日

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

摘要: 本文介绍如何将前文介绍的 protobuf 打包方案与 muduo::net::Buffer 结合,实现 protobuf codec 与 message dispatcher。阅读全文

posted @ 2011-04-13 07:48 陈硕 阅读(4043) 评论(9) 编辑

2011年4月3日

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

摘要: 在接收到 protobuf 数据之后,如何自动创建具体的 Protobuf Message 对象,再做的反序列化。其实,Google Protobuf 本身具有很强的反射功能,可以根据 type name 创建具体类型的 Message 对象,我们直接利用即可。阅读全文

posted @ 2011-04-03 15:58 陈硕 阅读(34318) 评论(17) 编辑

2011年3月30日

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

摘要: 摘要:本篇博客没有新东西,只不过是把去年在珠三角技术沙龙做的一次演讲的其中一张 ppt 展开讲一讲。分布式系统中的每个长期运行的、会与其他机器打交道的进程都应该提供一个管理接口,对外提供一个维修探查通道,可以查看进程的全部状态。一种具体的做法是在程序里内置 http 服务器。阅读全文

posted @ 2011-03-30 00:03 陈硕 阅读(6637) 评论(3) 编辑

2011年3月29日

分布式系统中的进程标识

摘要: 昨天跟朋友聊天,谈到了分布式系统中如何为进程取标识符(process identifier),写篇博客简单总结一下我的观点:以四元组 ip:port:start_time:pid 作为分布式系统中进程的全局唯一标识符(gpid)阅读全文

posted @ 2011-03-29 09:29 陈硕 阅读(3803) 评论(2) 编辑

2011年3月13日

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

摘要: 作为 C++ 动态库的作者,应当避免使用虚函数作为库的接口。这么做会给保持二进制兼容性带来很大麻烦,不得不增加很多不必要的 interfaces,最终重蹈 COM 的覆辙。 本文主要讨论 Linux x86 平台,会继续举 Windows/COM 作为反面教材。阅读全文

posted @ 2011-03-13 09:07 陈硕 阅读(3390) 评论(12) 编辑

2011年3月9日

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

摘要: 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice本文主要讨论 Linux x86/x86-64 平台,偶尔会举 Windows 作为反面教材。C/C++ 的二进制兼容性 (binary compatibility) 有多重含义,本文主要在“头文件和库文件分别升级,可执行文件是否受影响”这个意义下讨论,我称之为 library (主要是 shared library,即动态链接库)的 ABI (application binary interface)。至于编译器与操作系统的 ABI 留给下一篇谈 C++ 标准与实践的文章。什么是二进制兼容性在解释这个阅读全文

posted @ 2011-03-09 10:55 陈硕 阅读(4532) 评论(10) 编辑

2011年3月5日

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

摘要: 所谓“有利于版本管理”的代码格式,就是指在代码中合理使用换行符,对 diff 工具友好,让 diff 的结果清晰明了地表达代码的改动。阅读全文

posted @ 2011-03-05 15:17 陈硕 阅读(2624) 评论(11) 编辑

2011年2月25日

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

摘要: 陈硕 (giantchen_AT_gmail)Blog.csdn.net/SolsticeMuduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx今天收到一位网友来信:在 simple 中的 daytime 示例中,服务端主动关闭时调用的是如下函数序列,这不是只是关闭了连接上的写操作吗,怎么是关闭了整个连接? 1: void DaytimeServer::onConnection(const muduo::net::TcpConnectionPtr& conn) 2: { 3: if (conn->conn阅读全文

posted @ 2011-02-25 21:30 陈硕 阅读(2059) 评论(1) 编辑

2011年2月23日

Muduo 网络编程示例之四:Twisted Finger

摘要: 陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice这是《Muduo 网络编程示例》系列的第四篇文章。Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx Python Twisted 是一款非常好的网络库,它也采用 Reactor 作为网络编程的基本模型,所以从使用上与 muduo 颇有相似之处。(当然,muduo 没有 deferreds)Finger 是 twisted 文档的一个经典例子,本文展示如何用 muduo 来实现最简单的 finger 服务端。限于篇幅,只实现 阅读全文

posted @ 2011-02-23 21:34 陈硕 阅读(934) 评论(0) 编辑

共3页: 上一页 1 2 3 下一页 

导航

统计

公告