#从源码编译安装Erlang
1. wget http://www.erlang.org/download/otp_src_r16b.tar.gz -p /usr/local/src
2. tar zxvf otp_src_r16b.tar.gz -c /usr/local/src
3. cd otp_src_r16b
4. ./configure --prefix=/usr/local/erlang
5. make
6. make install
7. 将"/usr/local/erlang/bin"加入PATH #ets相关操作 [1]
ets:all() %列出所有的ETS Table
ets:i() %给出一个ETS Table的清单 包含表的类型,数据量,使用内存,所有者信息
ets:i(tb) %输出ets中tb表的数据 #erlc编译文件到指定目录
erlc -o ../ebin hello_world_app.erl #导出所有函数
-compile(export_all). #使用erlang的dbg调试程序 [1] [2] [3]
dbg:tracer().
dbg:p(all,c).
dbg:tpl(test_mod, test_fun, dbg:fun2ms(fun(_) -> exception_trace() end)).
dbg:stop_clear(). %% dbg:tpl(test_mod, '_', dbg:fun2ms(fun(_A) -> [_A,mydebug] end)). #输出当前函数的调用栈
ZZ = try throw(a)
catch
throw:X ->
{X, erlang:get_stacktrace()}
end,
io:format("get_stacktrace:~p~n", [ZZ]), #清空绑定变量
f(). %% 清空所有绑定变量,在测试的时候非常有用
f(A). %% 清空指定的绑定变量A #erlang中的queue实例
Q = queue:new(),
io:format("====is_queue(Q):~p====~n",[queue:is_queue(Q)]),
Q1 = queue:in(a, Q),
Q1_len = queue:len(Q1),
io:format("====Q1_len:~p====~n",[Q1_len]),
Q2 = queue:in(b, Q1),
Q3 = queue:in(c, Q2),
Q3_len = queue:len(Q3),
io:format("====Q3_len:~p====~n",[Q3_len]),
io:format("====Q3_to_list:~p====~n",[queue:to_list(Q3)]).
输出结果:
====is_queue(Q):true====
====Q1_len:1====
====Q3_len:3====
====Q3_to_list:[a,b,c]==== #OTP中的handle_call的参数说明
handle_call(_Request, _From, State)
From是发送请求的客户端进程的PID,State则是客户端的当前状态。 #rebar.config中包含本地的库
{rsync, "file:///home/alex/projects/cowboy"} =========================
1> erlang:universaltime(). %% erlang:universaltime/0 这个方法是返回当前系统时间
{{2015,6,17},{1,15,12}}
2> MaxConns = proplists:get_value(max_connections, TransOpts, 1024). %% 从 List中查找 Key ,并返回它的值,如果不存在,则使用 Default 值。 MonitorRef = erlang:monitor(process, ConnPid),
  erlang doc:http://www.erlang.org/doc/man/erlang.html#monitor-2
  这边,我还查看了下 《erlang 编程指南》 148页,关于这个函数的用法如下:
    为了单向监控进程,可以把内置函数 erlang:monitor/2 添加到 Erlang中,如下调用:
      erlang:monitor(process, Proc)
    这样就生成了一个调用进程到另一个标记为 Proc 进程的监控进程,Proc 可以是进程标识符也可以是注册的名字。当带有进程标识符的进程终止的时候,消息:
      {'DOWN', MonitorRef, Type, Object, Info} 会发送到监控进程。这个消息包含一个对监控进程的引用。 url解析完后执行cowboy_handler:handler_init/4
如果返回{ok,Req,State}则请求结束并开始返回结果
返回结果前会执行handler()函数,如果这个函数也是返回一个{ok, Req, State}的结果,那cowboy将返回一个"200 OK"的HTTP响应。其他情况返回500的HTTP响应。 如果是rest,则会返回一个{update, protocol, Mod}的结果,比如Mod的值为"cowboy_rest"
接下来经过一个upgrade_protocol/2中间函数后会执行Module:upgrade/4函数。比如rest中应该是cowboy_rest:upgrade/4
upgrade/4中执行Handler:rest_init/2,如果返回{ok, Req, State}形式的结果则会正常返回值。
service_available/2
expect/6
call/3
...
Handler:rest_terminate/2这个函数最后会调用,应该返回一个{ok, Req, State}的结果cowboy才会返回"200 OK"的HTTP响应。 ----------------------
期代的结果是执行terminate_request/5函数,或者执行一个和它返回值相同的函数 erlang:function_exported(Module, Function, Arity) -> boolean() Types: Module = module()
Function = atom()
Arity = arity()
Returns true if the module Module is loaded and contains an exported function Function/Arity; otherwise false.
如果Module中存在一个导出的函数"Function/Arity"则返回true,其他的返回false。
Returns false for any BIF (functions implemented in C rather than in Erlang).

