操作系统随笔(一)

你好朋友,当你点进来这份读书笔记时,我相信你不是无意中点进来就是对这一部分饶有兴趣,可惜的是,我也只是个普通的大学生,有时候对知识的见解获取没有屏幕前的你那么有天赋,所以在阅读完这篇文章的同时点个赞,并对文中的知识提出疑问是我最开心的事。

如果你已经看完了这一篇随笔,请移步到下一篇→操作系统随笔(二)_尘鱼好美的小屋-CSDN博客


文章目录

    • @[toc]
  • 引论
    • 1.1 什么是操作系统
      • 1.1.1 作为扩展机器的操作系统
      • 1.1.2 作为资源管理者的操作系统
    • 1.2 操作系统的历史
      • 1.2.1 第一代操作系统
      • 1.2.2 第二代操作系统
      • 1.2.3 第三代操作系统
      • 1.2.4 第四代操作系统
      • 1.2.5 第五代操作系统
    • 1.3 计算机硬件
      • 1.3.1 处理器
        • 1.3.1.1 处理器结构
        • 1.3.1.2 多线程和多核芯片
      • 1.3.2 存储器
      • 1.3.4 I/O设备
      • 1.3.5 总线
    • 1.4 其他的操作系统
      • 1.4.1 大型机操作系统
      • 1.4.2 服务器操作系统
      • 1.4.3 多处理器操作系统
      • 1.4.4 个人计算机操作系统
      • 1.4.5 掌上计算机操作系统
      • 1.4.6 嵌入式操作系统
      • 1.4.7 传感器操作系统
      • 1.4.8 实时操作系统
      • 1.4.9 智能卡操作系统

引论

现代计算机系统组成由一个或多个处理器、主存、磁盘、打印机、鼠标、键盘、显示器、网络接口以及其他I/O设备组成。

操作系统是计算机安装的一层软件,其任务是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理上面提到的所有设备。

我们通常使用的Windows、Linux、Mac也是操作系统,但需要注意的是,我们使用的通常都是其图形用户界面(Graphical User Interface),实际上它们并不是操作系统的一部分。

image-20220128094152930

对于多数计算机来说其都有两个运行模式:即内核态用户态。软件中最基础的部分是操作系统,它运行在内核态(也叫管态、核心态)。在这个模式中,操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的所有指令

而其余软件则运行在用户态下,用户态下只能使用机器指令中的一个子集。那些会影响机器的控制或可进行I/O操作的指令在用户态是禁止使用的。

用户接口程序(shell或者GUI)处于用户态程序中的最低层次,允许用户允许其他程序,这些程序也大量使用操作系统。

而操作系统如图中所示,它运行在裸机之上,为所有其他的软件提供基础的运行环境。

操作系统和普通软件(用户态)之间最主要的区别是:如果你不喜欢一个播放器,你可以换一个;但是对于内核程序例如时间中断处理程序,这个程序是由硬件保护的,防止用户试图对其修改。但是需要注意的是,在有些操作系统,这个区别是模糊的,例如嵌入式系统(该系统没有内核态)解释系统(如基于java的操作系统,它采用解释方式而非硬件方式区分组件)

相比于普通的应用程序来说,操作系统的寿命是很长的,因为编写一个操作系统需要500万行甚至更多的代码。

1.1 什么是操作系统

操作系统是很难给出准确定义的。

1.1.1 作为扩展机器的操作系统

如果是不用操作系统的话,我们对资源的管理就涉及到对底层管理;比如你想创建一个文件,就需要考虑把他放在磁盘的哪个分区哪个扇区。这显然不应该是程序员该干的事;而操作系统就是帮我们提供硬件的抽象:文件。使用该抽象,可以在软件层面去管理资源,而无需考虑底层细节。

1.1.2 作为资源管理者的操作系统

把操作系统看做向应用程序提供基本抽象的概念,是一种自顶向下的观点。从硬件上看,操作系统的任务就是在相互竞争的程序之间有序的控制好各个硬件的分配。

