【云计算学习教程】软件(程序)是什么?

2023-05-16

文章目录

        • 本节的知识点
  • 计算机由哪些软件和硬件组成?
  • 计算机网络(因特网)是什么?
        • 本节的知识点
  • IT系统组成

软件,也叫程序,那么究竟什么是软件?在回答这个问题之前,先来看下面的例子。

老李要求他的痴呆儿子(下称小李)在一张纸上画三角形并计算出三角形的面积。老李准备了两张白纸:一张白纸上标注了三个点:A 点、B 点和 C 点,以及每个点的坐标;另一张白纸上写下了画三角形的步骤和计算三角形面积的方法。小李只要按照这些步骤和计算方法动手即可。步骤如下:

1)画一条直线连接 A 点和 B 点。

2)画一条直线连接 A 点和 C 点。

3)画一条直线连接 B 点和 C 点。

4)根据下面的公式计算三角形的面积并写在纸上:
img
老李把这两张纸交给小李后,小李在书桌上摊开这两张纸开始工作。大概过了十分钟,老李得到了一张画好三角形并标注了面积的纸张,任务完成,如图 1 所示。

画三角形并计算面积
图 1 画三角形并计算面积

现在把小李比喻成计算机的 CPU(中央处理器),那么书桌就是内存,绘制三角形的步骤就是软件,一个步骤就是一条指令(语句),老李就相当于程序员,而那张画了三角形并标注了面积的纸张就相当于软件的输出(在屏幕上显示或者打印出来),“画一个三角形并计算面积”就是软件要完成的任务(程序要处理的数据)。

几天后,老李要画更多形状不同的三角形并计算出各自的面积,如果还是按照原来的方式,那么针对每个三角形,老李都要给小李提交两张纸,一张纸标明三个点,另一张纸写明步骤。这样做一方面浪费了纸张,另一方面增加了工作量。于是老李想出了一个办法,只交给小李一张写有步骤的纸张,画一个三角形并计算面积的步骤改为:

1)询问 A 点的坐标。

2)询问 B 点的坐标。

3)询问 C 点的坐标。

4)画一条直线连接 A 点和 B 点。

5)画一条直线连接 A 点和 C 点。

6)画一条直线连接 B 点和 C 点。

7)根据下面的公式计算三角形的面积并写在纸上:
img
8)把那张画了三角形并标注了面积的纸张交回给老李。

这样小李收到老李递过来的纸张后,先询问老李三角形的三个顶点的坐标,然后再去画三角形并计算面积,如图 2 所示。

画三角形并计算面积(2)
图 2 画三角形并计算面积(2)

现在不只是老李,任何人只要复印那张写了步骤的纸张,都可以叫小李画出任何他们想要的三角形,只不过小李在画三角形前要询问顶点的坐标。继续把这些步骤比喻成软件,那么相对于前面的软件,这次增加了三条输入语句,用户在运行这个软件时,要用键盘输入三角形的三个顶点的坐标,然后就会在屏幕上看到一个三角形以及这个三角形的面积。

至此,我们总结出这个软件已经具备如下特征。

  • 完成任务:画三角形并计算面积。
  • 输入数据:顶点坐标。
  • 输出结果:三角形及三角形的面积。
  • 指令集:详细定义画一个三角形的步骤和计算三角形面积的方法。

