第一章:计算机基础

第一节:计算机的组成

什么是计算机呢?

广义上的计算机,包含个人电脑、移动设备、服务器、嵌入式设备、自动化工业设备等;
但无论其形态如何,计算机的功能概括地讲,就是接收用户的输入(即用户意图),数据经由通过处理设备(运算、做功等)的处理,最后得到用户想要的结果,这个结果通过输出设备(显示器、生产线输出端等)反馈给用户;
【输入→处理→输出】这一过程中会用到数据的缓存和持久化存储,那么就需要用到输出设备;
同样地,在【输入→处理→输出】这一过程中,如果需要访问网络(目的可能是获取数据、存储数据、调用云端算法等),就需要用到网络设备;
随着技术的进步,计算机的硬件的形态也越来越多样化;

输入设备有哪些?

  1. 键盘;
  2. 鼠标;
  3. 摄像头;
  4. 移动设备传感器;
  5. 其它,如自动化生产系统物料入口等;

CPU是什么?

中央处理器,俗称CPU(Central Processing Unit),传统意义上的运算处理设备;
功能:从内存中获取指令并执行;
组件:控制单元(协调CPU外其它组件的工作)+算术逻辑单元(算术运算和逻辑运算);
物理:内嵌在一块小小的半导体芯片上,上有数百万晶体管开关;
指标:时钟主频,电子脉冲发射频率,以赫兹(Hz)为单位,3.5GHz;
指标:核数量;

GPU是什么?

图形处理器,俗称GPU(Graphic Processing Unit),越来越多地应用于机器学习领域;
图像的处理,包括视频动画的播放、特效的渲染等,需要强大的计算能力支持;
一张静态图像可以使用若干个颜色值进行描述,例如一块1920*1080的显示屏,在ARGB模式下,每个像素点的颜色值变化区间为#00000000-#FFFFFFFF,即0~‭4,294,967,295‬,动画电影每秒刷新50帧,再考虑到一些特效的动态计算,显卡需要多么强大的计算机能力予以支持;
由于硬件厂商显卡制造技术的进步(以英伟达和AMD为代表),造成了显卡运算能力的过剩(试想你有多少时间用于看高清视频和玩大型3D游戏呢?),这种过剩的显卡运算能力被机器学习技术加以利用,大名鼎鼎的机器学习框架TensorFlow就是一种能够充分利用GPU运算能力的算法框架;
因此,有志于在机器学习上有所建树的同学,不妨在GPU的投入上提高一些预算;

输出设备有哪些?

  1. 屏幕;
  2. 打印机;
  3. 其它,如自动化设备输出端等;

存储设备有哪些?

  1. 内存;
  2. 磁盘;
  3. 移动存储设备,如移动硬盘、U盘、光盘等;

更多关于内存的知识

功能:存储程序和数据;
组成:无数个01字节序列,每个字节都有唯一地址,每个地址都可以被反复读写(RAM=random access memory);
指标:容量,容量越大,计算机运行速度越快;
TIP:内存结构相对简单,造价低廉——内存越大越好;

网络设备

调制解调器(Modem),俗称猫,调制即将本地数字信号转换为网络信号以通过网络进行输出,解调则相反,即将输入的网络信号转换为本地可识别的数字信号;
有线网络适配器(有线网卡),计算机网线插口所连接的就是一块有线网卡;
无线网络适配器(无线网卡),接收无线路由器WIFI网络信号的,就是一块无线网卡;


本文来自 水木·圳烜 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010986776/article/details/79382236?utm_source=copy

第二节:比特和字节

关于比特

一个比特位(bit)能够存储一个1或0,其底层代表某个电路开关的闭合或断开;

关于字节

一个字节(byte)由8个比特位构成,不考虑负数的话,其取值范围为二进制的00000000 ~ 11111111,换算为十进制为0~255;
我们用字节数表示数据量的大小,常用的字节单位有KB、MB、GB、TB(千兆吉太),即1KB=1024byte,1MB=1024KB,1GB=1024MB,1TB=1024GB;

*PS : 我们在进行程序设计时,既要考虑到存储和运算力的经济,又要考虑到数据的准确与否

例如,C语言中的一个无符号整型占4个字节即8*4=32比特,其取值范围为“32个0” ~ “32个1”,换算为十进制为0 ~‭ 4,294,967,295,如果用于存储金融数据则是不够的;


本文来自 水木·圳烜 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010986776/article/details/79382300?utm_source=copy

第三节:操作系统简介

为什么要有操作系统?

计算机硬件能够直接识别的语言是机器语言,是由1和0所组成的,其底层是电路的闭合 与断开;
计算机硬件在出厂时,将硬件提供的功能封装为相对易读的指令集,指令集与硬件是唯一适配的,没有通用性,这极大地制约了计算机的易用性和普及程度;
在此背景下,操作系统定义了硬件功能的标准接口,硬件厂商通过自家的驱动程序,对这些标准接口进行具体实现;
程序员在为计算机硬件开发应用程序时,无需考虑具体硬件对标准接口的实现细节,而只需要通过统一标准的接口去调用硬件的功能,就能为不同硬件开发相同的应用程序了;
只要硬件搭载的是相同的操作系统,就能实现一套应用程序跑在不同的硬件上;
因此,操作系统诞生最原始的初衷,就是为了实现“不一样的硬件,一样的代码”,这使得计算机变得易于“操作”了;
随着应用程序的日渐丰富和复杂,位于应用和硬件中间层的操作系统,还承担着系统管理、资源调度、应用程序调度等诸多职责;

系统管理可以有什么作用?

  1. 管理文件系统,实现共享、实现安全;
  2. 管理外部设备,例如电源、磁盘、网络等等
  3. 管理用户和权限,使得多个用户可以安全地使用同一台设备,这对服务器尤其重要

