摘要: 前言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) 编辑
摘要: 简介:Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。发布日期:2010 年 11 月 18 日 级别:初级 访问情况 :87121 次浏览 评论:14(查看|添加评论 - 登录) 平均分 (245个评分)为本文评分 简介什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google P... 阅读全文
posted @ 2013-12-05 22:25 孤火 阅读(155) 评论(1) 推荐(0) 编辑
摘要: 转自: http://www.cnblogs.com/yjf512/你不一定懂的cpu显示信息 2013-10-23 11:48 by 轩脉刃, 1688 阅读, 0 评论, 收藏, 编辑在使用top命令的时候会看到这么一行:里面的各个值分别是什么意思呢?今天被问到这个问题,发现答的不是很清楚。果然啊,天天用最多的top命令都还没摸透。。。惭愧。。。于是就查了些资料:官方解释Cpu(s)表示的是cpu信息。各个值的意思是:us: user cpu time (or) % CPU time spent in user spacesy: system cpu time (or) % CPU tim 阅读全文
posted @ 2013-12-04 15:36 孤火 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 在软件开发里,常常遇到多个任务同时添加的情况,比如用户要下载一部电视连续剧,就会一起添加几十集,让它一集一集地下载。如果这时使用线程池来运行,就需要这个任务队列可以多个线程同时访问它,如果队列里没有任务时,可以让多个线程等着,只要有任务到达,就立即运行。在boost库里提供了一个强大的任务队列,这个队列可以使用线程池访问,也可以当任务为空时阻塞线程。使用这个任务队列,可以让多个任务动态运行,以及适应不同的情况,可以得心应手。在Windows系统上实现是采用IOCP的原理来实现,因此这个任务队列不但可以运行一般的任务,也适用于网络应用方面。具体的使用例子如下:[cpp] view plainco 阅读全文
posted @ 2013-11-29 14:11 孤火 阅读(1606) 评论(1) 推荐(0) 编辑
摘要: 很不错的博客一定得看http://my.csdn.net/caimouse1、下载boost库从http://www.boost.org上下载到目前最新的boost库,快速传送门:boost_1_53_0.zip,当然你也可以从http://sourceforge.net/projects/boost/files/boost-jam/这里得到源代码,快速传送门:boost_1_53_0.zip(98.1 MB)我使用了后者2、得到源代码之后,使用vs2012的cl.exe编译进入到源代码目录中3、建立编译工具bjam.exe----需要执行bootstrap.bat4、指定编译命令指定msvc 阅读全文
posted @ 2013-11-29 13:33 孤火 阅读(5997) 评论(5) 推荐(0) 编辑
摘要: 近 半年主要是开发公司行情系统Feedhandler(一共十几个Feedhandler,包括沪深L1、L2,港股,国内期货,国际股票,国际期货 等。)。此系统要求跨平台、大吞吐量,超低延迟,属于CPU密集型系统。在项目过程中,有几个比较好的封装类,跟大家一起分享一下。以下所有源代码可至 http://download.csdn.net/detail/great3779/3998262 下载 一。基于Boost的跨平台锁。封装了Boost的mutex,提供了lock和unlock方法。代码示例如下:[cpp] view plaincopy#pragmaonce//Author:Huangzhid 阅读全文
posted @ 2013-11-29 13:02 孤火 阅读(783) 评论(0) 推荐(1) 编辑
摘要: #include#include#include#include#include#include#include#include#includeusingnamespacestd;usingnamespaceboost;boost::recursive_mutexio_mutex;boost::condition_variable_anycond;std::queueiq;classprinter{public:printer(boost::asio::io_service&io,intn):strand_(io),timer1_(io,boost::posix_time::secon 阅读全文
posted @ 2013-11-29 13:01 孤火 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 第一个支持的编程语言很多,首推http://ideone.com/第二个简单了点,不过可以通过email分享给朋友http://codepad.org/试一试,可以用这两个网站提高自己编写代码的能力,在没有那么多重量级IDE的环境下。 阅读全文
posted @ 2013-11-26 21:27 孤火 阅读(684) 评论(1) 推荐(0) 编辑
摘要: git的使用越来越广泛使用命令比较麻烦,下面讲解一下tortoisegit的使用先下载安装git(msysgit)和tortoisegit,安装后提示重启电脑,不解释1.找一个文件夹做仓库这里用repository\shared.gif,空白处点击右键出现以下菜单,创建共享仓库在弹出的对话框勾选make it bare第一次的话会提示是个空仓库2.在工作目录下,先确认身份TortoiseGit-->Setting,在打开的对话框里,左边选git,右边就会出现写用户名和邮箱的地方在用户工作目录下点击右键,选择git clone,弹出对话框点击ok后,发现此文件夹下多了一个隐藏的文件夹.gi 阅读全文
posted @ 2013-11-23 17:30 孤火 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 转载:http://blog.csdn.net/henreash/article/details/7561886main函数要求程序调用者传递3个参数:服务器IP地址,端口号和文档根目录.其中IP地址可以是IPv4或IPv6格式.接着创建server 对象实例,将传递进来的IP地址,端口号,文档根目录作为server对象的构造函数参数传递到处理程序中.最后调用server的run成员函数启动服 务端处理例程. http::server::server s(argv[1], argv[2], argv[3]); s.run(); 首先看看server类的定义和实现.为防止server对象被拷贝复 阅读全文
posted @ 2013-11-09 16:14 孤火 阅读(955) 评论(1) 推荐(0) 编辑
摘要: A、先下载Windows版本的Python 2.7.3版本,并安装。 Python 2.7.3的链接地址为:http://www.python.org/getit/releases/2.7.3/,我下载的版本是Windows x86 MSI Installer (2.7.3)(sig),下载后的软件名称为:python-2.7.3.msi,双击它默认安装即可。默认安装后Python 2.7.3所在路径为:C:\Python27,目录结构如下图所示:从上图可以看出,在C:\Python27路径下有python.exe命令解释器,project-creator.py脚本正是通过它来解释执行的。 . 阅读全文
posted @ 2013-10-23 10:10 孤火 阅读(253) 评论(0) 推荐(0) 编辑
摘要: boost::asio入门http://blog.163.com/henan_lujun/blog/static/19538333201341451545880/boost::asio 连接管理 http://blog.csdn.net/csfreebird/article/details/8522620 阅读全文
posted @ 2013-09-24 16:48 孤火 阅读(165) 评论(4) 推荐(0) 编辑
摘要: WebSocket握手协议1、客户端握手请求(注意:键值之间有一个空格,行间有换行符号0x13x10或者说\r\n)GET /WebSocket/LiveVideo HTTP/1.1Upgrade: WebSocketConnection: UpgradeHost: localhost:8080 (客户端请求主机)Origin: http://127.0.0.1 (来源网页地址)Sec-WebSocket-Key1: 23 asdfJKj,asdjkSec_WebSocket-Key2: wewerw234 jij9980x13x10 + 8个字节Sec_WebSocket-Key3值,没有键 阅读全文
posted @ 2013-09-16 14:48 孤火 阅读(593) 评论(0) 推荐(0) 编辑
摘要: Revel是一个高效的Go语言Web开发框架, 模仿Play! Framework而来, 我个人认为Revel是目前Go语言中比较不错的一个Web开发框架, 虽然它还有很多待完善的地方但还是很值得学习和借鉴滴, 我在这里记录一下偶的对它滴研究过程,以作备忘,也希望能和喜欢它的朋友们一起交流学习.Go Web开发之Revel - 开发入门Getting Started创建你的第一个App网页请求处理流程Hello WorldGo Web开发之Revel - 开发手册介绍概念组织结构Revel运行原理概述路由参数绑定验证Session/Flash返回值模板拦截器插件模块Websockets测试日志 阅读全文
posted @ 2013-09-10 16:30 孤火 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 最近在做一个需要用到异步PHP的项目, 翻阅PHP源码的时候,发现了三个没有用过的模块,sysvsem,sysvshm,sysvmsg,一番研究以后,受益非浅。在PHP中有这么一族函数,他们是对UNIX的V IPC函数族的包装。它们很少被人们用到,但是它们却很强大。巧妙的运用它们,可以让你事倍功半。它们包括:信号量(Semaphores)共享内存(Shared Memory)进程间通信(Inter-Process Messaging, IPC)基于这些,我们完全有可能将PHP包装成一基于消息驱动的系统。但是,首先,我们需要介绍几个重要的基础:1. ftokint ftok ( stringpa 阅读全文
posted @ 2013-09-05 15:23 孤火 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 近段日子在做一个比较复杂的项目,其中用到了开源软件ZMQ和 MessagePack。ZMQ对底层网络通信进行了封装,是一个消息处理队列库,使用起来非常方便。MessagePack是一个基于二进制的对象序列 化类库,具有跨语言的特性,同样非常容易使用。在我做的项目中,消息类通过MessagePack进行压包,然后写入ZMQ的消息结构体,通过ZMQ传 递,最后接收者利用MessagePack进行解包,从而分析命令。由于我英语水平实在不高,所以我并没有通过阅读它们的说明文档来对它们进行了解,而仅 仅是通过它们的示例代码进行探索。虽然因此遇到了一些不解问题,但这种方式却为我节省了很多时间。不过,对.. 阅读全文
posted @ 2013-08-25 23:41 孤火 阅读(1176) 评论(1) 推荐(0) 编辑
摘要: 八 13 php 性能优化序按需执行/按需加载按需执行按需加载避免重复计算最经典的循环:用缓存代替使用static正则优化语法tips用list取特定值用list交换值尽量使用===而非==注意switch/in_array的松散比较所有变量应该先定义后使用do while妙用少用@合理运用字符串比较函数关于编译不要重复造轮子使用系统调用(低开销)使用php自带的函数用字符函数代替正则使用现有的常量关于httpkeepAlive304输出控制为静态文件选择更好的server少输出压缩分析瓶颈剖析PHP代码Session 存储减少路由查找尽量使用绝对路径少用require_once少用魔法函数修 阅读全文
posted @ 2013-08-20 23:48 孤火 阅读(240) 评论(0) 推荐(0) 编辑