计算机基础知识都包括哪些?

如题所述

基础知识重要,但是具体来说,哪些点重要呢?
今天我就试图总结一下,也欢迎大家补充。
信息的表示和处理
计算机如何表示整数:有符号数和无符号数,尤其是如何用补码表示负数,数字的取值范围。
计算机如何表示浮点数,为什么小数的二进制表示法只能近似表示十进制小数。

数值的转换、移位

这几点非常重要,因为几乎所有的编程语言都有数据类型,而最基本数据类型必然包括整数和浮点数。
搞不清这些表示和运算,在编程中就会遇到一些稀奇古怪的问题。
从汇编层面理解程序的执行
顺序、分支、循环、函数调用、数组、结构体等在汇编层面是怎么实现的,寄存器和内存是怎么使用的。
理解了这些其实也就理解了冯诺依曼计算机体系结构,这是计算机学科一个基础性的东西。
知道程序在底层是怎么运转的, 对于学习各种虚拟机有很大的帮助,比如JVM,它要解析执行的是字节码,字节码本质上要表达的就是这些东西,只不过有所扩展。
理解了栈帧,就能理解函数调用的本质,递归,以及尾递归的实现。还有安全相关的概念,如缓冲区溢出这个臭名卓著的漏洞及其防范办法。
进程和线程
程序员必备的知识,不了解这个,简直是无法编程。
需要掌握进程的地址空间,代码在哪里,堆在哪里,栈在哪里。
要准确理解进程和线程之间的关系,为什么说进程是拥有资源的基本单位, 线程是CPU调度的基本单位?
进程切换和线程切换之间的区别和联系。
他们是如何创建,执行,有哪些状态,状态之间的转换。 由此会涉及到并发和并行,线程之间的竞争和合作。
锁的本质(硬件层面),乐观锁,悲观锁,死锁等问题。
线程的实现方式,用户级线程和内核级线程的对应方式。
在编程的过程中,有些知识点会直接使用,如多线程编程,锁。 还有一些概念能用到很多地方,例如CAS,不仅仅是编程语言的概念,还能在更新数据库时使用。再比如你理解了线程的实现方式,迅速就能掌握go语言中并发的手段:goroutine。
存储器的层次结构
Tomcat用了多线程执行请求,Redis用了单线程来处理请求,Node.js也用了单线程来,这是为什么? 秘密都在存储器的层次结构。
人类制造的计算机设备之间有着巨大的速度差异:
总之,CPU超级快,内存比较快,硬盘非常慢,网络更慢, 这个速度差异是IT行业的一个核心问题,人类想了很多办法试图去弥补这个差异:多线程,缓存,异步,多路复用,硬件层面的DMA。
记着下面这张图,每当你遇到某个软件的特性的时候,想一想和它有什么关系:

