- 博客(145)
- 资源 (77)
- 收藏
- 关注
原创 erlang判断模块导出函数问题
erlang本身提供一个接口,可以用来检查模块是否有导出函数,这个接口是erlang:function_exported/3,但是很多时候这个接口无法正常使用。很多模块在erlang启动时都没有加载到系统,都是在使用到的时候才加载,所以这个检查导出函数的接口可能会出现错误的结果。文章讨论这个问题的解决方案及为什么会这样的原因。
2014-11-01 01:27:49 4452
原创 erlang list的使用与优化建议
erlang有两种复合结构,tuple和list,两者的区别是tuple子元素的个数是固定不变的,声明后就不能改变了;而list是可变的,可以通过[H|T]来取出或插入新元素。上篇文章讲了tuple相关的内容,本篇就讲erlang list方面的知识,主要说一些基本操作和常用的list函数,再讲一些可以优化的点。
2014-10-24 19:16:20 8678
原创 erlang节点通讯例子及问题分析
分布式是erlang的三大特性之一,都说erlang分布式,最简单最直接的应用就是节点通讯。问题来了,怎么节点通讯,节点连接可能很多人知道,如何在两个节点连接后进行本地与远程通信?这就是本篇所讲的内容。文章以例子说明erlang如何进行节点通讯,以及总结一些erlang节点无法连接的问题。
2014-10-22 18:53:08 5228 6
原创 SecureCRT上传/下载linux文件
借助SecureCRT,使用linux命令sz可以将服务器的文件下载到本地,使用rz命令则是把本地文件上传到服务器。默认情况下linux系统没有这样的命令,文章同时也介绍安装rzsz的步骤。
2014-09-30 15:12:30 1450
原创 Centos6.5安装erlang过程及问题总结
今天在Centos6.5下安装erlang,过程真是一波三折,总结一下。文章以erlang R16B03为例作说明如何在Centos下安装erlang,以及遇到一些问题如何解决,比如C compiler 依赖,crypto:start()异常,jinterface,odbc的使用。
2014-09-24 19:03:45 12618 2
原创 linux下编译安装glibc
Glibc 包含了linux一些主要的C库,用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学计算等等。centos默认的glibc版本比较低,不支持一些新的应用,所以对glibc进行更新,发现编译glibc报一个错误:Makeconfig:42: *** missing separator. Stop看了glibc文档发现,glibc不能在源代码目录编译,建
2014-08-14 14:22:15 28357 2
原创 erlang与java构建的节点通讯
我们知道,erlang开源社区的活跃度远远不及java社区,为了让erlang和java社区的众多开源框架相结合,让他们优势互补,可以让erlang来调用java写的中间件。erlang提供了一个Jinterface代码包,java可以和erlang建立节点通信。通过这种方式,erlang可以将 java构建的节点也当作erlang的一个节点,java可以接收erlang传过来的消息,并且处理之后以异步的方式发送处理结果。文章介绍java如何建erlang节点与erlang通讯,以及讨论无法连接的情况及解决
2014-08-10 14:27:16 3698 3
原创 Erlang提高ETS并发读写性能
ETS是Erlang内置的内存数据库,可用于多进程共享数据,具有并发读写的性能,文章就这点展开探讨,重点说说ets并发读写两个参数的优缺点及适用场合。
2014-07-26 23:26:22 6539 8
原创 erlang shell表格数据对齐
最近在erlang shell做一些测试,为了让测试结果数据显得更直观,想对齐需要打印的数据,做成像表格一样的效果。开始的想法是在数据中插入tab。当然,erlang也有对tab的支持,但实际效果不理想。文章介绍一种自定义字符个数的方法。
2014-07-20 14:25:17 2199
原创 简单谈谈Erlang的几种运算符
Erlang 有好几种运算符,比较运算符、数学运算符、布尔运算符,文章针对这几种运算符做讨论,参考erlang文档,以例子说明。
2014-07-15 13:20:41 22637
原创 mnesia如何修改表结构
mnesia创建的时候需要指定表record结构,如果定义的record结构修改了,就要更新数据的表结构,否则mnesia无法正常读取和写入数据。文章介绍如何修改mnesia的表结构
2014-06-30 23:47:03 2838
原创 说说erlang tuple和record结构
erlang有两种复合结构,tuple和list,两者的区别是tuple子元素的个数是固定不变的,声明后就不能改变了;而list是可变的,可以通过[H|T]来取出或插入新元素。record有点像C/C++里面的结构体,实际上是语法糖,方便我们的开发,代码汇编时转成tuple表达形式。文章将分别以例子及汇编代码说明erlang tuple和record结构
2014-06-16 23:19:36 5748 7
原创 erlang二进制数据垃圾回收机制
erlang二进制数据在内存中有两种存在形式,当数据大小不到 64 bytes,就直接存在进程堆内,如果超过了64 bytes,就被保存到进程外的共享堆里,可以给节点内所有进程共享。结合上篇谈到的Erlang进程堆垃圾回收机制,这里再谈谈erlang二进制数据的垃圾回收机制
2014-06-10 01:01:57 3568 5
原创 分析和解决mnesia过载问题
mnesia在频繁写数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了。这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies 、disc_copies都可能会发生。文章将分析mnesia过载的原因,同时从mnesia dump数据角度来剖析这个问题,最后总结解决mnesia过载的方法和存在问题
2014-06-06 22:53:50 5486
原创 erlang如何有效监听大量并发连接
看了erlang的一些开源网络框架RabbitMQ、Ranch,他们都使用多个进程同时accept一个socket。这种方式在使得socket端口监听的工作分担了更多的调度机会,但是,在erlang中,socket接受一个新连接后,如果想让另一个进程处理消息,就要显式的调用gen_tcp:controlling_process(Socket, Pid)。所以问题来了,erlang多个进程同时监听一个socket安全吗?文章将会重点讨论这个问题及对这个问题做优化。
2014-05-29 22:58:26 3939
原创 Erlang进程堆垃圾回收机制
每个Erlang进程创建之后都会有自己的PCB,栈,私有堆。erlang不知道他创建的进程会用到哪种场合下,所以一开始分配比较小。如果分配的空间不够了,erlang gc会动态调整堆大小以满足需求,如果分配的空间大了,就会回收内存。文章主要讲述Erlang进程堆垃圾回收机制,以及如何利用erlang gc机制对系统做一些优化
2014-05-23 00:17:52 10696 11
原创 erlang在windows下和虚拟机节点通信
在Linux下部署erlang项目,开发过程很多都是在Windows完成的,然后再发布到Linux,所以测试过程要在虚拟机下完成。有一天因为想要在虚拟机中使用到erlang图形化工具,比如appmon、tv、observer等等,便突发奇想得利用Windows的erlang连接到虚拟机中使用这些工具,用以查看虚拟机的运行状态。
2014-05-11 23:59:27 3757 3
原创 erlang R17新socket选项{active,N}
erlang R17带来了新的socket选项{active,N} ,与{active,once}一起为应用层提供流量控制。为什么会多了这个选项,{active,once}不是可以有效抑制大量socket消息吗?我们知道,{active,once}在每次接收到包都要重新设置active选项,才能继续接收erlang的消息通知。实际上,每次设定{active,once}都意味着调用一次epoll_ctl, 如果请求过于频繁,就会有大量的epoll_ctl调用。erlang目前只有一个线程会收割epoll_wa
2014-05-11 22:37:52 4476 8
原创 总结eclipse常用快捷键和使用技巧
总结eclipse常用快捷键,记熟的话,在一定程序上也可以提高开发效率。文章主要列举eclipse快速删除,函数跳转,内容注释,内容补全,文件名搜索,大小写转换等快捷键。修改文件默认编码和用空格替换Tab键缩进等常用配置
2014-04-30 21:21:23 2508 1
原创 浅谈Flash Socket通信安全沙箱
用过Flash socket的同学都知道,Flash socket通讯有安全沙箱问题。就是在Flash Player发起socket通信时,会向服务端获取安全策略,如果得不到服务端响应,flash将无法连接到服务端。文章将讨论什么是Flash安全沙箱,Flash Player怎么获取Socket策略,Socket策略的格式,Flash Player获取Socket策略时发什么请求信息给服务端。
2014-04-29 23:18:36 3795
原创 Centos 5.5 安装Mysql5.5过程
这几天在centos5.5下装mysql5.5,这里记录一下安装的过程,方便以后查阅。Mysql5.5安装需要cmake,5.6版本开始都需要cmake来编译,5.5以后的版本应该也要装这个。文章讲述在centos5.5下装mysql5.5安装过程及遇到问题的解决方法
2014-04-28 00:06:14 3061 2
原创 Erlang与As通讯解决消息粘包
在网络通讯中,消息粘包是个很常见的问题。文章将讲解Erlang与As通讯时如何解决消息粘包问题。解决方法是在消息内容前加消息长度。erlang端很好解决,直接修改 {packet, N}属性,erlang自动做这个过程。AS端的做法在发送消息前先转成bytes,再计算内容长度;接收数据时先获取包头,再获取后面的数据。
2014-04-22 23:35:50 2240
原创 unity3d移动摄像机,支持PC、手机
unity3d游戏开发经常会遇到移动摄像机的情况,特别是场景太大,屏幕很难完全展示。以下代码整合了PC和移动设备移动摄像机的方法,支持两点触控缩放using UnityEngine;using System.Collections;public class MoveCamera : MonoBehaviour { // 记录手指触屏的位置 Vector2 m_scr
2014-03-30 10:24:06 3832
原创 解决unity3d读写中文乱码
最近用到unity3d读写文件,遇到了中文乱码问题,就研究了一下。项目是C#写的,这里就介绍C#读写中文的例子。
2014-03-29 10:46:04 12343
原创 VC编写COM组件提供PHP调用
最近项目需要PHP来解析二进制数据,如果直接PHP做比较麻烦,就想到VC编写COM组件来做,提供PHP调用。文章将介绍VC编写COM组件提供PHP调用,实现一个计算两个数字相加的功能。
2014-03-29 00:10:37 3887
原创 unity3d使用Mono.Xml读取xml
unity3d读取xml有好几种方式,最简单是直接利用System.Xml读取xml,但是项目打包会比较大,增加了1M的资源占用。另外两个是利用其他轻量级xml库来实现,如Mono.Xml、XMLParser。Mono.Xml是c#写的,XMLParser是js写的。文章主要说明Mono.Xml的用法。为什么不建议使用System.Xml,unity的解释如下:When building
2014-03-27 23:05:09 10023 10
原创 unity3d点击屏幕选中物体
前些天接触unity3d,想实现点击屏幕选中物体的功能。后来研究了下,实现原理就是检测从屏幕发出的射线与物体发生碰撞,而这个发生碰撞的物体就是你选中的物体。
2014-03-23 22:10:10 11995
原创 在erlang项目中使用protobuf
protobuf是Google的一个序列化框架,类似XML,JSON,其最大的特点是基于二进制,比传统的XML表示同样一段内容要短小得多。还可以定义一些可选字段,广泛用于服务端与客户端通信。文章将着重介绍在erlang如何使用protobuf。
2014-03-23 21:57:49 10154 8
原创 erlang循环结构:尾递归,列表解析
最近看到一道erlang面试题,分别用尾递归,lists模块,列表解析找出0-9的偶数。文章在后面的内容中也对erlang两种循环结构(尾递归,列表解析)分别进行讨论。
2014-03-20 23:39:25 7347
原创 解决eclipse导入erlang项目中文乱码
eclipse可以很方便地管理erlang项目,eclipse对erlang的默认编码ISO-8859-1,所以就会经常发生中文乱码问题。文章将说明如何解决eclipse导入erlang项目中文乱码问题。eclipse先导入erlang项目,再通过修改eclipse配置来解决乱码。如下:Window > Preferences > General > Content Types
2014-03-17 21:20:31 3219
原创 解决protobuf数据丢失bug
protobuf是Google开发的一个开源序列化框架,类似XML,JSON,其最大的特点是基于二进制,比传统的XML表示同样一段内容要短小得多。通过protobuf,可以很轻松的调用相关方法来完成业务数据的序列化与反序列化。但是,protobuf在使用当中也发现一些问题,数据在protobuf序列化后无法反序列化,或者丢失部分数据,这就与protobuf的目的违背。文章将讨论和解决这个protobuf bug问题
2014-02-21 22:06:16 12351 6
转载 浅谈MySQL优化索引技巧
mysql的优化可以从硬件设备的选择、操作系统、数据库结构设计、SQL查询、应用程序各个方面进行优化,这里只从数据库的设计及查询语句方面进行优化。1、创建索引对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加 索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量
2014-02-20 21:01:45 2236 1
原创 erlang 解决socket 数据粘包问题
我们知道,erlang实现的网络服务器性能非常高。erlang的高效不在于短短几行代码就能写出一个服务端程序,而在于不用太多代码,也能够写出一个高效的服务端程序。而这一切的背后就是erlang对很多网络操作实现了近乎完美的封装,使得我们受益其中。文章将讨论erlang gen_tcp 数据连包问题及erlang的解决方案。
2014-02-13 21:05:29 7428 2
原创 C++ regex 正则表达式的使用
在c++中,有三种正则可以选择使用,C ++regex,C regex,boost regex ,如果在windows下开发c++,默认不支持后面两种正则,如果想快速应用,显然C++ regex 比较方便使用。文章将讨论C++ regex 正则表达式的使用。
2014-02-09 19:32:01 76342 7
原创 Erlang热部署 - 心跳机制(heart)
我们写的程序不可能都没有bug,特别是项目越做越大,代码越来越多的时候,系统出错导致崩溃的可能性越来越大。而很多时候引发系统崩溃的来源可能不是致命性的,比如程序长时间运行,操作系统资源调度问题,或者是偶然的系统突发问题等等。那么,如何防止erlang猝死导致服务的长时间中断,erlang也给了我们答案:erlang心跳机制。文章将从erlang心跳机制、心跳原理、心跳参数、心跳函数几个方面来讲述。
2014-01-15 19:56:55 4926
原创 Windows下VC++使用protobuf
Protocol Buffers(protobuf)是Google提供的一个开源序列化框架,类似XML,JSON,其最大的特点是基于二进制,比传统的XML表示同样一段内容要短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持c++、java、python等语言环境。文章将说明如何在windows下VC++使用protobuf
2014-01-05 12:50:04 6801 5
原创 Erlang 整数与浮点数转换、进制转换
Erlang 整数与浮点数的转换、数字之间的进制转换,浮点数改变精度等等这些功能,Erlang BIF(Erlang内建函数)已经帮我们很好实现,调用他们也很方便,文章将简单说明如何去使用他们。
2014-01-03 21:46:12 5792
原创 JavaScript判断变量是否为空
JavaScript本身没有判断一个变量是不是空值的函数,因为变量有可能是string,object,number,boolean等等其中的一种,类型不同,判断方法也不同。所以在文章中写了一个函数,用以判断JS变量是否空值,如果是undefined, null, '', NaN,false,0,[],{} ,空白字符串,都返回true,否则返回false
2014-01-03 19:27:59 6602 1
原创 Windows下使用NIF扩展Erlang方法
在Erlang中,NIF(Native Implemented Function)被用来扩展erlang的某些功能,一般用来实现一些erlang很难实现的,或者一些erlang实现效率不高的功能。NIF使用C开发,效率和C接近,比纯erlang实现要高。NIF会编译成动态库,直接动态加载到erlang进程空间调用,也是erlang扩展新方法最高效的做法。
2014-01-02 19:48:41 5189 17
原创 JavaScript将数据转换成整数的方法
JavaScript提供将数值转成整数的方法parseInt,用于转换字符串数据“123”,或者浮点数1.23等等。但是parseInt函数不是经常有效,为此文章列举几个函数,用于将任意数值的数据转换成整数。
2014-01-01 17:04:26 3167 1
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关注的人