而一台计算机有多个用户的话,合理解决用户对资源的共享也是操作系统该干的事情,即为不同的程序和用户调解互相冲突的资源请求。

资源管理包括用以下两种不同方式实现多路复用(共享)资源,即时间上的复用和空间上的复用。

时间复用技术

当一个资源在时间上复用时,不同的程序或用户轮流使用它。至于轮流的排序,和每个程序或用户的使用时间安排,则是操作系统的任务。最好的例子就是打印机的共享,当有多个打印作业在一台打印机上排队等待打印时,必须决定将轮到打印的是哪个作业。

空间复用技术

每个客户得到资源的一部分从而来取代客户排队。通常在若干运行程序之间分割内存,这样每个运行程序都可以同时入驻内存。

使用空间复用技术还有磁盘。在许多系统中,一个磁盘为许多用户保存文件,分配磁盘空间并记录谁正在使用哪个磁盘块,是操作系统的典型任务。

1.2 操作系统的历史

1.2.1 第一代操作系统

操作系统已经存在许多年了。

第一代是1945-1955,使用的是真空管和穿孔卡片。第一代操作系统对应的计算机只能做一些简单的计算,如正弦余弦对数表或者计算炮弹弹道等。

1.2.2 第二代操作系统

第二代是1955-1965,使用的是晶体管和批处理系统。

在批处理系统还没出现的时候,如果要运行一个作业,程序员必须先将程序写在纸上,然后穿孔成卡片,再将卡片盒带入输入室,交给操作员,操作员就输入后坐等输出。

由于当时计算机的成本,人们很自然想要减少计算机时长的浪费,如果还是使用上述的方法,那么人不忙的时候机器忙,机器不忙的时候人忙着打孔做纸带。通常采用的解决方法就是批处理系统。其思想是在输入室收集所有的作业,然后把作业的内容读到磁带上,最后用磁带来带到机器面前输入。当时比较常用把作业的内容印在磁带上的机子是IBM1401。

image-20220128102213776

在收集了大约一个小时的批量作业后,纸带上的作业被读入磁带,磁带送到机房。操作员用一个特殊的程序来监督,这个特殊的程序是操作系统的前身,它从磁带上读入第一个作业就开始运行,它帮第一个作业的所有输出写到第二个磁带上,而不打印;当有多个作业的时候以此类推。当一批作业完全结束的时候,操作员取下输入和输出磁带,将输入磁带换成下一批作业,并且把输出磁带拿到IBM1401上进行脱机打印。

输入作业的结构一般长得像卡片一样,卡片上面的内容相当于是shell指令,上面写明了作业的最大运行时间、程序员名字、计费账号、编译器、源程序和结束控制。这种作业结构是很典型的FMS作业结构。

image-20220128103209051

第二代计算机相比于第一代,能够计算一些比较繁琐的计算。其主要用于科学和工程计算,可用来解偏微分方程。

1.2.3 第三代操作系统

第三代是1965-1980,使用的是集成电路和多道程序处理。

在第三代操作系统中,弥补了第二代缺少的几项关键技术。最重要莫过于是多道程序处理,即多道批处理。在原来的单道批处理中,一次只能进入一个磁带,如果当前作业因等待磁带或者其他I/O操作而暂停,CPU就只能简单地等待I/O操作完成。对于CPU操作密集的科学计算问题,I/O操作比较少,因此浪费的时间很少。但是对于数据处理的问题,需要大量使用到I/O操作,此时CPU空闲。对此开发的多道批处理操作系统就是为了防止CPU的空闲时间浪费。

解决方案是内存分为几个部分,每一部分存放不同的作业。当一个作业正在执行I/O操作,那么另外一个作业可以使用CPU。如果内存中可以同时存放足够多的作业,那么CPU的利用率可以解决百分百。

