为了账号安全,请及时绑定邮箱和手机立即绑定
安装 Linux 操作系统

通过前面的小节学习,我们已经对 Linux 操作系统有了简单的了解,同时也在 Windows 下安装了虚拟机软件 VMware ,那么本节课我们就介绍下如何使用虚拟机软件安装 Linux 操作系统。通过第一小节的学习我们知道 Linux 有很多的发行版本,本小节以 CentOS 8 为例来介绍 Linux 操作系统的安装步骤。学习本小节之后读者可以按照本小节的介绍步骤,安装其他的 Linux 操作系统,本小节的目的主要是学习如何在虚拟机中安装 Linux 操作系统,方便后面学习 Linux 相关基础知识。

CentOS8 操作系统安装 Docker

因为有的同学可能会选择其他的 Linux 的发行版来学习本课程,所以这节课我们也列举了如何在 Ubuntu 下安装 Docker 的方法。对于初次接触 Linux 的用户,我们会提供尽可能详细的注释来告知每个命令的作用,放松心态,跟着做就可以了。Tips:由于 Docker 安装需要比较高的系统权限,请在安装前与系统管理员确认,或者使用 root 权限进行安装, 本节使用root进行操作。

4. 操作系统,进程,线程之间的联系与区别

我们首先来看看,三者之间的关系,从图中可以看到,操作系统是包含多个进程的容器,而每个进程又是容纳多个线程的容器。什么是进程?官方定义: 进程(baiProcess)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。Tips:系统进行资源分配和调度的基本单位其实就是 CPU 时间片的切换,一个 CPU 同一时间只能操作一个任务,只不过 CPU 在不停的切换工作任务,这里的时间片就是我们所说的系统进行资源分配和调度的基本单位。那么从定义上感觉非常的抽象,但是进程其实就在我们日常的计算机使用过程中。请看下图,进入任务管理器看 Windows 操作系统下的进程:什么是线程?官方定义: 线程是操作系统能够进行资源调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,每个线程执行的都是进程代码的某个片段,特定的线程总是在执行特定的任务。线程与进程的区别?诞生起源:先有进程,后有线程。进程由于资源利用率、公平性和便利性诞生。处理器的速度往往比外设的速度快(键盘、鼠标等),为了提高 CPU 的利用率,诞生了线程,目的就是为了提高程序的执行效率;概念:进程是资源分配的最小单位。 线程是程序执行的最小单位(线程是操作系统能够进行资源调度的最小单位,同个进程中的线程也可以被同时调度到多个 CPU 上运行),线程也被称为轻量级进程;内存共享:默认情况下,进程的内存无法与其他进程共享(进程间通信通过 IPC 进行)。 线程共享由操作系统分配给其父进程的内存块。

2. 操作系统线程的生命周期

定义:当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建 (New)、就绪(Runnable)、运行(Running)、阻塞 (Blocked),和死亡 (Dead) 5 种状态。从线程的新建 (New) 到死亡 (Dead),就是线程的整个生命周期。下面我们分别对 5 种不同的状态进行概念解析。新建 (New):操作系统在进程中新建一条线程,此时线程是初始化状态。就绪 (Runnable):就绪状态,可以理解为随时待命状态,一切已准备就绪,随时等待运行命令。运行 (Running):CPU 进行核心调度,对已就绪状态的线程进行任务分配,接到调度命令,进入线程运行状态。阻塞 (Blocked):线程锁导致的线程阻塞状态。共享内存区域的共享文件,当有两个或两个以上的线程进行非读操作时,只允许一个线程进行操作,其他线程在第一个线程未释放锁之前不可进入操作,此时进入的一个线程是运行状态,其他线程为阻塞状态。死亡 (Dead):线程工作结束,被操作系统回收。

ECharts 事件系统

当我们的图表变得越来越庞大之后,我们加入的组件也会越来越多,所以我们之后做的不单单只有 “看”这一个动作,还要有其他的动作,对应的就是一个个事件的处理,用户操作触发事件,我们则可以通过监听事件并处理来完成一系列的事件操作,所以这一节我们就来从事件三要素,事件绑定,事件解绑这几个方面去了解一下 ECharts 的事件系统。

Kotlin类型系统

