自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Windows下tensorBoard不显示问题解决办法:No dashboards are active for the current data set

tensorBoard是TensorFlow的可视化工具,对理解我们编写的TensorFlow程序有很大帮助,今天我试运行了一下TensorFlowBoard,出现一下错误:以下是可能导致错误的原因:1、确保你写入的事件文件夹里面有文件,即TensorFlow正确配置: 截图显示有一个后缀名为AJAY(这是我的主机名)的文件,说明TensorFlow正确安装。

2018-01-11 11:33:25 2445

原创 2017腾讯校招笔试编程题-拼凑零钱

今天刚刚参加了2017年的腾讯校招在线笔试,其中有一道编程题是这样的:小明很富有,有币值为2^n(n=0,1,2,3)的硬币各两个,即有两个1块钱的硬币,有两个2块钱的硬币,有两个四块钱的硬币。。。,现在输入一个正整数数m(0比如输入6,则输出3,因为6=2+4=1+1+4=1+1+2+2。下面是我的解法:#include using namespace std;int cnt=0

2017-09-13 19:09:51 3260 1

原创 小明学C++第五篇:操作系统

本篇博客重点在于文件系统,中断、进程的概念,以及整个存储系统的实现。背景前面讲到小明编写了一个多边形面积计算的程序,小明将它编译成二进制可执行代码保存在计算机中。然后小明双击该文件并运行,期间小明输入了几个顶点坐标后,最终控制台显示了正确的结果。那么这期间又发生了什么呢?文件的存储讲到文件的存储,就涉及到文件系统。 下面一段句子是微软对文件系统的描述: A file system is a

2017-08-28 20:05:05 1027

原创 小明学C++第四篇:数的表示和运算、函数调用、流水线

在小明学C++第二篇,我们看到,小明用了整型、浮点型等数据类型,那么这些数据类型在计算机里面是怎么表示的?它们的运算操作又是怎么实现的?此外,主函数调用面积计算函数calculate的时候到底发生了什么?经过翻译后,一条高级语言编写的语句变成了很多不可再分割的独立的机器语言,也就是指令。那么多的指令是如何在计算机上面运行的呢?下面我们就逐一来探讨一下以上的问题。数的表示和运算(1)为什么是二进制?

2017-08-28 12:10:29 1936

原创 小明学C++第三篇:编译原理

懒惰是人类第一生产力,抽象是计算机伟大的思想。我们都知道计算机只认识0和1,而且是按照冯诺依曼结构组织起来的。数据跟指令都存放在主存里,根据不同的指令周期来区分是数据还是指令。在早期的计算机,人类必须编写很长只有0和1的机器语言来跟计算机交流,但这是非常低效的,因为0和1只要稍不留神,就会写错,最后可能造成很大的程序错误。于是人们就发明了以助记符为标志的汇编语言,这个已经好多了,毕竟可以通过语句直接

2017-08-24 17:12:42 1566

原创 小明学C++第二篇:数据类型、数据结构、算法

语言跟文字是人类文明的象征。而数字的发明则意味着人类逻辑与理性思维的一面。从文艺复兴到电气时代,艺术和科学似乎交替地发展。在上世纪,人类发明出了计算机,从此加快了科学的发展,改变了我们的世界。计算机的核心是以数学的基础的计算科学,计算科学着眼于什么问题是可以计算的,什么是不可计算的,可以计算的问题又如何更加高效地进行计算。经过了几十年的发展,计算机领域已经积累了其特有的技术,有些算法也让人深感思想的

2017-08-23 22:10:29 904

原创 小明学c++系列之第一篇:网络篇

胡适先生曾说:“发表是吸收的利器”,于是我写下这篇文章。我看了一些计算机基础,我感觉里面的知识都没有活力,于是,我希望用我的方式将计算机的工作机制正确地、简洁地、有趣地讲明白。这篇文章适用于没有计算机基础但希望了解计算机的人以及有一些计算机基础但是对计算机缺乏一个整体认知的人。背景小明学c++其实讲得是一个故事。话说有一天小明心血来潮,突然自学计算机。他听说C++是一个不错的计算机语言,于是他打开

2017-08-22 16:56:17 2706 1

原创 路由算法:RIP、OSPF、BGP

互联网发展到现在,计算机体系已经非常庞大,在数量众多的计算机里面,计算机与计算机是怎么知道哪个线路是通的,哪条路径可以选择,才能让彼此进行通信?我们知道计算机寻路是路由器来进行的,那么路由器使用了什么方法呢?主要有以下三种方法来进行路由。内部网关协议RIPRIP协议应该是一种最简单的内部网关协议了。 内部网关协议是跟外部网关协议相对的。在自治系统(比如校园网)里面用的路由协议就是内部网关协议,而

2017-08-13 20:17:21 6878

原创 B-树和B+树

前面提到的平衡二叉树用于查找十分方便,但是这种树只能用于数据量较小的场景。当数据集较大,比如有几百万行记录的文件,其容量超过了内存的大小,就需要储存在磁盘上。在这种时候,平衡二叉树的表现并不理想,因此需要一种更好的数据结构(在数据库中叫做索引)来加快查找,这就是B树或者B+树。B-树(balance-search-tree)一颗m阶的B-树或为空树,或为满足下列特性的m叉树: (1)树中每个节点

2017-08-11 12:11:55 578

原创 二叉排序树、平衡二叉树以及红黑树

现实生活中,有很多找东西的例子,比如在学校找某个人,在驿站找快递,在信息登记表上查找某个人的信息,那么在计算机科学中,具体有哪些可以加快查找的算法?下面我们就来看看其中的动态查找算法,动态查找的意思是当你查找某个键值的信息,若存在则输出,否则将插入该键值为后续进行查找。二叉排序树首先我们来看看二叉排序树,二叉排序树有点类似于二分查找的思路,但是它用树的形式来表示查找的方向。 定义: (1)一个

2017-08-09 22:00:12 1264

原创 利用二叉树的非递归后序遍历求解最近公共祖先问题

通过上一篇的博客我们知道,可以利用栈来实现二叉树的后序遍历。其实这里有一个性质,就是当使用非递归后序遍历时,栈中的元素就是当前节点到根节点的路径。利用这个规律,我们就可以求解最近公共最先问题了。算法找出两个节点各自到根节点的路径。这里利用非递归后序遍历二叉树,既可以找到两个节点到根节点的路径。根据路径找出最近的公共祖先。首先根节点肯定是他们的祖先,可以从跟节点开始查找,直到最后一个相同的树节点

2017-08-05 22:38:34 2886 1

原创 二叉树的C++实现

数据结构与二叉树类的定义我采用链式存储结构来表示二叉树,每一个二叉树节点包含树节点的值、树的左孩子指针、树的右孩子指针:class BiNode{public: char data; struct BiNode *lchild,*rchild;};那么对于一个二叉树来说,只需要存放指向树根节点的指针即可,另外还需要声明二叉树的一些功能,比如遍历方法、求树高等(BiTree.h):

2017-08-05 22:26:28 29291 13

原创 链队列的C++实现及其应用

队列是先进先出的数据结构,符合世间万物先到先得的处理顺序。本文将列出如何实现队列。本文使用链表加上头指针和尾指针构成了队列,其中头指针指向队头元素的上一个节点(头结点),尾指针指向队尾元素。链队列实现头文件定义在LinkQueue.h:#ifndef LINKQUEUE_H_INCLUDED#define LINKQUEUE_H_INCLUDEDusing Type = int;type

2017-07-20 17:22:09 782

原创 栈的C++实现及其应用

栈是一种先进后出的数据结构,是一种功能受限的线性表。因为这世间存在这后进先出的计算顺序,为简化计算的过程,栈得以应用。好比装水的桶,好比装子弹的弹夹。栈的C++实现本文主要是编程实现栈,使用的是顺序储存结构(动态数组)来实现栈,需要注意的是当内存空间不够用,即栈满的时候,应该将重新开辟新的空间(大小为源空间大小+STACK_INCREMENT),然后将数据复制到新空间,在重新释放旧空间。 下面给

2017-07-20 14:34:30 1391

原创 最新图文讲解如何在win10环境下安装ubuntu双系统

为学习之需,本人在win10上安装了ubuntu系统,下面将用最详细易懂的方式讲解如何安装双系统。下载镜像文件并刻录到光盘百度搜索ubuntu,进入ubuntu官网,选择合适的ubuntu系统版本,下载镜像文件;(使用浏览器下载比较慢,建议使用迅雷) 下载ultraISO将iso文件刻录到U盘上: 在本地目录栏找到刚才下载的iso文件,双击该文件,将光标移至启动,按鼠标左键: 按照图片的

2017-07-16 17:47:04 37566 7

原创 ext2文件系统

经过前面两篇文章的讲解,我们对文件系统和磁盘管理有了大致的认识,那么现在我们应该找一个实例来深入认识这些方法,看看工业界是怎么把这些方法应用起来的(其实这些方法应该是首先被应用于工业界,然后再被操作系统总结出来的)。ext2文件系统,是Linux内核早期使用的文件系统,作为我们学习文件系统是很合适的。在学习ext2系统之前,我们不妨思考一下,如果给你一个光秃秃的磁盘,你需要创建一个文件系统,你要怎么

2017-07-14 11:14:32 1009

原创 操作系统之磁盘管理

磁盘存储器具有容量大、存取速度快、支持随机存取的特点,因此被广泛应用于计算机系统中。对于操作系统来说,管理好磁盘的三大要求和目标是: (1)合理有效利用磁盘:采用合理的文件存储空间分配算法,尽量减少磁盘碎片,提高硬盘的利用率; (2)提高磁盘的I/O速度:采用缓存等技术,提供访问速度; (3)提高磁盘可靠性:采用冗余和纠错检错等技术,保证磁盘的数据不会被破坏。外存的组织方式文件是

2017-07-14 10:43:44 7070

原创 操作系统之文件管理

我们知道,在内存中存储的数据在断电后将会消失,并且内存的容量很小,所以电脑中都有硬盘,用来存放大量的程序和数据(比如.cpp文件、.exe文件、MP4等视频文件),需要时再调入内存中。为了方便用户在硬盘上存放程序和数据,以及保证多用户下数据的一致性和安全问题,操作系统添加了文件管理的功能,提高了磁盘的利用率。文件和文件系统文件管理是将其管理的程序和数据看成是一系列的文件来实现的。在文件系统中,可以

2017-07-13 22:02:42 1164 1

原创 实例讲解成组链接法

成组链接法是一种用来记录磁盘空闲盘块的方法,它使得磁盘盘块的分配和回收都变得十分简单,而且没有空闲表法和空闲链表法它们的表太长的缺点,因此被引用到UNIX系统当中。成组链接法介绍计算机上的文件是记录在磁盘上的,而磁盘空间的分配是以盘块为单位的,那么如何管理磁盘中已经被使用的块和未被使用的块是操作系统必须要考虑的问题。下面将介绍比较实用又有点复杂的成组链接法,看它是如何把磁盘中所有的空闲盘块都记录起

2017-06-22 11:20:43 45620 104

原创 单链表实现

目录 线性表是数据结构的第一章,而考研和找工作都喜欢考察这方面的内容,因此,我就用C++实现了单链表,以及一些常见的算法题。本文的具体内容包括:单链表的基本操作反向输出单链表找到两个单链表的第一个公共结点对单链表进行排序将两个有序的链表合在一起,使之仍然有序单链表的基本操作不多说,直接上代码(注意基本操作中参数L的不同):///初始化一个单链表,申请头结点void InitLis

2017-06-14 17:30:22 558

原创 操作系统之进程那些事

这篇博客主要讲解进程、线程的概念,包括进程、线程的同步、通信等方法。 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是进程实体(包括二进制文件、数据和进程控制块PCB)的运行过程,是系统进行资源分配和调度的一个独立单位。 我觉得可以这样理解进程,比如你写了一个echo程序(打印用户从键盘输入的字符),编译以后变成了可执行文件,然后执行它,这时操作系统会将可执行文件调入内存中,

2017-05-10 19:19:49 572

原创 操作系统之进程调度

世界上很多问题都是跟资源分配和任务调度有关,而学会了操作系统的进程调度算法,我觉得也会给你在做事的时候带来一些启发吧。 在现代的操作系统中,有很多进程在内存中。有的正在运行,有的正等待某个事件的发生(比如等待用户敲击键盘)。那么操作系统作为一个大佬,就必须管理这些进程,让它们按照规则来,不能乱了套。进程调度的类型按照每个阶段的执行时间的相对比例来分,进程的调度类型包括一下三类: (1)长程调度:

2017-05-10 11:17:18 926

原创 操作系统之存储管理

今天我们来看一下操作系统的存储管理。目的存储器是计算机结构中必不可少的一部分,每个用户程序都需要向操作系统申请存储资源,那么操作系统在存储管理发挥怎样的作用呢? 主要有一下三点: 1、为用户使用存储空间提供方便。用户只需要在自己的逻辑空间内编程,用户只需要跟操作系统说我要用这么大的内存空间,你分给我。至于我分到哪里(具体在内存中的物理地址),别人分到哪里,我不用管。 2、充分发挥内存的利用率。

2017-05-08 16:30:02 6427

原创 谷歌面试题-100层楼两个棋子的问题

谷歌公司有道面试题:有一个100层高的大厦,从这个大厦的某一层扔下棋子恰好就会碎(称这一层为临界层)。请你用手中的两个玻璃围棋子,找出一个最优的策略来得知那个临界层。 解法:假设在最坏情况下投掷的最少次数为x,即无论临界层为几,投掷次数都小于等于x。那么我第一次投掷的楼层为x,此时有两种情况: (1)围棋子碎了:用第二个围棋子从1到x-1投掷,最多一共投掷x次可以确定临界层。 (2)围棋子没有

2017-05-07 19:54:02 1920

原创 C++后台开发面试笔记

前言我想先说我的感受: 专精计算机的一个方向,在平时学习的过程中注意积累,遇到问题最好深入了解,不要浅尝辄止。如果坚定了走程序员道路,就要在计算机方面保持兴趣与好奇心。平时广泛涉猎相关的领域(比如你搞后台就要懂安全),并且注重结果的展示(比如写博客),这个很重要。电话面试前几天我走了一个公司的内推,然后目前经历了电话面试的一面和二面,对于结果我感觉比较悬,现在我先写下电话面试的题目并尝试做出解答(有

2017-04-14 11:08:26 828

原创 算法笔记-堆排序

前言:前几天在面试中被问到一个问题:如何在100个数中找出前5大的数?其实我知道这是一个很经典的算法题,我也曾在刷剑指offer编程题的时候做过这道题,当时我是用最简单的冒泡排序来做的,比如上面那个问题就可以用冒泡五次来找到前5大的数。这个解法的时间复杂度是O(n*k),其中n是数据规模,k是找出前k个大小的数。后来,我发现了一种更高效的解法-堆排序算法,维持一个k大小的最大堆,遍历后面的元素,如果

2017-04-08 17:07:18 591

原创 C & C++ 复习笔记

这篇文章主要是我复习一些C和C++时记录的一些知识点,以备不时之需,常常浏览,温故而知新~union和structunion为联合体、共用体,而struct为结构体;他们的相同点是:都可以包含多种数据类型。具体的使用规则见:联合体;其实从名字上已经可以看出来,联合体就是在内存开辟一个空间,它的大小跟联合体里面最大的数据类型一样,举个例子,我定义了一个书包,书包可以放电脑和书和其他东西,书包的大小由电

2017-03-20 11:26:00 448

原创 最近点对问题

问题描述:以(x,y)表示一个点,随机生成n个点,求出最近的一对点。解法一:蛮力法思路:用一个变量minD记录最近的距离,初始值为无穷大(int的最大表示范围),然后在n个点选取2个点(组合问题,一共有C n取2种可能),计算它们的距离,如果比minD小,更新minD的值,一直循环,复杂度为O(n*n)。 上代码(下述所有代码样例的头文件都一样,用codeblock编译器执行):#include

2016-10-11 21:14:01 883

原创 简单选择排序

简单选择:简单选择顾名思义,就是第一次选择最小的元素放到数组第一位,第二次选择次小的放到数组第二位,以此类推,循环n次,直到数组有序为止。 //选择排序算法void select_sort(int * a, int n){ int i,j,index; for(i =0 ;i<n;++i) { index = i; //遍历数组,寻找当前最

2016-09-28 22:04:01 388

原创 插入排序

中心思想:考虑你正在斗地主,对方发给你一堆牌,你右手摸牌,左手拿牌,第一次摸到10放到左手,第二次摸到3就放到10左边,第三次摸到K放10右边,左手上的牌一直保持有序,直到左手拿着所有的牌为止。这就是插入排序。 插入排序从第二个元素开始,在前面已排好序的序列中寻找合适的位置并插入,使之仍然有序。 插入排序最多的步骤在于移位操作,每个元素插入之前,数组的大于待插入值的元素必须事先挪位,故插入排序在

2016-09-28 10:22:56 358

空空如也

空空如也

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

TA关注的人

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