Erlang使用相关笔记
#从源码编译安装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使用相关笔记的更多相关文章
- HTTPS证书申请相关笔记
申请免费的HTTPS证书相关资料 参考资料: HTTPS 检测 苹果ATS检测 什么是ECC证书? 渠道2: Let's Encrypt 优点 缺点 Let's Encrypt 的是否支持非80,44 ...
- JNI相关笔记 [TOC]
JNI相关笔记 目录 JNI相关笔记 1 生成native code所需要的头文件 2 JNI提供的一些函数和方法 3 局部引用,全局引用,全局弱引用. 4 异常 1 生成native code所需要 ...
- Hadoop相关笔记
一. Zookeeper( 分布式协调服务框架 ) 1. Zookeeper概述和集群搭建: (1) Zookeeper概述: Zookeeper 是一个分布式 ...
- erl_0014 《硝烟中的erlang》 读书笔记001 “绪论”
1.大家听说Erlang,往往是因为其对高并发的良好支持.其实,Erlang的核心特征是容错,从某种程度上讲,并发只是容错这个约束下的一个副产品.容错是Erlang语言的DNA,也是和其他所有编程语言 ...
- redis相关笔记(二.集群配置及使用)
redis笔记一 redis笔记二 redis笔记三 1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置 在上述8333配 ...
- redis相关笔记(三.redis设计与实现(笔记))
redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符 ...
- Windows API 进程相关笔记
0. 前言 最近做了一个进程信息相关的项目,整理了一下自己做项目时的笔记,分享给大家 1. 相关概念 1.1 HANDLE 概念 HANDLE(句柄)是Windows操作系统中的一个概念. 在Wind ...
- PHP相关笔记
扩展包(相关链接):https://packagist.org/: 插件postman主要应用于web开发时get.post请求时查看其响应:
- lua相关笔记
--[[ xpcall( 调用函数, 错误捕获函数 ); lua提供了xpcall来捕获异常 xpcall接受两个参数:调用函数.错误处理函数. 当错误发生时,Lua会在栈释放以前调用错误处理函数,因 ...
随机推荐
- Android系统中的6种模式
Android系统中的6种模式 1:一般启动模式(normal mode): 功能是正常启动手机,方法为关机状态下按电源键启动. 2:安全模式(safe mode): 此模式和正常启动一样 ...
- The Parallel Challenge Ballgame[HDU1101]
The Parallel Challenge Ballgame Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- Android 魅族等SmartBar适配
通过反射获取是否含有SmartBar: /** * 判断是否有SmartBar */ private boolean hasSmartBar() { // SP存储是否显示SmartBar if (! ...
- ihhh题解
10分做法: 由于空间卡得紧,所以给了10分暴力分0.0所以大家很容易就知道暴力就是线段树套ac自动机辣时间:$O((\sum |qSi| + \sum |nSi|)*log Q)$空间:$O((\s ...
- Codeforces Round #203 (Div. 2)
非常幸运..第三题,有个地方没想清楚,枚举一下就行了..x to n,这个x没考虑好,跪了...傻傻的lock了代码,通过hack进了DIV1,5-2 . 第一次进入DIV1,记录一下. 不知不觉,已 ...
- IOS 网络请求方式
iOS开发中的网络请求 今天来说说关于iOS开发过程中的网络请求. 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异 ...
- GO语言练习:struct基础练习
1.代码 2.运行 1.代码 package main import "fmt" type Rect struct { x, y float64 width, height flo ...
- OSG 自定义数据类型 关键帧动画
OSG 自定义数据类型 关键帧动画 转自:http://blog.csdn.net/zhuyingqingfen/article/details/12651017 /* 1.创建一个AnimManag ...
- DataGridView 中添加CheckBox和常用处理方式 .
DataGridView 中添加CheckBox和常用处理方式 文章1 转载:http://blog.csdn.net/pinkey1987/article/details/5267934 DataG ...
- JDBC学习笔记2
数据库数据更新操作statement接口下操作:[代码] import java.sql.DriverManager;import java.sql.SQLException; public clas ...