- 博客(145)
- 资源 (77)
- 收藏
- 关注

原创 erlang系列文章阅读指引
文章相当于本博客 erlang 专栏的目录页,目的是引导读者,可以很快定位到想看的文章。这里笼统的概括为erlang基础知识、常见问题、节点通信、mnesia常见问题,以及erlang底层实现。
2015-03-07 18:57:12
3565

原创 erlang的学习资料和文献
最近有朋友想学习erlang,问我有什么好入门的学习资料。我也借此机会整理一下:erlang中文手册、位运算与二进制解析、二进制高效编程、异常处理详解;面对软件错误构建可靠的分布式系统、编写分布式的 Erlang 程序:陷阱和对策、硝烟中的Erlang;底层有erlang VM基于多核处理器的可伸缩性特征、erlang VM内部数据共享机制、erlang 消息传递机制等
2015-01-25 19:15:15
3431
1
原创 网络游戏开发之安全对抗
游戏才刚上线没多久,就遭遇了众多游戏工作室一波接一波的外挂洗礼。游戏工作室很喜欢新游戏,因为新游戏没有太多对抗外挂的手段和技术,漏洞也较多,而且新游戏会不断烧钱导量,游戏工作室也借机找到了大量的客户。在经历了一番实战,或多或少总结了一些经验和技巧,这里和大家做个分享。文章分别从常见外挂对抗、安全日志对抗、安全预警对抗、策划层面对抗、其他技术对抗探讨网络游戏外挂的对抗措施。
2017-01-09 13:04:45
5384
1
原创 skynet 热更新 lua 代码
skynet是为多人在线游戏设计的轻量级服务端框架,使用C+Lua开发。skynet的特点是,使用这个框架,太多数情况下只是用lua写代码,很少用c写,这一定程度上提高了项目的开发效率。lua虽然没有C高效,但开发复杂业务却是非常便捷。不过,skynet网上文档很少,所以我就利用一点时间总结skynet相关内容。文章介绍skynet热更新lua代码及各自特点
2016-12-30 16:18:15
7832
原创 skynet lua 代码静态分析
skynet是一款为多人在线游戏设计的服务端框架,使用c+lua开发。skynet这套框架的一个优点是,通常只需要写lua代码,很少用到c做开发,一定程度上提高了开发效率。而skynet文档相对较少,所以这里利用一点时间学习和总结skynet相关内容,文章就讲解下skynet lua代码静态分析。
2016-09-19 21:50:48
6457
原创 Sublime Text3修复函数快速查找
Sublime Text 是一个很优秀的代码编辑器,支持数十种开发语言。不管是主流的开发语言如C, C++, Java等,还是稍冷门的Erlang, Go, Lisp等,都支持语法高亮,还可以手动扩充。优点是轻巧,体积小,运行速度快。默认情况下,Sublime Text支持函数快速查找,按Ctrl+Shift+R打开查找面板,就可以快速定位文件,但可能无法正常使用,文章介绍如何解决这个问题。
2016-09-09 20:55:34
7738
1
原创 详解Linux Shell命令自动补全
在Linux命令行下,输入一个字符,连按两次Tab键,shell就会列出以这个字符开头的所有可用命令。如果只有一个命令匹配到,shell会自动将这个命令补全。比如,你想更改密码,你只记得这个命令前几个字母是pass。这时候,连按两次Tab键,shell就自动输出 passwd 命令,非常方便。当然,除了命令补全,还有路径、文件名补全。文章讲解如何给自己开发的程序,实现Tab自动补全
2016-09-03 16:26:14
42453
原创 微博URL短地址lua生成算法
短地址(Short URL),或叫短网址、短链接等等,就是比较短的URL地址。借助短地址,可以将原来冗长的网址替换成简短的网址,让使用者可以更容易分享链接。在Web 2.0的今天,不得不说,这是一个潮流(我喜欢这句话,就原封不动从别人文章复制过来了)。短地址,主要应用场景是微博。微博消息限制字数为140字,如果要发一些链接,这个网址可能占用一半字数了,所以短地址就应运而生。
2016-08-26 11:03:32
3747
原创 windows下编译lua5.3源代码
最近在windows下搞lua测试,发现lua自带的库有点少,缺少md5等等很常用的库。网上确实有这些第三方库,但这个md5库找不到windows的版本,就想着自己手动编译。不料,这个md5库需要lua5.3的静态链接库。最后,就参考国外一篇文章,尝试windows下编译lua源代码,现在做个分享。
2016-08-25 23:16:23
4666
原创 浅谈Windows 7系统启动过程
前些天,抽空研究了系统封装工具的打包安装机制,在这个时间里也把Windows系统启动过程给看了。现在简单做个分享,谈谈对win7启动过程的理解,然后再分析下进程自启动原理,说明系统封装工具是怎么引导的。
2016-07-08 22:38:54
7626
原创 打造自己的windows一键安装系统
现在在网上,windows一键安装系统一搜就是一大堆,但几乎所有的系统都会绑定IE主页和预装软件,就算打着纯净版的旗号。而手动安装系统又是非常繁琐,一步一步确定,最后还要自己下载装驱动,更新系统补丁,非常麻烦。正因为如此,我们才想打造自己的windows一键安装系统镜像,以后安装就非常方便了,还可以定制自己的默认程序。
2016-07-05 12:49:45
11036
1
原创 linux下编译使用lua及cjson
前面的文章记录了lua的编译和使用,这里再整理一下,侧重说明下lua json库的编译及使用,文章最后再谈下cjson使用中有可能遇到的excessively sparse array 问题及解决方法。
2016-04-05 23:51:46
9171
原创 erlang 中文编码显示乱码问题
许久没做erlang开发了,最近有网友问到erlang的问题,就抽时间看下。问题是这样的,模块有中文,将中文直接打印出来,shell下显示会出现乱码,但如果先将中文转成binary,就可以正常显示出来。文章以例子做分析,解释 io:format/2对中文的处理,然后讨论乱码出现的原因,以及latin1为何能表示中文,utf8保存的代码在shell下显示乱码问题
2016-02-28 23:51:15
8543
原创 linux获取后台进程的控制台数据
linux提供了一个daemon函数,使得进程可以脱离控制台运行,实现了后台运行的效果。但是进程后台运行后,原本在终端控制台输出的数据就看不到了。那么,怎样才能找回这些数据?文章主题就围绕着如何获得后台进程的控制台数据,分析daemon原理和例子演示说明,最后也写个自动化数据获取的小工具。
2016-01-08 12:18:16
9289
原创 解决Centos yum 更新出错
今天在VM10下装 centos 7,遇到的问题不少,其中一个是yum更新失败问题。这个问题是我本地网络受限导致的,无法访问 centos 的镜像地址,显示 Cannot find a valid baseurl for repo 错误。这错误有两种情况:dns问题、镜像连接错误,文章分别做说明。
2015-12-22 09:03:30
16525
2
原创 Git版本控制与github使用
Git是一个开源的分布式版本控制系统,用于敏捷高效地管理项目。相较svn,git最大的特点就是分布式,每个人都拥有一个克隆的版本库,所以提交代码、查看日志、创建分支、合并分支、回退等等操作都直接在本地完成而不需要网络。而github,作为一家git服务提供商,可以托管你的git版本库,而且对于开源项目是可以免费托管,这对于开源项目是一大利好。文章介绍Git版本控制与github使用
2015-10-27 09:39:22
6451
原创 玩转lua:搞懂lua潜规则
Lua可以被C/C++ 代码调用,反过来也可以调用C/C++的函数,这使得Lua被广泛应用。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。Lua在目前解释型脚本引擎中,速度是最快的,这决定了Lua嵌入式脚本的最佳选择。文章列举lua使用中遇到的潜规则问题,做个汇总。
2015-09-27 10:47:28
7016
1
原创 VMware局域网访问远程虚拟机
有时候在VMware虚拟机中的安装了一些服务端程序,然后需要在局域网或公网中访问它。此时,VMware为我们提供了很好的解决方案,目前有两种可行的方案:桥接模式,和NAT模式,文章分别对两种方法做详细说明
2015-09-09 13:03:05
14110
原创 skynet项目lua代码简单加密
skynet总体跟 erlang很像,理念都是基于Actor模型,即万物皆Actor,Actor之间通过发送消息进行通信。不同的是,skynet使用 c 和 lua实现,这两个语言相较erlang比较流行。skynet的Actor是指skynet服务,skynet服务类似erlang进程,调度方式也接近,skynet启动时会初始化多个调度线程,用于同时处理多个服务,每个服务都有一定的调度次数约束,挂起或达到约束就失去调度权。文章利用lua编译成二进制实现加密,方法比较简单。
2015-08-13 01:19:34
10469
16
原创 erlang进程监控的实现原理
Erlang支持Monitor和Link两种监控进程的方式,使得所有进程可以连成一个整体。当某个进程出错退出时,监控进程会收到该进程退出的消息通知。有了这些特点,使用Erlang建立一个简单,并且健壮的系统就不是什么难事。前面有文章分析了两种方式的用法,这里分析下monitor和link的实现。
2015-07-20 20:10:32
3518
原创 erlang集群IP及端口管理
erlang集群是依靠epmd维护的,epmd是erlang集群节点间端口映射的守护进程,负责维护集群内的节点连接,提供节点名称到IP地址及端口的解析服务。默认情况下,epmd绑定在4369端口。但是,端口固定的话,容易遭受攻击,可能导致新节点的认证失败而无法启动,或无法加入集群。文章介绍如何修改epmd端口,修改端口后节点如何启动,如何限制集群节点IP地址
2015-06-25 02:23:52
7685
原创 C++ stderr/stdout 重定向到文件
通常,stderr和stdout被用来输出内容显示到控制台,但是,有时候我们需要把这些信息写到指定的文件,方便随时查阅。最简单的实现方式就是,把 stderr/stdout 的输出重定向到文件。文章先说明C/C++如何重定向 stderr/stdout 到文件,同时也说明stderr与stdout的主要区别,以及如何转变stderr /stdout 的缓冲类型。
2015-06-21 03:05:54
19840
1
原创 Linux下编译安装Apache及模块
Apache是时下最流行的Web服务器软件之一,支持多平台,可快速搭建web服务,而且稳定可靠,并可通过简单的API扩充,就可以集成PHP/Python等语言解释器。文章这里讲解如何在linux下编译 Apache,以及如何编译Apache模块。
2015-06-09 19:24:47
6269
原创 讨论SQLite数据库损坏与修复
朋友和我反馈SQLite数据库发生损坏有没有办法恢复。当数据库在使用时不小心用了新的文件覆盖数据库,导致了SQLite数据库出现了损坏。所以,文章这里整理SQLite数据库出现损坏的所有情况,讨论文件覆盖问题、文件锁问题、数据同步问题、内存问题这几类问题,以及如何修复损坏的SQLite数据库文件。
2015-05-06 22:23:04
16101
原创 从erlang时间函数说到时间校正机制
很多人会注意到这个问题,erlang提供了2个时间函数,erlang:now() 和 os:timestamp()。用法一样,都是返回当前的时间。具体时间是从1970年1月1日零时算起,到现在经过的时间,结果为{MegaSecs, Secs, MicroSecs}。这两个函数有什么区别?而且,为什么要有 erlang:now() 函数。这就是文章想讨论的内容,从erlang时间函数说到时间校正体系。
2015-04-29 00:34:06
4439
18
原创 erlang catch的内部实现(初稿)
最近项目组有同事做了erlang内部数据(Eterm)的分享。Eterm 是Erlang Term的简写,用来表示erlang中任意类型的数据,也就是说,erlang可以用到的任意数据,都能 Eterm表示。比如常见的atom、数字、列表、元组,甚至pid,port,fun,ets表等等都用Eterm可以表示。但为什么会有一个叫catch的Eterm?相信不少人都会有这样的疑问。所以,本文就围绕着 catch 进行分析和讨论。
2015-03-31 01:16:10
3097
原创 使用IntelliJ IDEA开发erlang项目
最近erlang版本换到了R17,为了很好支持中文,项目所有模块文件第一行加了文件格式声明:%% coding: latin-1 。但是,erlide会识别这个语句,导致中文显示乱码,这个暂时没有选项可以解决这个问题。所以,我换了新的IDE,就是本文将要介绍的IntelliJ IDEA,这个IDE很好支持erlang,而且能支持eclipse的快捷键。
2015-03-10 21:47:04
20961
原创 erlang 接入远程shell控制台
erlang shell是用户与 erlang 运行时系统交互的界面程序。事实上,erlang VM的运行不依赖任何shell,只要在启动的时候添加参数detached就可以脱离终端。文章介绍erlang 4种接入远程shell的方法,作业(JCL )模式 、Remsh 模式、SSH 模式、管道(pipe)模式。
2015-02-16 11:02:38
5244
1
原创 erlang开发经验谈:防坑指南
任何语言在使用中都会遇到这样那样的问题,erlang也是。文章总结了'--' 运算,try.. catch,guard判断,random随机数,list_to_atom弊端,gen_server发消息,mnesia 2G限制,进程数量限制,ets限制,端口,匿名函数导致进程被kill等等问题,要重视一下,避免继续踩坑。
2015-02-12 23:25:02
5990
6
原创 分析erlang热更新实现机制
Joe Armstrong在描述Erlang的设计要求时,就提到了软件维护应该能在不停止系统的情况下进行。在实践中,我们也因为这种不停止服务的热更新获益良多。那么Erlang是如何做到热更新的呢?这就是本文要讨论的问题。在前面的文章也提及到erlang热更新的机制,现在继续深入剖析erlang热更新实现机制。
2015-02-10 01:08:22
8208
6
原创 C/C++ 数组下标可以是负值
我们知道,数组的第一个元素下标是 0。数组的范围也就是从 array[0] 到 array[size – 1]。 但实际上 c/c++ 支持正负下标。 负下标必须在数组边界内;否则结果不可预知。文章简单以例子说明数组负下标的使用。
2015-02-01 20:02:19
15681
原创 利用TortoiseSVN建立本地SVN库
Svn有很多常用功能,比如代码比较,回退,还原,归档等等,很多时候我们想使用到这些svn功能,但又不想大费周章建立服务端SVN库。其中,建立svn库主要有两种办法,一种就是装服务端版svn软件,另一种就是文章所讲的,利用TortoiseSVN建立本地SVN库。
2015-01-16 23:32:11
13882
原创 erlang binary数据转换的问题
erlang提供了binary_to_term,把一个二进制数据转为原始的erlang数据。但是,这个函数也有副作用。如果直接将对端传来的数据做一次 binary_to_term,就可能会导致VM crash掉。
2015-01-12 00:11:27
4838
4
原创 erlang语言实现binary_to_term
erlang提供了两个函数用于erlang数据与二进制的转换,term_to_binary 把erlang数据转成一个二进制数据,binary_to_term 则是把二进制数据转为原始的erlang数据。这两个函数都是c实现的,效率很高,可用于序列化和反序列化数据,可以被直接用来当作网络封包协议。文章主要探讨这种二进制协议数据的组织形式,以及用erlang语言实现binary_to_term
2015-01-09 01:29:57
4408
原创 erlang mnesia 常用使用技巧
Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南。文章收集一些常用 mnesia 使用技巧
2014-12-23 23:12:32
3114
2
原创 erlang热更新的实现与原理
前面的文章有讲过erlang热更新,只是大概介绍,现在再深入一点讲erlang的模块热更新的实现和原理。erlang的热更新是模块级别的,就是一个模块一个模块更新的。热更新就是在不停止系统的情况下对运行的代码进行替换。文章主要讲erlang如何热更新,热更新的原理,以及热更新会遇到的问题及解决思路。
2014-11-17 00:58:47
5708
原创 erlang进程trap_exit捕获异常退出
Erlang除了提供try catch,catch等语法,还支持link和monitor两种监控进程的机制,使得所有进程可以连接起来,组成一个整体。除了这样,erlang还提供trap_exit方法让进程主动捕获异常退出消息,避免发生异常时被系统关闭。
2014-11-16 15:56:53
7362
原创 使用impala/hive查询hbase数据
继续上周的测试,这周终于打通了hive到hbase的查询,这里以hive为例,impala走的是hive查询hbase的路子。 hbase访问方式 Native JAVA API最常规的最高效的访问方式Hbase ShellHbase的命令行供,以JRuby接口,最简单接入,适合HBase管理
2014-11-12 20:00:24
5518
原创 Erlang与C构建的节点通讯
Erlang节点通讯,主要是Erlang节点与Erlang节点之间的通讯,但Erlang同时支持erlang与java构建的节点通讯,还支持Erlang与c构建的节点通讯,前面两种方式在以前的文章都可以找到,所以这里讲Erlang与c构建的节点通讯。
2014-11-06 00:25:37
3138
2
原创 解决erlang R17无法识别中文问题
erlang更新到R17已有一段时间了,公司项目打算从旧版的erlang迁移到R17,却不料有不少的困扰,其中一个问题是中文问题。在erlang的文档中说到,erlang更新到R17后,默认编码从Latin-1换成了utf8,所以无法正确识别中文,文章主要讨论及解决这个问题。
2014-11-02 23:20:46
3884
windows vc++编译lua5.3 md5
2016-08-30
Microsoft Visual C++ 2010 SP1运行库
2016-08-15
redis windows C++客户端例子
2016-05-18
rlwrap-0.37.tar.gz
2016-01-07
apache模块 合并多个js/css 支持gzip
2015-10-26
erlang版本的protobuf(erl_protobuffs)
2015-06-12
erlang文献及资料汇总
2015-01-25
erlang语言实现binary_to_term完整代码
2015-01-09
改进erlang版的protobuf代码
2014-12-24
Erlang与C构建的节点通讯完整例子
2014-11-06
apache模块 合并多个js/css 更新64位版本
2014-07-09
在erlang项目中使用protobuf例子
2014-03-23
Windows下VC++使用protobuf 完整例子
2014-01-05
Windows下使用NIF扩展Erlang完整例子
2014-01-02
Mnesia table fragmentation 过程及算法分析
2013-12-21
javascript跨域插件 实现双向跨域
2013-12-07
javascript插件 解决双向跨域问题
2013-11-18
Erlang/OTP Application完整例子
2013-10-14
windows 搭建本地svn服务器
2013-06-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人