数据结构和算法
它的重要性我罗嗦过很多次了,不用再重复了, 我就举个最简单的例子: 理解了B+ Tree才能理解MySQL的InnoDB的索引,理解了索引才能更好地优化查询,对吧?
计算机网络
现在的程序基本上都是网络程序, 所以这也是一个必备的基础知识,学习计算机网络的一大好处就是和工作直接相关,能直接使用,比较有动力。
HTTP协议肯定跑不掉,TCP,UDP也得会,尤其是TCP可靠传输的原理:如何在一个不可靠的网络中进行可靠的传输, 这是无数前辈总结的经验,一定得掌握。
要理解什么是通信协议,也许某一天你自己就需要定制一个协议来传输数据。
分组交换是什么意思? 协议分层的本质是什么? 什么叫无状态的协议?
Socket相关的编程更是重点,尤其是涉及到服务器端高并发的时候,如何维持和处理这些海量的socket, epoll等技术就得上场了。
还有非常重要的HTTPs的基本原理,也是网络安全的精华所在:对称加密,非对称加密,消息摘要,数字证书,中间人攻击。
数据库
不多说,关系模型、范式、SQL、索引、事务等知识都得掌握,尤其是要了解他们的实现方式。
分布式的基础知识
这些已经偏向应用层面了,但是现在很多系统都是分布式的了,分布式就变成了一种基础知识。
系统通信:RPC, 消息队列等
负载均衡的原理
CAP原理,BASE原理,幂等性,一致性模型(强一致性,最终一致性.....)和相关协议(两阶段提交,Raft,Paxos......)
数据分片:取模算法,一致性Hash,虚拟桶
基本的设计思想
下面这几种设计思想对我影响很大,需要大家特别注意。但是掌握起来却很不容易,需要在实践中不断地体会:
正交:各个概念之间可以独立变化
抽象:抛弃细节,找到本质和共性
《深入理解计算机系统》一书中提到:“指令集是对CPU的抽象, 文件是对输入/输出设备的抽象, 虚拟存储器是对程序存储的抽象, 进程是对一个正在运行的程序的抽象, 而虚拟机是对整个计算机(包括操作系统、处理器和程序)的抽象。 如果你对这句话透彻理解了,说明对计算机系统的认识已经很深刻了。
分层:我只想和我的邻居打交道, 如网络协议,Web应用开发。
分而治之:大事化小,小事化了,架构设计必备。
关键点来了,怎么学习呢?
我原来的方式是先看书,看了很多书,数据结构,操作系统,汇编,网络...... 这种办法的最大问题就是枯燥(嗯,那时候还没有码农翻身这样用故事讲解技术的文章)。
理论多,实践少,很多知识点体会不深, 等到参与的项目多了,Coding多了,这些知识点才慢慢地鲜活起来。
一种更加有效的办法是从工作中用到的知识点出发,从这个知识点向外扩展,由点到线,由线到面,然后让各个层次都连接起来,形成一个立体的网络。
切记,学习是一个螺旋上升的过程,想要上升就得深度思考,多问几个为什么。
比如工作中用到了Redis,你在学习过程中发现这个Redis用了单线程来处理读写请求,为什么要这么做? 对于成千上万的请求它是如何处理的? 然后再联想一下别的软件:Tomcat为什么不这么干? 想回答这些问题,需要发掘很多基础知识。
这样做的次数多了,积累到一定程度,量变就会引起质变,整个系统就被你看透了,你的知识又扩大了一圈,更多的疑问出现了......
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-05-10

计算机专业4大课

计算机专业4大课:

    计算机组成原理。数据结构。计算机操作系统。计算机网络。
第2个回答  2020-05-06
计算机基础知识,主要讲计算机的历史和发展,还有计算机的硬件的组成及各个硬件的原理和功能。还有计算机基础的相关一些语言的介绍和网络的介绍。
第3个回答  2021-10-26
计算机简史

计算机是现代一种用于快速计算的电子计算机,它具备数值计算、逻辑计算和存储记忆能力,能够按照设定的程序规则自动、高速处理数据的现代智能电子设备。我们一般称为“电脑”。

计算机是在20世纪由“约翰·冯·诺依曼”发明,“约翰·冯·诺依曼”也被称为“计算机之父”。

计算机大概经历以下几个更新换代阶段(参考百度百科,了解即可):

第1代:电子管数字机(1946—1958年)

逻辑元件采用的是真空电子管,主存储器采用汞延迟线电子管、阴极射线示波管静电存储器、磁鼓、磁芯;外存储器采用的是磁带。软件方面采用的是机器语言、汇编语言。应用领域以军事和科学计算为主

特点:体积大、功耗高、可靠性差。速度慢(一般为每秒数千次至数万次)、价格昂贵,但为以后的计算机发展奠定了基础

计算机基础课程有那些?
数学基础:包括高等数学、线性代数、离散数学、概率论与数理统计等。这些数学知识是计算机科学的基础,对于理解算法、数据结构、计算机图形学等领域至关重要。计算机科学导论:介绍计算机科学的基本概念、历史、应用领域和未来发展趋势,帮助学生建立对计算机科学的整体认识。编程语言与程序设计:学习一种或多种编...