第三代操作系统很适合大型计算和数据处理,但是本质上仍然是批处理系统。在第一代操作系统中,程序员可以一对一把控自己的需求,一旦临时有事可以暂时先停止,也可以中间换一个作业处理,但是对于第三代,批处理的作业一般涉及多个程序员,也就是说一旦开始不能随便停止,这样的话程序员控制缺乏;更重要的是如果其中一个程序员出了问题,大家都白干,因为可以会导致全员编译失败。

为了解决这个问题,分时操作系统应运而生。实际上其为多道批处理系统的变体。

分时操作系统中,每个用户都有一个联机终端。假如如果有20个用户都在登录使用分时操作系统,但是17个休息,那么分时操作系统会把CPU分配给剩下的三个轮流执行。这样的好处是提供了交互式服务。而且由于一般调试程序的用户没有大工程,所以一般计算机处理每个用户的任务都很快。需要注意的是,这个时候已经引入了时间片的概念,如果如上所说有三个用户在工作,那么操作系统是采取并发地形式快速地服务于每一个用户,每个用户服务的轮换时间都是相等的,这就导致了一旦有用户出现紧急需求想要立马处理手头的任务,也必须等到其对应时间片的到来。

1.2.4 第四代操作系统

第四代是1980至今,主要指的是个人计算机。

在早期微型计算机的CP/M、MS-DOS和其他操作系统,基本上都是没有鼠标只有个键盘,坐在电脑屏幕前敲指令。后来在斯坦福研究院的Doug Engelbart发明了图形用户界面,顺带发明了窗口、图标、菜单和鼠标。这对于不懂计算机的用户来说体验十分友好。

但是对于老牌程序员来说,它们更喜欢基于命令的界面而不是GUI,但是基本上所有的UNIX系统都是只会MIT开发的 X Window的视窗系统的。基于此系统之上,开发了Gnome和KDE,使得后来如Ubuntu的界面都可以做到和windows别无二致。

在这个时候分布式系统网络操作系统也出现了。

1.2.5 第五代操作系统

第五代是1990至今,主要指的是移动计算机。

这个时候出现了如IOS、Android等主流操作系统,而SymbianOS(塞班系统)在智能手机出现的第一个十年站稳了脚跟,但是终究被安卓和苹果带来的浪潮所淹没在历史的海洋中,在此比较可惜的是坚守塞班系统的诺基亚,当智能手机最开始出现安卓的时候没能把握转型,现在诺基亚已经基本没什么人用了。

1.3 计算机硬件

从概念上来看,一台简单的个人计算机可以抽象成如下图所示:

image-20220128110858367

其用一条总线连接多台设备,使得各个硬件之间能够相互通信。但是对于现代个人计算机结构更加复杂,包含多重总线

1.3.1 处理器

1.3.1.1 处理器结构

计算机的大脑是CPU,它从内存中取出指令并且执行。

每个CPU都有一套可执行的专门指令集。但是如果每个CPU都是访问内存找指令或数据,那么所花时间要远远大于执行指令,这不符合其工作。为了解决这个问题寄存器出现了。寄存器位于CPU内部。

寄存器中种类作用
通用寄存器用来保存一些关键变量和临时数据
程序计数器保存下一条指令的内存地址
堆栈指针其指向内存中当前栈的顶端
程序状态字(PSW)其包含了条件码位、CPU优先级、模式(用户态或核心态),以及各种其他控制部位

为了改善CPU性能,CPU设计师放弃了以往的读取、解码、执行一条指令的简单模型,而采用了同时取出多条指令的机制。当执行指令n时,同时对指令n+1进行解码,并且读取指令n+2,这种机制被称为流水线,如图所示:

image-20220128112155223

