自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

redAnt的博客

有梦想,爱学习,实力派

  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

原创 挑战408——操作系统(25)——I/O系统及其设备

这部分内容是结合组成原理一起总结的,因为这部分内容两个科目的重叠度还是很高的。于是放在这里一起总结。I/O系统的发展阶段早期阶段早期的I/O系统,I/O设备比较少,所以大部分的I/O设备都是直接跟Cpu交互的:显然这种模式下是以串行方式进行的,且和浪费CPU的时间,再者这种直接与CPU交互的方式使得I/O设备的扩展或者移除不具有灵活性。接口模块与DAM阶段通常,接口中设有数据通路,...

2019-11-30 17:26:12 719

原创 挑战408——一周网络——网络层(3)

路由选择协议我们都知道,ip数据报是根据路由表进行转发的,那么路由表又是如何得出的呢?

2019-11-24 23:00:30 778

原创 挑战408——数据结构(32)——折半查找法

折半查找这种思想其实我们之前就已经接触过挑战408——数据结构(20)——二叉搜索树(BST)。这里我们同样采用相同的方式来实现在顺序表中是怎么使用这种思想来查找的。一个数组查询的实例查找问题,可以简单理解为我们有大量的数据,我们怎么样可以在这大量的数据中快速找到需要的数据?假设我们有一个已经排好序的数组:那么在这个数组中,查到我们需要的数据需要多长时间?显然,如果我们从头开始并向前查找...

2019-11-23 14:05:26 723

原创 挑战408——数据结构(31)——Hash表的基本操作和冲突避免

从上一篇博文我们知道,哈希表是一种以关联方式存储数据的数据结构。 在哈希表中,数据以数组格式存储,其中每个数据值都有其自己的唯一索引值。 如果我们知道所需数据的索引,则数据访问将变得非常快。因此,它成为一种数据结构,其中插入和搜索操作非常快,而与数据的大小无关。 哈希表使用数组作为存储介质,并使用哈希技术生成要在其中插入元素或从中定位元素的索引。hash表实例散列是一种将键值范围转换为数组索...

2019-11-21 00:09:36 629

原创 挑战408——数据结构(30)——Hash表与Hash函数

hash函数的引入在介绍hash函数之前,先说个实际的例子。我是个比较乱的男生,袜子啊,书籍什么的都乱扔。那么哪天如果要找某件东西,在最坏的情况下,你需要找遍你房间的所有角落。但是,如果你是个爱收拾的男生,那么你要找某件东西的话,直接去对应的地方去寻找就好了。如果用算法复杂度表示,那么前者就是O(N)(因为最坏的情况是你要找遍所有的地方)和后者是O(1)。我们现在思考,能不能将这样的结构用于数据...

2019-11-20 22:09:27 914 1

