![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模块化编程
「已注销」
这个作者很懒,什么都没留下…
展开
-
青年人青年期心里特征和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 · 84 阅读 · 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 · 124 阅读 · 0 评论 -
erlang列表逆序和拼接
erlang也学了有一阵子了,环境也配置了.平常只是把书上的例子敲到电脑上去运行.也去看了一下ejabberd的代码,觉得还是要自己去写一些代码才可以实际掌握语言的编程理念,毕竟这是一门函数式编程语言.不同于一般其它的命令式编程. 先从它的基本数据类型列表的处理开始吧.程序实现了列表的逆序,列表的连接.连接函数的参数是一个列表,列表每个元素也是一个列表.还是上代码吧-module(mylists).-export([reverse/1]).-export([concate/1]).-expo原创 2021-02-06 11:23:51 · 203 阅读 · 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 · 339 阅读 · 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}->Responseend.loop(Name,Mod原创 2021-02-04 12:00:12 · 506 阅读 · 0 评论 -
模块化编程之通过记录命名元组里的项
记录一旦被定义,就可以创建该记录的实例了。要在shell里这么做,必须先把记录的定义读入shell,然后才能创建记录。我们将用shell函数rr(read records的缩写,即读取记录)来实现。语法#todo用于创建一个类型为todo的新纪录。所有的键都是原子,而且必须与记录定义所用的一致。如果省略一个键,系统就会用记录里的值作为该键的默认值,语法X8=X6#todo{status=done}的意思是创建一个X1的副本,并修改字段status的值为done.请记住,这么做生成的是原始记录的一个副本,原创 2021-02-04 10:21:41 · 81 阅读 · 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 · 175 阅读 · 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 · 128 阅读 · 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 · 122 阅读 · 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 · 120 阅读 · 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 · 157 阅读 · 0 评论