文件指针

操作系统——文件管理

此生再无相见时 提交于 2019-12-01 08:55:34
目录 一、文件系统 1.1文件与文件系统 1.2文件的逻辑结构 1.3文件目录 1.4文件共享 1.5文件保护 二、文件系统实现 2.1文件系统层次结构 2.2目录实现 2.3文件实现 三、磁盘组织与管理 3.1磁盘的结构 3.2磁盘调度算法 3.3磁盘的管理 一、文件系统 1.1文件与文件系统 1、文件 1)数据项 在文件系统中,数据项是最低级的数据组织形式。分为两种类型: 基本数据项。描述一个对象某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,又称字段。除了数据名还有数据类型 组合数据项。由若干基本数据项组成 数据项的名字和类型共同定义了数据项的“型”,表征一个实体在数据项上的数据称为“值” 2)记录 记录是一组相关数据项的集合,用于描述一个对象在某方面的属性 一个记录应包含哪些数据项取决于需要描述对象的哪个方面 唯一标识一个记录的一个或多个数据项称为 关键字 3)文件 文件是具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件 有结构文件由若干个相关记录组成,无结构文件看成是一个字符流 文件是文件系统中最大的数据单位 文件属性包括:文件类型、文件长度、文件的物理地址、文件的建立时间 2、文件系统 1)定义 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法;也指用于存储文件的磁盘或分区,或文件系统种类

宏定义和内存分配

天大地大妈咪最大 提交于 2019-12-01 08:31:16
代码想转换成.exe文件,需要经过几个步骤: 替换 ->为了可读性或方便,使用了一些宏定义;在编译前,会有一个工具将宏定义的符号替换成相应的值; 编译 ->将代码转成二进制文件; 连接 ->代码中可能用到了别人写的程序,连接就是将别人的程序复制一份放到自己的程序中; 1.宏定义 1)无参数的宏定义 无参数的宏定义的一般形式为:# define 标识符 字符序列 例如: 注意: 1、只作字符序列的替换工作,不作任何语法的检查 2、如果宏定义不当,错误要到预处理之后的编译阶段才能发现 2)带参数的宏定义 带参数宏定义:#define 标识符(参数表)字符序列 例如: # define MAX(A,B) ((A) > (B)?(A):(B)) 代码 x= MAX( p, q)将被替换成 y=((p) >(q)?(p):(q) 好处是:如果直接定义一个相同功能的函数,在执行是必须给函数分配内存空间,而宏定义是替换代码,不需要给子函数分配空间; 注意: 1、宏名标识符与左圆括号之间不允许有空白符,应紧接在一起.否则会被当做不带参数的宏括号后面的参数被当做该符号的值 2、宏与函数的区别:函数分配额外的堆栈空间,而宏只是替换. 3、为了避免出错,宏定义中给形参加上括号. 4、末尾不需要分号. 5、define可以替代多行的代码,记得后面加 \ #define MALLOC(n,type)\ (

ProtoBuf 源码简析

