学前注意事项
出去面试的时候java岗位不需要懂前端(会少量讲解)
但是我们做项目的时候多少回用到一些前端的东西
1.什么是计算机
1.1前情提要
不仅仅只有电脑是计算机
计算机还不仅仅是电脑手机和平板 路由器 智能洗衣机 刷脸打卡机都可以说是计算机
1.2计算机分类
1.更通用
(1)终端设别(台式机,笔记本,手机,ipad)手机
(2)服务器 日常普通用户是见不到的,以后我们作为开发人员还是经常和服务器打交道的
2.不是特别通用
(3)嵌入式设备,主体功能不是用来计算而是针对一些特定专属常见,量身定做的(专用计算机)
1.3冯诺依曼体系结构
(1)1.2中的所有设备都遵循冯诺依曼体系结构
(2)冯诺依曼和图灵是计算机的祖师爷
冯诺依曼在成为计算机之父之前就是物理化学专家,博弈论之父,还参与过“曼哈顿计划”,是奥本海默的技术顾问,被评为20世纪的全才!!!!!!!!
他在火车上遇到了普林斯顿大小研究员,这个研究员在参与计算机设计,然后互留联系方式,后面冯诺依曼就参与了“艾尼阿克”第一台计算机的开发
然后提出了冯诺依曼体系,并对第一代计算机进行改进。
冯诺依曼体系定义了二进制表示的存储数据。
(3)冯诺依曼体系结构大致就是说
一个计算机要有(目前市面上有的计算机的结构)
CPU(控制器 运算器)
存储器(内存 外存)
输入设备
输出设备
有的硬件设备可能是输入设备也可以是输出设备
(4)计算机一开始是为了军事用途
最早是用来计算弹道轨迹
1.3.1CPU
(1)cpu主要功能是进行各种算数运算
(2)进行各种逻辑判断
我们的每一个程序都是通过cpu来进行执行的
(3)一个打工人一天可能工作8小时
可能一个人花4小时把活干了
这时候就可以把CPU占用率成为百分之50
一个计算机上同时运行横夺程序,这些程序有些全力工作有些不全力工作,最终算出的总占用率
(4)现在的计算机有多核,假如16个核心,就代表一个核心是一个cpu
(5)linux中式把每个cpu的核心加在一起
(6)CPU的频率就代表这CPU的效率,数字越大,干活越快,我们可以理解为1s中cpu运算了多少次,执行了多少个指令。
(7)CPU认识知道的指令就是汇编语言。
你让计算机算一个1+1 = 2其实这背后有非常多的机器指令
(8)如何让一个CPU核心更快
让CPU中的集成基础原件更多,也就是更加的小目前极限是4nm工艺
最近台机电在冲击1nm工艺
小到足够小的时候这其中就涉及到量子力学emmmmm
(9)既然多核心难以更nb,那么不妨往多核心发展
英特尔最近还有啥大小核心的,大核一个顶两,小核还是一对一。英特尔公司还提出了超线程技术,一个cpu一个核中有两个线程,也就是一个物理核心顶2个核心使用。
引入更多的核心本质上相当于干活的人读了,所以要想程序跑的更快,就需要在设计程序的时候考虑这一点,我们需要将问题拆分成更多的部分,交给多个不同的核心来进行处理。
不能单核全干,其他核看戏
(10)所以现在多线程编程,才成为了我们当前研究的重点内容。
底层就是数电emmm
1.3.2指令表(重要的)
(1)指令可以仍未CPU被设计的时候,给程序员提供的一些程序接口。
(2)不同的CPU提供的哪些指令是不一样的,虽然不一样但是也是有几套标准的。(x86)现在更多的是(酷睿一种x86的继承)amd为了和intel兼容,也高搞了了x86,还有一个交arm架构,像我们的平板手机各种嵌入式系统,m1,m2芯片也是arm架构,论性能不及x86,但是功耗比较低,所以比较适合移动设备。还有一些冷门架构emmm不多说了
总的来说CPU其实有很多不同的架构,同一个程序在这个机器上的cpu上面可以运行但是另一个机器就不行,就像我们的手机和电脑应用要区分开。
(3)cpu是如何执行指令啊?
所谓的指令都是先加载到内存中,然后才被cpu读取并执行。
比如一个java程序,写出来时一个java源文件程序,编译得到class二进制文件,运行jvm时就会把这个class文件加载到内存中,再进一步翻译成cpu能够识别的二进制指令
比如一个c程序写出来是一个c源文件代码,编译得到exe二进制文件,操作系统是吧这个exe加载到内存中,在进一步的由cpu执行。
(4)因此CPU执行程序大概就是经历三个阶段
读指令(把内存中的治理数据读取到cpu的寄存器中,存储数据的模块称之为寄存器,速度比内存快,但是内存空间更小也更贵)
解析指令,(理解放弃指令要做啥)
执行指令
上述是一个简化的模板,他还会有流水线啊啥的(计算机体系结构这个课里面会讲,大家自己去找找感兴趣的)
(5)指令表的引入