指令集保存在一个文件中,这个文件就叫可执行程序,允许存放在硬盘、U 盘、光盘或者网盘中,可以任意复制和传播。比如,Windows 操作系统中的“计算器”这个程序(指令集)保存在硬盘上的 C:\Windows\system32\calc.exe 文件中,用鼠标双击它或者单击“开始”(“所有程序”(“附件”(“计算器”,即表示命令 CPU 现在就按照里面的步骤进行操作(专业术语叫执行指令)。

最后,我们通俗地定义一下软件:由程序员写的需要让 CPU 来完成某项任务的步骤。只不过这些步骤是用计算机语言来描述的。常见的计算机语言有 C 语言、C++、Java、PHP、Go 等,编程人员必须严格按照计算机语言的语法规则来写程序,如下面用 C 语言语句实现的加法运算。

img
上面左侧灰色框内就是程序员用 C 语言写的两个数相加的程序语句,右侧是额外加上的说明信息。

软件必须包含输入/输出语句和计算语句,没有包含输入/输出语句的软件没有任何用途,因为它就像一个黑盒子,既不能输入任何东西,也不能从它那里得到任何东西。

在这里,我们要澄清两个概念:实时输入/输出和批量输入/输出。

  • 实时输入/输出是指 CPU 执行输入/输出步骤时,立即完成输入/输出动作。
  • 批量输入/输出是一次性输入全部的信息,一次性输出全部的计算结果。

大部分计算机软件,如办公软件,都要求实时输入/输出。绝大部分网站都是批量输入/输出的,比如注册一个在线免费邮箱,我们要一次性输入全部的注册信息,然后再单击“提交”按钮,送出全部的输入信息。

实时输入/输出软件可进一步划分为强交互性软件和弱交互性软件两种,强交互性软件是指在运行时需要实时地进行大量输入/输出操作,且输入之后马上能看到输出结果;而弱交互性软件是指软件运行时实时地进行少量的输入操作,然后就源源不断地输出了。

属于强交互性软件的有:微软的办公软件(Word、Excel、PowerPoint)、记事本、QQ、Photoshop、AutoCAD、金山的办公软件 WPS、金山词霸、Visual Studio、Eclipse、Vim、飞信等,共同特点是用键盘输入的东西马上能在屏幕上显示出来。

下面这些软件属于弱交互性软件:酷狗音乐播放器、暴风影音、千千静听、PPTV、Adobe Reader、家庭相册、迅雷下载等,共同特点是在程序运行初期只需输入少量信息,然后就源源不断地输出了。

在规划云计算方案时,要特别关注软件的输入/输出是实时的还是批量的。如果是实时的,那么还要进一步区分是强交互性的还是弱交互性的。对于实时的强交互性软件,有两种解决方法:

1)计算机网络的延时控制在合理的范围内(一般要小于 100 毫秒),手段是就近部署云计算分支中心。如果延时过大,那么当使用诸如 Word 等排版软件时,需要等一会儿才能在屏幕上看到刚才用键盘输入的字符,用户体验很差。

2)改造软件以便能通过网页浏览器访问,用户只与本地的网页浏览器进行实时输入/输出交互,而网页浏览器与“云”中软件进行批量输入/输出传输,示意图如图 3 所示。

使用浏览器改造强交互性软件
图 3 使用浏览器改造强交互性软件

计算机网络延时的概念在教程后面会详细介绍。

最后,我们用图 4 来表示一个软件运行模型。

软件运行模型
图 4 软件运行模型

一个软件以文件的形式保存在硬盘上,当我们用鼠标双击它时,这个软件就被读到内存,此后 CPU 就按照里面的步骤一步步执行。

执行到一些输入步骤时,就要从输入设备上获取信息(常见的输入设备有键盘、鼠标、扫描仪、话筒、摄像头、网络等)。

执行一些计算步骤时,要用到计算设备。

执行输出步骤时,把计算的结果通过输出设备输出(常见的输出设备有计算机显示器、打印机、绘图仪、音箱、耳机、网络、机械手等)。

对于一些较大的软件,不一定就是按照“输入—计算—输出”的顺序进行的,在软件执行的过程中,随时可能需要输入,也随时可能会输出,计算步骤也可能安排在任意时刻。

注意:硬盘上的文件既可以作为输入设备,也可以作为输出设备。例如,编辑一个已经存在的 PPT 文档,首先作为输入设备,PPT 文档中的内容被读到内存,编辑完成后保存时又作为输出设备,内存中被修改的内容又被写到这个 PPT 文档中。

计算设备一般指 CPU、内存、存储(硬盘属于最典型的存储)和网络,为什么网络也算计算设备呢?在云端运行一个分布式应用程序时,网络是必需的。换个角度来看,计算设备就是程序运行时需要使用的资源——计算资源。

硬盘上的 PPT 文档本身不是程序,只是用于输入/输出的数据文件,双击它能打开进行编辑,实际上运行了微软的办公套件中的 powerpoint.exe 程序,因为在安装办公软件时自动建立了数据文件和程序的关联,建立好关联之后,只要双击数据文件,就能运行关联的程序。

本节的知识点

  1. 软件是由程序员写的让 CPU 来完成某项任务的步骤。
  2. 这些步骤包括输入/输出步骤和计算步骤两大类。
  3. 输入/输出步骤要使用输入/输出设备,计算步骤要使用计算设备,计算设备也称为计算资源。
  4. 键盘和鼠标是最常见的输入设备,显示器和音箱是最常见的输出设备,CPU、内存、存储和网络统称为计算资源。
  5. 软件平时保存在硬盘里,但必须读到内存中去执行,一个软件可以被多次执行。

计算设备和输入/输出设备的分离是云计算的特征之一。也就是说,对于云计算而言,计算设备位于远方的云端,而输入/输出设备就在眼前。究竟如何分离计算设备和输入/输出设备,请看后续章节。

计算机由哪些软件和硬件组成?

组装一台计算机的步骤大概就是写好计算机配单、采购零部件、组装、安装操作系统和各种应用、交付给用户使用,更详细的描述如下。

  1. 写好配单,重点考虑用户的需要和各种零配件之间的兼容性。
  2. 买齐配件,包括 CPU、主板、内存、电源、硬盘、机箱、显示器、键盘、鼠标、音箱、光驱。
  3. 把配件组装到一起,此时我们得到一台纯硬件的裸机。
  4. 安装操作系统,如 Windows 8。
  5. 安装驱动软件,此时我们得到一台只安装了操作系统的计算机,称为平台机。
  6. 安装需要的应用软件,如聊天软件、办公软件、音视频播放软件、上网软件和游戏软件等,此时我们得到安装了操作系统和应用软件的准计算机系统。
  7. 最后把以前备份的数据资料(如文档、照片、视频等)复制到计算机硬盘中,这样完整的计算机系统就诞生了。

由此可知,完整的计算机系统包括硬件、软件和数据资料。软件又可分为平台软件和应用软件,操作系统和数据库软件是典型的平台软件。应用软件种类繁多,涉及人们生活的方方面面,如聊天软件、办公软件、上网软件、音视频播放软件、图片处理软件等。计算机系统体现出如图 1 所示的逻辑层次结构。

计算机系统逻辑层次结构
图 1 计算机系统逻辑层次结构

传统的个人计算机由于操作系统没有固化,感染病毒、不正常关机、误删除重要文件、配置不正确等都可能导致操作系统损坏,由此导致死机、蓝屏等各种问题。这些问题一直困扰着计算机用户,而重装操作系统、应用软件并恢复数据资料要消耗大量的时间和精力,严重时甚至丢失数据资料或者外泄私人资料。所以说,传统的计算机系统是专家系统,意思是说只有计算机专家才能很好地使用计算机,普通民众使用计算机会面临很多困难。

现在有两个趋势:第一个趋势是操作系统固化,用户自己不能安装和更改操作系统,只能在线对操作系统进行升级。应用软件也不能随便安装,只能从官方应用软件库中在线安装,如平板电脑、智能手机、老年机等。第二个趋势是云计算,后面的章节会展开讨论。

人们为什么要购买和使用计算机?也就是说人们购买和使用计算机的目的是什么?

目的只有一个,那就是处理数据资料,如上网查看别人的网站信息、编辑自己的 PPT、写个人简历、编辑图片、听音乐、看电影、和他人传递聊天信息(聊天)、发微博等,其实这些只是一些数据资料的浏览、编辑、传递和存储罢了。

如果没有裸机,或者有了裸机但没有安装操作系统,或者安装了操作系统但没有安装应用软件,那么我们就无法达到处理数据资料的目的。

由此可以说,准计算机系统(硬件、操作系统、应用软件)是手段,数据资料是目的。不难想象,如果没有数据资料要处理,就根本没必要购买和使用计算机。

手段与目的分离是云计算的另一个特征,即云计算服务提供商拥有计算资源这个“手段”,而云计算用户拥有数据资料这个“目的”。

计算机网络(因特网)是什么?

今天是周末,位于深圳南山区荔湾小区 28 栋 801 房间的云计算专家正在通过计算机和北京海淀区学院路文山花园 30 栋 2802 房间的做服装生意的朋友解释什么叫“云计算”,双方你一句我一句地在计算机上互传信息。做服装生意的朋友越说越糊涂,最后云计算专家输入了如下一句话:

“如果我能给你解释清楚,那么我的智商就下降到和你一样的水平了。”

然后单击“发送”按钮,对方马上反馈了一个晕倒的表情,聊天就这样无疾而终。

现在的问题是,单击“发送”按钮后,“如果我能给你解释清楚,那么我的智商就下降到和你一样的水平了。”这句话如何能准确无误地立即显示在北京海淀区学院路文山花园 30 栋 2802 房间里的那台计算机屏幕上呢?而地球上千千万万的其他计算机就不会显示这句话呢?

这两个问题可归结为:如何把一台计算机发出的信息准确无误地发送到另外一台计算机上?这个问题就是计算机网络所要解决的问题,示意图如图 1 所示。

两台计算机进行通信
图 1 两台计算机进行通信

写过纸质信件的人很清楚,为了能使信件送到对方手中,必须要在信封上写上收信人的详细地址和姓名,且“地址+姓名”是唯一的。至于这封信具体如何传递,那就是邮局的事了,不用我们操心。

如果两台计算机之间要通信,那么同样每台计算机要定义一个唯一的地址——32 个由 0 和 1 组成的二进制数字。

为了便于人们记忆,常把 32 位 0 和 1 组成的数字分成四段,每段 8 位,8 位二进制数再换算成十进制数,最后写成 xxx.xxx.xxx.xxx 格式。

如 192.168.0.10 对应的二进制分段为 11000000.10101000.00000000.00001010,因此最终的 32 位二进制地址是 11000000101010000000000000001010,有点类似于身份证号码,且必须全球唯一,这不同于邮局寄信的“XX市XX区XX街XX号”格式的地址,计算机的地址称为 IP 地址,格式是“xxx.xxx.xxx.xxx”。

有读者可能马上会想到这样一个问题:32 位二进制数字最多能给多少台计算机分配唯一的 IP 地址呢?答案是 2 的 32 次方,约等于 43 亿台计算机。目前 32 位的地址(简称为 IPv4 地址)早已分配完毕,其中分配给中国的 IPv4 地址非常少,只与微软一家企业的数量相当。

在中国,公网 IPv4 极度匮乏,因此租用一个公网 IP 地址,价格非常昂贵。为了解决 IPv4 地址不够用的问题,人们发明了 IPv6。

IPv6 采用 128 位二进制数字编码,可以分配的地址数量可达 2 的128次方,这是一个天文数字,平摊下来,地球上每平方米可以分配上百万个 IPv6 地址。但是现在 IPv6 地址还没有被普遍采用,尽管现在的网络设备都已支持 IPv6。

聪明的中国人还发明了动态域名服务(DDNS,比较有名的产品有花生壳等),利用花生壳,解决了外网如何通过域名访问局域网内的计算机的问题。

现在我们再来看看深圳的云计算专家发送的“如果我能给你解释清楚,那么我的智商就下降到和你一样的水平了。”消息是如何传递到北京朋友面前的计算机的。单击“发送”按钮后,消息、自己计算机的 IP 地址、对方计算机的 IP 地址被打包在一起并通过宽带发送给深圳电信,然后电信内部传递,最后到达北京海淀区电信局后,由海淀区电信局通过对方的宽带发送给对方计算机。

注意:消息的打包和传递都是由计算机网络自动完成的,而且以电或光的速度传播,所以速度非常快。传递路径上转发机构(通常是路由器)的多少决定了一条消息到达对方计算机所消耗的时间(术语称延时),因此位于深圳的用户给美国的朋友发送消息有可能比给武汉的朋友发送消息还快。

实时输入/输出的软件对计算机网络的延时要求较高,尤其是实时强交互性软件,对计算机网络延时更苛刻。而批量输入/输出的软件对计算机网络的延时要求并不高,比如在线看电影,刚开始有点延时,后面就一直流畅地播放了。

一个云计算中心的延时半径通常为 100 毫秒,即一个数据包从云中心出发,50 毫秒所能到达的范围(返回也要 50 毫秒),这个数字与地理位置没有直接关系,而与网络路径上的转发机构和数目有关。比如深圳的超算中心 50 毫秒延时半径可能包括了美国的洛杉矶,但没有包括广东省内的梅州市,因为深圳与梅州市之间要经过太多性能低下的转发设备,而达到美国只经过少数几台高速路由器,如图 2 所示。

延时半径100毫秒
图 2 延时半径100毫秒

计算机网络的另一个指标是带宽,定义为每秒钟能传递的数据量。带宽越大,则每秒钟传递的数据量就越大。如果把计算机网络比喻为布满收费站的高速公路(车子从一个收费站开到另一个收费站的时间可以忽略不计,但是收费站交钱时要消耗时间),那么带宽就与车道数直接相关,延时就是从出发点到目的地经过收费站交钱时所消耗的时间之和。

计算机网络的第三个指标是丢包率(或称为掉包率),是指在一定时间内被丢掉的数据包数目占总发送数据包数目的百分比。公式如下:
img
本机发送的一个数据包如果在规定的时间内没有得到对方的确认,就认为此数据包被丢失,于是重发此数据包。比如对方一共收到 8 个数据包,而本机一共发送了 10 个数据包(因为重发了 2 个数据包),所以丢包率为 20%,即img丢包率越小,说明网络越稳定,当丢包率超过 10% 时就很严重了,这时需要检查网络。

接下来我们再来谈谈叠加网络技术。为了方便大家去网上搜索,在这里给出这个术语的英文名称:Overlay Networks,在 Google 上搜索英文的技术资料,往往能获得很多你想要的结果。叠加网络,顾名思义就是在一张网络平面上叠加出更多层的网络平面,手法无非就是“包中之包”——把叠加协议和信息数据打包,作为底层网络平面传递的应用层数据。

实现叠加的最新技术有 VXLAN、NVGRE 和 STT,这些技术主要用来解决在大规模、多机房、跨地区的云计算中心部署多租户环境问题。叠加网络技术非常类似于在邮政系统上建立一个情报网络,利用现有的邮局来收发间谍情报。为了防止未经授权的人获取情报信息,需要先做加密处理,然后再放入信封,当然对方事先要知道解密方法。

叠加网络与虚拟局域网有着本质的不同,虚拟局域网通过分割一张大的局域网来减少广播风暴,本质是“分割”网络;而叠加网络是把“局域网”延伸到底层网络平面的任何地点,本质是“连通”。这里的“局域网”是虚拟的概念,对用户是透明的。

VPN 就是一个典型的在广域网中通过叠加网络技术构建地理位置跨度很大的局域网的例子,如果不采用叠加网络技术,那么一个公司很难或者根本不可能建立一个跨城市的局域网。为了进一步说明叠加网络的概念,请看下面的多租户环境的情景案例。

中国微算科技有限公司运营一个大型公共云,包含北京、上海和西安三个计算中心,共拥有 80 万台服务器,构造出近 5000 万台虚拟机,主营业务是对外出租虚拟机(IaaS 云服务)。

中国慧献是一家全国性的集团公司,机构分布在中国各地,为了节约成本和快速部署应用,该公司向中国微算科技有限公司长期租赁 1 万台虚拟机,因而成为中国微算科技有限公司的最大租户。这 1 万台虚拟机由中国慧献集团内部的技术工程师规划成近 300 个局域网(VXLAN),每个局域网内的虚拟机个数相对固定,但是虚拟机运行的地点与使用虚拟机的员工紧密相关。

比如中国慧献员工郭淑敏在北京出差十天,她的虚拟机就在北京的云中心运行,等她返回上海后,虚拟机也将“漂移”到上海的云中心运行。这一切,对郭淑敏来说都是透明的,她只是感觉首次在北京登录云端时稍微慢一点,几分钟之后就很流畅了,首次在上海登录时也是如此。

不管在哪里,郭淑敏都是登录相同的IP地址,输入相同的账户和密码,然后看到自己熟悉的计算机桌面。是的,昨天编辑的 PPT 继续打开在桌面上,光标停在“公司今年的财务”处,郭淑敏继续输入“状况好于去年……”郭淑敏的虚拟机归口于财务部局域网,财务部局域网横跨北京、上海和西安云中心,这是一个典型的叠加网络案例。

本节的知识点

  1. 计算机网络解决位于不同地区的两台计算机之间如何通信的问题。
  2. 需要与外界通信的计算机必须拥有一个唯一的 IP 地址。
  3. 计算机网络的三个重要指标是带宽、延时和丢包率。
  4. 延时由网络路径上的转发机构的速度和数量决定,与通信双方地理位置的远近无关。
  5. 叠加网络技术解决了在广域网上灵活构建虚拟局域网的问题。

我们要重点关注带宽和延时,因为它们是部署云计算时不可忽视的两个重要因素。

IT系统组成

当今,任何一家企业,无论大小,都要采用计算机来处理日常事务,如写文档、做表格、发邮件、管理库存、管理客户等。为此,企业需要建设计算机网络,购买计算机设备,安装各种平台软件和应用软件。

随着公司的发展壮大,企业中的计算机网络变得越来越复杂,计算机设备越来越多,安装的软件也五花八门,到后来各种问题就出现了:病毒肆虐、数据丢失、客户流失、源代码被盗、网速下降、数据孤岛难以共享、运维复杂等。

为了搞清楚企业中复杂的 IT 系统结构,我们假设一家投资 8000 万元的公司诞生了,他们购买了一栋办公楼,现在需要计算机工程师们把 IT 系统搭建起来。工程师们制订了如下工作计划:

  1. 机房基础建设,包括机房选址、装修、供电、温湿度控制、监控、门禁等。
  2. 组建计算机网络,包括大楼综合布线、机柜安装、网络设备购买安装和调试。
  3. 安装存储磁盘柜。
  4. 购买和配置服务器。注意,还可能是虚拟出来的服务器。
  5. 安装操作系统。
  6. 安装数据库。
  7. 安装各种中间件和运行库。
  8. 安装各种应用软件。
  9. 导入公司的初始化业务数据。

至此,公司的整体 IT 系统搭建完毕,员工可以入驻办公了。根据上面的工作计划,我们可以很容易地总结出企业 IT 系统的逻辑层次结构,如图 1 所示。

IT系统的逻辑层次结构
图 1 IT系统的逻辑层次结构

一个典型的 IT 系统从逻辑上分为九层,施工时也是严格按照从第 1 层到第 9 层的顺序进行的,这就是所谓的“竖井”式施工。其中,第 1~4 层可归并为基础设施层,第 5~7 层可归并为平台软件层。

九层归并之后形成四层结构,分别是基础设施层、平台软件层、应用软件层和数据信息层,IT 系统的四层结构是最为普遍并被广泛接受的划分方法。在后续章节中,我们将采用四层结构展开讨论。

基础设施层、平台软件层、应用软件层可以进一步归并到 T(Technology 的首字母,表示技术),而数据信息层就是 I(Information 的首字母,表示信息),这就是 IT 的含义——信息技术。

对于一家企业而言,随着时间的推移,积累的数据信息会越来越多,数据信息是企业的宝贵资产,甚至是关乎企业生死存亡的重要财富。“如果数据丢失,80% 的企业要倒闭。”此话并非是危言耸听。

信息是目的,技术只是手段,如果一家企业没有业务数据需要处理,那么花大量资金组建基础设施层、平台软件层、应用软件层又有什么意义呢?

记住:IT 就是信息(Information)与技术(Technology),其中 I 是目的,T 是手段,T 是用来加工处理 I 的。T 广义上还包括企业中的计算机技术人员。

这里要重点介绍平台软件层的作用。很多计算机专业人士对平台软件难以理解,平台软件存在的唯一理由就是让应用软件能在计算机上运行。换句话说,平台软件就是应用软件运行时所依赖的环境。

比如,要想使用 QQ 这个应用软件,就必须先安装操作系统(如 Windows 10),QQ 需要的运行库在安装操作系统时会自动安装,然后才可以安装并运行 QQ 和朋友聊天。应用软件与平台软件的关系如图 2 所示。

应用软件与平台软件的关系
图 2 应用软件与平台软件的关系

从图 2 可知,在操作系统平台上再搭中间件、运行库和数据库三个“台”,最后在最上层放置应用软件。不过,中间件可能还需要运行库和数据库的支撑,数据库可能还需要运行库的支撑。

并不是每个应用软件都要同时压在中间件、运行库和数据库三个“台”上,有的应用软件只需要运行库(如 QQ),有的应用软件只需要中间件,有的应用软件同时需要运行库和数据库,但是不需要运行库的应用软件很少,静态编译的软件运行时不需要运行库。

运行库有点像电工人员的工具袋,里面有螺丝刀、电笔、老虎钳、剥线钳等,应用软件在运行时需要使用各种小工具(术语叫系统库函数调用),操作系统提供了绝大多数常用的小工具,并分门别类地保存在硬盘的文件中。

Windows 操作系统中以 .dll 为扩展名的文件,通常保存在 C:\Windows\System32 下(比如文件 GDI32.dll 就是 QQ 软件运行时要用到的工具箱之一,如果把此文件删除,那么 QQ 就无法运行)。Linux 操作系统中一般以 .so 作为扩展名,保存在 /lib 目录下。

不同操作系统提供的“工具”和使用方法也不同,所以能在 Windows 操作系统上运行的应用软件不能在 Linux 操作系统上运行,也不能在苹果计算机的 Macintosh 操作系统上运行,反之亦然。为此,应用软件开发商会针对不同的操作系统发行不同的软件版本,比如腾讯公司开发的 QQ,目前就有 4 种版本,分别针对 Windows、Linux、Mac OS(苹果操作系统)和 Android 操作系统。

“中间件”是一个技术含义很强的概念,在家庭计算机和个人计算机上很少用到它,在企业中使用很普遍。中间件也就是“中间软件”的意思,为一类软件的统称。

“中间”包含两方面含义:一是指处于操作系统和应用软件之间;二是指介于应用软件与应用软件之间,目的是为了隐藏差异,以便共享资源和通信。中间件有点类似于电源插座面板,不管插座里面是什么构造,面板上的插接孔都是一样的,这样插座面板一方面隐藏了插座内部结构,另一方面能接插所有的电源插头。

中间件的引入目的就是要隐藏通信对端的内部结构,而呈现统一的调用界面。

掌握企业 IT 系统的四层逻辑结构很重要,这对于理解后续章节中的云计算概念非常有帮助。


转载于:http://c.biancheng.net/cloud_computing/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【云计算学习教程】软件(程序)是什么? 的相关文章

  • 如何保持专注

    文章目录 部分 1 做一个井井有条的人部分 2 提高专注力部分 3 在集中期间保持动力 专家建议小提示 转载于 xff1a https zh wikihow com E4 BF 9D E6 8C 81 E4 B8 93 E6 B3 A8 不
  • 让开始学java的我困惑的问题解析

    前面已经对java一些基础概念进行了理解 xff1a Java 包 package 详解 java中文件名 类名之间的关系 java中类的main方法总结 文章目录 一个java文件中可以有多个class xff0c 但是只能有一个是pub
  • Jar包详解

    jar包的一些事儿 关于 JAR 包我们应该知道的s
  • astra 深度相机 + orbslam2 ~ 稠密建图

    在ROS下运行ORB SLAM2 主要包括以下几步 xff1a 一 创建ROS工作空间 二 下载usb cam xff08 单目相机驱动包 xff09 三 下载深度相机驱动包 四 下载ORB SLAM2稠密建图代码 五 运行 一 创建ROS
  • Java字符串的处理

    文章目录 本章学习要点 Java定义字符串 xff08 2种方式 xff09 直接定义字符串例 1 使用 String 类定义1 String 2 String String original 3 String char value 4 S
  • Java数字和日期处理:Java数字处理和日期类

    文章目录 本章学习要点 Java Math类的常用方法静态常量例 1 求最大值 最小值和绝对值例 2 求整运算例 3 三角函数运算例 4 指数运算例 5 Java生成随机数 xff08 random 和Random类 xff09 例 1例
  • Java内置的包装类

    文章目录 本章学习要点 Java包装类 装箱和拆箱装箱和拆箱包装类的应用1 实现 int 和 Integer 的相互转换2 将字符串转换为数值类型3 将整数转换为字符串 Java Object类详解toString 方法equals 方法例
  • Java输入/输出(I/O)流

    文章目录 本章学习要点 Java流是什么 xff1f 输入 输出流又是什么 xff1f 什么是输入 输出流输入流输出流 Java系统流例 1 Java字符编码介绍Java File类 xff08 文件操作类 xff09 详解获取文件属性例
  • Java异常处理

    文章目录 本章学习要点 Java异常 xff08 Exception xff09 处理及常见异常异常简介例 1 异常类型 Java中Error和Exception的异同例 1 Java异常处理机制及异常处理的基本结构Java try cat
  • Java注解

    文章目录 本章学习要点 Java注解 xff08 Annotation xff09 简介Java 64 Override注解Java 64 Deprecated注解Java 64 SuppressWarnings xff1a 抑制编译器警告
  • 如何夸人?

    文章目录 夸人要怎么夸到心坎上 xff1f 01 有理有据 xff0c 细节见诚意02 一如既往保持信任与支持03 由表及里 xff0c 夸TA前先夸自己04 先抑后扬 xff0c 对比式夸奖05 创造条件引导TA自夸 如何做一只舔狗 xf

随机推荐

  • Java继承和多态

    文章目录 本章学习要点 Java类的封装例 1 Java封装图书信息类Java继承 xff08 extends xff09 简明教程例 1 单继承继承的优缺点 Java super关键字详解super调用父类构造方法例1例2 super访问
  • java中接口(interface)详解

    分享记录一下java接口的博客 xff1a java中接口 xff08 interface xff09 详解 JAVA基础 接口 xff08 全网最详细教程 xff09
  • java引用详解

    文章目录 一 关于对象与引用之间的一些基本概念 new Vehicle Vehicle veh1二 Java对象及引用三 只有理解了对象和引用的关系 xff0c 才能理解参数传递总结 xff1a 什么是值传递 xff0c 什么是引用传递 为
  • python学习-def __init__(self)理解(1)

    python中 init 的作用 在python中创建类后 xff0c 通常会创建一个 init 方法 xff0c 这个方法会在创建类的实例的时候自动执行 实例1 实例化Bob这个对象的时候 xff0c init 方法会自动执行 xff1a
  • 学完java基础语法之后用来练习的不依赖框架的小项目

    刚学完一门语言基础语法之后 xff0c 一般都需要写一些小项目来检验我们的学习效果 xff0c 将所学的基础语法串联起来 xff0c 同时也熟悉一下用这门语言做项目的大概流程 但是此时学习的项目不能太复杂 xff0c 因此此时才刚学完基础语
  • java集合中接口和类的理

    一 背景 首先我们可以先了解一下类和接口的基础和使用方法 xff1a Java类和对象 java中接口 xff08 interface xff09 详解 Java继承和多态 然后再对java集合的基础了解一下 Java集合 泛型和枚举 有了
  • java多线程详解

    文章目录 多线程基础进程进程 vs 线程多线程 创建新线程线程的优先级练习小结 线程的状态小结 中断线程小结 守护线程练习小结 线程同步不需要synchronized的操作小结 同步方法小结 死锁死锁练习小结 转载于 xff1a https
  • Java项目管理工具Maven使用方法详解

    这边直接推荐两个比较好的教程 xff1a https www liaoxuefeng com wiki 1252599548343744 1309301178105890 http c biancheng net maven2 depend
  • maven引入依赖包,import依赖包,编译运行maven项目

    文章目录 IDEA中新建一个maven项目在pom xml中添加依赖包 xff0c 确定依赖包成功导入 xff0c 在项目中import依赖包怎么确定maven成功的导入了依赖包在项目中import导入的依赖包总结 在看这篇博客之前 xff
  • 怎样做一个好的PPT演讲

    文章目录 一 做好PPT演讲的重要性二 怎么做好PPT演讲1 做一个好的PPT2 做好演讲 三 分析一些比较好的PPT演讲视频四 实例解析和总结 一 做好PPT演讲的重要性 不管是在学生时期的竞赛展示 xff0c 毕业答辩 xff0c 我们
  • PPT怎么画出好看的三维示意图

    一 前言 之前一些博客已经大致讲了PPT怎么画图的 xff1a PPT画图文章总结 怎样做一个好的PPT演讲 其实对于我们平常在PPT中会出现的图片 xff0c 可以简单的分为二维示意图和三维示意图 xff0c 二维示意图制作起来相对简单
  • 为什么C++没有Python那么多开源库?

    链接 xff1a https www zhihu com question 375368576 answer 1059898195 看了好多回答 xff0c 还是觉得有更本质的原因的 xff0c 根源还是在C 43 43 这个语言特性上 为
  • 为什么C++没有C语言快?

    作者 xff1a 高性能架构探索 链接 xff1a https www zhihu com question 507790994 answer 2287288696 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xf
  • C/C++语言性能分析方法及性能分析工具的使用

    文章目录 一 从算法复杂度都程序性能一 事后统计的方法二 事前分析估算的方法三 求解算法的时间复杂度的具体步骤四 算法复杂度和程序性能之间的关系五 执行什么语句耗时 xff1f 不同语句执行时间量级分析整型加和减 xff1a 浮点型加和减测
  • Mysql大量插入随机数据方法--存储过程

    案例1 创建测试表 xff1a mysql span class token operator gt span span class token keyword create span span class token keyword ta
  • 【LeetCode刷题日记】846. 一手顺子 + 复习C++ STL和java集合

    这几天看几个Thu大佬的刷题总结 xff0c 有点被震惊了 xff0c 要向他们学习 xff0c 2022年 xff0c LeetCode刷起来 xff01 题目 Alice 手中有一把牌 xff0c 她想要重新排列这些牌 xff0c 分成
  • 【LeetCode刷题日记】507. 完美数

    题目 对于一个 正整数 xff0c 如果它和除了它自身以外的所有 正因子 之和相等 xff0c 我们称它为 完美数 给定一个 整数 n xff0c 如果是完美数 xff0c 返回 true xff0c 否则返回 false 示例 1 xff
  • 与嵌入式RTOS大不同,主流物联网操作系统中哪款适合你?

    物联网的发展大势所趋 xff0c 也被普遍看好和关注 xff0c 但嵌入式设备的联网会使得软件复杂性大幅增加 xff0c 传统的嵌入式 RTOS内核已经越来越难满足市场的需求 xff0c 在这种情况下 xff0c 物联网操作系统的概念应运而
  • 【云计算学习教程】云计算技术与应用学习教程

    文章目录 云计算给我们的生活带来什么改变 xff1f 云计算是一种全新的使用计算资源 xff08 硬件和软件 xff09 的模式 计算资源所在地 xff08 远方的一个或者多个机房 xff09 称为 云端 xff0c 人们使用的输入 输出设
  • 【云计算学习教程】软件(程序)是什么?

    文章目录 本节的知识点 计算机由哪些软件和硬件组成 xff1f 计算机网络 xff08 因特网 xff09 是什么 xff1f 本节的知识点 IT系统组成 软件 xff0c 也叫程序 xff0c 那么究竟什么是软件 xff1f 在回答这个问