文件指针

Git详解之三 Git分支

风流意气都作罢 提交于 2019-11-27 12:03:04
Git 分支 几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。 有人把 Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来。Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快。和许多其他版本控制系统不同,Git 鼓励在工作流程中频繁使用分支与合并,哪怕一天之内进行许多次都没有关系。理解分支的概念并熟练运用后,你才会意识到为什么 Git 是一个如此强大而独特的工具,并从此真正改变你的开发方式。 3.1 何谓分支 为了理解 Git 分支的实现方式,我们需要回顾一下 Git 是如何储存数据的。或许你还记得第一章的内容,Git 保存的不是文件差异或者变化量,而只是一系列文件快照。 在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对 象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。 为直观起见,我们假设在工作目录中有三个文件

Delphi TStream 详细介绍

ぃ、小莉子 提交于 2019-11-27 05:01:19
Delphi TStream 详细介绍 Stream对象,又称流式对象,是TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象和部件) 在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种Stream对象中拷贝数据。   下面介绍各种对象的数据和方法及使用方法。 TStream对象   TStream对象是能在各种媒介中存储二进制数据的对象的抽象对象。从TStream 对象继承的对象用于在内存、Windows资源文件、磁盘文件和数据库字段等媒介中存储数据。   Stream中定义了两个属性:Size和Position。它们分别以字节为单位表示的流的大小和当前指针位置。TStream中定义的方法用于在各种流中读、写和相互拷贝二进制数据。因为所有的Stream对象都是从TStream中继承来的,所以在TStream中定义的域和方法都能被Stream对象调用和访 问。此外,又由于面向对象技术的动态联编功能,TStream为各种流的应用提供了统一的接口,简化了流的使用;不同Stream对象是抽象了对不同存储媒介的数据上的操作,因此

ext文件系统机制原理剖析

空扰寡人 提交于 2019-11-27 04:44:41
本文原创地址:博客园骏马金龙 https://www.cnblogs.com/f-ck-need-u/p/7016077.html 将磁盘进行分区,分区是将磁盘按柱面进行物理上的划分。划分好分区后还要进行格式化,然后再挂载才能使用(不考虑其他方法)。格式化分区的过程其实就是创建文件系统。 文件系统的类型有很多种,如CentOS 5和CentOS 6上默认使用的ext2/ext3/ext4,CentOS 7上默认使用的xfs,windows上的NTFS,光盘类的文件系统ISO9660,MAC上的混合文件系统HFS,网络文件系统NFS,Oracle研发的btrfs,还有老式的FAT/FAT32等。 本文将非常全面且详细地介绍ext家族的文件系统,中间还非常详细地介绍了inode、软链接、硬链接、数据存储方式以及操作文件的理论,基本上看完本文,对文件系统的宏观理解将再无疑惑。ext家族的文件系统有ext2/ext3/ext4,ext3是有日志的ext2改进版,ext4对相比ext3做了非常多的改进。虽然xfs/btrfs等文件系统有所不同,但它们只是在实现方式上不太同,再加上属于自己的特性而已。 4.1 文件系统的组成部分 4.1.1 block的出现 硬盘的读写IO一次是一个扇区512字节,如果要读写大量文件,以扇区为单位肯定很慢很消耗性能,所以Linux中通过文件系统控制使用"块

linux 硬连接与软连接

夙愿已清 提交于 2019-11-27 01:11:15
1、linux中文件占用一个inode,inode指向文件内容。 2、文件名可以认为是一个指针,指向inode。硬连接相当于指针的整体拷贝,并不是对文件内容的拷贝。两个文件名(两个指针)都能修改文件,删除一个不影响另外一个,如下: [root@localhost home]# touch aaa [root@localhost home]# cat >aaa hello [root@localhost home]# ln aaa aaa.hl [root@localhost home]# cat >>aaa.hl world [root@localhost home]# more aaa hello world [root@localhost home]# rm -f aaa [root@localhost home]# more aaa.hl hello world 3、软连接相当于指针的引用,删除指针,引用也就无效了。 [root@localhost home]# touch aaa [root@localhost home]# cat >aaa hello [root@localhost home]# ln -s aaa aaa.sl [root@localhost home]# cat >>aaa.sl world [root@localhost home]# more

