自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈硕的Blog

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

  • 博客(150)
  • 资源 (3)
  • 收藏
  • 关注

原创 《Linux 多线程服务端编程:使用 muduo C++ 网络库》网上书店订购

《Linux 多线程服务端编程:使用 muduo C++ 网络库》网上书店订购内容简介本书主要讲述采用现代 C++ 在 x86-64 Linux 上编写多线程 TCP 网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即 one loop per thread。这是在 Linux 下以 native 语言编写用户态高性能网络程序最成熟的模式,掌握之后可顺利地开发各类常见的

2013-01-11 12:43:50 63876 170

原创 陈硕博客文章合集下载(2013-02-01更新)

我的邮箱: giantchen_AT_gmail_DOT_com  推特帐号 @bnu_chenshuo新浪微博 weibo.com/giantchen  我不使用即时聊天工具。也请不要用 CSDN 短消息或者留言功能跟我联系。由于 CSDN 博客改版之后不再支持 Live Writer,原有的博客文章也出现代码格式错乱等问题,因此建议同时留意我的另外一个博客:http://www.cnblogs

2011-02-24 20:54:00 42943 32

原创 在知乎开了个专栏:网站可靠性工程(SRE)

http://zhuanlan.zhihu.com/SREng

2016-04-11 11:40:30 21346

原创 《Linux 多线程服务端编程》出了多看电子版,繁体版在台湾上市

《Linux 多线程服务端编程》多看电子版:http://www.duokan.com/book/76600《Linux 多线程服务端编程》繁体版由佳魁資訊在台湾出版发行:http://www.books.com.tw/products/0010644288

2015-04-19 14:09:10 25981 3

原创 在 Boolan 网开讲《Linux 网络编程实战》课程

《网络编程实战》是一门以讲解实例为主的课程,每一节都讲一两个网络编程的例子程序,课程偏重 Linux 服务端 TCP 网络编程。 本课程要求听课人员已经读过《Unix 网络编程》,能写简单的 TCP echo 服务。   课程地址:http://boolan.com/course/4 配套页面:http://chenshuo.com/pnp

2014-12-03 01:47:02 45032 18

原创 C1000k 新思路:用户态 TCP/IP 协议栈

现在的服务器支撑上百万个并发 TCP 连接已经不是新闻。实现 C1000k 的常规做法是调整内核参数,提高文件数,降低每个连接的内存消耗。 在今年的 BSDCan2014 会议上, Patrick Kelsey 介绍了把 FreeBSD 9.x 的 TCP/IP 协议栈移植到了用户态,并用于 WANProxy 项目。在用户态运行 TCP/IP 协议栈意味着并发 TCP 连接不再占用系统文件数,只占内存,解决了 C1000k 的一大瓶颈,

2014-05-20 14:13:43 50000 10

转载 我在知乎回答关于 Linux C++ 服务端编程的学习方法

http://www.zhihu.com/question/22608820/answer/21968467

2014-02-06 02:22:00 48893 2

原创 《Linux 多线程服务端编程:使用 muduo C++ 网络库》电子版上市

《Linux 多线程服务端编程:使用 muduo C++ 网络库》 电子版已在京东上市销售。购买地址:http://e.jd.com/30149978.html阅读效果:PCiPad目前京东的阅读器没有切白边功能,值得改进。

2013-11-01 10:36:44 38098 9

原创 C++面试中string类的一种正确简明的写法

本文首发于酷壳网 http://coolshell.cn/articles/10478.html先说说程序员(应届生)面试的一般过程,一轮面试(面对一到两个面试官)一般是四、五十分钟,面试官会问两三个编程问题(通常是两大一小),因此留给每个编程题的时间只有 20 分钟。这 20 分钟不光是写代码,还要跟面试官讨论你的答案并解答提问,比如面试官拿过你的答案纸,问某一行代码如果修改会有什么后果。因此真

2013-10-11 11:08:50 46251 9

原创 读者来信与解答 1

读者来信用黑色,我的回答用蓝色。经过整理,接近对话体。> 陈硕,你好,>> 阅读了你的书,很有收获。> 但是没有在moduo的源代码里面找到实现线程模型11的例子。即one thread per loop + thread pool。> 谢谢。书第 173 页图 6-14 下面的第一段话,具体改动方法参考前一页的 diff。> 谢谢。>> 另外TcpConnection和Channel的生命周期管

