08 2018 档案
摘要:简易地图 如图所示简易地图, 其中绿色方块的是起点 (用 A 表示), 中间蓝色的是障碍物, 红色的方块 (用 B 表示) 是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方块. 二维数组在游戏中的应用是很多的, 比如贪吃蛇和俄罗斯方块基本原理就是移动方块而已. 而大型游戏
阅读全文
摘要:本文主要讲解最大流问题的Ford-Fulkerson解法。可以说这是一种方法,而不是算法,因为它包含具有不同运行时间的几种实现。该方法依赖于三种重要思想:残留网络,增广路径和割。 在介绍着三种概念之前,我们先简单介绍下Ford-Fulkerson方法的基本思想。首先需要了解的是Ford-Fulker
阅读全文
摘要:最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。 例如,对于如上图G4所示的连通网可以有多棵权值总和不相同的生成树。 普里姆算法介绍 普里姆(Prim)算法,是用来求加权连通图的最小生成树的算法。 基
阅读全文
摘要:基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点vs(即从顶点vs开始计算)。 此外,引进两个集合S和U。S的作用是记录已求出最短路径的顶点,而U则是记录还未求出最短路径的顶点(以及该顶点到起点vs的距离)。 初始时,S中只有起点vs;U中是除vs之外的顶点,并且U中顶点的路径是"
阅读全文
摘要:布隆过滤器 (Bloom Filter)是由Burton Howard Bloom于1970年提出,它是一种space efficient的概率型数据结构,用于判断一个元素是否在集合中。在垃圾邮件过滤的黑白名单方法、爬虫(Crawler)的网址判重模块中等等经常被用到。哈希表也能用于判断元素是否在集
阅读全文
摘要:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)" Bit-map空间压缩和快速排序去重 1. Bit-map的基本思想 32位机器上,对于一个整型数,比如int a=1 在内存中占32bit位,这是为了方便计算机的运算。但是
阅读全文
摘要:深度优先搜索 深度优先搜索,我们以无向图为例。 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通
阅读全文
摘要:必须做到以下两点:1.如果stackPush要往stackPop中压数据,那么必须一次性把stackPush中的数据全部压入。2.如果stackPop不为空,stackPush绝对不能向stackPop中压入数据。
阅读全文
摘要:队列有两种实现方式:静态队列(数组)和动态队列(链表)。 这次我就使用数组来实现静态队列了。值得注意的是:往往实现静态队列,我们都是做成循环队列。 从上面的设计我们可以发现:rear并不指向最后一个有效的元素,在循环队列中这样设计是非常方便的!因为这样设计可以让我们分得清队头和队尾(不然循环队列不断
阅读全文
摘要:栈有两种实现:静态栈(数组)和动态栈(链表)。这里采用链表。
阅读全文
摘要:package com.darrenchan; public class MyList { /** * 插入(头插法) */ public static void headInsert(ListNode head, ListNode newhead){ ListNode old = head; head = newhead; ...
阅读全文
摘要:阿里交叉面试问到了这个题,当时感觉没有答好,主要是对Hive这块还是不熟悉,其实可以采用row_number()函数。 1、ROW_NUMBER,RANK(),DENSE_RANK() 语法格式:row_number() OVER (partition by COL1 order by COL2 d
阅读全文
摘要:随着互联网、云计算及大数据等信息技术的发展,越来越多的应用依赖于对海量数据的存储和处理,如智能监控、电子商务、地理信息等,这些应用都需要对海量图片的存储和检索。由于图片大多是小文件(80%大小在数MB以内),以GFS、HDFS为代表的适用于流式访问大文件的分布式存储系统,若直接用来存储图片,由于元数
阅读全文
摘要:ceph 官方网站:http://docs.ceph.org.cn/ 简单介绍: Ceph是一个开源的分布存储系统,同时提供对象存储、块存储和文件存储。linux内核2.6.34将ceph加入到内核中,红帽基于ceph出了redhat ceph storage. 支持TB级存储 支持高可用、容灾备份
阅读全文
摘要:在面试头条的时候,有一个很有意思的题目,利用两个线程交替打印一个字符串,这里主要就是对多线程中wait/notify的应用,特此记录。 对于wait()和notify()的理解,还是要从jdk官方文档中开始,在Object类方法中有: 上面是官方文档的简介,下面我们根据官方文档总结一下: wait(
阅读全文
摘要:这几道题是我在面试中亲身经历的,在面试滴滴的过程中,我遇到过最大子数组和;在面试阿里的过程中,我遇到过最长重复子串;在面试头条过程中,我遇到过最长无重复字符子串。 1. 最大子数组和 比如,给定一个数组, 1, -2, 3, -4, 5, 6, -7 应该输出, 11。 public static
阅读全文
摘要:数据倾斜是进行大数据计算时最经常遇到的问题之一。当我们在执行HiveQL或者运行MapReduce作业时候,如果遇到一直卡在map100%,reduce99%一般就是遇到了数据倾斜的问题。数据倾斜其实是进行分布式计算的时候,某些节点的计算能力比较强或者需要计算的数据比较少,早早执行完了,某些节点计算
阅读全文