自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 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 1297 2

原创 【protobuf】关于数字alloc边界的小技巧

先看一段小代码::std::string* errmsg_;::google::protobuf::int32 errcode_;mutable int _cached_size_;::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];其中(2+31) / 32是比较有意思的,我们经常会写如下代码:s = (N / S) + (N % S...

2018-03-01 15:11:16 319

原创 【brpc】C++关于private的一则hack

brpc是百度开源的RPC框架,github:https://github.com/brpc/brpc,初步看了下描述:performance据其官方测试数据(本人未亲测),基本上比其他内外部RPC框架都要优秀,但我个人比较感兴趣的还是对各种protocol的自适应支持,提供灵活扩展接口,这个不错,源码只是大概翻了下,还没细看!关于pb协议头文件有个hack小技巧,代码如下:// Since kD...

2018-02-28 20:44:08 596

原创 Paxos异常情况总结

本文列举了Paxos算法在各阶段的异常,以及处理流程,异常主要限制在Paxos算法的层面,较少涉及具体工程上的实现(除了个别点提一下),因为实际工程实现需要处理的异常点太多了,部分已经超出了Paxos算法的范畴,本文不做讨论,不足之处欢迎批评指正。

2017-12-19 19:32:09 1098

原创 Paxos算法学习问题汇总

Paxos算法学习过程中,困扰我的问题汇总,你们也可能遇到过,总结下,希望能给后来的学习者提供帮助,我的理解也未必全部正确,欢迎批评指正,共同探讨!

2017-12-06 10:46:40 1358

原创 Jenkins插件升级后丢失权限,版本1.646

升级了SVN插件,重启后登录,发现admin没有权限了,重试了几次都是相同的问题,查看config.xml发现用户权限已经没有了,手动加上,重启,恢复,应该是Jenkin是bug

2016-01-30 19:05:34 1637

原创 php安装mysql扩展,版本不一致的解决办法

php安装mysql扩展时出现如下错误:NOTICE: PHP message: PHP Warning: PHP Startup: mysql: Unable to initialize moduleModule compiled with module API=20121212PHP compiled with module API=20131226These options

2015-08-09 08:46:45 5159

原创 排序应该在数据库中还是应用程序中?

看了一篇文章,谈到排序的问题,在平时的项目中,排序非常常见,经常需要用到,排序可以在不同的地方处理,比如程序内部,也可以是数据库中,现简单写下:在MySQL数据库中排序的条件及优势:条件首先得是,你的数据源是数据库形式的1.MySQL可以创建索引,排序速度快2.数据量较大,但是排序结果仅需要其中某个小子集,比如top n,这样数据库会更快3.复杂排序条件,比如按照几个字段进行排

2015-02-20 11:34:28 4074 1

转载 在线数据迁移经验:如何为正在飞行的飞机更换引擎

在线数据迁移,是指将正在提供线上服务的数据,从一个地方迁移到另一个地方,整个迁移过程中要求不停机,服务不受影响。根据数据所处层次,可以分为cache迁移和存储迁移;根据数据迁移前后的变化,又可以分为平移和转移。平移是指迁移前后数据组织形式不变,比如Mysql从1个实例扩展为4个实例,Redis从4个端口扩展到16个端口,HBase从20台机器扩展到 30台机器等等。如果在最初的

2015-02-17 16:52:32 712

原创 从一道基础面试题看:数组形参

刚看了一道面试题目,感觉挺有趣的,自己以前也从未注意过,在此记录下。

2014-04-20 16:39:33 610

原创 STL学习之heap & priority queue

heap,又称堆,在数据结构中,我们接触过最大堆max-heap,最小堆min-heap,这也都是heap,优先队列(priority queue)实际上也是heap来实现的。Binary Heap是一种complete binary tree(完全二叉树),除了最底层叶子节点外,其他点都是满的,最底层叶子节点之间也不能有间隙,如下图就是一棵完全二叉树

2014-04-18 15:58:38 1770

原创 STL学习之stack & queue

stack是一种先进后出(FILO,First In Last Out)的数据结构,它只有一个出口,只允许在最顶端操作,不允许遍历。

2014-04-18 15:56:03 563

原创 STL学习之deque

deque是一种双向开口的分段连续线性空间,所谓双向开口是可以在头尾两端分别做元素的插入和删除操作。如下图:

2014-04-18 14:35:27 776

原创 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 877

原创 STL学习之list

list是STL的链表,list的优势:1.每次插入或删除一个元素,就配置或释放一个元素空间,精准无浪费2.对于任何一个位置的插入或删除,时间复杂度都是常数时间。list实际上是一个双向链表(SGI STL还有一个slist,单向链表),链表节点如下:

2014-04-18 09:50:54 545

原创 STL学习之vector

常见的数据结构主要有:array(数组),list(链表),tree(树),stack(栈),queue(队列,发音[kju:]),hash_table(散列表),set(集合),map(映射表)等。这些数据结构通常分为序列式(sequence)和关联式(associative)。具体分类见下图:

2014-04-18 09:46:05 511

原创 SGI STL内存分配管理

大多数时候,分配内存一般是malloc或new,STL内存分配

2014-04-16 22:21:51 799

转载 C++ 重载(overload)、重写(overrride)、重定义(redefine)

今天参加了一个面试,问到了上面的C

2014-04-08 21:14:39 1474

原创 C++编译器越界检查机制

前天帮同事看了一个程序,现象是这样的,程序在执行完所有代码之后,莫名其妙的core(段错误),当时很忙,就简单的看了下,没有直接使用指针之类的代码,扫了一下关键的地方,也没有看到明显的问题。    当时代码的重点在管道通信上,就重点看了管道的问题,没有仔细阅读每个地方,找了大概有15分钟竟然没找到,这大大激发了我的好奇心,于是我决定仔细看看所有的代码,结果一下子就发现了问题,原来在程序的开始的

2014-04-02 14:59:53 7326

原创 C++各种智能指针的用法及区别

在C++编程中,智能指针绝对是很强大的用法,boost库里把这些指针用的出神入化,它可以简化程序员写代码的复杂度,不用去考虑代码分支路径导致的遗漏delete语法,也无须担心冗余delete导致的double free问题。但是,便利性也要求程序猿熟悉各种指针的用法,避免误用,反而带来其他问题。下面简要列下常用的智能指针,及其用法:1.scoped_ptr:这是最常用的智能指针,当你new一块

2014-03-30 17:40:47 4238

转载 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 667

原创 解决找不到动态库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 29449

转载 TCP与UDP的不同接包处理方式

1.UDP发包的问题问:udp 发送两次数据,第一次 100字节 ,第二次200字节, 接包方一次recvfrom( 1000 ), 收到是 100,还是200,还是300?答:UDP是数据报文协议,是以数据包方式,所以每次可以接收100,200,在理想情况下,第一次是无论recvfrom多少都是接收到100。当然,可能由于网络原因,第二个包先到的话,有可能是200了。对可能会由于网络原因

2013-10-13 15:10:39 946

转载 关闭word 2010时每次都提示:所做更改会影响共用模板Normal.dotm

最近安装了Office 2010版本,但是发现个问题,每次在关闭word 2010时,都会提示所做更改会影响共用模板Normal.dotm ……确实是烦恼,每次都需要点击是否保存,于是我在仔细研究了下Office 2010的使用之后,终于发现问题所在,其实只要把3个加载项去掉就可以了。操作步骤如下:1.、打开Word选项(I) / 加载项 / 转到(G).../2、

2013-09-16 13:04:30 21490

原创 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 1622

原创 关于C++中的函数返回局部string的问题

函数返回局部变量string的时候能不能被引用?前两天被同事突然问道这个问题,见到string一时糊涂了,最初学习C++的时候,就说不能引用局部变量,现在怎么糊涂了呢?呵呵 今天想了下,原来是被函数外表蒙蔽了,看个例子std::string TestStringReference(){ std::string strTest = "This is a test.";

2013-09-08 22:58:31 10016 1

原创 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 1265

原创 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 5523

原创 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 2839

转载 注意 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 5484 5

原创 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 2555

转载 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 745

原创 VS2010 字体

最近由于项目需求,不得不从vs2005升级到了2010(现在都有2012了,呵呵),2010的整体界面比05好看些,功能上看起来还是一致的奇怪是竟然找不到我最喜欢的System字体了,在控制面板里-字体里,System确实是显示的,不明原因,在网上找了下,发现有另外一种字体和System是差不多的Fixedsys Excelsior,就下载安装了地址:http://www.fixeds

2013-03-18 10:19:19 868

原创 谈单进程(单线程)与单进程(多线程)程序设计

本文单进程指单进程(单线程)模式;单线程也指单进程单线程;多线程指单进程(多线程模式),下同。 最近在B部门做项目,用到的平台框架都是基于单进程模式的,在以前的A部门做过的项目都是多线程模式的,在使用的过程中,也思考了一些问题,引发了对这两种类型的线程的对比和自己的一些看法(仅是个人观点)。先讲下单进程模式和多线程模式的优劣:1.单进程开发简单;多线程开发复杂2.单进程在处理高

2013-03-17 11:20:54 6887

原创 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 7879 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 515

原创 C#获取跳转页面的状态码

最近在使用google的rietveld CodeReview服务,使用upload.py上传,感觉使用起来挺麻烦的,就开发了一个C#的助手,其中的一个步骤是要登录rietveld,客户端发送一个POST请求,成功登录服务端返回302 FOUND,在实现的过程中却怎么也得不到,最后定位到问题是存在于request.AllowAutoRedirect = false;这里,因为默认是true

2013-03-01 17:33:59 1547

原创 C++的语义类型和弱引用

C++中存在两种语义:值语义(value sematics)和对象语义(object sematic),对象语义也可以叫做引用语义(reference sematics)。值语义,指的是对象的拷贝与原对象无关,就像拷贝int一样,C++的常用类型数据等都是值语义。对象语义,指的是面向对象意义下的对象,是禁止拷贝的。在设计一个类的时候该类是否可以被拷贝(即具备拷贝

2013-02-05 11:18:29 1812

翻译 Nginx and Memcached,性能提升400%

如果架构,性能,可扩展性是你在设计网站时考虑最多的,那么Ngix("engine x")就可以派上用场了。它是由俄罗斯的rambler.ru网站开发的,一个高性能的HTTP和反向代理服务器,以高稳定性,高性能和易用性而著称。它有很牛X的记录,大量的模块和非常活跃的开发群,都使他赢得了越来越多的使用者。Memcached模块 - 4倍速加速器Memcached是每个web开发者的宠儿

2013-02-04 15:33:28 3225

原创 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 989

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除