计算机导论笔记

计算机导论

计算机历史

计算机的发展:计算工具(算盘)-》计算机器(加减乘除计算器)-》现代计算机-》微型计算机(微处理器的诞生)

现代计算机三个基本原则:

  • 二进制方式实现数字运算和逻辑运算,以保证运算精确度。
  • 利用电子技术实现控制和运算,以保证运算速度
  • 采用计算功能与存储功能分离结构,以简化计算机设计

微型计算机的设计思想

  • 开放(开源)式设计思想(如开放式系统结构,开放式外设总线等)
  • 微型化设计方法(如追求产品短小轻薄)
  • OEM生产方式(如部件定制,贴牌生产等)
  • 保证易用性(如非专业人员使用)

计算机发展历史中标志性事件

计算机具体发展史

  • 计算工具时期:中国贡献:位值概念九九表后来传入高丽,日本等东方国家,后经过丝绸之路传到印度,波斯,继而流行全世界。十进制位值概念和九九表是古代中国对世界文化的一项重要贡献。

  • 计算机器时期莱布尼茨的二进制思想实现了加减乘除运算,但没有建立完整的二进制数计算理论体系。

  • 计算机器时期到现代计算机时期巴贝奇制造了差分机,设计了分析机(具有存储器概念,类似汇编语言编程,提出了现代计算机的逻辑结构)但是未制造成功,被公认为"计算机之父",巴贝奇写出了世界上第一部关于计算机程序的专著(现代程序控制计算机的雏形)。

  • 计算机器时期到现代计算机时期:爱达基于巴贝奇著作《分析机概论》,添加了许多注记(注解),详细说明了用机器进行伯努利数运算的方式(代码),这被认为是世界上第一个计算机程序,因此,爱达被认为是世界上第一位程序设计师(女)

  • 计算机器时期后期布尔建立了完整的二进制数计算理论体系(所有信息都可用符号编码而最简单的编码是采用二进制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等。
  • android是基于linux的开源操作系统。 linux是使用标准C语言开发的操作系统。
    android底层驱动以及操作系统内核使用C语言以及汇编开发。
    android操作系统本身是使用Java开发,并使用JNI调用本地的C语言库,实现操作系统底层调度。
    android应用是使用Java开发;同时也可以使用C/C++
    native开发,但是多数时候不用用到C。所以基本上就是Java为标准开发语言。
    android使用了修改过的JVM(Java虚拟机–知识拓展有相关介绍)叫做dalvik虚拟机,其本质还是Java虚拟机。
    所以对应每一个APP都会创建个dalvik虚拟机,也就是一个linux进程。
    说复杂了,其实 就是基于linux下的修改版Java虚拟机

应用软件,操作系统,CPU的关系

智能手机

智能手机
智能手机的发展
世界上第一款智能手机是IBM公司1993年推出的Simon(西蒙),它也是世界上第一款使用触摸屏的智能手机,使用Zaurus操作系统,只有一款名为《DispatchIt》第三方应用软件。它为以后的智能手机处理器奠定了基础,有着里程碑的意义。
智能手机的功能
智能手机的操作系统
智能手机的基本部件
智能手机的传感器
距离感应器,能够通过红外光来判断物体的位置。如接通电话,靠近耳朵后,自动关闭屏幕来节省手机电力。
智能手机存在的问题
大部分智能手机采用开放式操作系统(安卓),第三方服务商提供程序,因此为非法程序的产生和发展提供了可乘之机。

摩尔定律

修改前:半导体芯片上集成的晶体管和电阻数量将每年增加一倍。(高登*摩尔)
修改后:半导体芯片上集成的晶体管数目18个月增加一倍。(大卫 .豪斯)
摩尔定律不仅适用于存储器芯片的描述,也精确说明了CPU的处理能力硬盘存储容量的发展。
计算机硬件性能不断提高,而价格反而不断降低 ,平均每年可降低30%左右。

人机交互界面

命令行操作界面即控制台,Linux常用。
图形用户界面,Window
命令行界面

计算机主要技术指标

性能指标:主要取决于速度(CPU)和容量(运行内存);
例如:
计算机能不能播放高清视频是有没有这项功能的问题,但是高清视频画面质量如何是性能问题:因为高清视频数据量巨大,需要提前读入到运行内存中然后由CPU快速处理数据,低速系统将导致严重的动画,卡顿效果。
(CPU能不能处理高清视频数据和处理数据的速度)
可靠性指标:耐久度,工艺质量,产品材料质量等等
兼容性指标:计算机硬件和软件产品都遵循“向下兼容”的设计思想,新兼容旧。
软件兼容性:软件运行在某一个操作系统下时,可以正常运行而不发生错误,若兼容性不好则可以通过软件修正包或产品升级来解决兼容性问题。
硬件兼容性:不同硬件在同一操作系统下运行性能的好坏,若兼容性不好则可以通过驱动程序或补丁程序来解决兼容性问题。

计算机新技术

分布式计算
分布式存储
分布式:大问题拆分为小问题,分开处理小问题。
物联网与嵌入式之间的关系

物联网是新一代信息技术的重要组成部分,是互联网与嵌入式系统发展到高级阶段的融合。
例如:智能手表,智能腕带等等(联系上方计算机类型中的嵌入式计算机)

云计算
云计算
因此,云计算的一个核心理念就是通过不断提高“云”的处理能力,不断减少用户终端的处理负担,最终使其简化成一个单纯的输入输出设备,并能按需享受“云”强大的计算处理能力。
意味着计算能力可以作为一种商品通过因特网流通。

云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。

现阶段所说的云服务已经不单单是一种分布式计算,而是分布式计算、效用计算、负载均衡、并行计算、网络存储、热备份冗杂和虚拟化等计算机技术混合演进并跃升的结果。

大数据

大数据
大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。换而言之,如果把大数据比作一种产业,那么这种产业实现盈利的关键,在于提高对数据的“加工能力”,通过“加工”实现数据的“增值”。
大数据主要处理流程:数据采集(物联网等),数据导入和预处理(数据筛选和导入),数据统计和分析(数据宏观整理),数据挖掘(数据分析,云计算等)。
数据挖掘:大数据最重要的工作是数据分析,只有通过分析才能获取有价值信息,大数据分析最基本的要求是可视化分析,数据挖掘主要是在大数据基础上进行各种算法的计算,从而起到预测效果(各种推荐等等)。
注意:R语言(开源:可以通过用户编写的程序包增强)是大数据开发的热门语言,R语言是一套完整的数据处理(数据挖掘)和统计制图(可视化)软件。

志愿者计算项目

志愿计算

志愿计算是通过互联网让全球的普通大众志愿提供空闲的PC时间,参与科学计算或数据分析的一种计算方式。这种方式为解决基础科学运算规模较大、计算资源需求较多的难题提供了一种行之有效的解决途径。对于科学家而言,志愿计算意味着近乎免费且无限的计算资源;而就志愿者而言,他们可以得到一个了解科学、参与科学的机会,以促进公众对科学的理解。

志愿计算是一种分布式计算类似云计算(分布式计算的一种)。
用户提供算力,得到知识扩展权利
比特币挖矿也是通过用户提供算力进行分配。(若用户提供的算力大于50%则就可以操纵造假)

编程语言

编程语言

低级程序语言时期

语言越低级越偏向硬件,因为某些硬件没有对应适配的操作系统或高级编译器,需要低级语言进行开发调试甚至直接面向硬件芯片指令集编程。
低级语言虽然编程复杂但是运行快。
机器语言:二进制代码表示的指令合集,计算机唯一能直接识别和执行的语言。
汇编语言:将机器语言的二进制代码指令用简单符号(助记符)表示的一种语言。因此机器语言和汇编语言本质相同,都可以直接对计算机硬件 设备进行操作(运行),导致汇编语言编程与计算机硬件结构主要是CPU有关(寄存器位数大小名称数量等等),不同系列CPU(ARM,INTEL)的机器指令不同,因此它们的汇编语言也不同。
汇编语言:编译为目标程序,连接程序将目标程序与函数库等连接,生成完整机器语言。

高级程序语言时期(万物基于C)

高级语言是基于汇编,机器语言的基础上将汇编进一步合并形成更简单的助记符,简化程序指令。增强了可读性,但是执行速度变慢了(因为高级程序语言都需要翻译成机器指令才可以执行)。
高级程序语言不再过于依赖计算机硬件设备,因为高级程序语言在不同平台上可以编译成不同的机器语言,而不是直接运行(先编译再运行)。
java语法

因为高级语言都要最终翻译为机器指令才可以执行,而机器指令根据CPU是唯一确定的,所以高级语言之间可以通过机器指令集为模板进行互转。
发展历程
最早的实用高级语言是C语言。

  • 首先是C和UNIX的伴生出现,同一个团队开发,基于C开发的UNIX,C也是为了开发UNIX才会出现。
  • 然后类UNIX(底层接口API方法名相同,方法体不同)的LInux出现,以及种种类UNIX操作系统的应运而生。

因此基于操作系统的底层设施基本是由C写的,因为操作系统最根本都是基于C的,由C写的底层设施调用操作系统接口API时会更加快捷,方便。
并且Java,Python等等也是基于C进行封装开发的,将C调用系统接口实现的功能进行了封装,越来越完善最后出现了新的高级语言。
实际上Java,Python主要封装了C语言关于商业软件开发的固定系统调用流程,对于底层设施的开发还是需要C语言的创新性调用系统底层接口实现创造开发。

注意

  • 语言的跨平台性是编译后文件的跨平台,而不是源程序的跨平台。
  • 程序运行平台:是指程序运行时需要的各种硬件环境和操作系统环境。
  • JAVA语言跨平台基本原理:不将源程序(.java)直接编译成机器语言,因为这样就与平台相关了,而是将源程序编译为中间字节码文件(.class);然后再由不同平台的解释器程序(java虚拟机)对字节码进行二次翻译,将字节码解释成具体平台上的机器指令,然后执行这些机器指令。

在这里插入图片描述

主流公司软件开发所用语言

  1. IOS系统和Mac系统软件开发语言为Objective-C,开发者一般使用苹果公司开发的ios sdk 搭建开发环境, iOS SDK是开发iPhone和iPad应用程序过程中必不可少的软件开发包,提供了从创建程序,到编译,调试,运行,测试等一系列开发过程中所需要的工具;
  2. 安卓 Android软件开发语言为java,开发者一般是用谷歌公司开发的android sdk搭建开发环境,使用Java进行安卓应用的开发;
  3. 微软Windows系统软件开发语言是C++;
  4. 塞班symbian系统软件开发语言是C++。

针对不同的手机系统,各个手机系统开发公司都开发有针对自己系统的应用软件开发工具,我们利用他们的开发工具,可以轻松的搭建出开发环境,通过学习相应SDK的开发文档,进行各种APP的开发。
注意:上述语言是软件开发所用语言并非开发系统本身所用语言。

一些著名的软件都用什么语言编写的?
设计依赖操作系统调用(内存,CPU,GPU等硬件)的软件,C++无疑是最好的选择。
例如:数据库管理系统(Oracle,Mysql,SQLserver)都是C++写的

编程语言总结

什么是计算机语言
计算机就是一台用来计算机的机器,人让计算机干什么计算机就得干什么!
需要通过计算机的语言来控制计算机(编程语言)!
计算机语言其实和人类的语言没有本质的区别,不同点就是交流的主体不同!
计算机语言发展经历了三个阶段:
机器语言
- 机器语言通过二进制编码来编写程序
- 执行效率好,编写起来太麻烦

    符号语言(汇编)
        - 使用符号来代替机器码
        - 编写程序时,不需要使用二进制,而是直接编写符号
        - 编写完成后,需要将符号转换为机器码,然后再由计算机执行
            符号转换为机器码的过程称为汇编
        - 将机器码转换为符号的过程,称为反汇编  
        - 汇编语言一般只适用于某些硬件,兼容性比较差  

    高级语言
        - 高级语言的语法基本和现在英语语法类似,并且和硬件的关系没有那么紧密了
        - 也就是说我们通过高级语言开发程序可以在不同的硬件系统中执行
        - 并且高级语言学习起来也更加的容易,现在我们知道的语言基本都是高级语言
        - C、C++、C#、Java、JavaScript、Python 。。。

编译型语言和解释型语言
计算机只能识别二进制编码(机器码),所以任何的语言在交由计算机执行时必须要先转换为机器码,
也就是像 print(‘hello’) 必需要转换为类似 1010101 这样的机器码

根据转换时机的不同,语言分成了两大类:
    编译型语言
        - C语言
        - 编译型语言,会在代码执行前将代码编译为机器码,然后将机器码交由计算机执行
        - a(源码) --编译--> b(编译后的机器码)
        - 特点:
            执行速度特别快
            跨平台性比较差

    解释型语言 
        - Python JS Java
        - 解释型语言,不会在执行前对代码进行编译,而是在执行的同时一边执行一边编译
        - a(源码)--解释器--> 解释为机器码执行  
        - 特点:
            执行速度比较慢
            跨平台性比较好   

编译型语言(C/C++)相比解释型语言(Java/Python等)执行更快,性能更好,适合追求处理速度的功能模块,例如实时算费等。
因为执行时编译型语言的执行文件是机器码可以直接执行,解释型语言是中间码文件需要经过解释器解释为机器码再执行。
同样print(“hello world”)一条语句,编译型语言经过的步骤就多一道,性能差距从一开始就决定了。

知识拓展(Android应用)

  • Android应用程序是用Java语言编写的。编译过后的(class)字节码,以及应用程序要求的其他数据和资源文件,通过编程工具被绑定在一起,称为Android包,这是一个带.apk后缀的档案文件。这个文件也是用户下载到他们设备上的文件。所有的代码在一个单一的.apk文件中,组成一个“应用程序”。
  • 不同安卓(java语言)机(小米,华为)之间可以软件(java语言编译后的class文件)共享,其自身自带jdk(jvm虚拟机根据各厂家对原生安卓改动情况(底层接口的添加和修改)不同而不同)可再编译字节码文件适配自身平台便可以运行了,同样苹果(Object-c)机用安卓软件的原理也是安装上对应的jdk从而进行跨平台。
  • 系统运行库(功能函数:底层接口(子程序))是操作系统与应用程序沟通的桥梁。
    应用程序功能的实现需要调用操作系统的功能函数。

软件是编译后的二进制机器码(java开发的软件编译是class字节码),它与运行平台有关。

  • 综上所述:
    IOS软件是二进制机器指令(软件开发语言为Objective-C),而Android软件是中间代码.dex文件的二进制机器码(class字节码文件的优化版,软件开发语言为java),运行时IOS便可以直接运行软件对应功能的机器指令,反观Android则需要java虚拟机再编译,适配对应平台(定制安卓,CPU等)翻译为对应的机器指令再运行。
    所以安卓与苹果系统运行速度的差异,从一开始就决定了。
程序运行的硬件环境
  • 程序运行平台:是指程序运行时需要的各种硬件环境和操作系统环境。
  • 不同程序运行时,需要的硬件环境不同。例如,C#和VB等语言编写的程序,只能支持Intel和AMD系列的CPU硬件环境,因为C#是基于CISC指令集的程序语言。
    90%的智能手机(安卓系统),采用ARM(安媒)CPU,而ARM采用RISC指令集,因此,C#语言编制的程序不能在智能手机中运行。
  • 一些通用程序语言(如C/C++,Java,PHP等)编写的程序,如果需要运行在不同的硬件环境下,也需要采用不同的编译器对于源程序进行重新编译。
程序运行的操作系统环境
  • 程序的运行还需要操作系统的支持。例如,Windows下的应用程序在Linux系统中不能运行;
  • 程序开发都是在某个操作系统中进行的,程序开发时,需要调用操作系统底层接口(子程序)来实现某些功能。例如,用VC程序语言在Windows中编程时,需要调用Windows操作系统提供的各种子程序接口(如窗口,对话框,菜单,快捷方式等)。在这个环境中开发出来的程序移植到其他操作系统平台(如Mac OS,Linux等)时,其他操作系统并没有提供这些子程序接口,或者子程序接口的调用参数和格式不同,这都会导致程序不能运行。同理Java语言进行Android开发时,也是基于安卓系统各种底层接口(子程序功能),调用对话框等等
  • 系统运行库(功能函数:底层接口(子程序))是操作系统与应用程序沟通的桥梁。
    应用程序功能的实现需要调用操作系统的功能函数。

综上所述:若上述问题可以解决(类似虚拟机解决硬件问题)则便可以实现应用程序兼容(鸿蒙系统特制jdk兼容安卓APP)。
在这里插入图片描述

计算思维

计算思维的本质是抽象和自动化,计算的根本问题是什么能被有效地自动进行。
计算思维的最根本问题:什么是可计算的?
例如:数学建模(现实问题-》数学问题-》代数问题-》方程式)

发现问题,仔细分析掌握事情的本质规律,发现个性中的共性,以此为基础将问题模式化,计算化制定具有普适性的解决方案(可由计算机实现此方案)。
正如:做编程题时,并非仅仅解决题干要求的输入输出,而是解决题干中隐含的一类问题的解决方案(通解)。
于是:打表(列举问题所有可能情况),贪心(根据问题本质找到最优解),必胜策略(奇偶性)等等

现实问题–》问题本质/规律–》可计算,可编程–》转化为计算机问题(象棋小游戏的开发原理)

囚徒困境:各自具有多个选择,但是各自的最佳选择并非团体的最佳选择(目前破局办法:一报还一报)。

机器翻译–统计语言建模

  1. 词典式机器翻译模式:一一对应翻译,结果导致有些复杂习惯用语,A英语(Time flies like an arrow)->B日语(汉语含义:光阴似箭).但是翻译回来B日语->C英语(苍蝇喜欢箭),A!=C。因为过于教条化,导致词不达意。
  2. 基于语法分析的机器翻译:试图让机器理解人类语言,学习人类的语法,分析语句等等。但是几十年过去了,基于语法规则的语言识别方法几乎毫无突破。
  3. 隐含马尔科夫模型:统计分析模型,根据输入数据(语音,文字,信号),计算统计数据中概率最大的对应结果。
  4. N元统计语言模型的数学建模:基于隐含马尔可夫模型,是一种依赖上下文环境(本词与上一个词和下一个词的关系)概率分布的统计语言模型。(利用语言语序的预测性结合模型组合概率得到推荐用词和模糊语句识别)。N-gram模型是实际应用中表现最佳的语言模型。
    第N个词出现的概率依赖于它前面的N-1个词(动态规划思想处理方式实际上是前面全部的词语以N-1为划分进行分析,依次递增,划分再分析概率),这样的语言模型称为N-gram模型。
    概率值则是根据这对词在统计文本中出现了多少次,以及Wi本身在同样文本中前后相邻出现了多少次
    统计语言模型以概率分布的形式描述了任意语句(或字符串)S属于某种语言集合的可能性(概率P(S)})。
    N元统计语言模型的计算思维是:句子S翻译成句子F的概率是S中每一个词语翻译成F中对应词语概率的乘积(P=P(w1)P(w1|w2)P(w3|w1w2)…P(wn|w1w2w3…))。可以看出实际上词Wn的出现取决于它前面的所有词(动态规划思想起始N=2逐步累加,然后将前面全部词划分为各种组合<=N-1组)
    N-gram模型的优点是它包含了前 N-1
    个词提供的全部信息,这些信息对当前词的出现具有很强的约束力。缺点是当N较大时,需要相当规模的训练文本确定模型的参数。
  5. 三元统计语言模型的数学建模:目前实际使用的N-gram模型通常是N=2的二元语言模型(称为Biggram语言模型)或是N=3的三元语言模型(称为Trigram语言模型)。以三元模型为例,可以近似地认为任意词wi出现的概率只与它前面的“两个词”有关。

