3-操作系统的发展与分类
操作系统的发展与分类手工操作阶段主要矛盾:用户独占全机,人机速度矛盾导致资源利用率极低(计算机的高速与人手工输入的低速)
批处理阶段:单道批处理系统引入了脱机输入/输出技术(通过磁带完成),并通过监督程序(操作系统的雏形)控制作业的输入,输出
主要优点:解决了一定程度上的人机矛盾,资源利用率有所提升
主要缺点内存中只能有一道程序运行,该程序运行结束后才能执行下一道程序(所有程序只能串行执行)。CPU仍有大量时间是在等待I/O完成。资源利用率依然很低
批处理阶段:多道批处理系统每次向内存中输入多道程序,此时操作系统正式诞生,并且引入了中断机制,由操作系统控制这些程序的运行流程,所有程序并发执行
主要优点多道程序并发执行,共享计算机资源,资源利用率大幅提升。CPU和其他资源保持忙碌状态,系统吞吐量增大
主要缺点用户响应时间长,没有人机交互功能(用户提交自己的作业到内存中执行后不能控制任务执行,只能等待计算机完成)
示例
分时操作系统计算机以时间片为单位轮流为各个用户/任务服务,各个用户可以在自己所在时间片内通过终端与计算机进行交互
主要优点用户请求可以及时被响应,解决了人机交互的问题, ...
2-操作系统的四个特征
操作系统的特征操作系统共有四个特征,分别是并发,共享,虚拟和异步。其中,并发和共享是操作系统最基本的特征,且二者互为存在条件
并发指两个或多个事件在同一时间间隔内发生,这些事件在宏观上是同时发生的,但微观上是交替发生的
与之相对应的重要概念就是“并行”,并行指两个或多个事件在同一时刻同时发生
对于操作系统来说,并发性是指计算机系统同时存在着多个运行程序
一个单核处理机(CPU)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行,使其在宏观上看起来是同时执行的
共享共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
一共有两种资源共享方式:
互斥共享方式指系统中的某些资源,虽然可以提供给多个进程使用,但同一时间段内只允许一个进程访问该资源(例如:相机资源,当我们在微信中使用相机资源进行视频聊天时,我们就无法在QQ中调用相机资源进行操作)
同时共享方式系统中的某些资源,允许一个时间段内多个进程“同时”对该资源进行访问(例如:硬盘资源,同一时间段内,多个程序可以同时对硬盘资源进行写入或读取等操作,这些操作看起来就像是同时进行的一样)。这里的“同时”也是宏观上 ...
1-操作系统基础
操作系统基础操作系统概念计算机系统结构
可以看到用户与操作系统是存在直接交互的
操作系统(Operating System OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件
通过操作系统提供的内存管理器可以直观的看到操作系统同时管理着软件与硬件
操作系统的功能和目标作为系统资源的管理者(进程:程序的执行过程,执行前需要将程序放到内存中,才能被CPU处理)
提供的功能
处理机管理(CPU处理进程等)
存储器管理(对内存进行管理)
文件管理(文件资源管理器等)
设备管理(摄像头,鼠标,键盘等设备进行管理)
目标安全,高效
作为用户和计算机硬件之间的接口提供的功能
命令接口:允许用户直接使用
联机命令接口:即交互式命令接口(Terminal命令行等),特点是用户输入一条指令,计算机立即做出应答
脱机命令接口:即批处理命令接口(.bat文件等),特点是用户将多条指令以文件等形式保存,通过运行文件,计算机逐条执行指令
程序接口:允许用户通过程序间接使用。如C:\Window ...
5-Springboot进阶1
Springboot进阶1Springboot依赖管理特性利用父项目进行依赖管理利用Springboot开发不可避免的要涉及到使用许多的依赖,而涉及到的依赖一多就可能由于依赖之间的版本问题导致错误的产生。这种时候对于依赖的管理就显得十分重要。
而我们实际开发中可以看到,许多的依赖在配置过程中并不需要指定其版本号,这是因为Springboot已经考虑到由于版本问题导致的依赖引用乱象。所以已经提前进行了依赖管理,而具体的方式就是利用父依赖进行依赖管理。
以上图为例,在Maven配置文件pom.xml中,Springboot一般都已经自动配置了父依赖:spring-boot-starter-parent,查看父依赖文件我们可以看到,其内部还依赖于另外一个父依赖:spring-boot-dependencies
而spring-boot-dependencies则详细的声明了我们日常可能使用到的各种依赖的版本号,即该文件为我们进行了依赖管理
这里需要注意另一个问题,我们使用父项目进行依赖管理的过程中不可避免的涉及到项目需要使用的依赖版本与父项目内部定义的版本号冲突,这种时候我们就可以利用m ...
3-Vue网络应用
Vue网络应用axios基本使用axios是一款易用、简洁且高效的http库,是一个可以用在浏览器和Node.js中的异步通信框架,其主要作用就是实现Ajax异步通信,由于Vue只关注视图层内容,所以作者推荐使用该框架完成网络通信内容
axios功能特点
从浏览器中创建XMLHttpRequests
从node.js创建http请求
支持Promise API(在JS中进行链式编程)
拦截请求和相应
转换请求数据和响应数据
取消请求
自动转换JSON数据
客户端支持防御XSRF
Vue实例的生命周期每一个Vue实例都拥有完整的生命周期,即从开始船舰,初始化数据,编译模板,挂载DOM,渲染以及之后的不断更新渲染直到最后的卸载一系列过程,也就是一个Vue实例从创建到销毁的整个过程
在Vue实例的生命周期中,提供了一系列事件,可以让我们在事件触发时,注册相应的JS方法,利用我们注册的JS方法,更好的控制整个Vue实例(在这些事件响应方法中的this直接指向的是Vue实例),这些JS方法也被称为钩子,下面这幅图中展示了Vue的整个生命周期以及对应位置可以使用的钩子函数
1234567891 ...
2-本地应用:Vue指令
Vue指令v-text指令v-text指令用于设置标签的文本值,有两种设置标签文本值的方式,方式一就是通过v-text指令向标签传入值,但这种传入方式会整个替换掉标签内的全部文本信息,如果我们需要特殊化的修改某一部分文本值,就需要用到第二个方式,使用插值表达式传入值
12345678910111213141516171819<body> <div id="app"> <!--使用v-text指令--> <p v-text="message"></p> <!--使用插值表达式--> <p>{{message}}--使用插值表达式</p> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> ...
1-Vue基础
Vue基础
Vue.js是一套构建用户界面的渐进式框架。Vue只关注视图层,采用自底向上增量开发的设计。Vue的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件。
基本使用
导入开发版本/生产版本的Vue.js
创建Vue实例对象,设置其el属性和data属性
使用模板语法将数据渲染到页面上
1234567891011121314151617181920212223242526272829<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> & ...
1-JVM基础
JVM基础
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
通过上图的结构内容可以看到,JVM是运行在操作系统上的Java虚拟机,其本身并不具备直接执行Java程序的能力,通过在JVM中引入相应的基础类库形成JRE(Java Runtime Environment Java运行环境),JRE才是具备执行Java程序能力的运行环境。在JRE基础上结合相应的编译开发工具就构成了JDK(Java Development Kit Java 语言的软件开发工具包)。而我们实际日常的开发中,正式采用了JDK与相应IDE工具进行开发的模式
JVM的有点主要有以下几点:
一次编写,处处运行
自动内存管理,垃圾回收机制 ...
1-Electron基础
Electron基础安装Electron
NodeJS官网安装node js环境:http://nodejs.org/,安装后可以通过npm -v或node -v检查是否正常安装
创建新文件夹,在文件夹内首先初始nodejs环境:npm init
创建Electron环境,在全局安装:npm install -g electron
检测Electron是否安装成功,electron -v查看Electron版本号
启动Electron服务,在对应文件夹下: electron .
完成一个HelloWorld页面
首先创建html页面并编写相关内容
创建main.js或index.js作为主进程控制文件,编写整个应用进程的启动逻辑
初始化nodejs文件
启动electron服务
测试界面123<body> <h1>Hello World</h1></body>
main.js主进程控制文件1234567891011121314151617var electron =require('electron')va ...
7-数据链路层-逻辑链路控制子层
数据链路层概述保证数据传输的有效,可靠性
差错的检测和控制
流量控制(基于速率/基于反馈)-在数据链路层通常采取基于反馈的模式,即由接收方向发送方提供处理能力大小,发送方根据处理能力提供对应流量
帧(数据链路层处理的协议数据单元PDU)帧的组成:帧头+载荷+帧尾
帧头:包含定位所需要的地址,物理地址信息
载荷:上层网络层传递下来的包
帧尾:校验和,做帧的校验
数据链路层使用物理层提供的服务,所以要将物理层处理的位流(bits)转换成数据链路层能够处理的帧,这个过程就叫做“成帧”。成帧将原始的位流分散到离散的帧中
常见的四种成帧方法
字符计数法
字节填充的标志字节法
比特填充的比特标记法
物理层编码违例法
字符计数法发送方:
在每个帧头部中的第一个字段,标识该帧的长度共有多少字符
接收方:
通过第一个字段,就知道这个帧有几个字符,在哪里结束该帧
优点: 实现简单
缺点: 没有考虑重新同步问题,一旦出错,无法恢复,工程中极少使用
字节填充的标志字节法考虑了重新同步问题,每一帧采用一个特殊字节做帧界,即当前帧的开始与上一个帧的结束
标记
数据
标记
数据
…
将这个特殊 ...