binary 是 Erlang 中一个具有特色的数据结构,用于处理大块的“原始的”字节块.如果没有 binary 这种数据类型,在 Erlang 中处理字节流的话可能还需要像列表或元组这样的数据结构.根据之前对这些数据结构 Eterm 的描述,数据块中的每一个字节都需要一个或两个机器字来表达,明显空间利用率低,因此 binary 是一种空间高效的表示形式. 在 binary 对字节序列处理能力的基础上,Erlang 进一步泛化 binary 的功能,提供了 bitstring 数据结构,让开发者…
本文介绍 Erlang 语言中使用的各种数据类型以及这些数据类型在 Erlang 虚拟机内部的表示和实现.了解数据类型的实现可以帮助大家在实际开发过程中正确选择数据类型,并且可以更好更高效地操作这些数据类型.本文对 Erlang 数据类型及实现的总结目前是最全面的,可以作为 Erlang 数据结构的参考手册.尽管我写的内容都试图在各种参考资料和 Erlang 虚拟机源代码中验证,但是难免会有理解错误或各种低级错误,希望大家指正,也希望能对 Erlang 爱好者们有帮助. Erlang数据类型回顾…
Erlang 数据类型的内部表示和实现 Erlang 中的变量在绑定之前是自由的,非绑定变量可以绑定一次任意类型的数据.为了支持这种类型系统,Erlang 虚拟机采用的实现方法是用一个带有标签的机器字表示所有类型的数据,这个机器字就叫做 term.在 32 位机器上,一个 term 为 32 位宽:在 64 位机器上,一个 term 默认为 64 位宽[注2].由于目前大规模的服务器基本上都是 64 位平台,所以本文下面的讨论都基于 64 位平台. Erlang 虚拟机采用的是虚拟寄存器机的形式…
Boxed 对象 Boxed 对象是比较复杂的对象,在 Erlang 中主标签为 10 的 Eterm 表示一个对 boxed 对象的引用.这个 Eterm 除去标签之后剩下的实际上是一个指针,指向具体的 boxed 对象.如下图所示,boxed 对象由对象头和具体的数据组成,这些字都排布在一起,占用进程栈中的一段连续空间(不像列表那样会分开). 对象头分为 3 部分:主标签固定为 00(因此也没有 Eterm 以 00 为主标签),然后是 4 个位表示的 header 标签,这个标签表示了这个…
列表 Erlang 中的列表是通过链表实现的,表示列表的 Eterm 就是这个链表的起点.列表 Eterm 中除去 2 位标签 01 之外,剩下的高 62 位表示指向列表中第一个元素的指针的高 62 位.我们在生成一个列表的时候,会采用这样的语法:L = [Head | Tail],Head 表示要添加到头部的单个元素,Tail 表示另一个列表.这种 Head 和 Tail 的组合称为一个 Cons 单元.在函数式语言里面,获得 Head 的操作称为 CAR,获得 Tail 的操作称为 CDR.…
Erlang Resources 小站 2013年7月~12月资讯合集,方便检索.     附 2013上半年盘点: Erlang Resources 小站 2013年1月~6月资讯合集    小站地址: http://site.douban.com/204209/ 七月   Clojure in the Largehttp://www.infoq.com/presentations/Clojure-Large-scale-patterns-techniques mongodb / bson-e…
笔记系列 Erlang环境和顺序编程 Erlang并发编程 Erlang分布式编程 Yaws Erlang/OTP 日期              变更说明2014-10-12 A outline, 1, 32014-10-19 A 2.1, 2.22014-10-26 M 2.1, 2.2  A 2.3 2014-10-27 A 2.4 类型系统 前言 拖了很久很久了,终于快忘的差不多了. Agenda 0 范围 环境 Erlang运行时环境.Emacs开发环境 顺序编程 数据结构 语法和语义…
抄自这里 首先,库存在的目的大致可分为:1.提供便利2.尽可能解决一些痛点 首先,我们先明确一下Erlang编程语言的一些痛点(伪痛点):1,单进程问题Erlang虚拟机属于抢占式调度,抢占式调度有很多好处,但是同样也存在这弊端.虚拟机在默认情况下分配个每个进程的资源都是相同的,但是若一个进程(gen_server/event/fsm)要为其他许多进程提供服务,这个进程就极有可能成为整个Erlang系统的瓶颈所在.http://www.cnblogs.com/--00/p/4277640.htm…
很多事情要做,一件一件来; Erlang Resources 小站 2013年1月~6月资讯合集,方便检索.      小站地址: http://site.douban.com/204209/     1 月   A few thoughts about Open Source Software Antirez http://dou.bz/1pyUXj Erlang's biggest missing feature: globals http://dou.bz/22GYw7 DTrace, F…
数据类型是数据的一种属性,表示数据所表示信息的类型.任何一种计算机语言都定义了自己的数据类型.当然,不同的程序语言都具有不同的特点,所定义的数据类型的种类和名称都或多或少有些不同.SQLServer 提供了 25 种数据类型: ·Binary [(n)] ·Varbinary [(n)] ·Char [(n)] ·Varchar[(n)] ·Nchar[(n)] ·Nvarchar[(n)] ·Datetime ·Smalldatetime ·Decimal[(p[,s])] ·Numeric[…