erlang习题

1 分别用ets和进程字典来实现数据的存储,提供存跟取的接口,record(data,{key,value}),分析两种的性能;
比如存储100,1000,1w,10w,100w等数据,各自情况下的存入时间及读取时间。

2 用gen_server来实现求面积的功能(正方形,圆形,长方形等),一个管理者进程和n个worker进程;
管理者负责将任务委托给worker进程,同时记录各个worker进程的状态(busy/free);
当全部worker进程都处于繁忙时,新开worker进程;当worker进程大部分空闲时,将新开的worker进程回收掉。


3、使用gen_server创建一个数据查询以及维护的服务进程,数据分为以下三类:
a. 多条角色在线记录(role_id, role_name, role_sex, role_lev),保存在ets中
b. 活动数据记录
#activity{
loop_count = 0
,join_role_id_list = []
}
使用gen_server的State来保存,在init的时候进行初始化
c. 多条角色领取奖励次数的记录 {role_id, get_reward_time},保存在进程字典中,使用role_id作为进程字典的key

针对a类数据:提供函数接口,通过直接调用ets的lookup、match函数来进行数据的查询操作,并通过gen_server:call调用,来进行数据的增、删、改操作
针对b类数据:提供函数接口,通过gen_server:call调用,来进行数据(只处理join_role_id_list)的增、删、查、改操作
针对c类数据:提供函数接口,通过gen_server:call调用,来进行数据的查询操作,并通过gen_server:cast的方式,来进行数据的增、删、改操作

最后,在b类数据中有一个loop_count字段,在gen_server init初始化时设置为0,并给自己发送一个定时消息(定时时长为10秒)。
在handle_info中处理这个定时消息,需要实现的逻辑是 每隔10秒钟,loop_count + 1。

4、使用gen_fsm创建一个活动服务,要求:
a. 该活动每天中午12点、晚上6点时开启,(使用打印输出模拟活动开启)
b. 活动分为四个阶段,分别为 报名阶段、准备开启阶段、开启阶段、结束阶段 (空闲阶段)
c. 只有在报名阶段才可以报名参加,报名成功则将报名的角色信息存放在ets中,结束后清空该表。

ps:后面两道就是哲明那边出的题,你们也可以做做看。


相关主题
相关文档
最新文档