总结:哈工大研发的微软拼音输入法也是基于三元统计语言模型。据调查,目前市场上的语音听写系统和拼音输入法都采用三元模型实现。
由下图可知三元模型将Wi前面全部词划分为<=三组然后进行整体概率推测,比较得到最优解,从而说明打字时输入越多正确拼音组合,结果越正确,输入对子词语正确率高。
因为匹配数据更多,更精准。
P=P(w1)*P(w1|w2)*P(w3|w1w2)…P(wn|w1w2w3…)
可以看出实际上词Wn的出现取决于它前面的所有词(动态规划思想起始N=2逐步累加,然后将前面全部词划分为各种组合<=N-1组),然后根据每种组合的概率值进行比较,选择最优解。
动态规划思路解决问题:先得到开始的最优解P(w1|w2),再根据最优解递推得到最终的最优解P(wn|w1w2w3…)。
在这里插入图片描述

网页搜索----布尔检索建模

信息搜索技巧
网页搜索原理:

  1. 建立布尔查询表达式
    新冠疫情的致病原理(布尔表达式):Q=新冠疫情AND(致病OR发病OR生病);
  2. 进行布尔位运算:根据布尔查询表达式计算得到多个合适查询结果;
  3. 网页排名显示(一般广告优先级高):查询结果进行相关性排序;

