摘要: 转:http://ciniao.me/article.php?id=9 阅读全文
posted @ 2014-03-05 12:36 孤火 阅读(1007) 评论(8) 推荐(0) 编辑
摘要: 前面八章介绍了 C++11 并发编程的基础(抱歉哈,第五章-第八章还在草稿中),本文将综合运用 C++11 中的新的基础设施(主要是多线程、锁、条件变量)来阐述一个经典问题——生产者消费者模型,并给出完整的解决方案。生产者消费者问题是多线程并发中一个非常经典的问题,相信学过操作系统课程的同学都清楚这个问题的根源。本文将就四种情况分析并介绍生产者和消费者 问题,它们分别是:单生产者-单消费者模型,单生产者-多消费者模型,多生产者-单消费者模型,多生产者-多消费者模型,我会给出四种情况下的 C++11 并发解决方案,如果文中出现了错误或者你对代码有异议,欢迎交流 ;-)。单生产者-单消费者模型顾名 阅读全文
posted @ 2014-02-26 17:50 孤火 阅读(1334) 评论(3) 推荐(0) 编辑
摘要: 将php工程从 lampp 拷贝到 apache2中之后 发现 php工程的 restapi无法正常访问,最后发现是目录下的 新环境 没有启动对.htaccess的支持 ,记录下解决过程1.在 /etc/apache2/mods-enabled 目录下创建ln -s ../mods-available/rewrite.load rewrite.loadrewrite.load -> ../mods-available/rewrite.loadrewrite.load文件中内容LoadModule rewrite_module /usr/lib/apache2/modules/mod_re 阅读全文
posted @ 2014-02-25 16:33 孤火 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 本文主要介绍sqlrelay的配置安装。通过其性能和一些具体环境的测试来帮助开发者应用在相应的场合中去应付大并发的mysql数据库连接。什么是sqlrelay?Sqlrelay是一个开源的数据库连接池软件。它可以预建立数据库连接,同时可作为数据库连接代理和负载均衡器使用。SQL Relay is a persistent database connection pooling, proxying and load balancing system for Unix and Linux.Sqlrelay项目主页 http://sqlrelay.sourceforge.net/Sqlrelay源码 阅读全文
posted @ 2014-02-10 13:54 孤火 阅读(1658) 评论(2) 推荐(0) 编辑
摘要: 转自:http://www.cppblog.com/mysileng/The libevent API provides a mechanism to execute a callback function when aspecific event occurs on a file descriptor or after a timeout has beenreached. Furthermore, libevent also support callbacks due to signals orregular timeouts.libevent is meant to replace the 阅读全文
posted @ 2014-01-29 21:35 孤火 阅读(201) 评论(0) 推荐(0) 编辑
摘要: memcached采用的网络模型是早前提到的半同步半异步的网络模型.简单的说,大致流程就是:主线程负责接收新的连接,接收到新的连接之后,选择一个worker副线程,将该新连接push到副线程的连接队列中.主副线程之间通过管道进行通讯,因此主线程将新的连接push到工作线程之后,主线程要向该副线程的管道中写一个字符,而每个副线程也都有自己的poll set, 其中会包含自己的管道fd, 副线程也会通过多路复用I/O来监控管道的情况,一旦可读,说明有新的连接到来,此时从连接队列中取出新连接,将其fd加入到自身的poll set中,最后对该连接的业务逻辑处理也全都在该副线程中进行(读数据,处理,发送 阅读全文
posted @ 2014-01-29 11:07 孤火 阅读(435) 评论(1) 推荐(0) 编辑
摘要: 本文是上一篇《事件处理模式之Reactor(一)》的下一篇,上一篇主要介绍了reactor模式的基本理论,这一篇主要通过实例,来介绍Reactor模式的具体使用。在开始本文之前,有必要再说明一下,reactor的源码的地址:reactor源码, 感兴趣的读者朋友可以自己用svn客户端check out到本地。如左图所示为reactor项目的基本结构,整体项目分为三个部分:一是libreactor项目,用来生成reactor相关的lib;二是server项目,是用reactor实现的一个时间服务器程序;三是client项目,是用reactor实现的一个客户端程序。服务端和客户端之间通过teln. 阅读全文
posted @ 2014-01-28 16:25 孤火 阅读(737) 评论(1) 推荐(0) 编辑
摘要: 一 服务器分类从软件性能角度,高性能服务器分:cpu密集型服务器/IO密集型服务器(1)CPU密集型:该类服务器没有对io的访问/没有同步点,性能瓶颈在于对cpu的充分利用。典型的如转发服务器/代理服务器/协议转换类服务器/分布式总线服务器等。(2)IO密集型:该类服务器存在对cache/db/硬盘等的同步访问,或者对fcgi/其他服务器等的同步访问。简单说有同步访问点的均归属此类服务器。当前硬件基础下,有同步操作的服务器,性能瓶颈均在同步点的返回快慢上,而非cpu。二网络层机制对上述两类服务器,均需要同样高效的网络层机制。当前高效的网络层也就是大家熟知的iocp/epoll/kqueue/p 阅读全文
posted @ 2014-01-26 00:09 孤火 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 我要动态生成mfc菜单,动态绑定响应命令。首先把菜单关键词和函数指针绑定在map中,再通过关键词找到函数来执行。#include"stdafx.h"#include#include#includeusingnamespacestd;//声明一个函数指针int(*pFunc)(int);intfunc1(intnIn){returnnIn+1;}intfunc2(intnIn){returnnIn+20;}typedefint(*pInt)(int);//定义别名才能放在vector中voidmain(){pFunc=func1;//把函数名赋给函数指针intn=pFunc( 阅读全文
posted @ 2014-01-13 22:16 孤火 阅读(1177) 评论(7) 推荐(0) 编辑
摘要: [cpp] view plaincopyprint?namespace{//strand提供串行执行,能够保证线程安全,同时被post或dispatch的方法,不会被并发的执行.//io_service不能保证线程安全boost::asio::io_servicem_service;boost::asio::strandm_strand(m_service);boost::mutexm_mutex;voidprint(intid){//boost::mutex::scoped_locklock(m_mutex);staticintcount=0;PRINT_DEBUG("id:&qu 阅读全文
posted @ 2014-01-09 18:18 孤火 阅读(1679) 评论(1) 推荐(0) 编辑
摘要: Linux 编译安装Boost 2012-07-24 17:07:20|分类: Linux/C++及其他 |标签:linuxboost编译安装 |字号订阅如果是windows平台,请参考:链接linux平台下要编译安装除gcc和gcc-c++之外,还需要两个开发库:bzip2-devel 和python-devel,因此在安装前应该先保证这两个库已经安装:#yum install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs python-devel -y然后是去官网下载源码包,地址下载,解压,按照如下步骤:#tar xvzf boost_1_50_0.t. 阅读全文
posted @ 2014-01-08 09:22 孤火 阅读(1342) 评论(2) 推荐(0) 编辑
摘要: 1.连接池的介绍:1.1应用背景:一般的应用程序都会访问到数据库,在程序访问数据库的时候,每一次数据访问请求都必须经过下面几个步骤:建立数据库连接,打开数据库,对数据库中的数据进行操作,关闭数据库连接。而建立数据库连接和打开数据库是一件很消耗资源并且费时的工作,如果在系统中很频繁的发生这种数据库连接,必然会影响到系统的性能,甚至会导致系统的崩溃。1.2技术思想:在系统初始化阶段,建立一定数量的数据库连接对象(Connection),并将其存储在连接池中定义的容器中。当有数据库访问请求时,就从连接池中的这个容器中拿出一个连接;当容器中的连接已经用完,并且还没有达到系统定义的最大连接数时,可以再创 阅读全文
posted @ 2013-12-28 23:45 孤火 阅读(1245) 评论(1) 推荐(0) 编辑
摘要: 上个星期,我写了篇《Function call by name in Golang》。由于是英文的,所以被人诟病(说谁,谁知道!)。好吧,现在用中文重新写一遍。Golang 中的函数跟 C 的一样,是个代码块,不过它可以像其他类型那样赋值给一个变量。如果你对函数不熟悉,《Codewalk: First-Class Functions in Go》应该是个不错的起点。已经有所了解?那么继续吧!首先,来看看这段 PHP 代码:function foobar() {echo "Hello Golang\n";}$funcs = array("foobar" = 阅读全文
posted @ 2013-12-28 15:11 孤火 阅读(2160) 评论(0) 推荐(0) 编辑
摘要: 简介Qpid 是 Apache 开发的一款面向对象的消息中间件,它是一个 AMQP 的实现,可以和其他符合 AMQP 协议的系统进行通信。Qpid 提供了 C++/Python/Java/C# 等主流编程语言的客户端库,安装使用非常方便。相对于其他的 AMQP 实现,Qpid 社区十分活跃,有望成为标准 AMQP 中间件产品。除了符合 AMQP 基本要求之外,Qpid 提供了很多额外的 HA 特性,非常适于集群环境下的消息通信与 socket 的原始对应,企业级的应用软件往往有着各种各样从简单到复杂的通信需求,表现为不同的通信模型。常见的有:点对点:A 发消息给 B。广播:A 发给所有其他人的 阅读全文
posted @ 2013-12-25 17:39 孤火 阅读(3230) 评论(0) 推荐(0) 编辑
摘要: 一、ZeroMQ 的背景介绍 引用官方的说法: “ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ 的明确目标是“成为标准网络协议栈的一部分,之后进入 Linux 内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD 套接字之上的一层封装。ZMQ 让编写高性能网络应用程序极为简单和有趣。” 近几年有关”Message Queue”的项目层出不穷,知名的就有十几种,这.. 阅读全文
posted @ 2013-12-17 20:25 孤火 阅读(757) 评论(5) 推荐(0) 编辑
摘要: 实现一个有可变长参数列表函数的时候,会使用到stdarg.h(这里不讨论varargs.h)中提供的宏。例如,我们要实现一个简易的my_printf:1. 它只返回void, 不记录输出的字符数目2. 它只接受"%d"按整数输出、"%c"按字符输出、"%%"输出'%'本身如下:1#include23voidmy_printf(constchar*fmt,...)4{5va_listap;6va_start(ap,fmt);/*用最后一个具有参数的类型的参数去初始化ap*/7for(;*fmt;++fmt)8{9/*如果 阅读全文
posted @ 2013-12-16 09:44 孤火 阅读(419) 评论(0) 推荐(0) 编辑
摘要: Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。而且支持水平扩展,具有高容错性,保证每个消息都会得到处理。Storm 的部署和运维都很便捷,更为重要的是可以使用任意编程语言来开发应用。本专题将量子恒道官方博客发布的Storm入门教程内容整理出来,供大家查阅参考。前言Storm入门教程:前言Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。Storm的部署和运维都很便捷,而且更为重要的是可以使用任意编程语言来开发应用。本教程是一本对storm的基础介绍手册,希望帮助所有愿意使用实时流处理框架的技术同仁。构建TopologyStorm入门教程: 阅读全文
posted @ 2013-12-15 12:13 孤火 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 看过前两篇文章《Socket深度探究4PHP(一)》和《Socket深度探究4PHP(二)》,大家应该对目前 Socket 技术的底层有了一定的了解。本文我们会对 PHP-5.3.6 的源码中的 Socket 模块进行一定的分析,然后再简单介绍一下目前比较热门的一些相关技术,比如 Node.js 等。自 PHP4 之后,越来越多的模块都被作为扩展提取出来(可单独编译),都在 PHP 源码的 ext 目录下面,因此我们我需要先进入 ext/sockets/ 目录,做过 PHP 扩展的同学应该都很熟悉下面的一些文件了,这次我们主要分析的是 php_sockets.h 和 sockets.c 这两个 阅读全文
posted @ 2013-12-11 10:00 孤火 阅读(344) 评论(1) 推荐(0) 编辑
摘要: 上一篇《Socket深度探究4PHP(一)》 中,大家应该对 poll/select/epoll/kqueue 这几个 IO 模型有了一定的了解,为了让大家更深入的理解 Socket 的技术内幕,在这个篇幅,我会对这几种模式做一个比较详细的分析和对比;另外,大家可能也同说过 AIO 的概念,这里也会做一个简单的介绍;最后我们会对两种主流异步模式 Reactor 和 Proactor 模式进行对比和讨论。首先,然我们逐个介绍一下 2.6 内核(2.6.21.1)中的 poll/select/epoll/kqueue 这几个 IO 模型。> POLL先说说 poll,poll 和 selec 阅读全文
posted @ 2013-12-11 09:45 孤火 阅读(258) 评论(0) 推荐(0) 编辑
摘要: Socket(套接字)一直是网络层的底层核心内容,也是 TCP/IP 以及 UDP 底层协议的实现通道。随着互联网信息时代的爆炸式发展,当代服务器的性能问题面临越来越大的挑战,著名的 C10K 问题(http://www.kegel.com/c10k.html)也随之出现。幸亏通过大牛们的不懈努力,区别于传统的 select/poll 的 epoll/kqueue 方式出现了,目前 linux2.6 以上的内核都普遍支持,这是 Socket 领域一项巨大的进步,不仅解决了 C10K 问题,也渐渐成为了当代互联网的底层核心技术。libevent 库就是其中一个比较出彩的项目(现在非常多的开源项目 阅读全文
posted @ 2013-12-11 09:44 孤火 阅读(263) 评论(0) 推荐(0) 编辑