- 博客(39)
- 资源 (3)
- 收藏
- 关注
原创 vs调试时,感觉差一行代码的问题
vs 调试时,总感觉差一行,如下效果: 纠结好久,通过查看16进制发现, 有行以 0xd 0xd 0xa结尾,导致的。 总结:此代码是网上拷贝的一个函数到项目时产生的,vs提示行尾时,不要用当前设置,用windows方式就不会出错了。
2016-08-05 17:49:34
933
原创 sprintf %+2s用法
char buf[3]="hi"; char buf1[10]={0}; //不论buf大小,截取3位,不足默认用0补齐。默认在前面补齐,即+; 如果是-,则在尾部补齐 sprintf(buf1, "%+3s", buf);//buf1=" hi" sprintf(buf1, "%-3s", buf);//buf1="hi " char buf3[2]={0}; sprin
2013-05-24 15:54:35
1467
原创 libs--libnet
网络库(tcp)windows: select, iocplinux: select, epoll1, 对外接口class IOService{public: //阻塞connect bool connectPeer(const char* ip, UI32 port); //listen for the peer connect
2013-01-15 09:38:25
612
原创 libbase-time
interface: //get micro seconds from Epochinline UI64 TimeStamp();//get current formatted timeinline std::string StrTimeStamp();利用gettimeofday,时间精度较高。
2013-01-15 09:37:46
709
原创 游戏服务器框架
游戏服务器框架平台: linux, windows语言: c++协议: tcp1,网络支持的网络模式: (windows: select, iocp), (linux: select, epoll)当前主流的开源网络库: boost asio asio without boost libevent ace网络模块设计:
2012-11-14 10:37:13
3225
1
原创 通用套接字选项
高性能服务器涉及到的套接字选项:http://www.cppblog.com/killsound/archive/2009/01/16/72138.htmlhttp://blog.csdn.net/fullsail/article/details/4424324http://www.blogjava.net/killme2008/archive/2008/06/23/20996
2012-10-18 12:41:14
592
原创 游戏服务器设计
游戏服务器类型:mmorpgtpsfps编码格式:1, 与客户端之间通信,用google buffer来做序列化。用utf8格式。2, 数据库用mysql, 编码方式用utf8.统一编码格式,不用gb2312, 防止中文乱码。开发协议:用联合编译,提高编译速度。用dump来查找崩溃错误(书籍:软件调试)
2012-09-04 14:23:17
12514
原创 游戏服务器架构
登陆服务器判断账户合法性,如果合法的话,把session信息写入memcache,网关服务器收到玩家连接请求后,在memcache里查找是否合法玩家,防止非法连接。网关服务器要管理玩家连接,需要高并发,可以开多个scene mgr纯粹的转发消息功能数据库服务器纯粹的查询修改数据功能,如果成为瓶颈,则加缓存数据库服务器:屏蔽其他服务器的sql操作,或者把他叫做存储服务器。当期游戏
2012-08-25 10:07:24
46119
原创 c++强制转换
隐式转换: char->int显示转换: c风格转换: Base* b=new Test; Test* t=(Test*)b; c++风格: static_cast: 编译时检查,如果不是派生关系,则编译错误 dynamic_cast:运行时检查,如果不是派生关系,则返回null---rtti reinterpret_c
2012-08-23 13:35:28
478
原创 序列化反序列化
只要用到网络开发啊,就一定会用到序列化反序列化。1,自定义结构体struct test{int len;int type;char data[10];}test* data=(test*) buffer.缺点:明文,只支持基本类型,不支持变长结构2,在1的基础上,自定义一个缓冲类,存放一个消息。把消息写入缓冲,通过支持string, vector
2012-07-30 09:31:41
1661
原创 网络开发---单播多播广播
点对点通信,也就是单播,tcp,udp支持。tcp不支持协议层的广播和多播。广播没用过,就说一下多播。多播是介于广播和单播之间的,与单播相比,源向多个客户端发送报文,如果是单播的话,会有重复冗余报文;多播的话,就一条报文。综上:1,游戏开发用的tcp,所以协议层的多播和广播不会用到。2,协议层多播没前景,用应用层多播。
2012-07-04 15:56:35
500
原创 c++项目属性
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////运行时库:c/c++ run time library(standard c/c++)-->microsoft c/c++ runtime
2012-07-04 10:21:50
882
原创 c++ email开发
http://www.vckbase.com/document/viewdoc/?id=1912如果用smtp协议来发送email:最简单的就是用jwSMTP库,还可以用libcurl,还可以自己开发:需要注意helo/ehlo可以知道认证方式,jwsmtp只支持login,plain两种libcurl几乎支持所有认证方式(login, plain, ntlm);
2012-06-05 09:58:45
4888
2
原创 c++调用c#的dll
#using "warnning.dll"using namespace warnning;warnning::warnner ^w=gcnew warnning::warnner();编译通过,执行的时候有个异常错误,找了好久,才解决,不仅把c#的dll放在vcproj同目录下(编译时用),还需要把c#的dll放在c++的exe目录下(执行时用)
2012-06-05 09:26:46
582
原创 库接口的设计
1,利用虚函数class base{ public:void func(); }class child{public: void func();}base* b=new child()2,利用implclass base{private:class baseImpl* pimpl;}//cppclass baseImpl
2012-05-28 20:45:20
490
原创 理解c++的union
因为不熟悉,所以一直没用过union,刚刚看到个利用union来强转的例子,突然想到原来可以让强转这么优雅union test{int a,char c}test.a=3;char c=test.c;std::string的实现: union _Bxty { // storage for small bu
2012-05-28 11:12:03
524
原创 第三方库的编译
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////所有第三方库编译的时候,需要注意自己项目的runtimelib是用的mt, 还是md,第三方库也要统一,避免出现 error LNK2005重定义错误
2012-05-21 17:21:26
1710
原创 c++访问mysql
sql server可以用微软官方的odbc来访问,资料很详细。而mysql由于是免费的, 或者由于效率,所以更多公司选择用mysql。mysql官方提供了mysql connector的c++封装库,目前最新版本是1.1.0,和原先1.0.5版本相比,添加了boost库。为了少安装boost库,我用的1.0.5版本,下载了msi文件,安装了debug和release需要用到的Li
2012-05-14 12:44:45
620
原创 操作系统内核--进程猜想
今天看unix网络编程的时候,看到调用send函数,把数据放入缓冲区,然后加上ip层包头,然后放入链路层输入队列,链路层进程从输入队列取出,然后发送。一下子就蒙住了,以前对操作系统内核没想到去怎么形容,比如我用户进程里调用阻塞时send方法,有数据后才会返回。以为自己对这句话理解了。 现在想想不知其所以然也。以下是自己查了一些资料,加上一些猜测的操作系统内核的进程方面的架构。没有操
2012-05-12 21:32:09
520
原创 c++ 头文件 全局变量
头文件在编译的时候,只是简单的展开,当项目大的时候,很容易发生以下情况:test.htest1.h---include test.htest2.h---include test1.h, test.h这样,test2.h里面就把test.h展开了两次。所以要用头文件卫士。头文件卫士是防止一个文件内包含多次 全局变量:test.h 文件中定义了全局变量 int g_int;
2012-04-12 14:31:36
985
原创 learn lua 1
官网:http://www.lua.org/lua5.1 参考手册: http://manual.luaer.cn/lua5.0 开发手册:http://book.luaer.cn/lua5.1 开发手册: http://www.verycd.com/topics/2903083/ c++下开发lua, 现成的封装库有luabind,lua tinker, tolua等
2012-04-01 17:53:31
569
原创 soap: 非托管c++ 客户端的开发(gsoap)
webservice的服务器是c#写的,现在要用c++访问此webservice.有以下方法:1,托管c++,缺点猜想,部署项目的时候需要包含.net库,讨厌这种拖泥带水的。2,用c#访问webservice,重新包装一个接口,生成dll, 供c++使用;缺点,还是需要公共语言运行库支持,也即托管c++3, 用gsoap 开发步骤:1,安装gsoap win32版本。官网是
2012-04-01 11:00:53
3075
7
原创 跨平台开发--标准
操作系统标准POSIX.1-2008 又叫做 IEEE Std 1003.1?-2008,也叫做ISO/IEC 9945http://www.lindevdoc.org/wiki/POSIXVersion/part of the specIEEE NumberDate of PublicationContentsPOSIX.11003
2012-03-09 13:51:25
864
原创 str string 内存泄露
struct log{string test;}有string的时候慎用memcpy, memmove之类的,防止内存泄露stl string内部包含union _Bxty{ _Elem _Buf[_BUF_SIZE]; _Elem* _Ptr;} _Bx;如果拷贝的字符串长度小,则用栈空间;不然用堆空间,此时如果memcpy的话,是浅拷贝。
2012-03-07 11:21:44
1097
原创 subversion dev2: import+, 客户端导入数据到服务器
客户端上传版本到服务器,svn import的命令是导入新添加的资源到服务器;现在修改成可以导入资源到服务器,如果已存在且内容不同,则覆盖,如果未存在,则添加,如果不存在,不做处理。
2011-09-06 16:17:16
421
原创 common error.
1,添加#define WIN32_LEAN_AND_MEAN 彻底解决winsock2.h的问题http://rshell.blog.163.com/blog/static/4161917020105801122959/2,插入数据后立马知道其自增的IDinsert into role([name]) values('rrr')select @@identity
2011-08-26 11:26:43
511
原创 回调函数的使用
在消息处理的时候,一般都用switch(msgid) case的方式来处理不同消息,但是随着消息的增多,就显得不方便;解决方法:利用回调函数,来定制查找表http://blog.csdn.net/hjsunj/article/details/2037354//查找
2011-08-15 09:45:36
480
原创 object-c 的学习
2010/8/7 21:41, 阿雅第一次做面膜,然后躺在旁边看电视,猪头开始心疼我啦,早点睡觉;2011/11/2#import : 相当于#include, 内部包含头文件卫士int i; NSString* s; NSLog(@"hello%d%@", i, s ); == printfBOOL #define YES 1#define NO 0
2011-08-07 21:40:45
404
原创 iosDev begin
1,介绍1,1, iosiOS是iPhone,iPod touch,以及iPad等设备内运行的操作系统, 是基于UNIX的1.2,cocoa工具包“Foundation工具包”,或简称为“Foundation”,首先出现在OpenStep中。在Mac OS X中,它是基于Core Foundation的。作为通用的面向对象的函数库,Foundation提供了字符串,数值的管
2011-08-05 10:17:28
417
原创 unix/win32: utf8, unicode, ansi
1, 基本概念,几种编码方式1,unicode: 是一个字符集; utf16, UCS-2编码,little endian格式2,Unicode big endian编码3,utf8: unicode的一种,变长编码4,ansi: 本地编码
2011-08-02 14:23:17
1138
原创 ace thread
url: http://www.cnblogs.com/TianFang/archive/2006/12/04/581369.htmlace提供的线程机制屏蔽了平台差异;#include "ace/Thread.h"#include "ace/Synch.h"
2011-08-01 16:22:27
487
原创 dll, lib
/**************************/win32下的动态库IDE: vs2005/**************************/库的建立:在工程-属性-常规-配置类型,选择动态库;一个动态库发布,包含一个头文件,一个dll,一个lib,lib文件dll的函数列表 头文件中包含一个宏定义,在具体实现的文件中#define FUNC_EXPORTS
2011-06-23 17:10:00
552
原创 subversion dev
~ ~slow it down~ ~目标:弄清楚subversion的模块,封装一个win32/unix的subversion client, 提供checkout,update接口 svn: 版本管理工具,官网:http://subversion.apache.org/ 工程下载:http://subversion.tigris.org/servlets/Project
2011-06-10 18:06:00
936
原创 socket
windows socket: 1. client-per-thread2. select 选择3. WSA Async Select 异步选择4. WSA Event Select 事件选择5,overlapped重叠6,completion port 完成端口 : http://bbs.pediy.com/showthread.php?t=133904
2011-06-03 10:00:00
351
原创 win32/unix : IPC + inter-process synchronization
IPC(进程间通信)包括以下一种方法:管道 : pipe(只能有亲缘关系的进程之间), FIFO命名管道windows:http://bbs.pediy.com/showthread.php?threadid=26252 油槽socket共享内存: 以下代码是unix/win32的代码。包含进程互斥OPPOS.h/** OPPO
2011-06-03 09:53:00
706
原创 pe_c++
/**//*************************************************************************** 文件名: Main.cpp* 日 期: 2009年1月13日* 作 者: rawdata* 描 述: 增加3个节 空间都用new,所以新生
2009-09-24 03:13:00
423
原创 plan
. 16位汇编程序设计(32学时)2. Win32汇编程序设计(32学时)3. PE文件格式(24学时)4. 阶段项目(40学时)PEInfo:(1).独立开发PE分析和修改工具, 并将包含代码的节内容反汇编显示出来.(2).运用进程调试知识, 显示目标程序所运行的指令序列.(可选)5. 软件逆向分析技术(64学时)6. 反跟
2009-09-24 03:11:00
365
原创 pe文件修改——工具版
参考网址:http://www.anqn.com/jiamijiemi/gongjujiqiao/2008-11-04/a09103385-3.shtml添加新节。一个PE SECTION HEADER 大小为40个字节(28h). 找到最后一个section header的偏移地址为36f, 找到第一个section 的起始物理地址RoffSet=400h. 400-36f>28
2009-09-22 04:54:00
536
原创 PE-INFO
PEInfo:(目标)(1).独立开发PE分析和修改工具, 并将包含代码的节内容反汇编显示出来.http://www.anqn.com/jiamijiemi/gongjujiqiao/2008-11-04/a09103385.shtml(2).运用进程调试知识, 显示目标程序所运行的指令序列. (1):pe分析#include int main(int argc ,char* ar
2009-08-29 03:00:00
2296
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人