比流水线更先进的设计时超标量CPU,在这种设计中,有多个执行单元,例如一个CPU用于整数运算,一个CPU用于浮点算数运算。两个或多个指令被同时取出、解码并装入暂存缓冲区。如果简单打个比方就是,我们吃瓜子一般都是倒一堆在桌子上,而吃瓜子可以看成是执行指令,当指令执行完了,CPU会打开瓜子袋看看有没有瓜子,有就取出继续执行。

对于多数CPU来说,都有两种模式,即内核态和用户态。在PSW中有一个二进制位控制这两种模式。为了获得操作系统的服务,用户程序必须使用系统调用(system call)启用陷入内核指令(trap)来调用操作系统。trap指令把用户态切换为内核态,并且启用操作系统,当活干完了就把系统调用后面的指令控制权还给用户程序。

需要注意的是有时陷入指令的发送并非是用户程序请求操作系统服务,大多数情况下都是由于硬件出毛病了,普通软件处理不了了只能叫操作系统支援。

1.3.1.2 多线程和多核芯片

摩尔定律指出,芯片中晶体管的数量每18个月就要翻一番。可是大量的晶体管导致了CPU很难处理。为了解决这个问题,英特尔公司引入了多线程(超线程)机制。多线程运行CPU芯片保持两种不同的线程状态,并且在纳米级的时间尺度中来回切换。

多线程对操作系统来说意义非常大,因为每个线程可以看成是单个CPU,在线程没有出现之前,进程看做单个CPU,这就导致了如果一台计算机只有一个四核CPU的话那其只能同一时刻开四个进程。这里讲到了多核CPU,那么多核CPU又是什么?

多核CPU芯片可以看做是一个大芯片里面套了好几个小芯片,每个小芯片都可以看做是一个独立的CPU,对于Intel Xeon Phi(中文名为英特尔至强融核处理器)来说,其上面甚至集成了60多个核。

虽然多核CPU很牛,但是说到多核,可能没有比GPU更牛的了,GPU指的是成千上万个微核组成的处理器,其适用于大量的并行简单计算,还有图像处理,但是其不太适应串行任务,而且对于编程及算法的实现难度过高,所以一般操作系统还是运行在CPU上比较好。

1.3.2 存储器

在任何计算机中,第二种主要部件都是存储器。

存储器对于外行人来说一听就认为是磁盘,实际上不是的,存储器有很多种,常见的有以下几种:

image-20220129155254562

存储器说明
寄存器寄存器处于CPU内部,它们用CPU相同的材料制成,所以和CPU一样快。
高速缓存简称缓存,把频繁使用的内容放于缓存,可以提高使用的速度。
主存通常指随机访问存储器(RAM),高速缓存不能得到访问的请求都会转到主存做请求。
磁盘传统的为机械硬盘,现在出现了固态硬盘

主存通常指随机访问存储器(RAM),一般分为两种,一种是易失性随机访问存储器,如RAM(磁芯存储器)、CMOS;另外一种是非易失性随机访问存储器,它们和RAM不同,遇到突然的外界因素不会丢失其内容。例如:ROM(只读存储器)、EEPROM(电可擦除可编程ROM)、闪存。

其中闪存常用于便携式电子设备中,速度介于RAM和磁盘之间。但是闪存如果擦除的次数太多会有损耗。

传统机械磁盘的结构类似于老式唱片机,磁盘中的磁盘片上有许多同心圆轨道,称为磁道;读写头叫做磁头;提供多个磁头的力臂叫磁头臂。所以磁道合并起来组成一个柱面

每个磁道划分为若干扇区,一个扇区典型值为512字节。磁头在读写操作的时候,必须要找到对应内容所在扇区的磁道才能进行读写。

image-20220129160619726

而对于固态硬盘(SSD)来说,其数据存储在闪存中,与磁盘相似的地方是即使突然断电也不会丢失数据。

目前来说,许多计算机支持虚拟内存,其可以使得期望内存大于物理内存。比如你的电脑运行内存是4G,那么实际可以运行的程序可能远远大于4G。虚拟内存的原理是把程序放在磁盘上,而将主存作为一种缓存,用来保存最频繁使用的部分程序。举个例子就是:通过对程序的切割,少用的部分放于磁盘,多用的部分放于缓存。这实际上就是1.1.2谈到的空间复用技术

