
总结沉淀
文章平均质量分 54
念响
念念不忘必有回响
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Janus: P2P打洞失败
Janus: P2P打洞失败日志错误如下[7018515412292631] Creating ICE state check timer with ID 6[WARN] [7018515412292631] ICE failed for component 1 in stream 1, but we're still waiting for some info so we don't care... (trickle pending, answer received, alert not set原创 2021-03-05 17:18:39 · 1620 阅读 · 2 评论 -
关于C++中的函数返回局部string的问题
函数返回局部变量string的时候能不能被引用?前两天被同事突然问道这个问题,见到string一时糊涂了,最初学习C++的时候,就说不能引用局部变量,现在怎么糊涂了呢?呵呵 今天想了下,原来是被函数外表蒙蔽了,看个例子std::string TestStringReference(){ std::string strTest = "This is a test.";原创 2013-09-08 22:58:31 · 10231 阅读 · 1 评论 -
C#获取跳转页面的状态码
最近在使用google的rietveld CodeReview服务,使用upload.py上传,感觉使用起来挺麻烦的,就开发了一个C#的助手,其中的一个步骤是要登录rietveld,客户端发送一个POST请求,成功登录服务端返回302 FOUND,在实现的过程中却怎么也得不到,最后定位到问题是存在于request.AllowAutoRedirect = false;这里,因为默认是true原创 2013-03-01 17:33:59 · 1614 阅读 · 0 评论 -
基于rietveld搭建CodeReview平台
为什么需要CodeReview?1.保证团队代码风格的一致性,发现不一致,应反馈修改2.提升代码质量,尤其是能在牛人的指点下,进步更快3.减少一些低级错误的发生,避免再消耗人力,时间4.约束每个开发人员写代码的随意性5.有助于项目组内的同事了解其他同事负责的模块的实现细节 今天有点时间就研究了下以前组内使用的CodeReview平台的搭建,因要给自己家里的开发机要搞一个原创 2013-01-26 13:23:07 · 3354 阅读 · 0 评论 -
在线数据迁移经验:如何为正在飞行的飞机更换引擎
在线数据迁移,是指将正在提供线上服务的数据,从一个地方迁移到另一个地方,整个迁移过程中要求不停机,服务不受影响。根据数据所处层次,可以分为cache迁移和存储迁移;根据数据迁移前后的变化,又可以分为平移和转移。平移是指迁移前后数据组织形式不变,比如Mysql从1个实例扩展为4个实例,Redis从4个端口扩展到16个端口,HBase从20台机器扩展到 30台机器等等。如果在最初的转载 2015-02-17 16:52:32 · 778 阅读 · 0 评论 -
STL学习之stack & queue
stack是一种先进后出(FILO,First In Last Out)的数据结构,它只有一个出口,只允许在最顶端操作,不允许遍历。原创 2014-04-18 15:56:03 · 622 阅读 · 0 评论 -
C++编译器越界检查机制
前天帮同事看了一个程序,现象是这样的,程序在执行完所有代码之后,莫名其妙的core(段错误),当时很忙,就简单的看了下,没有直接使用指针之类的代码,扫了一下关键的地方,也没有看到明显的问题。 当时代码的重点在管道通信上,就重点看了管道的问题,没有仔细阅读每个地方,找了大概有15分钟竟然没找到,这大大激发了我的好奇心,于是我决定仔细看看所有的代码,结果一下子就发现了问题,原来在程序的开始的原创 2014-04-02 14:59:53 · 7656 阅读 · 0 评论 -
STL学习之slist
前面有学习STL list(double linked list),slist是一个单项链表(single linked list)。slist和list的主要差别是slist是单向的Forward Iterator,list是双向迭代器。slist和list一样,插入不会导致原有的迭代器失效。节点的数据结构原创 2014-04-18 09:59:39 · 936 阅读 · 0 评论 -
Visual Studio 2010的Productivity Power Tool扩展
一、功能列表 进入Tools——Options乐意看到Productivity Power Tools选项,在此列出了插件所拥有的14个功能,包括:Align Assignments Automatic Brace Completion Colorized Parameter Help Column Guides Ctrl + Click Go To Definition Docum转载 2013-03-25 11:12:28 · 807 阅读 · 0 评论 -
C++ STL bitset的使用
bitset是STL转为存储二进制位0|1设计的模版类头文件:#include 构造函数:bitsetn> b;b有n位,每位都为0bitsetn>b(u);b是unsigned long型u的一个副本bitsetn>b(s);b是string对象s中含有的位串的副本原创 2013-02-04 10:48:35 · 1049 阅读 · 0 评论 -
数学表达式处理类Calculator
由于项目需要,实现了一个能处理数学表达式的类,类主要采用了Reverse Polish Notation(逆波兰表达式)完成,写成了模版类,发出来分享一下。有些地方的代码,实现的自我感觉不太好,但一时又没有找到更简洁的方法。欢迎拍砖,提供改进意见,共同提高。有需要的同原创 2011-10-12 13:24:38 · 702 阅读 · 0 评论 -
排序应该在数据库中还是应用程序中?
看了一篇文章,谈到排序的问题,在平时的项目中,排序非常常见,经常需要用到,排序可以在不同的地方处理,比如程序内部,也可以是数据库中,现简单写下:在MySQL数据库中排序的条件及优势:条件首先得是,你的数据源是数据库形式的1.MySQL可以创建索引,排序速度快2.数据量较大,但是排序结果仅需要其中某个小子集,比如top n,这样数据库会更快3.复杂排序条件,比如按照几个字段进行排原创 2015-02-20 11:34:28 · 4307 阅读 · 1 评论 -
从一道基础面试题看:数组形参
刚看了一道面试题目,感觉挺有趣的,自己以前也从未注意过,在此记录下。原创 2014-04-20 16:39:33 · 653 阅读 · 0 评论 -
关闭word 2010时每次都提示:所做更改会影响共用模板Normal.dotm
最近安装了Office 2010版本,但是发现个问题,每次在关闭word 2010时,都会提示所做更改会影响共用模板Normal.dotm ……确实是烦恼,每次都需要点击是否保存,于是我在仔细研究了下Office 2010的使用之后,终于发现问题所在,其实只要把3个加载项去掉就可以了。操作步骤如下:1.、打开Word选项(I) / 加载项 / 转到(G).../2、转载 2013-09-16 13:04:30 · 22031 阅读 · 0 评论 -
如何在单元测试中mock系统调用
今天看了陈硕(www.chenshuo.com)的一篇blog,有提及单元测试mock系统调用的问题StackOverFlow网站上有个用户想要mock系统函数getaddinfo,有以下几种方案:Option 1: Subclass to TestSince you already have your object in a class, you can subclass to te原创 2013-01-26 14:13:09 · 2064 阅读 · 1 评论 -
为什么使用do{...} while(0) ?
在一些函数的代码里偶尔会看到如标题所述的用法,再此总结一下:首先要说的是:do {...}while(0)这种语句主要用在宏定义里面考虑下面几种代码情况:1) if ( ...) FUN1(x);else FUN2(y);从这里看,上述代码看起来没有任何,无非就是一个简单的if else条件语句。但是,从代码里你看到了FUN1和FUN2,这两个函数,不过有可能他原创 2011-10-29 10:28:42 · 511 阅读 · 0 评论 -
C++校验日期串合法性
在做项目接口时,需要校验日期串的合法性,就写了这个,仅够初步使用代码根据业务做了些限制,可去掉#include #include #include #include #include std::string trim(const std::string& str){ std::string::size_type pos = str.find_first_not_of(原创 2013-08-24 11:54:01 · 5695 阅读 · 0 评论 -
VS2010 字体
最近由于项目需求,不得不从vs2005升级到了2010(现在都有2012了,呵呵),2010的整体界面比05好看些,功能上看起来还是一致的奇怪是竟然找不到我最喜欢的System字体了,在控制面板里-字体里,System确实是显示的,不明原因,在网上找了下,发现有另外一种字体和System是差不多的Fixedsys Excelsior,就下载安装了地址:http://www.fixeds原创 2013-03-18 10:19:19 · 928 阅读 · 0 评论 -
STL学习之deque
deque是一种双向开口的分段连续线性空间,所谓双向开口是可以在头尾两端分别做元素的插入和删除操作。如下图:原创 2014-04-18 14:35:27 · 836 阅读 · 0 评论 -
STL学习之heap & priority queue
heap,又称堆,在数据结构中,我们接触过最大堆max-heap,最小堆min-heap,这也都是heap,优先队列(priority queue)实际上也是heap来实现的。Binary Heap是一种complete binary tree(完全二叉树),除了最底层叶子节点外,其他点都是满的,最底层叶子节点之间也不能有间隙,如下图就是一棵完全二叉树原创 2014-04-18 15:58:38 · 1842 阅读 · 0 评论 -
写ppt的技巧
昨天参加了一个评审,面试后感觉自己的ppt写的不好,自己给自己挖了几个坑,被挑战了。现在写下几个小经验,继续努力,以后都要写出高效的ppt这些技巧仅是我的愚见,不一定适合每个人,后续有其他想法也会继续补充!1.自己不熟悉的地方最好不要写到ppt上2.抛出来的有难度的问题,务必要写上(或讲述)详细的解决方案3.在讲1个问题时,可以先讲这个问题给大家带来了多大的痛苦,自己是如何解决原创 2013-01-25 09:33:31 · 735 阅读 · 0 评论 -
STL学习之list
list是STL的链表,list的优势:1.每次插入或删除一个元素,就配置或释放一个元素空间,精准无浪费2.对于任何一个位置的插入或删除,时间复杂度都是常数时间。list实际上是一个双向链表(SGI STL还有一个slist,单向链表),链表节点如下:原创 2014-04-18 09:50:54 · 597 阅读 · 0 评论 -
MySQL批量生成复制表SQL语句
目标为每个表生成0-X个后缀,便于在做一些分表存储时表创建,python脚本如下:#!/usr/bin/python# Author: pecywang# 2013-05-21import MySQLdbTABLES = ("t_a_", "t_b_");conn = MySQLdb.connect(host='10.152.23.179', user='r原创 2013-05-21 21:00:23 · 2603 阅读 · 0 评论 -
C++的语义类型和弱引用
C++中存在两种语义:值语义(value sematics)和对象语义(object sematic),对象语义也可以叫做引用语义(reference sematics)。值语义,指的是对象的拷贝与原对象无关,就像拷贝int一样,C++的常用类型数据等都是值语义。对象语义,指的是面向对象意义下的对象,是禁止拷贝的。在设计一个类的时候该类是否可以被拷贝(即具备拷贝原创 2013-02-05 11:18:29 · 1888 阅读 · 0 评论 -
C++调用C编译的变量和函数为什么需要extern
原因是:C++里不同的namespace和类,等等结构里可以存在名字相同但实现不同的变量或函数,这是怎么实现的呢?这就要了解C++的Name Mangling,中文也可叫命名编码吧,也有叫名字粉碎机的 :)摘抄一段Name mangling is the encoding of function and variable names into unique names so that原创 2013-01-22 22:13:00 · 480 阅读 · 0 评论 -
Linux内核参数的优化
默认的Linux的内核参数是比较通用的,可以根据业务的场景,进行优化内核参数配置文件 /etc/sysctl.conf# 进程可以同时打卡的最大句柄数,限制最大并发连接数fs.file-max = 999999# 允许TIME_WAIT状态的socket重新用于新的tcp连接net.ipv4.tcp_tw_reuse = 1# 当keepalive启用时,tcp发送keep原创 2013-09-15 19:59:58 · 1709 阅读 · 0 评论 -
C++各种智能指针的用法及区别
在C++编程中,智能指针绝对是很强大的用法,boost库里把这些指针用的出神入化,它可以简化程序员写代码的复杂度,不用去考虑代码分支路径导致的遗漏delete语法,也无须担心冗余delete导致的double free问题。但是,便利性也要求程序猿熟悉各种指针的用法,避免误用,反而带来其他问题。下面简要列下常用的智能指针,及其用法:1.scoped_ptr:这是最常用的智能指针,当你new一块原创 2014-03-30 17:40:47 · 4378 阅读 · 0 评论 -
注意 c++ vector中的erase()
今天帮同事解决了一个程序异常挂掉的问题,最后定位到是在vector删除元素之后,再把该对象传递给下一个app时下一个app莫名其妙的挂了。认真检查了代码发现是这里的问题。网上有个帖子,讲的挺细致的,特转载写。#include #include using namespace std; int main(){ vector arr; arr.push_back(6);转载 2013-05-29 19:16:10 · 5594 阅读 · 5 评论 -
SUSE linux下应用安装
在SUSE环境下(非Desktop,TextMode模式server)安装各种应用的方法。一、去下面的网址下载suse对应的rpm包,下载之后rpm -ivh XXX.rpm 安装就可以了 http://www.rpmfind.net/linux/rpm2html/search.php?query=&submit=Search+...&system=&arch=二、原创 2013-09-08 20:43:35 · 1329 阅读 · 0 评论 -
TCP与UDP的不同接包处理方式
1.UDP发包的问题问:udp 发送两次数据,第一次 100字节 ,第二次200字节, 接包方一次recvfrom( 1000 ), 收到是 100,还是200,还是300?答:UDP是数据报文协议,是以数据包方式,所以每次可以接收100,200,在理想情况下,第一次是无论recvfrom多少都是接收到100。当然,可能由于网络原因,第二个包先到的话,有可能是200了。对可能会由于网络原因转载 2013-10-13 15:10:39 · 1008 阅读 · 0 评论 -
解决找不到动态库libpthread.so的问题
在新SUSE开发机上编译时出现下面的错误/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: note:'sem_close@@GLIBC_2.2.5' is defined in DSO /lib64/libpthread.so.0 so try adding it to the linker原创 2013-10-13 15:52:41 · 30096 阅读 · 0 评论 -
C/C++链接有关的问题
如果我们需要引用一个外部库里面的变量或函数,要涉及到extern,具体该怎么写呢?下面是一小段例子函数:假设我们有2个源文件hello.h和hello.cpphello.h的代码如下#ifdef __cplusplusextern "C" {#endifextern const char g_test[3];#ifdef __cplusplus}#end原创 2013-01-22 21:55:36 · 578 阅读 · 0 评论 -
linux gcc 编译时头文件和库文件搜索路径
一、头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始 ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH ※再找内定目录/usr/include /usr/local/include/usr/lib/gcc-lib/i386-linux/转载 2013-10-13 16:07:46 · 729 阅读 · 0 评论 -
SGI STL内存分配管理
大多数时候,分配内存一般是malloc或new,STL内存分配原创 2014-04-16 22:21:51 · 861 阅读 · 0 评论 -
STL学习之vector
常见的数据结构主要有:array(数组),list(链表),tree(树),stack(栈),queue(队列,发音[kju:]),hash_table(散列表),set(集合),map(映射表)等。这些数据结构通常分为序列式(sequence)和关联式(associative)。具体分类见下图:原创 2014-04-18 09:46:05 · 569 阅读 · 0 评论 -
pthread中的stack size的设置
在使用pthread的函数时,若要设置线程栈空间大小,需要调用pthread_attr_setstacksize(&attr,stack_size);关于stack_size变量的取值,是有限制的,ulimit -a会看到栈默认空间为8192K,若程序不设置则采用此值作为默认值,最小空间大小定义在limits.h头文件中PTHREAD_STACK_MIN,一般为16384字节原创 2013-07-19 09:23:55 · 3083 阅读 · 0 评论 -
Google Protobuf的字段
1.基本字段类型protobuf字段也可以是一个enum或另一个message2.字段的限定标志 required 必须的字段(尽量少使用required) optional 可有可无 repeated 可出现任意次3.message定义格式 message MyType { 标志 类型 key, } key在1和229-1之间, 1 -原创 2013-03-07 16:45:04 · 7971 阅读 · 1 评论 -
常用Linux Shell命令集锦
下面是我平时在使用是总结的几个比较有用的shell命令,总结如下1.find命令 find命令比较强大,不仅可以快速定位到查找的文件,还可以对匹配的文件做处理,例如: 删除3天前的匹配文件:find ./ -name "pettern" -type f -mtime +3 -exec rm {} \; 找出文件行里包含某指定串:find ./ -name "*.py"原创 2013-03-04 12:39:18 · 564 阅读 · 0 评论 -
C++ 重载(overload)、重写(overrride)、重定义(redefine)
今天参加了一个面试,问到了上面的C转载 2014-04-08 21:14:39 · 1559 阅读 · 0 评论