自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

转载 Erlang常用数据结构实现

详见Erlang 常用数据结构实现,以下为阅读该博客所做笔记和其他相关的笔记:Erlang虚拟机使用一个字(64/32位)来表示所有类型的数据,即Eterm。具体的实施方案通过占用Eterm的后几位作为类型标签,然后根据标签类型来解释剩余位的用途。这个标签是多层级的,最外层占用两位,有三种类型:01: list,剩下62位是指向列表Cons的指针。10: boxed对象,即复杂对象,剩余62位指向boxed对象的对象头。包括元组,大整数,外部Pid/Port等。11: immediate立即数,

2021-03-05 21:02:54 473

原创 Erlang -- 编译

编译单个文件编译在Erlang Shell运行c(ModuleName).进行编译。c(ModuleName, Options)也可以通过Options添加编译选项。通过定制Emakefile来管理编译%% Emakefile{ %% 源码路径 [ 'src/**/*' ], %% 编译选项 [ debug_info,%% 添加debug_info编译后,可反编译回源码。 nowarn_export_all,%% 不警告全导出。 {parse_transform

2021-02-28 18:24:11 1472

原创 Erlang相关链接

LearnYouSomeErlangErlang并发编程Erlang OTP设计原理文档Erlang/OTP中文手册官方文档官方文档+查找功能坚强2002博客Erlang发布版本升级

2021-02-28 18:22:27 145

原创 Erlang笔记 -- Mnesia:Erlang数据库简单使用

Mnesia:Erlang数据库简单使用创建数据库在当前节点创建:PS E:\ERL\Mnesia> erlEshell V8.3 (abort with ^G)1> node().nonode@nohost2> mnesia:create_schema([node()]).ok3> init:stop().ok4>PS E:\ERL\Mnesia> ls目录: E:\ERL\MnesiaMode LastWri

2020-12-31 21:23:16 1109

原创 Erlang -- sys模块常用接口使用

sys模块提供了发送系统消息及调试信息的接口。常用接口change_code(Name, Module, OldVsn, Extra) -> ok | {error, Reason}change_code(Name, Module, OldVsn, Extra, Timeout) -> ok | {error, Reason}通知进程Name改变状态,调用此接口之前需要通过sys:suspend/1-2先挂起进程。change_code/4-5被调用后,Module:system

2020-12-20 22:09:23 598

原创 Erlang -- 代码热更

在任一时刻,Erlang允许一个模块的两个版本同时运行:当前版和旧版。重新编译某个模块时,任何运行旧版代码的进程都会被终止,当前版成为旧版,新编译的版本则成为当前版。-module(test).-export([start/0]).start() -> spawn(fun loop/0). loop() -> receive after 5000 -> io:format("vsn: ~p~n", [1]), loop()

2020-12-18 22:02:53 222

原创 Cowboy -- Hello World

https://ninenines.eu/docs/en/cowboy/2.8/guide/getting_started/Cowboy是由Erlang编写的轻量、快速以及模块化的Http服务器。支持HTTP/1.1、HTTP/2和WebSocket。Cowboy简单实例创建项目目录hello_erlang。$ mkdir hello_erlang$ cd hello_erlang下载Erlang.mk,并创建Makefile,Makefile用于构建应用程序。$ wget http

2020-12-16 22:44:13 226 1

转载 mochiweb入门

mochiweb入门转载译文:https://www.cnblogs.com/ken-zhang/archive/2011/10/24/2222202.html原文出处:http://alexmarandon.com/articles/mochiweb_tutorial/简介MochiWeb由Bob Ippolito创建,其描述为:“一个创建轻量级http服务器的Erlang库”。它不是框架:不附带URL调度、模版引擎、数据持久等。尽管没有官方网站和文档,但仍然是Erlang构建web服务的热门选择

2020-12-08 22:56:50 397

原创 Erlang笔记 -- 错误处理

顺序编程异常处理异常产生异常错误发生于系统遇到内部错误时,或者通过在代码里显式调用throw(Exception)、exit(Exception)或error(Exception)触发。会触发异常错误的典型内部错误有模式匹配错误(没有一个函数子句能成功匹配),用错误类型的参数调用内置函数(比如用一个整数作为参数调用atom_to_list),以及用带有错误值的参数调用内置函数(比如试图让某个数字除以0)。可以通过调用下面的某个内置函数来显式生成一个错误。exit(Why)当你确实想要终止当前进

2020-12-07 22:22:14 506

原创 Erlang笔记 -- 并发编程

Erlang的并发是基于进程(process)的。进程是一些独立的小型虚拟机,可以执行Erlang函数。在Erlang里,进程隶属于编程语言,而非操作系统。这就意味着Erlang的进程在任何操作系统上都会具有相同的逻辑行为,这样,就能编写可移植的并发代码,让它在任何支持Erlang的操作系统上运行。在Erlang里:创建和销毁进程是非常快速的;在进程间发送消息是非常快速的;进程在所有操作系统上都具有相同的行为方式;可以拥有大量进程;进程不共享任何内存,是完全独立的;进程唯一的交互方式就是消

2020-12-06 22:13:15 250

原创 Erlang笔记 -- 二进制与位语法

二进制型(binary)是一种数据结构,当二进制型里的位数都会是8的整数倍时,对应一个字节串。当位数不是8的整数倍,则称这段数据为位串(bitstring)。二进制型的编写和打印形式是双小于号与双大于号之间的一列整数或字符串:1> <<19,88,20>>.<<19,88,20>>2> <<"hello">>.<<"hello">>3> <<49,50,51>&gt

2020-12-05 23:51:16 642

原创 Erlang笔记 -- 常用数据结构

元组tuple如果想把一些数量固定的项目归组成单一的实体,就会使用元组(tuple)。创建元组的方法就是用大括号{}把想要表达的值括起来,并用逗号分隔他们。例如,表示某人的身高和体重:{Jack, 1.88}Erlang没有类型声明,创建一个坐标点,只需:P = {10, 15}.这样就创建了一个元祖并绑定在变量P上。由于元组里的字段没有名字,因为这个元祖只包含一对整数,为了记住该元组的用途,通常会写成以下方式:{point, 10, 15},这样可以使程序的可理解性大大增加。元组是可以嵌套的

2020-12-03 23:21:56 728

原创 Erlang笔记 -- 基础

Hello World%% hello.erl-module(hello).-export([start/0]).start() -> io:format("Hello World~n").上述文件中,-module(hello).指的是此文件包含用于hello模块的代码。它应该与文件名一致(除了.erl这个文件拓展名)。模块必须以一个小写字母开头。模块名属于一个原子。--export([start/0]).表示没有参数的函数start可以在模块外调用(类似于Java中的pu

2020-12-02 22:30:28 709

转载 Ubuntu下安装Erlang、rebar

Ubuntu下安装erlang、rebar安装erlang在官网下载需要版本的安装包。我选择的是esl-erlang_22.0-1_ubuntu_bionic_amd64.deb。注:从windows向linux子系统复制文件可以通过如下命令cp /mnt/c/download/esl-erlang_22.0-1_ubuntu_bionic_amd64.deb /home/mfile通过以下命令安装:dpkg -i esl-erlang_22.0-1_ubuntu_bionic_am

2020-11-29 17:32:10 806

翻译 Erlang -- application

application在OTP中,application模块是一个提供了特定功能的组件,使得一个应用程序能够作为一个整体去启动或关闭,或是在其他系统中复用。application与application controller进行交互,application controller是Erlang运行时的一个进程。application提供了控制应用程序及获取应用程序信息的方法。一个应用程序通过一个名为Application.app的应用程序资源文件定义,其中Application为该应用程序的名字。该文件位

2020-11-28 01:14:20 818

翻译 Erlang -- supervisor

supervisor监控者supervisor模块提供了一个监控其他进程的进程。通过supervisor能够构建监控树,用于构造容错应用程序。监控者能够启动、关闭及重启它的子进程。supervisor进程通过supervisor:start_link(Module, Args)或supervisor:start_link(SupName, Module, Args)启动,成功的话返回值为{ok, Pid}。此时会通过调用回调函数Module:init(Args)来初始化监supervisor进程,如果成

2020-11-28 01:12:47 894

翻译 Erlang -- gen_statem

gen_statem是Erlang/OTP 19.0引入的新behavior。用于替换gen_fsm。gen_statem支持2种回调模式:state_functions要求状态名StateName必须是原子,并且回调函数的名称与状态同名。这一点与gen_fsm一样。handle_event_function状态名可以是任何形式,此时回调函数为Module:handle_event/4,适用于所有状态下。Module:callback_mode()指定gen_statem的回调模式。 其返回值

2020-11-26 22:36:00 1866

翻译 Erlang -- gen_fsm

gen_fsmgen_fsm为有限状态机,在OTP 20.0被gen_statem取代。gen_fsmbehavior函数和回调函数之间的关系如下:gen_fsm module Callback module-------------- ---------------gen_fsm:startgen_fsm:start_link -----> Module:init/1gen_fs

2020-11-26 22:35:16 790

翻译 Erlang -- gen_event

gen_eventgen_event行为模块提供了事件处理功能,由一个通用的事件管理器进程和多个动态添加的事件处理程序构成。事件管理器具有一组标准的接口函数,包括跟踪和错误报告功能。每个事件处理程序都被实现为一个回调模块,导出一组预定义的函数。行为函数与回调函数之间的关系如下:gen_event module Callback module---------------- ---------------gen_event:

2020-11-25 23:14:50 208

翻译 Erlang -- gen_server

gen_server是Erlang OTP中的通用服务器模板。gen_serverbehavior函数和回调函数之间的关系如下:gen_server module Callback module----------------- ---------------gen_server:startgen_server:start_link -----> Module:init/1gen_server:stop -----> Modu

2020-11-25 23:11:39 478

原创 Eclipse常用快捷键

1.补全代码:alt + /2.使用单行注释:ctrl + /3.使用多行注释: ctrl + shift + /4.取消多行注释:ctrl + shift + 5.复制指定行的代码:ctrl + alt + down 或 ctrl + alt + up6.删除指定行的代码:ctrl + d7.上下移动代码:alt + up 或 alt + down8.切换到下一行代码空位:shift + enter9.切换到上一行代码空位:ctrl + shift + enter10.查看源码:ctrl

2020-11-18 23:38:39 84

原创 设备挂载与卸载

在Linux系统中“一切皆文件”,所有文件都放置在以“/”为根目录的树形目录结构中。在Linux看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。因此要在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用,这个合二为一的过程称为“挂载”。如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,通过命令行方式是无法找到。挂载,指的就是将设备文件中的顶级目录连接到Linux根目录下的某一目录(最好是空

2020-10-17 18:31:10 1404

原创 Vim小抄

Vim有三种模式命令模式、输入模式、底线命令模式。打开Vim即进入命令模式。模式间的切换:命令模式= i/a/o/r/I/A/O/R =>输入模式= ESC =>命令模式i, I 进入输入模式(Insert mode):i 为从目前光标所在处输入,I为在目前所在行的第一个非空格符处开始输入。a, A 进入输入模式:a 为从目前光标所在的下一个字符处开始输入,A为从光标所在行的最后一个字符处开始输入。o, O 进入输入模式:o 为在目前光标所在的下一行处输入新的一行;O为

2020-10-14 21:49:30 252

原创 Shell基础

Shell脚本文件第一行 #!/bin/bash,用于告诉系统解释此脚本文件的Shell程序。常见的Shell程序有Bourne Shell(/bin/sh)和Bourne Again Shell(/bin/bash)。脚本文件的扩展名不影响脚本执行。运行 Shell 脚本有两种方法:作为可执行程序chmod +x ./test.sh #使脚本具有执行权限./test.sh #执行脚本注意,一定要写成 ./test.sh,告诉系统在当前目录找该文件,否则系统会去PATH里寻找test.

2020-10-14 21:14:37 179

原创 Linux基础命令

Linux常用命令用户管理用户组管理文件属性软件包管理器linux硬链接与软链接的区别文档打包与压缩其他命令用户管理useradd 选项 用户名,创建账号-c comment 指定一段注释性描述-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录-g 用户组 指定用户所属的用户组-G 用户组,用户组 指定用户所属的附加组-s Shell文件 指定用户的登录Shell-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号dylan@

2020-09-27 22:08:59 144

原创 Erlang -- Erlang Shell 部分启动参数

Erlang Shell 部分启动参数Erlang shell启动命令:直接输入erl,已默认参数打开Erlang shell,可添加以下参数:+P Number|legacy 最大进程数,范围为1024-134217727,默认为 262144+K true | false 是否启用的kernel的poll机制,默认为false-smp [enable|auto|disable...

2019-05-14 00:21:38 746

原创 Sublime--手动安装Package Control,并安装CTags插件

Sublime--手动安装Package Control,并安装CTags插件手动安装Package Control安装插件CTags使用CTags进行函数追踪手动安装Package Control1.下载Package Control.sublime-package,放到Installed Packages目录下(点击Preferences->Browser Packages打开Pac...

2019-05-13 01:03:06 1182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除