`
cwqcwk1
  • 浏览: 86743 次
文章分类
社区版块
存档分类
最新评论
文章列表
这篇文章相当于本博客 erlang 专栏的目录页,目的是引导读者,可以很快定位到想看的文章。这里笼统的概括为erlang基础知识、常见问题、节点通信、mnesia常见问题,以及内部实现。 基础知识 Erlang/OTP 构建 Application Erlang/OTP 监督者(Supervisor) Erlang热部署 - 心跳机制(heart) Erlang热部署 - 模块热更新(code)
这篇文章相当于本博客 erlang 专栏的目录页,目的是引导读者,可以很快定位到想看的文章。这里笼统的概括为erlang基础知识、常见问题、节点通信、mnesia常见问题,以及内部实现。 基础知识 Erlang/OTP 构建 Application Erlang/OTP 监督者(Supervisor) Erlang热部署 - 心跳机制(heart) Erlang热部署 - 模块热更新(code)
这篇文章相当于本博客 erlang 专栏的目录页,目的是引导读者,可以很快定位到想看的文章。这里笼统的概括为erlang基础知识、常见问题、节点通信、mnesia常见问题,以及内部实现。 基础知识 Erlang/OTP 构建 Application Erlang/OTP 监督者(Supervisor) Erlang热部署 - 心跳机制(heart) Erlang热部署 - 模块热更新(code)
从 rabbitMQ 代码中找到 gen_server2 , 对gen_server进行了一些优化。看到前辈写的博文也提到这个,引发了我的思考。见gen_server2 - OTP gen_server优化版。gen_server2 引发的思考 正如 litaocheng 所说的: gen_server 和 gen_server2 最大的不同是: gen_server2 收到任何一条消息放到外部的队列中,当VM内部消息队列为空后,才进行消息处理,继续循环 gen_server 收到任何一条消息后,立即进行处理,处理完成后继续循环 其次,还有一个很重要的不同点: gen_server2 使用的 ...
erlang shell是用户与 erlang 运行时系统交互的界面程序。事实上,erlang VM的运行不依赖任何shell,只要在启动的时候添加参数detached就可以脱离终端。 -detached Starts the Erlang runtime system detached from the system console. Useful for running daemons an ...
任何语言在使用中都会遇到这样那样的问题,erlang也是。这里整理下我遇到的一些问题,避免继续踩坑。说实话,“防坑指南”这个标题有点过于标新立异,不过还是希望能引起重视,避免在实际开发中重复犯这些问题。 '--' 运算与 '++'运算 1> [1,2,3,4] -- [1] -- [2]. [2,3,4] 算是erlang经典的问题了。这是从后面算起的,先算 [1] -- [2] ,得到 [1] 后被 [1,2,3,4] --,最后得到 [2,3,4] '++'运算也是一样的,也是从后面开始算起。 2> [1,2,3,4] -- [1] ++ [2,3,4].[] 另外,以下这 ...
Joe Armstrong在描述Erlang的设计要求时,就提到了软件维护应该能在不停止系统的情况下进行。在实践中,我们也因为这种不停止服务的热更新获益良多。那么Erlang是如何做到热更新的呢?这就是本文要讨论的问题。 在前面的文章也说到了。erlang VM为每个模块最多保存2份代码,当前版本'current'和旧版本'old',当模块第一次被加载时,代码就是'current'版本。如果有新的代码被加载,'current'版本代码就变成了'old'版本,新的代码就成了'current'版本。erlang用两个版本共存的方法来保证任何时候总有一个版本可用,对外服务就不会停止。 前言 为什么代码 ...
我们知道,数组的第一个元素下标是 0。数组的范围也就是从 array[0] 到 array[size – 1]。 但实际上C/C++支持正负下标。 负下标必须在数组边界内;否则结果不可预知。 以下代码显示了正数组和负数组下标: #include <iostream> using namespace std; int main() { int intArray[1024]; for (int i = 0, j = 0; i < 1024; i++) { intArray[i] = j++; } cout << ...
最近有朋友想学习erlang,问我有什么好入门的学习资料。我也借此机会整理一下 下载地址:http://download.csdn.net/detail/cwqcwk1/8395531 入门资料: erlang文档手册(最适合入门) erlang编程介绍 erlang位运算与二进制解析 erlang二进制高效 ...
最近有朋友想学习erlang,问我有什么好入门的学习资料。我也借此机会整理一下 下载地址:http://download.csdn.net/detail/cwqcwk1/8395531 入门资料: erlang文档手册(最适合入门) erlang编程介绍 erlang位运算与二进制解析 erlang二进制高效 ...
最近有朋友想学习erlang,问我有什么好入门的学习资料。我也借此机会整理一下 下载地址:http://download.csdn.net/detail/cwqcwk1/8395531 入门资料: erlang文档手册(最适合入门) erlang编程介绍 erlang位运算与二进制解析 erlang二进制高效 ...
erlang send是一个很基础的消息发送函数,用于进程把一个消息发给另外一个进程。这个函数可以同时用于本地节点进程通信,或者和远程节点进程之间的通信。 前言 最近有同事遇到erlang:send导致消息堆积问题,这个引起了我的强烈关注。我也看了这块的代码,这里简单做个分享。 函数原型: erlang:send(Dest, Msg, Options) -> Res Options可以是以下2个: nosuspend If the sender would have to be suspended to do the send, nosuspend is returned instea ...
Svn有很多常用功能,比如代码比较,回退,还原,归档等等,很多时候我们想使用到这些svn功能,但又不想大费周章建立服务端SVN库。其中,建立svn库主要有两种办法,一种就是装服务端版svn软件,另一种就是文章所讲的,利用TortoiseSVN建立本地SVN库。 前提是你已安装了TortoiseSVN这个客户端版本的svn工具,下载地址猛击这里建立一个新的文件夹,这里命名为local_svn,然后,右键这个文件夹,选择TortoiseSVN菜单,选择 Create repositiory here ,如下: 然后就可以了。如下提示: 如果想使用svn,这样就好: 点击ok就可以使用了。是不是 ...
erlang提供了binary_to_term,把一个二进制数据转为原始的erlang数据。但是,这个函数也有副作用。如果直接将对端传来的数据做一次 binary_to_term,就可能会导致VM crash掉。 binary_to_term 副作用 这是因为二进制数据带有原子时,binary_to_ ...
erlang提供了两个函数用于erlang数据与二进制的转换,term_to_binary 把erlang数据转成一个二进制数据,binary_to_term 则是把二进制数据转为原始的erlang数据。这两个函数都是c实现的,效率很高,可用于序列化和反序列化数据,可以被直接用来当作网络封包协议。文章主要探讨这种二进制协议数据的组织形式,以及用erlang语言实现binary_to_term 前言 接触erlang可能有这些疑问,或者听别人这样说起: 1、erlang数字可以无限长,远远超过了INT64所能表示的范围,怎么表示的? 2、原子不能太长,会影响封包大小?
Global site tag (gtag.js) - Google Analytics