一、UNIX文件系统的基本原理    UNIX采用树型目录结构,每个目录表称为一个目录文件。
一个目录文件是由目录项组成的。
每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。
在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;
后14B为文件名,是该文件的外部标识。
所以,文件目录项记录了文件内、外部标识的对照关系。
根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。
UNIX的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。
本次课程设计是要实现一个简单的模拟UNIX文件系统。
我们在磁盘中申请一个二进制文件模拟UNIX内存,依次初始化建立位示图区,I节点区,数据块区。
二、基本要点思路     1、模拟磁盘块的实现:因为文件系统需要从磁盘中读取数据操作数据,在实现时是使用文件来模拟磁盘,一个文件是一块磁盘,在文件中以划分磁盘块那样划分不同的区域,主要有三个区域:位图区,inode索引节点区,磁盘块区。
位图区我是使用一个512byte的数组存放,inode区和磁盘块区我采用一种自认为比较巧妙的方法,就是存放对象列表,之前说过,在本次实验的所有的结构都使用对象进行存储,而inode节点和磁盘块就是两个重要的数据结构,在初始化时我实例化32个inode对象和512个block对象(至于这些类的具体定义下面会提到),然后将这些对象加入各自对应的对象列表中,在存储时,使用java的对象序列化技术将这个对象数组存到磁盘中。
当使用文件系统时,程序会先从磁盘文件中读取出位图数组,inode对象列表,block对象列表,之后的操作就是通过对这些列表进行修改来实现。
使用这种方法可以减小存储的空间(对象序列话技术)而且不需要在使用时进行无用的查找,只要第一次初始化中将这些对象都读取出来。
    2、界面的实现:在实现这个文件系统时使用了两种方案,一种是直接在java控制台来进行输入输出,因为原本想着UNIX文件系统原本也是使用的命令行语句,所以在控制台上实现也很接近。
后来在老师的建议下又将整个程序重新修改,改成在UI界面上进行输入输出,这样确实界面美观舒服了不少,只不过两者用的技术很不一样,前者主要使用的是系统的输入输出流,后者使用java监听器。
    3、权限的实现:在实现多用户的权限方面,我给文件和文件夹各定义了三级权限1、访问:在文件中是可以查看文件的内容,在文件夹中是可以进入该文件夹。