通过映像内存地址,可以把磁盘中的程序抽离出来,这种映像是由CPU中名为存储器管理单元(MMU)的部件来完成的。所以如果你想在多程序操作系统中频繁地切换进程,那么操作系统每次都要修改MMU,这种操作我们叫做上下文切换,代价是否昂贵。

1.3.4 I/O设备

对于不同的设备,存在不同的设备控制器,而对于不同的设备控制器,又存在不同的软件去进行控制,我们称这类软件为设备驱动程序

使用设备驱动程序涉及到设备管理,所以CPU必须在内核态下才能运行。当然也有很少的一部分现代系统可以在用户态驱动。

实现输入输出的方式有三种。最简单的方式莫过于系统调用。操作系统内核将系统调用翻译为一个对应设备驱动程序的过程调用,然后设备就会重复检查自己的工作是否做好,做好了就把控制权还给操作系统。这种方式叫做忙等待。其缺点是要占据CPU,CPU一直在问驱动设备:你搞完没有?

第二种方式是中断,驱动设备完成操作后,必须发出一个中断,提示操作系统任务完成。

第三种方式是使用一种特殊的直接存储器访问芯片(DMA)。

中断常常发生,而且一般发生没有好事;对于多个中断,中断控制器会对优先级高的中断优先处理,而对于没法优先处理的,CPU可以先关掉中断但是保持中断信号,等下再帮他开中断。

1.3.5 总线

总线有很多如PCIe、PCI、ISA、USB、SCSI。

其中我们熟悉的USB一般用于慢速I/O设备的连接,比如键盘和鼠标。而SCSI是高速总线,一般用在高速硬盘、扫描仪和其他需要较大带宽的设备上。目前,SCSI用于服务器和工作站。

1.4 其他的操作系统

在1.2中,我们谈论了许多操作系统,那是针对于历史来说的,在现代,有很多操作系统百花齐放。

1.4.1 大型机操作系统

这类操作系统一般长得像房间那么大,可以在一些大型公司的数据中心见到,其拥有巨大的IO处理能力,可以实现批处理、事务处理和分时三种操作系统。

1.4.2 服务器操作系统

服务器可以是个人计算机、工作站、大型机,我们常说的服务器操作系统有:Solaris、FreeBSD、Linux、WindowsServer201x。

1.4.3 多处理器操作系统

这种操作系统一般是为了提高计算能力,采用多个CPU连接单个系统。一般根据连接方式和共享方式的不同,分为:并行计算机、多计算机、多处理器。

在前面我们提到多核CPU,也就是说,其本质也是一个多处理器。目前许多操作系统如Windows和Linux都可以应用在多核处理器上。

1.4.4 个人计算机操作系统

这个就不用我说了吧,玩了这么多年电脑了还玩不明白吗。

1.4.5 掌上计算机操作系统

常见的就是那几个了,安卓、IOS、鸿蒙。

1.4.6 嵌入式操作系统

这类操作系统是用来控制设备的,一般所在的计算机不是一般意义的计算机,这种操作系统不允许用户安装软件,如微波炉、智能灯、智能音箱、电视机、电饭煲。主要的嵌入式操作系统有Linux、QNX、VxWorks。

1.4.7 传感器操作系统

和嵌入式系统一样,该操作系统不允许用户安装软件,所有程序都是提前装好的,如TinyOS。

1.4.8 实时操作系统

这类操作系统看重时间。其主要优点就是能够优先响应一些紧急任务,某些紧急任务不需时间片排队。在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要严格的时限内处理完事件。实时操作系统的主要特点是及时性可靠性