信息编码

前提: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是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。

汉语:猪和英语:pig都指代同一物质
unicode编码
字符编码(ASCII,Unicode和UTF-8) 和 大小端
UTF-8不存在大小端问题
Unicode字符集兼容ASCLL字符集

  • 目前操作系统内部基本都采用Unicode字符集的UTF编码。
  • Unicode字符集:多语言软件制造商组成的统一码协会制定的一种国际通用字符编码标准。
  • Unicode字符集的目标是收录世界上所有语言的文字和符号,并对每个字符都定义一个值,这个值称为代码点。
  • X86计算机系统中数据的存储和传输通常采用“小端”字节序;而在苹果计算机中,则采用“大端”字节序。
    在这里插入图片描述
编/解码方式

UCS-2:代码点长度固定为16位,每个字符都采用两个字节编码。英文符号在ASCLL码前面加上一个代码点为0的字节占位。
优点:

  • 对于亚洲字符的存储空间需求比UTF-8编码少,因为每个字符都是两个字节;
  • 处理字符速度比UTF-8编码更快,因为编码长度是固定的;

UTF-8:0-127之间的码字都是用一个字节存储,超过128的码字使用2-4个字节存储。也就是说,UTF-8编码长度是可变的。
优点:

  • 兼容ASCII码,容易从ASCII码向UTF-8迁移;
  • 与字节顺序无关,可以在不同平台交流;
  • 类似霍/哈夫曼编码,很容易判断出一个字节及其后面的字节数。
    因为哈夫曼编码是前缀编码,可以逐字节递增匹配对应UTF-8字符编码表进而转化为Unicode代码点,而无需担心字节数量与字符对应问题。并且 常用的字符编码长度短于不常用的字符(例:真和臻)。
  • 容错能力高,任何一个字节损坏,最多只会导致一个编码码位损失,不会产生连锁错误(如GB码中错一个字节就会导致整行乱码);

