`
hideto
  • 浏览: 2682395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
让我们以一个hello程序为例: #include <stdio.h> int main() { printf("hello, world\n"); } 1.1 信息就是位+上下文 hello程序的生命周期是从源程序hello.c开始的 该源程序实际上就是一个由0和1组成的位(比特)序列,每8个一组 ...
本书适合那些想要写出更快、更可靠程序的程序员阅读。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好的理解程序的行为为什么是这样的,以及效率低下是如何造成。粗略来看,计算机系统包括处理器和存储器硬件、编译器、操作系统及网络互联环境。而通过程序员的视角,读者可以深深地体会到学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作有进一步的帮助。它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络打下基础。 本书的主要论题包括:数据显示、C程序的机器级表示、处理器结构、程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级I/O、网络编 ...
Erlang进程非常轻量级 进程间通过消息传递进行通讯 进程接收消息时无法判断消息是共享的还是物理上复制过来的,这取决于Erlang运行时系统 每个进程都有一个邮箱,或者说是消息队列,队列中包含所有发给该进程的消息的指针 消息本身是一个term,存储在堆上 进程调用receive语句时会扫描邮箱直到找到第一个匹配的消息 发送消息时接收者由进程id来指定,而不管进程位于何处 Erlang/OTP的三种运行时系统 Erlang/OTP的运行时系统基于process-centric架构,其中每个进程分配和管理自己的私有内存区域,这样做的优势是gc的latency很低 另外Erlang/OTP还带有两 ...
原文: Erlang: A Generalized TCP Server 前面几篇文章里谈到了Erlang的gen_tcp网络编程和Erlang/OPT的gen_server模块,现在让我们将它们两者绑定在一起 大多数人认为“服务器”意味着网络服务器,但Erlang使用这个术语时表达的是更抽象的意义 gen_serer在Erlang里是基于它的消息传递协议来操作的服务器,我们可以在此基础上嫁接一个TCP服务器,但这需要一些工作 网络服务器的结构 大部分网络服务器有相似的架构 首先它们创建一个监听socket来监听接收的连接 然后它们进入一个接收状态,在这里一直循环接收新的连接,直到结束(结 ...

Erlang里的make

Erlang自带一个make工具 我们看一个例子 目录结构: --Emakefile -include --test.hrl -src --test.erl -ebin Emakefile: {'src/*', [{i, "include"}, {outdir, "ebin"}]}. test.hrl: -record(server_opts, {port, ip="127.0.0.1", max_connections=10}). test.erl: -modul ...
原文: Erlang: An Introduction to Records 在Erlang内部只有两种混合的数据类型:List和Tuple,而这两种都不支持命名访问,所以如果没有额外的库的话想创建像PHP、Ruby或Python中的关联数组(Ruby中的Hash)是不可能的 在Ruby中我可以这样做: server_opts = {:port => 8080, :ip => '127.0.0.1', :max_connections => 10} 在Erlang的语法级别不支持这种表达 为了避免这种限制,Erlang虚拟机提供了一个伪数据类型,称为Record R ...
准备将www.beyondrails.com做成一个主流IT技术博客、资源、新闻的mashup,包括: 1,java 2,ruby 3,python 4,erlang 5,c/c++ 6,Ajax/RIA 7,Database 8,Linux 。。。等等等等 请大家及时转移个人资料,谢谢
前提: 需要下载as3corelib来为ActionScript3处理JSON codec server.erl -module(server). -export([start/0,start/1,process/1]). -define(defPort, 8888). start() -> start(?defPort). start(Port) -> case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of {ok, LSock} -> server_loo ...
使用下列JSON库: http://www.lshift.net/blog/2007/02/17/json-and-json-rpc-for-erlang 该JSON库采用Joe Armstrong prefered Data type mapping 即: JSON Obj = type obj() = {obj, [{key(), val()}]} JSON Array = type array() = [val()] JSON Number = type num() = int() | float() JSON String = type str() = ...
server.erl -module(server). -export([start/0,start/1,process/1]). -define(defPort, 8888). start() -> start(?defPort). start(Port) -> case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of {ok, LSock} -> server_loop(LSock); {error, Reason} -> exit({Port ...
server.erl -module(server). -export([start/0,start/1,process/1]). -define(defPort, 8888). start() -> start(?defPort). start(Port) -> case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of {ok, LSock} -> server_loop(LSock); {error, Reason} -> exit({Port ...
转贴一个简单的Web服务器: httpd.erl %% httpd.erl - MicroHttpd -module(httpd). -author("ninhenry@gmail.com"). -export([start/0,start/1,start/2,process/2]). -import(regexp,[split/2]). -define(defPort,8888). -define(docRoot,"public"). start() -> start(?defPort,?docRoot). star ...
本章描述了构建分布式、容错的Mnesia数据库相关的高级特性: 1)索引 2)分布和容错 3)表分片 4)本地内容表 5)无盘节点 6)更多的schema管理 7)Mnesia事件处理 8)Mnesia应用调试 9)Mnesia里的并发进程 10)原型 1,索引 如果我们知道record的key,那么数据获取和匹配在执行起来都很高效 相反如果不知道record的key,那么表里所有的record都必须搜索 当表越来越大时,表的搜索就越来越耗时 Mnesia的索引就是用来解决这个问题的 下面的两个方法对已有的表操作索引: mnesia:add_table_index(Tab, Attribu ...
本章讲述Mnesia事务系统和事务属性,它们让Mnesia成为一个容错的、分布式的数据库管理系统 讲述内容包括锁(table lock和sticky lock)、如何绕开事务(dirty operation)、嵌套事务(nested transaction): 1)事务属性,包括原子性,一致性,隔离性,持久性(ACID) 2)锁 3)脏操作 4)Record名与Table名 5)activity概念和多种访问上下文 6)嵌套事务 7)模式匹配 8)迭代 1,事务属性 在设计容错和分布式系统时事务是一个重要的工具 Mnesia事务是一种机制,通过它,一些数据库操作可以作为一个功能块来执行 作为一 ...
使用Rails开发大型复杂B2B应用一年了,这个项目目前开发人员达到近20人 现在感觉最痛苦的事情就是大家没有遵循统一的代码规范 我一直建议PM要设立一个项目架构师的角色,来统一大家的代码规范,但是PM不听 因为Ruby这种动态语言太灵活,大家各自写个各自的代码,相互之间很难看懂别人的代码 Controller、Model、View、Js、CSS等等文件目录的设立也是各模块小组之间各自为政 现在系统越来越复杂,各模块之间的协调和交互也越来越多 但是由于没有人来盯统一的代码规范和设计,大家的交流变得非常痛苦 换句话说,看见别人的代码和自己的代码风格迥异感觉很不爽
Global site tag (gtag.js) - Google Analytics