Erlang使用相关笔记的更多相关文章

  1. HTTPS证书申请相关笔记

    申请免费的HTTPS证书相关资料 参考资料: HTTPS 检测 苹果ATS检测 什么是ECC证书? 渠道2: Let's Encrypt 优点 缺点 Let's Encrypt 的是否支持非80,44 ...

  2. JNI相关笔记 [TOC]

    JNI相关笔记 目录 JNI相关笔记 1 生成native code所需要的头文件 2 JNI提供的一些函数和方法 3 局部引用,全局引用,全局弱引用. 4 异常 1 生成native code所需要 ...

  3. Hadoop相关笔记

    一.            Zookeeper( 分布式协调服务框架 ) 1.    Zookeeper概述和集群搭建: (1)       Zookeeper概述: Zookeeper 是一个分布式 ...

  4. erl_0014 《硝烟中的erlang》 读书笔记001 “绪论”

    1.大家听说Erlang,往往是因为其对高并发的良好支持.其实,Erlang的核心特征是容错,从某种程度上讲,并发只是容错这个约束下的一个副产品.容错是Erlang语言的DNA,也是和其他所有编程语言 ...

  5. redis相关笔记(二.集群配置及使用)

    redis笔记一 redis笔记二 redis笔记三 1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置 在上述8333配 ...

  6. redis相关笔记(三.redis设计与实现(笔记))

    redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符 ...

  7. Windows API 进程相关笔记

    0. 前言 最近做了一个进程信息相关的项目,整理了一下自己做项目时的笔记,分享给大家 1. 相关概念 1.1 HANDLE 概念 HANDLE(句柄)是Windows操作系统中的一个概念. 在Wind ...

  8. PHP相关笔记

    扩展包(相关链接):https://packagist.org/: 插件postman主要应用于web开发时get.post请求时查看其响应:

  9. lua相关笔记

    --[[ xpcall( 调用函数, 错误捕获函数 ); lua提供了xpcall来捕获异常 xpcall接受两个参数:调用函数.错误处理函数. 当错误发生时,Lua会在栈释放以前调用错误处理函数,因 ...

随机推荐

  1. Codeforces Round #216 (Div. 2) B. Valera and Contest

    #include <iostream> #include <algorithm> #include <vector> using namespace std; in ...

  2. SPFA算法

    SPFA算法 一.算法简介 SPFA(Shortest Path Faster Algorithm)算法是求单源最短路径的一种算法,它是Bellman-ford的队列优化,它是一种十分高效的最短路算法 ...

  3. 自定义plain 样式的 tableview,模拟器上不显示分割线,真机上却显示分割线.

    一, 经历 1> 自定义plain 样式的 tableview,模拟器上不显示分割线,真机上却显示cell 下面的分割线. 2> 尝试使用表格的separatorStyle属性,尝试失败. ...

  4. libc abi.dylib: terminate_handler unexpectedly threw an exception

    错误代码:很明显的错误,一定要谨记. - (NSInteger)giftCountFullScreen{ NSArray *arr = [NSMutableArray arrayWithArray:s ...

  5. Java_动态加载

    Java类动态加载(一)——java源文件动态编译为class文件最近在做java动态加载这方面的工作,起初也遇到了很多困难.网上关于这方便的东西很零散,为了便于日后回过头来再看,于是我将这几天的心得 ...

  6. php 实现推技术comet(转)

    实现实时通信一般有两种方式:socket或comet.socket是比较好的解决方案,问题在于不是所有的浏览器都兼容,服务器端实现起来也稍微有点麻烦.相比之下,comet(基于HTTP长连接的&quo ...

  7. 对GitHub的认识

    Github创建于2008年被市场研究公司Forrester称作开发者的Facebook .作为开源代码库以及版本控制系统,Github拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,G ...

  8. JQuery插件让图片旋转任意角度且代码极其简单

    引入下方的jquery.rotate.js文件,然后通过$("选择器").rotate(角度);可以旋转任意角度, 例如$("#rotate-image").r ...

  9. Android基于XMPP的即时通讯1-基本对话

    闲暇之余,自己写了个简单的即时通讯,基于OpenFire服务器平台. 整个项目包括两个部分,一个是服务器端,一个是android手机端: 一.关于服务器端没什么好说的,下载安装配置即可 推荐下载带ja ...

  10. Android开发环境--eclipse和Android Studio

    一.eclipse下载.安装.配置 因为eclipse是之前就下载过的,现在只能大概说一下eclipse的下载安装过程. 1.下载jdk,配置java环境变量  (1)在官网(http://www.o ...