自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 std::map中erase的正确用法

STL的map表里有一个erase方法用来从一个map中删除掉指令的节点 eg: map mapTest; typedef map::iterator ITER; ITER iter=mapTest.find(key); mapTest.erase(iter); 像上面这样只是删除单个节点,map...

2013-11-29 14:11:53 21344 1

转载 MFC —— 线程控制主窗口的控件

CMyThread是CWinThread的派生类 // MyThread.h : header file //在线程定义p_listbox,指向主窗口的ListBox控件 CWnd* m_thread_wnd; CMyThread* m_thread; CListBox* p_listbox...

2013-11-26 15:25:00 2891 0

转载 游戏服务端IOCP模型,自己封装的一个类,3行代码搞定服务端。

#pragma once #include #define IP_SIZE 32 //ip地址长度 #define BUFFER_SIZE 1024 #include #include enum SOCKET_STATE { ACCEPT = 1, SEND, RECV ...

2013-11-26 15:00:01 1541 0

转载 map按value值查找——find_if的使用

最近是经常使用stl中的map,于是就想记一些关于map的东西。这一篇中会讲到map按照value值查找的方法,就是find_if函数。 大家都知道在map中,排序是按照key值排的,map自带的find方法也是按着key值查找的,这在某些情况下可能会遇到一些麻烦。 譬如,map m_str中...

2013-11-26 13:55:45 7589 0

转载 在完成端口IOCP模型判断客户端是否已关闭连接(掉线)

判断客户端是否关闭: 1 GetQueuedCompletionStatus 返回 FALSE,根据错误号判断。 2 客户端端定时发送(也就是心跳包判断) 补:GetQueuedCompletionStatus 的返回值为 ERROR_SUCCESS 和lpNumberOfBy...

2013-11-26 08:55:38 5540 1

转载 tintxml 操作封装,包括CDATA使用

#ifndef SDK_CONFIG_H_ #define SDK_CONFIG_H_ #include "xml/tinyxml.h" // -----------------------------------------------------------------...

2013-11-22 10:48:38 1244 0

转载 XML Parser(Tinyxml)的使用

