自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 图片

2016-09-18 12:03:35 369

转载 NDC2012:玩网游是为了满足心理需求

在近日举办的NEXON开发者大会NDC2012,NEXON策划室朴范真组长所带来的话题并不是策划和开发等常见的主题,而是人类的心理。 以“我为什么要游戏?心理补偿机制”为题目的演讲,由于观点独到,吸引了不少听众。朴范真组长表示,虽然目前大部分的人认为,人们会在解谜或者打怪的过程中体验游戏的乐趣,直到熟悉或者觉得相关内容已经达到无聊的地步时会觉得没意思,但是逐渐复杂化的当今游戏已经很难以

2012-04-30 20:04:54 753

转载 如何减小与“大牛”的差距

http://blog.csdn.net/beijiguangyong/article/details/7458713摘要:去不去总结,会不会总结是同起点决胜的关键性因素,把别人的知识另存为自己的就叫总结建议:管理自己的大块儿时间,一次只干一件事,这件事一定是相对而言最重要的,最紧急的零碎的边角时间也应该予以重视零碎的边角时间也应该予以重视建议:罗列一下自己有哪些零碎时间,能否

2012-04-20 16:47:44 631

原创 strcat

在看笔试题,写了一下,居然还有个地方写错了char *myStrcat(char* dest, const char* src){        assert((dest != NULL) && (src != NULL));        if (dest == NULL || src == NULL)                return NULL;

2012-04-15 11:58:25 597

原创 shell 数组(字符串下标)

现在游戏开的服务器越来越多了,每次用ssh操作都要写ip地址,很烦,也容易出错,所以要自己搞个服务器名到ip的映射。map=""anahost(){        count=0        temp=""#cat /home/linwencai/sh/HOST | while read line;  //这种写法里面的count是local的        whil

2012-04-06 20:54:01 7827 1

原创 Lua 与 C++的简单交互

// test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"extern "C"{#include "lua.h"#include "lualib.h"#include "lauxlib.h"}static int print(lua_State* L){ /*从栈里拿lua调用时传过来的参数*/ int sum = l

2012-03-20 21:24:08 675

原创 gdb info

1) info args打印出当前函数的参数名及其值。2)info locals打印出当前函数中所有局部变量及其值。3)info catch打印出当前的函数中的异常处理信息。4)源代码的内存你可以使用info line命令来查看源代码在内存中的地址。info line后面可以跟“行号”,“函数名”,“文件名:行号”,“文件名:函数名”,这个命令会打印

2012-03-14 20:42:23 8004

转载 gdb查看内存 (x/100xb)

可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示:x/ n、f、u是可选的参数。n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义。f 表示显示的格式,参见下面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。u 表示从当

2012-03-13 17:59:50 5389

转载 详解rsync算法--如何减少同步文件时的网络传输量

转至:http://blog.csdn.net/russell_tao/article/details/7240661在csdn首页上看到这篇文章,因为现在我们的服务器日志同步也是用rsync,就转过来了,扩展一下知识面先看下图中的场景,客户端A和B,以及服务器server都保存了同一个文件,最初,A、B和server上的文件内容都是相同的(记为File.1)。某一时刻,B修改

2012-03-10 21:42:27 706

转载 c++静态代码检查工具cppcheck

http://blog.csdn.net/mxcai2005/article/details/6436292cppcheck是一款开源c/c++静态代码分析工具,在检测源码时可根据规则就能挖掘出疑似缺陷 下载安装cppcheck:http://sourceforge.net/projects/cppcheck/files/ 有windows和linux版本下载最

2012-03-01 17:54:47 1879

原创 IDA PRO 世界上最优秀的逆向分析工具

下载地址:http://www.gougou.com/search?search=IDA%20pro%E6%B1%89%E5%8C%96&restype=-1&id=10000000&ty=0

2012-03-01 17:45:56 1170

转载 [教程] Flash Socket通信的安全策略问题 843端口

1、问题描述      将flash发布为html格式后,加载页面后,swf无法与服务器进行socket通信。Flash端显示的错误为:securityErrorHandler信息: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048

2012-02-24 17:41:18 2332

原创 一个简单类的内存分配

#include#include#includeclass addr{        public:        addr()        {                b = (int*)malloc(sizeof(int)*100);        }        ~addr()        {                de

2012-02-23 16:44:52 540

原创 服务器内存问题总结

最近服务器总是不定时的奔溃,从core文件的堆栈上看,是奔溃在lua的实现文件里面,都是分配内存或是释放内存时发生的。查看目录/var/log下的messages文件,可以发现有这样的日志 *** glibc detected ***   free(): invalid next size (normal 或fast): 0x00000000d15bd970 *** 或double f

2012-02-20 19:51:53 2319

转载 *** glibc detected *** double free ....

*** glibc detected *** free(): invalid pointer:*** glibc detected *** malloc(): memory corruption:*** glibc detected *** double free or corruption (out): 0x00000000005c18a0 ****** glibc detected