这篇文章一起来看下 Kotlin 中类型系统,其中涉及到一个很重要的概念就是大家常说的可空性以及为什么 Kotlin 相比 Java 在一定程度上能降低空指针异常。此外在 Kotlin 中完全采用和 Java 不同思路来定义它的类型系统。也正因为这样类型系统天然具有让 Kotlin 在空指针异常出现的频率明显低于 Java出现的频率的优势。此外 Kotlin 考虑使用和 Java 完全不同类型系统,以及它是如何去做到极大兼容和互操作。

2. ext 文件系统介绍

Linux 操作系统最开始引入的文件系统是扩展文件系统,记作 ext,它可以使用虚拟的目录操作硬件设备。ext 文件系统采用索引节点存放虚拟目录中存储的文件信息,索引节点系统在每个物理设备中创建一个单独的表(称为索引节点表)来存储这些文件信息,存储在虚拟目录中的每一个文件在索引节点表有一个条目。ext 文件系统中的 extended 部分来自其跟踪的每个文件的额外数据,这些数据包括:文件大小;文件的属主;文件的访问权限;指向存有文件数据的每个硬盘块的指针;文件名;文件所在的属组。Linux 通过唯一的数值(称作索引节点号)来引用索引节点表中的每个索引节点,这个值是创建文件时由文件系统分配的。文件系统通过索引节点号而不是文件全名及路径来标识文件。

1. ext3 文件系统介绍

ext3 文件系统是第三代扩展文件系统(Third extended filesystem,缩写为 ext3),它是一个日志文件系统,经常被用于 Linux 操作系统中,它是很多 Linux 发行版的默认文件系统。Stephen Tweedie 在 1999 年 2 月将该文件系统从 2.4.15 版本的内核开始,合并到内核主线中,它是对 ext2 系统的扩展,并且它兼容 ext2。日志式文件系统的优越性在于:由于文件系统都有快取层参与运作,若不使用时必须将文件系统卸下,以便将快取层的资料写回磁盘中,因此每当系统要关机时,必须将其所有的文件系统全部 shutdown 后才能进行关机,若在文件系统尚未 shutdown 前就关机如(停电)时,下次重开机后会造成文件系统的资料不一致,故这时必须做文件系统的重整工作,将不一致与错误的地方修复。然而,此一重整的工作是相当耗时的,特别是容量大的文件系统,而且也不能百分之百保证所有的资料都不会流失,此类文件系统最大的特色就是它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪。当在某个过程中被中断时,系统可以根据这些记录直接回溯并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间。

Linux 日志文件系统

前小节介绍了早期的 Linux 文件系统,本小节介绍 Linux 日志文件系统,日志文件系统是给 Linux 操作系统增加了一些安全相关能力,日志文件系统和早期的文件系统相比,它并不是先把数据写到中间存储设备,然后再写到存储设备索引节点的,而是先把数据写道临时生成的文件中(称为日志),然后数据成功同步到存储设备和索引节点表,再删除对应的日志数据。本小节介绍 Linux 常见的日志文件系统。

Go strings 系统包的使用说明

前文我们有学习了 string 变量,发现 Go 语言并没有向面向对象语言那样,类型中自带方法来处理对象的值。Go语言中也有类似的操作,其操作全都在 strings 系统包中实现了。本文主要来讲解一下如何使用 strings 系统包比较常用的字符串操作。

5.1 XFS 文件系统的特点

数据完全性,采用 XFS 文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。传输特性,XFS 文件系统采用优化算法,日志记录对整体文件操作影响非常小。XFS 查询与分配存储空间非常快。XFS 文件系统能连续提供快速的反应时间。笔者曾经对 XFS、JFS、Ext3、ReiserFS 文件系统进行过测试,XFS 文件文件系统的性能表现相当出众。可扩展性,XFS 是一个全 64-bit 的文件系统,它可以支持上百万 T 字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。最大可支持的文件大 小为 263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为 18 exabytes。XFS 使用高的表结构(B+ 树),保证了文件系统可以快速搜索与快速空间分配。XFS 能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。传输带宽,XFS 能以接近裸设备 I/O 的性能存储数据。在单个文件系统的测试中,其吞吐量最高可达 7GB 每秒,对单个文件的读写操作,其吞吐量可达 4GB 每秒。

5. XFS 文件系统介绍

