计算机的发展:计算工具(算盘)-》计算机器(加减乘除计算器)-》现代计算机-》微型计算机(微处理器的诞生)
现代计算机三个基本原则:
微型计算机的设计思想
计算机具体发展史
计算工具时期:中国贡献:位值概念和九九表后来传入高丽,日本等东方国家,后经过丝绸之路传到印度,波斯,继而流行全世界。十进制位值概念和九九表是古代中国对世界文化的一项重要贡献。
计算机器时期:莱布尼茨的二进制思想实现了加减乘除运算,但没有建立完整的二进制数计算理论体系。
计算机器时期到现代计算机时期:巴贝奇制造了差分机,设计了分析机(具有存储器概念,类似汇编语言编程,提出了现代计算机的逻辑结构)但是未制造成功,被公认为"计算机之父",巴贝奇写出了世界上第一部关于计算机程序的专著(现代程序控制计算机的雏形)。
计算机器时期到现代计算机时期:爱达基于巴贝奇著作《分析机概论》,添加了许多注记(注解),详细说明了用机器进行伯努利数运算的方式(代码),这被认为是世界上第一个计算机程序,因此,爱达被认为是世界上第一位程序设计师(女)。
计算机器时期后期:布尔建立了完整的二进制数计算理论体系(所有信息都可用符号编码而最简单的编码是采用二进制0|1),用二进制语言描写和处理各种逻辑命题。
现代计算机时期:现代计算机是指电子技术代替机械或机电技术的计算机。
现代计算机时期:图灵是计算机科学理论的创始人,冯*诺依曼是计算机工程技术的先驱人物。
现代计算机时期:图灵奖授予对计算机事业作出重要贡献的个人》大于》冯*诺依曼奖表彰具有在计算机科学与技术上具有杰出成就的科学家。
图灵机:一种理想的通用计算机,非具体计算机是一种思维模型,可以用来计算所有能想象到的可计算函数,图灵测试:如果一台机器对于质问的响应与人类作出的响应完全无法区别,那么这台机器就具有智能。(奠定了人工智能的理论基础)
冯*诺依曼提出了计算机的五大结构(输入设备,存储器,输出设备,控制器,运算器)
微型计算机时期:1975年推出的Altair8800(牛郎星)是一台现代意义上的量产化通用型微机。
微型计算机诞生的标志是1971年微处理器(CPU)的出现,它的主要结构是运算器及控制器,使计算机开始进入人类社会各个领域。
乔布斯登场,苹果微机取得了巨大成功。
基于开放式系统设计思想,为兼容(组装)机的发展开辟了巨大空间(不同厂家都有公共设计标准和思想)。(每当英特尔公司推出新型CPU产品时,马上会有新型PC推出)
计算机的发展主要按照构成计算机的电子元器件来划分,共分为四个阶段,即电子管阶段、晶体管阶段、集成电路阶段、大规模和超大规模集成电路阶段(现在),同时出现了操作系统,编译系统,高级程序设计语言,数据库等系统软件。
IBM ,微软, intel三者并存时的关系是:微软, intel依靠IBM生存,没有IBM就没有现在的微软和intel;微软,
intel也是为IBM服务的。微软是给IBM装系统的,intel为IBM造CPU;ibm是微软和intel发展的基础
IBM (IT公司-国际商业机器公司)
IBM兼容机
90%以上的超级计算机采用集群结构,其他超级计算机大多采用MPP(大规模并行处理)等结构。
集群系统中单个计算机(服务器)通常称为计算结点,这些计算结点一般通过局域网相互连接,但也有其他互连方式。
- 基于安卓智能操作系统的第三方智能操作系统(基于Linux开发):因为谷歌已经开放安卓的源代码,所以中国和亚洲部分手机生产商研发推出了在原安卓的系统上,进行二次研发,以自己的品牌推出的操作系统,其中来源于中国手机生产商操作系统最为广泛,例如Flyme、IUNI
OS、MIUI、乐蛙、点心OS、腾讯tita、百度云OS、乐OS、CyanogenMod、JOYOS、Emotion UI、Sense、LG Optimus、魔趣、OMS、百度云·易、Blur、EMUI、阿里云OS等。
应用软件,操作系统,CPU的关系
智能手机
智能手机的发展
世界上第一款智能手机是IBM公司1993年推出的Simon(西蒙),它也是世界上第一款使用触摸屏的智能手机,使用Zaurus操作系统,只有一款名为《DispatchIt》第三方应用软件。它为以后的智能手机处理器奠定了基础,有着里程碑的意义。
智能手机的功能
智能手机的操作系统
智能手机的基本部件
智能手机的传感器
距离感应器,能够通过红外光来判断物体的位置。如接通电话,靠近耳朵后,自动关闭屏幕来节省手机电力。
智能手机存在的问题
大部分智能手机采用开放式操作系统(安卓),第三方服务商提供程序,因此为非法程序的产生和发展提供了可乘之机。
修改前:半导体芯片上集成的晶体管和电阻数量将每年增加一倍。(高登*摩尔)
修改后:半导体芯片上集成的晶体管数目18个月增加一倍。(大卫 .豪斯)
摩尔定律不仅适用于存储器芯片的描述,也精确说明了CPU的处理能力和硬盘存储容量的发展。
计算机硬件性能不断提高,而价格反而不断降低 ,平均每年可降低30%左右。
命令行操作界面即控制台,Linux常用。
图形用户界面,Window
命令行界面
性能指标:主要取决于速度(CPU)和容量(运行内存);
例如:
计算机能不能播放高清视频是有没有这项功能的问题,但是高清视频画面质量如何是性能问题:因为高清视频数据量巨大,需要提前读入到运行内存中然后由CPU快速处理数据,低速系统将导致严重的动画,卡顿效果。
(CPU能不能处理高清视频数据和处理数据的速度)
可靠性指标:耐久度,工艺质量,产品材料质量等等
兼容性指标:计算机硬件和软件产品都遵循“向下兼容”的设计思想,新兼容旧。
软件兼容性:软件运行在某一个操作系统下时,可以正常运行而不发生错误,若兼容性不好则可以通过软件修正包或产品升级来解决兼容性问题。
硬件兼容性:不同硬件在同一操作系统下运行性能的好坏,若兼容性不好则可以通过驱动程序或补丁程序来解决兼容性问题。
分布式计算
分布式存储
分布式:大问题拆分为小问题,分开处理小问题。
物联网与嵌入式之间的关系
物联网是新一代信息技术的重要组成部分,是互联网与嵌入式系统发展到高级阶段的融合。
例如:智能手表,智能腕带等等(联系上方计算机类型中的嵌入式计算机)
云计算
云计算
因此,云计算的一个核心理念就是通过不断提高“云”的处理能力,不断减少用户终端的处理负担,最终使其简化成一个单纯的输入输出设备,并能按需享受“云”强大的计算处理能力。
意味着计算能力可以作为一种商品通过因特网流通。
云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。
现阶段所说的云服务已经不单单是一种分布式计算,而是分布式计算、效用计算、负载均衡、并行计算、网络存储、热备份冗杂和虚拟化等计算机技术混合演进并跃升的结果。
大数据
大数据
大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。换而言之,如果把大数据比作一种产业,那么这种产业实现盈利的关键,在于提高对数据的“加工能力”,通过“加工”实现数据的“增值”。
大数据主要处理流程:数据采集(物联网等),数据导入和预处理(数据筛选和导入),数据统计和分析(数据宏观整理),数据挖掘(数据分析,云计算等)。
数据挖掘:大数据最重要的工作是数据分析,只有通过分析才能获取有价值信息,大数据分析最基本的要求是可视化分析,数据挖掘主要是在大数据基础上进行各种算法的计算,从而起到预测效果(各种推荐等等)。
注意:R语言(开源:可以通过用户编写的程序包增强)是大数据开发的热门语言,R语言是一套完整的数据处理(数据挖掘)和统计制图(可视化)软件。
志愿计算
志愿计算是通过互联网让全球的普通大众志愿提供空闲的PC时间,参与科学计算或数据分析的一种计算方式。这种方式为解决基础科学运算规模较大、计算资源需求较多的难题提供了一种行之有效的解决途径。对于科学家而言,志愿计算意味着近乎免费且无限的计算资源;而就志愿者而言,他们可以得到一个了解科学、参与科学的机会,以促进公众对科学的理解。
志愿计算是一种分布式计算类似云计算(分布式计算的一种)。
用户提供算力,得到知识扩展权利
比特币挖矿也是通过用户提供算力进行分配。(若用户提供的算力大于50%则就可以操纵造假)
编程语言
语言越低级越偏向硬件,因为某些硬件没有对应适配的操作系统或高级编译器,需要低级语言进行开发调试甚至直接面向硬件芯片指令集编程。
低级语言虽然编程复杂但是运行快。
机器语言:二进制代码表示的指令合集,计算机唯一能直接识别和执行的语言。
汇编语言:将机器语言的二进制代码指令用简单符号(助记符)表示的一种语言。因此机器语言和汇编语言本质相同,都可以直接对计算机硬件 设备进行操作(运行),导致汇编语言编程与计算机硬件结构主要是CPU有关(寄存器位数大小名称数量等等),不同系列CPU(ARM,INTEL)的机器指令不同,因此它们的汇编语言也不同。
汇编语言:编译为目标程序,连接程序将目标程序与函数库等连接,生成完整机器语言。
高级语言是基于汇编,机器语言的基础上将汇编进一步合并形成更简单的助记符,简化程序指令。增强了可读性,但是执行速度变慢了(因为高级程序语言都需要翻译成机器指令才可以执行)。
高级程序语言不再过于依赖计算机硬件设备,因为高级程序语言在不同平台上可以编译成不同的机器语言,而不是直接运行(先编译再运行)。
java语法
因为高级语言都要最终翻译为机器指令才可以执行,而机器指令根据CPU是唯一确定的,所以高级语言之间可以通过机器指令集为模板进行互转。
发展历程
最早的实用高级语言是C语言。
因此基于操作系统的底层设施基本是由C写的,因为操作系统最根本都是基于C的,由C写的底层设施调用操作系统接口API时会更加快捷,方便。
并且Java,Python等等也是基于C进行封装开发的,将C调用系统接口实现的功能进行了封装,越来越完善最后出现了新的高级语言。
实际上Java,Python主要封装了C语言关于商业软件开发的固定系统调用流程,对于底层设施的开发还是需要C语言的创新性调用系统底层接口实现创造开发。
注意:
- JAVA语言跨平台基本原理:不将源程序(.java)直接编译成机器语言,因为这样就与平台相关了,而是将源程序编译为中间字节码文件(.class);然后再由不同平台的解释器程序(java虚拟机)对字节码进行二次翻译,将字节码解释成具体平台上的机器指令,然后执行这些机器指令。
针对不同的手机系统,各个手机系统开发公司都开发有针对自己系统的应用软件开发工具,我们利用他们的开发工具,可以轻松的搭建出开发环境,通过学习相应SDK的开发文档,进行各种APP的开发。
注意:上述语言是软件开发所用语言并非开发系统本身所用语言。
一些著名的软件都用什么语言编写的?
设计依赖操作系统调用(内存,CPU,GPU等硬件)的软件,C++无疑是最好的选择。
例如:数据库管理系统(Oracle,Mysql,SQLserver)都是C++写的
软件是编译后的二进制机器码(java开发的软件编译是class字节码),它与运行平台有关。
综上所述:若上述问题可以解决(类似虚拟机解决硬件问题)则便可以实现应用程序兼容(鸿蒙系统特制jdk兼容安卓APP)。
计算思维的本质是抽象和自动化,计算的根本问题是什么能被有效地自动进行。
计算思维的最根本问题:什么是可计算的?
例如:数学建模(现实问题-》数学问题-》代数问题-》方程式)
发现问题,仔细分析掌握事情的本质规律,发现个性中的共性,以此为基础将问题模式化,计算化制定具有普适性的解决方案(可由计算机实现此方案)。
正如:做编程题时,并非仅仅解决题干要求的输入输出,而是解决题干中隐含的一类问题的解决方案(通解)。
于是:打表(列举问题所有可能情况),贪心(根据问题本质找到最优解),必胜策略(奇偶性)等等
现实问题–》问题本质/规律–》可计算,可编程–》转化为计算机问题(象棋小游戏的开发原理)
囚徒困境:各自具有多个选择,但是各自的最佳选择并非团体的最佳选择(目前破局办法:一报还一报)。
总结:哈工大研发的微软拼音输入法也是基于三元统计语言模型。据调查,目前市场上的语音听写系统和拼音输入法都采用三元模型实现。
由下图可知三元模型将Wi前面全部词划分为<=三组然后进行整体概率推测,比较得到最优解,从而说明打字时输入越多正确拼音组合,结果越正确,输入对子词语正确率高。
因为匹配数据更多,更精准。
P=P(w1)*P(w1|w2)*P(w3|w1w2)…P(wn|w1w2w3…)
可以看出实际上词Wn的出现取决于它前面的所有词(动态规划思想起始N=2逐步累加,然后将前面全部词划分为各种组合<=N-1组),然后根据每种组合的概率值进行比较,选择最优解。
动态规划思路解决问题:先得到开始的最优解P(w1|w2),再根据最优解递推得到最终的最优解P(wn|w1w2w3…)。
信息搜索技巧
网页搜索原理:
前提:CPU只能识别处理二进制,因此无论什么信息最终若想用电脑处理则需要转化为二进制形式。
硬盘中存储的信息也都为二进制文件(电脑中所有信息都是二进制存储的)。
所以信息需要编码后才可存储到计算机。
编码标准则是信息编码的编码参照(Unicode字符集的UTF编码,unicode范围为00FFFF-10FFFF两个字节):规定好某个码位对应某种01
二进制排列顺序。
Unicode 是「字符集」(最终CPU认可的字符编码集)
UTF-8 是「编码规则」(数据传输和存储的字符编码形式)
其中:
字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)
UTF-8是对Unicode进一步编码,内容不变,形式改变
例如:8被编码为011,同样遇见011解码为8
基础拓展
一听就能懂字符集、ASCII、GBK、Unicode、UTF-8、字符编码、解码、乱码问题的讲解
乱码的原因就是编码与解码的方式不一致导致的。
编码和解码方式不一致时大多数情况只会出现中文乱码,因为基本所有编码方式都兼容ASCALL编码。
解决办法:全部改为UTF-8(目前最好用的编码解码方式)
ASCII码表:每个字符占用一个字节,最高位为零,采用剩余七位二进制数对一个字符进行编码,共计可以表示128(0~127)个字符。
因为汉字体系庞大且每个汉字字符都具有独立性,所以需要用两个字节表示一个汉字(xy坐标形式确定汉字二进制编码)。
GB 2312-80标准规定:一个汉字用两个字节表示,每个字节只使用低七位,最高位为0。
编码和解码方式不一致时大多数情况只会出现中文乱码,因为基本所有编码方式都兼容ASCLL码表。
Unicode字符集和编码方式就类比身份证号和姓名。
身份证号是公认可识别的唯一标识,而姓名可以灵活改变只需要和身份证号对应就行。
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode给每个字符提供了一个唯一的数字,不论是什么平台、不论是什么程序、不论是什么语言。Unicode是为了解决传统字符编码方案的局限而产生的,为每种语言中的每个字符都设定了统一唯一的二进制编码,以实现跨语言、跨平台进行文本转换、处理的要求。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
汉语:猪和英语:pig都指代同一物质
unicode编码
字符编码(ASCII,Unicode和UTF-8) 和 大小端
UTF-8不存在大小端问题
Unicode字符集兼容ASCLL字符集
UCS-2:代码点长度固定为16位,每个字符都采用两个字节编码。英文符号在ASCLL码前面加上一个代码点为0的字节占位。
优点:
UTF-8:0-127之间的码字都是用一个字节存储,超过128的码字使用2-4个字节存储。也就是说,UTF-8编码长度是可变的。
优点:
类UNIX系统普遍采用UTF-8字符集,HTML和大多数浏览器也支持UTF-8;而Windows和Java则支持UCS-2编码。
Unicode 是「字符集」(最终CPU认可的字符编码集)
UTF-8 是「编码规则」(数据传输和存储的字符编码形式)
其中:
字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)
广义的 Unicode 是一个标准,定义了一个字符集以及一系列的编码规则,即 Unicode 字符集和
UTF-8、UTF-16、UTF-32 等等编码……Unicode 字符集为每一个字符分配一个码位,例如「知」的码位是 30693,记作 U+77E5(30693 的十六进制为
0x77E5)。UTF-8 顾名思义,是一套以 8 位为一个编码单位的可变长编码。会将一个码位编码为 1 到 4 个字节:
U+ 0000 ~ U+ 007F: 0XXXXXXX
U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX
U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX
U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX
根据上表中的编码规则,之前的「知」字的码位 U+77E5 属于第三行的范围:
7 7 E 5
0111 0111 1110 0101 二进制的 77E5
0111 011111 100101 二进制的 77E5
1110XXXX 10XXXXXX 10XXXXXX 模版(上表第三行)
11100111 10011111 10100101 代入模版
E 7 9 F A 5
这就是将 U+77E5 按照 UTF-8 编码为字节序列 E79FA5 的过程。反之亦然。
字形编码:字符编码主要解决了字符信息的存储,传输,计算,处理等问题,而字符信息在显示和打印输出时,需要另外对字形编码。
前提:数值和字符都是转化化成二进制数来存储和处理的。同样声音,图形,视频等信息也要转化成二进制数后计算机才能存储和处理。
对着话筒讲话时,话筒根据它周围空气压力的不同变化,输出连续变化的电压值,这种变化的电压值是对讲话声音的模拟,称为模拟音频。
模拟音频信号通过声卡转化为数字音频信号,同理数字音频信号也通过声卡转化为模拟音频信号。
模拟音频数字化(二进制化)之后计算机才能存储和处理声音信号。
信号的数字化就是将连续变化的模拟信号转换成离散的数字信号,一般需要完成采样、量化和编码三个步骤 。
采样——是指用每隔一定时间间隔的信号样本值序列,代替原来在时间上连续的信号,也就是在时间上将模拟信号离散化 ,单位时间内采样次数越多,数字信号越接近原声。
量化——是用有限数量的近似原来连续变化的幅度值,把模拟信号的连续幅度变为数量有限、有一定间隔的离散值 目前声卡大多为24位或32位量化精度。
编码——则是按照一定的规律,把量化后的离散值用二进制数码表示,这项工作由声卡和音频处理软件共同完成(产生了操作空间,可以借助声卡和音频处理软件进行对应音频音调的优化和调整)。
像素
像素是指由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。
二值图编码(黑1白0):根据网格化图形(像素)采样,量化。
灰度图像编码:每个像素点按照亮度等级进行量化,一般亮度分为0-255个等级(精度)。
彩色图像编码:显示器上的任何色彩都可以用红绿蓝三个基色按照不同比例混合得到。因此,图像中每个像素点可以用三个字节进行编码且亮度范围为0-255(二的八次方个取值)。
点阵图像由多个像素点组成,二值图,灰度图和彩色图都是点阵图像(也称位图)。
分辨率决定了位图图像细节的精细程度。
通常情况下,图像的分辨率越高,所包含的像素就越多。
缺点:
缺点:
若是待压缩文件夹中文件过多或者数据过大,压缩过程就很慢。
压缩文件需要先扫描全部待压缩的文件和数据到内存,得到待压缩数据然后才能压缩编码
压缩时:文件过多就会导致需要由压缩软件一个一个读入内存解析数据再压缩,数据过大自然需要压缩编码的时间也多。
无损压缩基本原理:相同的信息只需要保存一次
代表:哈夫曼编码,字典压缩编码
多用于数据压缩保证可以完全恢复原始数据,而不引起任何数据失真。
有损压缩的算法思想:通过有意丢弃一些对视听效果相对不太重要的细节数据进行信息压缩。
图像,视频,音频数据就可以采取有损压缩,因为其中包含的数据往往多于人们的视觉系统和听觉系统所能接受的信息,最终还原效果影响不大。
冯*诺依曼提出了计算机结构五大部分:输入设备,输出设备,存储器,控制器,运算器。
冯*诺依曼提出了现代计算机“存储程序”的设计原则,即将计算机指令进行编码后,存储在计算机存储器中,并顺序地执行程序代码,以控制计算机运行。
存储程序重要性:有了存储能力就可以在计算过程中存储很多中间结果,这样就可以实现更复杂的计算。
冯诺依曼将程序与数据同等看待,程序像数据一样进行编码,然后与数据一起存放在存储器中,这样计算机就可以通过调用存储器中的程序对数据进行操作。
存储程序反映了计算机的本质,即由硬件化控制转向指令化(二进制编码指令控制)早期计算机由硬件控制器控制整个系统,存储程序的设计思想打破了这个设计原则,导致了目前计算机由操作系统程序进行控制的设计方案,没有安装软件的计算机称为裸机,连启动都不能进行。
存储程序的设计思想导致了硬件与软件的分离,即硬件设计与程序设计分开进行,这种专业分工直接催生了程序员这个职业。
由程序控制(操作系统)计算机是存储程序设计思想的必然结果,这也是巴贝奇分析机设计的天才思想。
目前最流行的分布式计算系统是基于计算机集群的Hadoop分布式计算平台和基于网格计算的BOINC(伯克利开放式网络)计算平台,他们都可以实现高速分布式计算,但是实现技术完全不同,Hadoop主要采用大型数据中心的计算机集群实现计算,而BOINC则利用Internet中普通用户的计算机实行计算。Hadoop的数据传输主要利用高速局域网,而BOINC的数据传输则利用Internet。
Hadoop是开源平台(早期由谷歌开发,目前移交到Apache基金会管理),因此它的开发成本低。Hadoop带有用Java语言编写的程序框架,运行在Linux平台上非常理想。Hadoop应用程序也可以用其他语言编写,如C++,PHP,Python等等。
国内华为,淘宝,百度,腾讯等公司都采用Hadoop。
BOINC(伯克利开放式网络计算平台):目前世界上最大的分布式计算平台之一。
这里的开放有多层含义,一是BOINC客户端软件源代码是开放的,是对于参与的用户做出的保证(不会侵犯隐私等等),二是参与计算的计算机是开放的,他们来自世界各地,人们可以自由参加或退出,三是参与计算的科研项目是开放的,计算结果必须向全球免费公开。
志愿计算运行在主流的志愿计算平台BOINC(伯克利开放式网络计算平台)的世界各地的志愿计算项目已超过100个。
BOINC由客户端软件和项目服务器两部分组成,安装了BOINC客户端软件的计算机,在闲置时会使用计算机的CPU或GPU进行运算,即使计算机正在使用,BOINC也会利用空闲的CPU周期进行计算。
计算机工作原理是将现实世界中各种信息转换成为计算机能够理解的二进制代码(信息编码),保存在计算机存储器中(数据存储),在程序控制下由运算器对数据进行处理(数据计算),在数据存储和计算过程中,需要通过线路将数据从一个部件传输到另一个部件(数据传输),数据处理完成后,再将数据转化成人类能够理解的信息形式(数据解码)。在以上工作过程中,信息如何编码和解码,数据存储在什么位置,数据如何进行计算等,都由计算机能够识别的机器指令(指令系统)控制和管理,由以上讨论可以看出,计算机本质上是一台由程序控制的二进制符号处理机器。
若想用计算机处理数据都要先将数据加载到内存中再进行CPU数据处理,因此远程网络资源必然要先加载到本地内存中再进行处理。
而本地访问网络资源的方式关闭后,内存中的远程网络资源是否清除则是缓存的问题了。
计算机领域将数据传输过程称为通信,数据传输包括:计算机内部数据传输,如CPU与内存之间数据传输,计算机与外部设备之间的数据传输,如计算机与显示器的数据传输,计算机与计算机之间的数据传输,如两台计算机之间的QQ聊天(计算机网络),数据传输实现技术各不相同,如CPU与内存之间采用并行传输,而计算机与外设之间采用串行传输,CPU与内存之间采用内存地址进行寻址,而计算机与计算机之间采用IP地址进行寻址。
信号是数据(用户信息和控制信息)在传输过程中的电磁波和光波的物理表现形式。信号的形式有数字信号和模拟信号。模拟信号是连续变化的电磁波或者光波;数字信号是电压或光波脉冲序列。
结论:
信号传输的内容是二进制串,通过电磁波或光波(模拟信号) 还有 电压或光波脉冲(数字信号) 的两种不同规格的变化进行01传输。
结合上文讲的信息编码(多方或者双方需采用统一编码方式(例:utf-8)就像是计算机网络中的协议),从而实现信息数据的传输和识别。
无线网络的物理数据传递方式是电磁波或者光波(模拟信号),光纤是电压转变为光波脉冲序列传递信息—光信号,网线拨号上网是电压传递信息,电脑内部信息是电压传递。(数字信号)
WiFi是无线电波–电磁波
网线是基于电压差分来识别01010的。属于电,但没有利用磁场。
计网常识
网速数据:上传和下载的速率
实际上用户网上冲浪的时候也都是基于上传(发评论,登录等等)和下载(网络资源先下载到内存再显示)
若想用计算机处理数据都要先将数据加载到本地内存中再进行CPU处理,
因此上网冲浪时远程网络资源必然要先加载到本地内存(或者内存-下载->磁盘-读取->内存)中再进行CPU处理。最后显卡(CPU)实现网络资源显示
而本地访问网络资源的方式关闭后,内存中的远程网络资源是否清除则是缓存的问题了。
例如:本地上网冲浪时,所有的可视化的娱乐页面等等信息都是远程运行商先将数据发送到本地内存中(此操作也是经过CPU处理运行的)然后CPU处理后才会显示,运行。
上网看视频时也是需要先通过CPU处理将网络视频资源加载到本地内存,显卡处理并播放(于是就出现了很多插件将加载到本地内存的付费视频下载到本地磁盘)
视频—》内存–插件—》磁盘
并且本地http请求也都是需要加载到内存后经过CPU处理后才会网络发送等等。
手机流量就是网络资源下载到内存的数据量和内存上传的资源数据量(操作基于CPU)
上网的过程也就是内存中资源下载(浏览网页)和上传(登录注册)的过程
无线网络的物理数据传递方式是电磁波或者光波(模拟信号),光纤是电压转变为光波脉冲序列传递信息—光信号,网线拨号上网是电压传递信息,电脑内部信息是电压差传递(数字信号)。
WiFi是无线电波–电磁波
网线是基于电压差分来识别01010的。属于电,但没有利用磁场。
网卡将电脑的数据包转化为电信号通过网线发送出去。
生活中装网线以及电话线的属于弱电箱,因为网线是通过电压差传信号,但是电压弱。
以前的网线就是电话线
弱电-百度百科
据我所知,我的上网浏览记录联网商都会知道例如联通,是不是可以说我如果访问外网,http请求会先经过联网商的总服务器和基点等判断请求是否合法,然后再建立我和运营商的数据连接和发送。
如果是VPN的话,可能就是需求经过软件的封装加密套上对应国外服务器合法IP的壳子,然后转发到国外服务器,通过国外服务器拆包得到真实请求进行访问处理,然后传回国外服务器最后到客户端。
所谓VPN的超级会员和普通会员的区别也就是访问同一地区国外服务器的路径和服务器等等的不同(人少快人多慢,服务器质量高也快)。
后期完善一下具体路由如何处理需求以及需求经过的处理路径。
最终网络信息的传输和下载还是走的路由器的公网网络
IPV4过渡技术:私网地址
192.168.x.x都是私网地址:假IP
基于私网IP段的DHCP协议的分配
公网唯一识别IP也就是本地电脑的通网IP,于是乎若是使用电脑浏览非法网站就可以通过IP定位到电脑。
网线就是电话线并且电话号码和公网IP都是唯一的类比记忆
手机连接wifi后还可以再开热点让别的手机连接,不过最终都是通过wifi进行信息查询
基站传基站,大网包小网,最终解析IP,选择大网,继续传小网,基站传基站,定位运营商
计网入门
TCP/IP
开发过程中,前后端属于应用层,信息交互解析基于http协议。
前后端是基于http协议解析信息而body中信息类型则是json字符串类型
前后端将json字符串类型转化为json对象才能进行处理。
前端对应最终post请求使用http协议中的body存储大数据(json字符串)与后端交互。
镜像:源文件的备份(多经过压缩处理)
镜像
因此基于操作系统的底层设施基本是由C写的,因为操作系统最根本都是基于C的,由C写的底层设施调用操作系统接口API时会更加快捷,方便。
并且Java,Python等等也是基于C进行封装开发的,将C调用系统接口实现的功能进行了封装,越来越完善最后出现了新的高级语言。
实际上Java,Python主要封装了C语言关于商业软件开发的固定系统调用流程,对于底层设施的开发还是需要C语言的创新性调用系统底层接口实现创造开发。
你在电脑中能看到和操作的所有内容都需要先加载到内存里然后才能被GPU/CPU等等处理显示/运行出来,否则在外存里那就是二进制码。
操作系统需要先加载到内存中再通过CPU交互计算处理才能运行,实现功能。
计算机所有操作和软件运行都需要先加载到内存才行。
而操作系统最主要的任务就是内存管理。
由此可得计算机所有操作和软件运行都会占内存和CPU
因为大多数情况下CPU只能和内存中程序进行数据计算交互,实现程序功能,所以计算机所有操作,软件和数据都需要先加载到内存,然后内存和CPU交互计算处理后才能运行实现功能(也就是说计算机运行的所有操作和功能都要占内存)。
病毒木马程序也是如此需要先加载到内存再由CPU处理运行,若想终止病毒破坏第一步都是打开任务管理器,查看占用CPU和内存最高的非法程序(大量接收远程数据包),关闭。
生活场景:文件的在线预览,便是通过网络加载到内存中然后进行浏览,
当然下载也是先加载到内存再下载到磁盘,再从磁盘读取到内存显示。(若网速够快自然是在线预览更快,若网速慢则为了数据准确不卡,最好先下载再看)
服务器也是需要运行内存中对应功能的驱动程序才能起作用,通过所运行的程序处理事务实现功能
同时程序也需要运行在服务器内存中经过CPU计算处理后才能起作用。
应用程序想要使用的所有硬件资源(CPU,内存)都需要通过操作系统的协调配置(应用程序调用操作系统提供的底层接口传递应用程序的硬件需求,然后操作系统进行对应硬件资源的协调配置)。
不同操作系统的应用软件互不兼容除非应用程序调用的那些操作系统的底层接口一样
内存中的数据,一旦断电会全部丢失(写了一半的文档)
写入磁盘的所有数据都是二进制形式。
数据恢复原理:当磁盘中某个文件被删除时,其实只是删除的文件目录,但是该文件数据01并不会被清空(器件状态保留),不过该文件所占位置被声明为可使用可能会被新文件数据覆盖,于是若被删除文件数据未被覆盖就有数据恢复的可能。
CPU只能识别处理二进制,因此无论什么信息最终若想用电脑处理则需要转化为二进制形式。
硬盘中存储的信息程序也都为二进制文件(电脑中所有信息都是二进制存储的)。
计算机存储的文件全是编码(操作系统的编码方式)后的二进制文件
计算机所有操作,软件和数据都需要先加载到内存,然后内存和CPU交互计算处理后才能运行实现功能(也就是说计算机运行的所有操作和功能都要占内存和占CPU)
因为大多数情况下CPU只能和内存中程序进行数据计算交互,实现程序功能。
生活中基本除去电路断开进行控制开关的电器(手电,灯泡),那些多功能电器都会用到类似CPU的芯片(电路板)进行计算控制实现功能。
例如:小时候拆过的机器人玩具就是电路板控制,机器人的很多固定功能都焊死在电路板上,当然CPU也是将指令集焊死。
手机,电脑耗电器件有很多目前先介绍CPU和内存条耗电
因此若是长时间待机内存被覆盖过一次
那么无论开多少后台程序内存卡耗电量不会变化太大,因为已经到最大了
不过后台运行程序的多少决定CPU的耗电量,若后台程序仅存在内存中不运行则CPU就不会耗电。
CPU才是手机耗电大头。
因为程序运行就需要CPU计算处理因此CPU会耗电。
电脑上任何硬件包括鼠标,键盘不能用了,就两个原因,硬件坏了或者驱动程序有问题。
参考用书:
书的内容很好,知其然还可知其所以然,逻辑清晰,这是其相对于应试书籍的最大优点。
大四考完研了,难得轻松下来,于是完善一下大学期间一直的短板(基础知识),书本大约看了3/4,剩下一些408内容暂时未详细阅读,等到系统学一下408内容,再将剩下1/4作为知识拓展看一遍并补充笔记。