摘要: 前言Eclipse作为一款开源的跨平台的集成开发环境,本身就体现出了开源的强大优势和跨平台的可移植性。不仅有众多的开发人员为它开发了不计其数的插件,而且以它为模板进行二次开发的商业IDE也不在少数,比如 Myclipse,Wolfram Mathematica的 WorkBench 等。同时,它也提供了几乎对所有语言的开发支持,从主流的 Java,C++,Python 到 及其非主流的 Linden Scripting Language,这种兼容并包的精神是闭源软件难以望其项背的。虽然说,专一的IDE会给特定项目的开发带来更加优秀的功能支持,比如 Visual Studio 配合上一些插件 在 阅读全文
posted @ 2013-12-09 21:50 孤火 阅读(3256) 评论(2) 推荐(0) 编辑
摘要: 很多场合之所以使用C++,一方面是由于C++编译后的native code的高效性能,另一方面是由于C++优秀的并发能力。并行方式有多进程 和多线程之分,本章暂且只讨论多线程,多进程方面的知识会在其他章节具体讨论。多线程是开发C++服务器程序非常重要的基础,如何根据需求具体的设计、分 配线程以及线程间的通信,也是服务器程序非常重要的部分,除了能够带来程序的性能提高外,若设计失误,则可能导致程序复杂而又混乱,变成bug滋生的温 床。所以设计、开发优秀的线程组件以供重用,无论如何都是值得的。 线程相关的api并不复杂,然而无论是linux还是windows系统,都是c风格的接口,我们只需简单的封. 阅读全文
posted @ 2013-12-09 14:54 孤火 阅读(786) 评论(0) 推荐(0) 编辑
摘要: 在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:l 并发l 异步l 缓存下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。1任务队列1.1 以生产者-消费者模型设计任务队列 生产者-消费者模型是人们非常熟悉的模型,比如在某个服务器程序中,当User数据被逻辑模块修改后,就产生一个更新数据库的任务(produce),投递给IO模块任务队列,IO模块从任务队列中取出任务执行sql操作(consume)。 设计通用的任务队列,示例代码如下: 详细实现可参见: http://ffown.googlecode.com/... 阅读全文
posted @ 2013-12-09 14:44 孤火 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 最近在进行监控平台的设计,之前一直觉得C/C++中最棘手的部分是内存的管理上,远不止new/delete、malloc/free这么简单。 随着代码量的递增,程序结构复杂度的提高。各种内存方面的问题悄然滋生。而且作为平台,后期的插件扩展在所难免。长时间运行的采集平台的特性更是提出了对 稳定性的高要求。不是c#、java,没有虚拟机为你管理内存,一切都要靠自己。于是想看看nginx、python、lua这些C的经典之作在内存管理 这块“要地”又是如何处理的。 先来看看nginx吧,因为网上都说nginx的内存池设计的非常精巧:1、基本结构先来学习一下nginx内存池的几个主要数据结构:[见:./ 阅读全文
posted @ 2013-12-09 11:24 孤火 阅读(139) 评论(0) 推荐(0) 编辑