c++编程
文章平均质量分 68
cleanfield
匍匐前进
展开
-
netlink学习
从inotify引出auditd,从auditd引出netlink,从netlink引出libnl和libmnl原创 2024-01-31 14:32:57 · 1249 阅读 · 0 评论 -
linux下程序占用内存只涨不降原因追查
linux下进程占用内存只增不减,如何定位问题,这里给出了一次追查过程原创 2022-12-14 15:42:38 · 4812 阅读 · 0 评论 -
没有core的程序异常退出追查过程
对于进程异常退出而没有产出core文件,我们该如何定位问题原创 2022-09-21 16:11:23 · 1214 阅读 · 0 评论 -
vs2019编译zlib全过程
vs2019编译zlib全过程下载 :https://www.zlib.net/zlib-1.2.11.tar.gz大致流程:1.编译zlibwapi.lib 静态库,最后添加配置,不然就会报match_init找不到的链接错误 lib /out:x86\ZlibDllDebug\zlibwapi.lib x86\ZlibDllDebug\zlibwapi.lib ..\..\masmx86\match686.obj2.加载到项目中,zlib.h...原创 2020-08-24 20:52:40 · 2428 阅读 · 0 评论 -
imagemagic实现gif图片的缩略图
std::list images; /Magick::readImages( &images, "animation.gif" ); Magick::Geometry geo; geo.width(70); geo.height(70); for_each( images.begin(), images.end(), Magick原创 2012-04-20 13:48:58 · 1392 阅读 · 0 评论 -
stl中关联容器直接卡死程序
程序直接卡死,不会core,此问题存在于所有map和set中,vector和list会直接core掉#include #include #include #include #include int main(){ std::set combine_op_set; std::cout combine_op_set.e原创 2013-09-24 12:30:25 · 1298 阅读 · 0 评论 -
从hiredis使用出core谈谈redis多线程的使用http://my.oschina.net/jungleliu0923/blog/202948
原文地址:http://my.oschina.net/jungleliu0923/blog/202948转载 2014-07-02 10:18:19 · 2453 阅读 · 0 评论 -
ubuntu下安装perf
sudo apt-get install linux-tools-commonubuntu下的相关介绍http://manpages.ubuntu.com/manpages/lucid/man1/perf.1.html具体使用见牛人贴:http://www.lenky.info/archives/2012/10/2007原创 2014-12-19 18:11:49 · 11619 阅读 · 0 评论 -
redis的pipeline机制解析与注意事项
redis的pipeline机制 主要的两个函数:1.redisvAppendCommand将命令拷贝到context的obuf里2.redisGetReply:1)从reply队列里面返回最前面的reply,如果队列为空,继续后面的操作2)如果发现obuf中有数据没有发送,那么发送cmd3)等待回包(server会把cmd中所有的处理做完,然后回包,appand过几次原创 2014-07-29 18:30:52 · 15955 阅读 · 1 评论 -
imagemagic实现缩放与裁剪
int process(Magick::Image & img){ Magick::Geometry geo; geo.width(144); geo.height(144); img.resize(geo); //缩放 geo.width(114); geo.h原创 2012-04-18 12:18:14 · 1223 阅读 · 0 评论 -
imagemagic实现gif制作
std::list images; for(size_t i = 0; i { Magick::Image img(vec_files[i]); img.animationDelay(30 * (i+1)); images.push_back(img); } Magick::writeI原创 2012-04-18 12:07:58 · 1685 阅读 · 0 评论 -
redis有序集合实现撒花逻辑
产品需求:1.对一个feed的撒花操作每人只能一次2.撒花可以撤销3.撒花结果需要展示,按照时间排序,最近撒花记录放在最先4.要显示撒花数量,是否撒过花之前这种逻辑用mc实现,真是麻烦,无法满足既有时间轴排序又要快速查找的需求,现在新产品中直接采用redis,而具备这两种特性的数据结构就是有序集合下面具体来说一下用sort set怎样实现撒花的各种需求:原创 2012-04-01 14:58:05 · 1836 阅读 · 0 评论 -
追踪mysql阻塞的问题
这两天总是会出现fcgi程序挂住,不能继续处理的问题,通过日志发现是在mysql的execute接口出问题,strace进程看到 strace -p 3497Process 3497 attached - interrupt to quitread(5, 而又通过lsof -p pidxxx 6155 xxx 5u IPv4 1631原创 2012-02-16 19:00:13 · 4884 阅读 · 0 评论 -
sphinx kill-list设置
官方文档:*******************************************************************************************************************11.1.16. sql_query_killlist:Kill-list查询用于得到Kill-list的查询。可选选项,默认为空(不设定查询)原创 2011-11-15 17:46:24 · 3207 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
原文地址:http://www.cnblogs.com/leoo2sk/archive/2011/07/10/mysql-index.html作者:张洋MySQL索引背后的数据结构及算法原理2011-07-10 23:40 by T2噬菌体, 3332转载 2011-08-30 15:29:52 · 1129 阅读 · 0 评论 -
fcgi作为客户端需要注意的几点
fcgi作为中间层,需要与后端server通信进行数据处理,这里需要注意一下几点:1.要做好超时处理,fcgi跟cgi不同,往往只有几个固定数量的进程,与server类似,因为如果一个fcgi进程挂住会导致整个fcgi逻辑层的处理能力下降N分之一(N为fcgi进程数)。这里的原创 2011-08-18 23:42:52 · 2061 阅读 · 0 评论 -
写数据到文件,并同步写到磁盘
参照redis同步写文件源码,理解同步写数据到磁盘的流程原创 2014-11-20 13:16:41 · 3854 阅读 · 0 评论 -
硬盘写满后redis的处理机制
磁盘写满后redis的处理机制:只读不写原创 2014-11-05 12:16:36 · 11540 阅读 · 0 评论 -
一个server启两个实例引发的问题
问题描述:在gateway出现同一个serverid对应的两个tcp连接,导致测试流程时段时续问题定位:重启gateway,发现某个serverid对应有两个连接。1)通过日志得到两个连接对应的fd2)lsof -p gateway进程查看两个fd对应的tcp连接对端ip和port3)在对端机器上查看ip和portt对应的进程,netstat -anp查找两个端口,得带两个端口对应原创 2016-08-24 19:26:49 · 551 阅读 · 0 评论 -
游戏服务器优化实践
定位问题:1.添加日志,查看cpu状态,根据协议分布情况,测到结论redis操作比较频繁,导致消息堆积比较严重(半小时1300万消息处理)优化策略:控制client的协议调用频率,定时将redis操作累积定时统一提交2.优化redis之后,协议处理量上来了,cpu也飙起来,半小时2500万消息处理量,处理能力提高一倍,但是仍有消息堆积,发现95%的消息都是同一个消息优化策略:gam原创 2016-07-28 12:05:52 · 1110 阅读 · 0 评论 -
关于O_APPEND模式write的原子性
原文地址:http://blog.csdn.net/dog250/article/details/29185821上上周的事情了,端午小长假将近,还是按往常一样,最后一天一定要搞一个“课题”,场面不大,一天就能搞定的东西,如果说系统学习vim或者Emacs之类的,那就算了...还好,问题呼之即来,那就是write系统调用是不是原子的,答案很显然,不是!但大师说带有APPEND标志的wr转载 2016-06-16 09:44:42 · 1156 阅读 · 0 评论 -
探讨php中error_log函数输出内容的原子性问题
php的error_log真的可以输出任意日志而保证完整性吗?针对这个问题,深入探讨论证,你会发现很多认识上的误区原创 2015-08-27 18:16:43 · 1968 阅读 · 0 评论 -
svn通过hook对提交行为做检查
目标:防止提交的文件名有空格同样的通过awk来处理主要逻辑,需要编辑pre-commit.bat::////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////原创 2016-06-03 12:46:16 · 3690 阅读 · 0 评论 -
游戏准备上线运营几个注意点
大概记录一下:1.丰富gm命令,对于关键数据可以在线实时修正2.上线时确认版本,发布任务尽量做成标准化流程,不要局限于只有开发人员上机器部署3.测试,预发布与线上数据要分离4.版本更新时要保证玩家数据的一致性,通常采用blob存储玩家数据可能会出现更新导致玩家数据整体错乱5.log要尽量多尽量细,尽量每个关键逻辑(包括协议处理函数)记录起始和结束时间,后续可原创 2016-04-14 10:06:33 · 1522 阅读 · 0 评论 -
通过curl的并发机制实现php批量网络请求
应用场景:有一批玩家的ip地址,需要转换为国家信息应用思路:简单通过网站的公共服务接口查询ip对应的国家信息,但是服务没有批量接口解决方案:既然对方没有批量接口,那只能本地批量调用对方的接口,简单的方法,通过curl的批处理机制实现代码如下:<?php$ip_list_str = file_get_contents("./ip_list_tmp.txt");$ip_list =原创 2015-09-09 17:45:36 · 8505 阅读 · 0 评论 -
apache fcgi机制核心实现代码
/* * This handles fcgi:(dest) URLs */static int proxy_fcgi_handler(request_rec *r, proxy_worker *worker, proxy_server_conf *conf, char *u原创 2015-08-31 18:48:42 · 1209 阅读 · 0 评论 -
解决vs打不了断点的小技巧
有时会遇到vs调试模式下打不了端点,这里说一个小技巧:全选整个cpp内容->edit->advanced->format selection原创 2015-06-11 11:49:29 · 3233 阅读 · 1 评论 -
阻塞socket上read/write出现errno为EAGAIN的原因解密
对EAGAIN的一次重新认识,blocking的socket读写也会有EAGAIN原创 2014-12-01 18:14:30 · 33349 阅读 · 8 评论 -
Araxis Merge v6.5中文乱码问题的解决
先说一下遇到的问题:svn代码是在linux开发机上存放,保存格式是utf8,通过samba在windows下编辑,在svn合并版本时需要比较两个目录,但是通过Araxis Merge v6.5打开代码文件后居然注释是乱码,而且在 “文件” ->"字符编码"中选择任意的ut原创 2011-08-10 21:18:17 · 6058 阅读 · 0 评论 -
你需要知道的关于NoSQL数据库的10件事
源地址:http://www.dbthink.com/?p=630 你需要知道的关于NoSQL数据库的10件事By Guy Harrison , Translated By Jametong关系数据模型已经流行了几十年了,但是一种新型的数据库(即NoSQL)正在吸引各大企业的关注.下面是对其优势与劣势的一个简单总结.在过去的1/4世纪中,关系型数据库(RDBMS)一直是数据转载 2011-06-30 10:38:00 · 885 阅读 · 0 评论 -
fcgi/cgi 参数获取 get与post
void webparam::get_cgi_value(){int len = 0;if(get_request_method() == "POST")//post method{if(len = MAX_CONTENT_LENGTH)return;//errorcin >> m_content;}else//get method{if(NULL != getenv("QUERY_STRING"))m_content.assign(getenv("QUERY_STRING"));}//get cookie原创 2011-05-11 17:42:00 · 7810 阅读 · 0 评论 -
实现spawn-fcgi的守护监控功能
本spawn-fcgi在标准版本基础上实现了对子进程的守护和监控,当有子进程挂掉的时候会重新拉一个子进程,这样就解决了原有spawn-fcgi的一个弊端:即spawn-fcgi在启动了子进程后就直接退出了,这时候如果子进程都挂掉那么就无法提供服务, 作者berniewu原创 2011-05-10 18:11:00 · 12977 阅读 · 5 评论 -
const对象的const函数
<br /><br /><br />class TestConst<br />{<br />public:<br />TestConst(int iCount)<br />{<br />m_iCount = iCount;<br />}<br /> <br />int m_iCount;<br /> <br />int GetCount() { return m_iCount; }<br /> <br />int GetConstCount() const { return m_iCount; }<br /原创 2011-03-09 14:32:00 · 873 阅读 · 0 评论 -
string中find函数用法
通过find函数实现string切割void SplitString(std::string strInput, char cSpliter, std::vector& vecOutput){int begin = -1, end = 0;vecOutput.clear(); while(1){ end= strInput.find(cSpliter, ++begin); if( end == string::npos ) break; vecOutput.push_back( strInput.su原创 2011-03-09 13:43:00 · 2645 阅读 · 0 评论 -
set排序问题
<br />#include <set>#include <iostream>class ChildClient{public:int iCurCount;int iMaxCount;ChildClient(int iMax, int iCur){iMaxCount = iMax;iCurCount = iCur;}bool operator<(const ChildClient* pClient) const{return (iMaxCount - iCurCount) < (原创 2011-03-05 00:48:00 · 3258 阅读 · 0 评论 -
数组作为参数时,传入基类首地址和子类首地址的区别
<br />class A<br />{<br />public:<br /> A() {};<br /> ~A() {};<br /><br /> virtual void SetTest(){ printf("a/n");};<br /> int m_iFirst;<br />};<br /><br />class B :public A<br />{<br />public:<br /> B() {};<br /> ~B() {};<br /><br />原创 2011-03-05 00:19:00 · 878 阅读 · 0 评论 -
分隔字符串的函数
<br />void SplitString(std::string strInput, char cSpliter, std::vector<std::string>& vecOutput)<br /> {<br /> int begin = -1, end = 0;<br /><br /> vecOutput.clear(); <br /><br /> while(1)<br /> { <br /> en原创 2011-03-05 00:17:00 · 560 阅读 · 0 评论 -
通过汇编码理解switch语句的原理
<br />http://blog.chinaunix.net/u3/94078/showart.php?id=1888387 <br />当需要多次比较时,switch语句的效率比if-else if…… else语句(以后简称muti-if语句)的效率要高,这是我一直以来的理解,但是昨晚讨论到一个问题,这种“高效率”如何实现?今天早上又看到《更深入一点理解switch语句及c/c++对const的处理》和《透过IL看C# (1)switch语句》这两篇文章,前者(以后为[1])没有提及case语转载 2011-03-04 23:24:00 · 3710 阅读 · 1 评论 -
libmemcached用法
<br />#include <iostream><br />#include <string><br />#include <libmemcached/memcached.h>using namespace std;<br /> <br />int main(int argc,char *argv[])<br />{<br /> //connect server<br /> memcached_st *memc;<br /> memcached_return rc;<br />原创 2011-03-04 23:19:00 · 1610 阅读 · 0 评论 -
模板函数的嵌套调用
<br />template<class A, class B> void kkaka(A a, B b)<br />{<br /> a.kakaka<B>(b);<br />}在g++中,上面的声明会报错,原因在于a的kakaka函数被显式调用了,如果改为template<class A, class B> void kkaka(A a, B b)<br />{<br /> a.kakaka(b);<br />} 是可以正常运行,没有编译错误原创 2011-03-04 23:02:00 · 1306 阅读 · 0 评论