c++编程
文章平均质量分 50
李生龙
这个作者很懒,什么都没留下…
展开
-
指针和指向指针的指针
理解一般指针和指向指针的指针在说指向指针的指针之前,不得不说指向变量的指针。先看如下示例:1. 指向整型指针先看如下示例: 1 #include iostream> 2 using namespace std; 3 4 int main() 5 { 6 int a = 5; 7 int * p =转载 2016-05-06 14:55:33 · 382 阅读 · 0 评论 -
C++设计模式-Adapter适配器模式
Adapter适配器模式作用:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。分为类适配器模式和对象适配器模式。系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。想使用一转载 2015-07-15 13:23:07 · 419 阅读 · 0 评论 -
C++设计模式-Bridge桥接模式
作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化。将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化。桥接模式号称设计模式中最难理解的模式之一,关键就是这个抽象和实现的分离非常让人奇怪,大部分人刚看到这个定义的时候都会认为实现就是继承自抽象,那怎么可能将他们分离呢。《大话设计模式》中就Bridge模式的解释:手机品牌和软件是转载 2015-07-15 13:30:15 · 434 阅读 · 0 评论 -
C++设计模式-Factory工厂模式
Factory1、定义创建对象的接口,封装对象的创建2、将实际创建工作延迟到子类中,例如,类A中药使用类B,B是抽象父类,但是在类A中不知道具体要实例化哪一个B的子类,但是在类A的子类D中是可以知道的。在A中无法使用 new B***()方法3、将创建工作延迟到子类中后,核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂,只提供工厂子类必须实现的接口,这样的好处是可以不用修改已有转载 2015-07-15 13:19:41 · 391 阅读 · 0 评论 -
C++设计模式-Observer观察者模式
Observer观察者模式作用:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己UML图:Subject类,可翻译为主题或抽象通知者,一般用一个抽象类或者一个借口实现。它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个借口,可以增加和删转载 2015-07-15 13:12:37 · 381 阅读 · 0 评论 -
类成员函数作为线程函数
-------------------类成员函数不能作为线程函数--------------------------- 一般来说,C++的类成员函数不能作为线程函数。这是因为在类中定义的成员函数,编译器会给其加上this指针。请看下列程序: #include "windows.h"#include <process.h>class ExampleTask { ...转载 2015-06-30 18:23:57 · 3683 阅读 · 1 评论 -
TCP状态迁移图浅析
一.TCP简介 TCP提供一种面向连接的,可靠的字节流服务。面对连接意味着两个使用TCP的应用,在彼此交换数据之前必须先建立一个连接。TCP通过以下方式提供可靠性: 1. 应用数据被分割成TCP认为最适合发送的数据块,由TCP传递给IP的信息单位成为报文段。 2. 当TCP发出一个段后,它就启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一原创 2015-03-27 20:43:29 · 430 阅读 · 0 评论 -
C1000k 新思路:用户态 TCP/IP 协议栈
现在的服务器支撑上百万个并发 TCP 连接已经不是新闻(余锋2010年的演讲,ideawu 的 iComet 开源项目,WhatsApp 做到了 2.5M)。实现 C1000k 的常规做法是调整内核参数,提高文件数,降低每个连接的内存消耗(参考 ideawu 的博客)。在今年的 BSDCan2014 会议上, Patrick Kelsey 介绍了把 FreeBSD 9.x 的转载 2015-03-17 13:08:57 · 663 阅读 · 0 评论 -
应用开发提高性能内核可修改的参数
proc文件系统介绍由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。网络编程常用设置参数1、cat /proc/sys/fs/file-max file-max指定了系统范围内所有进程可以打开的文件句柄的数量限制2、cat /proc/sys/fs/file-nr操作系统能否支持百原创 2015-03-27 18:14:21 · 865 阅读 · 0 评论 -
ACE框架学习
标签: ace中文文档 it Index of /ace-2002-12/ACE中文文档* ACE自适配通信环境(代序)* 上篇:ACE技术论文集* 第1章 ACE自适配通信环境:用于开发通信软件的面向对象网络编程工具包* 第2章 包装外观(Wrapper Facade):用于在类中封装函数的结构型模式* 第3转载 2014-05-06 11:45:53 · 1096 阅读 · 0 评论 -
对于linux socket与epoll配合相关的一些心得记录
int nRecvBuf=32*1024;//设置为32Ksetsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));1、通过上面语句可以简单设置缓冲区大小,测试证明:跟epoll结合的时候只有当单次发送的数据全被从缓冲区读完毕之后才会再次被触发,多次发送数据如果没有读取完毕当缓冲区未满的时候数据不转载 2015-04-28 08:33:44 · 856 阅读 · 0 评论 -
虚函数表
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2015-04-27 20:32:04 · 385 阅读 · 0 评论 -
C++设计模式-State状态模式
State状态模式作用:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。UML图如下:State类,抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为。ConcreteState类,具体状态,每一个子类实现一个与Context的一个状态相关的行为。Context类,维护一个ConcreteState子类的实例,这个实例定义当前转载 2015-07-15 13:28:03 · 419 阅读 · 0 评论 -
C++设计模式-AbstractFactory抽象工厂模式
AbstractFactory要创建一组相关或者相互依赖的对象作用:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。UML结构图:抽象基类:1)AbstractProductA、AbstractProductB:分别代表两种不同类型的产品,由具体的产品派生类对其实现2)AbstractFactory:抽象工厂类,提供创建两种产品的接口CreatePr转载 2015-07-15 13:15:58 · 332 阅读 · 0 评论 -
C++设计模式-Proxy代理模式
Proxy代理模式作用:为其他对象提供一种代理以控制对这个对象的访问。代理的种类:如果按照使用目的来划分,代理有以下几种:远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador)。 也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址转载 2015-07-15 13:21:49 · 320 阅读 · 0 评论 -
c++STL所有算法介绍
目录STL算法概述查找算法堆算法关系算法集合算法排列组合算法排序和通用算法删除和替换算法生成和变异算法算数算法STL算法概述简介:STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象注意:编译器无法检测出所传递的迭代器是一个无效转载 2015-03-12 11:05:48 · 746 阅读 · 0 评论 -
构建C1000K的服务器(2) – 实现百万连接的comet服务器
http://www.ideawu.net/blog/archives/737.html C/C++语言编程, 高性能Web架构这是关于 C1000K 序列文章的第二篇, 在前一篇文章 构建C1000K的服务器(1) – 基础 中, 介绍了支持 C1000K 的 Linux 系统的内核参转载 2016-04-11 14:17:46 · 695 阅读 · 0 评论 -
100万并发连接服务器笔记之准备篇
http://www.blogjava.net/yongboy/archive/2013/04/09/397559.html前言测试一个非常简单服务器如何达到100万(1M=1024K连接)的并发连接,并且这些连接一旦连接上服务器,就不会断开,一直连着。 环境受限,没有服务器,刚开始都是在自己的DELL笔记本上测试,凭借16G内存,和优秀的vmware workstation虚转载 2016-04-11 14:31:06 · 585 阅读 · 0 评论 -
libevent带负载均衡的多线程使用示例
http://blog.chinaunix.net/uid-756931-id-353318.html功能:主线程根据负载工作线程负载均衡算法,每隔一秒钟向特定的工作线程发送一条字符串信息,工作线程简单的把字符串信息打开出来。Makefileeventtest : eventtest.cgcc -Wall -g -le转载 2016-04-12 18:44:01 · 2044 阅读 · 0 评论 -
使用libevent编写高并发HTTP server
http://www.cnblogs.com/keepsimple/archive/2013/05/06/3063251.html http://blog.csdn.net/liuhongxiangm/article/details/14230763 libevent库使得高并发响应HTTP Server的编写变得很容易。整个过程包括如下几部:初始化,创建HTTP S转载 2016-04-12 17:40:47 · 2823 阅读 · 3 评论 -
muduo_net库源码分析(25)
http://blog.csdn.net/laohan_/article/details/14286753TCP网络编程本质 TCP网络编程最本质是的处理三个半事件 连接建立:服务器accept(被动)接受连接,客户端connect(主动)发起连接 连接断开:主动断开(close、shutdown),被动断开(read返回0)转载 2016-03-16 13:27:10 · 346 阅读 · 0 评论 -
高性能网络编程7--tcp连接的内存使用
当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。socket编程方法提供了SO_SNDBUF、SO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉,如下(sysctl -a命令可以查看这些配置):[cpp]转载 2015-09-23 18:02:18 · 378 阅读 · 0 评论 -
性能调优命令
fuser -vm 查看设备被哪些进程使用iostat 查看设备读写磁盘vmstat 2 查看系统的性能相关如io cpu资源等iftop iptableslsof -i -pnetstat -napdf -h -idu -smstrace -pdd tcpdumptop转载 2015-09-09 11:43:02 · 410 阅读 · 0 评论 -
C++设计模式-Prototype原型模式
作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C++中通过拷贝构造函数实现。UML图如下:代码如下:Prototype.h 1 #ifndef _PROTOTYPE_H_ 2 #define _PROTOTYPE_转载 2015-07-15 13:32:54 · 530 阅读 · 0 评论 -
C++设计模式-Strategy策略模式
Strategy策略模式作用:定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。UML图:Strategy模式将逻辑(算法)封装到一个类(Context)里面,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现将算法的逻辑抽象接口(DoAction)封装到一个类中(Cont转载 2015-07-15 13:27:11 · 395 阅读 · 0 评论 -
C++设计模式-Command命令模式
Command命令模式作用:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。由于“行为请求者”与“行为实现者”的紧耦合,使用命令模式,可以对请求排队或记录请求日志,以及支持可撤销的操作。UML图:Command类,用来声明执行操作的接口ConcreteCommand,将一个接收者对象绑定于一个操作,调用接收者转载 2015-07-15 13:25:49 · 338 阅读 · 0 评论 -
基于boost的网络引擎
今天找到了贵论坛,发现坛主的很多想法和本人不谋而合,本人近1年主要精力都致力于开发一个大型多人在线游戏的基本架构和相关的技术模组。而我欣喜的发现我与坛主的研究方向正好相反:我是先从服务器端开始研究入手的,目前服务器端告一段落,正准备开始客户端的研发,在寻找客户端引擎的时候碰巧找到了这里。我看到坛主的这个板块,了解到Orz正需要一些服务器方面的资料,在此我先奉上个人的服务器端的一些成果,希望能有转载 2015-04-21 09:53:27 · 709 阅读 · 0 评论 -
boost库asio详解3——io_service作为work pool
无论如何使用,都能感觉到使用boost.asio实现服务器,不仅是一件非常轻松的事,而且代码很漂亮,逻辑也相当清晰,这点上很不同于ACE。使用io_service作为处理工作的work pool,可以看到,就是通过io_service.post投递一个Handler到io_service的队列,Handler在这个io_service.run内部得到执行,有可能你会发现,io_services转载 2015-04-21 09:46:50 · 569 阅读 · 0 评论 -
C/C++重要知识点
成员以其在类中声明的顺序构造摘要: 分析以下代码的输出:#includeusing namespace std;class A{public: A(int j):age(j) , num(age + 1) { cout阅读全文posted @ 2013-11-12 16:58 夏雪冬日 阅读(119) | 评论 (0) 编辑memset函数使用方法摘转载 2015-04-22 17:38:05 · 1152 阅读 · 0 评论 -
C++ 容器及选用总结
目录====================================================第一章 容器第二章 Vector和string第三章 关联容器第四章 迭代器第五章 算法第六章 函数第七章 在程序中使用STL====================================================第1章 容器第1条原创 2015-01-04 15:10:18 · 528 阅读 · 0 评论 -
C++ 容器及选用总结
目录====================================================第一章 容器第二章 Vector和string第三章 关联容器第四章 迭代器第五章 算法第六章 函数第七章 在程序中使用STL====================================================第1章 容器第1条原创 2015-01-04 15:10:53 · 618 阅读 · 0 评论 -
c++迭代器
1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector定义的iterator类型。(2) 使用迭代器读取vector中的每一个元素:vector ivec(10,1);for(vector原创 2015-01-02 23:51:33 · 474 阅读 · 0 评论 -
类成员函数的重载、重写、和覆盖区别
1、类成员函数的重载、重写、和覆盖区别 a.成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual关键字可有可无。 b.覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类); (2转载 2014-09-26 14:31:28 · 602 阅读 · 0 评论 -
生产者消费者测试
#include #include #include using namespace std;pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t event = PTHREAD_COND_INITIALIZER;int num = 0;int countP = 0;bool原创 2014-05-26 11:06:42 · 575 阅读 · 0 评论 -
POCO库 Foundation::Thread模块(二) 主动对象
Poco为使用者提供了一套基于多线程的主动对象,它通过使用多线程来高效地完成任务,而对于调用者却屏蔽了多线程的种种顾虑。甚至都看不出它使用了多线程的痕迹。Poco中一共有三种主动对象:activity,acitivityMethod,Activity对象 Acitvity对象是主动对象中最简单的一种对象,它通过对象调用的方式实现通过多线程完成任务,并且要求入口函数是没有参数和返原创 2014-06-06 14:13:11 · 1096 阅读 · 0 评论 -
SOCI、LiteSQL、POCO数据库访问类库对比
最近在做视频的开发,其中视频的设备接入管理服务器、流媒体管理服务器、中心服务器都涉及到了数据库的操作,同时需要兼容大多数版本的数据库,包括mysql、sqlite、oracle。公司原来使用的是ado来进行数据库的开发的, 但是考虑到目前需要兼容linux,目前使用Poco框架封装的数据库模块进行开发。根据项目情况我对soci、litesql、poco这三个框架进行了简单的学习转载 2014-06-06 14:11:40 · 1079 阅读 · 0 评论 -
linux进程函数大全
atexit(设置程序正常结束前调用的函数) 相关函数 _exit,exit,on_exit表头文件 #include定义函数 int atexit (void (*function)(void));函数说明 atexit()用来设置一个程序正常结束前调用的函数。当程序通过调用exit()或从main中返回时,参数function所指定的函数会先被调用,然后才真正由原创 2014-05-16 13:26:00 · 769 阅读 · 0 评论 -
linux 库函数大全
linux 库函数大全 2010-06-01 16:52:34| 分类: UNIX编程|举报|字号 订阅第2章数据转换函数ecvt(将浮点型数转换成字符串,19取四舍五入)fcvt(将浮点型数转换为字符串,20取四舍五入)gcvt(将浮点型数转换为字符串,21取四舍五入)第3章内存配置函数alloca(配置内存空间)brk(改变数据字节的转载 2014-05-16 13:46:51 · 1047 阅读 · 0 评论 -
c++开源库
非常惭愧,我过去也仅仅了解boost、STLport这样的库,以及一些GUI库,但是居然有如此众多的C++库,其实令我惊讶。当然,这个问题应该辩证的看,对于拿来主义确实可以直接使用这些库,但是如果学习和专业的开发,确实应该自己写,因为——适合的才是最好的。无论效率还是简洁性都是自己开发的好,否则还要那么多程序员干什么。程序就像做衣服,需要量身定做,拼凑起来的,一定不会好用,不过借鉴也是必须的,可以转载 2014-05-03 10:00:53 · 545 阅读 · 0 评论 -
给程序员介绍一些C++开源库
给程序员介绍一些C++开源库来源:51cto 作者:51cto 关注我们: C++开源库,欢迎补充。C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉转载 2014-05-03 09:56:40 · 669 阅读 · 0 评论