- 博客(53)
- 资源 (25)
- 收藏
- 关注
原创 c++如何自动生成变量名
最近在完善当前项目指针自动管理释放的问题,尽量避免代码里面任何一个退出的地方都要亲笔写一遍释放,以后谁不小心加了个return就变成内存泄露了,所以类似智能指针的做法来自动管理指针,释放资源。malloc指针的自动管理代码:class _AutoFree{void *pt;private:void operator=(const _AutoFree& _at){};publ
2015-11-09 17:59:02 2674
原创 chrome设置UA
不用插件,chrome本身就带打开页面按F12点击Hide drawer ,就是 ">三" 这个图标选择User Agent下拉选择UA,然后点击 spoof user agent DOWN。
2015-09-12 16:56:41 5293
原创 MFC的coredump文件以及调试
不要关闭系统弹出的“关闭程序”的对话框,保持现场用procexp_V15.40.0.0.4202571463.exe,找到正core的当前进程,右键 create dump -> Create Full Dump ...拷贝dmp文件到开发环境的exe目录下双击打开运行
2015-09-11 18:44:50 729
原创 搭建rabbitmq集群
网上有很多教程,可是步骤都缺的漏的,或者太笼统环境:Linux mqslave 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linuxgcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)ncurses-5.7.
2015-06-18 08:53:04 5806
原创 [细节扣扣]inline那些事
给个简单的例子:test1.h:void run();test1.c:inline void run(){ do sth. }test2.c:#include "test1.h"int main(){ run(); return 0;}分别用gcc 和 g++ 执行gcc test1.c test2.cg++ test1.c test2.c
2015-06-12 23:01:51 954
原创 win7环境下编译rabbitmq-c
这东东也蛮折腾,本来俺在Linux下干了几年了,现在回到win7,也是工作内容的需要啊,跨语言间选择队列服务器还是挺不错的。win7 64bit下载安装 cmake 3.2.3 visual studio 2008下载源码包 rabbitmq-c-0.6.0.tar.gz直接上图记得把ssh的勾去掉,如果你不想装并且安全性不要求的情况下 然后去到,打开 ra
2015-06-05 15:54:41 1649 1
原创 tcp短连接压爆
最近针对TIME_OUT状态进行进一步的研究,对于服务器上大量短连接导致的偶然异常问题,很多人第一想法就是先配置tcp_tw_recycle来快速解决问题,但我却不是很同意这么干,考虑到主动方TIME_OUT的2MSL时间,如果快速回收可能会导致偶然的新连接异常问题,这种问题会埋下伏笔而且可能以后更难查。测试程序比较简单,就是for循环无sleep的连接某服务器,在socket的TIME_OU
2015-05-30 17:56:55 148
原创 请别在代码里面hardcode
今天又遇到同事在对历史悠久的代码进行bug排查,结果看到了一些类似***>2的逻辑判断,当场也就懵了,完全不知道它代表啥业务情形!群里面几十个同事包括不少老员工都在,可是就不能给于明确的解答。当然针对这种情况,可以使用VCSLog和VCSAnnotate来对代码的log进行追溯,然后看下是哪个分支合并的,然后继续往前查,也许你找到了源头,并看到注释说是哪个bug或者哪个需求所以加了这段逻辑,但
2015-05-30 14:43:43 3646
原创 bool返回值的函数如果不return会咋样
bool try_ret_bool(int flag){ if (flag == 0) return true;}测试程序:try_ret_bool(0) 毫无疑问返回true,控制之内try_ret_bool(1) 返回?接下去各种试验:int val = is_existed(1) 发现返回的是22,究竟是啥原因呢?看看汇编吧, 0x0804964
2015-05-30 14:21:45 4210
原创 bool返回值的函数如果不return会咋样
bool try_ret_bool(int flag){ if (flag == 0) return true;}测试程序:try_ret_bool(0) 毫无疑问返回true,控制之内try_ret_bool(1) 返回?接下去各种试验:int val = is_existed(1) 发现返回的是22,究竟是啥原因呢?看看汇编吧, 0x0804964
2015-05-30 11:34:07 855
原创 symlink在ln的过程中究竟占用了多少耗时
今天看到群里的童鞋们在讨论ln命令的使用,天花乱坠说到了symlink,有同学用估算的口气说symlink耗时很低的,肯定ln总耗时是symlink的好几百倍,他猜中了吗?现在针对ln -s ~/install install来验证下strace -tt -T输出:14:08:20.190334 execve("/bin/ln", ["ln", "-s", "/home/linxp/ins
2015-01-14 14:43:31 1022
原创 gdb core 调试 - python调用c库
#include #include int foo(int a, int b) { printf("Your input %i and %i\n", a, b); fflush(stdout); abort(); return a + b; }
2014-06-22 11:27:04 2576
原创 演示coredump后出现?的情况
void run(){ int m = 2;}int main(){ int *m = new int; run(); return 0;}
2014-06-02 15:27:33 577
原创 gcc omit-frame 如何找到函数的第一个参数
void run(int n){ int m = n;}int main(){ run(1000); return 0; }08048374 : 8048374: 55 push %ebp 8048375: 89 e5 mov %esp,%ebp 804
2014-05-27 09:04:47 611
原创 memcache研究笔记 之 socket接入与工作线程分发Model
// 服务器端 struct event_base* main_base; static const char MESSAGE[] ="Hello, World!\n"; typedef struct{ int index; int notify_recv_fd; int notify_send_fd; struct event_base *base;
2014-04-27 22:15:12 539
原创 代码Profile
#ifdef DEBUG_CODES_TIMEvoid timer_start(timespec *aStartTime){ clock_gettime(CLOCK_REALTIME, aStartTime);}long timer_end(timespec *aStartTime){ timespec endTime; clock_g
2014-04-26 23:01:34 653
原创 memcache研究笔记 之 conn内存管理借鉴
freeconns 是 conn 的二维数组, freecurr指向当前的空闲槽conn 的分配 -- conn_from_freelist()函数。分配策略很简单, 就是把 freeconns[freecurr -1] 分配出去, 然后 freecurr 指针下移一个单位.如果 freeconns 没有空闲的 conn, 分配就失败, 函数 conn_from_freelist 返回 NUL
2014-04-07 22:15:29 498
原创 memcache研究笔记 之 多线程接入的交互
mc主线程启动,worker线程启动主线程和work线程初始化event_base, 然后event_base_loopworker线程创建管道,notify_receive_fd event_add 到所在的event_base上有新请求接入,主线程处理函数event_handler回调driver_machin()处理conn_listening状态,dispatch_co
2014-04-06 14:51:57 1078
原创 脚本打开全部coredump查看堆栈信息
使用opengdb.sh一次性打开当前目录下全部coredumpchmod +x ./foxygdbfor file in `ls -rt | grep 'core.'`doecho "|----------------------------------------------------------------------------->"$
2014-04-03 16:10:47 1516
原创 比较隐秘的内存问题
share_ptr/auto_ptr 避免这样使用:强引用上的回环指针会导致内存泄露,可在destructor人为拆散症状:方便的话在ref_count加个打印就知道了,可以在对象析构加打印提醒是否有对象一直没被析构。基类析构函数非virtual 针对base *pt = new derived; delete pt的情况栈溢出.下标越界,栈区,一是越界离谱低于栈区最低地
2014-04-03 16:07:12 720
原创 robot-selenium2library 使用经验
RIDE上:F5 帮助文档,那些库有哪些关键字可用ctrl+shift+空格 在输入框按下后,快速补全关键字关键字举例:Page Should Contain Image xpath=//img[@src="http://***.jpg"] --》使用了xpath找节点Execute Javascript${CURDIR}/test.
2014-04-03 16:02:51 5779 1
原创 自动化测试思考 - 1关注过程
很多项目都有自己对应的自动化测试系统,你当前的系统体现出价值了吗?觉得有下列几种情况:1、人力精力投入了,能经常发现代码更新引起的bugs;2、人力精力投入了,偶尔能发现Bugs,不多,觉得投入与产出性价比不高;3、没怎么发现问题,性价比低,甚至后期都没动力维护。当然还可以从 用例覆盖率作为产入 发现bugs作为产出 作为维度来分析问题!当然,自动化测试的启动都是奔向第一个目标
2014-04-02 18:51:22 928
原创 c++函数执行时间
计算函数的执行时间,粒度比较小,往往也能从中发现项目代码的瓶颈,及时发现问题来提升系统的性能。c++代码时间的估算首先考虑几个时间函数:clock_gettime( ) 、gettimeofday()、_ftime()、time(),其中clock_gettime( ) 提供了纳秒级的精确度,更加准确,可以选用。同时要考虑到往函数注入时间计算函数的时候,对于原代码要考虑易用性,尽量使用配置
2014-03-28 21:40:45 2771
原创 memcache研究笔记 之 item_locks锁数组
mc里面用了大量的锁,简直是随处可见,在确保不死锁的同时保证性能!里面精髓之处值得琢磨学习mc用了哪些锁:conn_lock、slabs_lock、slabs_rebalance_lock、hold_lock、item_locks本篇针对item_locks的粒度变化做了研究:static pthread_mutex_t *item_locks;item_lock_coun
2014-03-22 11:49:45 2247
原创 memcache研究笔记 之 hashtable
查找过程中与关键字进行比较的次数通常取决于三个因素:哈希函数,解决冲突的方法和哈希表的填装因子。处理冲突方法相同的hashtable,其平均查找长度依赖于哈希表的装填因子:装填因子a = 表中填入的记录数/哈希表长度memcached 采用的hash 函数是Bob Jenkins 先生在1996 创立的一个算法,复杂度为O(6n+35),而且冲突率极低,该算法具体过程可以参阅这里。
2014-03-18 18:45:07 2605
原创 selenium2如何设置firefox的UA
最近再做robot自动测试系统,使用的是selenium2library库,原因是在网上查找发现其能设置各个浏览器的UA进行手机端模拟测试,在google上查到了可以配置chrome的UA:http://stackoverflow.com/questions/21155750/how-do-i-modify-google-chrome-user-agent-string-with-robot-fr
2014-01-22 18:05:58 5153
原创 robot selenium2 如何设置firefox的user agent
最近在跟进robot自动化测试系统,使用了selenium2library 库,原因是在网上找到它能设置chrome的ua然后进行访问,但是蛋疼的是对于firefox竟然找不到资料,只能自己硬着头皮找文档搞,辛苦了一番终于有结果:参考的文档:http://rtomac.github.io/robotframework-selenium2library/doc/Selenium2Librar
2014-01-22 17:58:52 1627
原创 算法领悟 - SmartThead
算法的性能影响了整个程序的性能一般情况下,在程序里面使用算法,要考虑它的重复性问题 - 时间或者空间复杂度,这个时候如何避免这种重复导致的性能损耗呢?第一是完全的算法内容重复性第二是有规律的算法内容重复性目前本人考虑的是使用SmartThread和Algorithm-cache比如对于游戏地图的最短路径问题,如果复杂度比较高,可以使用两个点之间的算法成果缓存,这个是提高性能的第
2013-12-08 19:16:27 520
原创 自动化项目模型-需求与开发过程
经过了针对某后台服务端的两个自动化测试项目,总结下就是这样的需求模型:model Base, 基本需求,项目方向Ambiguous, base周围的模糊需求,表现在控制需求者对业务需求基本熟悉但掌握不够细Unknown,对基本需求方向影响不大,表现在补充小部分ba
2013-11-26 17:33:30 990
原创 单元测试(UT)、功能测试(FT)
纯个人总结:单元测试(UT)、功能测试(FT):目的:1、尽量避免写的代码测试人员频繁的来找你其他地方又出问题了;2、提供的接口不可用;3、一个bug修复了引入了其他的bug或者其他用例变红了;理解:在实现函数功能的时候编写对应的测试代码,尽量保证”输入-输出”的正确性,在测试用例比较多的时候对系统有强身健体的功效,适用的人群是:非大牛者优点:保证函数基本功
2013-11-26 17:28:53 12559 1
原创 core分析-间接的指针误操作
先来看下core的堆栈信息:(gdb) bt 20#0 0x06d99e7c in __exchange_and_add (__mem=0xc08a69d8, __val=-1) at ...../../../../include/c++/4.6.2/ext/atomicity.h:48#1 __exchange_and_add_dispatch (__val=-1, __mem=
2013-11-26 17:22:51 1974
原创 特殊符号的编码资料参考
Unicode字符编码分布表——标点符号类http://wenku.baidu.com/view/379ca5697e21af45b307a8d8.htmlHTML字符实体(Character Entities),转义字符串(Escape Sequence)http://114.xixik.com/character/
2013-05-03 16:24:24 591
原创 CVS实践
module name:ln/fscheckout 分支:cvs co -r tag1 ln/fs update 一个文件从主干到分支:cvs update -r tag1 ***.py 然后使用cvs status ***.py就看到已经更新到分支导入一个工程源码:cvs import -m "add project
2013-03-13 17:30:21 567
C++对象在堆栈区的析构 - 好好理解堆栈
2011-11-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人