自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Steven Li's Zone

A fighting panda. Learning makes me happy.

  • 博客(178)
  • 收藏
  • 关注

原创 【Algorithm】 Reservoir Sampling & Shuffle an Array

Reservoir Sampling Example Question:Randomly choosingksamples from a list ofnitems,wherenis either a very large or unknown number. Typicallynis large enough that the list doesn’t fit in...

2020-04-12 08:34:05 280

原创 【SLAM】读书笔记1 -- 概览

SLAM 技术 是一种用于帮助机器人自定位的技术。定位,需要知道:1)我周围是什么样的环境;2)我在这个环境当中的哪个地方;机器人可以通过传感器去感知周围的环境,这些传感器可以分为依赖外部的和靠自身的。依赖外部例如:GPS、环境中的QR code来标注landmark,自身的例如:camera, IMU (Inertial measurement unit测量加速度)等。硬件部分:...

2020-04-05 13:00:21 253

原创 System Design: AWS How to choose database 网课笔记

版权所归:https://www.youtube.com/watch?v=6K0Sds9Y2N0数据库的分类:归纳总结:1)Relational 数据库在意的是用foreign key去维持表的integrity. 犹如医院的病患系统,一张诊断表,必须要医生的ID(必要的维持integrity的foreign key)、病人的ID(另一个foreign key)以...

2019-11-25 15:20:25 346

原创 Algorithm: DP (II): 求Maximum 问题 关键在于每一步的全局最优的选择关于做和不做(做则代表当前local的最优 > 不做的全局最优)

1235.Maximum Profit in Job SchedulingWe havenjobs, where every jobis scheduled to be done fromstartTime[i]toendTime[i], obtaining a profitofprofit[i].You're given thestartTime,endTi...

2019-11-21 14:32:16 308

原创 Algorithm: Backtracking (回溯) 通常用于暴力列举、排列组合灯,注意 Pruning以优化 (LC 1240)

LC 1240Tiling a Rectangle with the Fewest SquaresGiven a rectangle of sizenxm, find the minimum number of integer-sided squares that tile the rectangle.Example 1:Input: n = 2, m = 3Outp...

2019-11-17 03:48:07 246

原创 System Design: Optimization Directions

Underlying Principle: 1/ Separation makes scalability better. Since you can scale each individually. Example: Separate write and read; separate meta data storage and target content storage. 2/ Cache: ...

2018-07-08 11:31:02 442

原创 Algorithm: Binary Search

Binary Search是对于sorted或者部分sorted,能找到大小关系可以使搜索朝着“正确”方向前进的,省掉了不正确方向的搜索。所以是每次搜索都是logn的复杂度。如果需要遍历n个元素,则是O(nlogn)的复杂度。4. Median of Two Sorted Arrays33. Search in Rotated Sorted Array34. Search for a Range4...

2018-04-26 12:28:34 344

原创 Algorithm: Two pointers