资源调度

由于CPU、内存、外设、磁盘等资源,都是为众多应用程序所共享的,因此操作系统承担着资源调度之责,即:

  • CPU执行时间片调度;
  • 内存空间调度;
  • 输入输出设备调度;
  • 磁盘IO调度;

更体贴的应用程序调度

如今的操作系统都是支持多任务的,即用户可以一边写代码,一边听音乐,一边下载电影,一边运行服务程序,一边运行爬虫程序,等等,whatever you say!
具体到某一个应用程序,其内部又支持多进程、进程内又支持多线程;
因此任务管理、并发管理、以及其间的资源调度,都需要经由操作系统来实现;
这种管理和调度,既应该是自动的智能的,又应该支持用户自定义操作;

著名操作系统有哪些?

  • Windows
    图形用户界面的先驱(其实是抄袭施乐),盖茨实现了人人桌面都有一台电脑的梦想,用户量最大、应用程序最多;
  • Mac
    用户体验最好的个人电脑,美观、高效、易用,无论休闲、办公还是开发;
  • Linux
    开源的、以网络通信为出发点的操作系统,广泛用于服务器、嵌入式设备,经过定制的桌面版操作系统同样是很棒的PC机操作系统;开源、高效、安全、强大,越来越多地得到各国政府(包括中国政府)的大力支持;比较著名的定制版有Ubuntu、CentOS、RedHat、Debian、KaliLinux;国产的有红旗、在Ubuntu基础上优化过的Deepin等;安卓操作系统也使用的也是Linux内核;

本文来自 水木·圳烜 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010986776/article/details/79382311?utm_source=copy

第四节:计算机语言

计算机语言的进化

机器语言,由0和1构成,是唯一能够直接被机器识别的语言,其底层是电路的断开与闭合,易读性差,开发效率低;
汇编语言,指令化的机器语言,用于底层开发,可读性和开发效率较机器语言有所提升,但依然晦涩难懂;
高级语言,接近人类语言逻辑的开发语言,可读性和开发效率大幅提升,其发展历程又经历了面向过程和面向对象两个发展阶段,现如今的大部分高级语言都是面向对象的;

常见的高级语言有哪些?

  • Basic:更语义化的指令,适合初学者开发简单桌面程序;
  • VB:微软开发,可以快速开发Windows程序;
  • C:贝尔实验室开发,兼具汇编的强大与高级语言的易用,直接与底层硬件打交道,执行效率在所有高级语言中最高,广泛用于底层开发,及对效率要求较高的底层算法实现;
  • C++:面向对象版的C语言;
  • Java:简单低效版C++,跨平台,Web霸主,适合大团队协作;
  • PHP,开发中小型Web应用较Java更高效;
  • HTML5+JavaScript,Web前端开发语言,由于运行在浏览器内核上,具有跨平台的特性,也广泛用于展示层的移动应用程序开发;
  • Python:简洁通用的脚本型语言,语法简洁优美,易于上手,得到越来越多的追捧,C和Java都对其提供大量的类库支持,因此有“胶水语言“的美称,应用领域广泛,如Web、爬虫、数据挖掘、机器学习等;

源程序、解释器、编译器

  • 源程序:高级语言书写的程序;
  • 编译器:读取一个源代码文件,翻译为一个可执行的机器码文件,等候用户来执行;
  • 解释器:读取一行源代码,翻译为若干条机器指令,立即执行;

面向过程与面向对象

面向过程:以函数为核心,顺序地调用函数,逐步实现功能,不利于代码复用和大规模开发;
面向对象:以对象为核心,将有机关联的函数和变量封装在类中,模块化地进行开发,使用时自由进行组装,架构师往往只需要进行模块拆分和接口设计,具体功能实现交由他人实现,代码重用性高,利于大规模协作的开展;


本文来自 水木·圳烜 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010986776/article/details/79382471?utm_source=copy

第五节:进制转换

不同进制的意义

  • 二进制,原始的机器可识别的数据展现形式;
  • 十进制,贴合人类思维的数据展现形式;
  • 十六进制,0-9A-F分别代表0-15,由于十六进制的最大个位数F正好等于四位二进制数1111,因此用于表示较大的数时,既简介直观又便于计算机进行换算,例如用于表示颜色梯度,FF=255=11111111;

@二进制=>十进制

1010 = 12^3 + 02^ 2 + 12^1 + 02^0 = 10

@十六进制=>十进制

A1B2 = 1016^3 + 116^2 + 1116^1 + 216^0 = 41394

@十进制=>二进制

使用短除法,不断除以2,直到商为0,倒挂余数即为结果
例如:123 = 111,1011
其计算过如果所示:
在这里插入图片描述


本文来自 水木·圳烜 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010986776/article/details/79382424?utm_source=copy

第六节:常用的CMD命令

  • c:,d:,e: ——切盘符
  • cd D:\python1801 ——进入指定目录:(如果要进入的目录与当前不在同一盘符下,必须先切盘符)
  • cd … ——返回上层目录
  • cd\或cd/ ——返回根目录
  • cls 清屏:
  • dir ——浏览当前目录:
  • notepad ——记事本:
  • mspaint ——画图:
  • calc ——计算器:
  • control ——控制面板:
  • taskmgr ——任务管理器:
  • .\QQ.exe ——打开当前目录下的可执行文件:
  • notepad .\hosts ——打开当前目录下的文件:
  • ipconfig ——查询IP信息:

本文来自 水木·圳烜 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010986776/article/details/79382412?utm_source=copy

猜你喜欢

转载自blog.csdn.net/xiangchi7/article/details/82881373
今日推荐