原创 挑战408——数据结构(29)——最短路径算法(Dijkstra's Algorithm)

在图中,给每一条路径带上一定的权重,这样的图我们称为带权图。如下图所示:带权图我们现在来回顾一下BFS跟DFS的基本思想:深度优先搜索:继续沿着路径搜索,直到我们需要回溯,但这种方式不保证最短路径。广度优先搜索:查看包含距离1的邻居,然后是距离2的邻居等的路径,直到找到路径,这种方式保证最短路径。但这两种方法都是无法处理带权图的问题。举个例子由A到D的最短路径是什么?我...

2019-11-20 10:28:49 1195 1

原创 挑战408——数据结构(28)——图的应用之拓扑排序

一个无环的有向图称为有向无环图(DAG)。图的顶点可以表示要执行的任务,并且边可以表示一个任务必须在另一个之前执行的约束; 在这个应用程序中,拓扑排序只是任务的有效序列。 当且仅当图形没有有向循环时,即如果它是有向无环图(DAG),则可以进行拓扑排序。 任何DAG都具有至少一个拓扑排序。这种用弧来表示活动之间的优先级关系的有向图,称为顶点表示的活动的网(简称AOV网)。拓扑排序(Topologi...

2019-11-19 22:54:38 616

原创 挑战408——数据结构(27)——图的应用之最小生成树

图在我们现实生活中具有极其广泛的应用,我们这篇博文着重从以下几点展开分析:网络路由与路由选择(Internet routers and traceroute)拓扑排序(Topological Sort)最小生成树(Minimum Spanning Trees)Kruskal’s 算法(Kruskal’s algorithm)路由选择实际上我们在学习网络的时候就已经接触过图。在《计算...

2019-11-19 15:10:36 518

原创 挑战408——数据结构(26)——广度优先搜索算法(BFS)思想

尽管深度优先搜索具有许多重要用途,但该策略也具有不适合某些应用程序的缺点。 深度优先方法的最大问题在于它从其中一个邻居出发,在它返回该节点或者是访问其他邻居之前,它必须访问完从出发节点开始的整个路径。 如果我们尝试在一个大的图中发现两个节点之间的最短路径,则使用深度优先搜索会将我们一直带到图的远端,即使我们的的目的地离我们的出发点仅有一步之遥。广度优先搜索广度优先搜索(Breadth-firs...

2019-11-18 10:13:55 797

原创 挑战408——数据结构(25)——深度优先搜索算法(DFS)思想

图由顶点及其边组成,图的遍历主要分为两种:遍历所有顶点遍历所有边图的遍历我们只讨论第一种情况,即不重复的列出所有的顶点,主要有两种策略:深度优先搜索(DFS),广度优先搜索(BFS)为了使深度和广度优先搜索的实现算法的机制更容易理解,假设提供了一个名为visit的函数,它负责处理每个单独节点所需的任何处理。 因此,遍历的目的是按照确定的连接顺序在每个节点上调用且仅调用一次该函数。 因...

2019-11-17 23:33:22 722

原创 挑战408——数据结构(24)——图的存储与矩阵压缩

图的存储方式在实践中,存储图最常见的策略是:将每个节点的连接存储在邻接列表中。将整个图形的连接存储在邻接矩阵中。用邻接链表来表示图之间的关系在图中表示连接的最简单方法是在每个节点的数据结构中存储与其连接的节点的列表。该结构称为邻接列表。 例如,在航空公司图表中每一个节点连接的相邻节点构成一个邻接表,就像这样:现在我们来讲将上图的内容抽象化:假设我们现在有个有向图:根据定...

2019-11-17 14:40:20 2496 1

原创 挑战408——数据结构(23)——树与图

我们先回顾一下之前介绍的树的概念,在树的定义中,每个节点只能有一个父类,并且树中不能出现有环形。但是你可曾想过,当一棵树没有任何规则的时候,会发生什么吗?图的简介现在,我们给图(graph)下一个定义:图,是一种用节点和边来表示相互关系的数学模型。(A graph is a mathematical structure for representing relationships using...

2019-11-17 13:57:42 756

原创 挑战408——组成原理(28)——系统总线

总线的基本概念计算机系统的五大部件之间连接的方式有两种,一种是各部件之间使用单独的连线,称为分散连接。一种是将各部件连到一组公共信息传输线上,称为总线连接。总线是连接多个部件的信息传输线,是各部件共享的传输介质,当多个部件与总线项链时,如果出现两个或者两个以上部件想总线发送信息,势必导致总线上的信号冲突,传输无效,因此在某一时刻,只允许有一部件发送信息,而多个部件可以从总线上接收相同信息。常...

2019-11-13 22:40:58 1233

原创 挑战408——数据结构(22)——平衡二叉树与AVL算法

平衡树介绍前几篇的文章我们介绍了一下二叉树和二叉搜索树。现在假设我们要建立一棵BST,依次插入下列数据:20, 33, 50, 61, 87, 99那么按照BST的规则我们可以得到下列的BST:如果你问我,这是一棵二叉搜索树吗?这肯定的。但是它更像什么?链表!有什么区别呢?数据结构不同,链表只包含一个指向下一个节点的指针,而这个包含的还有指向左节点的指针。这个时候我们看看,我们之前定义的...

2019-11-11 10:00:31 736

原创 挑战408——组成原理(27)——流水线的影响因素

之前说过,目前影响流水线主要的冲突有:资源冲突(结构相关),数据冲突(重点),控制冲突。结构相关多条指令进入流水线后,在同一始终周期内争用同一功能部件。这种冲突的通常解决方式为:前一个指令访存的时候,后一个指令暂停一个时钟周期(拖慢一拍),再执行。增设一个功能部件数据相关后续的指令需要的操作数,要等到前面的指令执行完成后并保存结果后才能获得。数据相关主要分为三种情况:RA...

2019-11-06 22:28:01 877

原创 挑战408——数据结构(21)——二叉搜索树的插入和删除

在二叉搜索树种最重要的就是插入和删除操作了二叉搜索树的插入我们要在二叉搜索树中执行各种操作的前提就是,我们首先要有一棵二叉搜索树。那么,如何创建一棵二叉搜索树呢?最简单的方法就是我们可以从一棵空树开始,每次调用一个addNode函数,将一个新的值插入二叉搜索树中。但是在每次插入的时候我们都要保持树的一个排序关系,因此我们要做的就是在插入的时候,找到我们要插入的值应该在的位置。因此和遍历的代码...

2019-11-06 21:22:03 364

原创 挑战408——数据结构(20)——二叉搜索树(BST)

在之前的文章中,我们提到过三叉树,n叉树,但是我们实际用的最多却是二叉树,因为这样的结构更适合我们编程和更适合我们使用递归的方式。所以我们可以限制孩子的数量使得生成的树更容易实施。那么怎么定义二叉树呢?树中的每个节点至多有两个孩子。除根节点之外的每个节点均被指定为其父项的左侧子项或右侧子项。第二个条件强调了二叉树中的子节点相对于其父母排序。也就是说当子节点的顺序不一样的时候,他们就不是一...

2019-11-05 21:36:27 445

原创 挑战408——数据结构(19)——树的遍历(先序,中序,后序)

树的存储结构之前我们提到过堆是一棵特殊的树,在堆的存储方式中,我们选择了数组的方式去存储。因为只要知道一个节点的位置我们就能找到其他的节点的位置。但是前提是堆是一棵完全二叉树。树的结构多种多样,没人规定说一个节点只能有一个孩子。我们先看下图,一个最简单的二叉树:怎么表达?看到箭头,我们应该立马反应过来一个基本的工具,没错就是指针,应该立马反应过来一个数据结构,那就是链表!把value换...

2019-11-05 19:19:27 726

原创 挑战408——数据结构(18)——二叉堆的建立与排序算法分析

堆的建立与排序堆的建立我们在刚刚提到过一个问题:我们所有的操作都是建立在一个已经建好的堆中,但是现实中,我们怎么可能那么轻松就得到一个建好的堆呢,所以我们还是得自己在一堆毫无规律的数组中,自己建立一个二叉堆。那么构建堆的最好方式是什么呢?(也就是我们怎么写一个**builtHeap()**的方法)假设我们要把下面的一组数构建成二叉堆:当然我们可以想到的第一个办法就是,利用我们刚刚讨论的...

2019-11-04 23:56:34 554

原创 挑战408——数据结构(17)——优先队列与二叉堆

优先队列我们回顾之前我们学过的队列,队列中的元素按照特定的顺序进行储存,并只能先进先出。然而,在现实生活中,我们却想把元素按照一定的优先级储存起来。举个现实中的例子:我们平时坐高铁,会有所谓的头等舱,二等舱,普通舱。在银行排队,总会有vip客户提前办理业务所谓优先队列(priority queue),就是把元素按照一定的优先级储存起来,而不是根据特定的顺序。因此,它与我们之前接触的基于...

2019-11-03 17:34:16 523

原创 挑战408——数据结构(16)——树的概念

从这一篇开始,进入一种新的数据结构,称为树。其实在学习树之前我们就接触过这个结构。树的概念现在我们从一幅图中来了解一下什么是树状结构:这幅图主要说明cart这个单词的所有可能的组合结构,按照常理,我们先考虑三个字母的排列,然后由三个字母的排列中再进行拆分,最后重复拆分直到仅有一个字母。这个套路是不是很像我们之前学过的devide —— conquer算法?对的,这是一个递归的过程,也是计算...

2019-11-01 18:30:00 512

Prog-in-Cpp,完整版

这是斯坦福大学的C++教材,里面包含了C++的入门语法还有C++版本的数据结构。里面的内容很经典,属于经典的教材。让你知其然又知其所以然。强烈推荐

2017-09-04

Programming Abstractions in C++

Programming Abstractions in C++ Stanford大学的c++教材,感觉不错

2017-01-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除