2012-02-20 19:32:50 12544

转载 new 失败

以下是某个高手定位new失败的过程。一个new失败问题的查找过程   在测试部发现一个问题,整个系统跑一阵后就有daemon程序崩溃,虽不是必现,但是一天还是可以出现好几次,导致性能测试无法继续下去,看core的信息是new失败了,具体堆栈如下:  (gdb) bt  #0  0x2acd25c1 in kill () from /lib/libc.so.6  #1  0x

2012-02-20 15:42:02 753

原创 shell二级引用

B="123"A="B"则 ${!A} 等于 123

2012-02-07 21:42:34 646

转载 什么是句柄?为什么会有句柄?HANDLE

从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。句柄的英文是"Handle",本义就是"柄",只是在计算机科学中,被特别地翻译成"句柄",其实还是个"柄"。从一个小东西拎起一大堆东西,这难道不像是个"柄"吗?然后,指针其实也是一种"句柄",只是由于指针同时拥有更特殊的含义——实实在在地对应内存里地一个地址——所以,通常不把指针说成是"句柄"。但指针也有着能从一个32位的值引用到

2012-01-29 22:36:23 448

转载 Linux下tcp并发服务器的几种设计的模式套路

Linux下tcp并发服务器的几种设计的模式套路  在做网络服务的时候tcp并发服务端程序的编写必不可少。tcp并发通常有几种固定的设计模式套路,他们各有优点,也各有应用之处。下面就简单的讨论下这几种模式的差异:1。 单进程,单线程模式在accept之后,就开始在这一个连接连接上的数据收接收,收到之后处理,发送

2012-01-27 22:41:03 486

转载 怎样写简历

转至:http://blog.csdn.net/cheny_com/article/details/6644293因为早年跳槽无数,所以积累了不少“技巧”,逐渐变成写简历的“专家”,最长的时候简历到了12页,所以现在练就一手写长篇博客的功夫……后来逐渐地负责部门和公司招聘工作,看简历比写简历次数多了,开始发现原来一些所谓技巧实在是无用,而另外一些有用的却没用过。本篇会总结一下这些得失,

2012-01-27 22:25:51 559

原创 网络编程学习

1) 64-bit系统的地址空间足够大,不会出现没有足够的连续空间这种情况,不用担心内存碎片问题,再说服务器不是7*24运行的。Linux Kernel也大量用到了动态内存分配。既然操作系统内核都不怕动态分配内存造成碎片,应用程序为什么要害怕?2)现在的内存分配器(malloc及其第三方实现)今非昔比,除了memcached这种纯以内存为卖点的程序需要自己设计分配器之外,其他网络程序大可使用系

2012-01-27 17:18:14 415

原创 sed 使用

1)-n  /模式/p - 印出所有匹配“模式”的行 (sed -n '/wan/p' info,跟awk很类似 command + [options] + ‘ 。。。’ )2)/模式/d - 删除所有匹配“模式”的行3)s - 替换字符串s/模式/替换文字/ - 将匹配“模式”的行转换成“替换文字”s命令预设只替换每行匹配的第一串文字,也就是说,若每行

2012-01-26 22:35:21 405

转载 Awk和Sed的基本使用

出处: http://kumu1988.blog.51cto.com/4075018/759778Awk和Sed的基本使用可以用大至相同的方式调用sed 和awk 。命令行讲法是:command [options] script filename几乎和所有的unlx程序一样,sed和awk都可以从标准输入中取得输入并将输出发送到标准输出。如果指定文件名filenam

2012-01-25 17:51:54 569

转载 linux at

http://liubin.blog.51cto.com/282313/151067at 21:42 01/17/2012>reboot按键ctrl+d 结束atq 查看队列atrm 删除Can't open /var/run/atd.pid to signal atd. No atd running?./service atd start

2012-01-19 16:28:27 667

转载 浅谈多进程多线程的选择

关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。  经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际情况来判断,哪个更加合适就是

2012-01-14 00:12:51 554

转载 Linux环境进程间通信(五): 共享内存

转至:http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html简介:系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。系统V则是通过映射特殊文件系统shm中

2011-12-24 15:56:28 1426

转载 Linux进程间通信源码剖析,共享内存(shmget函数详解)

转至:http://blog.csdn.net/lanmanck/article/details/6092995shmgetint shmget(key_t key, size_t size, int flag);key: 标识符的规则size:共享存储段的字节数flag:读写的权限返回值:成功返回共享存储的id,失败返回-1key_t key-------

2011-12-24 15:55:23 17951

原创 服务器操作脚本

#!/bin/shtarget_port="......."cur_usr=`whoami`#4399 3 #91wan 3 IP_LIST="113........61.......113......"file_name=""server_count=0OPR_SCP="false"OPR_STOP="false"OPR_RESTA

2011-12-20 21:51:39 601

原创 软件构建中的设计

