(一)操作系统概述[os]
1.1 什么是操作系统
操作系统,Operating System,简称OS,是覆盖在计算机硬件系统之上的一套软件系统,是第一层软件。
【百度百科】操作系统是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互操作的界面。
1.2 OS的作用
前面对于OS的认识并不全面,可以从操作系统的功能作用角度来理解什么是操作系统。从以下三个角
度来说明0S的作用。
0S是用户与计算机硬件之间的接口
OS处于用户与硬件系统之间,用户通过OS来使用计算机硬件系统。
或者说,用户在0S帮助下可以方便、快捷、可靠地操作计算机硬件和运行自己的程序。
OS是计算机系统资源的管理者
一个计算机系统包含的软硬件盗源可分为四类:处理器、存储器、I0设备,及文件(数据和程序)。
OS就是对这四类盗源进行有效管理的。
对不同资源的理方式与目标是不同的:
CPU: 分配控制
存储器:分配、管理回收
IO设备: 分配操纵、回收
文件: 文件存取、共享保护
OS实现了对计算机资源的抽象
为了方便用户对系统资源的使用,OS将计算机资源抽象为一组数据结构及操作命令(对象),
然后再设计出对这些抽象资源的管理软件,然后再将这些管理软件逐层覆盖在计算机硬件之上,
于是便形成了一层层的虚机器。这些虚机器是逐层系统软件覆盖在裸机上而成的逻辑计算机
用户对计算机的使用大多集中中IO操作上。
第1层抽象:对IO设备的管理。
第2层抽象:对文件的管理。
第3层抽象:对图形操作的管理。
…
第n层抽象
1.3操作系统的发展历程
了解即可
若要想真正理解操作系统,就要深入了解操作系统的发展历程,理解促使操作系统发展的动力。
大家要关注两点:作业调度算法与用户体验。
1.裸机
从1946年第一台计算机延生,到20世纪50年代中期。其为电子管计算机(第一代计算机),
计算机资源非常昂贵目操作异常复杂,所以全部是在计算中心进行的集中计算。
下图为上世纪60年代老上海海燕牌电子管老收音机内部。
下图为冯诺依曼与冯诺依曼电子管计算机
纯人工操作阶段
最初使用的是纯人工操作。其缺点很明显:用户独占全机,CPU等待人工操作
脱机IO阶段
为了解决人机矛盾及C ...
(六)中央处理器1[计组]
6.1CPU的功能和基本结构
6.1.1.CPU的功能
指令控制 完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
操作控制: 一条指令的功能往往由若干操作信号的组合来实现。CPU管理并产生由内存
取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指
令的要求进行动作。
时间控制: 对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有
的控制信号。
数据加工: 对数据进行算术和逻辑运算。
中断处理: 对计算机运行过程中出现的异常情况和特殊请求进行处理
运算器 : 对数据进行加工
控制器 : 协调并控制计算机各部件执行程序的指令序列,基本功能包括取指令、分析指令、执行指令
取指令:自动形成指令地址;自动发出取指令的命令。
分析指令:操作码译码 (分析本条指令要完成什么操作):产生操作数的有效地址。
执行指令:根据分析指令得到的“操作命令”和“操作数地址”,形成操作信号控制序列,控制运算器、存储器以及I /O设备完成相应的操作。
6.1.2.CPU的基本结构
1.运算器
运算器接收从控制器送来的命令并执行相应的动作,对数据进行加工和处理。
运算器是计算机对数据进行加工处理的中心,
它主要由算术逻辑单元(ALU)、暂存寄存器、累加寄存器(ACC)、通用寄存器组、程序状态字寄存器(PSW)、移位器、计数器(CT)等组成。
算术逻辑单元。主要功能是进行算术/逻辑运算。
暂存寄存器。用于暂存从主存读来的数据,该数据不能存放在通用寄存器中,否则会破坏其原有内容。暂存寄存器对应用程序员是透明的。
累加寄存器。它是一个通用寄存器,用于暂时存放ALU运算的结果信息,可以作为加
法运算的一个输入端。
通用寄存器组。如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
程序状态字寄存器。保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OF)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。
移位器。对操作数或运算结果进行移位运算。
计数器。控制乘除运算的操作步数。
2.控制器
控制器是整个系统的指挥中枢,在控制器的控制下,运算器、存储器和输入/输出设备等功能部件构成一个 ...
(五)指令系统[计组]
5.1 指令系统概述
5.1.1概述
指令(又称机器指令):是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
指令系统 : 一台计算机的所有指令的集合,也称为指令集。
注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。
高级语言的语法是通用的, 但是机器语言不同
5.1.2硬件设计过程
\
5.1.3不同层级语言对比
语言
存储
举例
特点
高级语言
硬盘
C、C++、JAVA , Python等
汇编语言
硬盘
汇编语言与机器语言一一对应
机器语言
加载到内存中
不易编写程序, 可读性差
机器语言:用指令0/1代码编写程序
汇编语言:用指令助记符编写程序
指令助记符:每条指令用英文缩写字母来表示,便于编写程序。
不同的指令集对应不同架构的CPU,也对应不同种类的汇编语言
因此,不同汇编语言编写的程序不能在其他类型的机器上运行:
x86汇编语言有两种语法风格:Intel汇编和AT&T汇编
x86汇编语言分为很多类 , 比如:
8086汇编(16位)
80x88汇编(也叫BMPC汇编,16位)
80x86汇编(x大于3则指32位汇编)
5.1.4指令系统的发展
50年代初期:指令系统只有定点加减、逻辑运算、数据传送、转移等十几至几十条指令。
60年代后期:增加了乘除运算、浮点运算、十进制运算等指令,指令数目多达一二百条,寻址方式也趋多样化。
70年代末期:复杂指令系统(CISC)计算机其指令条数多,格式多样,寻址方式复杂,每条指令的功能强。
优点是汇编程序设计容易些,但控制器的实现困难,许多指令被使用的机会不多。CISC庞大的指令系统不易调试维护,造成硬件资源浪费。为此又提出了精简指令系统(RISC)计算机其指令数目少,格式与功能简单,运行速度快,控制器易实现。
系列兼容机:
基本指令系统相同、基本体系结构相同的一系列机器。一个系列往往有多种型号,在结构和性能上有所差异。新指令系统一定包含旧指令,实现软件兼容,减少重复开发
例如:IBMPC(286/386/486/Pentium) 微机系列等
指令系统是软件生态的起点只有从指令系统的根源上实现自主,才能打破软件生态发展受制于人的锁链。
5.1.5相关概念
数据字:一个存储字表示一个数。
指令字:一个存储字表示 ...
(四)存储系统2:Cache|虚拟存储器[计组]
存储器章节内容较多 , 分开存放
4.5 高速缓冲存储器Cache⭐
局部性原理
空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的
经典的使用比如 数组
时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息
高速缓冲技术就是利用局部性原理,把程序中正在使用的部分数据存放在一个高速的、容
量较小的Cache中,使CPU的访存操作大多数针对Cache进行,从而提高程序的执行速度。
CPU速度快,主存速度慢,且每年CPU速度的提升比主存快,CPU和主存的速度差距越来越大,
但是CPU再快,没有主存数据的输入也只能空等,
故在CPU和主存之间设置一个缓存,其速度比主存快,容量比主存小,
利用的局部性原理,将必要的一块数据存进缓存,CPU需要数据时先访问缓存,
如果没有找到再去主存中读取,这种方式使得CPU的效率得到很大的提升。
4.5.1 Cache工作原理
1. 主存和缓存的编址
如图,缓存和主存的地址都分为两部分,其中两者的块内地址相等,块内地址的大小决定了块的大小,
比如块内地址为4位,并且编址方式为字节,则每块大小为16字节。另外,cache中还存在一个标记,用于标识当前cache块对应的主存块号。
2.命中和未命中
主存和缓存按块存储,块的大小相同,若缓存共有 C 块,主存共有 M 块,那么 M 远远大于 C,CPU在主存中申请数据,如果这一块数据已经在缓存中了,则直接从缓存中调入CPU,这称为命中,否则表示未命中。如果命中,说明主存块和缓存块之间建立了对应关系,用 标记记录与某缓存块建立了对应关系的 主存块号。
3.命中率
CPU 欲访问的信息在 Cache 中的 比率,设 Nc 表示通过cache完成存取的总次数,Nm 表示通过主存完成存取的总次数,h 定义为命中率,则:h=Nc/(Nc+Nm)
命中率H:CPU欲访问的信息已在Cache中的比率
命中率与 cache 的 容量 与 块长 有关。容量越大越容易命中。块如果太小,则装不下一条指令,需要多个块;块太大,则总块数太少,块的大小适中,命中率越高,一般每块可取 4 ~ 8 个字,块长取一个存取周期内从主存调出的信息长度。
4.Cache的访问效率
tc 表示命中时的cache访问时间, tm 表示未命中时的主存访问时间, ...
(四)存储系统1:概述|主存|RAM[计组]
4.1 概述
4.1.1 存储器分类
分类方式很多
1.按存储介质分类
存储介质是指能寄存“0”、“1”两种代码并能区别两种状态的物质或元器件。存储介质主要有业导休器件磁性材料和光盘等。
(1) 半导体存储器:TTL 、MOS,易失
(2) 磁表面存储器:磁头、载磁体
(3) 磁芯存储器:硬磁材料、环状元件
(4) 光盘存储器:激光、磁光材料
2. 按存取方式分类
按存取方式可把存储器分为随机存储器、只读存储器、顺序存取存储器和直接存取存储器。
存取时间与物理地址无关(随机访问):随机存取存储器
存取时间与物理地址有关(串行访问):顺序存取存储器
3. 按在计算机中的作用分类
按在计算机中的作用分类如下
]
4. 按读写功能分类
只读存储器ROM
随机存取存储器RAM
4.1.2 存储器的层次结构
1. 存储器三个主要特性的关系
下面的六种存储结构任何一个都无法满足用户高速度大容量低价格的需求
2. 缓存 主存层次和主存 辅存层次
为了解决CPU 速度增长快但是主存的速度增长慢的问题, 我们在CPU以及主存之间加上了一寸缓存 , 这个缓存就是Cache , 速度比主存快很多, 其中保存主存一些数据的副本
高速缓冲存储器(缓存)简称Cache,它是计算机系统中的一个高速小容量半导体存储器。
主存储器简称主存,是计算机系统的主要存储器,用来存放计算机运行期间的大量程序和数据。
外存储器简称外存(辅存),它是大容量辅助存储器。
程序的局部性原理程序局部性原理介绍 - 知乎 (zhihu.com)
在CPU和主存之间加一个缓存,主要是解决CPU和主存速度不一致的问题,主存速度比CPU慢很多,增加一个较快的缓存可以解决这个问题。
而在主存后面增加一个外存是为了解决容量不足的问题,外存比较便宜且容量大,但是速度慢,可以存放一些暂时不用的数据。
4.2 主存(储器) ⭐
4.2.1 主存储器的技术指标
存放一个机器字的存储单元,通常称为字存储单元,相应的单元地址叫字地址。而存放一个字节的单元,称为字节存储单元,相应的地址称为字节地址。如果计算机中可编址的最小单位是字存储单元,则该计算机称为按字寻址的计算机。
主要技术指标有:
存储容量:主存 存放二进制代码的总位数
存取时间:存储器的访问时间,读出时间和写入时间
存储周期:连续两次独立的存储 ...
(三)系统总线[计组]
3.1总线的基本概念
数字计算机是由若干个系统功能部件构成的,这些系统功能部件在一起工作才能形成一个完整的计算机系统。一种连接方式是将需要通信的部件两两相连。但是现代计算机的CPU可能有很多,I/O设备也各种各样,如果采用两两相连的方式,线路将会非常复杂,这是不现实的,故推出的总线的概念。\
总线是连接各个部件的信息传输线, 是各个部件共享的传输介质
1. 定义
总线定义: 连接各个部件的信息传输线,是各个部件共享的传输介质,英文名为BUS,十分形象。
总线是构成计算机系统的互联机构,是多个系统功能部件之间进行数据传送的公共通路。
借助于总线连接,计算机在各系统功能部件之间实现地址、数据和控制信息的交换,并在争用资源的基础上进行工作。在总线上传输方式有串行和并行两种,由于线路之间会相互干扰,所以传输距离短。
2. 分类
总线可分为以下几类(根据所在位置):
内部总线:CPU内部连接各寄存器及运算器部件之间的总线,也叫片内总线。
系统总线:外部总线, 计算机各部件之间的信息传输线 , CPU和计算机系统中其他高速功能部件如存储器、输入输出接口等相互连接的总线。(根据总线上传输信号的不同)又细分为:
数据总线:双向(读和写),总线条数与机器字长、存储字长有关,但不一定相等 (通常小于机器字长) 。
地址总线:单向(只读),条数与存储地址、I/O地址有关
控制总线:传输控制信号,单向,但是有输出信号也有输入信号。
通信总线:用于计算机系统之间或者计算机系统与其他系统之间的通信,按照传输方式分为:串行通信和并行通信总线。
3. 特性
从物理角度来看,总线由许多导线直接印制在电路板 ( 在微型PC 机上, 又叫做主板/母板)上,延伸到各个部件。
下图形象地表示了各个部件与总线之间的物理摆放位置。
总线的特性可分为:物理特性、功能特性、电气特性、时间特性。
物理特性:总线的物理连接方式(尺寸、形状、管脚数、根数、插头、插座形状,引脚排列方式)
功能特性:每根线传输的信号以及功能(地址、数据、控制)
电气特性:每根线上信号的传递方向及有效电平范围 (传输方向以及有效的电平范围【高电平表示1,低电平表示0】)。
时间特性:规定了每根总线在什么时间有效(时序关系)。
4. 总线的性能指标
总线宽度 :数据线的根数
标准传输率 :每 ...
centos7搭建es集群
1.部署es集群
部署es集群可以直接使用docker-compose来完成,但这要求你的Linux虚拟机至少有4G的内存空间
我们会在单机上利用docker容器运行多个es实例来模拟es集群。不过生产环境推荐大家每一台服务节点仅部署一个es的实例。
单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。
海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点
单点故障问题:将分片数据在不同节点备份(replica )
ES集群相关概念:
集群(cluster):一组拥有共同的 cluster name 的 节点。
节点(node) :集群中的一个 Elasticearch 实例
分片(shard):索引可以被拆分为不同的部分进行存储,称为分片。在集群环境下,一个索引的不同分片可以拆分到不同的节点中
解决问题:数据量太大,单点存储量有限的问题。
此处,我们把数据分成3片:shard0、shard1、shard2
主分片(Primary shard):相对于副本分片的定义。
副本分片(Replica shard)每个主分片可以有一个或者多个副本,数据和主分片一样。
数据备份可以保证高可用,但是每个分片备份一份,所需要的节点数量就会翻一倍,成本实在是太高了!
为了在高可用和成本间寻求平衡,我们可以这样做:
首先对数据分片,存储到不同节点
然后对每个分片进行备份,放到对方节点,完成互相备份
这样可以大大减少所需要的服务节点数量,如图,我们以3分片,每个分片备份一份为例:
现在,每个分片都有1个备份,存储在3个节点:
node0:保存了分片0和1
node1:保存了分片0和2
node2:保存了分片1和2
1.1.创建es集群
首先编写一个docker-compose文件,内容如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758version: '2.2'services: es01: image: elasticsearch:7.12.1 container_name: es ...
07-elasticsearch入门(3)--数据聚合[springcloud]
1.数据聚合
**聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如:
什么品牌的手机最受欢迎?
这些手机的平均价格、最高价格、最低价格?
这些手机每月的销售情况如何?
实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。
1.1.聚合的种类
聚合常见的有三类:
**桶(Bucket)**聚合:用来对文档做分组
TermAggregation:按照文档字段值分组,例如按照品牌值分组、按照国家分组
Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组
**度量(Metric)**聚合:用以计算一些值,比如:最大值、最小值、平均值等
Avg:求平均值
Max:求最大值
Min:求最小值
Stats:同时求max、min、avg、sum等
**管道(pipeline)**聚合:其它聚合的结果为基础做聚合
**注意:**参加聚合的字段必须是keyword、日期、数值、布尔类型
1.2.DSL实现聚合
现在,我们要统计所有数据中的酒店品牌有几种,其实就是按照品牌对数据分组。此时可以根据酒店品牌的名称做聚合,也就是Bucket聚合。
1.2.1.Bucket聚合语法
语法如下:
123456789101112GET /hotel/_search{ "size": 0, // 设置size为0,结果中不包含文档,只包含聚合结果 "aggs": { // 定义聚合 "brandAgg": { //给聚合起个名字 "terms": { // 聚合的类型,按照品牌值聚合,所以选择term "field": "brand", // 参与聚合的字段 "s ...
(2)Linux目录结构&&vim[Linux]
Linux目录结构⭐️
基本介绍
深刻理解linux树状文件目录是非常重要
linux的文件系统是采用级层式的树状目录结构,在此结构上的最上层是根目录“/",然后在此目录下在创建其他的目录。
记住一句很经典的话:==在LInux世界里,一切皆文件==
具体的目录结构
/bin 【常用】(/usr/bin、/uer/local/bin)
是Binary的缩写,这个目录存放着最常使用的命令
/sbin (/usr/sbin、/usr/local/sbin)
s就是Super user的意思,这里存放的是==系统管理员使用的系统管理程序==
/home 【常用】
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录是以用户的账号命名
/root 【常用】
该目录为系统管理员,也称作超级权限者的用户主目录
/lib 系统开机所需要的最基本的动态链接共享库,起作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
删了可就能开不了机
/lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
etc 【常用】
所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库,my.conf
/usr 【常用】
这是一个非常重要的目录,用户很多应用程序都放在这个目录下,类似于windows下的program files目录。
/boot 【常用】
存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件
/proc 这个目录是一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息 ⚠️不能动
/srv service缩写,该目录存放一些服务器启动后需要提取的数据
/sys 这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
/tmp这个目录是用来存放一些临时文件的
/dev
类似于windows的设备管理器,把所有的硬件用文件的形式存储
/media【常用】linux系统会自动识别一些设备,例如U盘,光驱等等,当识别后,linux会把识别的设备挂载到这个目录下
/mnt 【常用】
系统提供该目录是为了让用户临时挂载别的系统文件,我们可以将外部的存储 ...
06-elasticsearch入门(2)--DSL查询文档[springcloud]
我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。
所以今天,我们研究下
elasticsearch的数据搜索功能。我们会分别使用DSL和RestClient实现搜索。
1.DSL查询文档
elasticsearch的查询依然是基于JSON风格的DSL来实现的。
1.1.DSL查询分类
Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括:
查询所有:查询出所有数据,一般测试用。例如:match_all
全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:
match_query
multi_match_query
精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如:
ids
range
term
地理(geo)查询:根据经纬度查询。例如:
geo_distance
geo_bounding_box
复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。例如:
bool
function_score
查询的语法基本一致:
12345678GET /indexName/_search{ "query": { "查询类型": { "查询条件": "条件值" } }}
我们以查询所有为例,其中:
查询类型为match_all
没有查询条件
12345678// 查询所有GET /indexName/_search{ "query": { "match_all": { } }}
其它查询无非就是查询类型、查询条件的变化。
1.2.全文检索查询
1.2 ...

![(一)操作系统概述[os]](https://dhx-blog.oss-cn-beijing.aliyuncs.com/dhx/wallhaven-4gp5gl.jpg)
![(六)中央处理器1[计组]](https://dhx-blog.oss-cn-beijing.aliyuncs.com/dhx/29dcb7e6c56uLPs.jpg)
![(四)存储系统2:Cache|虚拟存储器[计组]](https://dhx-blog.oss-cn-beijing.aliyuncs.com/dhx/e89c2d5ac1VKhiR.jpg)
![(三)系统总线[计组]](https://dhx-blog.oss-cn-beijing.aliyuncs.com/dhx/230206-16775101265e7e.jpg)

![07-elasticsearch入门(3)--数据聚合[springcloud]](https://dhx-blog.oss-cn-beijing.aliyuncs.com/dhx/647865eb60HxOZ5.jpg)
![(2)Linux目录结构&&vim[Linux]](https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg)
![06-elasticsearch入门(2)--DSL查询文档[springcloud]](https://dhx-blog.oss-cn-beijing.aliyuncs.com/dhx/0bd44a2d1fusXjl.jpg)




