- 博客(54)
- 资源 (1)
- 收藏
- 关注
转载 boost asio 异步实现tcp通讯
转自 http://blog.csdn.net/fhxpp_27/article/details/8569013
2014-05-06 13:25:44 7619 2
转载 Windows服务创建及安装
我们将研究如何创建一个作为Windows服务的应用程序。内容包含什么是Windows服务,如何创建、安装和调试它们。会用到System.ServiceProcess.ServiceBase命名空间的类。什么是Windows服务? Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合。它没有用户界面,并且也不会产生任何可视输出。任何用户消息都会被写进Win
2013-05-24 14:45:18 493
转载 boost::asio 连接管理8
转自:http://blog.csdn.net/sheismylife/article/details/8509611 到上一篇,一个完整的单线程版本就出现了。如果并发要求不高的话,单线程+异步I/O已经足够了。但是如果想支持大并发,自然需要尽可能的利用服务器上的多个CPU和核。现在首先把之前的工程改成cmake工程。顶层目录的CMakeLists.txt内容如下:
2013-05-24 14:12:31 670
原创 boost asio 学习1
所有boost asio的socket连接都需要io_service对象,在异步处理时,必须调用io_service的run()接口才会触发调用 完成处理函数(completion_handler),在并发场景下,可创建多个io_service对象,可通过io_service pool来管理,其个数为CPU内核个数,多线程,每个线程一个io_service,在多线程情况下每次会话(session)
2013-05-22 14:37:45 591
转载 boost高并发网络框架+线程池
boost的官方例子,有单线程的网络框架,httpserver2是线程池的。下面参照网上某人的代码修改了一点(忘了哪位大仙的代码了) 测试工具,适用stressmark,测试效果非常好, 9000个/s #includestdio.h>#include "AuthenHandle.h"#include "configure.h"#
2013-05-22 13:22:43 870
转载 boost asio 应用方法学——深入框架
要用好它,就必须先了解它,而且不能停止于表面,必须深入到内部。而了解一件事物,先要了解它的框架,再了解它的细节。了解了框架,我们就有了提纲挈领的认识。关于 boost asio 框架结构,在其文档中,用了这样一张图来描述: 简单解释一下:这里由使用者(Initiator)启动一个异步操作(Asynchronous Operation),在启动异步的同时它要负责创建一个异步回调对
2013-05-21 16:00:11 775
转载 完成端口与高性能服务器程序开发
早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间见到这种技术被过分炒作,过分的神秘化,就想写一篇解释它如何工作的文章.想告诉大家它没有传说中的那么高深难懂!有什么错误的地方还请高人指正.转载请注明出处及作者,谢谢!以一个文件传输服务端为例,在我的机器上它只起两个线程就可以为很多个个客户端同时提供文件下载服务,程序的性能会随机器内CPU个数的增加而
2013-05-21 15:20:37 543
转载 异步IO、APC、IO完成端口、线程池与高性能服务器之一 异步IO
早期IO设备的速度与CPU相比,还不是太悬殊。CPU定时轮询一遍IO设备,看看有无处理要求,有则加以处理,完成后返回继续工作。至今,软盘驱动器还保留着这种轮询工作方式。 随着CPU性能的迅速提高,这种效率低下的工作方式浪费了大量的CPU时间。因此,中断工作方式开始成为普遍采用的技术。这种技术使得IO设备在需要得到服务时,能够产生一个硬件中断,迫使CPU放弃目前的处理任务,进入特定的中断
2013-05-21 15:19:31 494
转载 异步IO、APC、IO完成端口、线程池与高性能服务器之二 APC
Alertable IO(告警IO)提供了更有效的异步通知形式。ReadFileEx / WriteFileEx在发出IO请求的同时,提供一个回调函数(APC过程),当IO请求完成后,一旦线程进入可告警状态,回调函数将会执行。 以下五个函数能够使线程进入告警状态: SleepEx WaitForSingleObjectEx WaitForMultipl
2013-05-21 15:18:11 524
转载 异步IO、APC、IO完成端口、线程池与高性能服务器之三 IO完成端口
IO完成端口下面摘抄于MSDN《I/O Completion Ports》,smallfool翻译,原文请参考CSDN文档中心文章《I/O Completion Ports》,http://dev.csdn.net/Develop/article/29%5C29240.shtm。I/O 完成端口是一种机制,通过这个机制,应用程序在启动时会首先创建一个线程池,然后该应用程序使用线程池处理
2013-05-21 15:17:03 1028
转载 异步IO、APC、IO完成端口、线程池与高性能服务器之五 服务器的性能指标与实现高性能的途径
服务器的性能指标 作为一个网络服务器程序,性能永远是第一位的指标。性能可以这样定义:在给定的硬件条件和时间里,能够处理的任务量。能够最大限度地利用硬件性能的服务器设计才是良好的设计。 设计良好的服务器还应该考虑平均服务,对于每一个客户端,服务器应该给予每个客户端平均的服务,不能让某一个客户端长时间得不到服务而发生“饥饿”的状况。 可伸缩性,也就是说,随着硬件能力的
2013-05-21 15:16:23 685
转载 高性能I/O设计模式Reactor和Proactor
文章主要是讲到了系统I/O方式可分为阻塞,非阻塞同步和非阻塞异步三类,三种方式中,非阻塞异步模式的扩展性和性能最好。主要是讲了两种IO多路复用模式:Reactor和Proactor,并对它们进行了比较。文章还介绍了为Reactor和Proactor模式构建一个通用的,统一的对外接口并是一个完全可移植的开发框架选择方案:TProactor(ACE compatible Proactor) :
2013-05-21 15:14:49 528
转载 《多线程服务器的适用场合》例释与答疑
陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice 2010 March 3 - rev 01《多线程服务器的适用场合》(以下简称《适用场合》)一文在博客登出之后,有热心读者提出质疑,我自己也觉得原文没有把道理说通说透,这篇文章试图用一些实例来解答读者的疑问。我本来打算修改原文,但是考虑到已经读过的读者不一定会注意到文章的变动,干脆另写一篇。为
2013-05-21 15:12:53 478
转载 多线程服务器的常用编程模型
多线程服务器的常用编程模型 陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice2009 Feb 12 建议阅读本文 PDF 版下载: http://files.cppblog.com/Solstice/multithreaded_server.pdf 本文主要讲我个人在多线程开发方面的一些粗浅经验。总结了一两种常用的
2013-05-21 15:11:27 753
转载 多线程服务器的适用场合
陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice 2010 Feb 28这篇文章原本是前一篇博客《多线程服务器的常用编程模型》(以下简称《常用模型》)计划中的一节,今天终于写完了。“服务器开发”包罗万象,本文所指的“服务器开发”的含义请见《常用模型》一文,一句话形容是:跑在多核机器上的 Linux 用户态的没有用户界面的长期运行的网络应用
2013-05-21 15:09:37 493
转载 boost::ASIO的异步方式
嗯?异步方式好像有点坐不住了,那就请异步方式上场,大家欢迎...大家好,我是异步方式和同步方式不同,我从来不花时间去等那些龟速的IO操作,我只是向系统说一声要做什么,然后就可以做其它事去了。如果系统完成了操作, 系统就会通过我之前给它的回调对象来通知我。在ASIO库中,异步方式的函数或方法名称前面都有“async_” 前缀,函数参数里会要求放一个回调函数(或仿函数)。异
2013-05-21 15:05:21 683
转载 boost asio
#include "stdafx.h" #include #include #include #include using namespace boost::asio; using boost::asio::ip::tcp; class connect_handler { public: connect_h
2013-05-20 23:28:53 674
转载 C++调用WebService
1. gSOAP是一个开源的项目,用它可以方便的使用c/c++地进行SOAP客户端和服务器端编程,而不必了解xml和SOAP协议的细节wsdl2h.exe: 编译wsdl文件生成c/c++头文件 -o 文件名,指定输出头文件 -n 名空间前缀 代替默认的ns -c 产生纯C代码,否则是C++代码 -s 不要使用STL代码 -t 文件名,指定type map文件,默认为typemap.dat -
2013-01-14 14:40:43 987
转载 使用VC++ 6.0开发WebService(gsoap)
最开始以为需要使用C#,或是VC++.net才能方便的开发WebService,后面在网上找到了gsoap,的确是一个好工具,使用VC++6.0也可以开发WebService了。开发的过程非常的简单,首先定义好WebService所需要提供的接口(或是服务),其实就是一个.h申明文件,然后使用“soapcpp2.exe”工具,他会帮你生成一系列的中间文件。开发WebServ
2013-01-14 14:38:41 3224
转载 C++使用gsoap创建webService
gSOAP 是一个夸平台的,用于开发 Web Service 服务端和客户端的工具,在Windows 、 Linux 、 MAC OS和 UNIX 下使用 C 和 C++ 语言编码,集合了 SSL 功能。 下载地址: http://sourceforge.net/projects/gsoap2官方网站: http://genivia.com/Products/gsoap/i
2013-01-14 14:37:35 962
转载 windows 7下安装oracle 11g
Windows 7下安装Oracle 11g相关问题解决方法时间:2010-04-08 14:06 来源:博客园 字体:[大 中 小]很多DBA目前还停留在Oracle 9i或者10g,究其原因有可能是Oracle 11g的价格问题。本文将为大家讲解在Windows 7下安装Oracle 11g,也希望大家能从中看到11g的一些新特点。前不久卸载掉了自己的Windows Vista系统,装
2012-12-14 14:25:06 327
转载 hadoop学习笔记(3) 初识Hadoop
前两节主要介绍了hadoop运行环境和开发环境的搭建,有了这个,我们就可以开始hadoop的学习了,最近买了两本hadoop的书,先是买了一本《hadoop权威指南》,看了几天,感觉大部分都是在讲理论,不太适合作为hadoop入门的书籍,所以又买了本国内刘鹏写的《实战hadoop》,这本书到是写的比较浅显易懂,尤其是操作性比较强,个人觉得比较适合作为hadoop的入门书籍。这里就记录一下我学习ha
2012-11-27 12:39:34 238
转载 hadoop学习笔记(2) 伪分布模式配置
前面介绍了linux下hadoop的安装和简单配置,主要是独立模式的配置,所谓独立模式是指不需要运行任何守护进程(daemon),所有程序都再单个JVM上执行,由于在独立模式下测试和调试MapReduce程序较为方便,因此该模式适合用在开发阶段。这里主要记录了本人配置hadoop伪分布模式的过程。所谓伪分布模式是在单机上模拟Hadoop分布式,单机上的分布式并不是真正的分布式,而是使用java
2012-11-27 12:38:43 634
转载 hadoop学习笔记(1) 开发环境
刚开始学习hadoop,首先搭建了一下开发环境,最开始是在单独编写Map-Reduce程序,然后在命令行编译,再通过hadoop命令运行打好的jar包,虽然也能够运行,但是总感觉这样用起来很麻烦,所以今晚又尝试了直接通过eclipse来编辑和运行Map-Reduce程序,瞎弄了一下,居然让我弄成功了,自然走了点弯路,担心以后再走弯路,所以把自己的搭建过程记录于此。1.准备1.1 软件r
2012-11-27 12:37:17 258
转载 hadoop的安全模式
the ratio of reported blocks 1.0001 has reached the threshold 0.9990. Safe mode will be turned off automatically in 7 seconds.平常不知道安全模式是啥的情况下,hadoop提供了一些命令:hadoop dfsadmin -safemodeNameNode在
2012-11-26 13:42:32 261
转载 UNIX实际用户ID和有效用户ID
由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题。关于SUID、 SGID的问题也经常有人提问,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些资料,决定整理成本文,以供大家参考。限于本人的水平问题,文章中如果有不当之处,请广大网友指正。一、UNIX下关于文件权限的表示方法和解析
2012-11-24 17:08:45 272
转载 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
转自:http://blog.csdn.net/chenruichuan/article/details/384476ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外
2012-11-24 11:52:37 442
转载 extern "C" 的用意
转载自:http://blog.csdn.net/wujian53/article/details/706975前些天,编程序是用到了很久以前写的C程序,想把里面的函数利用起来,连接发现出现了找不到具体函数的错误:以下是假设旧的C程序库C的头文件/*-----------c.h--------------*/#ifndef _C_H_#define _C_H_extern i
2012-11-12 11:14:27 359
原创 win7下虚拟机VMWare装linux(ubantu)后挂载win7共享目录
1、在win7下设定共享目录2、ubantu下安装 mount.cifs apt -get install smbfs3、挂载: mount -t cifs -o username=username,dir_mode=0755,file_mode=0755,nounix,noserverino //winIP/sharefilename /mountdir加nouni
2012-11-09 17:50:05 718 1
原创 vs2005工程转换成makefile
http://www.codeproject.com/Articles/28908/Tool-for-Converting-VC-2005-Project-to-Linux-Makef
2012-10-30 11:43:12 624
原创 CreateThread和_beginthread
1、使用_beginthread()或者_beginthreadex()创建线程代替CreateThread()2、_beginthread()创建线程后,线程结束时会自动清理资源,调用CloseHandle()关闭句柄,如果需要提前结束线程,可调用_endthread()结束线程,_endthread()会调用CloseHandle()关闭句柄3、_beginthreadex()创建线程
2012-10-19 16:38:25 411
转载 boost 编译和使用
boost配置:1、在项目属性 ->C/C++->常规->附加包含目录中添加boost根目录 如:E:\boost\boost_1_51_0\boost_1_51_02、在项目属性 ->链接器->常规->附加库目录中添加boost库目录 如:E:\boost\boost_1_51_0\boost_1_51_0\bin\vc8\lib 理论上,本文适用于boost的各个版本,尤其是最
2012-10-19 14:06:15 552
转载 windows下建立QT-VS2005集成开发环境
1. 简述 在 Windows2000/xp 下,安装 VS2005, QT 4.4.3 ;并在 VS2005上建立 QT 的集成开发环境, 利用 VS2005 开发环境开发,调试 QT 程序;2. 所需程序 VS2005 // VS2005 的安装程序; qt-win-opensource-src-
2012-10-18 10:29:50 342
原创 windows 下获取时间函数
GetLocalTime:获取当地时间GetSystemTime:获取UTC时间 const string TIME_FORMAT_DATE = "YYYYMMDD";const string TIME_FORMAT_STANDARD = "YYYY-MM-DD HH:MM:SS";const string TIME_FORMAT_STANDARD_TICK = "YYYY-MM-
2012-10-18 10:26:11 493
转载 c++ 时间类型详解 time_t
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。 目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix
2012-10-18 09:43:28 1365
转载 CloseHandle()函数(关闭线程句柄)的使用
很多程序在创建线程都这样写的:............ThreadHandle = CreateThread(NULL,0,.....);CloseHandel(ThreadHandle );。。。。。这不是刚好创建又关闭了吗?线程怎么运行呢?答: Closing a thread handle does not terminate the associated
2012-10-17 10:07:04 1162
原创 c++ 实现的BlockingQueue
1、BlockingQueue类#include "thread/Critical.h"#include "thread/Codition.h"#include "thread/Lock.h"#include using namespace std;const unsigned int DEFAULT_MAX_SIZE = 100;templateclass Blocking
2012-10-16 17:39:45 1618
转载 【模式】单件模式及其多线程版本
很多情况下需要将我们编写的程序中的类在一定范围内只保留一个实例,例如出于性能考虑,我们不希望反复实例化这个对象,用完了后再将它销毁,然后又用到这个类型的某些服务,再实例化,用完了再销毁,如此反复,不如做个全局的,实例化后,一直用到本程序功能结束,但是全局的又有一些问题。 经典的Singleton模式可以为我们提供一个简单的解决方案,他提供了一个全局访问点,用来访问这个唯一实例,简
2012-10-15 13:40:10 906
转载 C++的可移植性和跨平台开发[6]:多线程
最近一个多月写的帖子比较杂,导致本系列又好久没更新了。结果又有网友在评论中催我了,搞得我有点囧。今天赶紧把多线程篇补上。上次聊操作系统的时候,由于和OS有关的话题比较琐碎,杂七杂八说了一大堆。当时一看篇幅有点长,就把多进程和多线程的部分给留到后面了。 ★编译器 ◇关于C运行库选项 先来说一个很基本的问题:关于C运行库(后面简称CRT:C Run-Time)的设置。本来不想聊这么低级的问题
2012-09-22 15:54:23 1267
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人