erlang

  • [Ejabberd]安装及集群搭建

    以前个人记录在chinaunix的部署记录 部署前沿 本次集群部署Ejabberd采用默认Mnesia数据库作为数据存储模式,暂不考虑MySQL替代默认数据库的情况. 一个XMPP域是由一个或多个ejabberd节点伺服的. 这些节点可能运行在通过网络连接的不同的机器上. 它们都必须有能力连接到所有其他节点的4369端口, 并且必须有相同的 magic cookie (在所有节点上,文件 ~ejabberd/.erlang.cookie 必须是相同的 ). 这是必须的,因为所有节点交换关于已连接

    erlang, xmpp, ejabberd, clusterMay 3

  • 安装rebar时提示"Uncaught error in rebar_core"
    安装rebar时提示"Uncaught error in rebar_core"

    按照教程安装rebar,从 https://github.com/rebar/rebar/ 下载编译好的版本(注:网上大多数都是说的http://github.com/rebar/rebar/wiki/rebar这个地址,但是这个地址找不到,应该是已经更新了),或者直接下载源码包到本地,然后自己编译: git clone git://github.com/rebar/rebar.git cd rebar ./bootstrap 安装成功会提示(https://github.com/rebar/r

    erlang, 安装March 11

  • 开启cowboy的第一个程序
    开启cowboy的第一个程序

    开始: Erlang不仅是一门语言,而且是一个操作系统对于你的应用程序.Erlang developers 很少写standalone modules, 它写库或应用,然后把这些组织在一起叫做一个release.一个release包含Erlang VM plus 的所有应用程序需要运行的节点,因此他可以直接的推到生产.(也就是通常使用erlang写一些库和应用,然后把这些库和应用打包在一起发布,这个release中包含了所有需要的东西) 本章引导你完成所有关于Cowboy 设置的步骤, 写你的第

    erlang, cowboyFebruary 28

  • OTP应用与监督机制
    OTP应用与监督机制

    OTP应用的组织形式: 应用目录的名字 <application-name>[-Version] 以及 应用目录下的子目录. 为应用添加元数据: {application, static_world, [ {description, "Cowboy static file handler example."}, {vsn, "1"}, {modules, []}, {registered, [static_world_sup]}, {applicatio

    erlang, OTP应用与监督机制February 27

  • lnmp+erlang安装过程问题汇总

    安装LNMP+Erlang环境,在安装nginx时候碰到如下错误. nginx: [emerg] could not build the types_hash, you should increase either types_hash_max_size: 1024 or types_hash_bucket_size: 32 解决办法:在nginx配置文件http模块添加:types_hash_max_size 2048. http { include mime.types; default_t

    nginx, erlang, lnmp, lampFebruary 12

  • ranch学习
    ranch学习

    ranch 下载网址:https://github.com/ninenines/ranch ranch是什么? 官方文档解释: ranch 是为TCP协议实现的socket 获取池. ranch 基于小的代码基和低的延迟,为你提供需要获取TCP链接所需要的一切,然而还能够简单的作为应用或嵌入到应用中使用.ranch 提供模块化的设计,允许你在某个监听器中选择具体的传输协议(ranch 允许多个应用同时使用). 监听器在一个端口上接收和管理连接,并且包含限制并发连接数的实用功能.所有连接均以有序形

    erlang, 流程图, ranch, 进程监督树February 3

  • [转载]关于Erlang和SMP的一些说明

    原文:http://groups.google.com/group/erlang-questions/browse_thread/thread/7827f5e32681ca8e by.Kenneth Erlang/OTP team, Ericsson 译:ShiningRay 以下是一些Erlang SMP实现的细节和与性能与伸缩性相关一些简单介绍. -=-=-=-=-=- 几周之内还有有一个关于多核如何运作以及未来如何发展的更详细的介绍.我打算将一些内容放在我的报告中,将于9月27日的ICFP

    erlang, smpJanuary 21

  • CRC16 CRC-CCITT (0xFFFF) Release

    在厦门-sunface建议写,将crc16再次升级,进行优化. 1.CRCccitt XModem版本 %%%------------------------------------------------------------------- %%% @author <yunnet> %%% @copyright (C) 2015, %%% @doc CRCccitt XModem %%% CRC-CCITT (0xFFFF) %%% @end %%% Created : 15 Jan 20

    erlang, xmodem, crc16, 0xFFFF, CRC-CCITT, CRCccittJanuary 15

  • CRC16 CRC-CCITT (0xFFFF) 升级版

    http://my.codeweblog.com/yunnet/blog/365241 发现上次写的CRC16速度太慢,所以升级一下, 1.CRCccitt XModem版本 %%%------------------------------------------------------------------- %%% @author <yunnet> %%% @copyright (C) 2015, %%% @doc CRCccitt XModem版本 %%% CRC-CCITT (0x

    erlang, xmodem, crc16, 0xFFFF, CRC-CCITT, CRCccittJanuary 15

  • CRC16 CRC-CCITT (0xFFFF)

    在erlang库中,只有erlang:crc32位的,需要16位的,就写了了一下: 在网上找到CRCccitt XModem版本的: %%%------------------------------------------------------------------- %%% @author <yunnet> %%% @copyright (C) 2015, %%% @doc %%% CRCccitt XModem(0x0000) %%% @end %%% Created : 5 Jan

    erlang, crc16, 0xFFFF, 0x0000January 8

  • [原创]Erlang 版本的选择

    由于不同开源软件对 Erlang 版本的选取有所不同,可能会存在需要多 Erlang 版本的情况.目前已知 Riak requires Erlang R15B01. Note: don't use Erlang version R15B02 or R15B03, for the moment, as it causes an error with riak-admin status commands. 开源组件组目前选取的版本为 otp_src_17.0.tar.gz . 安装命令 wget h

    erlangNovember 7

  • Perl, Python, Erlang, C语言运行速度的比较
    Perl, Python, Erlang, C语言运行速度的比较

    主要是通过 蒙特卡罗法来计算圆周率.代码如下: 1) pi.pl: $time1 = time(); foreach (1..20000000) { my($x, $y) = (rand(), rand()); if(sqrt($x ** 2 + $y ** 2) < 1) { $total += 1; } } $pi = 4.0 * $total / 20000000; $time2 = time(); print "Pi = " , $pi, " time = &q

    python, perl, erlang, C语言运行速度的比较October 29

  • [转载]gen_server边缘

    我们以 Module 代表 gen_server 的 callback 模块 1, 实现 gen_server behaviour 的模块会产生一个新的 process 么? 毫无疑问,太会了!通过调用 proc_lib:start_link/5 创建 process . 2, gen_server:start_link/3,4 中的 Options 参数有什么用处? Options 中只有这几个选项:{debug,Dbgs} | {timeout,Time} | {spawn_opt,SOpt

    erlang, gen_serverSeptember 28

  • centos内安装erlang

    Adding repository entry wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm Installing Erlang sudo yum install erlang

    erlang, centosAugust 24

  • #erlang#学习笔记

    一.erlang的模式匹配问题:Lhs=Rhs Lhs指模式,可以是[X,Y].{X,Y}或X之类的列表,元组和变量,Rhs为值(不用怎么解释了吧).在erlang中,若想得到python中"...[...]"列表引索的效果,需要写一个和值相适应的模式,并且在模式中把想求的值使用一个变量代替(和py中的形式参数类似),再匹配值: 例如: 1.现在捆绑一个变量:X = {232,34,"hello"}. 2.接着我们可以定义一个模式:{_,K,Z}. #模式的结构必须

    erlangAugust 12

  • [转载]erlang 进程的 hibernate

    简单的理解: hibernate 可以使你闲置的 erlang 进程马上进行 gc,因为进程处于 receive 状态下是不会 gc 的. 在性能调优时发现,gc 对于消息发送速度的影响还是非常大的. 关于 erlang gc 问题也可以参看这个 Recently, as part of RabbitMQ server development, we ran into an interesting issue regarding Erlang's per-process garbage coll

    erlang, HibernateJune 21

  • [原创]导读"淘宝褚霸关于 gen_tcp 的分享"

    本文纯粹作为学习淘宝褚霸关于 gen_tcp 所分享内容的摘录,方便记忆和后续翻阅.原文详细内容请移步 这里 . ========= 我是美丽的分割线 =========== 0.< Erlang gen_tcp相关问题汇编索引 > 1.< Erlang版TCP服务器对抗攻击解决方案 > 本文列举了 TCP 服务器各种可能被攻击的情况,有网友给出了可能的解决办法. 2.< gen_tcp接受链接时enfile的问题分析及解决 > 知识点: a.确定 EMFILE 的含义

    erlang, gen_tcpJune 19

  • [原创]调用 proc_lib:spawn/1 和 erlang:spawn/1 有什么区别

    在<Erlang OTP 设计原则>中的 "Sys与Proc_Lib" 一节中有如下描述: 模块 proc_lib 中的函数可以用于实现一种特殊进程,遵照 OTP 设计原则,但不使用标准行为.它们也可以用于实现用户自定义的(非标准)行为. 那么什么是符合 OTP 设计原理而又不使用标准行为的 "特殊进程"呢? 以一种可以让进程放入监督树的方式启动: 支持 sys 的调试功能: 关注系统消息 . 什么是系统消息? 系统消息是用于监督树中的.带有特殊含义的消

    erlang, proc_lib, spawnJune 19

  • [原创]Erlang 的 gen_tcp:send 为什么没有 timeout 选项

    在 gen_tcp 文档中有如下说明: The fact that the send call does not accept a timeout option, is because timeouts on send is handled through the socket option send_timeout. The behavior of a send operation with no receiver is in a very high degree defined by the

    erlang, timeout, send, gen_tcpJune 19

  • [原创]Erlang中binary_to_term和term_to_binary的使用场景

    在<Erlang程序设计>第五章中有如下说明: @spec term_to_binary(Term) -> Bin 该函数可以将任何 Erlang 项式转化为相应的二进制数据.而转换得到的二进制数据是以所谓的"外部数据格式"存储的.这种数据可以用于文件存储.网络传输等.而且在转换之后还可以从这些二进制数据中还原出原始的数据项.该函数在需要对复杂的数据结构进行文件存储和网络传输时极为有用. 在<erts-x.x.x>的 Reference Manual -&

    erlang, binary_to_term, term_to_binaryJune 19

  • 2013 北京 QCon热点分享
    2013 北京 QCon热点分享

    这是第二次参加在北京的 QCon 会议了,有了上次的美好回忆,对今年的各项主题也都有了更高的期许,今年还是一如既往的紧贴当下最热的技术,如新锐语言Go.Erlang,以及移动领域,从敏捷到团队,从编程语法到架构设计,再加上今年新加入的用户体验与产品设计,涵盖的内容相当广泛,总让人感到分身乏术,下面就我参加的几个有价值的专题做一个简单的介绍: # Programming Style and Your Brain -- Douglas Crockford 这是整个会议的开篇,看到 Douglas C

    erlang, qcon, NODE.jsJune 11

  • [转载]stackoverflow 上关于 rebar 的讨论

    [ rebar-include-ext-libs-error ] Your config file worked for me so I'd suggest doing the following: make sure you have git installed put the most recent build of rebar in your project directory use a Makefile like the one I described here delete your

    erlang, rebarJune 9

  • [原创]Character Generator Protocol

    以下内容来自 维基百科 . === Character Generator Protocol (CHARGEN) 是在 RFC 864 中由 Jon Postel 定义的 Internet Protocol Suite 中的一个服务.主要用于测试.调试,以及测量的目的.该协议很少被使用,因为其固有的设计缺陷容易导致误用和攻击. 任意 host 都可以通过 TCP 或 UDP 方式连接到支持 Character Generator Protocol 并启用了该服务的服务器上,默认端口号为 19.当

    erlang, chargenMay 15

  • [原创]Erlang 之 debugger 调试简介
    [原创]Erlang 之 debugger 调试简介

    Erlang 提供了一种图形化的源码级别调试器 -- debugger.在一些情况下,可以用于对代码进行单步跟踪调试.下面举例说明如何使用这个工具. 首先需要明确的是,若想要在调试器中启用某个模块,必须先让调试器 解释 该模块.调试器同时需要 .erl 源文件(用于显示源码)和 .beam 字节码文件(需要带有调试信息). 编译带调试信息的 .beam 文件,要求在编译 .erl 文件时使用 +debug_info 标志.例如 erlc +debug_info -o ebin src/*.erl

    debugger, erlangMay 13

  • [转载]erlang 中 socket 相关知识点

    a. 最核心的概念 - socket 控制进程 b. 基本的 C/S 结构的例子(服务器只能处理一个客户端连接) c. 顺序型服务器的例子(服务器顺序的处理客户端的请求,每次只能处理一个,处理完一个处理下一个) d. 并发型服务器的例子(服务器并发的处理多个客户端的请求) e. 控制逻辑 - 主动型消息接收(非阻塞) f. 控制逻辑 - 被动型消息接收(阻塞) g. 控制逻辑 - 混合型消息接收(半阻塞) [最基本的 Erlang C/S 结构的例子] 创建一个 socket 的进程(调用 ge

    erlang, socketMay 12

  • [整理]Erlang 中的 supervisor

    [概况] supervisor behaviour 是一个用来实现一个 supervisor 进程来监控其他子进程的模块: 子进程可以是另一个 supervisor 进程,也可以是一个 worker 进程: worker 进程一般使用 gen_event,gen_fsm 或 gen_server behaviour 来实现 : 一个使用 supervisor behaviour 实现的 supervisor 有一个接口方法的标准集,包括跟踪和错误报告的功能: supervisor 机制用来构建一

    erlang, supervisorMay 9

  • [转载]erlang 如何自定义 behaviour

    什么是 behaviour ? 使用 erlang 编程的人都知道 OTP,而基于 OTP 框架创建进程的时候,常用的有四大 behaviour: supervisor gen_server gen_fsm gen_event 那么什么是 behaviour?是做什么用的呢? 首先,写这篇文章之前我上谷歌查过人家对 behaviour 的定义,当然,是非官方定义,我一直没找着官方定义,如果有人有一个比较确切的定义,麻烦告诉我,大家共同学习嘛. 在 StackOverFlow 上这篇 文章 中指明

    erlang, behaviourMay 9

  • Erlang并发机制 –进程调度
    Erlang并发机制 –进程调度

    Erlang调度器主要完成对Erlang进程的调度,它是Erlang实现软件实时和进程之间公平使用CPU的关键.Erlang运行时,有4种任务需要被调度:进程,Port,Linked-in driver,Erlang虚拟机的系统级活动. Erlang调度器主要有以下特点: 1. 进程调度运行在用户空间 :Erlang进程不同于操作系统进程,Erlang的进程调度也跟操作系统完全没有关系,是由Erlang虚拟机来完成的: 2. 调度是抢占式的:每一个进程在创建时,都会分配一个固定数目的reduct

    erlang, ProcessApril 2

  • Erlang并发机制 – 垃圾回收
    Erlang并发机制 – 垃圾回收

    Erlang中每个进程都有独立的堆内存,默认的大小是233个words(可配置),并以Fibonacci序列的顺序增长(233对应fib(11)).不过,当堆内存增大到一定程序时,增长速度减缓,比如内存大于fib(35)=14M的时候,堆内存开始不以Fibonacci序列增长(具体参见[$R15B_OTP_SRC/erts/emulator/beam/erl_gc.c --> erts_init_gc]里的说明).一般情况下,进程所用到的数据都放在各自的堆内存中. Erlang的GC机制跟其它语

    erlangApril 2

  • Erlang Top
    Erlang Top

    今天是年前最后一天上班,晚上就坐车回家了,提前祝各位新年快乐,马到功成,2014齐头并进,健康平安 1.在服务器运行中,经常会出现内存orCPU占用过高,可以通过top来查看 2.如果在Erlang虚拟机中出现单个进程占用过高或跑死循环了怎么为呢,怎么定位,同样Erlang提供了监控的模块etop 在erlang shell 中运行: etop:help(). 可以查看帮助 在命令行执行:etop:start().可以弹出图形界面,在options可以进行参数排序查看和行数显示设置 除了图形界面

    erlangJanuary 27

  • Erlang OTP gen_server起步

    Erlang OTP/gen_server实现简单频道服务,没有用ETS表存储,在record中更新: 1.alloc/0:获取一个空闲频道, 2.free/1:释放一个已经使用的频道 gen_server:start_link({local,?MODULE},?MODULE,..):启动一个本地服务器 gen_server:call(?Module,Term):对服务器的远程调用 handle_call/3:和gen_server:call之间交互实现RPC handle_info/2:处理发

    erlangOctober 26

  • erlang 双重循环愚人之见解

    第一个 -module(loop). -compile(export_all). start() -> A = lists:seq(23107237, 23107247), B = lists:seq(113269804, 113269814), [{X/1000000, Y/1000000} || X <- A, Y <- B]. 第二个 -module(loop2). -compile(export_all). start() -> for(23107237, 23107247

    erlang, 循环, forAugust 21

  • [Erlang闪电入门] 004后篇--分布式编程

    明天要回家一个星期了,好好休息下.今天找到别人翻译的Erlang编程手册,值的好好读一遍. 所谓分布式的Erlang应用是运行在一系列Erlang节点组成的网络之上.这样的系统的性质与单一节点上的Erlang系统并没有什么不同.分布式这是个"大词",Erlang从语言原生角度支持分布式编程,相比于java简单不少. 一.分布式机制 下列的BIFs是用于分布式编程: spawn(Node, Mod, Func, Args) 启动远程节点的一个进程 spawn_link(Node, Mod

    erlangJune 25

  • [Erlang闪电入门] 003中篇--并发编程

    Erlang中的process--进程是轻量级的,并且进程间无共享.查了很多资料,似乎没人说清楚轻量级进程算是什么概念,继续查找中...闲话不 提,进入并发编程的世界.本文算是学习笔记,也可以说是<Concurrent Programming in ERLANG>第五张的简略翻译. 1.进程的创建 进程是一种自包含的.分隔的计算单元,并与其他进程并发运行在系统中,在进程间并没有一个继承体系,当然,应用开发者可以设计这样一个继承体系. 进程的创建使用如下语法: java 代码 Pid = spa

    erlangJune 25

  • [Erlang闪电入门] 002前篇

    读erlang.org上面的Erlang Course四天教程 1.数字类型,需要注意两点 1)B#Val表示以B进制存储的数字Val,比如 7> 2#101. 5 二进制存储的101就是10进制的5了 2)$Char表示字符Char的ascii编码,比如$A表示65 2.比较难以翻译的概念--atom,可以理解成常量,它可以包含任何字符,以小写字母开头,如果不是以小写字母开头或者是字母之外的符号,需要用单引号包括起来,比如abc,'AB' 3.另一个概念--Tuple,有人翻译成元组,可以理解

    erlangJune 25

  • [Erlang闪电入门] 001Erlang基础概念

    1.1. 基础知识 1.1.1. 进程 erlang的process并不是OS的进程,而是虚拟的进程:进程之间的切换是在用户态进行,开销会比OS的进程小得多. 以后只要提到进程,没有特殊说明,都是指erlang的进程: 最多能有多少进程?没有明确限制,与内存有关,物理内存用完时,会使用虚拟内存: 1.1.2. OTP OTP: Open Telecom Platform, 不要被名字所混淆,它实际上是用于一套搭建分布式高容错性服务器的程序库: 1.1.3. 变量赋值特性 变量只能被赋值一次,即不

    erlangJune 25

  • [Erlang闪电入门] 000序

    先贴下 erlang到底是啥东西 Erlang是一种面向并发 (Concurrency Oriented),面向消息( Message Oriented)的函数式 (Functional)编程语言. 面 向并发说明 Erlang支持大规模的并发应用,我们可以在应用中处理成千上万的并发,而不相互影响.面向消息,其实是为并发服务!我们应该都熟悉多线程,熟悉加锁解 锁操作,熟悉可能出现的资源竞争与死锁.在Erlang的世界里,我们可以将轻轻的抹去这些令人苦恼的词汇. Erlang的世界,每个处理都是独

    erlangJune 25

  • Erlang学习第二天
    Erlang学习第二天

    今天学习erlang的进程,并发编程.erlang的并发编程很简单,只有三个原语: 1)产生进程, spawn 2) 发送消息 ! 3) 消息接收 receive ... end erlang进程之间通过消息进行传递. 今天用一个进程字典作为联系,也就是put,get. 向目标进程插入数据,然后查询数据,就那么简单. 代码如下: -module(servertest). -export([start/0, stop/0, myget/1, myset/2]). %insertdata()-> %

    erlang, 进程May 21

  • erlang连接acceptor池ranch源码分析

    终于把ranch看完了,放到了github上,https://github.com/astutesparrow/ranch 为了阅读方便,把版权信息去掉了,加上了所有的中文注释,和我自己的理解,doc目录有画了一张监督树的图 只是为了阅读代码方便,去掉版权信息还是感觉非常不妥的 感觉ranch还是挺简单的,比前段时间看的lager简单多了

    pool, erlang, ranch, acceptorApril 12

  • 使用callback实现自定义的erlang行为模式

    之前erlang中自定义行为模式,需要导出behaviour_info函数,比如: -module(gen_foo). -export([behaviour_info/1]). behaviour_info(callbacks) -> [{foo, 0}, {bar, 1}, {baz, 2}]; behavior_info(_) -> undefined. 在需要实现gen_foo行为模式的模块,添加-behaviour(gen_foo),实现相关的函数就行. 这种方式的缺点是,实现模块在实

    erlang, callback, behaviour, 自定义行为模式, 行为模式April 10

  • lager:error()调用的完整流程分析

    这一节分析一条日志记录的完整流程 假设源代码中要打印日志,有这么一行 lager:error([{request, RequestID},{vhost, Vhost}], "Permission denied ~s", [User]) 经过上一节的分析,那么经过lager的transform后,会变成: lager:dispatch_log(error, Traces, Message, Arguments, 4096) error:日志级别 Traces:需要追踪的日志属性,有预置的

    erlang, Error, log, lager, dispatch_logMarch 30

  • erlang的时间处理

    os:timestamp() = Timestamp Timestamp = {MegaSecs :: integer() >= 0, 10^6 秒 Secs :: integer() >= 0, 秒 MicroSecs :: integer() >= 0} 微秒 返回操作系统的时间戳. erlang:now() -> Timestamp 返回时间戳,和os:timestamp()的区别在于,now的每次调用都会返回不同的时间值,是不准确的.os:timestamp()非常适合日之

    erlang, timestamp, time(), Now, 时间管理March 30

  • erlang的类型规范type和opaque的区别

    erlang中声明新类型,使用type和opaque关键字 type的使用 -module(module1). -export_type([my_tup2/0]). -type my_tup2() :: {my_tup2, atom(), atom()}. -module(module2). -export([main/0]). -spec foo2(module1:my_tup2()) -> ok. foo2({my_tup2, _, _}) -> ok. main() -> foo2

    erlang, type, opaque, specificationMarch 30

  • 蛋疼的erlang dialyzer

    dialyzer:erlang的静态代码分析工具 -module(module1). -export([main/0]). -export_type([my_tup2/0]). -opaque my_tup2() :: {atom(), atom()}. -spec foo5(my_tup2())-> ok. foo5({_, _}) -> ok. main() -> foo5({a, b}). 这段代码,使用dialyzer分析居然报错 按照learnyousomeerlang作者的说

    erlang, type, dialyzer, opaqueMarch 30

  • lager trace file的流程和实现分析

    tracing是跟踪的意思,在lager中指的是跟踪用户打印的日志,根据属性做日志消息的重定向,如果没有tracing,那么lager没法做到按模块打印日志. 调用 lager:trace_file("logs/trace.log", [{module, myModule}], error),表明 myModule 模块中的日志打印语句,级别在error之上的日志,都会被保存到文件trace.log中. 第一个参数是文件名:第二个参数是filter过滤器,可以包括自定义属性:第三个是拦

    erlang, File, trace, lager, tracingMarch 28

  • 解析Erlang日志组件lager的监督树和模块
    解析Erlang日志组件lager的监督树和模块

    lager_app 应用行为模式实现 Handlers = [{ lager_console_backend, info}, { lager_file_backend, [ {"log/error.log", error, 10485760, "", 5}, {"log/console.log", info, 10485760, "", 5} ]}]; 函数 expand_handlers,最终要返回{Module, Conf

    erlang, lager, lager_console_backend, lager_file_backend, lager_handler_watcherMarch 21

  • Linux安装Erlang配置开发环境

    这边插一句,如果大家学Erlang,建议还是到 Linux环境下,这样其实也是能学到不少知识,毕竟现在市面上主流的服务器都是Linux,所以如果你现在还只是会在Window下的这一套,那就来到Linux下学学吧. 搜索了很多资料都说到,如果库不全的话,编译安装的时候会报各种错误,所以我们站在巨人的肩膀上. 首先,打好库: sudo apt-get install build-essential sudo apt-get install libncurses5-dev sudo apt-get i

    erlangMarch 20

  • erl 启动参数 -config

    erl -config so_mon.config so_mon.config 文件 [ {os_mon,[{start_memsup,true},{start_cpu_sup,true},{start_disksup,true},{start_os_sup,true}]} ].

    erlangMarch 20

  • memsup 模块

    memsup模块会定时检测系统的内存使用情况,当内存使用超过一个值后会触发下面的两个事件: {system_memory_high_watermark, []}和 {process_memory_high_watermark, Pid} 这两个事件默认被alarm_handler模块处理. 还有一个值得注意的是事件触发后,这两个事件会被自动清除. 如果清除内存后,又超过内存使用警戒线,将会再次触发事件 还需要注意的是memsup属于os_mon模块的一个子功能,需要使用memsup功能,则要启动

    erlang, memsupMarch 20

  • mnesia库使用

    1.如果一个节点需要创建disc_copies属性的数据库,需要调用create_schema/1接口.否则只能创建ram_copise属性的数据库 2.调用create_schema接口需要停止mnesia库,stop/0 3.怎么在同一个节点下创建多个mnesia库?

    erlang, mnesiaMarch 20