gnu parallel

Shell 并发编程

那年仲夏 提交于 2020-08-13 12:28:47
案例1 通过文件描述符控制并发数 #用fifo处理shell下多进程并发: #!/bin/bash #author : vaedit #date : 2017-8-15 #需要执行的工作函数 function mima(){ openssl rand -base64 40 >> ssf.txt } #判断是否存在fifo文件 if [ -e /tmp/$$.fifo ];then rm -rf /tmp/$$.fifo fi #创建$$.fifo 主要是为了防止同名 fifo_file=/tmp/$$.fifo mkfifo $fifo_file #把文件表述符fd6和fifo文件绑定 exec 6<>"$fifo_file" process_num=10 #向fd6中输入10个回车 for ((i=0;i<$process_num;i++)) do echo done >&6 #处理业务 for ((a=0;a<10;a++)) #这里写10表示业务总条数,比如业务总共要执行100次,就填100 do read -u6 ##read -u6命令执行一次,相当于尝试从fd6中获取一行,如果获取不到,则阻塞#获取到了一行后,fd6就少了一行了,开始处理子进程,子进程放在后台执行 { mima sleep 3 # 暂停3秒,这里是关键点

OO 第四单元总结

时光总嘲笑我的痴心妄想 提交于 2020-08-06 14:52:10
OO 第四单元总结 目录 OO 第四单元总结 本单元三次作业的架构设计 第一次作业 第二次作业 第三次作业 四个单元中架构设计及 OO 方法理解的演进 第一单元 第二单元 第三单元 第四单元 总结 四个单元中测试理解与实践的演进 第一单元 第二单元 第三单元 第四单元 总结 课程收获 Java 编程 OO 思想 架构 测试 分析 正则表达式 JML 规格 JUnit 单元测试 多线程 三个具体改进建议 线上学习 OO 课程的体会 总结 本单元三次作业的架构设计 第一次作业 实际上本单元三次作业,做的是信息查询的工作。 .mdj 文件是用 JSON 格式表示的 UML 图,通过官方给的转换器转换成 JSON 文件。每个 JSON 文件一个节点,可以在 AppRunner 中解析回原来的对象。整个是一个序列化与反序列化的过程,但 UML 图的各种关系需要被重建。 由于操作以查询为主且 UML 图各种元素的关系比较清晰,使用分类的方式进行重建, UmlClass 、 UmlOperation 、 UmlParameter 等类的对象按照单独的类处理,每个类有它的管理器来管理。顶层的 MyInteraction 负责从各种管理器中得到相应的数据,并进行查询和判断。管理器中普遍使用了记忆化,确保只遍历一遍 elements 就能记住所有需要记住的关系。 具体存储对应关系是以 Map 为主