实时操作系统分为两大类:硬实时系统软实时系统。硬实时系统必须在绝对严格的规定时间内完成处理,例如导弹控制系统、自动驾驶系统。而软实时系统能接受偶尔违反时间规定,如12306火车订票系统,偶尔没有及时更新火车票的信息也没什么问题。

1.4.9 智能卡操作系统

在智能卡上的操作系统是最小的,里面只包含一块CPU芯片。需要知道的是,有些智能卡是面向Java的,也就是说,其ROM里面有一台JVM。Java小程序可以下载到智能卡中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

codeforces 483B Friends and Presents 解题报告

题目链接:http://codeforces.com/problemset/problem/483/B 题目意思:有两个 friends,需要将 cnt1 个不能整除 x 的数分给第一个friend,cnt2 个不能整除 y 的数分给第二个friend。x 和 y 都是素数来的。要求求出最小的 v&#xff…

并行计算随笔(一)

如果觉得本篇文章对你有所启发,请给我点个赞好吗,这对我很重要,谢谢 文章目录1 并行计算基础1.1 什么是并行计算1.1.1 对计算速度的需求1.1.2 并行计算1.1.3 并行计算的基本条件1.1.4 平行计算和分布式计算1.2 为什么需要并行计算1.3 并行计算…

命令行的形式运行php

转自:http://www.cnblogs.com/myjavawork/articles/1869205.html 注意:在安装php时需要将php 的安装目录加到环境变量 PATH 中 (右击我的电脑->属性->高级->环境变量, 如果存在 PATH 则在原来的 PATH 中加入你的PHP安装目录, 如果不存在则新建一…

idea android 模块,IntelliJ IDEA 12 - 新的Android应用程序模块向导失败,“无法找到模块的资源目录”...

我面临的问题是一个非常简单的问题... 我无法使用IntelliJ IDEA 12来帮助我创建一个Android应用程序模块(项目)。IntelliJ IDEA 12 - 新的Android应用程序模块向导失败,“无法找到模块的资源目录”成功安装的IntelliJ IDEA 12和使IDE和二者的SDK(Java和Android设备)…

JQuery常用知识点汇总

2019独角兽企业重金招聘Python工程师标准>>> 0、JQuery的基本属性标识: $(".xxx"):标签的class属性; $("#xxx"):标签的id属性; $("xxx"): 标签名&#…

数据库杂谈(三)——关系代数

3 形式化关系查询语言 摘要:关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。在本文中,我们不仅谈论关系代数的知识点,而且还配备了对应的练习题。 文章目录3 形式化关系查询…

android native.js,Android Native与JS通信互调

写在最前:看Android最新技术总结,关注公众号:最近因为App与H5交互逻辑太乱,所以抽空梳理了下;对目前App与H5的各种交互通信做个总结,自取适合自己的交互方式。一、H5调用原生的native方法1、拦截shouldOver…

SharePoint2013 Excel导出好的代码

C#Excel操作类ExcelHelper.cs 来源:http://www.hellocsharp.com/article/67.aspx C#源码世界 发布于: 2014-09-12使用本类之前必须在本机安装了office excel组件或直接下载Microsoft.Office.Interop.Excel.dll文件引用到项目目录下: 然后复制…

基于PMOS的电源防反接电路

如下图所示,是来自TI的参考设计TIDA-00982中的一个电路,功能主要是防止输入反接,R6和C6形成吸收回路,可以对上电过冲有一定的抑制作用。电源正常接入时,PMOS导通,给负载供电,由于VDS的存在&…

计算机组成原理随笔(一)

1 计算机体系结构 计算机革命发展得非常快速,以至于使用老式计算机的很多电影现在看起来十分有年代感,有的电影甚至无法预料后来的计算机是什么样的。 计算机各个组成部分的技术发展非常不均衡,各部分性能差异非常大。在计算机的发展前期&a…

Mongo读书笔记1 -- GridFS