1)关键的设计概念软件的首要技术使命:管理复杂度。    在软件的架构层次上,可以通过把整个系统分解为多个系统来降低问题的复杂度。子系统间的相互依赖越少,你就越容易在同一时间里专注问题的一个小部分。精心设计的对象关系使关注相互分离,从而使你能在每个时刻只专注于一件事情。    保存子程序的短小精悍也能帮助你减少思考的负担。在最高抽象层次上工作,也能减少人的脑力劳动。理想的设计设计特

2011-12-18 16:22:46 435

原创 玩家的管理

玩家的管理1) 所有的玩家连接对象从player对象池g_pPlayerPool中分配2) 每个连接上的玩家分配给一个player对象class Player{public :    Player( BOOL bIsServer=FALSE ) ;    virtual ~Player( ) ;  ...................  virtual B

2011-12-16 15:21:53 639

原创 gameserver 线程

1) 主线程 while( IsActive() ) 不停的循环着。   1 读取某些配置文件,达到"热更新"的效果   2 全局管理器的心跳,比如副本管理器等2) 场景线程组 每一个地图场景一个线程,同一个类型的副本也是一个线程3) 连接线程 负责接受客户端的连接,成功之后把连接给相应的场景线程 4) 数据库线程组 还有另外辅助两个线程5) server线程 负责ga

2011-12-16 11:30:23 691

原创 协议包

1)包组成: 包大小(包头加上内容) + 包ID + 校验号 + 具体内容2)从应用程序缓存区读取的过程:根据包ID对包头的包大小字段进行校验,除了没接收完的continue之外,其他断开连接   读取包头 -》  校验包ID -》  包大小是否超过最大值(这种包所能达到的最大值) -》判断是否接收完 -》如果是定长的包,判断包的确切长度3)校验完,把包从缓冲区里读取出来ps:

2011-12-14 16:02:46 572

原创 linux screen 的使用

有时更新服务器时要执行一些操作数据库的脚本,但是家里网络有时不稳定,如果脚本还没执行完掉线了那就悲剧了。这时screen就可以帮上忙了。先记一些简单的,顶着用就行了,复杂的需要时再看。script /dev/null1)在执行脚本之前先执行 screen 命令,然后执行脚本2)如果这时想做其他事,那么执行 ctrl+a+d,退出screen,脚本在后台继续执行着(这是掉

2011-12-13 17:53:16 482

转载 linux下damon的实现

参考http://zxuhong.blog.51cto.com/368977/99283/注:Linux下可以直接调用damon函数来实现daemon进程,没必要重新实现,理解其原理即可。在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下int daemon (int __nochdir, int __noclose);如果__noc

2011-12-13 16:43:05 3333

原创 数据库线程操作过程

数据库线程管理:1) 根据配置文件启动相应个数的线程2) 调用管理器 SendThreadPacket 把数据库操作包发送到没在处理包的数据库线程3) 如果所有的线程都忙着,包放在管理器的cache里(包缓存在管理器,不是线程)4) 在每次心跳,到cache拿包发送到空闲的DB线程5) DB线程包处理时,从管理器拿相应线程的数据库句柄,使用上一篇的数据操作类实现数据库各种操

2011-12-12 20:02:13 519

原创 底层数据库

1) 底层基本的数据库操作类class DBOpBase{    public:        DBOpBase(Connection* pConnection)        {           ...................        }        ~DBOpBase()        {           ..........

2011-12-12 15:59:25 667

转载 C++中的INL

转至:http://www.cnblogs.com/tekkaman/archive/2011/04/20/2022031.htmlinl 文件是内联函数的源文件。内联函数通常在c++头文件中实现,但有的时候内联函数较多或者出于一些别的考虑(使头文件看起来更简洁等),往往会将这部分具体定义的代码添加到INL文件中,然后在该头文件的末尾将其用#include引入。由此也可以看到inl文件

2011-12-12 14:22:46 626

原创 对象池的使用

1)一个模板类的对象池,templateclass ObjPool{public:    ObjPool(BOOL bThreadSafe=TRUE)    {    }    ~ObjPool( VOID )    {          }    BOOL Init( INT nMaxCount = 10 )    {

2011-12-11 22:19:51 516

原创 ulimit

Provides control over the resources available to the shell and processes    it creates, on systems that allow such control.help ulimit ,我们可以看到这个解释。 用ulimit 命令对core文件,stack大小等的设置,只能是对当前shell和它创

2011-12-08 10:12:36 661

转载 shell中的wait

cat test1 | uniq > newtest1 &cat test2 | uniq > newtest2 &waitdiff newtest1 newtest2为了比较newtest1和newtest2的不同,必须先让以上的两个cat命令成功并执行完成并生成newtest1和newtest2,否则diff的执行将错误。。。而wait就是保证以上命令执行完成之后才执行di

2011-12-06 23:32:38 21247

空空如也

空空如也

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

TA关注的人

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