软件开发必知必会的计算机基础
1. 计算机基本介绍
1.1 什么是计算机
计算机(Computer)俗称为电脑,计算机是一种高速计算的电子机器,计算机可以进行数值运算,逻辑判断,接收或者是存储信息数据(文本、图片、音频、视频),按照存储在其内部的程序对海量的数据进行高速、自动化的处理,然后将处理的结果输出(到屏幕)的一种现代化的智能电子设备。
Q:如何知道当前使用的计算机上运行了哪些程序?
A:Windows系统使用任务管理器查看,macOS系统使用活动监视器查看,它们都可以查看进程(正在运行的程序)占用的CPU、内存、硬盘、网卡资源。
Windows11 任务管理器
macOS Ventura 活动监视器
1.2 常见的计算机
在日常生活中常见的手机、平板电脑、笔记本电脑、台式机都是属于计算机。
手机-iPhone14 Pro
平板电脑-iPad Pro
笔记本电脑-MacBook Pro
台式机-iMac
台式机-Mac Studio
台式机-Mac Pro
从事开发或者是运维相关的工作,那么关注的更多的是笔记本电脑或者是台式机,因为开发或者是运维相关工作的具体内容就是去公司使用笔记本电脑或者是台式机来开发和维护项目的。而手机和平板电脑对于大部分人来说是娱乐设备,例如使用手机和平板电脑去听歌、打游戏、追剧、购物等等。
2023款16寸MacBook Pro
Q:除了手机、平板电脑、笔记本电脑、台式机四种计算机以外,还有没有其他类型的计算机?
A:除了上述介绍的四种计算机以外,还有提供各种商业应用(电商、支付、物流、金融、社交)支撑的大型服务器集群(Server Cluster)。
服务器就是一台高配的计算机,服务器一般是放在机房的,机房一般是位于比较偏远的地方,例如腾讯和苹果的部分服务器就是放在贵州的大山里面,而互联网公司(百度、腾讯、阿里、美团、字节跳动、蚂蚁)一般会安排Linux运维工程师远程管理这些服务器,服务器集群就是**成千上万台(甚至几十万台)**高配的计算机,具体服务器集群的数量和公司业务规模有关系,例如谷歌在全世界很多国家都有业务往来,服务器集群数量到达上百万台。
戴尔(DELL)PowerEdge R750 2U机架式服务器
Q:服务器的配置为什么会这么高?
A:服务器的用途:处理海量用户请求,存储和计算海量用户数据
从事开发或者运维相关的工作,除了会使用笔记本电脑、台式机开发项目,项目开发完成后还会将项目部署到服务器,因此需要对服务器有个基本了解。
1.3 计算机的使用场景
在当今的社会,计算机(手机、平板电脑、笔记本电脑、台式.机)几乎是无处不在的,是无所不能的,当拥有了一台计算机以后就可以使用计算机来解决在日常生活中和工作中的常见需求,其背后依赖的是计算机软硬件的共同协作来实现的。
日常生活中的常见需求和软件解决方案
需求 | 解决方案(软件) |
---|---|
社交 | 微信、QQ |
看电影、追剧 | 爱奇艺、优酷、腾讯视频 |
听歌 | QQ音乐、酷狗音乐、网易云音乐 |
购物 | 京东、淘宝 |
订机票、酒店 | 飞猪、美团、携程 |
订外卖 | 美团外卖、饿了么 |
打游戏 | 王者荣耀、英雄联盟 |
日常工作中的常见需求和软件解决方案
需求 | 软件解决方案 |
---|---|
办公 | 钉钉、企业微信、飞书 |
在线会议 | 腾讯会议、金山会议 |
收发邮件 | 个人:网易邮箱大师、QQ邮箱 企业:腾讯企业邮箱、钉钉邮箱 |
打车 | 滴滴打车、美团打车 |
看学习视频 | bilibili、慕课网、腾讯课堂、极客时间 |
2. 计算机核心硬件
2.1 计算机核心硬件-CPU
2.1.1 CPU基本介绍
CPU(Central Processing Unit) 中文就是中央处理器,有时候直接简称为处理器,或者叫做芯片。
CPU类似于人的大脑,CPU是计算机最核心的硬件。
CPU的好坏会直接影响整个计算机的硬件性能,内存和硬盘的好坏也会直接影响整个计算机的硬件性能,所以我们通常都会将CPU、内存、硬盘称为计算机的三大核心硬件。
Q:计算机除了三大核心硬件还有哪些其他的硬件设备?如果有的话通过什么工具查看硬件设备的配置
A:Windows通过鲁大师的硬件参数查看,macOS通过系统报告查看
鲁大师-计算机硬件参数(Windows)
系统报告(macOS)
2.1.2 CPU主要组成
CPU主要是由运算器和控制器组成,运算器主要是负责数据的运算,控制器主要是负责控制其他计算机硬件设备的协同工作,控制器类似于交警,交警是用于指挥协调地面的交通。
CPU的三级缓存(L1 Cache,L2 Cache,L3 Cache)
2.1.3 CPU主要作用
CPU的主要作用就是用于执行计算机指令以及处理计算机软件的数据,每种CPU都是有自己的计算机指令系统,例如手机的CPU就是基于ARM架构的精简指令集,而PC(Windows系统的笔记本电脑、台式机)的CPU就是基于X86架构的复杂指令集,不同的计算机设备(手机、笔记本电脑)所使用的CPU可能不相同,计算机指令系统也不相同,这就是为什么手机上的程序不能直接在电脑上运行的本质原因。
2.1.4 主流计算机CPU
当我们从事开发或者是运维相关的工作以后,难免每天都会和计算机(服务器、PC)打交道,其中如果你是从事运维的工作那么和服务器打交道更多些,如果你从事开发(前端开发、后端开发)那么和PC打交道更多些。
主流服务器的CPU厂商是Intel,主流的服务器(戴尔、联想、浪潮、超聚变)采用的CPU是Intel的至强可扩展处理器(第二代、第三代、第四代)
戴尔服务器
联想服务器
浪潮服务器
主流PC的CPU厂商是Intel、AMD、Apple
Intel目前用于PC(台式机)性能最强的CPU型号是13900KS,想要了解Intel CPU最新的相关信息访问Intel官方网站即可。
Apple目前用于PC(台式机 Mac Pro)的性能最强的CPU型号是M2 Ultra(2个M2 Max),想要了解Apple CPU最新的相关信息访问Apple官方网站即可。
2.2 计算机核心硬件-内存
2.2.1 内存基本介绍
内存是计算机的存储部件,内存也被称为内部存储器,CPU可以直接访问内存中的数据,而且读写的效率比较(和硬盘比较)高。
2.2.2 内存主要作用
-
内存用于暂时存储CPU运算的指令和数据,程序是由指令和数据组成的(程序是在内存中运行的)。例如微信程序的微信好友就是数据,而点击发送按钮给微信好友发送消息的背后就是一系列的指令,消息本身也是数据。
-
内存和硬盘等外部设备进行数据交换,例如使用程序将硬盘中的数据加载(读取)到内存中,或者使用程序将内存中的数据写入到硬盘。
2.2.3 内存分类
- 按照DDR代数分类:目前主流的DDR代数是DDR4和DDR5,其中DDR4的内存频率一般是在3600MHz左右,而DDR5的内存频率要更高一些,一般是4800MHz-6400MHz甚至更高(7200MHz、8000MHz)
内存的实际运行频率取决于CPU和主板
标配的运行频率和实际运行频率可能不一致
- 按照平台分类:笔记本电脑、台式机、服务器这三种计算机都是有内存,但是它们三者之间的内存是不通用的。
笔记本电脑内存
三星 DDR5 16GB 5600MHz 笔记本内存条
三星 DDR5 32GB 4800MHz 笔记本内存条
台式机内存
芝奇 DDR5 6400 32GB*2
芝奇 DDR5 7200 16GB*2
芝奇 DDR5 8000 24GB*2
美商海盗船 96GB(48*2) DDR5 5600
服务器内存
三星 DDR5 64GB 4800MHz RECC 服务器内存
海力士 128GB DDR5 4800 RECC服务器内存
2.2.5 内存主要特点
-
内存的容量比较(和硬盘)小,单根容量一般是16GB-128GB,其中个人使用的笔记本电脑、台式机总内存容量通常都是16GB起步,最大可以达到192GB(48GB*4),而服务器总内存容量通常都是64GB起步,最大可以达到512GB甚至1TB-2TB,1TB=1024GB。
-
不能永久存储数据,一旦断电之后数据就会丢失
2.2.4 个人使用电脑如何防止数据丢失
数据是公司最宝贵的资源,在硬件层面和软件层面有很多方法防止数据丢失
以前个人在使用电脑的时候经常使用快捷键Ctrl+s/Command+s将数据保存到硬盘,从而实现数据的永久存储。
现在很多的软件提供了自动保存的功能,例如Typora,Visual Studio Code,IntelliJ IDEA等等,我们可以通过设置开启自动保存以后就能够实现将数据自动保存到硬盘。
Typora设置自动保存
依次点击文件>偏好设置>通用,勾选保存&恢复右边的自动保存
Visual Studio Code开启自动保存
依次点击左下角的齿轮>Settings,然后在搜索框搜auto save,在Files:Auto Save选择afterDelay,在Files:Auto Save Delay设置100即可
2.3 计算机核心硬件-硬盘
2.3.1 硬盘基本介绍
硬盘是计算机的存储部件,硬盘也被称为外部存储器,CPU是不能直接访问硬盘中的数据,如果想要CPU访问硬盘中的数据,那么我们就需要使用程序(操作系统)将硬盘中的数据加载(读取)到内存中,然后再提供给CPU访问。
Q:程序运行的基本流程是什么?操作系统以及CPU、内存、硬盘、网卡四大核心硬件各自发挥什么作用?
A: Windows环境下双击程序所在桌面的快捷方式之后,操作系统会根据快捷方式查找到对应可执行程序的硬盘路径,并将该硬盘路径下的可执行程序加载到内存中,并且会为其创建相应的进程。CPU从内存中读取该可执行程序的指令和数据并执行。如果该程序涉及到网络相关的操作,那么网络数据的收发由网卡完成。
我们以网易有道翻译为例介绍程序运行的基本流程以及在该过程中CPU、内存、硬盘、网卡四大核心硬件各自发挥什么作用
当前桌面有很多程序,实际上大部分程序都只是快捷方式
选中网易有道翻译,然后右键属性
在网易有道翻译 属性 面板中选择目标路径,就可以查看到快捷方式对应可执行程序的路径C:\Users\liuguanglei\AppData\Local\youdao\dict\Application
然后在文件资源管理器中打开,桌面的快捷方式 网易有道翻译可执行程序路径就是,Windows下可执行程序是.exe结尾
C:\Users\liuguanglei\AppData\Local\youdao\dict\Application\YoudaoDict.exe
当双击桌面的网易有道翻译快捷方式,操作系统会执行该快捷方式对应的可执行程序YoudaoDict.exe从硬盘加载到内存中,然后会为其创建进程,任务管理器中可以查看到该进程以及该进程占用的CPU、内存、硬盘、网络资源。
CPU会从内存中读取网易有道翻译的指令和数据然后执行。
如果在网易有道翻译输入需要翻译的单词或者句子后点击查询,此时网卡会负责数据的收发
2.3.2 硬盘的特点
-
硬盘的容量比较大,通常都是TB(1TB=1024GB)级别的,例如单块硬盘的容量通常都是1TB,2TB,4TB,8TB,16TB等等
-
硬盘主要是用于永久存储数据的,内存中的数据断电后会丢失,但是硬盘中的数据断电后不会丢失。
2.3.3 硬盘分类
2.3.3.1 机械硬盘
机械硬盘容量大(TB级别),例如单块机械硬盘的容量通常都是1TB,2TB,4TB,8TB,16TB等等,价格比较便宜,读写速度比较慢(拷贝文件:50MB/s-100MB/s,实际速度取决于文件的数量)
机械硬盘拷贝文件
机械硬盘按照转速不同分类:
机械硬盘常见的转速有5400RPM,7200RPM,10000RPM,15000RPM,转速越高读写的速度就会越高。
其中5400RPM,7200RPM一般是普通家用、办公使用
而7200RPM,10000RPM,15000RPM通常都是服务器使用
机械硬盘按照尺寸不同分类:2.5英寸和3.5英寸
希捷2TB 3.5英寸机械硬盘
2.3.3.2 固态硬盘
固态硬盘容量比较大(TB级别),例如单块固态硬盘的容量通常是1TB,2TB,4TB,8TB,价格比较贵,读写速度快(拷贝文件:500MB/s-3GB/s,实际速度取决于文件的数量),1GB=1024MB
固态硬盘拷贝文件
固态硬盘按照接口分类:分成M.2接口(NVMe协议)和M.2接口(SATA总线),其中NVMe协议又分成了PCIe3.0、PCIe4.0和PCIe5.0,目前主流的固态硬盘一般都是PCIe4.0
2.3.4 硬盘选型
因为机械硬盘体积大,读写速度慢,所以目前新出的笔记本电脑是无法使用机械硬盘的,不过如果是台式机或者是服务器可以同时使用机械硬盘和固态硬盘
一般情况下无论是个人还是企业对于硬盘的选型在满足性能要求的前提条件下考虑性价比,因此大部分场景下机械硬盘和固态硬盘混合使用。
例如个人在使用台式机时,系统盘使用固态硬盘,然后将操作系统、应用软件安装在系统盘中,这样开机快,软件运行速度也快,节省时间就是挣钱(时间就是金钱)。数据盘使用机械硬盘,然后将学习资源存放在数据盘,例如D盘、E盘、F盘中。
如果不考虑性价比,那么推荐全部使用固态硬盘。
2.4 计算机核心硬件-网卡
2.4.1 网卡基本介绍
网卡的名字有很多,在服务器领域经常会看到NIC(Network Interface Card),中文就是网络接口卡,简称为网卡,除此以外网卡也被称为以太网卡或者是网络适配器。
2.4.2 网卡的作用
网卡的作用就是用于将客户端和服务器相互连接的电路板组件。
客户端:发起请求的那一方,例如PC(笔记本电脑、台式机)上通常使用浏览器发起请求,移动设备(手机)上通常使用App发起请求
服务器:响应请求/处理请求的那一方,例如京东服务器/淘宝服务器等等
网卡的作用案例:使用浏览器客户端访问京东网站,访问京东网站就是访问京东服务器的那个京东网站程序
打开浏览器后,在浏览器的地址栏输入jd.com然后回车,浏览器客户端就会给京东服务器发送请求,请求的数据是京东网站首页。请求的数据是由网卡发送给京东服务器。
京东服务器收到浏览器后将京东网站首页的数据内容返回给浏览器客户端,返回的数据是由网卡接收,浏览器客户端负责渲染页面。
任务管理器中可以查看到浏览器占用的CPU、内存、硬盘、网络,此时只需要终端关注网络数据量的变化。
2.4.3 网卡分类
常见网卡的分类方式有如下四种
-
网卡按照连接方式分类:分成有线网卡和无线网卡,有线网卡是通过网线或者是光纤将设备连接到网络,无线网卡通常是有一根或者多根小天线,利用无线电波和其他设备进行通讯。
-
网卡按照接口类型分类:分成PCI-E、USB
-
网卡按照端口类型分类:分成RJ-45端口网卡(笔记本电脑、台式机)和光端口(光口)网卡(服务器)
-
网卡按照连接速度分类:分成百兆网卡(100Mbps)、千兆网卡(1000Mbps、3000Mbps)、万兆网卡(10Gbps、25Gbps、40Gbps、100Gbps) 1Gbps=1000Mbps,10Gbps=10000Mbps
2.4.4 常见计算机网卡
个人使用的PC(笔记本电脑、台式机)一般是同时内置有线网卡和无线网卡两种网卡,其连接速度一般是千兆(1000Mbps、3000Mbps)左右
COMFAST AX200 台式机 PCI-E接口 无线网卡
COMFAST P25 V2 台式机 PCI-E接口 有线网卡
硬件参数-网卡
服务器一般内置的网卡都是有线网卡,连接速度一般都是万兆(10Gbps、25Gbps、40Gbps、100Gbps)
10G四光口光纤网卡
25G四光口光纤网卡
40G单光口光纤网卡
100G双光口光纤网卡
3. 计算机软件
3.1 为什么会有软件
计算机软件有时候简称为软件
人们在日常生活中和工作中有各种各样的需求,例如社交、打车、旅游、办公(在线会议、收发邮件、在线文档)等等,正是由于有这些需求,因此有些人(老板)成立软件公司\互联网公司招聘一批程序员开发各种各样的软件。
软件出现的目的就是为了帮助人们更加方便地解决在日常生活中和工作中的常见需求。
比如以打车为例,在没有打车软件之前想要打车的话是需要自己去马路上招手叫车,有了打车软件(滴滴)以后只需要注册账号,然后在软件上叫车即可,而且还可以通过打车软件支付打车费用。
软件的价值是远远超过硬件的价值的,例如抖音和微信的估值是几千亿人民币,因为其拥有海量用户,可以产生巨大的商业价值。现在有越来越多的人从事软件相关的工作(产品、UI、开发、测试、运维),因为软件行业要比其它行业更好些,例如软件行业相对比较公平,在一线城市起步薪水10000以上,工作3-5年以后可以拿到20000-50000月薪。
3.2 软件组成
软件主要就是由一系列按照特定顺序组织的计算机指令和数据组成,除此以外还有一些其他的,例如设计文档、开发文档、用户使用手册等等。
-
计算机指令就是由程序员(开发者/软件工程师/开发工程师/码农/新型农民工)采用某种编程语言(C/C++/Java/JavaScript/Scala/Swift/Kotlin/Python/Go/Rust)编写的代码,代码最终会被编译器或者是解释器翻译成计算机指令,例如点击微信的发送按钮给微信好友发送消息的背后就是一系列的计算机指令。
-
数据就是由不同的业务场景产生的,例如微信的微信好友数据就是加好友产生的,微信的微信消息数据就是给微信好友发消息产生的。
3.3 软件分类
软件分成系统软件和应用软件两大类
3.3.1 系统软件
常见的系统软件有操作系统、语言处理程序、数据库、硬件驱动
3.3.1.1 操作系统
不管是服务器、还是PC以及手机都是有操作系统
- 服务器操作系统
服务器操作系统又叫做服务端操作系统,主流的服务器操作系统是Unix、Linux、Windows Server
Unix是最早出现的操作系统,采用C语言编写的,后来基于Unix发展出很多分支,例如IBM AIX、Sun Solaris、HP HP-UX等等
Linux是基于Unix,后来也发展出很多分支发行版本,例如CentOS、Ubuntu Server,主流互联网公司(百度、腾讯、阿里、美团、字节、蚂蚁)的服务器操作系统使用的几乎都是Linux
服务端操作系统-CentOS
服务端操作系统-Ubuntu Server
Windows Server是微软公司推出的企业版Windows,由于容易上手因此在一些中小型企业中使用。
- PC操作系统
PC指的就是个人电脑,包括笔记本电脑以及台式机
主流的PC操作系统或者叫PC端操作系统是Windows、macOS、Ubuntu Desktop
目前全世界使用人数最多的PC操作系统是Windows,包括Windows11、Window10等等
Mac电脑(MacBook Pro, Mac Studio ,Mac Pro)标配的都是macOS系统,非常适合做软件开发。
Ubuntu Desktop顾名思义就是桌面版Ubuntu,有少部分人使用该系统做软件开发
- 移动端操作系统
移动端通常指的手机、手表、平板、车机等移动设备
主流的移动端操作系统是Android,iOS,鸿蒙OS
Android系统是全世界使用人数最多的手机操作系统,三星、小米、OPPO、VIVO都是使用Android系统
iOS系统是苹果手机(例如iPhone 14 Pro Max)操作系统
鸿蒙OS是华为推出的分布式操作系统,支持手机、手表、平板、车机、智慧屏
我们前期在学习项目开发大部分时间都会使用Windows或者macOS,项目测试、部署时会使用Linux,例如CentOS或者是Ubuntu Server。
3.3.1.2 语言处理程序
语言指的是编程语言或者是计算机语言,常见的语言处理程序有编译器和解释器。
例如C语言编写的C程序需要通过编译器编译后再运行,Python编写的Python程序需要经过Python解释器边解释边运行
3.3.1.3 数据库
数据库是用于存储海量用户数据,常见的数据库有关系型数据库MySQL、PostgreSQL、Oracle等等,常见的NoSQL数据库有Redis、MongoDB等等。
3.3.1.4 硬件驱动
计算机硬件设备通常是要安装对应的驱动程序才能使用,例如想要上网除了有网卡还要安装网卡驱动,想要使用打印机还需要安装对应的打印机驱动,想要玩游戏也需要对应的显卡驱动。
3.3.2 应用软件
在日常办公时我们会使用到非常多的应用软件,而且绝大部分应用软件既有Windows版本,又有macOS版本。
Windows常用应用软件
macOS常用应用软件
我们以后在下载和安装软件时需要根据所使用操作系统的版本来选择对应的软件版本
钉钉
微信
腾讯会议
3.4 软件交互方式
运行在不同操作系统上的软件 交互方式是不一样的,使用的人群也是不一样的。
- 服务端操作系统(Unix/Linux)的软件交互方式是基于命令行(Command Line Interface CLI)的字符界面,主要是提供给程序员/Linux运维工程师使用的。
- PC端操作系统(Windows,macOS)的软件交互方式是基于鼠标键盘的图形化界面(Graphical User Interface GUI),主要是提供给程序员/Linux运维工程师/普通人使用的。
- 移动端操作系统(Android,iOS/iPadOS,鸿蒙OS)的软件交互方式是基于手势触控(滑动)、语音的图形化界面,主要是提供给程序员(Android工程师,iOS工程师)/普通人使用
4. 计算机系统
4.1 计算机系统组成
计算机系统是由计算机硬件系统和计算机软件系统两部分组成
4.1.1 计算机硬件系统
计算机硬件系统是由CPU、内存、硬盘、网卡、主板、输入输出设备等组成,常见的输入设备是鼠标、键盘,常见的输出设备是声卡、显卡、显示器,其中键盘叫做标准输入设备,显示器叫做标准输出设备。
从事开发或者是运维相关的工作,那么需要重点关注CPU、内存、硬盘、网卡四大核心硬件。因为在开发项目的过程中可能会遇到某些错误,这些错误可能是业务问题,例如开发电商系统时通常会有订单金额计算业务,如果没有搞清楚订单金额计算规则,那么就可能导致订单金额计算错误,也可能是因为项目的某些错误导致计算机硬件相关的问题。
[优先级: 1] CPU高负载
[优先级: 2] 内存溢出
[优先级: 3] 硬盘写满
[优先级: 4] 网络不通
4.1.2 计算机软件系统
计算机软件系统是由系统软件和应用软件组成
从事开发或者是运维相关的工作,那么需要重点关注操作系统,操作系统在计算机系统中的地位非常重要,操作系统既要给系统软件和应用软件提供运行平台,还要负责和底层计算机硬件设备进行交互。
4.2 计算机系统体系结构
-
软件(Software)是运行在硬件(Hardware)之上
-
无论是系统软件还是应用软件都是运行在操作系统(Operating System)之上
-
操作系统(例如Linux)主要是由内核(Kernel)和外壳(Shell)两部分组成,内核(Kernel)主要是负责和计算机硬件设备进行交互,外壳(Shell)主要是负责和用户(程序员/Linux运维工程师)进行交互。Shell可以有多种实现,例如bash,csh,zsh等等,其中CentOS默认是bash,macOS默认是zsh。Linux命令都是提交给Shell执行的,Shell也是一门脚本语言,通过Shell编程实现自动化运维。
5. 计算机常用单位
5.1 计算机常用容量单位
5.1.1 计算机常用容量单位介绍
计算机常用的容量指的就是内存容量和硬盘容量,例如2023款MacBook Pro最高可以选择96GB统一内存以及8TB固态硬盘
这里的GB、TB都是容量单位
但是在物理层面,我们使用高低电平来记录信息的,通常都是使用高电平表示1,低电平表示0
因此在计算机底层只能识别0和1两种状态,但是0和1能够表示的信息太少了,因此我们需要更大的容量单位。
常用的容量单位以及使用场景(从小到大排序)
容量单位 | 使用场景 |
---|---|
位(bit) | 计算机最小的容量单位,只能存储0或者1,通常用于门电路 |
字节(Byte) | 计算机最基本的容量单位(计算机中实际使用的最小单位),通常用于表示文件大小、网络传输(上传文件、下载文件) |
千字节(KB) | 通常用于表示文件大小、网络传输(上传文件、下载文件) |
兆字节(MB) | |
吉字节(GB) | 通常用于表示文件大小、内存、硬盘的容量 |
太字节(TB) | 通常用于表示服务器内存、硬盘的容量 |
拍字节(PB) | 通常用于表示大数据系统处理的数据容量 |
艾字节(EB) | 通常用于表示互联网大厂(百度、腾讯、阿里、美团、字节跳动、蚂蚁)的区域数据中心的总容量 |
它们的换算关系如下所示
1EB=1024PB
1PB=1024TB
1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024Byte
1Byte=8bit
5.1.2 计算机常用容量单位使用
为什么我买的4TB硬盘的实际总容量没有4TB,只有3.63TB左右?
计算机中的4TB容量换算成字节
4TB=4*1024*1024*1024*1024Byte
硬盘厂商的4TB容量换算成字节
4TB=4*1000*1000*1000*1000Byte
以上看出计算机容量单位是以1024 进行换算的,但是硬盘厂商(希捷、西部数据、三星、金士顿)是以1000进行换算的
因此4TB硬盘的实际可用容量
4*1000*1000*1000*1000/1024/1024/1024/1024≈3.63TB
2T的固态硬盘实际可用容量也只有1.86TB左右
5.2 计算机常用速度单位
5.2.1 网络速度单位
网络速度简称网速
常用的网速单位是Mbps,Mbps是megabits per second的缩写,是一种传输速率单位,指每秒传输的位(比特)数量。1Mbps代表每秒传输1,000,000位(bit),计算机中实际使用的最小容量单位是字节,因此需要将位(比特)转换成字节,即每秒传输的数据量为:1,000,000/8=125,000Byte/s。
宽带运营商(电信、移动、联通)声称的百兆带宽也就是100Mbps,但是100M带宽的峰值下载速度也就是10MB/s左右,它们的换算关系就是100Mbps/8=12.5MB/s,1Byte=8bit
如果想要获取宽带的网速,那么使用网速管家测试网速,测试结果仅供参考
5.2.2 CPU速度单位
CPU的速度一般是由CPU的时钟频率体现的,而时钟频率的单位就是赫兹(Hz),而目前主流CPU的时钟频率一般都是在2GHz以上,赫兹(Hz)就是秒分之一,也就是每秒钟的周期性变动重复次数的计量。
不过在早期CPU的速度是经历KHz、MHz逐步发展的,GHz、MHz、KHz、Hz的换算关系如下所示
1KHz=1000Hz
1MHz=1000KHz
1GHz=1000MHz
假设你的台式机CPU是13900KS,那么它睿频频率最高是6GHz
6GHz转换成Hz
6GHz=6*1000*1000*1000Hz= 6 000 000 000Hz
也就意味着6GHz的CPU每秒钟可以变化60亿次
Windows中可以通过任务管理器中查看CPU的速度,不同的CPU速度是不一样的。
6. 计算机语言
6.1 什么是计算机语言
语言是人和人之间进行沟通交流的一种表达方式,例如中国人和中国人之间使用汉语进行沟通交流,而中国人和美国人之间使用汉语或者使用英语进行沟通交流,但是沟通交流的前提条件就是必须要使用沟通双方都能够理解的语言。
计算机语言是人(程序员)和计算机进行沟通交流的一种表达方式。程序员可以使用计算机语言对计算机下达命令,让计算机完成程序员需要的功能。
计算机语言有时候也被称为编程语言,因为学习计算机语言的目的就是为了编程(写代码、写程序、开发项目)
计算机语言有很多种,每年都会出现一些新的计算机语言,但是主流的计算机语言只有20多种,例如C/C++/Java/JavaScript/Scala/Swift/Kotlin/Python/Go/Rust等等,如果你想要成为一名程序员,就需要系统、深入地掌握其中的一到两种语言。这些语言都有很多类似的地方,当你掌握其中一种语言后,可以快速地掌握其他类似的语言。
6.2 计算机语言发展史
任何事物都是从无到有逐渐发展壮大起来的,计算机语言也是一样的。
计算机语言的发展经历了机器语言、汇编语言、高级语言(高级程序设计语言、高级编程语言、高级计算机语言)三个阶段,其特点就是让程序的开发、测试、部署变得越来越高效、简单、方便,不过是以牺牲了程序的运行效率(性能)作为代价的,但是随着计算机硬件的高速发展,在绝大多数场景下程序运行效率(性能)的损失是可以忽略不计的。
- 第一代计算机语言-机器语言
在计算机发展的早期,程序员采用二进制的机器指令(1000111001001100)来编写程序,每种CPU都是有各自不同的指令系统,例如x86,ARM等等,这样导致同一个程序在不同的机器上需要使用不同的机器语言,也就意味着面向机器编写的程序是不能够移植的,需要手动处理底层硬件的差异性。而且二进制的机器指令编写的程序是难以理解和维护的,但是机器语言编写的程序的运行效率(性能)是最高的,因为计算机可以直接识别二进制的机器指令。
- 第二代计算机语言-汇编语言
随着计算机技术的高速发展,后来汇编语言和汇编器的出现解决了机器语言需要记住非常多的机器指令,也就是将机器指令转换成了人类更加容易理解和记忆的英文单词(例如MOV,AX,BX),然后由汇编器将英文单词编译成机器指令,因为计算机最终只能够识别二进制的机器指令。
汇编语言也是面向机器的,不同机器的汇编指令也是不一样的,汇编语言编写的程序也是不能移植的。但是尽管如此,汇编语言在工业电子编程、软件的加密解密、计算机病毒分析等场景中广泛使用。
- 第三代计算机语言-高级语言
高级语言的高级之处体现在程序员在编写代码的时候不需要关注底层硬件的差异性,而只需要关注实现的业务功能即可。高级语言编写的程序是需要通过编译器编译后再运行或者是通过解释器边解释边运行,而且相比机器语言、汇编语言而言,高级语言更加容易学,因此会有更加充足的人力资源(程序员)来开发大型的商业软件。
高级语言分类
高级语言按照编程思想分类:分成面向过程和面向对象两大类,例如C语言就是面向过程的高级语言,而Java,Python、Go等等都是面向对象的高级语言
高级语言按照运行机制分类:分成编译型和解释型两大类,例如C/C++是编译型语言,Python是解释型语言。
编译型:编译的含义指的是编译型语言编写的源程序使用编译器一次性翻译成特定平台的机器指令**。**
编译型语言的特点是性能更高,但是通常不能跨平台。
解释型:解释的含义指的是解释型的语言编写的源程序使用解释器逐行边解释边运行。
解释型语言的特点是性能略低,但是通常可以跨平台。
三代计算机语言的主要特点汇总
计算机语言 | 开发效率排行榜 | 运行效率(性能)排行榜 | 程序可维护性排行榜 | 程序是否可以移植 | 学习难度 |
---|---|---|---|---|---|
第一代计算机语言-机器语言 | 第3名 | 第1名 | 第3名 | 否 | ★★★★★ |
第二代计算机语言-汇编语言 | 第2名 | 第2名 | 第2名 | 否 | ★★★★ |
第三代计算机语言-高级语言 | 第1名 | 第3名 | 第1名 | 是 | ★★★ |
目前大部分人学习计算机语言时通常都是选择第三代计算机语言-高级语言,例如Java,Python,Go,JavaScript,C/C++等等,很少有人选择机器语言和汇编语言。
6.3 计算机语言排行榜
如果现在想要知道这些计算机语言的活跃程度排名,那么可以访问TIOBE计算机语言排行榜
2023年7月计算机语言排行榜前20名(每个月会更新一次)
目前排名第一的是Python,Python是由于人工智能火起来的,但是人工智能的门槛非常高,例如学历必须是计算机相关专业的硕士、博士,而且人工智能的学习难度非常高,对数学的要求比较高,因此对于大部分人来说都不太适合做人工智能的开发。
紧随其后的就是C、C++和Java
从TIOBE提供的计算机语言历史走势图可以看出,从2002年到2022年大部分时间都是C和Java轮流做老大(排名第一)
6.4 计算机语言使用场景
每一种计算机语言都是有自己擅长的使用场景(开发方向),大家如果想要从事软件开发行业,那么就应该根据市场的需求再结合自己的喜好选择对应的计算机语言。
高级计算机语言应用场景
高级计算机语言 | 应用场景 |
---|---|
C | 操作系统(Unix/Linux/Windows/macOS/Android,iOS,鸿蒙OS)、硬件驱动、中间件(Redis,Nginx)、嵌入式 |
C++ | 大型应用软件(PhotoShop、Office、Chrome)、网络通讯、科学计算、 游戏开发、中间件(MySQL、JVM)、人工智能 |
C# | Windows应用、Web应用、游戏开发 |
Java | 大型分布式系统后台(淘宝、天猫、支付宝、菜鸟物流)、Android App 、大数据开发(Hadoop、HBase、Zookeeper)、中间件(RocketMQ、Sharding-Sphere) |
Go | 云计算(Docker、Kubernates)、大型分布式系统(高并发)、爬虫、大数据、人工智能 |
Objective-C/Swift | iOS应用、iPadOS应用、macOS应用 |
Python | Web开发、人工智能、爬虫、自动化测试、自动化运维、数据分析、大数据 |
JavaScript | Web前端、服务端(Node.js)、PC端(Electron) |
Scala | 大数据 |
Kotlin | Android App |
6.5 我该选择哪种计算机语言
没有最好的计算机语言,只有在特定场景下相对最合适的计算机语言而已,因为这些语言创造出来的目的就是为了解决某个场景的需求,但是无法解决所有需求。
如果你想要找个高薪工作(15k-30k),那么建议系统、深入地学习Java语言以及Java开发相关类库、框架、中间件、基础架构等内容。
因为Java相比C/C++而言,上手比较容易,而且功能非常强大,无论是大型分布式系统的后台还是大数据或者是Android App、中间件都可以使用Java语言来开发。
目前在招聘市场中Java的需求一直都是比较旺盛的,大家可以通过访问招聘网站(Boss直聘、拉勾、前程无忧)去搜索Java相关的岗位来了解具体的岗位要求(学历要求、技术要求、项目经验要求)。
-
中国有51%的程序员使用Java,这个比例全球最高
-
Java开发人员最多的地方是亚洲,大约有250万的开发人员使用Java作为他们的主要编程语言,全世界大概有680万。
上海得物 Java
上海拼多多 Java
上海钧正网络科技 Java
杭州阿里巴巴 Java
7. 推荐给开发者的计算机
7.1 选购计算机的原则
想要成为一名开发者/程序员之前需要学习很多相关的技术,而这些技术都是需要高配置的计算机硬件提供支撑的,因此建议大家在选购电脑时通常选择新款、高配置的笔记本电脑。
例如在自学Java、前端、大数据时建议购买一台笔记本电脑,另外再加一台显示器,这样可以边看视频或者看文档学习边写代码。
笔记本电脑可以选择华硕或者苹果以及其他你喜欢的品牌
7.2 Windows笔记本电脑
华硕笔记本电脑参考配置
微星笔记本电脑参考配置
7.3 苹果笔记本电脑
苹果笔记本电脑参考配置
7.4 显示器
显示器可以选择戴尔或者是你喜欢的其他品牌
显示器参考配置