计算机是如何工作的(上篇)
计算机发展史
世界上很多的高科技发明,来自于军事领域
计算机最初是用来计算弹道导弹轨迹的
弹道导弹 ~~国之重器,非常重要
两弹一星
原子弹,氢弹,卫星(背后的火箭发射技术)
计算弹道导弹轨迹的计算过程非常复杂,计算量也很大 ~~ 但是可以手动计算出来的(当年我国研究两弹一星,就是全靠算盘算出来的) ~~ 1.算的慢 2. 算得可能不准 => 因此,就迫切的需要一台机器来帮助我们计算=> 计算机(专用计算机)就出现了
第一台计算机, 埃尼阿克,诞生于1946年,美国普林斯顿大学,主要用来计算弹道导弹轨迹,运算速度(CPU主频)每秒5000hz(每秒5000次),重达几十吨,占地面积为好几个房间 ~~ 虽然非常low,但还是远远超过人工手动计算
博主破笔记本的处理器处理器 12th Gen Intel® Core™ i5-12500H2.50 GHz ~~ 1GHz即十亿赫兹(10^9 Hz),每秒计算25亿次
珠脑心算(珠心算) ~~ 打算盘,或者心算
看着一长串需要运算的数字,在极短的时间内就能得出正确的结果的珠心算人才,
是属于国家战略储备人才!!!这种人才在极端情况下(即所有电子设备都失效了),仍然
可以把弹道导弹的轨迹算出来对敌人进行反制
随着时代的发展,通用型计算机开始出现
通用型计算机的愿景是图灵(祖师爷)提出来的,冯洛伊曼(祖师爷)实现的
图灵和冯洛伊曼这两位祖师爷是属于同一个时代的人,都是那个时代的天才,诺依曼只比图灵大8岁
~~ 但是冯洛伊曼在美国,图灵在英国
冯洛伊曼曾经对图灵抛出橄榄枝,邀请他一起来研究通用计算机,但可惜被图灵给拒绝了,因此两位祖师爷就没有一起共事过
图灵的介绍
图灵,本来只是一个数学家,但是随着二战爆发,
在欧洲战场,作为世界老大,号称日不落帝国的英国,被后起之秀的德国打的很惨
英国为了寻求反击,对德国进行有效的进攻,就需要获取到德国的军事部署
当时各国的通讯都是通过无线电报进行的,只要你有电台,就能收到数据.
但是由于德国的无线电报都是加密的,就需要进行解密
~~ 对于无线电报的解密,很多国家都是有专门的人才储备,英国也有.
但是由于德国的著名密码系统Enigma的出现,通过机器的方式来进行加密,
导致使用人力破解这种方式就没了作用,束手无策了,根本算不过来,就算破解了,
也会发现加密方式早就变了
由于图灵本来就一直在研究计算机相关的内容,于是,图灵就站了出来
~~提出用魔法打败魔法!!! => 通过仔细研究Engima的构造,造出来一个反Engima机,
用机器来破解机器加密的数据!!!
因此,通过这样的一种手段,让英国解析出了很多来自德国的重要军事情报,
这些情报在当时就直接推动了著名战役诺曼底登陆(欧洲战场重要的转折点)的发生,
最后,帮助盟军取得了二战的胜利.
不过,遗憾的是,图灵祖师爷,在战后遭到了政府的迫害 =>
1952年,英国政府对图灵的同性恋取向定罪,随后图灵接受化学阉割,
1954年6月7日,图灵吃下含有氰化物的苹果中毒身亡,享年42岁。
2013年12月24日,在英国司法大臣克里斯·格雷灵的要求下,
英国女王伊丽莎白二世向图灵颁发了皇家赦免,进行了平反
图灵奖,名称就取自艾伦·麦席森·图灵,计算机领域的国际最高奖项,被誉为“计算机界的诺贝尔奖”。
独显跟集显有什么区别
集显是集成在CPU内部的.
独显是独立出来的.
同时代的产品相比,最好的集显,也打不过最差的独显
CPU 工作流程
~~ (工作不用&面试不考)
逻辑门
电子开关 —— 机械继电器(Mechanical Relay)
~~ 它可以实现 1 位(bit) 的基本逻辑运算
门电路(Gate Circuit)
-
与门
-
或门
-
非门
与门,或门,非门的实现,借助于二极管等设备特殊物理特性
输入的信号是1,0这样的比特位,通过这个门电路,来计算出与或非的值
异或门 ~~ 相同为0,相异为1
算术单元(Arithmetic Unit)
~~ 算数单元,负责计算机里的所有数字操作,比如四则运算
- 半加器
~~ 两个比特位相加
- 全加器
~~ 三个比特位相加
- 加法器 ~~ 由半加器和全加器构成
~~ 针对两个二进制的数字进行相加
不仅仅是针对一个比特运算,而是多位的运算
~~ 加法器,不仅可以算加法,
还可以算减法 => 本质上是加上减数的补码
乘法 => 连续相加
除法 => 连续相减
有了加法器,加减乘除都搞定了!!!
CPU的设计理念与道家老祖宗提出的道生—,一生二,二生三,三生万物不谋而和!!!
推荐阅读一下科幻小说<<三体>>中有关人列计算机的描述,有助于加深你的理解!!!
博主在这为你们简单介绍一下
<<三体>>的人列计算机的诞生背景:
三体星人(外星人),他们的生存的星球上方有三个太阳,三个太阳做着三体运动,导致其运动轨迹是
相当混乱的,这就导致他们无法进行正常的农业生产,社会发展举步维艰,文明发展甚至出现倒退的情况!!!
这时,他们的领袖“秦始皇”广招天下能人,来制作“万年历”,对农业生产进行指导,促进帝国发展.无数的大佬
就站了出来,贡献出自己制作的“万年历”,不过都前赴后继的都失败了.直到两位大佬的出现,牛顿和冯洛伊曼
牛顿 : 万有引力定律 + 牛顿三定律 => 列方程 ~~ 有关恒星与行星之间运动的轨迹方程
微积分 => 解方程 ~~ 就可以得到“万年历”
冯洛伊曼 : 陛下,给我三千万个训练有素的士兵!!!我来解方程
用三个士兵来为陛下进行演示
三个士兵站成品字形,上面两个代表输入,下面一个代表输出.
每个士兵拿着两个小旗,一个旗子是黑旗(图中用红旗代替),一个是白旗(图中用绿旗代替)
红旗表示0,绿旗表示1
士兵挥旗规则
如果两个为输入的士兵都挥动红旗 ~~ 输入了2个0 => 输出的士兵挥动红旗 ~~ 输出了1个0
如果两个为输入的士兵都挥动绿旗 ~~ 输入了2个1 => 输出的士兵挥动绿旗 ~~ 输出了1个1
如果两个为输入的士兵一个挥动红旗,一个挥动绿旗 ~~ 输入了1个1和1个0
=> 为输出的那个士兵挥动红旗 ~~ 输出了1个0 ~~=> 就构成了一个与门
如果两个为输入的士兵一个挥动红旗,一个挥动绿旗 ~~ 输入了1个1和1个0
=> 为输出的那个士兵挥动绿旗 ~~ 输出了1个1 ~~=> 就构成了一个或门
类似的,如果用两个士兵,一个代表输入,一个代表输出
为输入的那个士兵挥动红旗 ~~ 输入了1个0
=> 为输出的那个士兵挥动绿旗 ~~ 输出了1个1
相反的是:
为输入的那个士兵挥动绿旗 ~~ 输入了1个1
=> 为输出的那个士兵挥动红旗 ~~ 输出了1个0
~~=> 这两个士兵就构成了一个非门
有了基本的与门,或门,非门,用更多的士兵组合,就可以构成异或门
更多的异或门 => 就可以构成半加器和全加器
更多的半加器和全加器 => 就可以构成加法器
通过更多的士兵,构造出更多的门电路,也就有了CPU ,
进一步的也就有了存储器,输入设备,输出设备…
这时,一个人列计算机就出现了,冯洛伊曼还为这个计算机编写了一套操作系统,
基于这个操作系统,来进一步的去进行解方程操作
结果如何???
最终棋差一招.牛顿力学体系,不够精确,
没有考虑相对论造成的影响,计算出现误差,功亏一篑,
这黑锅得牛顿来背,最可气的是牛顿最后还跑路了!!!
这本书,对于我们找工作也是有一定帮助的
因为面试中有一些非技术的问题.
最近在看啥书?"(常见经典问题)
你回答说你看的书必须是有意义,
另一方面家喻户晓.三体就是很好的选择.(很多程序猿都看过)
和面试官聊三体,你就很容易和面试官有共同语言,刷得好感,提高印象分
比如一些三体中值得讨论,具有争议的话题,”“章北海的做法是否正确?”
让面试官对你有更多的了解!!!
编程语言(Program Language )
~~ 被视为是程序猿和计算机之间沟通桥梁
编程语言和日常使用自然语言,是有很大的区别的.编程语言必须要严谨,无歧义.
世界上的编程语言种类繁多.大体可以分成三个大类
注意:高级语言的一条语句(Statement)往往对应很多条指令(Instruction)才能完成
-
机器语言
二进制(0,1)构成的指令 ~~ CPU能够识别
厂商在设计CPU的时候就会设计好"指令集”CPU都支持哪些指令,以及这些指令要怎么工作.(这就类似于CPU提供的API)
~~ 但是人对机器语言很难理解,于是发明了汇编语言 -
汇编语言
通过简单的单词作为"助记符",代替二进制的指令.
汇编语言与机器语言是一 一对应的,
每一个机器指令,就对应到一条汇编语句不同的CPU有不同的体系架构支持的指令集也是不一样的.
即使是同类架构,不同的版本,指令集也是不一样的,导致了汇编语言会不一样.你在学习汇编的时候,一定要明确你学的是针对哪个系列的 CPU的…
CPU有x86, arm, mips…很多不同种架构的学校学汇编大概率是8086CPU体系下的汇编语言
=> 16位汇编,支持的指令有限寄存器个数也比较少,
现在是64位CPU,支持的指令更多寄存器个数也更多.8086CPU ~~ Intel早期的一个经典CPU,是一个16位CPU.
后面又有了286,386,486….而这些后面诞生的以86结尾的CPU型号
~~ 被统称为x86(非常重要的CPU的体系结构.当下主流的PC和服务器都是x86结构)
手机,路由器,主要是arm架构. -
高级语言
C,C++,C#(读作C sharp)
~~ C++ 相比于C做出改进,多2个加号++
~~ C# 相对于C++做出改进,又多2个加号++.
~~ 一个 # 相当于4个+(一个井字可以由4个+构成)Java,Python,PHP
Ruby,JS(JavaScript),GO
相关文章:
计算机是如何工作的(上篇)
计算机发展史 世界上很多的高科技发明,来自于军事领域 计算机最初是用来计算弹道导弹轨迹的 弹道导弹 ~~国之重器,非常重要 两弹一星 原子弹,氢弹,卫星(背后的火箭发射技术) 计算弹道导弹轨迹的计算过程非常复杂,计算量也很大 ~~ 但是可以手动计算出来的(当年我国研究两弹一…...
数学建模| 优化入门+多目标规划
优化入门多目标规划 优化入门知识什么是优化问题如何判断是不是优化问题优化模型建模求解器优化问题的分类 多目标规划 优化入门知识 什么是优化问题 优化问题:求最优,例如获利最大、最少损失、最短路径、最小化风险等等。 例如:之前文章提…...
SSM整合Thymeleaf时,抽取公共页面并向其传递参数
第一步 创建一个名为 header.html 的公共头部页面模板,放在 WEB-INF 目录下的 common 文件夹中。在 header.html 中可以编写头部页面的HTML代码,并通过Thymeleaf的语法来接收参数,如下所示: <!DOCTYPE html> <html xml…...
接口测试 —— requests 的基本了解
● requests介绍及安装 ● requests原理及源码介绍 ● 使用requests发送请求 ● 使用requests处理响应 ● get请求参数 ● 发送post请求参数 ● 请求header设置 ● cookie的处理 ● https证书的处理 ● 文件上传、下载 requests介绍 ● requests是python第三方的HTT…...
2023年华为杯数学建模研赛D题思路解析+代码+论文
下文包含:2023华为杯研究生数学建模竞赛(研赛)D题思路解析代码参考论文等及如何准备数学建模竞赛(22号比赛开始后逐步更新) C君将会第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考论文等多项资…...
AB试验(三)一次试验的规范流程
AB试验(三)一次试验的规范流程 一次完整且规范的A/B试验可参考下图: 确定目标和假设 核心:A/B测试是因果推断,所以我们首先要确定原因和结果。目标决定了结果,而假设又决定了原因。 如何确定 分析问题&am…...
ROI tracking by using OpenCV
目录 source code: source code: import cv2tracker cv2.TrackerKCF_create() video cv2.VideoCapture(1)while True:ret,frame video.read()cv2.imshow("source frame",frame)k cv2.waitKey(30)if k q:break bbox cv2.selectROI(frame, False) ok tracker.i…...
(leetcode)二叉树最大深度
个人主页:Lei宝啊 愿所有美好如期而遇 目录 题目: 思路: 代码: 图解: 题目: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数…...
【golang】调度系列之P
调度系列 调度系列之goroutine 调度系列之m 在前面两篇中,分别介绍了G和M,当然介绍的不够全面(在写后面的文章时我也在不断地完善前面的文章,后面可能也会有更加汇总的文章来统筹介绍GMP)。但是,抛开技术细…...
Vue3中watch用法
在 Vue3 中的组合式 API 中,watch 的作用和 Vue2 中的 watch 作用是一样的,他们都是用来监听响应式状态发生变化的,当响应式状态发生变化时,都会触发一个回调函数。 当需要在数据变化时执行异步或开销较大的操作时,com…...
组里来了一个实习生,一行代码引发了一个惨案
大家好,我是静幽水,一名大厂全栈程序员,今天给大家分享一个案例,看似简单。却容易引发惨案。 事情是这样的,最近组里来了一个实习生,因为项目工作量大,人力比较紧张,所以就分配了一…...
随手笔记(四十五)——idea git冲突
图片为引用,在一次导入项目至gitee的过程中,不知道为什么报了403,很奇怪的一个错误,网上很多的答案大概分成两种。 第一种是最多的,直接找到windows凭据删掉 很抱歉的告诉各位,你们很多人到这里就已经解…...
chacha20 算法流程
chacha20算法请参看 RFC:7539。下面是我的理解,欢迎指正。 chacha20算法的基本思想:加密时,将明文数据与用户之间约定的某些数据进行异或操作,得到密文数据;由异或操作的特点可知,在解密时,只需…...
准备篇(三)Python 爬虫第三方库
第三方库无法将 "pip" 识别ModuleNotFoundError: No module named pip install 安装路径相关问题requests 库和 BeautifulSoup 库requests 库BeautifulSoup 库第三方库 Python 的 标准库 中提供了许多有用的模块和功能,如字符串处理、网络通信、多线程等,但它们并…...
从零开始的PICO开发教程(4)-- VR世界 射线传送、旋转和移动
从零开始的PICO开发教程(4)-- VR世界 射线传送、旋转和移动 文章目录 从零开始的PICO开发教程(4)-- VR世界 射线传送、旋转和移动一、前言1、大纲 二、VR射线移动功能实现与解析1、区域传送(1)新建 XR Orig…...
防止攥改之水印功能组件
防止攥改之水印功能组件 效果图逻辑代码 效果图 逻辑代码 <template><div class"containerBox" ref"parentRef" style"height: 300px;background-color: red;"><slot></slot></div> </template><script…...
iOS 17 适配 Xcode 15 问题
在适配 iOS 17 xcode 15时遇到的问题,记录一下。 1、 Could not build module ‘WebKit’ type argument nw_proxy_config_t (aka struct nw_proxy_config *) is neither an Objective-C object nor a block type解决方案: 选中不能编译的库的xcodep…...
Element Plus 快速开始
1.完整引入(全局引入) // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import App from ./App.vueconst app createApp(App)app.use(ElementPlus) app.mount(#app) npm install e…...
华为云云耀云服务器L实例评测|StackEdit中文版在线Markdown笔记工具
华为云云耀云服务器L实例评测|StackEdit中文版在线Markdown笔记工具 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 应用场景1.3 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 StackEdit 中文版3.1 StackEdit 介绍3.2 环…...
MyEclipse报错javax/persistence/EntityManagerFactory
MyEclipse报错: Build path is incomplete. Cannot find class file for javax/persistence/EntityManagerFactory 解决方案: 引入依赖 <dependency><groupId>javax.persistence</groupId> <artifactId>persistence-api</a…...
【MySQL进阶】SQL性能分析
一、SQL性能分析 1.SQL执行频率 MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供服务器状态信 息。通过如下指令,可以查看当前数据库的 INSERT 、 UPDATE 、 DELETE 、 SELECT 的访问频次: -- session 是查看当…...
在SpringBoot项目中整合SpringSession,基于Redis实现对Session的管理和事件监听
1、SpringSession简介 SpringSession是基于Spring框架的Session管理解决方案。它基于标准的Servlet容器API,提供了Session的分布式管理解决方案,支持把Session存储在多种场景下,比如内存、MongoDB、Redis等,并且能够快速集成到Spr…...
浅析vue中computed,method,watch,watchEffect的区别
方法methods只要调用每次都会执行watch(惰性)只有依赖项更新才会执行回调函数,且组件初次渲染不会执行watchEffect:自动追踪依赖变化,只要依赖更新即执行回调函数,且组件初次渲染即执行回调函数computed(惰性): 返回一个只读的ref,具有缓存功…...
activiti7的数据表和字段的解释
activiti7的数据表和字段的解释 activiti7版本有25张表,而activiti6有28张表,activiti5有27张表,绝大部分的表和字段的含义都是一样的,所以本次整理的activiti7数据表和字段的解释,也同样适用于activiti6和5。 1、总览…...
Java手写Trie树和Trie树应用拓展案例
Java手写Trie树和Trie树应用拓展案例 1. 算法思维导图 以下是使用mermaid代码表示的Trie树的实现原理: #mermaid-svg-5twy24X7Wqbhyulb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5twy24X7Wqbhyul…...
alova.js快速入门教程
官网地址:Alova.JS - Lightweight request strategy library | Alova.JS 目录 一、alova 是什么? 二、 快速入门 1、安装依赖 (1)使用npm方式安装 (2)使用yarn方式安装 2、在静态 html 中使用 一、al…...
获取IP地址-根据IP获取位置信息
获取外网IP地址,并得到该地址所在位置; 如:101.249.255.255 对应:西藏自治区-拉萨市-堆龙德庆区 string ipAddress GetIPAddress(); string location GetIPLocation(ipAddress); /// <summary>/// 获取IP地址/// </s…...
Android13适配-Google官方照片视频选择器
官方照片选择器 图 1. 照片选择器提供了一个直观的界面,便于与您的应用分享照片。 照片选择器的界面可供浏览和搜索,并按日期降序向用户显示其媒体库中的文件。如隐私保护最佳实践 Codelab 中所示,照片选择器为用户提供了一种安全的内置授权…...
云计算的发展趋势和挑战
本文将探讨云计算的发展趋势和挑战,旨在帮助读者了解云计算的最新动态和未来发展方向。 随着信息技术的发展,云计算作为一种新兴的计算模式,已经得到了广泛的应用和认可。它通过将计算资源、存储资源和应用程序等服务通过互联网提供给用户&a…...
PyG-GAT-Cora(在Cora数据集上应用GAT做节点分类)
文章目录 model.pymain.py参数设置运行图 model.py import torch.nn as nn from torch_geometric.nn import GATConv import torch.nn.functional as F class gat_cls(nn.Module):def __init__(self,in_dim,hid_dim,out_dim,dropout_size0.5):super(gat_cls,self).__init__()s…...
中国建设银行网站怎么改支付密码是什么/优化网站排名的方法
cctype 头文件所包含的函数主要用来测试字符值,以下是随便找的一个表,但是对于初学者来说,怎么用呢,自己上机操作解决,后两个返回的是int型,确实很意外,强制转换一下,很简单。 isaln…...
做网站的专业叫啥/关键词优化seo排名
一、约束条件约束类型关键字默认约束default 值非空约束not null唯一约束unique key自增长约束auto_increment主键约束primary key外键约束foreign key1.1 默认约束(default 默认值)初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予…...
自己注册了个域名想做一个网站/输入搜索内容
Redis中list数据结构,具有“双端队列”的特性,同时redis具有持久数据的能力,因此redis实现分布式队列是非常安全可靠的。它类似于JMS中的“Queue”,只不过功能和可靠性(事务性)并没有JMS严格。 Redis中的队列阻塞时,整…...
东营网站建设dysem/国外网站seo
1,下载一个服务端 tomcat下载后开始运行,将需要浏览的东西,放在webapps-root文件下这里假设有一个xml小文件,接下来就开始上代码了,在同一个包下给mainactivity创造两个class文件,一个用来解析xml文件&…...
H5建网站/如何做好品牌推广工作
1、 [Error] variable ‘std::ofstream outin’ has initializer but incomplete type 出现这个错误字面意思是变量xxx定义了,但是不完整, 解决方法是,没有找到xxx变量的头文件,包含头文件即可解决 引入头文件,解决 …...
做门户网站用什么服务器/湛江百度seo公司
HttpClient 1、get 有参 // 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的) CloseableHttpClient httpClient HttpClientBuilder.create().build();// 1、有参数-拼接 2、无参直接过StringBuffer params new StringBuffer();try …...