函数编程和命令式编程的不同
- 命令式编程是一系列可改变全局状态的语句构成
- 函数编程是将计算过程抽象成表达式求值,表达式是数学函数构成,对第一类对象没有副作用,可以保证线程的安全,可并发编程
- 函数式编程支持并发式编程
- 关于锁的规则,是针对多线程之间共享数据、状态,函数式编程不存在可变的数据、状态,在多线程不使用锁也可以安全访问
ETS和DETS的区别
- ETS是存放在内存的,效率高
- DTES是存放在本地磁盘的,效率低
- 但是高也搞不到哪里去 还是Redis缓存效率高
查看内存使用
Erlang:system_info(memery)
热更
Code:purge(文件名-string)
Code:loading(文件名-string)
这里说明一点,erlang开启服务器,是会将编译文件加载至其虚拟机中,所以我们需要的是替换beam文件,替换并不影响当前虚拟机进程,当下一次执行该进程时,自动切换至load的beam,若进程一直处于执行或者等待中,要从旧代码更改为当前代码,进程必须进行完全限定的函数调用,例如:
-module(test).
-export([loop/0]).
loop() ->
receive
code_switch ->
test:loop();
Msg ->
loop()
end.
内存word占用
32位系统占4字节,64位系统占8字节。
Rebar 构建
- Intellij IDEA 创建erlang工程
- File -> settings -> other settings ->erlang external tools 安装rebar
- 创建cmd文件
@echo off
setlocal
set rebarscript=%~f0
escript.exe “%rebarscript:.cmd=%” %*
运行 - Cmd打开文件目录 rebar create-app appid=myserver 会自动生成myserver.app.src myserver_app.erl myserver_sup.erl
- IDEA 选择运行—Run/Debug Configurations 选择erlang rebar 运行编译 出现ebin文件夹(编译文件)
----------------------------------------------------------------------------------------2019-12-22
TCP/IP
部分启动参数:
&#