摘要: 如果服务器A要通过客户端转发一个消息给服务器B,来发奖励,这时候就要考虑安全性问题。首先服务器A发的消息需带有MD5码,把关键的数据放到生成MD5的字符串里,并且加入一个约定的KEY。其中时间currTime用处是用来做一个消息序列号,防止客户端重复发包请求发奖励,服务器B在收到消息后会对比该玩家的currTime与上次的是否一样,一样则过滤掉。 阅读全文
posted @ 2012-11-28 13:47 vanishfan 阅读(201) 评论(0) 推荐(0)
摘要: 如果主游戏重启游戏乐园会有可能无法进入,表现为服务端socket read返回0,代表客户端主动关闭连接。当时客户端想要发HALLCHECK消息进行登录大厅验证,可是没有发出来,后来查出来是因为客户端发该消息的一些东西是从主游戏上获取的,需要通过HOTEL进程转发校验,而HOTEL进行可能在主游戏重启的时候没有起来,所以会这样。以后遇到此类问题,顺着发生问题的点一路寻上去,会快一点。 阅读全文
posted @ 2012-11-26 16:14 vanishfan 阅读(273) 评论(0) 推荐(0)
摘要: MD5求助编辑百科名片Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)目录发展历史MD5应用算法原理和实现MD5算法的优势弱点展开发展历史MD5应用算法原理和实现MD5算法的优势弱点展开编辑本段发展历史 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保. 阅读全文
posted @ 2012-11-21 16:54 vanishfan 阅读(834) 评论(0) 推荐(0)
摘要: 问题:ljyx_sgserver_new进程是个比较小型的多线程进程,业务处理很简单,可是缺占了1.4G的内存,属于不正常现象,所以想去优化首先对立面19个线程的数量进行修改,发现修改后占用内存也相应改变,再对线程内东西进行一步步注释掉进行调试,发现是初始化socket方法里面出现的问题再进一步锁定,最后发现是gethostbyname域名解析函数所导致的,换了另外个域名解析函数gethostbyname_r 还是不行处理方法:考虑到这个函数只被该进程调用,且IP都是直接数字IP 不涉及到域名,所以不使用域名解析函数,直接将IP转换为unsigned int型问题解决,最后只占用了202MB, 阅读全文
posted @ 2012-11-17 13:13 vanishfan 阅读(669) 评论(0) 推荐(0)
摘要: %mem 内存使用率virt 是虚拟内存res是常驻内存shr是共享内存top命令下按f键可以看到详细说明* A: PID= Process Id* E: USER= User Name* H: PR= Priority* I: NI= Nice value* O: VIRT= Virtual Image (kb)* Q: RES= Resident size (kb)* T: SHR= Shared Mem size (kb)* W: S= Process Status* K: %CPU= CPU usage* N: %MEM= Memory usage (RES)* M: TIME+= C 阅读全文
posted @ 2012-11-16 16:50 vanishfan 阅读(21676) 评论(0) 推荐(1)
摘要: 可以通过设置GREP_OPTIONS 为'--color=auto'来自动为匹配部分着色也可以通过设置GREP_COLOR的值来指定颜色下面是部分颜色的值30 black31 red32 green33 yellow34 blue35 purple36 cyan37 white命令如:export GREP_OPTIONS='--color=auto' GREP_COLOR='31' 阅读全文
posted @ 2012-11-16 15:32 vanishfan 阅读(1735) 评论(0) 推荐(0)
摘要: Top用于查看Linux系统下进程信息,有时候需要选择显示那些列,以及按照某一列进行排序。查询整理如下:选择显示列:执行top命令后,按 f 键,再按某一列的代表字母,即可选中或取消显示;列显示位置调整:执行top命令后,按 o 键,选择要调整位置的列(如K:CUP Usageage),按动一下大写K则显示位置往上调整,按动一下小写K则显示位置往下调整。列排序:执行top命令后,按 shift + f(小写),进入选择排序列页面,再按要排序的列的代表字母即可; 阅读全文
posted @ 2012-11-16 15:24 vanishfan 阅读(19243) 评论(2) 推荐(0)
摘要: 最近在对项目进行性能优化,由于在多核平台上,所以了解了些进程、线程绑定cpu核的问题,在这里将所学记录一下。 不管是线程还是进程,都是通过设置亲和性(affinity)来达到目的。对于进程的情况,一般是使用sched_setaffinity这个函数来实现,网上讲的也比较多,这里主要讲一下线程的情况。 与进程的情况相似,线程亲和性的设置和获取主要通过下面两个函数来实现: int pthread_setaffinity_np(pthread_t thread, size_t cpusetsize,const cpu_set_t *cpuset); int pthread_getaffinity_n 阅读全文
posted @ 2012-11-16 15:17 vanishfan 阅读(19352) 评论(0) 推荐(3)
摘要: 你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了www.taobao.com。这时你的浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址。不过首先你会发现,你在不同的地区或者不同的网络(电信、联通、移动)的情况下,转换后的IP地址很可能是 不一样的,这首先涉及到负载均衡的第一步,通过DNS解析域名时将你的访问分配到不同的入口,同时尽可能保证你所访问的入口是所有入口中可能较快的一个 (这和后文的CDN不一样)。 你通过这个入口成功的访问了www.taobao.com的实际的入口IP地址。这时你产生了一个PV,即Page View,页面访问。每日每个网站的总PV量是. 阅读全文
posted @ 2012-11-15 12:11 vanishfan 阅读(224) 评论(0) 推荐(0)
摘要: 进 程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。一、Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区都是干什么的。1)代码段:代码段是用来存放可执行文件的操作指令,也就是说是它是可执行程序在内存中的镜像。代码段需要防止在运行时被非法修改,所以只准许读取操作,而不允许写入(修改)操作——它是不可写的。2)数据段:数据段 阅读全文
posted @ 2012-11-14 11:28 vanishfan 阅读(1420) 评论(0) 推荐(0)