类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 的过程。反之亦然。

字形编码

字形编码:字符编码主要解决了字符信息的存储,传输,计算,处理等问题,而字符信息在显示和打印输出时,需要另外对字形编码。

  1. 点阵字形编码
    左边为点阵字形,右边为字形编码
    点阵字形将每个字符分为16*16的点阵图像,然后用图像点的有无表示字形轮廓。
    缺点是不能缩放
    在这里插入图片描述
  2. 矢量字形编码
    矢量字形保存的是每一个字符的数学描述信息,如笔画的起始,终止坐标,半径,弧度等等
    Windows系统中,打印和显示字符绝大部分为矢量字形,只有很小的字符采用点阵字形。

声音数字化处理

前提:数值和字符都是转化化成二进制数来存储和处理的。同样声音,图形,视频等信息也要转化成二进制数后计算机才能存储和处理。
在这里插入图片描述
对着话筒讲话时,话筒根据它周围空气压力的不同变化,输出连续变化的电压值,这种变化的电压值是对讲话声音的模拟,称为模拟音频。
模拟音频信号通过声卡转化为数字音频信号,同理数字音频信号也通过声卡转化为模拟音频信号。
模拟音频数字化(二进制化)之后计算机才能存储和处理声音信号。

信号的数字化就是将连续变化的模拟信号转换成离散的数字信号,一般需要完成采样、量化和编码三个步骤 。
采样——是指用每隔一定时间间隔的信号样本值序列,代替原来在时间上连续的信号,也就是在时间上将模拟信号离散化 ,单位时间内采样次数越多,数字信号越接近原声。
量化——是用有限数量的近似原来连续变化的幅度值,把模拟信号的连续幅度变为数量有限、有一定间隔的离散值 目前声卡大多为24位或32位量化精度。
编码——则是按照一定的规律,把量化后的离散值用二进制数码表示,这项工作由声卡和音频处理软件共同完成(产生了操作空间,可以借助声卡和音频处理软件进行对应音频音调的优化和调整)。