XFS 一种高性能的日志文件系统,最早于 1993 年,由 Silicon Graphics 为他们的 IRIX 操作系统而开发,是 IRIX 5.3 版的默认文件系统。2000 年 5 月,Silicon Graphics 以 GNU 通用公共许可证发布这套系统的源代码,之后被移植到 Linux 内核上。XFS 特别擅长处理大文件,同时提供平滑的数据传输。SGI 发现他们的现有文件系统(existing filesystem,EFS)正在迅速变得不适应当时激烈的计算竞争。为解决这个问题,SGI 决定设计一种全新的高性能 64 位文件系统,而不是试图调整 EFS 在先天设计上的某些缺陷。因此,XFS 诞生了,并于 1994 年随 IRIX 5.3 的发布而应用于计算。

41 Go 语言中的系统包

之前已经学习了 Go 语言中的文件操作,同时Go语言用有很多其它的系统包,功能非常丰富。本文就来简单介绍几个 Go 语言中常用的系统包。

1. ZFS 文件系统介绍

ZFS 文件系统的英文名称为 Zettabyte File System,也叫动态文件系统(Dynamic File System),是第一个 128 位文件系统。最初是由 Sun 公司为 Solaris 10 操作系统开发的文件系统。作为 OpenSolaris 开源计划的一部分,ZFS 于 2005 年 11 月发布,被 Sun 称为是终极文件系统,经历了 10 年的活跃开发。而最新的开发将全面开放,并重新命名为 OpenZFS。ZFS 是一款 128bit 文件系统,总容量是现有 64bit 文件系统的 1.84x10^19 倍,其支持的单个存储卷容量达到 16EiB(2^64byte,即 16x1024x1024TB);一个 zpool 存储池可以拥有 2^64 个卷,总容量最大 256ZiB(2^78 byte);整个系统又可以拥有 2^64 个存储 池。可以说在相当长的未来时间内,ZFS 几乎不太可能出现存储空间不足的问题。另外,它还拥有自优化,自动校验数据完整性,存储池/卷系统易管理等诸多优点。较 ext3 系统有较大运行速率,提高大约 30%-40%。ZFS 文件系统是一个革命性的全新的文件系统,它从根本上改变了文件系统的管理方式,这个文件系统的特色和其带来的好处至今没有其他文件系统可以与之媲美,ZFS 被设计成强大的、可升级并易于管理的。ZFS 用 “存储池” 的概念来管理物理存储空间。过去,文件系统都是构建在物理设备之上的。为了管理这些物理设备,并为数据提供冗余,“卷管理” 的概念提供了一个单设备的映像。但是这种设计增加了复杂性,同时根本没法使文件系统向更高层次发展,因为文件系统不能跨越数据的物理位置。ZFS 完全抛弃了 “卷管理”,不再创建虚拟的卷,而是把所有设备集中到一个存储池中来进行管理,“存储池” 描述了存储的物理特征(设备的布局,数据的冗余等等),并扮演一个能够创建文件系统的专门存储空间。从此,文件系统不再局限于单独的物理设备,而且文件系统还允许物理设备把他们自带的那些文件系统共享到这个 “池” 中。你也不再需要预先规划好文件系统的大小,因为文件系统可以在 “池” 的空间内自动的增大。当增加新的存贮介质时,所有 “池” 中的所有文件系统能立即使用新增的空间,而不需要额外的操作。在很多情况下,存储池扮演了一个虚拟内存。ZFS 使用一种写时拷贝事务模型技术。所有文件系统中的块指针都包括 256 位的能在读时被重新校验的关于目标块的校验和。含有活动数据的块从来不被覆盖;而是分配一个新块,并把修改过的数据写在新块上。所有与该块相关的元数据块都被重新读、分配和重写。为了减少该过程的开销,多次读写更新被归纳为一个事件组,并且在必要的时候使用日志来同步写操作。利用写时拷贝使 ZFS 的快照和事物功能的实现变得更简单和自然,快照功能更灵活。缺点是,COW 使碎片化问题更加严重,对于顺序写生成的大文件,如果以后随机的对其中的一部分进行了更改,那么这个文件在硬盘上的物理地址就变得不再连续,未来的顺序读会变得性能比较差。

6. 系统修饰键

