自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 使用C++11改造muduo

上周拿到了订购的《Linux多线程服务端编程:使用muduo C++网络库》一书,花费一天时间浏览了一遍,并细读了其中感兴趣的一些章节。阅毕,决定用C++11改造其相应源码muduo。         muduo依赖boost这个庞大的库,而且还使用cmake才能进行编译,我当时的目标也就只有两个...

2015-05-20 13:29:14

阅读数 11356

评论数 4

原创 protobuf v3测试

谷歌最近发布了v3版本的protobuf,以前的protobuf被称之为v2,二者之间的区别其特点见我上一篇blog《protobuf一些注意事项》。     个人以为v3要比v2好处就在于:简洁,且二者的新版本都共同支持了新的数据类型:map。相比v2,它去掉了required等选项,只保留了...

2015-02-07 16:54:55

阅读数 17328

评论数 3

原创 protobuf一些注意事项

读完protobuf一些文档,写点东西,权作记忆。 https://github.com/google/protobuf/blob/master/CHANGES.txt: google发布了protobuf v3,为了pb更好用,更跨语言,他对protobuf v2做了以下change:  ...

2015-02-07 13:46:31

阅读数 69025

评论数 3

原创 golang中method的传值与传地址

golang中,struct的method的形式如下:     func (r ReceiverType) funcName(parameters) (results)     如果想要修改struct的成员的值,method被定义时候其ReceiverType必须是struct*形式。如果Rec...

2015-01-23 15:16:10

阅读数 4746

评论数 0

原创 golang中的use-a和has-a