图像数字化处理

像素

像素是指由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。

二值图编码(黑1白0):根据网格化图形(像素)采样,量化。
灰度图像编码:每个像素点按照亮度等级进行量化,一般亮度分为0-255个等级(精度)。
彩色图像编码:显示器上的任何色彩都可以用红绿蓝三个基色按照不同比例混合得到。因此,图像中每个像素点可以用三个字节进行编码且亮度范围为0-255(二的八次方个取值)。

点阵图像

点阵图像由多个像素点组成,二值图,灰度图和彩色图都是点阵图像(也称位图)。

分辨率决定了位图图像细节的精细程度。
通常情况下,图像的分辨率越高,所包含的像素就越多。

缺点:

  1. 缩放都会失真。
  2. 图像放大看可以看到构成整个图像的像素点。
  3. 缩小看时,是通过减少像素点来使整个图像变小的,因为分辨率不变。
矢量图形(多用于专业制图)
  • 理论上缩放都不会失真,可以无限放大。
  • 矢量图形采用特征点和计算公式对图形进行表示和存储。
  • 矢量图形只保存算法和特征点参数,输出矢量图时要经过一系列数学运算(操作复杂)。

缺点:

  1. 难以表现色彩层次丰富的逼真图像效果
  2. 设备需求高,因为需要矢量化
  3. 矢量图形目前没有统一的标准格式(对于同一弧线算法可能不同导致不同软件交换复杂)

压缩编码

在这里插入图片描述

若是待压缩文件夹中文件过多或者数据过大,压缩过程就很慢。
压缩文件需要先扫描全部待压缩的文件和数据到内存,得到待压缩数据然后才能压缩编码
压缩时:文件过多就会导致需要由压缩软件一个一个读入内存解析数据再压缩,数据过大自然需要压缩编码的时间也多。

无损压缩(压缩到原始1/4-1/2)

无损压缩基本原理:相同的信息只需要保存一次
代表:哈夫曼编码,字典压缩编码
多用于数据压缩保证可以完全恢复原始数据,而不引起任何数据失真。

有损压缩(压缩到原始1/50-1/10)

有损压缩的算法思想:通过有意丢弃一些对视听效果相对不太重要的细节数据进行信息压缩。
图像,视频,音频数据就可以采取有损压缩,因为其中包含的数据往往多于人们的视觉系统和听觉系统所能接受的信息,最终还原效果影响不大。

系统结构

  • 硬件:

冯*诺依曼提出了计算机结构五大部分:输入设备,输出设备,存储器,控制器,运算器。
在这里插入图片描述

  • 软件:

冯*诺依曼提出了现代计算机“存储程序”的设计原则,即将计算机指令进行编码后,存储在计算机存储器中,并顺序地执行程序代码,以控制计算机运行。
存储程序重要性:有了存储能力就可以在计算过程中存储很多中间结果,这样就可以实现更复杂的计算。

冯诺依曼将程序与数据同等看待,程序像数据一样进行编码,然后与数据一起存放在存储器中,这样计算机就可以通过调用存储器中的程序对数据进行操作。
存储程序反映了计算机的本质,即由硬件化控制转向指令化(二进制编码指令控制)早期计算机由硬件控制器控制整个系统,存储程序的设计思想打破了这个设计原则,导致了目前计算机由操作系统程序进行控制的设计方案,没有安装软件的计算机称为裸机,连启动都不能进行。

存储程序的设计思想导致了硬件与软件的分离,即硬件设计与程序设计分开进行,这种专业分工直接催生了程序员这个职业。
由程序控制(操作系统)计算机是存储程序设计思想的必然结果,这也是巴贝奇分析机设计的天才思想。

集群分布式计算Hadoop与网格分布式计算BOINC

目前最流行的分布式计算系统是基于计算机集群的Hadoop分布式计算平台和基于网格计算的BOINC(伯克利开放式网络)计算平台,他们都可以实现高速分布式计算,但是实现技术完全不同,Hadoop主要采用大型数据中心的计算机集群实现计算,而BOINC则利用Internet中普通用户的计算机实行计算。Hadoop的数据传输主要利用高速局域网,而BOINC的数据传输则利用Internet。
在这里插入图片描述
Hadoop是开源平台(早期由谷歌开发,目前移交到Apache基金会管理),因此它的开发成本低。Hadoop带有用Java语言编写的程序框架,运行在Linux平台上非常理想。Hadoop应用程序也可以用其他语言编写,如C++,PHP,Python等等。
国内华为,淘宝,百度,腾讯等公司都采用Hadoop。
R语言也可以进行数据挖掘,优于Mahout语言

