通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

数据结构、计算机网络、数据库、计算机组成原理、操作系统有哪些联系

数据结构、计算机网络、数据库、计算机组成原理、操作系统的联系是,首先最基础的是计算机组成原理,然后是计算机网络,其次是操作系统,最后是数据结构和数据库。

一、数据结构、计算机网络、数据库、计算机组成原理、操作系统的联系

(一)主要关系

首先最基础的是计算机组成原理,如果想深入学习计算机的话这个是必不可少的,涉及到的知识属于比较硬的知识,要求你对计算机处理问题或者运行的情况进行理解,弄明白计算机在执行任务的时候最底层的方式。

然后是计算机网络,弄清了单个计算机工作的原理之后,必然是研究一群计算机如何一起工作和联系,计算机网络讲述的就是计算机如何与计算机进行了联系,联系的时候如何传输信息,传输信息的过程中又要注意哪些问题等等。

其次是操作系统,弄清了物理上,计算机如何工作,计算机之间如何联系,就该学习计算机如何与人进行交互了,其实上面两门课讲得都还是机器层面的问题,对于机器和人的关系就是由操作系统来完成的,操作系统主要是告诉你,机器在完成各种任务的时候,如何实现机器层面的信息向交互层面转换,也就是如何把计算机的功能等等更明白的告诉人,这样人才能更好地利用计算机。

最后是数据结构吧,其实数据机构上面应该还有编程语言和算法,编程语言就是在有操作系统之后,人们应该如何跟操作系统对话,而数据机构和算法则是在你学会编程语言之后学习的两门课程,这两门课程能够帮助你更好的更有效率的完成编程的任务。

我上面讲述的其实是从硬件也就是从底层到软件也就是到高层的顺序讲的,只有弄清了底层的原理,才能让你在学习高层知识的时候不那么迷惑。

(二) 操作系统

操作系统,这门课你可千万不要觉得,“我又不需要写一个Linux,写一个windows所以我就不需要学习”。这门课不是叫你写一个操作系统的,讲的是资源的调度和分配,以及大型软件的设计。稍微写过一些并行并行的程序,都能体会到这门课的重要性。

计算机网络,是不是觉得现在网络应用框架这么多,socket不用手写,物理层和链路层就更加不用理了是吧。最近尝试把一个网络应用部署到云服务器上,网络没问题,端口全开,云主机上localhost可访问,但从公网死活访问不了,至于原因就等题主你学习计算机网络的时候来思考一下吧。

计算机组成原理,你还真不需要理解cpu的每一个电路怎么运行,但当我懂得内存与外存的区别,以及缓冲区这些概念时,代码的书写思维和我入门时真的有很大不同。

所有的语言,框架说白了就是在某种规则(语法规则,API)上进行利用(编写代码),而一旦遇上瓶颈,或者某些bug的定位,需要为某种环境而进行方案的选择折衷(比如存储空间),这个时候就是你说的那些基础知识辅助决策的时候了。

(三) 计算机体系结构

一句话概括:计算机体系结构讲的是计算机有哪些功能(包括指令集、数据类型、存储器寻址技术、I/O机理等等),是抽象的;计算机组成原理讲的是计算机功能是如何实现的,是具体的。

例如:一台机器是否具备乘法指令的功能,这是一个结构问题,实现这个乘法采用什么方式,则是一个组成问题。实现乘法指令可以采用一个专门的乘法电路,也可以采用连续相加的加法电路来实现,这两者的区别。

组成原理是让你从整体上精略地让你了解计算机是怎么工作的,内容上侧重于计算机的几大组成(运算器,控制器,存储器,输入设备,输出设备与总线结构),具体来说,是具体一条指令在cpu中是如何执行的,计算机的储存体系是如何的(分三层),还有就是一是I/O接口的基本概念。 之后学的就是体系结构和微机原理,都是以组成为知识背景的。

体系结构可以认为是对《计算机组成》的抽象化与进一步的理论化,里面计的技术包罗万象,包括大型机和微机中所应用的技术。主要内容是学习指令的流水技术,动态调度,静态调度。你学懂了后会觉得cpu一点也不神奇了。

微机原理是是对《计算机组成》的具体实现。一般会选x86计算机来说,这时一般不会再详细讲工作原理了(因为大多数原理都在《计算机组成》中讲了),而是直接讲述cpu的具本结构是什么,具体引脚的作用,各种总线多少多少,各种控制寄存器的各个位有什么意义,I/O的具体交接口(ISA,pci)……因为是具体的东西,所以有好多东东要记的。

总体来说,最有趣的是组成,最难学的是体系结构,非常多东西记最有亲切感的是微机原理。作为一名计算机系的学生,这几门课都应好好学一学,他是本科阶段侧重于理论学习的的突出体现,可以让人深入而深切地认识计算机。

(四) 计算机系统

万丈高楼平地起,计算机系统就像程序员金字塔的地基。理解了计算机系统的构造原理,在写程序的道路上才能越走越远。至于原因如下:

经常用一些不知其所以然的技术,会感到不安。因为源码的实现往往涉及到多方面的的知识,比如设计模式,比如JDK的一些高级特性等等。

在这个数据爆炸的年代,很多系统对于项目性能的优化有很高的要求。那么如何调优成为了程序员不可避免的问题,我们知道 Java 是运行在 JVM 上的,程序的调优那就需要对 JVM 有一定的了解。

再就是如果你对计算机系统的构造不太了解,可能你平时写的程序都是错误的。比如我们一直以为两个正数的和或者积一定为正,但是用二进制补码表示的正数和或者积却不一定;程序员和编译器不能用(x-y<0)来代替(x<y),因为前者会产生溢出。甚至也不能用表达式(-y<-x)来代替,因为在二进制补码表示中负数和正数的范围是不一致的。算术溢出是造成程序错误和安全漏洞的一个常见根源。

第四个原因,这个也是最直接的原因。不知道大家是否了解大的互联网公司面试,比如阿里巴巴,腾讯这样的公司。他们面试对于基础的东西要求的很严格,你对这些东西的了解程度将直接决定你的面试成败。

比如:讲一下JVM的结构,TCP/IP的三次握手、四次挥手,淘宝用户的数据怎么满足高并发?等等。像这些问题,如果我们不懂计算机底层知识肯定是不能过关的。

树立正确的计算机世界观

培养一种心态,即计算机的一切是可以理解的,没有超出人类的智慧。即使有些问题你现阶段没有明白,但这些问题都是可以理解的,只是你时间不够,所以先放一下,等有时间再学习它们。这种心态可以防止你滑入无助的陷阱。 有时候你的潜意识会愚弄你,把很难做成的事情当成无法做成的事情。就像《肖申克的救赎》中表现的那样,一把很小的锤子也是可以砸开监狱的墙壁逃出来的。而Red名列前茅次看到那个锤子时,他就认定了Andy肯定逃不出来了。而实际上Andy却用19年的时间确实把墙给凿开了,虽然其间各种艰辛,但是结局却很美好。

延伸阅读:

二、数据结构是什么

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 数据结构往往同高效的检索算法和索引技术有关。

相关文章