代码改变世界

[置顶]七牛的存储算法猜测

2014-12-13 21:04 by menggucaoyuan, 1606 阅读, 1 推荐, 收藏, 编辑
摘要:目录[-]引言:何为纠删码纠删码中运算的基础域———有限域七牛的存储方案 个人浏览网页的时候,有打标签的习惯。最近整理以往的标签的时候,发现积累了一些有关七牛公司存储策略的网页,遂决定整理一篇文章处理,以备记忆。当然,也希望对他人有用。 因为七牛公司的存储策略主要基于纠删码(Erasure Co... 阅读全文

[置顶]FlatBuffers要点

2014-06-21 18:28 by menggucaoyuan, 1662 阅读, 1 推荐, 收藏, 编辑
摘要:介绍了FlatBuffers idl的几个语法点以及它的一些坑 阅读全文

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

2014-08-09 22:09 by menggucaoyuan, 1036 阅读, 0 推荐, 收藏, 编辑
摘要:不管是做客户端业务,还是做服务端业务,日志子系统都是非常重要的一个组件。 日志系统的输出目的地可以是disk,也可以是tty,更可以是network。 我的日志系统可以输出到tty,不同log level可以有不同的color,这样看日志非常的醒目,当然这里着重谈的是如何快速的把log内容写... 阅读全文

FlatBuffers与protobuf性能比较

2014-06-25 10:31 by menggucaoyuan, 2001 阅读, 1 推荐, 收藏, 编辑
摘要:FlatBuffers与protobuf的CPU计算时间和内存占用比较 阅读全文

定制一个FlatBuffers编译器

2014-06-25 10:28 by menggucaoyuan, 335 阅读, 0 推荐, 收藏, 编辑
摘要:不喜欢默认flatc生成的代码风格,定制了一个能生成unix like风格代码的FlatBuffers编译器 阅读全文

在C语言环境下使用google protobuf

2013-11-14 03:33 by menggucaoyuan, 1812 阅读, 0 推荐, 收藏, 编辑
摘要:本文写给经常使用C编程且不喜欢C++而又要经常使用google protobuf的人。 经常写通讯程序的人对数据进行序列化或者反序列化时,可能经常使用google的protobuf(PB),其优点多多,不用我在这里赘述。 google官方的PB可以跨语言使用,唯独缺了C语言。礼失求诸野,我在网上找到了一个非官方的protobuf-c,其官方网址是http://code.google.com/p/protobuf-c/,令人奇怪的是这么好的东东从2011年下半年后再无更新,令人遗憾。 使用这个工具之前当然是先安装它了。安装它之前请先下载最新版本的protobuf并安装它... 阅读全文

2013-04-23 00:40 by menggucaoyuan, 755 阅读, 0 推荐, 收藏, 编辑
摘要:a 阅读全文

C语言中函数名称和宏名称同名

2012-12-25 17:45 by menggucaoyuan, 2495 阅读, 0 推荐, 收藏, 编辑
摘要:C语言中,函数名称和宏名称可以相同。可以参考下面的示例程序。 ///////////////////////////////////////////test.cpp#include <stdio.h>void print(int value) { printf("%d\n", value);}#define print(x) printf("hello"); \ print(x)int main() { print(23); return 0;} 上面的程序在vc和gcc下都可以运行,输出结果是:hello23。 究其原因,我... 阅读全文

记可敬可佩的老车同志

2012-12-20 00:41 by menggucaoyuan, 999 阅读, 2 推荐, 收藏, 编辑
摘要:老车同志,真名卢俊文,辽宁本溪人,年近五旬,现在供电公司做抄电表员,业余利用洪恩视频教学软件学习c语言。 与老车同志相识不到一周,然其可敬可爱之处甚多。我已近而立之年,然尚未立业,更不能立言立德立行,亦甚迷信中国程序员三十遍已成老朽之邪说。见到他,才知道活到老可以学到老。 上周五早上忽然心血来潮,想加入一linux技术群,就用qq查找工具搜得一群,群主昵称老车。来回发出请求七八遭,不断被拒绝。 其间群主问到一个问题,delete与free有什么区别?答曰,delete执行析构函数。老车回复道,答案不甚详细,你不能加入群。中间花费了近一个小时,然后在PC上挂着QQ,中午跟着同事... 阅读全文

计算今天的凌晨时间

2012-12-05 13:39 by menggucaoyuan, 982 阅读, 0 推荐, 收藏, 编辑
摘要:鄙人在SuSE linux 64位服务器编程,今天有一个功能跟客户端同事联调,其中一步骤是关于今天的凌晨时间的判断,两边一直差异较大。 与他沟通之后,才知道是凌晨时间计算方法的差异。 客户端(windows)的同事的计算方法如下: time_t cur_time = time(NULL); time_t morning = cur_time - cur_time % 86400; //86400 = 24 * 60 * 60 貌似很简单,但是不正确,先给出提醒,中国的时区是在东八区。 下面是我的一段代码: #include <stdio.h> #include <... 阅读全文

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

2012-11-26 21:28 by menggucaoyuan, 1646 阅读, 2 推荐, 收藏, 编辑
摘要:公司老大今天使用了dos命令ping,他想看到其中ip地址对应的地域名称。 如dos下命令ping www.qq.com的输出结果是: 正在 Ping www.qq.com [113.108.20.50] 具有 32 字节的数据:正在 Ping www.qq.com [113.108.20.50] 具有 32 字节的数据:来自 113.108.20.50 的回复: 字节=32 时间=3ms TTL=52来自 113.108.20.50 的回复: 字节=32 时间=3ms TTL=52来自 113.108.20.50 的回复: 字节=32 时间=2ms TTL=52来自 113.108.2... 阅读全文

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

2012-10-11 20:38 by menggucaoyuan, 961 阅读, 0 推荐, 收藏, 编辑
摘要:今天遇到一个关于可变参数的问题,下面先给出一个示例程序说明我遇到的问题。 0 #include <stdio.h> 1 2 #define print(fmt, ...) out(fmt, __VA_ARGS__) 3 #define out(fmt, ...) printf(fmt, __VA_ARGS__) 4 5 int main(int argc, char** argv) 6 { 7 print("hello %d\n", 0); 8 print("hello\n"); 9 return 0; 10 } 为了说明问题,上面有两个pr 阅读全文

Windows启动过程

2012-02-09 18:45 by menggucaoyuan, 3633 阅读, 8 推荐, 收藏, 编辑
摘要:当你启动计算机之后,windows的启动过程就开始执行了。下面是详细步骤:1BIOS执行一些初始系统检查,并读取磁盘的第零簇的内容。第零簇内容有一个特殊的称谓-操作系统主引导扇区MBR(MasterBootRecord)。2 MBR保护两部分: 1系统启动代码(共有446bytes) 2分区表入口(16bytescoloredentriesinthebottom)3 根据系统代码,我们可以找到系统所有的分区,并找到系统启动分区。如果分区表入口的第一个字节值为0x80,那么可以确认这就是分区表入口,它也被称为根分区或系统卷.MBR中有四个分区入口,是不是意味着我们只能有四个系统驱动?这也就意.. 阅读全文

数组是否应该初始化?

2011-09-10 20:29 by menggucaoyuan, 276 阅读, 0 推荐, 收藏, 编辑
摘要:程序中的变量初次声明时,应该初始化。 如:int i = 0; 但是今天一个朋友给了如下两个测试程序,用gcc编译后,效率还是相差很多的。 下面的函数func中数组没有初始化,函数被执行1000000次,则运行3ms。 void func(void) { char array[512]; } int main(int argc, char* argv[]) { int i = 0; for (i = 0; i < 1000000; i++) { func(); } } 如果把func函数中数组初始化,则运行时间为512ms。 v... 阅读全文

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

2011-08-20 19:49 by menggucaoyuan, 1815 阅读, 0 推荐, 收藏, 编辑
摘要:解一元三次方程一般用盛金公式求解,算法高效且求出来的解精确。 百度百科关于盛金公式有如下解释:盛金公式 Shengjin's Formulas 一元三次方程aX^3+bX^2+cX+d=0,(a,b,c,d∈R,且a≠0)。 重根判别式:A=b^2-3ac;B=bc-9ad;C=c^2-3bd, 总判别式:Δ=B^2-4AC。 当A=B=0时,盛金公式①: X⑴=X⑵=X⑶=-b/(3a)=-c/b=-3d/c。 当Δ=B^2-4AC>0时,盛金公式②: X⑴=(-b-Y⑴^(1/3)-Y⑵^(1/3))/(3a); X(2,3)=(-2b+Y⑴^(1/3)+Y⑵^(1/3))/ 阅读全文

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

2011-07-24 10:49 by menggucaoyuan, 426 阅读, 1 推荐, 收藏, 编辑
摘要:如果要交换两个变量的值,一段典型的代码如下: void swap(type* a, type* b) { if (!a && !b) { type temp = *a; *a = *b; *b = temp; } } 如果要求不借助于临时变量,则可能有如下代码: void swap(type* a, type* b) { if (!a && !b) { *a = *a + *b; *b = *a - *b; *a = *a - *b; } } 上面这段代码是比较危险的,有数值溢出的危险。 如果... 阅读全文

某公司的几道面试题

2011-07-13 09:14 by menggucaoyuan, 749 阅读, 0 推荐, 收藏, 编辑
摘要:在sz的tx面试时,有以下几道好题,面试时没有思路,面试人给提示下,觉得算法很好。不敢独享,特列出。朋友中又觉得我把题列出来是不妥当行为的,请及时告知,我会马上删除。题1:找出集合{A, B, C, ..., Z}的所有子集。分析:如果集合为{A,B,C},则所有的子集如下: A B C 0 0 0 值为0 代表空集 0 0 1 值为1 代表{C} 0 1 0 值为2 代表{B} 0 1 1 值为3 代表{B,C} 1 0 0 值为4 代表{A} 1 0 1 值为5 代表{A,C} 1 1 0 值为6 代表{A,B} 1 1 1 值为7 代表{A,B,C} 能看出点什么规律吧?集合的总数为2. 阅读全文

在C++中用C#风格设置类的属性值

2011-07-04 22:31 by menggucaoyuan, 804 阅读, 0 推荐, 收藏, 编辑
摘要:在C#中,程序员可以写出如下风格的代码设置属性值:private int _x;public int x{ get { return _x; } set { _x = value; }}然后可以对_x值进行赋值或者取值:someObject.x = 50; 如果C++也能写出如此风格的代码,则其应有如下形式:private: int x;public: int getX() { return x; } void setX(int value) { x = value; }调用这些函数时,有如下调用法:someObject.setX(50); int x = someObject.getX(); 阅读全文

const型变量与函数重载

2011-06-17 07:10 by menggucaoyuan, 674 阅读, 0 推荐, 收藏, 编辑
摘要:C++中定义const型变量,可以用一个非const型变量或者const变量初始化这个const变量,但是如果不用类型强制转换则不可以用一个const变量初始化一个非const变量。另外,我的观点是const只能修饰一个变量。上面的最后一句话,你可能有非议,我可以说明。第一,一个const不能修饰一个全局函数。第二,你可能举例说明C++的类中const可以修饰一个函数,但是你还记得每个函数中都可以用一个默认的this指针?C++编译的时候会在函数的参数列表中添加一个类的this指针(静态函数除外),此时如果函数被const修饰,则这个const实际上是修饰这个this的,const修饰的函数. 阅读全文

翻译:编译器内部的秘密--微软的编译器是如何解析Try/Catch/Throw的

2011-06-15 07:06 by menggucaoyuan, 2409 阅读, 2 推荐, 收藏, 编辑
摘要:本文不是一篇介绍如何在x86架构上详细地实现异常处理(exception handling)的手册,只是一篇入门的讨论性文章。本文只是讨论一些处理步骤在理论上应该如何实现,其具体的实现步骤可能跟文章所讨论的并不一致。如果你关注异常处理的细节,并实现它,这可能要花费你数年之功。 阅读全文