《计算机基础》:计算机是怎么运行的?

*爱你&永不变心* 提交于 2019-12-09 16:44:13

计算机的三个根本性基础

1)计算机是执行输入、运算、输出的机器
2)程序是指令和数据的集合 
3)计算机的处理方式有时与人们的思维习惯不同

计算机技术进步日新月异,进步的方向就是为了更好的贴合人类,为人类服务。这就需要他的思维习惯有更好的进步,这是如此,计算机还有很大的进步空间。(面向对象变成,是贴合人类的一种体现)
无论是刚入行的技术人员,还是有资历的老工程师,都应该由衷地欢迎技术的进化,坦率地接受新技术。

CPU

机器语言就是由二进制数字构成的程序(.class文件),CPU 可以直接对其解释、执行。

1.CPU 中的标志寄存器(Flags Register)有什么作用?
Flag的本意是“旗子”,这里引申为“标志”。一旦执行了算术运算、逻辑运算、比较运算等指令后,标志寄存器并不会存放运算结果的值,而是会把运算后的某些状态存储起来,例如运算结果是否为0、是否产生了 负数、是否有溢出(Overflow)等。

2.CPU内部有存储数据的地方。这种存储数据的地方叫作“寄存器”。虽然也叫寄存器,但是与I/O的寄存器不同,CPU的寄存器不仅能存储数据,还具备对数据进行运算的能力。(I/O的寄储器不能存取数据

1.控制器
控制单元主要由时序控制和指令控制等组成,其中指令控 制协调指令译码器,完成读指令、分析指令、交给运算器执行指令等操作。指令寄存器中存储着指令集。

2.运算器
运算器的核心是逻辑运算单元,即 ALU,能够执行算术运算或逻辑运算等各种 命令,运算单元会从寄存器中提取或存储数据。

3.寄存器
基于执行指令和热点数据的时间局部性和 空间局部性,CPU 缓存部分指令和数据,以提升性能。但由于 CPU 内部空间狭小且 结构复杂,高速缓存远小于内存空间。

内存

越往 CPU 核心靠近,存储性能越高,但成本也更高。越往下,存 储越便宜、速度越慢,但容量更大。 云端存储使得应用更加安全,易于维护,不需要再去关心应用架构以及数据备份容灾的问题。

主存储器:CPU能够直接访问的存储器为主存储器,用以存放当前运行的程序和数据。由于它设在主机内部,又称内存储器,简称内存或主存。

辅助存储器:为了解决主存容量不足而设置的存储器,用以存放当前不参加运行的程序和数据。当需要运行放在辅存中的程序时,需要将所需内容成批地调入内存供CPU使用,CPU不能直接访问辅存。由于辅存是外部设备的一种,所以又称为外存储器,简称外存。

高速缓冲存储器:是一种介于主存与CPU之间,用于解决CPU与主存间速度匹配问题的高速小容量的存储器。它被用于存放CPU立即要运行或刚使用过的程序和数据。

程序像喝水一样流动着

事件驱动是什么:用户的操作等产生事件后,由事件决定程序的流程。Windows 应用程序的运行就是由事件驱动的。例如,选择“打开文件”菜单项就能打开一个窗口,在里面可以指定要打开文件的名称和存储位置。之所以能够这样是因为一旦触发了“选中了菜单项”这个事件,程序的流程就相应地流转到了处理打开窗口的那部分。

CPU 中有各种各样的各司其职的寄存器。其中有一个被称为 PC(Program Counter,程序计数器)的寄存器,负责存储内存地址,该地址指向下一条即将执行的指令。每解释执行完一条指令,PC寄存器的值就会自动被更新为下一条指令的地址。

(流程图的重要性,写代码前应该先出方案画流程图)

推荐一款工具:

和算法成为好朋友

“哨兵”指的是一种含有特殊值的数据,可用于标识数据的结尾等。字符串的末尾用0表示,链表的末尾用-1表示,像这 种特殊的数据就是哨兵。

算法就是“把解决问题的步骤无一遗漏地用“编程语言表达”,算法就变成了程序。且那就是“步骤必须是明确的并且步骤数必须是有限的”。
(本书作者推荐:可以作为算法辞典使用的书有《算法技术手册》)

最后介绍最为重要的一点,那就是思考算法的时候,要先在纸上 用文字或图表描述出解决问题的步骤,而不要立刻开始编写代码。 (算法推荐:LeetCode)

tips:如果说编程语言是程序员的外功,那么算法就是内功。

和数据结构成为好朋友

注:(后面会单独开博,点击关注,第一时间阅读)

成为会使用面向对象编程的程序员吧

OOP 是 Object Oriented Programming(面向对象 编程)的缩略语。

面向对象编程(OOP,Object Oriented Programming)是一种编写程 序的方法,旨在提升开发大型程序的效率,使程序易于维护 A。。其中所使用的主要编程技巧有继承、封装、多态三种。

面向对象与面向过程区别:

举例说明:面向过程和面向对象

有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择

1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

2、去饭店,张开嘴:老板!来一份鱼香肉丝!

看出来区别了吗?这就是1是面向过程,2是面向对象。

面向过程

优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。

缺点:不易维护、不易复用、不易扩展.

面向对象

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护。

缺点:性能比面向过程差

tips:“小步快跑,快速迭代”——互联网生存法测。面向对象带来的易扩展、易维护、易复用等优势天然满足这条法则。

一用就会的数据库

键和索引的区别?

键用于设定表和表之间的关系(Relationship),而索引是提升数据检索速度的机制。 其上每个值都能够唯一标识一条记录的字段称为主键。为了在表和表之间建立关系而在表中添加的、其他表主键的字段称为外键。而索引是与键无关的机制。

注:这个肯定要出专题了,从JDBC入门到SQL优化?五大范式?分库分表?事务?后面再整理吧。

XML究竟是什么

HTML 是用于编写网页的标记语言。XML 是用于定义任意标记语言的元语言。 通常把用于定义新语言的语言称作元语言。通过使用XML可以定义出各种各样的新语言。

xml是标记语言,是可扩展的标记语言。支持自定义标签

se负责监管计算机系统的构建

软件开发过程的模型有“瀑布模型”“原型模 型”“螺旋模型”等。
“瀑布模型”

在瀑布模型中,每完成一个阶段,都要书写文档(报告)并进行审 核。进行审核时还需要召开会议,在会上由SE为开发团队的成员、上司以及客户讲解文档的内容。


瀑布模型有点:

1、让软件开发过程有序可控,可追溯。(文档的沉淀就是团队的沉淀)

2、让分工明确化,让协作变成可能。

瀑布模型的六个阶段对应现在的:项目经理,产品经理,架构师,软件工程师,测试工程师、运维工程师。

3、质量有保障

捞两下

链接:《网络基础》:计算机网络基础常见面试问题大全,这里涵盖了常见的网络基础相关面试题。网络七层模型,握手挥手详解,http/tcp/socket连接,tcp/ip协议簇,输入xxURL的访问过程等等诸如此类的常见面试题做了全面的整理。

链接:《空号》:聊聊我在阿里外包3个月学到了什么。,每天和正式员工厮混在一起,这是我3个月的所见所闻所想。我常常在思考和他们的差距在哪里,以后也会不定时的继续发个人浅见。还有书单什么的以后再说吧

本文志在提升刚入门同学对计算机的宏观认识,以及标准化开发流程的体验。

打上注释的,后面会以专题形式单独开博,届时会把链接补进来。(想看的也可以留言)

如果觉得有用,请点赞,因为你的鼓励是我写作的最大动力!



联系我/公众号

空号 | 文 【原创】【转载请联系本人】 如果本篇博客有任何错误,请批评指教,不胜感激 !本文已收入至我的GitHub仓库,欢迎Star:github.com/JavaKongHao,里面也有我个人联系方式有什么问题也可以直接找我。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!