文件的逻辑与物理结构

大城市里の小女人 提交于 2019-11-26 19:24:31
文件的逻辑与物理结构。首先看第一个,这是理解后一个概念的关键。摸机子的人都知道,文件按其逻辑结构可以分为 有结构的文件,这是由若干个记录所构成的,又称为记录式文件;无结构文件,这是直接由字符序列所构成的文件,故又称为流式文件,但是流式文件是记录式文件的特例,即其每个记录中只含有一个字符。所以对于文件,以下只看成有结构的,即由记录构成的。那么现在,我们上升一个层次,什么是文件的逻辑结构?从哲学的角度说逻辑结构,其实说穿了就是相互之间的关系,那对于文件的逻辑结构就是记录之间的相互关系。再上升一个层次就是每个记录在文件中的位置。我们也笼统的称之为顺序,那么如果你要写一个文件,一定有个潜意识的排列顺序(对于记录文件,就是第一个记录是什么,第二个记录是什么,…;对于流式文件也一定有个字符序,总之这样才能有意义),那么这个排列顺序就是逻辑结构。这些顺序是怎么确定的,一般有顺序与索引两种,由这两种方式来决定记录在文件中的位置。逻辑文件的形式主要有 1) 顺序文件,其记录是按某种顺序排列所形成的,记录在文件中的位置由某种顺序决定,第一个位置上的记录,第二个位置上的记录,…,由某种顺序来决定记录在文件中的位置。 2) 索引文件,记录在文件中的位置由索引表来指向,其实是按某个记录键来确定位置的,即第一个位置的记录在哪,第二个位置的记录在哪....。由索引表来决定这些位置上都是哪些记录。 3)

c 文件操作【转】

[亡魂溺海] 提交于 2019-11-26 18:33:19
原文:http://www.cnblogs.com/duzouzhe/archive/2009/10/24/1589348.html 文件的基本概念   所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。   普通文件是指驻留在磁盘或其它外部介质上的一个有序数据集,可以是源文件、目标文件、可执行程序; 也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文件、目标文件、可执行程序可以称作程序文件,对输入输出数据可称作数据文件。   设备文件是指与主机相联的各种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也看作是一个文件来进行管理,把它们的输入、输出等同于对磁盘文件的读和写。通常把显示器定义为标准输出文件, 一般情况下在屏幕上显示有关信息就是向标准输出文件输出。如前面经常使用的printf,putchar 函数就是这类输出。键盘通常被指定标准的输入文件, 从键盘上输入就意味着从标准输入文件上输入数据。scanf,getchar函数就属于这类输入。   从文件编码的方式来看

C++之文件IO操作流【转】

不问归期 提交于 2019-11-26 18:31:52
原文:http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/18/2144247.html  前两节介绍了C++的IO流类库,标准设备IO操作流中部分预定义流对象的成员函数以及IO格式控制。那今天我将继续介绍关于C++中的流操作内容——文件IO操作流fstream。并会着重讲解C++是如何对文件进行操作的。   文件指存放在外部介质上的数据的集合。大家都知道操作系统是以文件为单位来对数据进行管理的。因此如果你要查找外部介质的数据,则先要按文件名找到指定文件,然后再从文件中读取数据,如果要把数据存入外部介质中,如果没有该文件,则先要建立文件,再向它输入数据。由于文件的内容千变万化,大小各不相同,为了统一处理,在C++中用文件流的形式来处理,文件流是以外存文件为输入输出对象的数据流。输出文件流表示从内存流向外存文件的数据,输入文件流则相反。根据文件中数据的组织形式, 文件可分为两类:文本文件和二进制文件。文本文件又称为ASCII文件,它的每个字节存放一个ASCII码,代表一个字符。二进制文件则是把内存中的数据,按照其在内存中的存储形式原样写在磁盘上存放。比如一个整数20000,在内存中在两个字节,而按文本形式输出则占5个字节。因此在以文本形式输出时,一个字节对应一个字符,因而便于字符的输出,缺点则是占用存储空间较多 。 用二进制形式输出数据