可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。.ctrl:.alt:.shift:.meta:注意:在 Mac 系统键盘上,meta 对应 command 键 (⌘)。在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞)。在 Sun 操作系统键盘上,meta 对应实心宝石键 (◆)。在其他特定键盘上,尤其在 MIT 和 Lisp 机器的键盘、以及其后继产品,比如 Knight 键盘、space-cadet 键盘,meta 被标记为“META”。在 Symbolics 键盘上,meta 被标记为“META”或者“Meta”。例如:<!-- Alt + C --><input @keyup.alt.67="clear"><!-- Ctrl + Click --><div @click.ctrl="doSomething">Do something</div>Vue提供了.exact修饰符,实现单独的系统按键的事件。例如:<!-- 即使 Alt 或 Shift 被一同按下时也会触发 --><button @click.ctrl="onClick">A</button><!-- 有且只有 Ctrl 被按下的时候才触发 --><button @click.ctrl.exact="onCtrlClick">A</button><!-- 没有任何系统修饰符被按下的时候才触发 --><button @click.exact="onClick">A</button>

2. 更高效地利用系统资源

由于容器不需要进行硬件虚拟化以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗以及文件存储速度,都要比传统虚拟机技术更高效。

1. 什么是文件系统

计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。一句话总结,文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型。

cd 路径操作

前面小节介绍了 Linux 目录相关的知识点,相信读者已经对 Linux 系统有了一定的认识和理解,本小节围绕路径相关的操作来介绍如何使用 cd 切换到不同的路径,另外还介绍如何使用 Tab 键自动补全文件或目录名。

40 Go 语言的文件操作

本文主要介绍 Go 语言中对文件系统的操作,Go 语言内置库中提供了丰富的文件操作函数,所以本文主要介绍使用Go 语言中的内置包——“os” 来实现文件操作。

5. 其它系统

SQL 的使用十分广泛,不仅可以在 RDBMS 中使用,还可以在其它系统中使用。Hive 和 Pig 提供 SQL 的方式进行大数据操作,Spark SQL 也是同等作用的产品;InfluxDB 是目前使用最为广泛的时序数据库,也提供 SQL 访问接口;TiDB 是目前使用也非常广泛的分布式数据库,仍以 SQL 访问,并 100%兼容 MySQL;SQLFLow 是蚂蚁金服开源的一款用 SQL 进行机器学习的产品;Neo4j 是图数据库中的佼佼者,其查询语言也是一种类似 SQL 的语言;SPARQL 是 w3c 专门为 RDF 定制的查询语言,被广泛的应用在知识图谱领域,其语法几乎与 SQL 无异。

1. 系统介绍

在这里,我们首先采用了数组的方式来存储我们输入的内容。同时,我们这里利用里前面学习到的 struct 来结构化存储我们的学生信息。我们实现了基本的对于数据操作的几项功能:增、删、改、查。也就是我们可以向这个系统中添加数据,删除数据,修改数据,还有就是查询数据。这里的查询数据,我们又分为了全部无条件的查询,和按照姓名条件的查询。

2. 系统架构

本商品管理系统的包结构如下:src├── main │ ├── java # 源码目录│ │ └── com│ │ └── colorful│ │ ├── App.java # 入口文件│ │ ├── dao # 数据访问对象(Data Access Object,提供数据库操作的一些方法)│ │ ├── model # 实体类(类字段和数据表字段一一对应)│ │ ├── service # 服务层(提供业务逻辑层服务)│ │ └── util # 一些帮助类│ └── resources│ ├── imooc_goods_cms.sql # 建表的 SQL 文件│ └── jdbc.properties # jdbc 配置文件└── test # 单元测试目录 └── java └── com └── colorful ├── AppTest.java └── JDBCTest.java大家可以提前熟悉一下本项目的项目结构,下面我们会一一讲解。

2.2 系统运行库

这一层包含两大块:系统库及 Android 运行时。系统库这一部分其实就是 C/C++ 库,这些库在 Android 系统中通常以 so 的形式供不同的组件使用,开发者可以通过自己的应用程序使用这些库提供的服务。Android 运行时Android 采用 Java 作为开发语言,在其运行时中包含了 Java 核心库的大多数功能,并使每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。Dalvik 可以保证一个设备可以同时高效地运行多个虚拟系统。

3. ext2 文件系统介绍