BOINC(伯克利开放式网络计算平台):目前世界上最大的分布式计算平台之一。
这里的开放有多层含义,一是BOINC客户端软件源代码是开放的,是对于参与的用户做出的保证(不会侵犯隐私等等),二是参与计算的计算机是开放的,他们来自世界各地,人们可以自由参加或退出,三是参与计算的科研项目是开放的,计算结果必须向全球免费公开。

志愿计算运行在主流的志愿计算平台BOINC(伯克利开放式网络计算平台)的世界各地的志愿计算项目已超过100个。

BOINC由客户端软件和项目服务器两部分组成,安装了BOINC客户端软件的计算机,在闲置时会使用计算机的CPU或GPU进行运算,即使计算机正在使用,BOINC也会利用空闲的CPU周期进行计算。

计算机工作原理

计算机工作原理是将现实世界中各种信息转换成为计算机能够理解的二进制代码(信息编码),保存在计算机存储器中(数据存储),在程序控制下由运算器对数据进行处理(数据计算),在数据存储和计算过程中,需要通过线路将数据从一个部件传输到另一个部件(数据传输),数据处理完成后,再将数据转化成人类能够理解的信息形式(数据解码)。在以上工作过程中,信息如何编码和解码,数据存储在什么位置,数据如何进行计算等,都由计算机能够识别的机器指令(指令系统)控制和管理,由以上讨论可以看出,计算机本质上是一台由程序控制的二进制符号处理机器。
若想用计算机处理数据都要先将数据下载到内存中再进行CPU数据处理,因此远程网络资源必然要先下载到本地内存中再进行处理。
而本地访问网络资源的方式关闭后,内存中的远程网络资源是否清除则是缓存的问题了。

在这里插入图片描述

数据传输

计算机领域将数据传输过程称为通信,数据传输包括:计算机内部数据传输,如CPU与内存之间数据传输,计算机与外部设备之间的数据传输,如计算机与显示器的数据传输,计算机与计算机之间的数据传输,如两台计算机之间的QQ聊天(计算机网络),数据传输实现技术各不相同,如CPU与内存之间采用并行传输,而计算机与外设之间采用串行传输,CPU与内存之间采用内存地址进行寻址,而计算机与计算机之间采用IP地址进行寻址。

信号是数据(用户信息和控制信息)在传输过程中的电磁波和光波的物理表现形式。信号的形式有数字信号和模拟信号。模拟信号是连续变化的电磁波或者光波;数字信号是电压或光波脉冲序列。
结论
信号传输的内容是二进制串,通过电磁波或光波(模拟信号) 还有 电压或光波脉冲(数字信号) 的两种不同规格的变化进行01传输。
结合上文讲的信息编码(多方或者双方需采用统一编码方式(例:utf-8)就像是计算机网络中的协议),从而实现信息数据的传输和识别。

网络数据传输的物理形式

无线网络的物理数据传递方式是电磁波或者光波(模拟信号),光纤是电压转变为光波脉冲序列传递信息—光信号,网线拨号上网是电压传递信息,电脑内部信息是电压传递。(数字信号)
WiFi是无线电波–电磁波

网线是基于电压差分来识别01010的。属于电,但没有利用磁场。

养生(学习固然重要,身体更是本钱)

  • 敲代码时,挺胸抬头,双脚90度匆交叉保证全身受力。
  • 屏幕亮度越大,电磁辐射越强,显示器背面辐射最强,其次是左右两侧(喝绿茶,菊花茶等茶多酚可以吸收与抵抗放射性物质的作用),室内减少金属物品,因为金属物品会反射电磁波。
  • 长时间使用计算机时,显示器周围会形成一个静电场,将房间附近空气中悬浮的灰尘吸入静电场中。于是人在满是灰尘的空间中工作,若不注意脸部卫生,时间久了,就会产生难看的斑疹,色素沉着,严重者甚至会引起皮肤病变。
    计算机桌上摆放一盆仙人掌,因为仙人掌的针刺可以吸收灰尘。
    消除静电,保持湿度是消除静电的简单办法,湿抹布多擦擦桌子。
    通风透气
    不要熬夜

计算机网络

计网常识

快递物流==网络通信

在这里插入图片描述
在这里插入图片描述

生活场景

网速数据:上传和下载的速率
在这里插入图片描述
实际上用户网上冲浪的时候也都是基于上传(发评论,登录等等)和下载(网络资源先下载到内存再显示)

若想用计算机处理数据都要先将数据加载到本地内存中再进行CPU处理,
因此上网冲浪时远程网络资源必然要先加载到本地内存(或者内存-下载->磁盘-读取->内存)中再进行CPU处理。最后显卡(CPU)实现网络资源显示
而本地访问网络资源的方式关闭后,内存中的远程网络资源是否清除则是缓存的问题了。

例如:本地上网冲浪时,所有的可视化的娱乐页面等等信息都是远程运行商先将数据发送到本地内存中(此操作也是经过CPU处理运行的)然后CPU处理后才会显示,运行。
上网看视频时也是需要先通过CPU处理将网络视频资源加载到本地内存,显卡处理并播放(于是就出现了很多插件将加载到本地内存的付费视频下载到本地磁盘)

视频—》内存–插件—》磁盘

并且本地http请求也都是需要加载到内存后经过CPU处理后才会网络发送等等。

手机流量就是网络资源下载到内存的数据量和内存上传的资源数据量(操作基于CPU)
上网的过程也就是内存中资源下载(浏览网页)和上传(登录注册)的过程

