linux网络
企鹅
个人github github.com/AlexStocks ,新 blog 地址 alexstocks.github.io 。
展开
-
计算今天的凌晨时间
鄙人在SuSE linux 64位服务器编程,今天有一个功能跟客户端同事联调,其中一步骤是关于今天的凌晨时间的判断,两边一直差异较大。与他沟通之后,才知道是凌晨时间计算方法的差异。客户端(windows)的同事的计算方法如下:time_t cur_time = time(NULL);time_t morning = cur_time - cur_time % 86400;//864原创 2012-12-05 13:18:26 · 2050 阅读 · 0 评论 -
如何快速的把日志输出到磁盘上
不管是做客户端业务,还是做服务端业务,日志子系统都是非常重要的一个组件。 日志系统的输出目的地可以是disk,也可以是tty,更可以是network。 我的日志系统可以输出到tty,不同log level可以有不同的color,这样看日志非常的醒目,当然这里着重谈的是如何快速的把log内容写到磁盘上。 其实,如何快速的把log内容写到磁盘上,网上文章已经汗原创 2014-08-09 21:57:51 · 2452 阅读 · 1 评论 -
多个线程如何操作同一个epoll fd
自己以前做一个接口服务器时候,这种场景下我的设计是多个线程操作同一个epoll fd。彼时,我的理由是epoll的系列函数是线程安全的。 当然有人不理解为什么会有多个线程操作同一个epoll fd的情形,这里稍微铺陈一下接口服务器的场景。epoll fd有线程1维护,监听服务端端口的socket的accept出来的acceptor(即新的socket fd)也放在这个epoll原创 2014-08-31 13:20:17 · 12885 阅读 · 1 评论 -
C++11中lock_guard和unique_lock的区别
C++11中有一个区域锁lock_guard,其原创 2014-11-10 20:20:59 · 29122 阅读 · 3 评论 -
docker粗浅理解
容器这个概念确实好。如果是用虚拟机,一上来他们就把资源吃完了,没有弹性。而容器创建的时候只分配了很少的资源,一旦需要更多的资源,再向os要这个确实好。stocks(362110134) 11:20:11 容器的创建和销毁几乎没有啥成本。stocks(362110134) 11:21:20 打个不恰当的比方,就类似于进程的.bss空间,说是逻辑空间需要那么多,但是物理内存并不存在原创 2014-10-13 11:49:25 · 1180 阅读 · 0 评论 -
多线程下写日志
鄙人最近遇到了一个奇特的线上事故,记录一下,以备记忆。 鄙人所在的部门负责给公司提供各种基础库,即基础架构部门。最近某别的部门用本部门提供的支持多线程版本的日志库后,出现这样一个奇特的现象:当磁盘被日志写满以后,他们的数据文件的头部被写上了最新的日志!就是说,别的部门的程序的数据文件被日志数据给污染了。 这里先不介绍这个事故的原因。先说下这个日志库的写日志过程,原创 2014-10-31 17:00:21 · 13696 阅读 · 4 评论 -
关于gc
目前成熟的工业语言java和c#都有非常成熟的垃圾回收机制。 另外一个成熟的oop语言c++和c发展到目前都没有gc机制,以前非常不解。只到最近看了go语言,才粗略地明白一些原因 。 go语言有自己的gc机制,也有指针技术,但是go语言中不允许对指针进行加减法等数学运算,即一个指针只能指向某个地址,类似于C中的type * const ptr类型的固定地址指针。 而在原创 2014-12-02 13:47:05 · 1913 阅读 · 0 评论 -
七牛的存储算法猜测
个人浏览网页的时候,有打标签的习惯。最近整理以往的标签的时候,发现积累了一些有关七牛公司存储方案的网页,遂决定整理一篇文章处理,以备记忆。当然,也希望对他人有用。引言:何为纠删码数据的爆炸式增长使得存储系统的规模不断增加,存储设备的可靠性却一直没有得到显著提高(SSD 从SLC 到MLC 和TLC 可靠性不断下降,磁盘随着单位面积写入数据更多导致可靠性无法提升),从而给数据的持原创 2014-12-13 20:48:09 · 4517 阅读 · 0 评论 -
protobuf v3测试
谷歌最近发布了v3版本的protobuf,以前的protobuf被称之为v2,二者之间的区别其特点见我上一篇blog《protobuf一些注意事项》。 个人以为v3要比v2好处就在于:简洁,且二者的新版本都共同支持了新的数据类型:map。相比v2,它去掉了required等选项,只保留了repeated选项,还添加了时间等比较常用的数据类型(当然暂时还没有实现)等等。唯一的缺点就是,v3原创 2015-02-07 16:54:55 · 18165 阅读 · 3 评论 -
使用C++11改造muduo
上周拿到了订购的《Linux多线程服务端编程:使用muduo C++网络库》一书,花费一天时间浏览了一遍,并细读了其中感兴趣的一些章节。阅毕,决定用C++11改造其相应源码muduo。 muduo依赖boost这个庞大的库,而且还使用cmake才能进行编译,我当时的目标也就只有两个:1 删除muduo代码中boost相关的代码;2 自己添加makefile编译文件,去除与cmak原创 2015-05-20 13:29:14 · 13051 阅读 · 5 评论 -
FlatBuffers与protobuf性能比较
FlatBuffers发布时,顺便也公布了它的性能数据,具体数据请见Benchmark。 它的测试用例由以下数据构成"a set of about 10 objects containing an array, 4 strings, and a large variety of int/float scalar values of all sizes, meant to be rep原创 2014-06-25 08:35:43 · 51435 阅读 · 9 评论 -
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. Also, a few months back, Real Logic released Simple转载 2014-06-25 15:02:29 · 5543 阅读 · 0 评论 -
FlatBuffers要点
FlatBuffers发布出来一周多,周末便抽时间先研究下它的使用方法。Flatbuffers的idl的语法主要参考[http://google.github.io/flatbuffers/md__schemas.html ]。本文主要介绍几个它的monster.fbs没有给出说明的几个语法点和相关的注意事项。1 comment它的注释中介绍了”///",说明是可以生成do原创 2014-06-21 18:29:29 · 8776 阅读 · 0 评论 -
关于调用函数gettid的错误提示
在OpenSuse 64 v12.3上调用gettid函数(已经加上头文件sys/types.h),但是gcc -Werror给出如下错误提示: error: implicit declaration of function 'gettid' [-Werror=implicit-function-declaration] 而man 2 gettid结果如下: N原创 2013-06-08 10:51:34 · 10696 阅读 · 2 评论 -
select的效率一定比epoll低吗?
一般以为epoll的效率比select高,当然有人知道这个前提是网络环境较差且存在大连接(超过10k)的情况下。网络上>一文中列出了下列因素: select/poll的缺点在于: 1.每次调用时要重复地从用户态读入参数。2.每次调用时要重复地扫描文件描述符。 3.每次在调用开始时,要把当前进程放入各个文件描述符的等待队列。在调用结束后,又把进原创 2012-10-30 01:03:18 · 6128 阅读 · 2 评论 -
多级hash
我在以前的博客《sdk的windows版本》点击打开链接 中稍微的介绍了一些多级hash的信息,现在尽自己所知详尽地予以介绍。现在的服务器网络数据收发与存储没有不做缓存的,不做缓存不能发挥机器的高性能。一般地,公司内部都有集中固定型号的服务器,每种都有其性能极限,一般包括但不限于CPU计算能力、网卡收发包能力、内存容量以及磁盘容量和他的读写速度。多级hash即与内存容量有关。假设一台del原创 2013-04-26 22:33:15 · 4870 阅读 · 0 评论 -
在C语言环境下使用google protobuf
本文写给经常使用C编程且不喜欢C++而又要经常使用google protobuf的人。经常写通讯程序的人对数据进行序列化或者反序列化时,可能进程使用google的protobuf(PB),其优点多多,不用我在这里赘述。PB可以跨语言使用,唯独缺了C语言。礼失求诸野,我在网上找到了一个非官方的protobuf-c,其官方网址是http://code.google.com/p/protobuf原创 2013-11-14 02:32:20 · 16654 阅读 · 0 评论 -
定制一个FlatBuffers编译器
个人并不喜欢FlatBuffers编译器生成的代码,原因是我已经习惯了unix风格的代码。 不喜欢之处大致有以下: 1 命名法使用了Pascal命名法,而我个人习惯了小写字母加下划线式的unix式命名法; 2 Create类的函数参数列表的所有参数都堆在一行,非常惨不忍睹,我自己习惯于每行一个参数式的风格; 3 生成的头文件连个预防文件被重复原创 2014-06-25 07:52:12 · 3709 阅读 · 0 评论 -
protobuf一些注意事项
读完protobuf一些文档,写点东西,权作记忆。https://github.com/google/protobuf/blob/master/CHANGES.txt:google发布了protobuf v3,为了pb更好用,更跨语言,他对protobuf v2做了以下change: 1. Removal of field presence logic for p原创 2015-02-07 13:46:31 · 74138 阅读 · 3 评论