From 6b85c39fe72cbe6e5f8af2e9cf0a24f282d19122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E7=8B=A9?= <923568791@qq.com> Date: Wed, 6 Jan 2021 23:02:39 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=AC=AC1=E9=83=A8=E5=88=86=E2=80=94?= =?UTF-8?q?=E2=80=94=E5=88=9D=E8=AF=86=E5=BC=80=E6=BA=90/=E7=AC=AC=206=20?= =?UTF-8?q?=E5=B0=8F=E8=8A=82=EF=BC=9A=E5=B8=B8=E8=A7=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=AE=A4=E8=AF=86.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...07\344\273\266\350\256\244\350\257\206.md" | 142 ++++++++++++++++-- 1 file changed, 130 insertions(+), 12 deletions(-) diff --git "a/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\347\254\254 6 \345\260\217\350\212\202\357\274\232\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\347\254\254 6 \345\260\217\350\212\202\357\274\232\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" index aec8c56..f9ed03c 100644 --- "a/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\347\254\254 6 \345\260\217\350\212\202\357\274\232\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" +++ "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\347\254\254 6 \345\260\217\350\212\202\357\274\232\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" @@ -1,17 +1,135 @@ # 第 6 小节:常见文件认识 -一个靠谱的开源项目一般都会有详细的文档,大部分重要文档都会在项目的顶层目录列出。包括: +## 背景 -- LICENSE:开源项目必须拥有一个**开源协议**,如果项目源代码开放,但没有遵循任何的协议许可,那么就不能称之为开源。 -- README:README 是一个介绍性的说明文件,通常 README 会表述项目的用处、发起原因、快速使用等。 -- CONTRIBUTING:CONTRIBUTING 文件用来告诉人们如何对项目做出贡献,CONTRIBUTING 中表述了项目需要什么类型的贡献,社区或者本项目的作业流程,并非所有的项目都会有这个文件。 -- CHANGELOG:CHANGELOG 文件用来记录项目的变更记录,通常包含 **Added**、**Changed**、**Removed** 和 **Fixed**。 -- NOTICE: 用来存放 License 定义的法律声明文件。 -- CODE_OF_CONDUCT: 行为准则文件. 行为准则定义了如何在社区中进行交互和交流的最佳实践, 它也可以作为解决社区成员之间冲突的首选文件. -- DISCLAIMER: 免责声明文件 -- CodeOwners: 代码持有者 -- AUTHORS: 贡献者列表. 记录项目的贡献者. +在社交软件中,通常大家在互相不了解的情况下,如何寻找志同道合的朋友?一般来讲,我们会通过关键词查询,比如:校友群、单身群、兴趣爱好群等。而在一个社交群体中,大家也会通过自我介绍的方式向其他成员介绍自己。 -### 本部分内容贡献者 +开源社区本质上与其他社交软件类似,是一个以开源项目为载体、寻找志同道合之人的社交平台,而开源项目的自我介绍就是项目文件。一个靠谱的开源项目都会在项目的顶级目录中提供详细的说明文件,完整详实的说明可以帮助他人快速了解项目,降低入门门槛,更能吸引对项目感兴趣的开源贡献者参与项目。因此,想要了解开源项目,了解项目中的各类文件是非常有必要的,有助于提升我们对项目的理解。 -[huifer](https://gitee.com/pychfarm_admin)、[阿基米东](https://gitee.com/luhuadong) \ No newline at end of file +## 文件类型 + +我们常见的文件类型有很多,不同的项目中用到的文件也各有不同。可以大致分为 5 类:说明文件、编程文件、脚本文件、配置文件和资源文件。接下来,让我们来逐一了解这 5 类文件。 + +### 说明文件 + +说明文件一般会在项目的顶层目录列出,用来提供项目介绍、使用说明、变更记录、参与者及使用者说明等。下面列举几种常见的说明文件: + +- **AUTHORS**:贡献者列表,记录项目的贡献者。 +- **DISCLAIMER**:免责声明文件。 + +- **CHANGELOG**:CHANGELOG 文件用来记录项目的变更记录,通常包含 Added、Changed、Removed 和 Fixed。 +- **CODE_OF_CONDUCT**:行为准则文件. 行为准则定义了如何在社区中进行交互和交流的最佳实践, 它也可以作为解决社区成员之间冲突的首选文件。 +- **CodeOwners**:代码持有者 +- **CONTRIBUTING**:指导参与者如何对项目做出贡献,CONTRIBUTING 中表述了项目需要什么类型的贡献,社区或者本项目的作业流程。 +- **LICENSE**:开源许可证文件,开源项目通过编写开源许可文件,声明项目使用的开源协议。 +- **NOTICE**:用来存放 License 定义的法律声明文件。 +- **README**:项目介绍说明文件,通常 README 会表述项目的用处、发起原因、快速使用等。 + +需要注意的是,上述文件仅作为项目开源的指导性文件,属于约定俗成的开源项目规范,并非强制要求,请根据自身需求选择使用相应的文件。当然,你也可以按照自己的想法制定自己的项目规范,只要能够帮助项目在开源过程中的能够很好的管理、开发和维护,能够保障项目相关权利,它就是一份良好的项目规范。 + +### 编程文件 + +编程文件主要依赖于对应的编程语言,是一个开源项目中占比最多的主要文件。说明文件用来帮助了解项目的全貌,而更细节的内容就需要从具体的编程文件来了解了。编程文件的存放目录一般与架构设计有关,比如:Java 项目的编程源文件(*.java)默认存放路径为“./src/main/java”。下面列举几种常用的编程文件: + +- ***.asp**:ASP(Active Server Page)编程源文件。 +- ***.c**:C 编程源文件。 +- ***.cc**:C++ 编程源文件。 +- ***.class**:Java class 文件。 +- ***.cpp**:C++ 编程源文件。 +- ***.exe**:可执行文件。 +- ***.frm**:MySQL 表结构定义文件。 +- ***.h**:C / C++ 编程头文件。 +- ***.hpp**:C++ 编程头文件。 +- ***.java**:Java 编程源文件。 +- ***.jsp**:Java 语言编写的动态网页程序文件。 +- ***.php**:PHP 编程源文件。 +- ***.py**:Python 编程源文件。 + +### 脚本文件 + +- ***.bat**:bat 文件是 Windows 平台下的批处理脚本文件。 + +- ***.py**:py 文件是以 Python 语言编写的脚本文件。 + +- ***.sh**:sh 文件是使用 Shell 的语法与指令编写的脚本文件。 +- ***.sql**:Sql 脚本文件。 +- ***.vbs**:Visual Basic 编程脚本文件。 + +### 配置文件 + +配置文件顾名思义,是提供项目中所需配置的文件,包括各种配置信息、脚本文件、数据字典、Mock 数据、样式文件、模型文件等。配置文件的存放目录并不固定,存放目录一般与项目类型和项目规范有关,例如:SpringBoot 项目的配置文件目录默认是 resources 文件夹。下面列举几种常见的配置文件: + +- ***.config**:config 文件是一种的通用配置文件,不同的程序可以根据不同的格式来存储配置信息。 +- ***.ini**:ini 文件是某些平台或软件上的配置文件,以节(section)和键(key)构成,比如: Windows 操作系统、Mysql 配置等。 +- ***.json**:json(JavaScript Object Notation)是一种轻量级的数据交换格式,常见于 Restful 接口数据交互,以及 Mock 数据。 +- ***.lua**:lua 是一种由标准 C 编写小巧的脚本文件,其设计目的是为了嵌入应用程序中,为应用程序提供灵活的扩展和定制功能。 +- ***.properties**:properties 是一种 Java 中常见的配置文件,通过"键=值"的格式存储配置信息。 +- ***.xml**:XML 是一种可扩展标记语言(EXtensible Markup Language),由 W3C 制定。 +- ***.yml / *.yaml**:YAML 是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。 + +### 静态资源文件 + +静态资源文件是指非服务器动态运行生成的文件,一般包括:静态页面、样式文件、压缩文件、图像文件、音频文件、视频文件和文档文件等。 + +**页面文件** + +- ***.html**:HTML 文件是可以被多种网页浏览器读取,产生网页传递各类资讯的文件。 +- ***.js**:js 文件是使用 Javascript 语法编写的网页脚本文件。 + +**样式文件** + +- ***.css**:css 文件是使用 CSS 用于描述网页上的信息格式化和显示的方式。 + +**压缩文件** + +- ***.7z**:7z 文件是 7z 格式的压缩文件,是一种主流高效的压缩格式,拥有极高的压缩比。 + +- ***.gz**:gz 文件使用 gzip 命令压缩的压缩文件,是 Unix 和类 Unix 系统中经常用来对文件进行压缩和解压缩的命令。 +- ***.jar**:jar 文件是一种归档文件,以 zip 格式构建,可以使用 JDK 自带的 jar 命令创建或提取 jar 文件,也可以使用其他zip压缩工具。 +- ***.rar**:rar 文件是一种较高压缩率的压缩文件,可以管理的文件大小几乎是无限制的。 +- ***.tar**:tar 文件是 Unix 和类 Unix 系统上的压缩文件,可以将多个文件合并为一个文件。 +- ***.zip**:zip 文件是一种开放性的压缩文件,压缩速度较快,处理单个文件的最大值为 4 GB。 + +**图像文件** + +- ***.bmp**:BMP 是英文 Bitmap(位图)的简写,bmp 文件是Windows操作系统中的标准图像文件。 +- ***.gif**:GIF 的全称是 Graphics Interchange Format,可译为图形交换格式。 +- ***.ico / *.icon**:ICO 是一种图标文件格式,图标文件可以存储单个图案、多尺寸、多色板的图标文件。一个图标实际上是多张不同格式的图片的集合体,并且还包含了一定的透明区域。 + +**音频文件** + +- ***.ac3**:AC3(Audio Coding3)是杜比数码的同义词,杜比数码是一种高级音频压缩技术,它最多可以对 6 个比特率最高为 448 kbps 的单独声道进行编码。 +- ***.acc**:AAC(Advanced Audio Coding)意为高级音频编码,出现于 1997 年,基于 MPEG-2 的音频编码技术。由 Fraunhofer IIS、杜比实验室、AT&T、Sony 等公司共同开发,目的是取代 MP3 格式。 +- ***.avi**:AVI (Audio Video Interleaved)是指音频视频交错格式,是微软公司于 1992 年 11 月推出、作为其 Windows 视频软件一部分的一种多媒体容器格式。 +- ***.flac**:FLAC 可解释为无损音频压缩编码。不同于其他有损压缩编码如 MP3 及 AAC,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质。 +- ***.mp3**:MP3 是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为 MP3。 +- ***.mp4**:MP4 是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定。 +- ***.wav**:WAV 是最常见的声音文件格式之一,是微软公司专门为 Windows 开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。 + +**视频文件** + +- ***.flv**:FLV(FLASH VIDEO)是一种流媒体格式,是随着 Flash MX 的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能。 +- ***.mkv**:MKV 是 Matroska 的一种媒体文件,Matroska 是一种新的多媒体封装格式,也称多媒体容器 (Multimedia Container)。 + +**文档文件** + +- ***.chm**:CHM 文件被称作“编译的 HTML 帮助文件”(Compiled HTML Help file),是微软于 1998 年推出的基于 HTML 文件特性的帮助文件。 + +- ***.doc**:doc 文件是 Word2003 以前版本的文档文件。 +- ***.docx**:docx 文件是 Word2007 之后版本的文档文件。 +- ***.md**:md 文件(即 markdown 文件)是一种快速标记、快速排版语言,遵循 markdown 文档的基本编写语法,现在很多项目中的说明文件都是用其编写的。 +- ***.pdf**:PDF(Portable Document Format的简称,意为“可携带文档格式”),是由Adobe Systems用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。 +- ***.ppt**:ppt 文件是 PowerPoint2003 以前版本的文档文件。 +- ***.pptx**:pptx 文件是 PowerPoint2007 之后版本的文档文件。 +- ***.xls**:xls 文件是 Excel2003 以前版本的文档文件。 +- ***.xlsx**:xlsx 文件是 Excel2007 之后版本的文档文件。 + +## 小结 + +通过以上描述,大家可能会发现很多文件格式都有见过。没错!常见的各类文件格式不仅存在于开源项目中,在日常生活中也随处可见。不同文件格式有着不同的作用,标准的文件格式使得我们可以快速分辨文件用途,也能够帮助我们更好地了解开源项目。 + +除此之外,如果你想定义自己的文件格式也是没有问题的,比如我们常用的音乐软件和视频软件,它们都拥有自己独特的文件格式。想象一下,在未来的某一天,如果你定义的文件格式被广泛采纳,或许它就会出现在这里。 + +## 本部分内容贡献者 + +[huifer](https://gitee.com/pychfarm_admin)、[阿基米东](https://gitee.com/luhuadong)、[西狩](https://gitee.com/lihuimingxs) \ No newline at end of file -- Gitee