
erlang
文章平均质量分 84
砖厂码农
主要从事分布式架构和分布式数据库相关工作。大数据、机器学习、微服务、云原生、区块链均有所涉略。
展开
-
OTP升级(20.3到21.3)
最近两天升级了公司的OTP版本,在升级过程中遇到的问题及解决办法:1. 获取调用堆栈的方式改变,直接通过try/catch 获取2. erlang的启动机制加载机制改变,在启动脚本中设置HOME的值3. erlang:system_info(check_io),返回值类型变化当然21.3涉及到的升级内容不止以上内容,更多参看官方文档。...原创 2019-12-20 17:11:03 · 1573 阅读 · 0 评论 -
erlang lists 按key分组
在应用场景中,我们经常需要对 tuple 组成的lists进行分组,本文参考网上的方案,实现了多元组的group by。1. 原生版本(来自网络,原文链接已找不到,如果有线索,请联系本人)源码:group_by([])-> [];group_by(KVList) -> Fun = fun({K,V}, D) -> dict:append(K, V, ...原创 2019-09-03 17:32:49 · 439 阅读 · 0 评论 -
游戏建筑可用性标识算法设计
问题描述建筑(AABB相同)之间可以相交,建筑与城堡(AABB包围盒大于建筑)之间可以相交(包含建筑在城堡中的情况),建筑(AABB相同)之间可以相交,建筑与城堡(AABB包围盒大于建筑)之间可以相交(建筑在城堡中),如果建筑A满足一下情况视为建筑可用:1.建筑A直接与城堡B相交2.建筑A1直接与建筑A2相交,A2与A3相交... 建筑An与城堡算法设计把建筑和城堡抽象成有向有环图...原创 2019-08-13 17:16:41 · 163 阅读 · 0 评论 -
erlang 代码动态编译
有时候,我们希望调用的时候再生成对应beam,dynamic_compile满足了我们这种需求。原版的dynamic_compile没有支持erlang 语言的所有特征,本人对它稍加改造,支持所有特征(相同宏的多处不同定义除外)。git:https://github.com/luoqngAwd245/dynamic_compile...原创 2019-07-30 17:39:48 · 438 阅读 · 3 评论 -
erlang io性能提升
由于erlang 自带的文件io模块读写都有通过port,使得性能不够理想。使用bitcask中的nif函数代替erlang原生的file io模块,经测试性能提升1个数量级。...原创 2019-06-25 23:22:43 · 297 阅读 · 0 评论 -
rabbitmq 安装
yum install epel-release unixODBC unixODBC-devel wxBase wxGTK SDL wxGTK-gl socatwget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_20.3-1~centos~7_amd64.rpm...原创 2019-04-12 16:00:39 · 344 阅读 · 0 评论 -
Redis 调研
## redis### eredis 支持的[命令](http://doc.redisfans.com/index.html)-SET 插入或修改-DEL 删除-GET 读取-MSET 多条数据插入-MGET 多条数据读取HASH hash相关命令LIST list相关命令-LPOP-LPUSH-RPUSH-LRANGESET set相关命令-SADDTransactions 事务相关命令-MUL...原创 2018-04-04 10:44:33 · 207 阅读 · 0 评论 -
erlang、c 跨语言调用设计
我们的代码仓库里面存在很多C语言的库,基于运行效率或工作量的考虑,我们不想使用erlang重写相关库,我们想在erlang中像使用erlang库一样方便地使用C库,vcall(erlang版)正是在这种背景下出现的。vcall(erlang版本)后面简称vcall。使用vcall时,我们只需要调用register接口批量或单个注册我们要使用的函数,接下来我们就可以像使用erlang库提供...原创 2019-08-16 21:34:57 · 418 阅读 · 0 评论 -
tsung
# tsung## 安装操作系统: centos 7.0erlang:otp_17tsung: 1.6.0tsung 主要包含测试功能、报表生成工具、测试结果比较工具。tsung的[安装](http://blog.youkuaiyun.com/jimesum1/article/details/7847924)依赖于erlang的安装,更详细的[安装](http://blog.sina.com.cn/s/blo...原创 2018-03-30 12:01:15 · 436 阅读 · 0 评论 -
文件监控
#文件监控##libuv封装###实现原理捕获libuv上传的文件变动信息(删除、新增、更名、修改等),把捕获到的信息格式化为json串,然后发给erlang 对应的进程pid###接口start_monitor 初始化文件监控参数和相关资源add_dir 增加监控目录remove_dir 移除监控目录stop_monitor 停止监控,销毁监控相关资源##erlang部分erlang部分调用st...原创 2018-03-30 11:58:50 · 484 阅读 · 0 评论 -
protobuf 调研
## 背景知识protobuf主要用于语言通信的序列化和反序列化,官方目前仅支持C++/java/python三种语言,好在网络上有不少可供选择的第三方库,[更多](http://mikewang.blog.51cto.com/3826268/1432136/)thrift功能更强大,可自行[了解](http://blog.youkuaiyun.com/xqy1522/article/details/6942...原创 2018-03-30 11:56:01 · 149 阅读 · 0 评论 -
mnesia问题集锦
1.集群中如何使用Mnesia 网上的示例,大多以单节点为例,集群中的使用方法参考。注意scheme的设置,节点之间没有主从之分。2. 如何扩容(缩容) 分布式环境中很多时候需要我们动态的增加或减少节点。i 扩容 mnesia:change_config(extra_db_nodes, NodeList) (参数是新的nod原创 2017-11-03 13:20:44 · 952 阅读 · 0 评论 -
erlang 加密解密
在最近的对接项目中用到了erlang的加解密, 折腾了一番,现记录如下。url 编码:to_hex(X) when X >9 -> X + 55;to_hex(X) -> X + 48.url_encode(Url, IsSignSrc) -> lists:foldl(fun(E,Result) -> case (E >原创 2017-05-18 11:01:07 · 2274 阅读 · 1 评论 -
erlang 脏调度器支持
# dirty shceduler##简介在 Erlang 虚拟机的层面,NIF 调用是不会被抢占的,因此运行时间过长的 NIF 会影响其所在的调度器上的所有其他进程的调度。erlang R17引入脏调度器一定程度上解决了这个问题。脏调度器本质上和普通调度器是一样的,也是运行在虚拟机中的调度器线程,但是这种调度器专门运行长时运行的 NIF,R17允许将长时运行的NIF直接丢到脏调度器上...原创 2016-01-22 11:28:43 · 817 阅读 · 0 评论