EMQ源码之--EMQ的启动

2019-02-21
阅读 2 分钟
2.5k
又回到erlang了,使用了一段时间的golang再回到erlang有点那么的亲切感。在项目中也准备用mqtt来做消息上报,顺道就想看下他的代码。

NSQ源码-Nsq客户端

2018-12-01
阅读 6 分钟
2.9k
看完lookupd和nsqd之后我们再来看下nsq client端的代码。 我是想把nsq系统完完整整的看一遍,从而对他形成一个更整体的认识。对message queue来说他的client端就是生产者和消费者,生产者负责想nsq中投递消息,消费者负责从lookupd中获取到指定nsqd之后,从nsqd中获取消息。

NSQ源码-NSQD

2018-12-01
阅读 10 分钟
5k
看完了nsqlookupd我们继续往下看, nsqd才是他的核心. 里面大量的使用到了go channel, 相信看完之后对你学习go有很大的帮助.相较于lookupd部分无论在代码逻辑和实现上都要复杂很多. 不过基本的代码结构基本上都是一样的, 进程使用go-srv来管理, Main里启动一个http sever和一个tcp server, 这里可以参考下之前文章的进程...

NSQ源码-nsqlookupd

2018-12-01
阅读 5 分钟
2.9k
之前一直在用erlang做电信产品的开发,对erlang的一些生态也比较了解,和erlang相关的产品在互联网公司使用最多的应该就是rabbitmq了,也许很多人听说过erlang就是因为他们公司在使用rabbitmq。在之前也看过一点rabbitmq的代码,以及后来的emqtt都看过一点, 所以对消息队列这块是情有独钟。转到go后也在关注消息队列这块...

C接口与实现---内存管理(内存池的实现)

2017-03-26
阅读 3 分钟
8.1k
前面已经讲了一些C中基本的内存管理的方式,Fist-fit, Best-fit都是基于对象的大小来分配或者找到合适的大小的。当涉及到大量的malloc,free的时候频繁的系统调用肯定会影响到系统的性能,这里有一种更有效的内存管理方式就是基于块的内存分配方式也就是我们经常说的内存池(在软件的世界中你可以发现很多类似的池化设计)...

C接口与实现---内存管理

2017-03-16
阅读 2 分钟
2.2k
c如此java已是如此,只不过这些语言有一套强大额内存管理机制。c之强大也在于此,给你足够的管理权限,让你在程序的世界里挥洒自如。倚天剑,屠龙刀你驾驭不好的话可能会伤到自己,阁下可以小心。

C接口与实现---C里面的异常处理机制

2017-03-10
阅读 2 分钟
2.3k
我们的程序通常会出现三个错误: 用户输入错误, 运行期错误以及异常。对于用户输入错误我们会进行很多的合法性检查,一般都是可以避免的,对于运行期错误就比较难办了,我们是最希望把bug在前期的过程的发现,如果需求期的一个bug流入到生产环境中的话那么损失就是无法估量的,客户可能会直接怀疑你家的设计能力。尽管我...

C接口与实现---之三

2017-03-03
阅读 1 分钟
2.2k
这本书有种相见恨晚,如果在学习数据结构之前看的话,代码的可阅读性肯定会有很大的提升,一直在想一个问题,类似的书为啥国外版的就要好很多,这里并不是一味地的说外国的东西好, 看看这些书的练习体你就知道了,国外的是在教你怎样去思考一个问题,一个问题之后有更多的问题让你思考,而国内C语言相关书的练习题都是...

C接口与实现---之二

2017-02-27
阅读 1 分钟
2.2k
其实每个项目变得很庞大的时候都会有命名冲突的问题,一个人开发整个软件的时代已经过去,现在更多的是好多团队一起合作开发一个东西。这样就必然的导致好多人定义了标签相同个函数。C++中的namespace,java中的包的概念已经erlang中的MFA的模式都是为了解决命名冲突的问题。

C接口与实现---之一

2017-02-25
阅读 1 分钟
2.1k
在erlang上工作久了之后发现自己对底层的知识越来越模糊了,所以决定最近重新学习一下C语言,在有一定基础的情况我觉得应该找一个更高效编程的书来读读(一直在想怎么写出更优雅的代码),翻翻自己的电子书库就找到了《C接口与实现》在优雅编程方面这确实是一本很好的书,书中讲到了文学化的编程。这里是一个书中比较好的...

java并发编程学习---之一

2017-01-02
阅读 1 分钟
2.4k
开始学习java也有一段时间了,一些基础的书也扫了一遍了(think in java/core java volume 1)。最近慢慢开始看<concurrent programming in java>和<Effective java>,后者的话和<Effective C++>有类似之处,都是一些编程经验的item, 编程的世界里好多的东西都是相同的。