自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

eerstar的专栏

追求高贵而幸福的生活,追求极尽而精彩的人生!!

  • 博客(29)
  • 收藏
  • 关注

原创 实现不排序的Map

以下代码实现用vector实现一个map,规避map自动排序功能功能: 通过key值查找 通过[]赋值取值 通过key值删除 成对插入值 #ifndef MAP_H_#define MAP_H_#include #include using namespace std;template class SelfMap { public: T* find(const K& k

2017-02-15 17:03:12 4179

转载 TeamTalk服务端源码解析之DB_Server

teamtalk数据库服务器dbserver源码解析

2017-01-22 00:11:47 2298

转载 使用CoGetClassObject而不使用CoCreateInstance的情况

大多数情况下,组件的创建均使用CoCreateInstance而不是用CoGetClassObject,但是在如下两种情况下应使用CoGetClassObject而不应该使用CoCreateInstance。IClassFactory 接口的CreateInstanceIClassFactory2 接口的CreateInstance2CoCreateInstance{C

2016-08-09 23:58:58 643

转载 COM三大接口:IUnknown、IClassFactory、IDispatch

转载自:http://blog.sina.com.cn/s/blog_86d10dc701014m2v.html(1)COM组件有三个最基本的接口类,分别是IUnknown、IClassFactory、IDispatch。(1、1) COM规范规定任何组件、任何接口都必须从IUnknown继承,IUnknown包含三个函数,分别是 QueryInterface、AddRef

2016-06-30 10:48:42 576

转载 TeamTalk---signal(SIGPIPE, SIG_IGN)

signal(SIGPIPE, SIG_IGN)  当服务器close一个连接时,若client端接着发数据。根据TCP 协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以cli

2016-05-06 06:45:48 440

原创 TeamTalk---服务端架构

1 概略介绍TTServer主要包含了以下几种服务器:LoginServer (C++): 登录服务器,分配一个负载小的MsgServer给客户端使用MsgServer (C++):  消息服务器,提供客户端大部分信令处理功能,包括私人聊天、群组聊天等RouteServer (C++):  路由服务器,为登录在不同MsgServer的用户提供消息转发功能FileServer (C++)

2016-05-01 10:45:23 2788

转载 值得推荐的C/C++框架和库 (真的很强大)

- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz21

2016-02-23 22:21:40 1275 1

原创 C++中的三种继承及public、private、protected继承特点总结

工作的越久,基础淡忘的就越多,重新总结下继承:第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问,该类方法也不能被继承protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类

2015-12-08 09:43:14 1084

转载 select、poll、epoll之间的区别总结[整理]

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用

2015-10-09 22:08:53 258

原创 装饰模式

装饰者模式类图:     网站新闻模块中应用装饰模式      本人现今对设计模式特别感兴趣,因为它的功能实在是太吸引人啦.设计模式一般说来是为了增加系统的可扩展性及维护性。在一般的门户网站中都会有新闻展示这个功能模块。     具体案例:有存储在数据库中的新闻,有存储在XML文件中的新闻(一般都是推荐新闻,内容比较少)。     在没有接触设计模式时,

2015-09-22 21:44:30 377

转载 Linux 下C++开发环境的搭建

就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样。Emacs, vi, eclipse, anjuta,kdevelop等层出不穷。Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户。例如,VS2005集成了编辑器,宏汇编ml,C /C++编译器cl,资源编译器rc,调试器,文

2015-09-17 22:03:06 781

原创 C/C++基本数据类型及字长 (经常忘)

32位操作系统 char :1个字节(固定) *(即指针变量): 4个字节(32位机的寻址空间是4个字节。同理64位编译器)(变化*) short int : 2个字节(固定) int: 4个字节(固定) unsigned int : 4个字节(固定) float: 4个字节(固定) double: 8个字节(固定) long: 4个字节 unsigned long: 4个字节(变化*

2015-09-09 00:32:05 1204

转载 工厂模式【Factory  Method  Pattern】

设计模式一 工厂模式Factory         在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。

2015-09-04 18:19:36 355

转载 C++11 中STL库中新增内容

引用包装器(Reference Wrapper)当模板函数参数为泛型类型的时候,无法推导出是传值还是传引用,默认情况下会使用传值的方式。这是我们可以用std::ref显式指定以传引用的方式实例化模板函数。    #include     #include     template class T>    void foo(T arg)    {       

2015-08-31 21:57:49 782

翻译 C/C++内存泄漏及检测

“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用malloc失败,否则都不会导致任何问题。实际上,使用C/C++这类没有垃圾回收机制的语言时,你很多时间都花在处理如何正确释放内存上。如果程序运行时间足够长,如后台进程运行在服务器上,只要

2015-08-29 17:06:11 420

转载 比较C++中的4种类型转换方式

C++的四种cast操作符的区别并非我的原创----------------------------------------------------------------------Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别

2015-08-29 16:26:25 509

转载 环形缓冲区的设计与实现

环形缓冲区是嵌入式系统中十分重要的一种数据结构,比如在一个视频处理的机制中,环形缓冲区就可以理解为数据码流的通道,每一个通道都对应着一个环形缓冲区,这样数据在读取和写入的时候都可以在这个缓冲区里循环进行,程序员可以根据自己需要的数据大小来决定自己使用的缓冲区大小。    环形缓冲区,顾名思义这个缓冲区是环形的,那么何谓环形这个意思也很好理解,就是用一个指针去访问该缓冲区的最后一个内存位置的

2015-08-20 14:38:50 421

原创 linux多线程编程详解

线程分类线程按照其调度者可以分为用户级线程和核心级线程两种。(1)用户级线程 用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持。在这里,操作系统往往会提供一个用户空间的线程库,该线程库提供了线程的创建、调度、撤销等功能,而内核仍然仅对进程进行管理。如果一个进程中的某一个线程调用了一个阻塞的系统调用,那么该进程包括

2015-08-20 00:15:33 480

转载 Linux网络编程之基于UDP实现可靠的文件传输示例

了解网络传输协议的人都知道,采用TCP实现文件传输很简单。相对于TCP,由于UDP是面向无连接、不可靠的传输协议,所以我们需要考虑丢包和后发先至(包的顺序)的问题,所以我们想要实现UDP传输文件,则需要解决这两个问题。方法就是给数据包编号,按照包的顺序接收并存储,接收端接收到数据包后发送确认信息给发送端,发送端接收确认数据以后再继续发送下一个包,如果接收端收到的数据包的编号不是期望的编号,则要求发

2015-08-18 22:38:20 1512

原创 linux网络编程用到的网络函数详解用和使用示例

一.概念介绍网络程序分为服务端程序和客户端程序。服务端即提供服务的一方,客户端为请求服务的一方。但实际情况是有些程序的客户端、服务器端角色不是这么明显,即互为客户端和服务端。我们编写网络程序时,一般是基于TCP协议或者UDP协议进行网络通信的。TCP:(Transfer Control Protocol)传输控制协议是一种面向连接的协议, 当我们的网络程序使用这个协议的时候,网络可以保

2015-08-18 21:38:49 378

原创 linux网络编程poll与epoll区别

poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明:fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这

2015-08-18 20:47:27 574

转载 深入了解Windows句柄到底是什么

总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么。这里我列举词条中的关于句柄的叙述不当之处,至于如何不当先不管,继续往下

2015-08-17 22:15:59 318

原创 WebSever简易实现

//main.h//====================================================================================// The information contained herein is the exclusive property of// Sunnnorth Technology Co.

2015-08-16 12:44:58 401

原创 Github版本管理工具安装及使用

安装gitbash下载地址: http://pan.baidu.com/s/1ntN6dvV安装:点击下一步,直到出现步骤三。在Windows Explorer integration选项中将“Git Bash here”和“Git GUI here”打对勾。在“Adjusting your PATH environment”选项中,默认即可,我自己选的第二项  网上这

2015-08-16 12:14:24 632

转载 linux常见类库及简单介绍

1.      Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html2.      ACE: http://www.cs.wustl.edu/~schmidt/ACE.htmlACE采用ACE_OS适配层屏蔽各种不同的、复杂繁琐的操作系统API。ACE是一个大型的中间件

2015-08-16 12:06:28 1181

翻译 linux网络编程应该学习哪些东西

作为一个经验丰富的Linux C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以了, 因为自己

2015-08-16 00:34:19 745

原创 C++ 老版本数组与新版本Array及Vector区别

老版本:不再赘述Array:1.数组间可以直接赋值(实现数组间整体操作)例如:Array myarray1={1,2,3,4,5};   Array myarray2;   So ,We Can: myarray1 = myarray2;      2.增加了类型安全例如:在内部管理更加得当,通过定义可知Array类型增加了很多操作,如begin(),end()及很多算法。

2015-04-07 23:22:42 704

转载 Python:urllib 和urllib2之间的区别

作为一个Python菜鸟,之前一直懵懂于urllib和urllib2,以为2是1的升级版。今天看到老外写的一篇《Python: difference between urllib and urllib2》才明白其中的区别。You might be intrigued by the existence of two separate URL modules in Python -urll

2015-03-30 23:58:32 274

原创 ImportError: No module named 的一段折腾

1234567891011121314151617181920212223242526272829303132333435

2015-03-30 23:46:20 2057

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除