1、图书管理系统以UNIX系统文件部分系统调用为基础设计一个简易的图书管理系统。
要求实现:图书的录入、查询、借阅、清理、统计等功能、还要实现对每天的借阅情况进行统计并打印出统计报表,操作界面要尽量完善。
图书资料信息必须保存在文件中。
2、信号通信与进程控制(l)进程的创建:编写一段程序,使用系统调用fork()创建两个或多个子进程。
当此程序运行时,在系统中有一个父进程和其余为子进程在活动。
(2)进程的控制:在程序中使用系统调用lockf()来给每一个进程加锁,实现进程之间的互斥。
(3)进程通信:①软中断通信;
②在程序中使用实例signal(SIGINT,SIG_IGN)和signal(SIGQUIT,SIG_IGN)进行通信操作,观察执行结果,并分析原因。
(4)软中断的捕获与重定义。
首先定义一个服务函数function(),然后利用signal(sig,function)系统调用来实现中断的捕获与改道。
(5)使用操作系统保留给用户的信号SIGUSR1和SIGUSR2进行通信。
(6)扩展程序,使之成为信号或事件驱动的应用程序。
3、管道通信利用UNIX系统提供的管道机制实现进程间的通信。
(1)管道通信。
利用pipe()和lockf()系统调用,编写程序,实现同族进程间的通信。
使用系统调用pipe()建立一条管道线;
创建子进程P1、P2、…。
子进程Pi分别向管道各写信息,而父进程则从管道中读出来自于各子进程的信息,实现进程家族间无名管道通讯。
扩展之,使之成为客户/服务器模式,并完成一定的任务(自己定义)。
(2)命名管道通信:利用mkfifo(name,mode)或mknod(name,mode,0)创建一个命名管道,然后利用它和文件部分系统调用实现不同进程间的通信。
改造之,使之成为客户/服务器模式,并完成一定的任务(自己定义)。
4、进程间通信(IPC):消息机制(1)消息的创建、发送和接收使用系统调用msgget(),msgsnd(),msgget(),及msgctl()编制一长度为1K的消息发送和接收的程序。
1)为了便于操作和观察结果,用一个程序作为“引子”,先后fork()两个子进程,SERVER和CLIENT,进行通信。
SERVER和CLIENT也可分别为2个各自独立的程序。
2)SERVER端建立一个Key为175的消息队列,等待其他进程发来的消息。
当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER。
SERVER每接收到一个消息后显示一句“(server)received”。
3)CLIENT端使用key为175的消息队列,先后发送类型从10到1的消息,然后退出。
最后的一个消息,即是SERVER端需要的结束信号。
CLIENT每发送一条消息后显示一句“(client)sent”。
4)父进程在SERVER和CLIENT均退出后结束。
(2)功能扩展:在sever端创建一个服务函数,从而实现C/S通讯要求SERVER每接收到一次数据后不仅仅显示“(server)received”,而是做一些其它事情,比如读取或查询某个文件,或者执行一个shell命令等。
此功能可由设计者自己定义。
在此基础上可以扩展客户端,比如设计一个菜单界面,接收不同的选项,并发送到服务器端,请求对方提供服务。
5、进程间通信(IPC):共享内存机制(1)共享存储区的创建,附接和断接使用系统调用shmget(),shmat(),msgdt(),shmctl(),编制一长度为1K的消息发送和接收的程序。
1)为了便于操作和观察结果,用一个程序作为“引子”,先后fork()两个子进程,SERVER和CLIENT,进行通信。
SERVER和CLIENT也可分别为2个各自独立的程序。
2)SERVER端建立一个Key为375的共享区,并将第一个字节置为-1,作为数据空的标志,等待其他进程发来的消息。
当该字节的值发生变化时,表示收到了信息,并进行处理。
然后再次把它的值设为-1。
如果遇到的值为0,则视为结束信号,取消该队列,并退出SERVER。
SERVER每接收到一次数据后显示“(server)received”。
3)CLIENT端建立一个Key为375的共享区,当共享取得第一个字节为-1时,SERVER端空闲,可发送请求。
CLIENT随即填入9到0。
期间等待Server端的再次空闲。
进行完这些操作后,CLIENT退出。
CLIENT每发送一次数据后显示“(client)sent”。
4)父进程在SERVER和CLIENT均退出后结束。
(2)功能扩展:在sever端创建一个服务函数,从而形成C/S通讯模式要求SERVER每接收到一次数据后不仅仅显示“(server)received”,而是做一些其它事情,比如
2024/7/19 3:04:26 918KB 操作系统
1
JS库,用于构建与LoomDAppChains交互的浏览器应用程序和NodeJS服务。
安装节点JS#NPMnpminstallloom-js#Yarnyarnaddloom-js浏览器<scriptsrc="https://cdn.jsdelivr.net/npm/loom-js@1.15.0/dist/loom.umd.js"></script>调试loom-js使用包进行日志记录。
要在浏览器中运行时检查日志,请设置localStorage.debug='*'要在NodeJS中运行时检查日志,请将DEBUGenvvar设置
2024/7/19 1:44:47 320KB nodejs javascript typescript ethereum
1
以前用Java做的UDP聊天,现在拿出来,你们在使用时需要改一下里面的IP地址及端口号,运行时要先运行服务器再运行客户端。
2024/7/15 10:19:11 3KB UDP通信聊天
1
树突状病毒请阅读以获取详细信息。
注意:Denite.nvim没有定义任何默认映射。
您需要定义它们。
关于Denite是Neovim/Vim统一所有接口的暗功能插件。
它可以用其界面替换许多功能或插件。
它就像一个模糊查找器,但是更通用。
您可以扩展接口并创建源。
您可以使用它进行以下操作:开启档案切换缓冲器插入寄存器的值更改当前目录搜索字符串就像是Vim的。
但是实现起来很丑,而且非常慢。
Denite解决了Unite的问题。
这里有一些好处:理论上更快,因为主进程由Python执行理论上更稳定,因为在运行时无法执行其他任何处理。
实现比联合更简单具有实施新功能的更大潜力Python3比Vimscript更易于使用有很多有用的工具可以使Python3中的代码保持简单(线性,测试器等)。
Unite在官方上已过时,次要错误(甚至主要错误)已不再修复要求反硝化需要Neovim0.4.0+或Vim的8.0+与if_python3。
如果:echohas("python3")返回1,那么您就完成了。
注意:请安装/升级msgp
2024/7/15 10:31:47 133KB python vim asynchronous nvim
1
数据结构课设1.问题描述程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。
游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。
2.功能要求1)老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2)迷宫的墙足够结实,老鼠不能穿墙而过:3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败:4)添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;5)找出走出迷宫的所有路径,以及最短路径。
利用序列化功能实现迷宫地图文件的存盘和读出等功能使用QT编写,除实现上述全部要求外还可自动生成迷宫,主要涉及DFS算法
2024/7/14 12:57:10 23.34MB qt 课程设计 迷宫游戏
1
本文主要讲述利用JavaWeb的相关技术来制作一个简单论坛。
通过实际制作,实现了BBS论坛系统应有的一些基本功能,如:登陆功能,通过在登陆界面输入用户名和密码来实现会员的登录,用户只有登录成功了才能进行一系列的操作;
注册功能,用户首次登陆,需要先注册,注册时需要用户填写个人信息;
除此之外,还有浏览帖子、发表帖子、回复贴子以及删除帖子等等功能。
制作本论坛所用的软件是MyEclipse,数据库是MySQL,运行时所用的服务器是Tomcat,综合运用了HTMLL、Jsp、javabean、servlet。
2024/7/12 12:50:40 1.34MB jsp 论坛 bbs
1
包含片上缓存和暂存器(SPM)的混合存储体系结构已经过广泛用于嵌入式系统。
在本文中,我们将共同探讨这种混合内存架构为带有回路的嵌入式系统优化时间性能和温度。
我们的基本思想是适应性地根据当前温度调整缓存和SPM之间的工作负载分配。
为一个可以先验地估计工作量的问题,我们提出了一种非线性规划公式以在SPM大小和温度的约束下最佳地最小化循环的总执行时间。
为了解决先验工作量未知的问题,我们提出了一种温度感知自适应称为TALS的循环调度算法可在运行时动态地将数据分配给缓存和SPM。
这实验结果表明,我们的算法可以有效地实现性能和温度。
使用缓存和SPM对嵌入式系统进行优化。
2024/7/5 19:10:01 797KB Data allocation; temperature aware;
1
不少程序在运行时会创建/打开全局Mutex,来限制用户多开
2024/7/1 21:23:57 10.67MB QueryObject
1
通常软件保存用户数据无非两种方法:1.自己建立文件保存用户数据。
2.在注册表中保存数据。
有没有可能利用软件可执行文件自身来保存数据呢?因为软件还在运行,直接修改自身是不可能的。
但有一种间接的方法:先制作一个自身的副本,然后修改副本后退出。
退出时运行副本,副本运行时将自身复制为主后退出。
副本退出时再运行主本,此时主本再删除副本。
整个过程的关键是识别自身是主本还是副本及此次运行要执行的操作。
这些可通过加命令行参数来识别。
如果副本运行时主本还未退出,则复制或删除会失败,所以要等待动作成功完成后再进行下一步。
缺点是退出到副本能运行之间有段时间的,所以窗口会闪一下。
此方法可用于软件自升级,即用下载到的新软件替换自身。
2024/6/23 0:30:12 852KB 升级 自身 保存 数据
1
为非调试版本的C运行时库(CRuntimeLibrary),版本号为11.0.51106.1。
包括msvcp110.dll、msvcr110.dll、vccorlib110.dll三个文件
2024/6/21 12:16:34 539KB C Runtime Library
1
共 378 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