上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 65 下一页
摘要: [译文]Protocol Buffers:Google 的数据交换格式Jul 09北极程序设计Open Source,Protocol Buffers2 Comments×原文地址:Protocol Buffers: Google’s Data Interchange Format本文地址:http://migege.com/archives/protocol-buffers-googles-data.html由 北极冰仔 翻译,转载请以超级链接的形式注明本文地址。在 Google,我们的任务是将全世界的所有信息进行组织。毫不夸张地,我们使用成千上万种不同的数据格式来描述服务器之间的 阅读全文
posted @ 2011-07-12 22:47 Lunaa 阅读(138) 评论(0) 推荐(0) 编辑
摘要: Boost.Asio和ACE之间关于Socket编程的比较ACE是一个很成熟的中间件产品,为自适应通讯环境,但它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,有点困难。ASIO是基本Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。 最近分析ASIO的源代码,让我无不惊呀于它设计。在ACE中开发中的内存管理一直让人头痛,ASIO的出现,让我看到新的曙光,成为我新的好伙伴。简单地与ACE做个比较。boost::asio是一个高性能的网络开发库,Windows下使用IOCP,Linux下使用epoll。与ACE不同的是,它并没有提供一个网络框架,而是采取组 阅读全文
posted @ 2011-07-09 21:42 Lunaa 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 对象生死劫 - 构造函数和析构函数的异常构造函数和析构函数分别管理对象的建立和释放,负责对象的诞生和死亡的过程。当一个对象诞生时,构造函数负责创建并初始化对象的内部环境,包括分配内存、创建内部对象和打开相关的外部资源,等等。而当对象死亡时,析构函数负责关闭资源、释放内部的对象和已分配的内存。在对象生死攸关的地方,如果程序代码出现问题,常常会发生内存泄漏,从而产生可能危害系统运行的孤魂野鬼。大量的事实表明,业务逻辑代码写得非常严谨的程序在运行中仍然发现存在内存泄露,大都是构造和析构部分的代码存在问题。而许多程序员都习惯于面向对象的编程,需要时就建立一个对象,不用时就将其释放。这样的习惯简化了我们 阅读全文
posted @ 2011-07-08 12:36 Lunaa 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 第17条: 要在单独的语句中使用智能指针来存储由new创建的对象假设这里有一个函数用来显示处理优先级,另一个函数根据当前优先级为一个动态分配的 Widget 做一些处理: int priority(); void processWidget(std::tr1::shared_ptr pw, int priority); 一定要时刻记住“使用对象管理资源”这一真理(参见第 13 条)。 processWidget 中可以使用智能指针来动态分配其需要处理的 Widget 。 下面是对 progressWidget 的一次调用: processWidget(new Widget, priority( 阅读全文
posted @ 2011-07-03 13:26 Lunaa 阅读(147) 评论(0) 推荐(0) 编辑
摘要: Boost智能指针——shared_ptrboost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include#include #include class implementation{public:~implementation() { std::cout sp1(new implementation());std::cout sp2 = sp1;std::cout(new imp. 阅读全文
posted @ 2011-07-03 12:14 Lunaa 阅读(145) 评论(0) 推荐(0) 编辑
摘要: Boost智能指针——weak_ptr循环引用: 引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象。一个简单的例子如下: #include #include #include #include class parent;class children;typedef boost::shared_ptr parent_ptr;typedef boost::shared_ptr children_ptr;class parent{public:~parent() { std::cout children = son;son->parent = father; 阅读全文
posted @ 2011-07-03 11:48 Lunaa 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 转自孟岩blog http://blog.csdn.net/myan/archive/2008/01/07/2028545.aspx松本行宏如约于圣诞节发布了Ruby 1.9。根据Ruby的惯例,小数点后面第一位如果是单数,那么就表明这是一个实验版本,不推荐用于产品环境。所谓“产品环境”,对于目前的Ruby来说,基本上就是Ruby on Rails。从目前RoR社群的反映来看,确实有人正在尝试用Ruby 1.9配合RoR,但是尚属玩票性质。我询问了一些处在真实项目中的RoR团队,目前还没有人打算在自己的项目中使用Ruby 1.9。 在Ruby社群里的半仙级人物Mauricio Fernande 阅读全文
posted @ 2011-06-29 10:02 Lunaa 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 转自孟岩blog http://blog.csdn.net/myan/archive/2008/01/07/2028545.aspx松本行宏如约于圣诞节发布了Ruby 1.9。根据Ruby的惯例,小数点后面第一位如果是单数,那么就表明这是一个实验版本,不推荐用于产品环境。所谓“产品环境”,对于目前的Ruby来说,基本上就是Ruby on Rails。从目前RoR社群的反映来看,确实有人正在尝试用Ruby 1.9配合RoR,但是尚属玩票性质。我询问了一些处在真实项目中的RoR团队,目前还没有人打算在自己的项目中使用Ruby 1.9。 在Ruby社群里的半仙级人物Mauricio Fernande 阅读全文
posted @ 2011-06-29 10:02 Lunaa 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 一些鲜为人知的编程真相 做程序员的经历让我知道了一些关于软件编程的事情。下面的这些事情可能会让朋友们对软件开发感到惊讶:1. 一个程序员用在写程序上的时间大概占他的工作时间的10-20%,大部分的程序员每天大约能写出10-12行的能进入最终的产品的代码 — —不管他的技术水平有多高。 好的程序员花去90%的时间在思考、研究和实验,来找出最优方案。差的程序员花去90%的时间在调试问题程序、盲目的修改程序,期望某种写法能可行。“一个卓越的车床工可以要求比一个一般的车床工多拿数倍高的工资,但一个卓越的软件写手的价值会10000倍于一个普通的写手。”——比尔 盖茨2. 一个优秀的程序员的效率会是一.. 阅读全文
posted @ 2011-06-18 20:37 Lunaa 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 一些鲜为人知的编程真相 做程序员的经历让我知道了一些关于软件编程的事情。下面的这些事情可能会让朋友们对软件开发感到惊讶:1. 一个程序员用在写程序上的时间大概占他的工作时间的10-20%,大部分的程序员每天大约能写出10-12行的能进入最终的产品的代码 — —不管他的技术水平有多高。 好的程序员花去90%的时间在思考、研究和实验,来找出最优方案。差的程序员花去90%的时间在调试问题程序、盲目的修改程序,期望某种写法能可行。“一个卓越的车床工可以要求比一个一般的车床工多拿数倍高的工资,但一个卓越的软件写手的价值会10000倍于一个普通的写手。”——比尔 盖茨2. 一个优秀的程序员的效率会是一.. 阅读全文
posted @ 2011-06-18 20:37 Lunaa 阅读(104) 评论(0) 推荐(0) 编辑
上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 65 下一页