使用最开始的 ext 文件系统有很多的限制(如文件最大不能超过2GB),所以在 Linux 系统出现后,很快就有了 第二代拓展文件系统,记作 ext2。ext2 文件系统是 ext 文件系统基本功能的一个扩展,而且保持了 ext 文件系统一样的结构,ext2 文件系统扩展了索引节点表的格式来保存系统上每个文件的更多信息。ext2 的索引节点表为文件添加了创建时间、修改时间和最后一次访问的时间帮助系统来追踪文件的访问情况。ext2 文件系统还将允许的最大文件大小增加到了 32 TB(Linux 2.6 之前是 2TB),以容纳数据库服务器中常见的大文件。除了额外扩展的索引节点外,ext2 文件系统还改变了文件在数据块中存储的方式。ext 文件系统在读取文件时不需要为了数据块查找整个物理设备。

Linux 文件系统介绍

从本小节我们将要开始 Linux 中的文件系统,在 Linux 系统中,文件系统都是基于硬盘创建的,Linux 系统支持多种不同类型的文件系统管理文件和目录,本小节介绍几种基本常见的文件系统。Linux 文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有 Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。在 Linux 中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上,大多数 Linux 发行版在安装时会提供默认的文件系统。

1.1 ext3 日志文件系统特点

高可用性:系统使用了 ext3 文件系统后,即使在非正常关机后,系统也不需要检查文件系统。宕机发生后,恢复 ext3 文件系统的时间只要数十秒钟。数据的完整性:ext3 文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。在保证数据完整性方面,ext3 文件系统有两种模式可供选择。其中之一就是 同时保持文件系统及数据的一致性 模式。采用这种方式,你永远不再会看到由于非正常关机而存储在磁盘上的垃圾文件。文件系统的速度:尽管使用 ext3 文件系统时,有时在存储数据时可能要多次写数据,但是,从总体上看来,ext3 比 ext2 的性能还要好一些。这是因为 ext3 的日志功能对磁盘的驱动器读写头进行了优化。所以,文件系统的读写性能较之 ext2 文件系统并来说,性能并没有降低。数据转换:由 ext2 文件系统转换成 ext3 文件系统非常容易,只要简单地键入两条命令即可完成整个转换过程,用户不用花时间备份、恢复、格式化分区等。用一个 ext3 文件系统提供的小工具 tune2fs,它可以将 ext2 文件系统轻松转换为 ext3 日志文件系统。另外,ext3 文件系统可以不经任何更改,而直接加载成为 ext2 文件系统。多种日志模式:ext3 有多种日志模式,一种工作模式是对所有的文件数据及 metadata(定义文件系统中数据的数据,即数据的数据)进行日志记录(data=journal 模式);另一种工作模式则是只对 metadata 记录日志,而不对数据进行日志记录,也即所谓 data=ordered 或者 data=writeback 模式。系统管理人员可以根据系统的实际工作要求,在系统的工作速度与文件数据的一致性之间作出选择。

1. 创建文件系统命令介绍

工具命令名功能与作用描述mkefs创建一个 ext 文件系统mke2fs创建一个 ext2 文件系统mkfs.ext3创建一个 ext3 文件系统mkfs.ext4创建一个 ext4 文件系统mkreiserfs创建一个 ReiserFS 文件系统jfs_mkfs创建一个 JFS 文件系统mkfs.xfs创建一个 XFS 文件系统mkfs.zfs创建一个 ZFS 文件系统mkfs.btrfs创建一个 Btrfs 文件系统

5.6 退出系统 /logout

@blueprint.route('/logout')def logout(): session['hasLogin'] = False return redirect('/')访问 /users/logout 页面时,用户退出系统。在 Session 中设置 hasLogin 为 False,调用 redirect(’/’),用户退出系统后,浏览器重定向到网站根页面。

模板系统基础

Django 中的模板系统是 Django 框架的重要组成部分。无论哪一个 Web 框架都需要提供动态生成 HTML 页面的方式,最常用的做法是使用模板。模板包含一些公共的 HTML 部分以及一些特殊的语法,该语法用于描述如何将数据动态插入 HTML 网页中。Django 框架后端默认支持自生内置的一套模板系统 DTL (Django Template Language) 和著名的 Jinja2 模板系统。除此之外,还可以从第三方模块中选择其他模板系统。往往内置的模板系统以及 Jinja2 已经足够应对大多数场景了。

Linux 文件系统检查

前面小节介绍了文件系统的创建命令工具,本小节介绍文件系统的检查和修复。

首页上一页1234567下一页尾页
直播
查看课程详情
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号