- 博客(59)
- 资源 (13)
- 收藏
- 关注
原创 CentOS Linux快速搭建SVN服务器
安装步骤如下:1、yum install subversion2、输入rpm -ql subversion查看安装位置,如下图:可以看到 svn在bin目录下生成了几个二进制文件。再输入/usr/bin/svnversion --version 就可以查看svn的版本,这样就说明svn安装成功,如下图:3、创建svn版本库目录 mkdir -p /var/svn/svnrepos4、创建版本库s...
2018-06-23 17:16:03 225
原创 一款经典的服务器架构设计
本人自15年下半年起从事某知名IP游戏的后端研发工作,于16年中这款架构承载着我们的产品得以上线,截至现在整个后台服务的主要框架如下图所示。我们的产品是横板格斗类动作游戏,目前持续稳定盈利中。写下此文,别无它意,仅作记录耳。 服务器类型主要业务备注SuperServerTCP服务负责所有world服的数据同步 WorldServerTCP服务负责world下全局数据同步,负责跨服匹配业务 Game...
2018-05-06 14:55:25 4843
原创 valgrind callgrind性能分析
1.请自行安装valgrind工具2.使用工具运行你的应用程序 valgrind --tool=callgrind ./sgzj-socialserver3.运行结束后,程序当前目录生成了一个文件callgrind.out.582374.python gprof2dot.py -f callgrind -n20 -s callgrind.out.58237 > valgri
2017-09-21 14:43:23 1264
转载 Linux无密码传输文件
在Linux环境下,两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认。不过通过建立信任关系,可以实现不输入密码。这里假设A的IP:192.168.10.1B的IP:192.168.10.2需要从A免密码输入复制文件至B。1. 在主机A上执行如下命令来生成配对密钥: ssh-keyge
2016-10-31 09:30:12 477
原创 如何统计一个新玩家在60天内的登录情况----std::bitset
业务需求:需要知道一个新建的账号在60天内登录的情况。机智的程序猿们都会想到用stl的各种关联容器去记录而后分析。经过仔细考量,本猿想到另外一种办法可以简单的实现该需求,并且可以使数据存储尽可能小。废话不多少,上代码:void Player::updateLoginStatistics(){ time_t now = Timestamp::now();
2016-02-16 13:57:12 530
原创 我用ab给web服务器做压力测试
目标服务使用POST接收数据。首先POST参数包括:game,type,platform新建一个文件vi /tmp/post.dat输入:game=1&type=1$platform=xy_ios保存文件.[root@iZ11gwfi6i5Z bin]#./ab -n 10000 -c 1000 -p /tmp/post.dat -T 'application/
2016-02-03 14:05:54 2097
原创 crotab 常用写法摘记
由于项目需要定时对业务数据库进行备份我便写了一个备份脚本,那么谁来定时做呢 根据多年的项目经验,首选 crontab每天的23:10执行以下脚本【1】或者【2】【1】10 23 * * * /opt/www/platform/bin/backup_platformdb.sh【2】10 23 * * * /opt/www/platform/bin/backup_pla
2016-01-30 13:52:06 971
原创 如何在堆栈被破坏的情况下解决宕机问题
宕机不用怕,原来这样哒!通常在生产环境下如果遇到宕机,我们的做法很简单gdb调试core文件,可以看到程序的堆栈信息,就可以定位问题,解决问题。但是在某些情况下,堆栈信息由于某些原因被损坏了,bt打出来显示的全是??????那么如果想找到问题那就难办了。不过今天我们介绍一种,方法使用GCC内建函数__builtin_return_address(level) le
2016-01-08 13:42:46 2253
原创 依赖于数据库的web网站优化
在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,典型的处理过程是:连接数据库->准备SQL查询->发送查询到数据库->取得数据库返回结果->关闭数据库连接。很明显,当数据库的数据量持续增大,网站或者应用的性能会大幅降低。我们列出三种做法的站1.无任何缓存,直接从数据库查询2.使用文件进行缓存,按照规则去更新文件缓存3.使用re
2016-01-02 13:59:21 425
原创 unity 使用www ios9系统出错
http://southpeak.github.io/blog/2015/09/14/app-transport-security-ats/我们的产品在发布时,发现ios9的手机无法发出http请求到服务器(使用的unity的www方式)最后查出来原因如上链接设置App Transport Security(ATS)后 重新发布 ios版本,问题解决了!!!
2015-12-07 15:42:02 2862 4
原创 如何知道我在一堆数据中排第几std::partition
业务中遇到一个问题,有一堆数据,我需要知道我这个数据在那一堆数据中排第几。一般做法就是先把所有已知数据排序,再遍历找到我,那么就知道我是第几了。这么做好吗?回答是:好。那么请问是最好吗?不是最好。std::sort 复杂度std::partition 复杂度 ,O(n) ,n 为 last - firststd::distance 复杂度想起了一个叫做std::
2015-12-05 11:06:41 760
原创 linux磁盘满了如何清理
首先用root用户,登录 740 cd / 741 ls 742 du -s -s ./* 743 df -h 744 cd /usr/ 745 du -s -s ./* 746 cd /usr/share/ 747 du -s -s ./* 748 cd /usr/share/nginx/ 749 du -s -s
2015-11-19 21:48:09 6766
原创 解析固定格式的文件数据 php脚本
#!/usr/bin/phpfunction printUseage() { die("usage: ./txt2json.php [file_in] [file_out] [id:0,(ALL USER)] [search_type:1(ITEM),2(RES),3(ITEMOVERFLOW)] [res_id:0(ALL id)]\n");}function che
2015-11-18 21:19:28 436
原创 我自己使用过的linux服务器监控工具
1.monitorix这是一款开源免费的轻量级 工具,需要perl的支持。安装centos yum install monitorix安装完毕 service start monitorix在浏览器中输入http://192.168.0.221:8080/monitorix此处的IP地址是被监控机的ip地址2.monit和mmonit
2015-11-09 11:24:41 4188
原创 mysql 数据库实际应用中的大数据处理
某年某月,我们我接到公司的任务,要搭建一个游戏平台系统,管理旗下所有游戏的玩家账户数据。起初拿到任务后,想了想。那么这个系统就是一个注册,一个登陆就ok了。于是有了下面的数据库设计。tbl_account. 表【主键ID,用户名,密码,注册时间,……】业务逻辑开发完成,OK。内网测试没问题,业务流程正常,可以提供服务了。此时数据是A数量级条。过了几天自己在该表插入B数量级条
2015-10-31 11:10:20 2354
转载 mysqldump 的用法
命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名; 1、导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為db.sql) mysqldump -uroot -pdbpasswd -d dbname >db.sql; 2、导出數據库為dbname某张表(test)结构
2015-10-16 10:16:58 290
原创 proto如何做到节省空间。
::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];message Test{optional int32 aa = 1;optional int32 bb = 2;}可以看出上面messgae有两个optional字段当生成对应的代码的时候proto帮我们同时生成了一个 ::google::proto
2015-09-27 10:53:01 742
原创 mmorpg游戏设计之2D游戏地图的九宫格子
做游戏这么久,很少花时间来写一写东西,惭愧之至。今天是星期八,天气不错,所以来写上几笔######################################### ## ## 1 # 2 #3 ## # # ##########################################
2015-09-14 22:08:47 3618
原创 php添加mysql扩展
536 cd addtiontools/ 537 ls 538 cd php-5.3.16 539 ls 540 cd ext/mysql 541 ls 542 /usr/local/php/bin/phpize 543 ./configure --with-php-config=/usr/local/php/bin/php-config
2015-09-12 21:40:24 1285
原创 php添加socket的扩展
767 cd addtiontools/ 768 ls 769 cd php-5.3.16/ext/sockets/ 770 ls 771 /usr/local/php/bin/phpize 772 ./configure --prefix=/usr/local/php --with-php-config=/usr/local/php/bin/php-co
2015-09-12 21:38:56 8007
原创 linux给用户加个操作某个目录的权限
[root@iZ11gwfi6i5Z ~]# chown -R root:wangchong /usr/local/apache2/htdocs/[root@iZ11gwfi6i5Z ~]# chmod -R 775 /usr/local/apache2/htdocs/
2015-09-11 21:21:44 23610
转载 top里的load average怎么理解呢
top - 10:10:40 up 18 days, 14:25, 1 user, load average: 0.00, 0.00, 0.00Tasks: 106 total, 1 running, 105 sleeping, 0 stopped, 0 zombieCpu(s): 3.5%us, 2.9%sy, 0.0%ni, 93.6%id, 0.0%wa,
2015-09-09 10:17:09 1061
转载 【Linux开发】GCC 4.8及以上支持内存非法访问检查
【Linux开发】GCC 4.8及以上支持内存非法访问检查2015-2-27阅读162 评论0gcc4.8及以上版本支持地址越界,野指针检查,只需要在编译时使用-fsanitize=address选项即可,当运行程序时如果访问非本程序申请的地址就会报错。root@localhost:/home/ngos/practice> vi nullpoint.c 1 #
2015-09-07 12:46:29 6949
原创 __attribute__((constructor)) 高版本gcc不执行
__attribute__((constructor)) // 在main函数被调用之前调用__attribute__((destructor)) // 在main函数被调用之后调 static void func() __attribute__ ((constructor));void func(){ do();} 在项目中
2015-08-27 11:16:36 2752
转载 mysql到底用哪一款存储引擎呢
MySQL数据库MyISAM和InnoDB存储引擎的比较MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键。每张MyISAM表存放在三个文件中:frm 文件存放表格定义;数据文件是MYD (MYData
2015-08-25 22:03:07 1921
原创 gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)升级gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
../base/zAStar.h:167: error: declaration of 'const int step'../base/zAStar.h:16: error: shadows template parm 'int step'原代码:virtual bool move(const int direct,const int step = step) = 0;修改后
2015-08-22 10:53:33 5502
原创 /usr/bin/ld: cannot find -lmysqlclient_r
编译你的工程代码之前之前,先处理一下mysql的库,默认查找libmysqlclient_r.so,可是mysql默认为libmysqlclient.so,内容完全一样,做个链接即可请在root下执行# cd /usr/local/mysql/lib/mysql/ (库所在目录)# ln -s libmysqlclient.so.15.0.0 libmysqlcli
2015-08-22 10:38:20 5664
转载 应用 Valgrind 发现 Linux 程序的内存问题
应用 Valgrind 发现 Linux 程序的内存问题如何定位应用程序开发中的内存问题,一直是 inux 应用程序开发中的瓶颈所在。有一款非常优秀的 linux 下开源的内存问题检测工具:valgrind,能够极大的帮助你解决上述问题。掌握 valgrind 的使用以及工作原理,能够有效地定位进而避免应用开发中的内存问题。Valgr
2015-08-19 13:55:30 425
转载 map unordered_map hash_map比一比
map hash_map unordered_map 性能测试 2012-01-08 22:27:29分类: C/C++by zieckey测试条件:gcc version 4.2.1 20070719 [FreeBSD]FreeBSD 7.2-RELEASE #0: Fri May 1 07:18:07 UTC 2009
2015-08-17 15:34:40 406
原创 技能编辑器
之前做过一款类炉石的手机游戏由于炉石技能比较复杂对于技能的设计采用"0-1-0-4-0-0-0:2-100-0-0-0-0;."格式进行配置。":"之前的决定目标范围":"之后的决定技能效果此图是编辑器的界面,比较随意,不过可用性还是蛮好的。红圈处都是决定该技能的参数设定选择或填写相应的参数,便可以生成对应的技能效果配置。点击生成就会有 舒服的配置了哦
2015-08-13 21:06:58 1139
原创 protobuf的数据类型和C++数据类型
protobuf支持的数据类型不是很丰富protobuf属于轻量级的,因此不能支持太多的数据类型,下面是protobuf支持的基本类型列表,一般都能满足需求,不过在选择方案之前,还是先看看是否都能支持,以免前功尽弃。同样该表也值得收藏,作为我们在定义类型时做参考。.proto typec++notesdoubled
2015-08-13 16:33:38 11188
转载 为什么求模运算要用素数(质数)—— 哈希表设计
为什么求模运算要用素数(质数)—— 哈希表设计 By admin | 2013 年 7 月 25 日 | 杂记, 编程技术在设计用除法来散射的哈希表时,我们都会用数值模哈希表大小,得到的余数来作为ID存入哈希表对应格子中。所有文章都表明要用一个较大的素数来作为哈希表的大小,也就是要模一个较大的素数。但为什么就是要用素数呢?简单分析一下可以看出玄机。先看看如果用一个
2015-08-12 11:52:20 15441 6
转载 改天记得把自己那个代码中的改成这个boost::lexical_cast
c++数据类型万能转换器boost::lexical_cast .boost::lexical_cast为数值之间的转换(conversion)提供了一揽子方案,比如:将一个字符串"123"转换成整数123,代码如下:string s = "123"; int a = lexical_castint>(s); 这种方法非常简单,笔者强烈建议大家忘掉std诸多的函数,直
2015-08-12 10:38:40 395
转载 安全删除STL容器元素
STL容器迭代过程中删除元素技巧(转)1.连续内存序列容器(vector,string,deque)序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素。vector c;for(vector::iterator it = c.begin(); it != c.end();){if(need_delete())
2015-08-11 21:57:56 612
转载 我想在linux下用json
jsoncpp在linux下的配置JSON 官方的解释为:JSON 是一种轻量级的数据传输格式。关于 JSON 更具体的信息,可参见 JSON 官网:http://www.json.org。jsoncpp 是比较出名的 C++ JSON 解析库。在 JSON 官网也是首推的。下载地址为:http://sourceforge.net/projects/jsoncpp(版本为j
2015-08-10 15:27:54 737
原创 C++ STL的底层数据结构都是啥
C++ STL 的实现:1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限
2015-08-09 16:56:35 805
转载 一致性hash算法 C++语言实现
一致性hash算法 C++语言实现 在《一致性hash算法(consistent hashing)》一文中已经介绍了一致性hash的基本原理,本文将会对其具体实现细节进行描述,并用c++语言对一致性hash进行了简单的实现。 一致性hash算法实现有两个关键问题需要解决,一个是用于结点存储和查找的数据结构的选择,另一个是结点hash算法的选择。 首
2015-08-07 18:19:27 1947
原创 vector内存怎么释放
VECTOR的工作原理是系统预先分配一块CAPACITY大小的空间,当插入的数据超过这个空间的时候,这块空间会让某种方式扩展,但是你删除数据的时候,它却不会缩小。vector为了防止大量分配连续内存的开销,保持一块默认的尺寸的内存,clear只是清数据了未清内存,因为vector的capacity容量未变化,系统维护一个的默认值有什么方法可以释放掉vector中占用的全部内存呢
2015-08-07 10:43:46 2107
原创 简洁的发包--网络游戏
单个协议数据(不含头)大小超过32字节,进行zlib压缩。单个协议发送数据大小不超过64K,如果超过了,在逻辑层把协议中数据,手动拆分多次发送。
2015-08-05 16:31:59 923
转载 在vector中,怎样删除某个指定值的元素
【在vector中,怎样删除某个指定值的元素】Vectors provide no operation to remove elements directly that have a certain value. You must use an algorithm to do this.一.删除所有满足条件的元素For example, the following statemen
2015-04-25 11:41:04 11190
MyQQ c#winform局域网 聊天
2011-09-26
c# 画统计图表 的自定义控件dll
2011-06-14
c# 经典案例+不错非常不错 值得学习
2011-04-19
c#GDI+案例全解 gdi+开发技术解析 实例
2011-04-14
自定义控件 GDI+ 时钟 clockcontrol.dll
2011-04-11
自定义控件 时钟 控件 windows form c#
2011-04-10
算法课程设计 背包问题 0/1背包问题 实现
2010-12-25
银行家算法 课程设计 操作系统 c c++
2010-12-24
Effective C++.2nd Edition.Lostmouse.[zh-tw].chm
2010-11-20
sqlserver问题解决方案
2010-11-20
[C程序设计语言].The.C.Programming.Language.chm
2010-10-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人