流量统计:
Rixu Blog (日需博客)
日需博客,每日必需来踩踩哦..
posts - 108,comments - 54,trackbacks - 0
C C++
C++11中的Move语义和右值引用      摘要:

C++一直致力于生成快速的程序。不幸的是,直到C++11之前,这里一直有一个降低C++程序速度的顽症:临时变量的创建。有时这些临时变量可以被编译器优化(例如返回值优化),但是这并不总是可行的,通常这会导致高昂的对象复制成本。我说的是怎么回事呢?


  阅读全文
posted @ 2016-03-15 15:49 日需博客 阅读(577) | 评论 (0)  编辑
传奇3.0 VC++最终正式版本源码      摘要: 传奇3.0 (evil’s illusion Server)
韩国正式版本 vc++ 源码
GameServer VC++源代码,包括地图,脚本,人物处理,协议加密,带数据库,由于源码为商业性质的,请使用者注意其版权和不要擅自公开发布和传播源码。
WEMADE 公司于 Delphi 版本服务器端程序后,修改为 VC++ 版本。
可用VC++ 6.0 或 VC.net 编译;学习网络游戏开发的朋友又一个绝好的源码。  阅读全文
posted @ 2011-09-28 09:14 日需博客 阅读(4418) | 评论 (2)  编辑
SQLite3 C/C++ 开发接口简介      摘要: 1.0 总览

SQLite3是SQLite一个全新的版本,它虽然是在SQLite 2.8.13的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API. SQLite3是为了满足以下的需求而开发的:



l 支持UTF-16编码.

l 用户自定义的文本排序方法.

l 可以对BLOBs字段建立索引.

