
模块化编程
「已注销」
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
青年人青年期心里特征和Erlang编程
%% Code from %% Erlang Programming %% Francecso Cesarini and Simon Thompson %% O’Reilly, 2008 %% http://oreilly.com/catalog/9780596518189/ %% http://www.erlangprogramming.org/ %% © Francesco Cesarini and Simon Thompson -module(echo2). -export([原创 2021-03-26 20:32:33 · 121 阅读 · 0 评论 -
Erlang之异常处理
%% Code from %% Erlang Programming %% Francecso Cesarini and Simon Thompson %% O’Reilly, 2008 %% http://oreilly.com/catalog/9780596518189/ %% http://www.erlangprogramming.org/ %% © Francesco Cesarini and Simon Thompson -module(exception). -expo原创 2021-03-24 20:19:56 · 162 阅读 · 0 评论 -
erlang列表逆序和拼接
erlang也学了有一阵子了,环境也配置了.平常只是把书上的例子敲到电脑上去运行.也去看了一下ejabberd的代码,觉得还是要自己去写一些代码才可以实际掌握语言的编程理念,毕竟这是一门函数式编程语言.不同于一般其它的命令式编程. 先从它的基本数据类型列表的处理开始吧.程序实现了列表的逆序,列表的连接.连接函数的参数是一个列表,列表每个元素也是一个列表.还是上代码吧 -module(mylists). -export([reverse/1]). -export([concate/1]). -expo原创 2021-02-06 11:23:51 · 251 阅读 · 0 评论 -
Server3:实现热带码交换的服务器
大多数服务器都执行一个固定的程序,如果要修改服务器的行为,就必须先停止服务器,再用修改后的代码重启它。而要修改这个服务器的行为,不用停止它,只需要发送一个包含新代码的消息,它就会提取新代码,然后用新代码和老的会话数据继续工作。这一过程被称为热代码交换。 -module(name_server1). -export([init/0,add/2,find/1,handle/2]). -import(server3,[rpc/2]). %%客户端方法 add(Name,Place)->rpc(name_se原创 2021-02-05 15:12:26 · 460 阅读 · 0 评论 -
Server:基本的服务器
以下是一个小小的服务器,可以用回调模块作为它的参数。 -module(server1). -export([start/2,rpc/2]). start(Name,Mod)-> register(Name,spawn(fun()->loop(Name,Mod,Mod:init()) end)). rpc(Name,Request)-> Name!{self(),Request}, receive {Name,Response}->Response end. loop(Name,Mod原创 2021-02-04 12:00:12 · 568 阅读 · 0 评论 -
模块化编程之通过记录命名元组里的项
记录一旦被定义,就可以创建该记录的实例了。要在shell里这么做,必须先把记录的定义读入shell,然后才能创建记录。我们将用shell函数rr(read records的缩写,即读取记录)来实现。 语法#todo用于创建一个类型为todo的新纪录。所有的键都是原子,而且必须与记录定义所用的一致。如果省略一个键,系统就会用记录里的值作为该键的默认值,语法X8=X6#todo{status=done}的意思是创建一个X1的副本,并修改字段status的值为done.请记住,这么做生成的是原始记录的一个副本,原创 2021-02-04 10:21:41 · 113 阅读 · 0 评论 -
模块化编程之归集器
归集器,让一个函数返回两个列表。举个例子,试着编写一个函数将整数列表一分为二,分别包含院士列表里的奇数和偶数。 -module(chen1). -compile(export_all). odds_and_evens1(L)-> Odds = [X || X <- L,(X rem 2) =:= 1], Evens = [X || X <- L,(X rem 2) =:= 0], {Odds,Evens}. 要避免遍历列表两次,重写代码如下。 现在程序只遍历列表一次,把奇偶参数分表添加原创 2021-02-04 08:34:04 · 232 阅读 · 0 评论 -
模块化编程之进程时间片轮转算法
在任意时刻,Erlang允许一个模块的两个及两个以上的模块同时运行,可以想象成一个带有四个版本的移位寄存器。一些进程可以运行旧版代码,与此同时,另一些进程可以运行新版代码。 -module(b). -export([x/0]). x()->1. -module(a). -compile(export_all). start(Tag)-> spawn(fun()->loop(Tag) end). loop(Tag)-> sleep(), Val=b:x(), io:format(“Vs原创 2021-02-03 20:56:37 · 162 阅读 · 0 评论 -
Erlang----进程吞吐量
-module(processes1). -export([max/1]). max(N)-> Max=erlang:system_info(process_limit), io:format(“Maximum allowed processes:pn”,[Max]), statistics(runtime), statistics(wall_clock), L=for(1,N,fun()->spawn(fun()->wait() end)end), {,Time1}=statistics原创 2021-01-30 08:02:51 · 159 阅读 · 0 评论 -
2021-01-30
-module(udp_test). -export([start_server/0,client/1]). start_server()-> spawn(fun()->server(4000) end). server(Port)-> {ok,Socket}=gen_udp:open(Port,[binary]), io:format(“server opened socket:pn”,[Socket]), loop(Socket). loop(Socket)-> receive原创 2021-01-30 07:48:11 · 142 阅读 · 0 评论 -
2021-01-30
-module(ets_test). -export([start/0]). start()-> lists:foreach(fun test_ets/1, [set,ordered_set,bag,duplicate_bag]). test_ets(Mode)-> TableId=ets:new(test,[Mode]), ets:insert(TableId,{a,1}), ets:insert(TableId,{b,2}), ets:insert(TableId,{a,1}), ets:i原创 2021-01-30 07:30:15 · 188 阅读 · 0 评论