博客园 - _00
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=688976
2016-05-09T05:03:19Z
_00
https://www.cnblogs.com/--00/
feed.cnblogs.com
https://www.cnblogs.com/--00/p/emqtt_learning_publish_msg.html
emqtt 4 (我要publish消息了) - _00
这次,分析处理publish msg的流程。 由protocol开始 publish 类型的packet的处理是: 1、ACL 检查 2、处理packet 获得msg 3、调用session module进行处理 emqttd_session 模块处理 和subscribe的处理流程类似,emqtt
2016-05-09T05:03:00Z
2016-05-09T05:03:00Z
_00
https://www.cnblogs.com/--00/
【摘要】这次,分析处理publish msg的流程。 由protocol开始 publish 类型的packet的处理是: 1、ACL 检查 2、处理packet 获得msg 3、调用session module进行处理 emqttd_session 模块处理 和subscribe的处理流程类似,emqtt <a href="https://www.cnblogs.com/--00/p/emqtt_learning_publish_msg.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/emqtt_learning_1.html
emqtt 1 (初初初初稿) - _00
第一篇,先简单分析一下整个emqtt 的大致结构,包括两个部分: 1、message packet 类型 2、message 流向 message packet 类型 P1:mqtt_packet 的基本结构,其中header 中的type 与variable 的mqtt_packet_* 一一对应
2016-05-09T05:03:00Z
2016-05-09T05:03:00Z
_00
https://www.cnblogs.com/--00/
【摘要】第一篇,先简单分析一下整个emqtt 的大致结构,包括两个部分: 1、message packet 类型 2、message 流向 message packet 类型 P1:mqtt_packet 的基本结构,其中header 中的type 与variable 的mqtt_packet_* 一一对应 <a href="https://www.cnblogs.com/--00/p/emqtt_learning_1.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/emqtt_learning_subscribe_topic.html
emqtt 3 (我要subscribe 这个topic) - _00
这一次,主要分析client subscribe 某个topic 的处理流程。 由protocol开始 是的,还是要从protocol开始,至于为什么,之前就说过了。 subscribe 类型的packet的处理是: 1、过滤掉topictable 为空的情况 2、组装必要的client 信息,完成
2016-05-09T05:02:00Z
2016-05-09T05:02:00Z
_00
https://www.cnblogs.com/--00/
【摘要】这一次,主要分析client subscribe 某个topic 的处理流程。 由protocol开始 是的,还是要从protocol开始,至于为什么,之前就说过了。 subscribe 类型的packet的处理是: 1、过滤掉topictable 为空的情况 2、组装必要的client 信息,完成 <a href="https://www.cnblogs.com/--00/p/emqtt_learning_subscribe_topic.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/emqtt_learning_start_session.html
emqtt 2 (我要连服务器) - _00
这一篇,主要分析下,client 是怎么 connect server的,以及成功connect server 之后,会做哪些事情,session是怎么 start的。 由protocol 开始 之前分析过message 流向,接受到TCP 数据之后,经过parser 的解析,会交由protocol
2016-05-09T05:02:00Z
2016-05-09T05:02:00Z
_00
https://www.cnblogs.com/--00/
【摘要】这一篇,主要分析下,client 是怎么 connect server的,以及成功connect server 之后,会做哪些事情,session是怎么 start的。 由protocol 开始 之前分析过message 流向,接受到TCP 数据之后,经过parser 的解析,会交由protocol <a href="https://www.cnblogs.com/--00/p/emqtt_learning_start_session.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_into_wordcount.html
Erlang基础 -- 介绍 -- Wordcount示例演示 - _00
在前两个blog中,已经说了Erlang的历史、应用场景、特点,这次主要演示一个Wordcount的示例,就是给定一个文本文件,统计这个文本文件中的单词以及该单词出现的次数。今天和群友们讨论了一个问题,突然一下子就上升到哲学角度上了,装逼装大发了。PS:图片中有错别字,%s/财务和其他9个月/财务和...
2015-08-19T16:41:00Z
2015-08-19T16:41:00Z
_00
https://www.cnblogs.com/--00/
【摘要】在前两个blog中,已经说了Erlang的历史、应用场景、特点,这次主要演示一个Wordcount的示例,就是给定一个文本文件,统计这个文本文件中的单词以及该单词出现的次数。今天和群友们讨论了一个问题,突然一下子就上升到哲学角度上了,装逼装大发了。PS:图片中有错别字,%s/财务和其他9个月/财务和... <a href="https://www.cnblogs.com/--00/p/erlang_into_wordcount.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_into_style.html
Erlang基础 -- 介绍 -- Erlang特点 - _00
前言Erlang是具有多重范型的编程语言,具有很多特点,主要的特点有以下几个:函数式并发性分布式健壮性软实时热更新递增式代码加载动态类型解释型函数式Erlang是函数式编程语言,函数式是一种编程模型,将计算机中的运算看做是数学中的函数计算,可以避免状态以及变量的概念。对象是面向对象的第一型,函数式编...
2015-08-18T16:56:00Z
2015-08-18T16:56:00Z
_00
https://www.cnblogs.com/--00/
【摘要】前言Erlang是具有多重范型的编程语言,具有很多特点,主要的特点有以下几个:函数式并发性分布式健壮性软实时热更新递增式代码加载动态类型解释型函数式Erlang是函数式编程语言,函数式是一种编程模型,将计算机中的运算看做是数学中的函数计算,可以避免状态以及变量的概念。对象是面向对象的第一型,函数式编... <a href="https://www.cnblogs.com/--00/p/erlang_into_style.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_into_his_concurrent.html
Erlang基础 -- 介绍 -- 历史及Erlang并发 - _00
前言最近在总结一些Erlang编程语言的基础知识,拟系统的介绍Erlang编程语言,从基础到进阶,然后再做Erlang编程语言有意思的库的分析。其实,还是希望越来越多的人关注Erlang,使用Erlang,壮大Erlang编程语言的社区。说实话,我也没这么高尚,就是看到很多人对Erlang编程语言的...
2015-08-17T16:50:00Z
2015-08-17T16:50:00Z
_00
https://www.cnblogs.com/--00/
【摘要】前言最近在总结一些Erlang编程语言的基础知识,拟系统的介绍Erlang编程语言,从基础到进阶,然后再做Erlang编程语言有意思的库的分析。其实,还是希望越来越多的人关注Erlang,使用Erlang,壮大Erlang编程语言的社区。说实话,我也没这么高尚,就是看到很多人对Erlang编程语言的... <a href="https://www.cnblogs.com/--00/p/erlang_into_his_concurrent.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_lib_together.html
Erlang库 -- 有意思的库汇总 - _00
首先,库存在的目的大致可分为:1、提供便利2、尽可能解决一些痛点首先,我们先明确一下Erlang编程语言的一些痛点(伪痛点):1,单进程问题Erlang虚拟机属于抢占式调度,抢占式调度有很多好处,但是同样也存在这弊端。虚拟机在默认情况下分配个每个进程的资源都是相同的,但是若一个进程(gen_serv...
2015-08-14T12:23:00Z
2015-08-14T12:23:00Z
_00
https://www.cnblogs.com/--00/
【摘要】首先,库存在的目的大致可分为:1、提供便利2、尽可能解决一些痛点首先,我们先明确一下Erlang编程语言的一些痛点(伪痛点):1,单进程问题Erlang虚拟机属于抢占式调度,抢占式调度有很多好处,但是同样也存在这弊端。虚拟机在默认情况下分配个每个进程的资源都是相同的,但是若一个进程(gen_serv... <a href="https://www.cnblogs.com/--00/p/erlang_lib_together.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_user_default.html
善待Erlang 代码 -- 巧用 user_default - _00
这是一篇水文-----------------------------------------------------很好用的一个技巧http://www.erlang.org/doc/man/shell_default.htmlhttp://www.cnblogs.com/me-sa/archiv...
2015-05-26T03:40:00Z
2015-05-26T03:40:00Z
_00
https://www.cnblogs.com/--00/
【摘要】这是一篇水文-----------------------------------------------------很好用的一个技巧http://www.erlang.org/doc/man/shell_default.htmlhttp://www.cnblogs.com/me-sa/archiv... <a href="https://www.cnblogs.com/--00/p/erlang_user_default.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/code_erlang_xref.html
善待Erlang 代码 -- Xref 实践 - _00
Xref是一个交叉引用工具,通过分析定义的函数间的调用关系,用于查找函数、模块、应用程序和版本之间的依赖关系。通俗而言,Xref 可以检查代码中函数的调用关系。比如在 moduleA 中的 funA 调用了moduleB 中的funB, 但是moduleB 中并未定义funB,此错误在代码编译期间不...
2015-05-12T10:26:00Z
2015-05-12T10:26:00Z
_00
https://www.cnblogs.com/--00/
【摘要】Xref是一个交叉引用工具,通过分析定义的函数间的调用关系,用于查找函数、模块、应用程序和版本之间的依赖关系。通俗而言,Xref 可以检查代码中函数的调用关系。比如在 moduleA 中的 funA 调用了moduleB 中的funB, 但是moduleB 中并未定义funB,此错误在代码编译期间不... <a href="https://www.cnblogs.com/--00/p/code_erlang_xref.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/limit_system_call_times.html
杂记 -- 时间段内应用程序调用次数限制 - _00
为了避免系统过载, 对系统做负载保护, 往往需要对系统被调用次数做一定的限制, 比如一段时间内调用次数不能超过某个值.先简化下场景, 让描述变得简单一些, 系统在任意60秒内只允许10次调用.絮絮叨叨有一种方案, 是初始化limit(10), 每次调用将limit减1, 每隔60秒, 将limit ...
2015-05-06T04:16:00Z
2015-05-06T04:16:00Z
_00
https://www.cnblogs.com/--00/
【摘要】为了避免系统过载, 对系统做负载保护, 往往需要对系统被调用次数做一定的限制, 比如一段时间内调用次数不能超过某个值.先简化下场景, 让描述变得简单一些, 系统在任意60秒内只允许10次调用.絮絮叨叨有一种方案, 是初始化limit(10), 每次调用将limit减1, 每隔60秒, 将limit ... <a href="https://www.cnblogs.com/--00/p/limit_system_call_times.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/rabbitmq_networking.html
rabbitmq -- networking - _00
RabbitMQ大名鼎鼎, 其networking 部分经常被众多Erlang 程序员, 爱好者分析. 小的时候就见到很多人写过这方面的blog, 比如:1,http://www.blogjava.net/killme2008/archive/2009/11/29/304079.html2,http...
2015-04-11T09:50:00Z
2015-04-11T09:50:00Z
_00
https://www.cnblogs.com/--00/
【摘要】RabbitMQ大名鼎鼎, 其networking 部分经常被众多Erlang 程序员, 爱好者分析. 小的时候就见到很多人写过这方面的blog, 比如:1,http://www.blogjava.net/killme2008/archive/2009/11/29/304079.html2,http... <a href="https://www.cnblogs.com/--00/p/rabbitmq_networking.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_tool_recon.html
Erlang tool -- recon - _00
遇见recon 以来, 每次定位系统瓶颈, 总是能让我眼前一亮. 比如说, 定位非尾递归导致的内存暴涨, 定位引发CPU满载的进程.得心应手,每每额手称庆.recon是ferd 大神 释出的一个 用于生产环境诊断Erlang 问题的一个工具, 不仅仅是对Erlang stdlib 接口的封装, 还有...
2015-04-01T13:35:00Z
2015-04-01T13:35:00Z
_00
https://www.cnblogs.com/--00/
【摘要】遇见recon 以来, 每次定位系统瓶颈, 总是能让我眼前一亮. 比如说, 定位非尾递归导致的内存暴涨, 定位引发CPU满载的进程.得心应手,每每额手称庆.recon是ferd 大神 释出的一个 用于生产环境诊断Erlang 问题的一个工具, 不仅仅是对Erlang stdlib 接口的封装, 还有... <a href="https://www.cnblogs.com/--00/p/erlang_tool_recon.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_tool_lager_overload_protection.html
Erlang tool -- lager overload protection - _00
log 这个事, 说大不大说小又不小. 大点的, 可以用scribe flume 这样的系统去做, 小点的, 也就打印一个调试信息而已. 在Erlang 中, log 这事情确实比较伤, error_logger 是个单点, io:format 容易导致节点崩溃. 在开源社区, lager 算是使用...
2015-03-17T15:38:00Z
2015-03-17T15:38:00Z
_00
https://www.cnblogs.com/--00/
【摘要】log 这个事, 说大不大说小又不小. 大点的, 可以用scribe flume 这样的系统去做, 小点的, 也就打印一个调试信息而已. 在Erlang 中, log 这事情确实比较伤, error_logger 是个单点, io:format 容易导致节点崩溃. 在开源社区, lager 算是使用... <a href="https://www.cnblogs.com/--00/p/erlang_tool_lager_overload_protection.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_ets_something_about_cache_continue.html
Erlang ets -- something about cache continue - _00
上一次说到了实现一个简单cache 的基本思路和想法,http://www.cnblogs.com/--00/p/erlang_ets_something_about_cache.html在文末, 说到了判断single record 内存占用量. 这次继续说说Erlang 数据项内存的相关问题.在...
2015-03-06T07:24:00Z
2015-03-06T07:24:00Z
_00
https://www.cnblogs.com/--00/
【摘要】上一次说到了实现一个简单cache 的基本思路和想法,http://www.cnblogs.com/--00/p/erlang_ets_something_about_cache.html在文末, 说到了判断single record 内存占用量. 这次继续说说Erlang 数据项内存的相关问题.在... <a href="https://www.cnblogs.com/--00/p/erlang_ets_something_about_cache_continue.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_ets_something_about_cache.html
Erlang ets -- something about cache - _00
都说用ets 写一个cache 太简单, 那就简单的搞一个吧, 具体代码就不贴了, 就说说简要的需求和怎么做(说设计有点虚的慌).需求场景>> 查询系统,对于主存储而言,一次写入多次查询所以,cache 需要能实现:UserA 在查询 RecordA 时, UserB 也需要查询RecordA, 就...
2015-03-02T10:44:00Z
2015-03-02T10:44:00Z
_00
https://www.cnblogs.com/--00/
【摘要】都说用ets 写一个cache 太简单, 那就简单的搞一个吧, 具体代码就不贴了, 就说说简要的需求和怎么做(说设计有点虚的慌).需求场景>> 查询系统,对于主存储而言,一次写入多次查询所以,cache 需要能实现:UserA 在查询 RecordA 时, UserB 也需要查询RecordA, 就... <a href="https://www.cnblogs.com/--00/p/erlang_ets_something_about_cache.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/erlang_process_structure_refc_binary.html
Erlang process structure -- refc binary - _00
Erlang 的process 是虚拟机层面的进程,每个Erlang process 都包括一个 pcb(process control block), 一个stack 以及私有heap .这部分的姿势, 在各种论文中都有提到. 网上也有各种各样的解读,包括但不仅限于:1,http://fengch...
2015-02-24T13:03:00Z
2015-02-24T13:03:00Z
_00
https://www.cnblogs.com/--00/
【摘要】Erlang 的process 是虚拟机层面的进程,每个Erlang process 都包括一个 pcb(process control block), 一个stack 以及私有heap .这部分的姿势, 在各种论文中都有提到. 网上也有各种各样的解读,包括但不仅限于:1,http://fengch... <a href="https://www.cnblogs.com/--00/p/erlang_process_structure_refc_binary.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/4288484.html
Erlang pool management -- RabbitMQ worker_pool 2 - _00
上一篇已经分析了rpool 的三个module , 以及简单的物理关系. 这次主要分析用户进程和 worker_pool 进程还有worker_pool_worker 进程之间的调用关系. 在开始之前, 必须先明确一点, 就是一个worker_pool_worker 进程只有在处理完一个用户进程的任...
2015-02-12T10:44:00Z
2015-02-12T10:44:00Z
_00
https://www.cnblogs.com/--00/
【摘要】上一篇已经分析了rpool 的三个module , 以及简单的物理关系. 这次主要分析用户进程和 worker_pool 进程还有worker_pool_worker 进程之间的调用关系. 在开始之前, 必须先明确一点, 就是一个worker_pool_worker 进程只有在处理完一个用户进程的任... <a href="https://www.cnblogs.com/--00/p/4288484.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/4287209.html
Erlang pool management -- RabbitMQ worker_pool - _00
在RabbitMQ中,pool 是以worker_pool 的形式存在的, 其主要用途之一是对Mnesia transaction的操作. 而在RabbitMQ 中, pool 中的worker 数量是固定不变的, 是和虚拟机的schedulers 相关.这次会首先分别分析设计worker_pool...
2015-02-11T15:50:00Z
2015-02-11T15:50:00Z
_00
https://www.cnblogs.com/--00/
【摘要】在RabbitMQ中,pool 是以worker_pool 的形式存在的, 其主要用途之一是对Mnesia transaction的操作. 而在RabbitMQ 中, pool 中的worker 数量是固定不变的, 是和虚拟机的schedulers 相关.这次会首先分别分析设计worker_pool... <a href="https://www.cnblogs.com/--00/p/4287209.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/--00/p/4284912.html
Erlang pool management -- Emysql pool optimize - _00
在上一篇关于Emysql pool (http://www.cnblogs.com/--00/p/4281938.html)的分析的最后提到现在的emysql_conn_mgr gen_server 进程属于单点,也就是所有的pool 的管理调度都是由一个进程来完成.如果在同一个Erlang nod...
2015-02-10T13:02:00Z
2015-02-10T13:02:00Z
_00
https://www.cnblogs.com/--00/
【摘要】在上一篇关于Emysql pool (http://www.cnblogs.com/--00/p/4281938.html)的分析的最后提到现在的emysql_conn_mgr gen_server 进程属于单点,也就是所有的pool 的管理调度都是由一个进程来完成.如果在同一个Erlang nod... <a href="https://www.cnblogs.com/--00/p/4284912.html" target="_blank">阅读全文</a>