因此为了支持这些特性我改变了数据库的格式,建立了一个与之前版本不兼容的3.0版. 至于其他的兼容性的改变,例如全新的API等等,都将在理论介绍之后向你说明,这样可以使你最快的一次性摆脱兼容性问题.  阅读全文
posted @ 2011-09-21 15:12 日需博客 阅读(1047) | 评论 (0)  编辑
修改const变量的疑问      摘要: 2个指针指向的地址和变量地址一样,值为什么不一样呢?疑惑。

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
const int a=10;
const int *p1=&a;
int *p2=const_cast(p1);
if (&a==p1)
{
printf("&a==p1\n");
}
else
{
printf("&a!=p1\n");  阅读全文
posted @ 2011-09-10 21:21 日需博客 阅读(2201) | 评论 (7)  编辑
GDI+ for VC6 MFC      摘要: 五年前,笔者曾在C#中使用GDI+开发程序,对其颇有好感。这一段时间,在使用VC6作图时,深切感会到使用GDI的种种不便,不比GDI+好用。沉迷于VC6的高效与轻便,不想只为了一个GDI+而被迫安装沉甸甸的.Net,便产生了一个疑问,难道GDI+只能用于.Net中吗?
访问微软的MSDN网站后,随即解开了此谜。于是便有了此文 – 如何在VC6 MFC中使用GDI+。  阅读全文
posted @ 2011-08-23 09:10 日需博客 阅读(2809) | 评论 (6)  编辑
C++自定义发IP包例子
posted @ 2011-08-19 14:55 日需博客 阅读(586) | 评论 (0)  编辑
ARP欺骗 C++实现      摘要: 前段时间我们学校的的网络总是出现掉线的问题,后来说是ARP欺骗,要我们用ANTIARPSNIFFER。小弟不才,

也想搞清楚这个ARP欺骗到底是个什么东西。于是在网上查了点资料,看了点文档。也算是DIY了一个出来,而

且可以不被ANTIARPSNIFFER发现的让对方主机在网络中死掉。于是把这个小东西贴出来让大家一起把玩一下。
在下菜鸟一只,还请高手指教
参考资料:《TCP/IP详解II:实现》,《WINPCAP 3.0 DOC》,《交换网络中的嗅探和ARP欺骗》(一位叫RefDom

的大哥很久前写的帖子)  阅读全文
posted @ 2011-08-19 11:55 日需博客 阅读(4784) | 评论 (0)  编辑
Windows平台下的内存管理      摘要: 1. Windows平台下主要的内存管理途径
申请
释放
new
delete
malloc
free
CoTaskMemAlloc
CoTaskMemFree
IMalloc::alloc
IMalloc/free
GlobalAlloc
GlobalFree
LocalAlloc
LocalFree
HeapAlloc
HeapFree
VirtualAlloc
VirtualFree  阅读全文
posted @ 2011-08-15 09:21 日需博客 阅读(443) | 评论 (0)  编辑
malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较      摘要: 这里比较的VC++编译的C++代码中的性能

我用的是VC6.0测试的

就不介绍这几个的用法了

我写了一段简单的测试代码

测试结果是:

malloc:390
new:391
VirtualAlloc:454
HeapAlloc:47  阅读全文
posted @ 2011-08-15 09:19 日需博客 阅读(1275) | 评论 (2)  编辑
VC++下使用ADO编写数据库程序      摘要: 准备:
(1)、引入ADO类
#import "c:\program files\common files\system\ado\msado15.dll"
no_namespace
rename ("EOF", "adoEOF")
(2)、初始化COM
在MFC中可以用AfxOleInit();非MFC环境中用:
CoInitialize(NULL);
CoUnInitialize();  阅读全文
posted @ 2011-08-09 14:21 日需博客 阅读(317) | 评论 (0)  编辑
GUI程序也能使用控制台窗口      摘要: 很多时候,调试GUI程序是很不方便的,通常的做法是使用MessageBox,但是作为一个模态窗口,它经常产生不必要的消息,比如killfocus, setfocus或者paint,从而影响调试的执行过程。当然,使用vc的调试器也不错,但是这样也很容易造成窗口切换从而产生干扰消息。
因此,如果能像在控制台程序里那样使用cin/cout对象或printf族函数,会使得调试过程方便得多。而通常,windows是不会为GUI程序产生单独的命令行窗口的。所以我们是看不到使用标准输入输出流输出的东西的。既然系统不提供,那就自己动手“造”出一个来吧!

下面是一个简单的控制台窗口对象,它可以为你的程序创建一个命令行窗口,并将stdout,stdin和stderr重定向到这个命令行窗口。在程序中建立一个这样的对象之后,就可以直接使用cin/cout/*printf来操纵这个新的命令行窗口了!5 f8 I$ l4 o- b3 L, m% h  阅读全文
posted @ 2011-08-09 13:57 日需博客 阅读(584) | 评论 (0)  编辑
位运算的用处搜集      摘要: 位运算应用口诀
清零取反要用与,某位置一可用或
若要取反和交换,轻轻松松用异或
移位运算
要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。
2 " < <" 左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。
3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。
4 ">>>"运算符,右边的位被挤掉,对于左边移出的空位一概补上0。  阅读全文
posted @ 2011-08-08 13:29 日需博客 阅读(255) | 评论 (0)  编辑
介绍LuaPlus: 好用的Lua For C++扩展      摘要: LuaPlus是Lua的C++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。
LuaPlus目前版本为:LuaPlus for Lua 5.01 Distribution Build 1080 (February 28, 2004)。大家可以到http://luaplus.org/ 站点下载:
源码 (http://wwhiz.com/LuaPlus/LuaPlus50_Build1081.zip)
目标码 (http://wwhiz.com/LuaPlus/LuaPlus50_Build1081_Win32Binaries.zip)
介绍LuaPlus: 好用的Lua For C++扩展 沐枫网志   阅读全文
posted @ 2011-08-08 11:36 日需博客 阅读(539) | 评论 (1)  编辑
json格式入门和总结      摘要: 数据交换的格式,从结构上看,所有的数据(data)最终都可以分解成三种类型:

第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词。

第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海"。

第三种类型是映射(mapping),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作散列(hash)或字典(dictionary),比如"首都:北京"。  阅读全文
posted @ 2011-08-08 11:07 日需博客 阅读(388) | 评论 (0)  编辑
修改IAT实现本进程API HOOK      摘要: //修改IAT实现本进程API HOOK
//coded by xicao
//QQ:327062448
//E-MAIL:xicao54007@sina.com
#include
#include //ImageDirectoryEntryToData
#pragma comment(lib,"imagehlp.lib")
/************************************************************/
char *szModName = NULL ;
char *szHacked = "不好意思hook到了!" ;
DWORD dwHookFun ;
DWORD dwHookApiAddr;
PIMAGE_IMPORT_DESCRIPTOR pImportDesc ;
PIMAGE_THUNK_DATA32 pThunk;
U  阅读全文
posted @ 2011-08-08 11:03 日需博客 阅读(1430) | 评论 (0)  编辑
经典编程书籍(C++, 网络, Windows, Linux)      摘要: 两年前就给自己列出了一个读书清单,但进展缓慢,看的经典书籍仍然寥寥可数,惭愧中......
现在将这个书单重新修改,一方面鞭策自己学习,另一方面也表达对大牛们有如滔滔江水般的敬仰之意。
书单中列举的都是相关领域的经典书籍,必读之作。此书单的编辑参考了很多网站,包括一些名家的推荐,例如侯捷,孟岩,荣耀,潘爱民等等,在此也向这些前辈表示感谢。^_^   阅读全文
posted @ 2011-08-08 10:59 日需博客 阅读(573) | 评论 (0)  编辑
LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义      摘要: UNICODE:它是用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。
MBCS,它是多字节字符集,它是不定长表示世界文字的编码。MBCS表示英文字母时就和ASCII一样(这也是我们容易把MBCS和ASCII搞混的原因),但表示其他文字时就需要用多字节。
WINDOWS下面的程序设计可以支持MBCS和UNICODE两种编码的字符串,具体用那种就看你定义了MBCS宏还是UNICODE宏。MBCS宏对应的字符串指针是char*也就是LPSTR,UNICODE对应的指针是unsigned short*也就是LPWSTR,为了写程序方便微软定义了类型LPTSTR,在MBCS下他就是char*, 在UNICODE下它是unsigned char*,这样你就可以重定义一个宏进行不同字符集的转换了。  阅读全文
posted @ 2011-08-08 10:58 日需博客 阅读(596) | 评论 (0)  编辑
使用KeepAlive检测网络异常      摘要: #include "netinet/tcp.h"
int keepAlive = 1; //设定KeepAlive
int keepIdle = 30; //开始首次KeepAlive探测前的TCP空闭时间
int keepInterval = 30; //两次KeepAlive探测间的时间间隔
int keepCount = 3; //判定断开前的KeepAlive探测次数

if(setsockopt(sockfd,SOL_SOCKET,SO_KEEPALIVE,(void*)&keepAlive,sizeof(keepAlive)) == -1)
{
printf("Socket Option setting(SO_KEEPALIVE) fail !\n");
return FALSE;
}

if(setsockopt(sockfd,SOL_TCP,TCP_KEEPIDLE,(void *)&ke  阅读全文
posted @ 2011-08-08 10:53 日需博客 阅读(517) | 评论 (0)  编辑
DLL的定义与调用
posted @ 2011-08-07 19:18 日需博客 阅读(678) | 评论 (0)  编辑
Crypto++入门学习笔记(DES、AES、RSA、SHA-256)      摘要: 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip):
最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后对一些数据进行一些加密解密的操作。
笔者之前没接触过任何加密解密方面的知识(当然,把每个字符的ASCII值加1之流对明文进行加密的“趣事”还是干过的,当时还很乐在其中。),甚至一开始连Crypto++的名字都没有听过,被BS了之后,就开始了Crypto++的入门探索过程。
最初,大概知道了要了解两大类算法中的几个算法——对称加密算法:DES、AES(后来因为人品好的缘故也了解了下非对称加密算法RSA,后文会详述何谓“人品好”);散列算法(需要通过Hash运算):SHA-256。
起初,笔者以为这样的知名算法在网上应该有很多现成的例子。笔者比较懒,对于自己不熟悉的东西,总希望找捷径,直接找别人现(在已经写)成可(编译运)行的代码然后施展ctrl + C,ctrl + V算法(咳,什么算法,是大法!!!)。
However,发觉网上的例子不是稀缺,就是只有代码没有解释。笔者觉得很难忍受这样的“莫名其妙”(奇怪的  阅读全文
posted @ 2011-08-05 16:37 日需博客 阅读(1725) | 评论 (0)  编辑
Crypto++ 的使用方法      摘要: 从官方网下载的Crypto++库是开源的,只有源文件和几个可以生成lib、dll的工程,以及一个使用的例子工程,因此希望生成自己建的工程能使用的SDK。

1.编译链接生成cryptlib.lib
打开cryptest.sln,分别在Debug模式和Release模式下编译链接cryptlib工程,成功后会在cryptopp54\\Win32\\output\\debug和cryptopp54\\Win32\\output\\release下生成cryptlib.lib文件。作者当时用的是Crypto++ 5.4版本。
Build时方法是,右击Solution Explorer中的cryptlib工程,单击build。第一次时它会报错说“d:\\cryptopp54\\adler32.cpp(3) : fatal error C1033: cannot open program database ’d:\\cryptopp54\\win32\\cryptlib\\debug\\vc80.idb’”,没关系,按这样再build一次,就  阅读全文
posted @ 2011-08-05 16:24 日需博客 阅读(5157) | 评论 (0)  编辑
C++重载operator的示例      摘要: 以下示例中定义了一个class test, 重载了<, +, +=, =, ==, <<, >>等符号:

#include
#include
using namespace std;

class test{
public:
int v;
/*构造函数*/
test():v(0){}
test(const int &a):v(a){}
test(const test &t1):v(t1.v){}

/*以下重载小于号 < */
//比较两个对象的大小
bool operator<(const test &t1) const{
return (v < t1.v);
}  阅读全文
posted @ 2011-08-04 14:35 日需博客 阅读(662) | 评论 (0)  编辑
Windows完成端口与Linux epoll技术简介      摘要: WINDOWS完成端口编程
1、基本概念
2、WINDOWS完成端口的特点
3、完成端口(Completion Ports )相关数据结构和创建
4、完成端口线程的工作原理
5、Windows完成端口的实例代码
Linux的EPoll模型
1、为什么select落后
2、内核中提高I/O性能的新方法epoll
3、epoll的优点
4、epoll的工作模式
5、epoll的使用方法
6、Linux下EPOll编程实例
总结  阅读全文
posted @ 2011-08-04 13:49 日需博客 阅读(345) | 评论 (0)  编辑
C++类型转换总结      摘要: C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:
TYPE b = (TYPE)a。
C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。

const_cast,字面上理解就是去const属性。
static_cast,命名上理解是静态类型转换。如int转换成char。
dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。
reinterpreter_cast,仅仅重新解释类型,但没有进行二进制的转换。
4种类型转换的格式,如:TYPE B = static_cast(TYPE)(a)。  阅读全文
posted @ 2011-08-03 13:57 日需博客 阅读(227) | 评论 (0)  编辑
Windows开机登录认证与Gina DLL      摘要: Windows的开机密码认证模块一般是由Gina DLL完成的。在NT/2000中交互式的登陆支持是由WinLogon调用GINA DLL实现的,GINA DLL提供了一个交互式的界面为用户登陆提供认证请求。  阅读全文
posted @ 2011-08-03 13:41 日需博客 阅读(1247) | 评论 (0)  编辑
Kompex SQLite Wrapper for C++ - Examples      摘要: Here you can see some examples.
It shows a part of the functionality of the wrapper and how you can use it.
You can find more examples in the example application (contained in download package).


1. open a database and create a statement instance for sql queries/statements
// open database
Kompex::SQLiteDatabase *pDatabase = new Kompex::SQLiteDatabase("test.db", SQLITE_OPEN_READWRITE, 0);
// create statement instance for sql queries/statements
Kompex::SQLite  阅读全文
posted @ 2011-08-02 14:12 日需博客 阅读(1645) | 评论 (1)  编辑