2、修改:文件中是可以对文件进行编辑,文件夹中是可以在该文件夹中创建新的文件或目录。
3、删除:顾名思义。
文件或文件夹的创建者拥有最高级别的权限,只有拥有最高级权限的用户才可以给其他用户针对该文件或文件夹进行授权和授权操作。
在每次对文件或文件夹进行访问修改删除操作时都会检查当前用户在该文件或文件夹所拥有的权限,只有拥有的权限大于想要实现的权限时才可以进行该操作。
2024/2/1 11:25:27 9KB java UNIX操作系统 课程设计
1
presto是一个开源的分布式sql查询引擎,数据量支持GB到PB字节,主要用于处理秒级查询的场合。
yanagishima是presto的可视化客户端。
从官网下载的源码需要编译。
yangshima的安装,启动配置见官网:https://github.com/zhaolianchao/yanagishima#quick-start。
如有其他疑问请发邮件到我的邮箱:wenjunlong88_easy@163.com
2024/1/27 18:48:34 67.73MB presto-0.196 yangshima19
1
最大概率分词算法,带详细源码基于最大概率的汉语切分目标:采用最大概率法进行汉语切分。
其中:n-gram用bigram,平滑方法至少用Laplace平滑。
输入:接收一个文本,文本名称为:corpus_for_test.txt输出:切分结果文本,其中:切分表示:用一个字节的空格“”分隔,如:我们在学习。
每个标点符号都单算一个切分单元。
输出文件名为:学号.txt
2024/1/27 18:42:02 220KB 分词 算法
1
1.3寸OLED带字库()1概述GT20L16S1Y是一款内含15X16点阵的汉字库芯片,支持GB2312国标简体汉字(含有国家信标委合法授权)、ASCII字符。
排列格式为竖置横排。
用户通过字符内码,利用本手册提供的方法计算出该字符点阵在芯片中的地址,可从该地址连续读出字符点阵信息。
1.1芯片特点●数据总线:SPI串行总线接口●点阵排列方式:字节竖置横排●时钟频率:30MHz(max.)@3.3V●工作电压:2.2V~3.6V●电流:工作电流:8mA待机电流:8uA●封装:SOT23-6●尺寸SOT23-6:2.9mmX1.6mmx1.10mm●工作温度:-20℃~70℃
2024/1/26 7:15:20 6.95MB 1.3寸OLED
1
一.插件目的::1.我们使用的U3D引擎产生的游戏资源包容量太大,故全方位优化动画资源;
2.在max曲线编辑器内,点取轴向太过麻烦,费事,直观清除帧大大提高效率。
如:二:插件设计思路1.动画关键帧的原理:Key帧是记录骨骼bone的位移,转换,缩放的信息的,会产生容量,所以一套骨骼会产生很多关键帧,使文件增大,有的动作,部分轴向不参与动画,却又记录了下来,比如:胳膊的挥动,只是旋转在作用,移动缩放根本没有作用,又比如:一个bone垂直接触了地面,只是移动在作用,所有旋转缩放没有作用,如下图:注:横向是时间长度,纵向数值大小。
有动画的,才会有高低起伏的,平的曲线,没有起伏,但是参与了关键帧的记录,是会产生字节的,移动旋转缩放的XYZ都会在视图中出现,所以:假如移动的XY有动画,但Z也有动画,可并没有任何作用,为了减少导出FBX的容量,就把Z轴的删掉,整体是这样的思路,UI菜单决定由我来删除哪个需要删除,1.当我鼠标选取一个或多个Bone对象,之后点选UI界面,由我选择清除哪个轴向,快捷删除轴向帧。
比如我选择了5根骨骼,点击了”MOVE::XYZ下的ClearZAxis“,所以,这5根骨骼的位移的Z轴全部清除,同理我点击了”MOVE::XYZ下的ALL“,那5根骨骼位移的XYZ轴动画都被清除;
三:使用方法。
全部:就是整个max文件里面所有没有变化信息的轴向选择的:就是只针对选中的骨骼单个或者多个的轴向信息。
清理:清除完成,可以在曲线编辑器内部查看操作图解:1.拖入插件进入max直接点击清除就行,导出FBX文件容量会小,省资源用的。
01.jpg02.jpg03.jpg04.png
2024/1/26 1:01:51 271KB 动作优化 优化 动作 max
1
本工程是使用C#中的WinFrom技术来实现的串口通讯助手功能。
主要实现以下功能:1、实现自动加载可用串口。
2、打开串口,并且使用C#状态栏显示串口的状态。
3、实现了串口的接收数据和发送数据功能。
4、串口使用定时器进行定时发送数据。
5、可以打开文件夹,选择文件进行发送,并且将发送文件的内容显示在发送文本框中。
6、可以清空发送和接收文本框中的内容。
7、可以实时计算发送和接收的字节数。
8、实现打开文件夹保存发送和接收的文件内容(目前只支持.txt文件)。
9、实时显示当前时间。
2024/1/20 14:10:34 708KB 串口通讯 C#串口
1
升级目录点击展开介绍快速简单的存储。
一个Node.js包装器,用于兼容abstract-leveldown存储,这些存储遵循的特性。
LevelDB是Google构建的简单键值存储。
它已在GoogleChrome和许多其他产品中使用。
LevelDB支持任意字节数组作为键和值,包括奇异的get,put和delete操作,批处理的put和delete,双向迭代器以及使用非常快的算法的简单压缩。
LevelDB存储按关键字按字典顺序排序的条目。
这使levelup的(将LevelDB迭代器公开为)成为非常强大的查询机制。
最常见的存储是,它提供与LevelDB的纯C++绑定。
诸如在浏览器或为一个内存中存储。
它们通常支持键和值的字符串和缓冲区。
对于一组更丰富的数据类型,您可以使用来包装存储。
建议使用包来入门。
它方便地捆绑levelup,和。
它的主要输出是levelup即,您可以执行vardb=require('level')。
支持平台我们旨在支持ActiveLTS和当前Node.js版本以及浏览器。
要获得基础存储的支持,请
2024/1/19 9:11:39 66KB nodejs javascript level browser
1
密码学实验三编程实现Simplified-AES算法加密过程和解密过程十组测试用例.一组测试用例包括:明文(2字节),密钥(2字节),对应的密文(2字节),各一行以16进制方式存放在文本文件中.例如:文本文件:testcase1.txt,内容如下(3行):6F6B(明文)A73B(密钥)0738(密文)
2024/1/12 6:21:35 4KB AES 加密 解密
1
实现I2C正确读写AT24C02,基于STM32CUBE,读写使用HAL_I2C_Mem_Write,HAL_I2C_Mem_Read,写函数需单个字节写入。
2024/1/10 17:09:26 6.94MB STM32F103 cube
1
共 401 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