type Person struct { Name string Address Address } type Address struct { Number string Street string City string State ...

2015-01-23 14:35:16

阅读数 1030

评论数 0

原创 分布式散记

对分布式系统有一些粗浅理解,记录下一些要点,以备记忆。     1 EC纠删码 & Reed-Solomon 算法         分布式存储要讲究效益。正常情况下系统对一个数据会通过备份数据以保证数据安全,例如把数据存储为两份或者三份,这个方法的优点是简单,CPU没有计算量,但是存储成本...

2015-01-20 21:16:52

阅读数 839

评论数 0

原创 golang中MD5值计算问题

朋友发来一个一段用golang写的计算MD5值的codes: package main import ( "crypto/md5" "fmt" ) func main() { hash := md5.New() b := []byte(&quo...

2015-01-15 16:15:07

阅读数 4717

评论数 1

原创 七牛的存储算法猜测

个人浏览网页的时候,有打标签的习惯。最近整理以往的标签的时候,发现积累了一些有关七牛公司存储方案的网页,遂决定整理一篇文章处理,以备记忆。当然,也希望对他人有用。 引言:何为纠删码 数据的爆炸式增长使得存储系统的规模不断增加,存储设备的可靠性却一直没有得到显著提高(SSD 从SLC 到MLC...

2014-12-13 20:48:09

阅读数 4131

评论数 0

原创 关于gc

目前成熟的工业语言java和c#都有非常成熟的垃圾回收机制。     另外一个成熟的oop语言c++和c发展到目前都没有gc机制,以前非常不解。只到最近看了go语言,才粗略地明白一些原因 。     go语言有自己的gc机制,也有指针技术,但是go语言中不允许对指针进行加减法等数学运算,即一个...

2014-12-02 13:47:05

阅读数 1700

评论数 0

原创 C++11中lock_guard和unique_lock的区别

C++11中有一个区域锁lock_guard,其

2014-11-10 20:20:59

阅读数 26753

评论数 3

原创 多线程下写日志

鄙人最近遇到了一个奇特的线上事故,记录一下,以备记忆。         鄙人所在的部门负责给公司提供各种基础库,即基础架构部门。最近某别的部门用本部门提供的支持多线程版本的日志库后,出现这样一个奇特的现象:当磁盘被日志写满以后,他们的数据文件的头部被写上了最新的日志!就是说,别的部门的程序的数据文...

2014-10-31 17:00:21

阅读数 11567

评论数 4

原创 docker粗浅理解

容器这个概念确实好。如果是用虚拟机,一上来他们就把资源吃完了,没有弹性。而容器创建的时候只分配了很少的资源,一旦需要更多的资源,再向os要 这个确实好。 stocks(362110134) 11:20:11  容器的创建和销毁几乎没有啥成本。 stocks(362110134) 11:21...

2014-10-13 11:49:25

阅读数 953

评论数 0

原创 bloom filter与dawgdic(一种trie树)

恶意网址搜索与搜索热词提示

2014-09-04 19:58:40

阅读数 1964

评论数 0

原创 多个线程如何操作同一个epoll fd

自己以前做一个接口服务器时候,这种场景下我的设计是多个线程操作同一个epoll fd。彼时,我的理由是epoll的系列函数是线程安全的。        当然有人不理解为什么会有多个线程操作同一个epoll fd的情形,这里稍微铺陈一下接口服务器的场景。epoll fd有线程1维护,监听服务端端口...

2014-08-31 13:20:17

阅读数 11270

评论数 1

转载 高性能web服务器的秘密核武器

转自:http://www.kanglesoft.com/thread-5933-1-1.html 最近kangle web服务器已经发布了新版2.3.1,其性能比老版本提升8倍之多,静态文件处理能力达apache的8-10倍。如此高的性能怎么来的呢?kangle有哪些秘密武器呢?其实作为现...

2014-08-10 15:16:16

阅读数 1203

评论数 0

原创 如何快速的把日志输出到磁盘上

不管是做客户端业务,还是做服务端业务,日志子系统都是非常重要的一个组件。     日志系统的输出目的地可以是disk,也可以是tty,更可以是network。     我的日志系统可以输出到tty,不同log level可以有不同的color,这样看日志非常的醒目,当然这里着重谈的是如何快速的把l...

2014-08-09 21:57:51

阅读数 1803

评论数 1

转载 Cap'n Proto, FlatBuffers, and SBE

Yesterday, some engineers at Google released FlatBuffers, a new serialization protocol and library with similar design principles to Cap’n Proto. A...

2014-06-25 15:02:29

阅读数 4879

评论数 0

原创 FlatBuffers与protobuf性能比较

FlatBuffers发布时,顺便也公布了它的性能数据,具体数据请见Benchmark。     它的测试用例由以下数据构成"a set of about 10 objects containing an array, 4 strings, and a large variety of...

2014-06-25 08:35:43

阅读数 42134

评论数 10

原创 定制一个FlatBuffers编译器

个人并不喜欢FlatBuffers编译器生成的代码,原因是我已经习惯了unix风格的代码。     不喜欢之处大致有以下:     1 命名法使用了Pascal命名法,而我个人习惯了小写字母加下划线式的unix式命名法;     2 Create类的函数参数列表的所有参数都堆在一...

2014-06-25 07:52:12

阅读数 3494

评论数 0

原创 FlatBuffers要点

FlatBuffers发布出来一周多,周末便抽时间先研究下它的使用方法。Flatbuffers的idl的语法主要参考[http://google.github.io/flatbuffers/md__schemas.html ]。本文主要介绍几个它的monster.fbs没有给出说明的几个语法点和相...

2014-06-21 18:29:29

阅读数 8430

评论数 1

原创 在C语言环境下使用google protobuf

本文写给经常使用C编程且不喜欢C++而又要经常使用google protobuf的人。 经常写通讯程序的人对数据进行序列化或者反序列化时,可能进程使用google的protobuf(PB),其优点多多,不用我在这里赘述。 PB可以跨语言使用,唯独缺了C语言。礼失求诸野,我在网上找到了一个非官方的p...

2013-11-14 02:32:20

阅读数 15175

评论数 0

原创 使用vim分割窗口时如何改变窗口的尺寸

使用vim编程时候,不可避免的要分割屏幕。          如果要水平的平分屏幕,可以使用”:split“命令,如果要改变屏幕尺寸,可以用ctrl + w + +\- 来改变屏幕尺寸,这个操作方式等同于命令” :+  "或者” :- ",如果一次要增加3个char或者减少3个...

2013-10-22 17:56:15

阅读数 24238

评论数 0

原创 关于调用函数gettid的错误提示

在OpenSuse 64 v12.3上调用gettid函数(已经加上头文件sys/types.h),但是gcc -Werror给出如下错误提示:      error: implicit declaration of function 'gettid' [-Werror=im...

2013-06-08 10:51:34

阅读数 7103

评论数 2

原创 C语言关键字const再理解

以往对C语言关键字const的理解是一个const类型的常量指针被赋值为某一块内存区域的首地址时,这块内存区域中的数据不可修改。         如代码const char* string = “abcdefg",此时常量指针string指向一块内存区域,其中数据为"abcd...

2013-05-03 20:08:56

阅读数 1055

评论数 0

原创 多级hash

我在以前的博客《sdk的windows版本》点击打开链接 中稍微的介绍了一些多级hash的信息,现在尽自己所知详尽地予以介绍。 现在的服务器网络数据收发与存储没有不做缓存的,不做缓存不能发挥机器的高性能。一般地,公司内部都有集中固定型号的服务器,每种都有其性能极限,一般包括但不限于CPU计算能力...

2013-04-26 22:33:15

阅读数 3433

评论数 0

原创 sdk的windows版本

之所以叫作sdk的windows版本,是因为我有一个linux版本的linux版本。 windows版本的sdk有以下数据结构: 1 可伸缩性hashtable 2 由红黑树实现的map 3 多级hash(tencent非常常用的一种数据结构),可以参考一下文章: http://ahfu...

2013-02-27 12:14:50

阅读数 3438

评论数 2

原创 C语言运算时的参数符号自动转换

一个简单的问题?C语言中int和unsigned int二者谁的数值范围大? 提示一下,数值0在int中有+0和-0之分,unsigned int中0只有一个+0,所以unsigned int的数值范围比int大。 有C语言运算代码如下: #include int main(in...

2013-01-30 09:13:58

阅读数 963

评论数 0

原创 C程序中函数名与宏名称同名

C语言中,函数名称和宏名称可以相同。可以参考下面的示例程序。 ///////////////////////////////////////////test.cpp #include void print(int value) {     printf("%d\...

2012-12-25 17:34:19

阅读数 5631

评论数 0

原创 计算今天的凌晨时间

鄙人在SuSE linux 64位服务器编程,今天有一个功能跟客户端同事联调,其中一步骤是关于今天的凌晨时间的判断,两边一直差异较大。 与他沟通之后,才知道是凌晨时间计算方法的差异。 客户端(windows)的同事的计算方法如下: time_t cur_time = time(NULL); ...

2012-12-05 13:18:26

阅读数 1636

评论数 0

原创 显示dos命令ping和tracert等输出结果中的ip对应的地域名称

公司老大今天使用了dos命令ping,他想看到其中ip地址对应的地域名称。 如dos下命令ping www.qq.com的输出结果是: 正在 Ping www.qq.com [113.108.20.50] 具有 32 字节的数据: 正在 Ping www.qq.com [113.108....

2012-11-26 21:24:18

阅读数 2186

评论数 0

原创 select的效率一定比epoll低吗?

一般以为epoll的效率比select高,当然有人知道这个前提是网络环境较差且存在大连接(超过10k)的情况下。 网络上>一文中列出了下列因素:      select/poll的缺点在于:      1.每次调用时要重复地从用户态读入参数。 2.每次调用时要重复地扫描文件描述符。  ...

2012-10-30 01:03:18

阅读数 4725

评论数 2

原创 opensuse12.2的gdb不能自动加载.gdbinit的解决方法

个人使用gdb调试程序的时候,喜欢在当前目录下先写一个.gdbinit,直接运行一个"/home/huang/sdk> gdb"命令,就可以快速调试了。         最新的opensuse12.2的gdb版本是GNU gdb (GDB) SUSE (7.4.50.20...

2012-10-26 13:23:10

阅读数 5968

评论数 0

原创 怎样安全的使用可变参数宏__VA_ARGS__

今天遇到一个关于可变参数的问题,下面先给出一个示例程序说明我遇到的问题。 0 #include 1  2 #define print(fmt, ...)     out(fmt, __VA_ARGS__) 3 #define out(fmt, ...)       printf(fmt,...

2012-10-11 20:09:40

阅读数 5356

评论数 0

原创 关于宏的两个bug

个人用define定义宏的时候,有个习惯,进行宏拓展时候,习惯于把外面传进来的参数加上小括号使用。 例如: #definesum(x, y)((x) + (y)) 如果要定义宏对结构体进行操作,以前也是使用其指针形式进行操作,所以亦无碍。 如:#defineget_num(N) ((N)-...

2012-09-17 19:47:16

阅读数 1161

评论数 0

原创 win7下的cmd窗口可以全屏显示吗

以前鄙人写了《在windows上运行linux命令》一文,以在windows上运行一些类linux的bash命令,文中只是罗列了一些命令,没有任何说明。 一些网友和我的同事表示喜欢这个工具,而且我最近对它进行了扩充,比较用心的工具就是在win7是上全屏显示cmd窗口的命令fs(fullscree...

2012-09-13 14:08:35

阅读数 18315

评论数 5

翻译 Windows启动过程

当你启动计算机之后,windows的启动过程就开始执行了。下面是详细步骤: 1 BIOS执行一些初始系统检查,并读取磁盘的第零簇的内容。第零簇内容有一个特殊的称谓 - 操作系统主引导扇区 MBR(Master Boot Record)。 2 MBR保护两部分:   1 系...

2012-02-09 19:18:03

阅读数 6374

评论数 0

原创 互联网新贵英雄谱

西    毒: 周鸿祎 。     理由:此君走过之处,吸毒无数,他的旁边寸草不生,他的座右铭是别人死了他自己会活得更好。  此君高深莫测,傅盛、林锐等,都曾是此君的弟子,然均未得其真传。             东    邪: 马云。          理由:此君做事亦正亦邪,...

2011-10-14 13:00:14

阅读数 1787

评论数 1

原创 数组是否应该初始化?

程序中的变量初次声明时,应该初始化。     如:int i = 0;     但是今天一个朋友给了如下两个测试程序,用gcc编译后,效率还是相差很多的。     下面的函数func中数组没有初始化,函数被执行1000000次,则运行3ms。     void func(

2011-09-10 20:24:34

阅读数 773

评论数 0

原创 用盛金公式求解一元三次方程

解一元三次方程一般用盛金公式求解,算法高效且求出来的解精确。     百度百科关于盛金公式有如下解释: 盛金公式   Shengjin's Formulas   一元三次方程aX^3+bX^2+cX+d=0,(a,b,c,d∈R,且a≠0)。   重根判别式:A=b

2011-08-11 21:10:53

阅读数 6171

评论数 0

原创 不借助临时变量交换两个变量的值

如果要交换两个变量的值,一段典型的代码如下:    void swap(type& a, type& b)    {        type temp = a;        a = b;        b = temp;    }    如果要求不借助于临时变量,则可能有如下代

2011-07-24 10:49:52

阅读数 826

评论数 0

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