加载中
Erlang要搞清楚的问题点

binary:copy的使用 有时候我们需要切分二进制,提取原始二进制中的某些部分的二进制,这会导致原始二进制也会被引用计数,导致原始大的二进制无法及时的被gc。此时就需要使用binary:copy来拷...

2021/12/24 09:20
119
erlang ets中safe_fixtable的用法分析

该方法主要使用在通过迭代的方式下遍历整个的ets数据 如使用ets:next()或者ets:match_object方法或者ets:select方法迭代的遍历整个ets数据 作用 如果出现数据的删除,可以平滑的处理这些迭代...

2021/12/23 18:19
334
Erlang ets safe_fixtable的源码分析

使用范例 在遍历的时候进行ets处理,如删除,更新,插入字段内容等 配合ets:first和ets:next的迭代器使用 实践例子 mnesia的使用 httpc的使用 snmpm_net 使用 dets ets自己的foldr使用 作用 ...

2021/12/22 13:52
72
Erlang 常见问题汇总

节点的进程莫名的断开了,如何排查 1.是否有错误信息 2.查看terminate信息,如何没有检查是否没有设置trap_exit,true 3.对handle_call,handle_cast,handle_info增加try_catch,确认报错堆栈 ...

2021/12/15 17:44
43
Erlang GUI常用命令

xc(Module) :热更代码 inet:i():查看当前的网络连接状态 observer:start():启动管理器 im():打开代码调试 rr(xxx.hrl):导入头文件 -crashdump_viewer:start(). :查看dump文件......

2021/12/14 09:55
73
Erlang 服务器万人同服排行榜设计优化

测试数据 结论:可以看出使用计数排序,可以极大的提高排序的效率,相比全排序提高3-4倍的效率 测试环境 erlang23.3 性能优缺点分析 计数排序的好处是当数据变化时,只需要对增加的分片进行排...

2021/12/12 18:48
190
Erlang list和map的比较

最佳实践 比如排行榜数据,涉及到同一个玩家多次数据的更新,可以使用map来处理 此处存疑 在maps_get的处理中,如果检测到maps不是flatmap,则执行的是1的插入,如果不是,则执行遍历的方式,...

2021/12/11 19:40
243
Erlang细节设计

随机数生成 1.设置随机种子 random:seed(),获取随机值 2.random:uniform() %% 代码设计 rand(Min, Max) -> case get("rand_seed") of undefined -> RandSeed = mod_rand:get_seed(), ......

2021/12/11 12:20
45
Erlang ++实现

说明 合并列表,需要将数量小的放在前面,数量大的放在后面,性能会比较好 tatic Eterm append(Export *bif_entry, BIF_ALIST_2) { Eterm lhs = BIF_ARG_1, rhs = BIF_ARG_2; if (is_nil(lh...

2021/12/09 13:58
121
Erlang lists:keyfind实现

static Eterm keyfind(Export Bif, Process p, Eterm Key, Eterm Pos, Eterm List) { int max_iter = 10 * CONTEXT_REDS; Sint pos; Eterm term; if (!is_small(Pos) || (pos = signed_val(P...

2021/12/09 11:29
95
Erlang 代码热更机制

步骤 1.编译代码 2.code:purge模块 1.当前的会保留两个版本,如果第三次编译的时候,会清理最旧的版本,特别注意,如果使用了receive的进程,没有设置after参数,可能导致当前进程被关闭 2....

2021/12/09 10:19
64
Erlang apply函数的实现

Export* apply(Process* p, Eterm* reg, ErtsCodePtr I, Uint stack_offset) { int arity; Export* ep; Eterm tmp; Eterm module = reg[0]; Eterm function = reg[1]; Eterm args = reg[......

2021/12/08 11:51
195
Erlang is_small函数的实现

#define is_small(x) (((x) & _TAG_IMMED1_MASK) == _TAG_IMMED1_SMALL) #define _TAG_IMMED1_MASK 0xF #define _TAG_IMMED1_SMALL ((0x3 << _TAG_PRIMARY_SIZE) | TAG_PRIMARY_IMMED1) #def...

2021/12/07 17:46
78
Erlang iolist_to_binary和list_to_binary的区别

list_to_binary 将列表转换为二进制 iolist_to_binary 将列表转换为二进制,包括参数已经是二进制 区别 list_to_binary不能转换已经是二进制 iolist_to_binary 可以转换已经是二进制 用法注意...

2021/12/07 17:31
76
Erlang编程规范总结

能用tuple的就不要用list list占用的内存空间几乎是tuple的两倍,tuple有一个头部,4个字节保存tuple的长度

2021/12/03 10:13
60
Erlang lists:reverse实现

具体用法 %% Shadowed by erl_bif_types: lists:reverse/2 -spec reverse(List1, Tail) -> List2 when List1 :: [T], Tail :: term(), List2 :: [T], T :: term(). reverse(_, _) -> ......

2021/12/02 09:49
119
Erlang lists:merge实现探究

问题 lists:merge存在的意义何在呢?不算是全部排序 说明 1.lists:merge函数将两个列表进行合并处理,并进行了排序操作 2.并非全部排序,而是在可以比较顺序的情况下进行排序:如lists:merge...

2021/12/01 19:27
75
Erlang length的c实现

erlang层面代码位置 c层面的实现 /* 文件位置:util.c erl_nif.c enif_get_list_lenght()函数 */ Sint erts_list_length(Eterm list) { Sint i = 0; while(is_list(list)) { i++; list = CD...

2021/12/01 17:48
62
Erlang数据结构Ets中match/match_object/select的区别

match 用法:获取ets存储数据结构的某几个数据集合 match_object 用法:获取ets存储的符合条件的整个结构,只能支持直接值匹配 用法1:迭代的遍历整个ets列表 match_object/3 用法2:查找指定...

2021/11/26 10:11
269
LetCode 做题之两数之和

通过进行三种方式的实现,得出一下结论 使用进程字典进行数据读取,时间效率最高 其次是使用map,时间效率次于进程字典,并且内存占用也次于进程字典 使用尾递归的参数传递,时间效率最低,内...

2021/11/25 11:04
27

没有更多内容

加载失败,请刷新页面

返回顶部
顶部
返回顶部
顶部