计算机专业对口高考都考哪些内容?
计算机基础知识:包括计算机硬件、操作系统、网络基础、数据库等方面的基础知识。例如,计算机系统的基本组成、硬件的工作原理、操作系统的基本概念和功能、网络通信的基础理论和协议,以及数据库管理系统的基础概念和SQL语言的运用等。编程语言:主要考察学生对C语言、Java、Python等常用编程语言的语法、数据类型...

计算机基础知识包括什么
3、操作系统(包括操作系统原理、Linux命令行以及更高阶的系统编程)。4、数学基础(微积分、线代数、概率论、离散数学,高阶一点还有数值计算、优化等)。5、数据库(主要是关系型数据库比如MySQL、SQLServer、Oracle及其原理)。6、计算机网络(OSI七层协议、TCP\/UDP、路由选择、各种应用层协议等)。7、计算机...

计算机基础考试考什么
(一)、计算机系统的基本知识 1、计算机系统的组成,主要部件的结构和功能。2、数制和字符编码的基本概念:二进制、十六进制、ASCII码。3、软件和程序的概念,数据存储基本单位(字节以及KB、MB、GB)的概念。4、微型计算机的基本配置。5、常用存储设备(软盘、硬盘、光盘驱动器等)和外部设备(键盘、鼠标...

学电脑的基础知识是什么
学电脑的基本知识有:1,认识电脑的基本组成设备 台式机,主要由主机机箱、显示器、鼠标键盘、外接音响设备组成,上图可以清楚地看到这些设备,主机机箱里面还有:电源,主板,CPU,内存条,显卡,硬盘,光驱(可有可无),网卡、声卡(一般都集成在主板上),散热片等部件。2,电脑的接线 显示数据线,...

初学者学习计算机需要具备哪些基础知识?
初学者学习计算机需要具备以下基础知识:1.计算机硬件知识:了解计算机的基本组成部分,包括中央处理器(CPU)、内存、硬盘、显示器等。了解它们的功能和工作原理。2.操作系统知识:熟悉常见的操作系统,如Windows、MacOS或Linux。了解操作系统的基本功能和使用方法。3.网络知识:了解计算机网络的基本原理和常用...

计算机一级包括哪些内容
计算机基础知识:包括计算机硬件、软件、网络、操作系统、计算机安全等方面的基础知识。Windows操作系统:包括Windows操作系统的基本操作、文件管理、应用程序、系统设置等方面的内容。Microsoft Office办公软件:包括Word、Excel、PowerPoint等办公软件的基本操作、应用技巧以及文档编辑、表格处理、图表制作等方面的内容...

计算机科学与技术专业学的是什么呀?
一、基础知识与技能 计算机组成原理:研究计算机硬件的基本结构和组成,包括处理器、内存、输入输出设备等。操作系统:学习操作系统的设计原理,包括进程管理、内存管理、文件系统等。计算机网络:了解网络通信的基本原理,包括网络协议、数据传输、网络安全等。编译原理:研究将高级语言程序转换为机器语言的过程,...

计算机专业包括哪些方面的知识?
计算机基础知识:包括计算机组成原理、操作系统、计算机网络、数据结构与算法、数据库等基础理论和知识。编程语言和开发工具:包括各种编程语言和开发工具,如C、Java、Python、Visual Studio等,以及开发框架和库等。数据科学和人工智能:包括机器学习、深度学习、数据挖掘、自然语言处理等数据科学和人工智能领域...

电脑的基本操作知识
电脑基本操作有:1、电脑开、关机的方法以及开机顺序;2、鼠标、键盘的使用方法;3、简单的上网操作和进行信息搜寻;4、文本文档、演示文稿、图表的基本制作及应用;5、较为快速的打字输入方法;6、将网络平台上的信息下载到个人电脑。电脑的配置,是衡量一台电脑性能高低的标准。主要由CPU、显卡、主板、...

相似回答