在这里插入图片描述

网络数据传输的物理形式

无线网络的物理数据传递方式是电磁波或者光波(模拟信号),光纤是电压转变为光波脉冲序列传递信息—光信号,网线拨号上网是电压传递信息,电脑内部信息是电压差传递(数字信号)。
WiFi是无线电波–电磁波

网线是基于电压差分来识别01010的。属于电,但没有利用磁场。
网卡将电脑的数据包转化为电信号通过网线发送出去。
生活中装网线以及电话线的属于弱电箱,因为网线是通过电压差传信号,但是电压弱。
以前的网线就是电话线
弱电-百度百科
在这里插入图片描述

国外娱乐的原理(需要了解到真实上网访问过程)

据我所知,我的上网浏览记录联网商都会知道例如联通,是不是可以说我如果访问外网,http请求会先经过联网商的总服务器和基点等判断请求是否合法,然后再建立我和运营商的数据连接和发送。
如果是VPN的话,可能就是需求经过软件的封装加密套上对应国外服务器合法IP的壳子,然后转发到国外服务器,通过国外服务器拆包得到真实请求进行访问处理,然后传回国外服务器最后到客户端。

  • 国内梯子的原理也就是客户端发送http等请求(请求被加密为合法的访问包)到给国外服务器处理访问对应需求。
    国外服务器处理对应请求发送给供应商,最后所请求数据先返回国外服务器,再返回客户端。
    客户端选择的服务器其实是请求数据包封装并转发的对应国外服务器选项
    墙的原理就是客户端http需求会经过检测合法性,无法直接访问国外服务器

所谓VPN的超级会员和普通会员的区别也就是访问同一地区国外服务器的路径和服务器等等的不同(人少快人多慢,服务器质量高也快)。

在这里插入图片描述

家庭上网(私网IP)

后期完善一下具体路由如何处理需求以及需求经过的处理路径。
最终网络信息的传输和下载还是走的路由器的公网网络
IPV4过渡技术:私网地址
192.168.x.x都是私网地址:假IP
在这里插入图片描述
在这里插入图片描述
基于私网IP段的DHCP协议的分配
在这里插入图片描述

公网唯一识别IP也就是本地电脑的通网IP,于是乎若是使用电脑浏览非法网站就可以通过IP定位到电脑。
网线就是电话线并且电话号码和公网IP都是唯一的类比记忆
在这里插入图片描述
手机连接wifi后还可以再开热点让别的手机连接,不过最终都是通过wifi进行信息查询
基站传基站,大网包小网,最终解析IP,选择大网,继续传小网,基站传基站,定位运营商
在这里插入图片描述

计网图解

计网入门

计算机网络 ——网络原理之初识

计算机网络—网络原理之TCP/IP协议

整体结构

在这里插入图片描述

IP和端口号

在这里插入图片描述

协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

传输层

TCP/IP
开发过程中,前后端属于应用层,信息交互解析基于http协议。
前后端是基于http协议解析信息而body中信息类型则是json字符串类型
前后端将json字符串类型转化为json对象才能进行处理。
前端对应最终post请求使用http协议中的body存储大数据(json字符串)与后端交互。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

具体流程

在这里插入图片描述
在这里插入图片描述

操作系统

镜像:源文件的备份(多经过压缩处理)
镜像

发展历程

操作系统究竟是怎么发展而来的,你真的了解吗?【操作系统发展史】

  • 首先是C和UNIX的伴生出现,同一个团队开发,基于C开发的UNIX,C也是为了开发UNIX才会出现。
  • 然后类UNIX(底层接口API方法名相同,方法体不同)的LInux出现,以及种种操作系统的应运而生。

因此基于操作系统的底层设施基本是由C写的,因为操作系统最根本都是基于C的,由C写的底层设施调用操作系统接口API时会更加快捷,方便。
并且Java,Python等等也是基于C进行封装开发的,将C调用系统接口实现的功能进行了封装,越来越完善最后出现了新的高级语言。
实际上Java,Python主要封装了C语言关于商业软件开发的固定系统调用流程,对于底层设施的开发还是需要C语言的创新性调用系统底层接口实现创造开发。

生活场景

你在电脑中能看到和操作的所有内容都需要先加载到内存里然后才能被GPU/CPU等等处理显示/运行出来,否则在外存里那就是二进制码。

  • CPU才是运行程序/软件的真正器件,程序运行的每一步都需要CPU的交互计算
    若程序未占用CPU则必然未运行
    可由任务管理器查看应用程序运行时的占用来了解电脑硬件的工作占用。
    在这里插入图片描述

操作系统需要先加载到内存中再通过CPU交互计算处理才能运行,实现功能。
计算机所有操作和软件运行都需要先加载到内存才行。
而操作系统最主要的任务就是内存管理。
由此可得计算机所有操作和软件运行都会占内存和CPU

  • CPU才是运行程序/软件的真正器件,程序运行的每一步都需要CPU的交互计算
    若程序未占用CPU则必然未运行

因为大多数情况下CPU只能和内存中程序进行数据计算交互,实现程序功能,所以计算机所有操作,软件和数据都需要先加载到内存,然后内存和CPU交互计算处理后才能运行实现功能(也就是说计算机运行的所有操作和功能都要占内存)。
病毒木马程序也是如此需要先加载到内存再由CPU处理运行,若想终止病毒破坏第一步都是打开任务管理器,查看占用CPU和内存最高的非法程序(大量接收远程数据包),关闭。
生活场景:文件的在线预览,便是通过网络加载到内存中然后进行浏览,
当然下载也是先加载到内存再下载到磁盘,再从磁盘读取到内存显示。(若网速够快自然是在线预览更快,若网速慢则为了数据准确不卡,最好先下载再看)

服务器也是需要运行内存中对应功能的驱动程序才能起作用,通过所运行的程序处理事务实现功能
同时程序也需要运行在服务器内存中经过CPU计算处理后才能起作用。
在这里插入图片描述