双指针一般用两个用处:1)在排序的数组中,搜索target答案。或者在不能改变元素位置的追求最大或者最小的情况下,不用排序根据比大小追求答案(LC11)。2) 在链表当中确定某个元素的位置。数组搜索:11. Container With Most Water15. 3Sum16. 3Sum Closest26. Remove Duplicates from Sorted Array(这题的原理就是...

2018-04-22 11:10:40 282

原创 System Design: Web Crawler

资料整理来源:https://www.jiuzhang.com/qa/871/https://zhuanlan.zhihu.com/p/20821699Crawler实质是一个BFS的过程。从某个网站的主页开始作为起点,进行BFS。对每一个页面含有的URL都放入队列当中。再进行迭代。我们可以把整个过程抽象成为一幅有向图的BFS。但是,爬虫可以在BFS的基础上产生更多的问题。比如,每个页面还有很多的...

2018-04-12 03:55:08 892

原创 Algorithm: 数学基础在编程的应用(LC题目)

263. Ugly Number264. Ugly Number II313. Super Ugly Number263. Ugly NumberWrite a program to check whether a given number is an ugly number.Ugly numbers are positive numbers whose prime factors only in...

2018-04-11 08:38:48 560

原创 Algorithm: Union Find (并查集查找)

Union Find是基于disjoint set的原理去判断一个图中元素之间的连通性或者说关联性的方法。关于Disjoint Set的原理,可以参考这篇文章:https://blog.csdn.net/firehotest/article/details/53503624其中提到了,生成最小生成树的kruskal 算法是基于disjoint set的基础上的。disjoint set的基本操作就...

2018-04-10 08:43:04 602

原创 Algorithm: General细节实现

提纲:157. Read N Characters Given Read4158. Read N Characters Given Read4 II - Call multiple times157. Read N Characters Given Read4The API: int read4(char *buf) reads 4 characters at a time from a file...

2018-03-26 03:48:59 239

原创 Algorithm: 数组类细节题

提纲:163. Missing Ranges228. Summary Ranges56. Merge Intervals57. Insert Interval163. Missing RangesGiven a sorted integer array where the range of elements are in the inclusive range

2018-03-26 02:55:19 260

原创 Algorithm: 有趣的动态规划

前一阵子,看了一篇对Best time buy and sell stock的动态规划总结。作者把动态规划的本质用一句话描述:定义状态,状态数组的维数由决定状态的因素构成(多少个因素就是多少维)。动态规划是bottom - top的方法,而备忘录法 (memorization)则是top - bottom的方法。动态规划常见的降维方法是:滚动数组。备忘录法例子:361. Bomb Enemy备忘录...

2018-03-25 09:20:07 488

原创 Algorithm: 计算类题目归类整理

提纲:166. Fraction to Recurring Decimal43. Multiply Strings415. Add Strings67. Add Binary(思路和模板与上一题相同)371. Sum of Two Integers(用位操作来代替实际的加减)下面两题思路一样(找到第一个非9的数,接着执行相应的操作):66. Plus One369. Plus One Linked...

2018-03-25 03:10:58 904

原创 Operation System: 多线程笔记

这篇文章主要记录一些关于多线程的比较零散的内容。一、关于数据的可见性 & 内存屏障根据内存模型,数据被某一个核所利用之后,会存在其cache甚至寄存器当中。当这段程序更新这个数据之后,未必马上写入内存。此时,如果另一个线程(在另一个核上运行的内核态线程)读取这个数据,可能读到的还是旧的值。这时候,这个数据就是对另外的一个线程是不可见的。那么,vola

2017-11-10 03:06:19 425

原创 Java Notes: Synchronized的类锁和对象锁以及谈谈线性安全类

首先,我们需要明确一点认识:任何对象都存在一把锁。如果对象是一个人,那么锁就像ta保管的钥匙,有且只有唯一一根。这就是对象锁。如果一段代码被synchronized(object)包围了,证明一个线程如果想要执行这段代码,它要首先拿到object的钥匙。如果这把钥匙被其它的线程拿走了,那你就只能等其它的线程把这把钥匙换回来。如果object1和object2属于同一类的不同

2017-11-06 03:57:43 441

转载 Operation System: Locks Classification Perspectives

本文主要参考:http://www.importnew.com/19472.html对于锁的认识,我个人认为需要分为几个角度进行总结。首先,是基础角度,从最普遍的分类开始说起。接着,从公平锁/非公平锁、可重入锁、乐观锁(CAE)/悲观锁和共享锁/排它锁。基础分类:互斥锁 (mutex)、信号量锁 (semaphore)、读写锁(read/write lock)以

2017-11-03 10:17:40 317

原创 Algorithms: Bit Manipulation(位操作)

位操作在编程语言中,支持以下四种逻辑操作:与(&), 或(|), 非(~)和异或(^)。而在Java当中,移位操作包括:> 带符号右移, >>>忽略符号位,空位补0.注意,在Java中,& > ^ > | 位运算符的优先级是比 ==, !=两个逻辑运算符低。但比&&和||高。所以记得加括号,必须要的时候。位运算常用的套路:1) 设置一个位:A |= 1 2)

2017-10-01 01:31:40 748

原创 Data Structure: Binary Index Tree(LC308作为例子)

Binary Index Tree适合用以Range Query. 例如:求一个大区间的某个小区间的和。为什么要使用Binary Index Tree?先看看,如果不使用Binary Index Tree的话,我们可以使用的方法。1)直接求。那么复杂度是O(mn)。m是查询次数,n是大区间的元素个数。2)使用sum的array,建立一个array,每个ind

2017-09-29 23:10:17 1427

原创 Data Structure: Segment Tree 线段树