て烟熏妆下的殇ゞ 提交于 2019-12-01 02:07:04
ProtoBuf项目描述:   Google Protocol Buffer简称protobuf,为高效的二进制序列化/反序列化协议(一般为google内部使用),不同于xml、json等,其更小巧、高效;avro、thrift等; 其可用于网络协议、数据存储等语言无关、平台无关、可扩展的序列化结构数据格式。只要按照特定条件可支持向前、向后兼容;目前提供了C++、Java、Python 三种语言的 API,这样各语言可以相互序列化和反序列化数据信息(事实上也可以自定义实现其他语言的API接口)。 在使用中,用户可根据自定义或引入数据结构(Message)文件*.proto;此后通过编译器protoc.exe编译该描述文件为指定语言的操作接口,而后将产生的操作接口文件 和libprotobuf.lib添加入项目中进行数据序列化和反序列化操作即可,产生的序列化后的信息可读性很差,此外反序列化也必须知道对应的数据结构描述文件*.proto, 否则无法正确地反序列化,也不再有意义,相对xml,json无法直接插入或修改数据信息内容; 以下仅对C++相关进行分析; 项目工程: gtest:google 白盒测试开源项目,主要用于单元测试,后面的gtest_main、tests项目; gtest_main:简单的对main函数以及testing::InitGoogleTest(&argc,

试一下

坚强是说给别人听的谎言 提交于 2019-11-30 19:20:26
# 读取文件内容 def fread(self): # 如果指针位置大于文件大小,说明是更换了文件 self.filename = self.getLogPath() if not os.path.isfile(self.filename): while not self.checkfile() : time.sleep(5) self.filename = self.getLogPath() self.fclose() self.fopen() self.pos = 0 self.hd.seek(self.pos,0) fline = self.hd.readline() self.pos = self.hd.tell() return fline.replace("\n","") # 将文件指针定位到文件尾部 def feof(self): self.fopen() # 定位到文件末尾 self.hd.seek(0,2) #设置指针位置 self.pos = self.hd.tell() 来源: https://www.cnblogs.com/lovebing/p/11637141.html

C语言知识点总结篇

白昼怎懂夜的黑 提交于 2019-11-30 15:48:04
Debug和Release版本比较 Debug附加了许多调试信息,主要用于调试,故文件大; Release是经过优化后的版本,去掉了调试信息,代码进行了优化,故文件较小,且编译速度快过Debug,用于发布平台的配置管理器的设置; 32位与64位 32位,地址为32位,最大使用内存4G,只能运行32位的数据; 64位,地址为64位,既可以运行32位的数据,也可以运行64位的数据; 指针 指针是个量,对应一块内存区域; 指针存储的是某个内存单元的地址; 访问方式: 1、直接访问:按变量地址存取变量值,取地址符&; 2、间接访问:通过存放变量地址的变量去访问变量,间接运算符*; 在函数中改变一个外部变量,需要变量的地址; 若是数据,需要指向数据的指针存储数据的地址; 若是指针,需要指向指针的指针存用户指针的地址; 数组与指针 p[i]等价于*(p+i),&p[i]等价于p+i; a[i][j]等价于*(*(a+i)+j),&a[i][j]等价于*(a+i)+j, a[i]等价于*(a+i); 行数组指针定义方法:数据类型(*指针变量名)[二维数组列数]; 二维数组地址不可变化,数据可以变化,可以在不修改地址的情况下管理数据,指针数组指向的数据不可变化,但地址可以变化,在不修改数据的情况下查看数据; 三维数组与指针,A[i][j][k]的三种表达形式:*(A[i][j]+k)、*(*(A

(WWDC)优化应用启动时间——理论篇

北战南征 提交于 2019-11-30 12:11:27
本文读者: 遭遇应用启动速度慢问题的朋友 希望保持应用启动速度快的朋友 对操作系统知识感兴趣的朋友 内容概览 理论部分 Mach-O 相关知识 虚拟内存相关知识 Mach-O 映像加载过程 从 exec() 到 main() 实践部分 如何度量 优化启动时间 理论部分 Mach-O 相关知识 Mach-O 术语 文件类型: 可执行文件,应用程序主要的二进制文件 Dylib,动态库(也叫做 DSO 或 DLL) Bundle,不可以被链接的 Dylib,只可以进行 dlopen() ,比如:插件 映像:一个可执行文件 或者 dylib 或者 bundle。 框架:带有目录的 dylib ,其目录中包含资源和头文件。 Mach-O Image File 文件被分割为段(segment),并采用大写命名 所有段的大小都是页大小的整数倍(arm64 架构为16KB,其他架构是4KB) 组是段内的子范围,并采用小写命名 常见的段: __TEXT,包含头文件、代码和只读常量(比如C语言字符串常量) __DATA,包含所有读写内容:全局变量、静态变量等 __LINKEDIT,包含如何加载程序的元数据(方法名和地址等信息) Mach-O Universal Files Fat Header 占用一页的大小 列出所有支持的架构和其对应的偏移量 你可能比较好奇,为什么段的大小是页的整数倍? 为什么

嵌入式C++测试题

早过忘川 提交于 2019-11-30 10:30:18
仅供学习,为嵌入式帝国做亿分之一的贡献吧,临近国庆,祝大家国庆节快乐哦 答案仅供参考吧 一、 选择题(共 80 分, 每题 2 分 ) ( 1 ) A ( 2 ) C ( 3 ) C ( 4 ) B ( 5 ) D ( 6 ) C ( 7 ) C ( 8 ) D ( 9 ) A ( 10 ) C ( 11 ) A (12) B (13) D (14) B (15) A ( 16 ) A ( 17 ) C ( 18 ) D ( 19 ) D ( 20 ) C ( 21 ) C ( 22 ) D ( 23 ) D ( 24 ) D ( 25 ) A ( 26 ) C (27) C (28) C (29) B (30) B ( 31 ) A ( 32 ) D ( 33 ) D ( 34 ) B ( 35 ) A ( 36 ) A ( 37 ) B ( 38 ) B ( 39 ) C ( 40 ) C 二、 填空题(每空 1 分, 共 20 分) 1. 构造函数 2. friend 保护和私有成员 3. 先基类在派生类 4. 单一继承 5. virtual 6. 静态多态性 动态多态性 7. 抽象类 8. 测试是否文件尾 9. 成员函数 10. try throw catch 11. 代码复用和泛型程序设计 12. 类的友元函数 13. 抛出异常 捕捉异常 14. template 15.

C/C++ 笔记、Python 笔记、JavaWeb + 大数据 笔记

▼魔方 西西 提交于 2019-11-30 05:46:44
Keras、PyTorch、MXNet 用户画像 C、C++笔记 JavaWeb+大数据笔记 CDH 6、CDH5 Python笔记 https://pan.baidu.com/s/1OBd1rbwGx0F8YnefM7R0Uw 提取码0hal https://pan.baidu.com/s/1TKNZ6TtDxDtDUnezrcXJ8Q 提取码2ber https://pan.baidu.com/s/1_XWMwcoNuDPdE3xkluo08A 提取码b12m https://pan.baidu.com/s/1eW8YSrasGiTXpBFSSJd78Q 提取码7aeu https://pan.baidu.com/s/1xi_3T6Nw__Sy-QQaN29O4Q 提取码1gcs 1.CDH 6 的安装和使用 、CDH5安装 https://blog.csdn.net/zimiao552147572/article/details/87190368 https://blog.csdn.net/zimiao552147572/article/details/94158217 2.用户画像 https://blog.csdn.net/zimiao552147572/article/details/88425850 3.Spark 实时处理 https://blog.csdn.net

golang 基础(二)

感情迁移 提交于 2019-11-30 02:44:04
接口 接口 -> 是一种 类型!!! 一种抽象的类型 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。 接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。 不关心属性(数据),只关心行为(方法)。 为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类型。 为什么要使用接口 type Cat struct{} func (c Cat) Say() string { return "喵喵喵" } type Dog struct{} func (d Dog) Say() string { return "汪汪汪" } func main() { c := Cat{} fmt.Println("猫:", c.Say()) d := Dog{} fmt.Println("狗:", d.Say()) } 上面的代码中定义了猫和狗,然后它们都会叫,你会发现main函数中明显有重复的代码,如果我们后续再加上猪、青蛙等动物的话,我们的代 码还会一直重复下去。那我们能不能把它们当成“能叫的动物”来处理呢?

清空txt文件

南楼画角 提交于 2019-11-29 16:40:15
如果想在每次写入前清空txt文件里面的内容,不必删掉文件,只需要使用truncate方法就行了,代码 0x01:以读/写的方式打开文件: f = open("read_test.txt", "a+", encoding="utf-8") f.write("132456789") f.truncate()f.close() 这样第二行写入的内容就会被清空 0x02:以追加的方式打开文件 f = open("read_test.txt", "a+", encoding="utf-8") f.write("123456789") f.seek(0) f.truncate() for i in range(5): f.writelines(comment) f.close() 以追加的方式打开文件时,需要加一句 f.seek(0) , 它的作用是确定文件指针的位置。 选项 =0 时, 表示将文件指针指向从文件头部到 "偏移量"字节处。 选项 =1 时, 表示将文件指针指向从文件的当前位置,向后移动 "偏移量"字节。 选项 =2 时, 表示将文件指针指向从文件的尾部,,向前移动 "偏移量"字节。 ******************************不积跬步无以至千里。****************************** 来源: https://www.cnblogs.com