应用程序想要使用的所有硬件资源(CPU,内存)都需要通过操作系统的协调配置(应用程序调用操作系统提供的底层接口传递应用程序的硬件需求,然后操作系统进行对应硬件资源的协调配置)。
不同操作系统的应用软件互不兼容除非应用程序调用的那些操作系统的底层接口一样
在这里插入图片描述

磁盘外存

内存中的数据,一旦断电会全部丢失(写了一半的文档)
写入磁盘的所有数据都是二进制形式。
数据恢复原理:当磁盘中某个文件被删除时,其实只是删除的文件目录,但是该文件数据01并不会被清空(器件状态保留),不过该文件所占位置被声明为可使用可能会被新文件数据覆盖,于是若被删除文件数据未被覆盖就有数据恢复的可能。

  • 数据恢复只能恢复近期删除的文件了,因为近期删除的文件位置被覆盖占用的概率小,除非磁盘已经满了,删除文件后立马写入了新文件。
  • 只有老早之前的被删除后然后操作系统重新规划存储空间,才会导致原先文件数据被覆盖了

计算机组成原理

CPU只能识别处理二进制,因此无论什么信息最终若想用电脑处理则需要转化为二进制形式。
硬盘中存储的信息程序也都为二进制文件(电脑中所有信息都是二进制存储的)。
计算机存储的文件全是编码(操作系统的编码方式)后的二进制文件

  • CPU才是运行程序/软件的真正器件,程序运行的每一步都需要CPU的交互计算

计算机所有操作,软件和数据都需要先加载到内存,然后内存和CPU交互计算处理后才能运行实现功能(也就是说计算机运行的所有操作和功能都要占内存和占CPU)
因为大多数情况下CPU只能和内存中程序进行数据计算交互,实现程序功能。
生活中基本除去电路断开进行控制开关的电器(手电,灯泡),那些多功能电器都会用到类似CPU的芯片(电路板)进行计算控制实现功能。
例如:小时候拆过的机器人玩具就是电路板控制,机器人的很多固定功能都焊死在电路板上,当然CPU也是将指令集焊死。
手机,电脑耗电器件有很多目前先介绍CPU和内存条耗电

  • CPU耗电是因为运行程序需要计算,可以通过清理后台程序减少CPU耗电量。
  • 内存条耗电是因为需要定时电刷新维持内存中数据。
    前提须知:每次内存电刷新最终都要刷新整个内存卡,因此冗余存储单元也会被电刷新
    若是长时间待机,则内存卡中的存储单元都被覆盖过一次则即便是清理运行内存也只是清除运行应用程序的指针(数据恢复角度),数据仍然存在—冗余数据存储单元(没有指针指向却存有数据的存储单元),所以仍会耗电维持数据,导致耗电量变大。
    偶尔重启或关机可以减少内存条耗电,因为关机后内存条数据清零(电源切断无法电刷新),再启动后原先为1需要按时充电的冗余数据存储单元(没有指针指向却存有数据的存储单元)电容就会变为零,不再需要耗电维持数据。

因此若是长时间待机内存被覆盖过一次
那么无论开多少后台程序内存卡耗电量不会变化太大,因为已经到最大了
不过后台运行程序的多少决定CPU的耗电量,若后台程序仅存在内存中不运行则CPU就不会耗电。
CPU才是手机耗电大头。
因为程序运行就需要CPU计算处理因此CPU会耗电。

计算机五大部件

在这里插入图片描述

在这里插入图片描述
电脑上任何硬件包括鼠标,键盘不能用了,就两个原因,硬件坏了或者驱动程序有问题。
在这里插入图片描述

中央处理器

在这里插入图片描述

请添加图片描述

运算器

请添加图片描述

控制器

请添加图片描述

408总结

万变不离其宗(IO操作)

计算机的任何操作:

  • input读取数据到内存
  • CPU处理
  • output结果到内存

主要是IO浪费时间多
SQL优化本质:减少IO数据量进而优化时间

b和B

字节:B=比特:8b
网络传输最小单位是比特:b,存储的最小单位是字节:B
所以网络的k=1000,存储的k=1024.

总结

参考用书:
书的内容很好,知其然还可知其所以然,逻辑清晰,这是其相对于应试书籍的最大优点。

大四考完研了,难得轻松下来,于是完善一下大学期间一直的短板(基础知识),书本大约看了3/4,剩下一些408内容暂时未详细阅读,等到系统学一下408内容,再将剩下1/4作为知识拓展看一遍并补充笔记。

  • 11
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机科学导论是计算机科学专业的入门课程,它涵盖了计算机科学及其相关领域的基本概念、基本理论和基本技术。以下是一些学习笔记,希望对您有所帮助: 1. 计算机科学的定义: 计算机科学是研究计算机及其在信息处理中的应用的学科,它涉及计算机硬件、软件、算法、数据结构、数据库、网络、人工智能等方面的知识。 2. 计算机科学的历史: 计算机科学的发展经历了多个阶段,从最初的机械计算器到现代的超级计算机,计算机科学的发展一直在推动着人类社会的进步。 3. 计算机科学的基本概念: 计算机科学的基本概念包括:二进制、位、字节、字符、编码、算法、数据结构、程序、操作系统、编译器等。 4. 计算机科学的基本理论: 计算机科学的基本理论包括:图灵机、计算复杂性理论、自动机理论、信息论等。 5. 计算机科学的基本技术: 计算机科学的基本技术包括:计算机网络、数据库、人工智能、图形学、软件工程、计算机安全等。 6. 计算机科学的研究方法: 计算机科学的研究方法包括:实验研究、理论研究、模拟研究、仿真研究等。 7. 计算机科学的应用领域: 计算机科学的应用领域包括:信息技术、通信技术、金融、医疗、教育、交通、娱乐等。 以上是一些计算机科学导论的学习笔记,希望对您有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值