c++
文章平均质量分 77
陈硕
@bnu_chenshuo
展开
-
一道Google top coder的850分例题及解答
一道Google top coder的850分例题及解答 原题: 假设有这样一种字符串,它们的长度不大于 26 ,而且若一个这样的字符串其长度为 m ,则这个字符串必定由 a, b, c ... z 中的前 m 个字母构成,同时我们保证每个字母出现且仅出现一次。比方说某个字符串长度为 5 ,那么它一定是由 a, b, c, d, e 这 5 个字母构成,不会多一个也不会少一个。嗯嗯原创 2006-04-06 22:04:00 · 21357 阅读 · 17 评论 -
以boost::function和boost:bind取代虚函数
以boost::function和boost:bind取代虚函数 这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船。boost::function和boost::bind已经纳入了std::tr1,这或许是C++0x最值得期待的功能,它将彻底改变C++库的设计方式,以及应原创 2008-10-13 01:31:00 · 76609 阅读 · 67 评论 -
muduo 与 boost asio 吞吐量对比
muduo 是一个基于 Reactor 模式的 C++ 网络库,我在编写它的时候并没有以高并发高吞吐为主要目标,但出乎我的意料,ping pong 测试表明,muduo 吞吐量比 boost.asio 高 15% 以上。原创 2010-09-04 16:24:00 · 45500 阅读 · 40 评论 -
发布一个基于 Reactor 模式的 C++ 网络库
Muduo 是我在业余时间编写的基于 Reactor 模式的 C++ 网络库,适用于 Linux 平台,支持多线程。本文主要介绍 muduo 网络库的使用。其设计与实现将有另文讲解。原创 2010-08-29 23:38:00 · 95754 阅读 · 76 评论 -
发布一个 Linux 下的 C++ 多线程库
发布一个我自己业余时间编写的 C++ 多线程库 for Linux,这个库只有不到 1000 行源代码,封装了 pthreads 的常用功能(互斥器、条件变量、线程),实现了简单的线程池,并仿照 java concurrent 包编写了 BlockingQueue 和 CountDownLatch。库里的每个 class 都提供了使用样例。 这个库的内容:1. 整数的原子操作, AtomicInt32 和 AtomicInt64;2. 线程 Thread 和线程池 ThreadPool;3. 互斥器与条原创 2010-08-21 23:41:00 · 39902 阅读 · 77 评论 -
用异或来交换两个变量是错误的
用异或来交换变量是错误的 陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice 翻转一个字符串,例如把 "12345" 变成 "54321",这是一个最简单的不过的编码任务,即便是 C 语言初学者的也能毫不费力地写出类似如下的代码: // 版本一,用中间变量交换两个数,好代码void reverse_by_swap(char*原创 2010-01-09 22:43:00 · 42120 阅读 · 40 评论 -
带符号整数的除法与余数
带符号整数的除法与余数Division of Signed Integers 陈硕 giantchen_AT_gmail_DOT_com 最近研究整数到字符串的转换,读到了 Matthew Wilson 的《Efficient Integer to String Conversions》系列文章。(http://synesis.com.au/publications.html 搜原创 2010-01-06 01:25:00 · 48184 阅读 · 22 评论 -
学之者生,用之者死——ACE历史与简评
学之者生,用之者死——ACE历史与简评陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice2010 March 10ACE 是现代面向对象网络编程的鼻祖,确立了许多重要模式,如 Reactor、Acceptor 等,重要到我们甚至觉得网络编程就应该是那样的。但为什么 ACE 叫好不叫座?大名鼎鼎却使用者寥寥?本文谈谈我的个人观点。ACE 是原创 2010-03-10 11:06:00 · 77886 阅读 · 205 评论 -
多线程服务器的常用编程模型
多线程服务器的常用编程模型 陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice2009 Feb 12 建议阅读本文 PDF 版下载: http://files.cppblog.com/Solstice/multithreaded_server.pdf 本文主要讲我个人在多线程开发方面的一些粗浅经验。总结了一两种常原创 2010-02-12 17:07:00 · 91001 阅读 · 31 评论 -
当析构函数遇到多线程──C++ 中线程安全的对象回调
当析构函数遇到多线程── C++ 中线程安全的对象回调 陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice请尽量阅读本文 PDF 版:http://www.cppblog.com/Files/Solstice/dtor_meets_mt.pdf 豆丁亦可,内容略微滞后: http://www.docin.com/p-42460300原创 2010-01-22 22:15:00 · 50599 阅读 · 59 评论 -
多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间
多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间 陈硕Blog.csdn.net/Solstice 自从 Intel Pentium 加入 RDTSC 指令以来,这条指令是 micro-benchmarking 的利器,可以以极小的代价获得高精度的 CPU 时钟周期数(Time Stamp Counter),不少介绍优化的文章[1]和书籍用它来比较两段代码的快慢。甚原创 2010-01-16 00:24:00 · 43325 阅读 · 12 评论 -
C++ 标准库中的allocator是多余的
C++ 标准库中的allocator是多余的我认为C++的allocator是依赖注入的一次失败的尝试。 C/C++里的内存分配和释放是个重要的事情,我同意,在写library的时候,除了默认使用malloc/free,还应该允许用户指定使用内存分配的函数。用现在的话说,如果library依赖于内存分配与释放,就应该允许用户注入这种依赖。我看到有些C library是支原创 2009-08-02 12:13:00 · 29277 阅读 · 88 评论 -
借shared_ptr实现copy-on-write
借shared_ptr实现copy-on-write场景:一个多线程的C++程序,24h x 5.5d运行。有几个工作线程ThreadW{0,1,2,3},处理客户发过来的交易请求,另外有一个背景线程ThreadB,不定期更新程序内部的参考数据。这些线程都跟一个hash表打交道,工作线程只读,背景线程读写,必然要用到一些同步机制,防止数据损坏。这里的示例代码用std::map代替hash表,意思是原创 2008-11-22 20:33:00 · 19713 阅读 · 37 评论 -
STL性能测试
作者主页http://www.chenshuo.com可下载测试文本与源代码C++ Standard Template Library——STL的性能究竟如何,不同版本的STL其性能差异有多少?为了解这些,让我们来做一个简单的测试吧。测试的基本思路是用C与C++分别实现一个程序,实现相同的功能,并要求C++程序的主要数据结构用STL中的Containers、Algorithms等来实现。原创 2001-10-03 12:18:00 · 15729 阅读 · 13 评论