awk输入命令getline

筅森魡賤 提交于 2019-11-26 15:14:16
转自:http://www.cnblogs.com/276815076/archive/2011/12/05/2276605.html awk输入命令getline getline为awk所提供的输入命令 如果找到一条记录则getline返回1,如果到了文件结束(EOF)则返回0,如果错误则返回-1 A.getline从整体上来说,应这么理解它的用法: 当其左右无重定向符 | 或 < 时,getline作用于当前文件,读入当前文件的第一行给其后跟的变量var 或$0(无变量);应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。 当其左右有重定向符 | 或 < 时,getline则作用于定向输入文件,由于该文件是刚打开,并没有被 awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。 B.getline用法大致可分为三大类(每大类又分两小类),即总共有6种用法。代码如下: QUOTE: awk ‘BEGIN{“cat data.txt”|getline d; print d}’ data2.txt awk ‘BEGIN{“cat data.txt”|getline; print $0}’ data2.txt $0可以省略 awk ‘BEGIN{getline d < “data.txt”;

python-day11(正式学习)

拜拜、爱过 提交于 2019-11-26 13:02:29
目录 文件高级应用 多重操作 r+t:可读,可写(文件名为a) w+t:可写可读 a+t:可追加可读 文件内指针移动及一些操作 指针移动seek(offset,whence) 寻找指针位置tell() 读取部分字符read(n) 截断文件内容truncate(n) 文件的修改 方式一 方式二 函数 什么是函数 为什么要用函数 如何用函数 定义函数的三种形式 无参函数 有参函数 空函数 函数的返回值 什么是返回值 为什么要有返回值 函数的调用 什么是函数调用 为什么调用函数 函数调用的三种形式 形参和实参 形参 实参 位置形参 位置实参 关键字实参 默认形参 文件高级应用 多重操作 r+t:可读,可写(文件名为a) with open('a','r+',encoding='utf-8')as f: data=f.read() print(data) data=data.replace('d','m') print(data) f.truncate(0) #截断文件内原内容 f.write(data) #对文件内容的一个修改,注意如果指针在文本内容前面,添加时新内容会覆盖原内容,而不是插入新内容 asdasdasd asmasmasm w+t:可写可读 with open('a','w+',encoding='utf-8')as f: #但凡w/w+操作都会在此时先清空原内容 f

C++:文件操作

断了今生、忘了曾经 提交于 2019-11-26 12:44:19
C/C++ code //创建一个文本文件并写入信息 //同向屏幕上输出信息一样将信息输出至文件 #include<iomanip.h> #include<fstream.h> void main() { ofstream f1("d:\\me.txt"); //打开文件用于写,若文件不存在就创建它 if(!f1)return; //打开文件失败则结束运行 f1<<setw(20)<<"姓名:"<<"廉东方"<<endl; //使用插入运算符写文件内容 f1<<setw(20)<<"家庭地址:"<<"河南郑州"<<endl; f1.close(); //关闭文件 } 运行后打开文件d:\me.txt,其内容如下:        姓名:廉东方      家庭地址:河南郑州 文件操作: 打开文件   文件名     注意路径名中的斜杠要双写,如:     "D:\\MyFiles\\ReadMe.txt"   文件打开方式选项:     ios::in    = 0x01, //供读,文件不存在则创建(ifstream默认的打开方式)     ios::out    = 0x02, //供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式)     ios::ate    = 0x04, //文件打开时,指针在文件最后。可改变指针的位置,常和in