1. 下载开源代码Tinyxml,附件带有. 2. 直接将源码加入到我们的工程中. 3. 包含相应的头文件. 4. 测试代码 Read : TiXmlDocument * myDocument = new TiXmlDocument("d:\\test.xml"...

2013-11-22 10:30:20 1154 0

转载 修改tinyxml让其支持解析特殊字符

修改tinyxmlparser.cpp文件中的部分代码如下: TiXmlBase::Entity TiXmlBase::entity[ NUM_ENTITY ] = { { "&", 5, "&" }, { "&...

2013-11-20 09:34:12 1650 0

转载 tinyxml解析内存中的字符串缓冲区

parse()方法解析xml字符串 std::string strResponce; strResponce = _T(""); const char *p = strResponce.c_str(); TiXmlDocument* xmlDocument = new...

2013-11-20 09:27:40 7062 0

转载 win32--tinyxml中对XML文件中的转义字符的处理

this->map[key]就是从Xml中所读取的一个string类型的值,若字符串中出现\n,则会默认处理为\\n, 所以显示出来就是\n,当然就不会回车换行了.  CString val = CString(this->map[key].c_str());  val.Re...

2013-11-20 09:23:14 2775 0

转载 char* 与LPTSTR (或LPCTSTR)及CString 之间的转换

如果定义了_UNICODE,则此时LPTSTR为宽字节,即LPWSTR,而char为窄字节,转换如下      (1) char* -> LPTSTR : char *myChar=W2A(lptstr)      (2) LPTSTR-> char* : LPTSTR lptst...

2013-11-18 14:41:09 1531 0

转载 MFC程序中如何接受命令行参数

在MFC程序中,可以用以下几种方法来获取命令行参数。 为方便说明,我们假设执行了命令:C:\test\app.exe -1 -2   方法一  ::GetCommandLine();  将获取到 "C:\test\app.exe"  -1 -2   方法二  for ...

2013-11-18 14:08:26 7427 0

转载 tinyxml解析CDATA

tinyxml是一个小型而功能强健的开源XML处理库。但是在对的数据通过函数GetText()进行读取的时候,总是只能回取到第一个数据里的内容,查看源码,发现解析是没有任何问题的,tinyxml只是把它接下来的数据放到了另外一个节点进行了保存。我们可以修改GetText()来获取全部的数据,这样上...

2013-11-18 12:19:16 3153 0

转载 tinxml解析CDATA字段

一个XML文件可能含有CDATA区段数据,如何解析? 本文基于以下背景: C++,TinyXml库(版本:2.6.1) (1)什么是CDATA区段? 如果你要看详细的解释,可以参考这篇文章:http://www.w3school.com.cn/xml/xml_cda...

2013-11-18 12:18:25 2153 0

转载 XML CDATA

所有 XML 文档中的文本均会被解析器解析。 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。 PCDATA PCDATA 指的是被解析的字符数据(Parsed Character Data)。 XML 解析器通常会解析 XML 文档中所有的文本。 当某个...

2013-11-18 08:31:04 1165 0

转载 虚表/虚指针

虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下: class A { public: virtual void f(); virtual ...

2013-11-15 14:13:46 1237 0

转载 C语言面试题大汇总之华为面试题

1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同...

2013-11-15 09:27:11 3012 0

转载 Big Endian与Little Endian区别

试题1:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1        解答:      int checkCPU()   {    {     union w     {       int a;      char b;...

2013-11-15 09:21:50 1320 0

转载 C/C++ 程序设计员应聘常见面试笔试试题深入剖析

1.引言   本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。   许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技...

2013-11-15 08:57:57 1996 0

转载 单例模式——C++实现线程安全的单例

一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。 需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety. 使用double-check来保证thread safety.但是如果处...

2013-11-14 12:32:40 1242 0

转载 ACE_Recursive_Thread_Mutex 死锁bug

ACE_Recursive_Thread_Mutex 的设计目的是为了避免代码中某个线程自己递归对互斥体进行申请而变成死锁的情况 但通过对其介绍文章的阅读 (参考 10.6 ACE条件变量类) 发现实现上也可能会因为线程间的竞争ACE_Thread_Mutex 和 ACE_Condition...

2013-11-14 10:55:06 1943 0

转载 STL之Deque使用小结

/*deque: 是一个double-ended queue, 1)支持随即存取,也就是[]操作符, 2)支持两端操作,push(pop)-back(front),在两端操作上与list效率差不多 因此在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵...

2013-11-14 10:13:31 927 0

转载 一个封装好的使用完成端口的socket通讯类

//*********************************************************************************** //文件说明:TSocket.h //功能: 文件传输客户端实现头文件 //使用说明:使用TCP的IOCP实现,可以传送大消息...

2013-11-13 19:54:18 5299 1

转载 IOCP编程注意事项

1、每个连接同时最好只有一个待决的WSARecv。IOCP不保证多个待决WSARecv情况下先投递的WSARecv就一定会先得到完成通知。因此 ,多个待决WSARecv可能导致数据乱序,无谓增加代码复杂性。         2、投递0长度缓冲区的WSARecv可以不占用非分页内存,避免W...

2013-11-13 19:48:34 1096 0

转载 判断socket是否连接(windows socket)

项目遇到一个问题,原因可以归结为:当一个tcp socket连接建立后,如果中途网络断开了一段比较长的时间(比如网线拔掉了再插上),则这个tcp socke连接已经断开,需要对这种情况进行相应的错误处理。网上搜索到的大都是linux环境下的解决方案,由于windows socket并没有完全实现s...

2013-11-13 14:39:11 4956 0

转载 CRITICAL_SECTION同步易出错的地方

众所周知通过CRITICAL_SECTION可以对多个线程同步,然而加锁和解锁的次数不匹配将导致死锁: [cpp] view plaincopy class CLock   {   public:       CLock()       ...

2013-11-13 11:36:30 2050 0

转载 进程同步与互斥

进程同步与互斥   首先,我们看一个例子:进程P1、P2公用一个变量COUNT,初始值为0       P1、P2两个进程的执行顺序是随机的,P1、P2可能顺序执行或交错执行。     由图可见,不同的执行顺序,COUNT值会不同,这是不允许的。     在多道程序系...

2013-11-12 21:16:27 1586 0

转载 进程间互斥 Mutex

对于普通的线程间互斥可以使用CreateMutex传建一个匿名的互斥量做互斥,对进程间的互斥就要用到命名互斥量来做互斥了。用到的函数有: 1. 创建一个命名互斥量使用CreateMutex()方法,只需把lpName参数设置为非NULL,如"my mutex" HAND...

2013-11-12 20:32:12 1404 0

转载 进程互斥锁

进程间共享数据的保护,需要进程互斥锁。与线程锁不同,进程锁并没有直接的C库支持,但是在Linux平台,要实现进程之间互斥锁,方法有很多,大家不妨回忆一下你所了解的。下面就是标准C库提供的一系列方案。 1、实现方案 不出意外的话,大家首先想到的应该是信号量(Semaphores)。对信号...

2013-11-12 17:15:55 3241 0

转载 安全且平台兼容的进程互斥锁

一种安全且平台兼容的进程互斥锁,它是基于文件记录锁实现的。 1、文件记录锁 UNIX编程的“圣经”《Unix环境高级编程》中有对文件记录锁的详细描述。 下载链接:http://dl02.topsage.com/club/computer/Unix环境高级编程.rar 记录锁...

2013-11-12 17:15:04 1142 0

转载 不同进程之间互斥锁的使用

static pthread_mutex_t *mptr;   互斥锁位于共享内存区,将用于不同进程之间的上锁,设置互斥锁的属性为PTHREAD_PROCESS_SHARED,并初始化互斥锁。 void my_lock_init(char *pathname) { int fd; pt...

2013-11-12 17:11:08 1759 0

转载 NoSQL数据库:Java开源项目Neo4j简介

Neo4j是一个嵌入式,基于磁盘的,支持完整事务的Java持久化引擎,它在图像中而不是表中存储数据。Neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图像,可以扩展到多台机器并行运行。相对于关系数据库来说,图形数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅...

2013-11-12 15:31:20 1277 0

转载 EPOLL和IOCP比较

EPOLL是半成品,IOCP是成品,底层机制一样,协议栈的状态检查不需要用户去查询,由作业系统来通知。 其实这是任何守护性逻辑高性能的基础机制。 但是EPOLL只是告诉你现在可以读和写,即协议栈的读写缓冲被初始化或重设(对于写,上次数据已经提交并写缓冲重设为空,对于读,栈议栈读缓冲已经开始...

2013-11-12 15:17:20 7500 3

转载 CString和CStringA之间的转换

使用UNICODE字符集编程时,总是需要使用那些不支持UNICODE的库,例如sqlite3,Lua等必须使用char*类型的。这个时候用CStringA是最好的。 另外CStringA与CString可以灵活地随意转换赋值,注意不能这样用: CString str1; CStringA...

2013-11-12 14:34:27 2014 0

转载 CString&CStringA&CStringW之间的相互转换

在做MFC编程的时候,时常会碰到CString、CStringA、CStringW之间相互转换的问题,也即chat字符串与wchar_t字符串相互转换的问题。 现本人写了一个它们之间相互转换的函数,代码如下: 头文件CStringToolEx.h #ifndef _CSTRI...

2013-11-12 14:33:42 6415 0

转载 Windows IOCP模型与Linux EPOLL模块之比较

一:IOCP和Epoll之间的异同。 异: 1:IOCP是WINDOWS系统下使用。Epoll是Linux系统下使用。 2:IOCP是IO操作完毕之后,通过Get函数获得一个完成的事件通知。 Epoll是当你希望进行一个IO操作时,向Epoll查询是否可读或者可写,若处于可读或可写状态后,...

2013-11-12 11:55:29 14703 2

转载 ICE 分布式中间件开发VS 分布式开发之ACE

ICE(Internet Communications Engine)是ZeroC 提供的一款高性能的中间件,基于ICE 可以实现电信级的解决方案。前面我们提到过在设计网站架构的时候可以使用ICE 实现对网站应用的基础对象操作,将基础对象操作和数据库操作封装在这一层,在业务逻辑层以及表现层(jav...

2013-11-11 11:41:01 2806 0

原创 windos 2008 查看mysql连接数

netstat -na | find /c "3306"

2013-11-11 11:19:11 722 0

转载 友元函数与友元类

采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。      为什么要有友元函数?简单地说,通...

2013-11-09 08:52:31 777 0

转载 C++_友元函数

1、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率       具体来说:为了使其他类的成员函数直接访问该类的私有变量       即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数       优点:能够提高效率,表达简单、清晰      ...

2013-11-09 08:49:50 660 0

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