2013-10-10 12:19:12 28463 3

原创 用条件变量实现事件等待器的正确与错误做法

前几天,我发了一条微博 http://weibo.com/1701018393/A7FrW7ZVd ,质疑某本书对 Pthreads 条件变量的封装是错的,因为它没有把 mutex 的 lock()/unlock() 函数暴露出来,导致无法实用。后来大家讨论的分歧是这个 cond class 是不是通用的条件变量封装,还是只是一个特殊的“事件等待器”。作为事件等待器,其实现也是错的,因为存在丢失事件的可能,可以算是初学者使用条件变量的典型错误。

2013-09-09 03:02:55 41075 22

转载 赖勇浩:推荐《Linux 多线程服务器端编程》

推荐《Linux 多线程服务器端编程》赖勇浩(http://laiyonghao.com)最近,有一位朋友因为工作需要,需要从网游的客户端编程转向服务器端编程,找我推荐一本书。我推荐了《Linux 多线程服务器端编程——使用 muduo C++ 网络库》给他,他在网上书店看了以后问我为什么推荐这么厚一本书给他,正好这本书我已经早就看完了,一直也想写篇“书评”,就在这里多扯几句。其实实在算不上书评,

2013-08-28 09:03:13 41268 1

原创 用muduo实现memcached协议的例子

用muduo实现memcached协议的例子最近花了两天时间用 muduo 部分实现了 memcached 服务器协议,代码位于 examples/memcached/server,能通过 memcached 的大部分测试用例(incr/decr 还没有实现)。这不是 memcached 的替代品(它没有实现LRU和超时功能,也没有实现二进制协议,更没有自己管理内存),而是一个网络编程的示例(代码

2013-08-18 13:00:26 31117 2

原创 近期微博吐槽言论存档,涉及“性能优化”、C++陋习等

写C++程序的几个陋习:class 名以大写 C 开头,例如 CDate;成员变量以 m_ 开头;变量采用匈牙利命名法;不知道何时禁用 copy-ctor/assign operator。有些人常常把“性能”挂在嘴边,而且其以“提高性能”为理由的“优化措施”往往不到点子上,只增加了复杂性和维护难度,降低了代码质量。这属于决策点找偏了。

2013-08-12 13:57:21 42811 17

原创 《Linux多线程服务端编程:使用muduo C++网络库》上市半年重印两次,总印数达到了9000册

摘要: 《Linux多线程服务端编程:使用muduo C++网络库》这本书自今年一月上市以来,半年之内已经重印两次(加上首印,一共是三次印刷),总印数达到了9000册,这在技术书里已经算是相当不错的成绩。 以下谈一谈这本书的写作背景与内容取舍的原因。

2013-07-17 11:24:39 34174 4

原创 用 LaTeX 排版编程技术书籍的一些个人经验

用 LaTeX 排版编程技术书籍的一些个人经验陈硕多年之前我写过一篇书评《〈Word 排版艺术〉读后感——兼谈与 LATEX 的比较》,其中写道“如果将来有时间,我把自己用 LATEX 排书的经验总结一下,让读者在阅读《Word排版艺术》的基础上,更容易地把知识应用到 LATEX 排版中去。” 我自己排版了 《Linux 线程服务端编程:使用 muduo C++ 网络库》,现在终于可以把账还上了。

2013-02-04 03:55:14 54410 2

原创 为什么多线程读写 shared_ptr 要加锁?

为什么多线程读写 shared_ptr 要加锁?陈硕(giantchen_AT_gmail_DOT_com)2012-01-28最新版下载:http://chenshuo.googlecode.com/files/CppEngineering.pdf我在《Linux 多线程服务端编程:使用 muduo C++ 网络库》第 1.9 节“再论 shared_ptr 的线程安全”中写道:(shared_

2013-01-28 05:13:55 97058 54

原创 关于 std::set/std::map 的几个为什么

陈硕 (chenshuo.com)2013-01-20std::set/std::map (以下用 std::map 代表) 是常用的关联式容器,也是 ADT(抽象数据类型)。也就是说,其接口(不是 OO 意义下的 interface)不仅规定了操作的功能,还规定了操作的复杂度(代价/cost)。例如 set::insert(iterator first, iterator last) 在通常情况

2013-01-20 13:22:53 59642 9

原创 muduo多机协作网络编程示例一:单词计数及排序

去年我写了《Muduo 网络编程示例》系列文章,这些文章已经收入《Linux 多线程服务端编程:使用 muduo C++ 网络库》一书。这些文章讲的基本都是运行在单机上的网络程序,每个例子都只有一个程序(第7.13节例外)。我接下来打算继续写几篇文章,谈一谈分布在多台机器上、协作发挥作用的网络编程例子。今天先讲第一个,单词计数及排序。单词计数(word count),顾名思义就是统计一个文本文件里

2013-01-13 03:59:54 39302 7

原创 发布几个PDF小工具

《Linux多线程服务端编程——使用muduo C++网络库》这本书是我自己用LaTeX排版的,在排版过程中也积累了一些小工具,今天把其中几个发布出来。这几个工具都直接基于开源的 iText 库,可从 http://itextpdf.com/ 下载。下载Groovy 版本位于 https://github.com/chenshuo/typeset/tree/master/toolsJava 版本位

2012-12-17 12:56:04 43425 2

原创 新书预告:《Linux 多线程服务端编程:使用 muduo C++ 网络库》

看完了 W. Richard Stevens 的传世经典《UNIX 网络编程》, 能照着例子用 Sockets API 编写 echo 服务, 却仍然对稍微复杂一点的网络编程任务感到无从下手? 书中示例代码把业务逻辑和 Sockets 调用混在一起,似乎不利于将来扩展?网络编程中的遇到一些具体问题该怎么办?例如程序在本机测试正常,放到网络运行上就经常出现数据收不全的情况?TCP 协议真的有所谓的“

2012-09-21 07:11:15 47994 16

原创 从《C++ Primer 第四版》入手学习 C++

《C++ Primer 第4版 评注版》即将出版,这是序言。PDF 版见:https://github.com/downloads/chenshuo/documents/LearnCpp.pdf从《C++ Primer 第四版》入手学习 C++为什么要学习C++?2009 年本书作者 Stan Lippman 先生来华参加上海祝成科技举办的C++技术大会,他表示人们现在还用C++的惟一理由是其性能

2012-07-06 08:54:20 80215 1

原创 《Muduo 网络库:现代非阻塞C++网络编程》演讲

2012年6月30日下午将在深圳做《Muduo 网络库:现代非阻塞C++网络编程》演讲,这是PPT:http://www.slideshare.net/chenshuo/muduo-network-library演讲视频:http://v.youku.com/v_show/id_XNDIyNDc5MDMy.htmlhttp://youtu.be/YDnCAs894Bg 活动介绍:http://ou

2012-06-29 23:16:27 32303

原创 发布适合服务端C++程序的高效日志库

PPT 见http://www.slideshare.net/chenshuo/efficient-logging-in-multithreaded-c-server/2012年6月30日在深圳的简短演讲:http://v.youku.com/v_show/id_XNDIyMjUwMDYw.htmlhttp://www.youtube.com/watch?v=KM_eQ6uRYdU代码位于 mud

2012-06-06 21:20:25 34987 10

原创 C++ 工程实践(12):C++ 编译链接模型精要

《C++ 工程实践》新增第15节“C++ 编译链接模型精要”  PDF 下载: https://github.com/downloads/chenshuo/documents/CppPractice.pdf

2012-04-20 08:18:46 20946

原创 C++ 工程实践(11):用 STL algorithm 秒杀几道算法面试题

《C++ 工程实践》新增第14节“用 STL algorithm 秒杀几道算法面试题” PDF 下载: https://github.com/downloads/chenshuo/documents/CppPractice.pdf

2012-04-01 10:01:26 23383 4

原创 C++ 工程实践(10):再探std::string

本文总结了std::string的三种常见实现方式。全文见 https://github.com/downloads/chenshuo/documents/CppPractice.pdf 第13节。

2012-03-17 16:29:55 17322

原创 C++ 工程实践(9):数据抽象

陈硕 (giantchen_AT_gmail)http://blog.csdn.net/Solstice  http://weibo.com/giantchen陈硕关于 C++ 工程实践的系列文章: http://blog.csdn.net/Solstice/category/8

2011-08-22 00:20:40 19134 4

原创 C++ 工程实践(8):值语义

陈硕 (giantchen_AT_gmail)http://blog.csdn.net/Solstice  http://weibo.com/giantchen陈硕关于 C++ 工程实践的系列文章: http://blog.csdn.net/Solstice/category/8

2011-08-16 21:16:23 16604 3

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

C++ 工程实践(7):iostream 的用途与局限陈硕 (giantchen_AT_gmail)http://blog.csdn.net/Solstice http://weibo.com/giantchen陈硕关于 C++ 工程实践的系列文章: ht

2011-07-17 15:08:54 33947 33

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

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

2011-07-01 12:51:00 92652 20

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

陈硕 (giantchen AT gmail)blog.csdn.net/SolsticeMuduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx本文以一个 Sudoku Solver 为例,回顾了并发网络服务程序的多种设计方案,并介绍了使用 muduo 网络库编写多线程服务器的两种最常用手法。以往的例子展现了

2011-06-16 13:02:00 58635 52

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

谈一谈网络编程学习经验 陈硕 [email protected] blog.csdn.net/Solstice 2011-06-06 PDF 版下载:https://github.com/downloads/chenshuo/documents/LearningNetworkProgramming.pdf本文谈一谈我在学习网络编程方面的一些个人经验。“网络编程”这个术语

2011-06-06 08:41:00 142860 104

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

本文介绍用 muduo 实现一个简单的 socks4a 代理服务器,代码见 http://code.google.com/p/muduo/source/browse/trunk/examples/socks4a/ 。

2011-06-02 23:02:00 28750 9

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

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

2011-05-31 00:07:00 24533 8

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

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

2011-05-25 23:22:00 20315 12

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

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

2011-05-16 00:20:00 26648 7

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

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

2011-05-09 16:47:00 61586 47

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

Muduo 网络编程示例之八:Timing wheel 踢掉空闲连接 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice  t.sina.com.cn/giantchen 这是《Muduo 网络编程示例》系列的第八篇文章,原计划讲文件传输,这里插入一点计划之外的内容。 Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx 本文介绍如何使用 timing wheel 来踢掉空闲的连

2011-05-04 21:24:00 31020 47

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

Muduo 网络编程示例之七:连接服务器及其自动化测试 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice  t.sina.com.cn/giantchen 这是《Muduo 网络编程示例》系列的第七篇文章。 本文介绍如何使用 test harness 来测试一个具有内部逻辑的网络服务程序。 本文的代码见 http://code.google.com/p/muduo/source/browse/trunk/examples/multiplexer

2011-05-02 19:49:00 17943 5

当析构函数遇到多线程── C++ 中线程安全的对象回调 PDF

编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x 的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x 的成员函数期间,对象 x 不会在另一个线程被析构?如何避免这种竞态条件是 C++ 多线程编程面临的基本问题,可以借助 boost 的 shared_ptr 和 weak_ptr 完美解决。这也是实现线程安全的 Observer 模式的必备技术。 本文源自陈硕在 2009 年 12 月上海 C++ 技术大会的一场演讲《当析构函数遇到多线程》,内容略有增删。原始 PPT 可从 http://download.csdn.net/source/1982430 下载。 本文读者应具有 C++ 多线程编程经验,熟悉互斥器、竞态条件等概念,了解智能指针,知道 Observer 设计模式。

2010-01-23

当析构函数遇到多线程── C++ 中线程安全的对象回调

编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x 的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x 的成员函数期间,对象 x 不会在另一个线程被析构?如何避免这种竞态条件是 C++ 多线程编程面临的基本问题,可以借助 boost 的 shared_ptr 和 weak_ptr 完美解决。这也是实现线程安全的 Observer 模式的必备技术。 本文源自我在 2009 年 12 月上海 C++ 技术大会的一场演讲《当析构函数遇到多线程》,内容略有增删。原始 PPT 可从 http://download.csdn.net/source/1982430 下载。 本文读者应具有 C++ 多线程编程经验,熟悉互斥器、竞态条件等概念,了解智能指针,知道 Observer 设计模式。

2010-01-22

《当析构函数遇到多线程》PPT

这是陈硕在 2009 年上海 C++ 技术大会演讲《当析构函数遇到多线程》的 PPT 投影片,可自由用于个人学习,其他使用需得到作者许可。 简介:编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x 的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x 的成员函数期间,对象 x 不会在另一个线程被析构?如何避免这种 race condition 是 C++ 多线程编程面临的基本问题,可以借助 tr1 中的 shared_ptr 和 weak_ptr 完美解决。这也是实现线程安全的 Observer 模式的必备技术。

2010-01-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除