线段树主要用于Range Query. 适用问题在:这个大区域的某个子区间最小值,这个大区间的某个子区间的和等等。线段树的某个叶子节点都是代表一个大区间的元素。为什么要使用线段树?那先让我们看看,如果不使用线段树,上述的求某个子区间最小值的问题该如何解决。方案1:每次query都去遍历一次子区间。如果有m次查询,有n个元素的话,时间复杂度就是O(mn)。

2017-09-29 12:02:29 458

原创 System Design: How to design a tiny URL

At first glance, this problem seems to very easy. We can solve it with a HashMap. However, if you think it more deeper, you will find out HashMap approach does not have scalablity and persistenc

2017-09-28 03:33:13 1523

原创 Data Structure: 图的拓扑排序

Course ScheduleThere are a total of n courses you have to take, labeled from 0 to n - 1.Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is e...

2017-09-13 12:21:39 355

原创 Data Structure: Trie(字典树)

字典树是一个用数组(数组代表子节点数目是静态的)来表示子节点的树结构。同时节点也需要域:boolean isEnd。 本文章参考:https://leetcode.com/problems/implement-trie-prefix-tree/solution/Trie的一些应用:1)Autocomplete; 2) Spell checker; 3) IP routing

2017-09-10 03:02:17 704

转载 C++ Special: 复制构造函数、虚析构函数、运算符重载(友元)

参考链接:http://www.cnblogs.com/mr-wid/archive/2013/02/20/2919842.htmlhttp://blog.csdn.net/hackbuteer1/article/details/7558868http://blog.csdn.net/starlee/article/details/619827一般而言,C++创建一

2017-08-11 00:22:21 482

转载 C++ Special:const关键字和常量指针 vs 指针常量

参考:http://blog.csdn.net/Eric_Jo/article/details/41385481、修饰primitive 变量,必须在定义的时候赋值。除了一个特殊情况:将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在程序其他地方进行了定义.     extend const int V

2017-08-10 04:38:04 507

转载 C++ Special: 四种类型转换

static_cast 、dynamic_cast、 reindivter_cast、 const_cast。四种类型转换。文章来自:http://www.cnblogs.com/TenosDoIt/p/3175217.html 和 http://blog.jobbole.com/108817/1、static_cast该运算符把exdivssion转换为typ

2017-08-10 03:24:42 595

转载 How to write a good design document for peer engineers (如何写一份给工程师看的技术文档)

Content comes from: http://blog.slickedit.com/2007/05/how-to-write-an-effective-design-document/第一部分:阐述你的工程需要解决什么问题,目标的用户是谁。同时,通过写这个部分,你可以知道你的目标工程是否合理且有存在的意义。第二部分:从high level去阐述这个工程的构成部分有哪

2017-07-27 23:32:52 839

原创 Distributed System: Message (信息传递) and JMI

