自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (3)
  • 收藏
  • 关注

原创 vs调试时,感觉差一行代码的问题

vs 调试时,总感觉差一行,如下效果: 纠结好久,通过查看16进制发现, 有行以 0xd 0xd 0xa结尾,导致的。 总结:此代码是网上拷贝的一个函数到项目时产生的,vs提示行尾时,不要用当前设置,用windows方式就不会出错了。

2016-08-05 17:49:34 913

原创 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 1441

原创 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 602

原创 libbase-time

interface: //get micro seconds from Epochinline UI64 TimeStamp();//get current formatted timeinline std::string StrTimeStamp();利用gettimeofday,时间精度较高。

2013-01-15 09:37:46 691

原创 游戏服务器框架

游戏服务器框架平台: linux, windows语言: c++协议: tcp1,网络支持的网络模式: (windows: select, iocp), (linux: select, epoll)当前主流的开源网络库:    boost asio    asio without boost    libevent    ace网络模块设计:

2012-11-14 10:37:13 3192 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 579

原创 游戏服务器设计

游戏服务器类型:mmorpgtpsfps编码格式:1, 与客户端之间通信,用google buffer来做序列化。用utf8格式。2, 数据库用mysql, 编码方式用utf8.统一编码格式,不用gb2312, 防止中文乱码。开发协议:用联合编译,提高编译速度。用dump来查找崩溃错误(书籍:软件调试)

2012-09-04 14:23:17 12502

原创 游戏服务器架构

登陆服务器判断账户合法性,如果合法的话,把session信息写入memcache,网关服务器收到玩家连接请求后,在memcache里查找是否合法玩家,防止非法连接。网关服务器要管理玩家连接,需要高并发,可以开多个scene mgr纯粹的转发消息功能数据库服务器纯粹的查询修改数据功能,如果成为瓶颈,则加缓存数据库服务器:屏蔽其他服务器的sql操作,或者把他叫做存储服务器。当期游戏

2012-08-25 10:07:24 46105

原创 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 460

原创 序列化反序列化

只要用到网络开发啊,就一定会用到序列化反序列化。1,自定义结构体struct test{int len;int type;char data[10];}test* data=(test*) buffer.缺点:明文,只支持基本类型,不支持变长结构2,在1的基础上,自定义一个缓冲类,存放一个消息。把消息写入缓冲,通过支持string, vector

2012-07-30 09:31:41 1649

原创 网络开发---单播多播广播

点对点通信,也就是单播,tcp,udp支持。tcp不支持协议层的广播和多播。广播没用过,就说一下多播。多播是介于广播和单播之间的,与单播相比,源向多个客户端发送报文,如果是单播的话,会有重复冗余报文;多播的话,就一条报文。综上:1,游戏开发用的tcp,所以协议层的多播和广播不会用到。2,协议层多播没前景,用应用层多播。

2012-07-04 15:56:35 485

原创 c++项目属性

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////运行时库:c/c++ run time library(standard c/c++)-->microsoft c/c++ runtime

2012-07-04 10:21:50 873

原创 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 4373 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 575

原创 库接口的设计

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 474

原创 理解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 509

原创 第三方库的编译

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////所有第三方库编译的时候,需要注意自己项目的runtimelib是用的mt, 还是md,第三方库也要统一,避免出现 error LNK2005重定义错误

2012-05-21 17:21:26 1693

原创 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 606

原创 操作系统内核--进程猜想

今天看unix网络编程的时候,看到调用send函数,把数据放入缓冲区,然后加上ip层包头,然后放入链路层输入队列,链路层进程从输入队列取出,然后发送。一下子就蒙住了,以前对操作系统内核没想到去怎么形容,比如我用户进程里调用阻塞时send方法,有数据后才会返回。以为自己对这句话理解了。 现在想想不知其所以然也。以下是自己查了一些资料,加上一些猜测的操作系统内核的进程方面的架构。没有操

2012-05-12 21:32:09 510

原创 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 953

原创 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 556

原创 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 3012 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 840

原创 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 1081

原创 subversion dev2: import+, 客户端导入数据到服务器

客户端上传版本到服务器,svn import的命令是导入新添加的资源到服务器;现在修改成可以导入资源到服务器,如果已存在且内容不同,则覆盖,如果未存在,则添加,如果不存在,不做处理。

2011-09-06 16:17:16 409

原创 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 491

原创 回调函数的使用

在消息处理的时候,一般都用switch(msgid) case的方式来处理不同消息,但是随着消息的增多,就显得不方便;解决方法:利用回调函数,来定制查找表http://blog.csdn.net/hjsunj/article/details/2037354//查找

2011-08-15 09:45:36 460

原创 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 393

原创 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 404

原创 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 1045

原创 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 475

原创 dll, lib

/**************************/win32下的动态库IDE: vs2005/**************************/库的建立:在工程-属性-常规-配置类型,选择动态库;一个动态库发布,包含一个头文件,一个dll,一个lib,lib文件dll的函数列表 头文件中包含一个宏定义,在具体实现的文件中#define FUNC_EXPORTS

2011-06-23 17:10:00 538

原创 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 922

原创 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 339

原创 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 692

原创 pe_c++

 /**//***************************************************************************    文件名:        Main.cpp*    日  期:        2009年1月13日*    作  者:        rawdata*    描  述:        增加3个节       空间都用new,所以新生

2009-09-24 03:13:00 407

原创 plan

. 16位汇编程序设计(32学时)2. Win32汇编程序设计(32学时)3. PE文件格式(24学时)4. 阶段项目(40学时)PEInfo:(1).独立开发PE分析和修改工具, 并将包含代码的节内容反汇编显示出来.(2).运用进程调试知识, 显示目标程序所运行的指令序列.(可选)5. 软件逆向分析技术(64学时)6. 反跟

2009-09-24 03:11:00 354

原创 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 525

原创 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 2225

libnet

libnet

2013-03-20

win_iocp

win_iocp

2013-03-18

win_select

网络库开发,windows select

2013-03-18

空空如也

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

TA关注的人

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