一个Mongo文档最大4M. GridFS不依赖于MongoDB, 其他符合规范的驱动都可以访问它。 GridFS包含两部分:一部分存储文件名和其他metadata; 另一部分存储实际的文件,通常分成一个个大小为256k的小块。 这两个部分通常被命名为files和chunks,在fs命名空间下&a…

简单搭建一个SSM项目(一)

简单搭建一个用户管理的SSM项目框架,虽然也能用servletjdbc搭建更简单的,不过个人感觉工作中更多用的ssm框架项目,这里就简单用ssm来搭建需要的项目吧。 准备工具:eclipse、jdk1.7、Mysql、maven、tomcat。(请先确定计…

android wp主题,WP桌面:win10系统的最佳替代安卓应用

WP桌面是信壹网络继刷机大师、ROOT大师和安卓清理大师后重点开发的一款仿windows phone风格的手机桌面应用,从2012年推出至今已获得海内外千万粉丝的好评。这个基于Android开发的手机桌面,这不仅仅体现了WP桌面良好的用户体验,同时也从侧面反…

数据结构杂谈(三)

本文的所有代码均由C编写 如果你已经看完这篇杂谈,你可以前往上一篇杂谈→数据结构杂谈(二)_尘鱼好美的小屋-CSDN博客 3 单链表 文章目录3 单链表[toc]3.1 单链表的定义3.1.1 引入2.1.2 单链表和顺序表的优劣2.1.3 单链表的代码定义3.2 单链表的初始化3.…

Mac Book Pro不能识别移动硬盘

2019独角兽企业重金招聘Python工程师标准>>> 今天把一台Mac Book Pro重装了一下系统,然后想把移动硬盘上的资料考入电脑,发现插上移动硬盘电脑没有反映。马上搜索解决办法,众说纷纭。因为没重装之前是好的,所以判断为软…

数据库杂谈(四)——关系演算和E-R数据模型

文章目录3 形式化关系查询语言3.2 关系演算和E-R数据模型3.2.1 概述3.2.2 元组关系演算3.2.2.1 概述3.2.2.2 形式化定义3.2.2.3 表达式的安全性3.2.3 域关系演算3.2.4 关于关系演算的习题3.2.5 对传统数据模型的评价3.2.6 E-R数据模型3.2.6.1 基本概念3.2.6.2 E-R图3.2.7 题型总…

小程序获取微信用户绑定的手机号

小程序API内提供getPhoneNumber借口来获取用户已经绑定到微信的手机号,但需要用户主动触发才能发起获取手机号接口&#xff0c;所以该功能不由 API 来调用; 基本流程如下: 使用方法 需要将 <button> 组件 open-type 的值设置为 getPhoneNumber&#xff0c;当用户点击并同…

华为正式发布鸿蒙多久可以用,华为正式发布鸿蒙OS,手机随时能用

8月9日下午&#xff0c;华为在松山湖召开了HDC2019开发者大会&#xff0c;而在此次大会上华为正式发布了传说中的华为鸿蒙系统&#xff0c;也就是Harmony OS。鸿蒙系统它是一个基于微内核的全新全长近分布式的操作系统&#xff0c;它不仅仅局限于某一个设备使用而是可以在其智慧…

WCF rest 的帮助页面和缓存机制

打开vs2010 在工具选项中选择扩展管理器——联机库 安装WCF REST Service Template 40(CS)模板 安装后新建wcf服务应用程序&#xff0c;删除默认建立的文件。 新建RestWcf4HelpPage.svc&#xff0c;代码如下 using System; using System.Collections.Generic; using System.Lin…

数据结构杂谈番外篇——时间复杂度计算

我们先给出推导的方法&#xff0c;然后下面一步一步来推导。 推导大O阶 用常数1取代运行时间中的所有加法常数在修改后的运行次数函数中&#xff0c;只保留最高阶项如果最高阶存在且不是1&#xff0c;则去除这个项相乘的常数所得结果即为大O阶 示例 int sum 0&#xff0c;…