Message机制的动机:为什么要用Message作为不同的计算机的进程间的通信机制?目的在于——松耦合 (Decoupled)。我们需要一种机制,既能Decoupled in time(即通信的时候,双方不需要同时在线。电话是coupled in time,短信则是decoupled in time),同时也能Decoupled in space(你不需要知道你的通信对象是谁,不需要

2017-04-28 02:31:36 541

原创 Distributed System: Naming Service (命名服务)

About Naming Service:Name Space (命名空间):在一个特定空间内,某一资源(文件、网页、音乐、图像等)具有全局唯一的标识符URI(名字)。例如,目前的互联网(Internet)就是最大的一个Namespace. 命名的分类:Flat or Hierarchy. 前面的可以用类似于:Hash Code或者C++的某个命名空间内的变量名、类名来举例

2017-04-27 05:11:20 3132

转载 Distributed System: Hadoop MapReduce框架的角色和Job提交过程

Map/Reduce计算集群由一个单独的JobTracker(master) 和每个集群节点一个 TaskTracker(slave)共同组成。JobTracker负责调度构成一个作业的所有任务,这些任务会被分派到不同的TaskTracker上去执行,JobTracker会监控它们的执行、重新执行已经失败的任务。(失败重启由JobTracker确保)而TaskTracker

2017-04-09 22:31:39 582

转载 Distributed System: Storm 的基础介绍

以下内容来自:http://www.cnblogs.com/Jack47/p/storm_intro-1.html 与 http://www.cnblogs.com/swanspouse/p/5135679.htmlStorm的官方介绍:Storm是一个免费并开源的分布式实时计算系统。利用Storm可以很容易做到可靠地处理无限的数据流,像Hadoop批量处理大数据一样,St

2017-04-09 22:20:30 464

转载 Distributed System: MapReduce 可调参数与优化方向

参考前一篇文章:http://blog.csdn.net/firehotest/article/details/69498843我们可以知道,MapReduce的详细流程如下:将InputFile进行Split之后,每个Split的块对应一个Mapper。默认的块大小和Block大小一致,64MB。然后通过Record Reader进行字节流到初始KV对的转换。譬如Word

2017-04-09 10:58:32 628

转载 Distributed System: 常见的分布式计算工具以及MapReduce详解

参考链接:https://www.zhihu.com/question/198503651:MapReduce(MR),最为general和流行的一个分布式计算框架,其开源实现Hadoop已经得到了极为广泛的运用(Facebook, Yahoo!等等),同时在Hadoop基础上发展起来的项目也有很多(Hive是发展最好的),另外像Cloudera,Hortonworks,MapR这样的

2017-04-09 08:25:16 2203

原创 Distributed System: DFS系列 -- NFS, AFS & HDFS(GFS)

分布式文件系统是分布式系统的基石,本文从较上层的高度对常见的三个分布式文件系统:NFS、AFS和HDFS进行介绍。分布式文件系统有两大模式:1) Remote Access Model.在这种模式下,非本地文件不会复制到本地,所以对非本地文件的读取和修改,利用RPC进行。利用这种模式,可以减少对consistency的考虑(适用于对consistency要求高的

2017-04-05 10:38:15 9646

原创 Algorithms: Rectangle related Questions

子问题 I:储水问题11. Container With Most Water从两边用两个指针一直遍历到中间。理论上,两边拥有最长的长,高度由两边中的较低的边决定。关键是如何递增或递减。为了求最大的面积,当长度变小时,直觉上应该保留更长的边,将更小的边的index递增或者递减,才有可能更新面积。想明白以上,这道题就不难了。42. Trapping Rain Water

2017-03-21 11:15:08 403

原创 Algorithms: Squares Related Questions

367. Valid Perfect Square(理论:平方数可以表示为 1 + 3 + 5 + 7 ...;或者利用二分法看看最后的start或者end有没有平方后等于给定的数)279. Perfect Squares利用动态规划:一个长度为n + 1的数组,代表该数字 (0 - n)最少由多少个平方数乘积。dp[0] = 0. 其余初始化为Integer.MAX_VALU

2017-03-21 08:48:42 373

转载 Distributed System: ZooKeeper系列之四 (Hadoop和HBase的应用)

这期文章,参考Linux 爱好者公众号的文章《ZooKeeper原理及其在Hadoop和Hbase中的应用》而归纳整理的。理解一下内容之前,先提一句,ZooKeeper节点一般不与Master节点放在一个物理节点下,为了分担压力。在Ambari建立集群的时候,记忆中似乎是要强制分开两者到不同的物理节点上。Hadoop(HDFS,YARN和HBase): 在Had

2017-03-18 23:08:32 548

转载 Distributed System: ZooKeeper系列之三 (Master选举和分布式锁)

这期文章,参考Linux 爱好者公众号的文章《ZooKeeper原理及其在Hadoop和Hbase中的应用》而归纳整理的。其实,Master的选举和分布式锁属于ZooKeeper实现的分布式系统的功能。下面继续来讲讲这两个常用的应用场景。Master选举:Master选举可以说是ZooKeeper最典型的应用场景了。比如HDFS中Active N

2017-03-18 22:13:46 1233

转载 Distributed System: ZooKeeper系列之二 (功能)

上期在文章 http://blog.csdn.net/firehotest/article/details/60312648 简要解释了ZooKeeper的来源及其ZAB的应用。是在PAXOS的状态机模型下,更加注重更改的任务顺序与用户的请求顺序一致的“先来后到”。这期文章,参考Linux 爱好者公众号的文章《ZooKeeper原理及其在Hadoop和HBase中的应用》而归纳整理的。

2017-03-18 12:05:07 421

空空如也

空空如也

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

TA关注的人

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