- 博客(126)
- 收藏
- 关注
转载 Leveldb源码分析--1
Leveldb源码分析2012年1月21号开始研究下leveldb的代码,Google两位大牛开发的单机KV存储系统,涉及到了skip list、内存KV table、LRU cache管理、table文件存储、operation log系统等。先从边边角角的小角色开始扫。不得不说,Google大牛的代码风格太好了,读起来很舒服,不像有些开源项目,很快就看不下去了。开始之前先来看看Le...
2018-07-19 23:32:16 575
转载 LSM树由来、设计思想以及应用到HBase的索引
讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来:哈希存储引擎 是哈希表的持久化实现,支持增、删、改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)快,如果不需要有序的遍历数据,哈希表就是your Mr.RightB树存储引擎是B树(关于B树的由来...
2018-07-19 23:08:17 222
转载 HIVE与PIG对比
什么是HIVEhive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。hive参考手册什么是pigpig是在HDFS和MapReduce之上的数据流处理语言(脚本语言),它将数...
2018-07-18 23:27:29 3819
转载 GBDT 入门教程之原理、所解决的问题、应用场景讲解
转载:https://toutiao.io/posts/u52t61/previewGBDT (Gradient Boosting Decision Tree) 又叫 MART (Multiple Additive Regre...
2018-07-18 23:26:18 317
转载 聊聊阿里面试的三个层次
最近去阿里的菜鸟国际做了一次面试交流,发现大公司对于面试者的知识结构考核非常严谨,可以作为我们日常工作学习的指导。虽然很多人说面试问到的东西在实际工作中很少用到,甚至有「面试造火箭,工作拧螺丝」的说法。但从面试中,其实可以看得出来现在的公司对...
2018-07-18 23:24:28 4422
原创 200层高的大楼,两个鸡蛋,如果在N扔下不碎的话,那么N-1之下都不碎。在最坏的情况下怎么用两个鸡蛋试出会碎掉的楼层
一般的思路是200层高的话,一般将楼层分成两部分,200开根号是14.X, 也就是15,那么每隔15层的时候,扔一个鸡蛋,然后碎了之后从上一个15层的时候开始向上累加,总共最多可能扔下的次数是15 + 15 = 30次。但是这种情况下实际上没有最优化均摊鸡蛋碎掉的楼层数目,假设第一次仍在x楼,那么第二次实际上应该仍在X + X - 1楼,这样可以扔的第一次带来的次数累积情况,通过第二个鸡蛋来弥
2016-09-14 16:32:29 2244
原创 利用Trie树,来查找单词出现的次数
Trie节点class TrieNode { TrieNode nodes[]; boolean isSentence; //称为一个句子的话仍然可能会有子节点 int count; //表示当前节点实际上代表了多少个相同的单词 public TrieNode() { nodes = new TrieNode[26]; //26个英文字母
2016-09-13 16:24:06 1653
原创 洪水问题
在一个nxm矩阵形状的城市里爆发了洪水,洪水从(0,0)的格子流到这个城市,在这个矩阵中有的格子有一些建筑,洪水只能在没有建筑的格子流动。请返回洪水流到(n - 1,m - 1)的最早时间(洪水只能从一个格子流到其相邻的格子且洪水单位时间能从一个格子流到相邻格子)。给定一个矩阵map表示城市,其中map[i][j]表示坐标为(i,j)的格子,值为1代表该格子有建筑,0代表没有建筑。同时给定矩阵的大
2016-09-10 18:49:50 1032
原创 JUC框架部分小结
ConcurrentHashMap:底层结构和HashMap是相同的。继承自ConcurrentMap,AbstractMap以及序列化接口内部类主要有Node类以及Traverser类,CollectionView类。Node用于存储键值对,有子类ForwardingNode以及TreeBin类,ReservationNode类以及TreeBin类。Traverser类主要用于遍历操作。Coll
2016-09-08 10:21:28 2458
原创 java去除注释
将形如/**/已经//的注释都去掉,代码如下:这是别人写的,只是拿过来参考下package removeNotes;/** * Created by 12083 on 2016/9/7. */import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import jav
2016-09-07 22:47:03 4241 1
原创 SQL小结
SQL 常用语句积累: 一、 SQL 基本语句 SQL 分类: DDL —数据定义语言 (Create , Alter , Drop , DECLARE) DML —数据操纵语言 (Select , Delete , Update , Insert) DCL —数据控制语言 (GRANT , REVOKE , COMMIT , ROLLBACK)首先 , 简要介绍基础语句: 1 、说明:
2016-09-05 10:06:59 521
原创 Hibernate的一级缓存以及二级缓存
Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存,这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。一级缓存和二级缓存的要点配置
2016-09-01 22:53:37 312
原创 最长合成字符串
有一组单词,请编写一个程序,在数组中找出由数组中字符串组成的最长的串A,即A是由其它单词组成的(可重复)最长的单词。给定一个string数组str,同时给定数组的大小n。请返回最长单词的长度,保证题意所述的最长单词存在。测试样例:[“a”,”b”,”c”,”ab”,”bc”,”abc”],6,返回:3,因为abc可以由其他的字符串组成,/*先按字符串长度排个序哦,然后从长度最长的开始判断是否是
2016-09-01 16:27:34 671
原创 单词的最近距离
有一篇文章内含多个单词,现给定两个单词,请设计一个高效算法,找出文中这两个单词的最短距离(即最少相隔的单词数,也就是两个单词在文章中位置的差的绝对值)。给定一个string数组article,代表所给文章,同时给定文章的单词数n和待查找的两个单词x和y。请返回两个单词的最短距离。保证两个单词均在文中出现且不相同,同时保证文章单词数小于等于1000。代码如下public class Distan
2016-09-01 16:19:26 1066
原创 下一个较大元素
现在我们有一个int数组,请你找出数组中每个元素的下一个比它大的元素。给定一个int数组A及数组的大小n,请返回一个int数组,代表每个元素比他大的下一个元素,若不存在则为-1。保证数组中元素均为正整数。测试样例:[11,13,10,5,12,21,3],7 返回:[13,21,12,12,21,-1,-1]/*从后向前维护一个递减栈。最右边的那个值肯定没有最大值,所以肯定是-1。初始栈为-
2016-09-01 16:01:53 1058
原创 2的个数
请编写一个方法,输出0到n(包括n)中数字2出现了几次。给定一个正整数n,请返回0到n的数字中2出现了几次。测试样例:10 返回:1/*需要优化进行求解,我们可以计算各个位置的2数字的个数;例如:xxxx2 仅仅是个位数字是2的情况 2的高位是0~1999 所以2000*1 2的后面没有低位同理 计算百位为2的情况:12209 当百位是2的时候,还是有200-299,1200-1299,
2016-09-01 15:12:23 841
原创 词频统计
请设计一个高效的方法,找出任意指定单词在一篇文章中的出现频数。给定一个string数组article和数组大小n及一个待统计单词word,请返回该单词在文章中的出现频数。保证文章的词数小于等于1000。//可以直接使用STL的countclass Frequency {public: int getFrequency(vector<string> article, int n, str
2016-09-01 14:48:23 672
原创 数字发音
有一个非负整数,请编写一个算法,打印该整数的英文描述。 给定一个int x,请返回一个string,为该整数的英文描述。测试样例: 1234 返回:”One Thousand,Two Hundred Thirty Four”private string[] belowTen = new String[] {"", "One", "Two", "Three", "Four", "Five",
2016-09-01 14:41:24 478
原创 最小调整有序
有一个整数数组,请编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的。注意:n-m应该越小越好,也就是说,找出符合条件的最短序列。 给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的起点和终点。(原序列位置从0开始标号,若原序列有序,返回[0,0])。保证A中元素均为正整数。测试样例:[1,4,6,5,9,10],6 返回:[2,3]/*进行两
2016-09-01 14:38:53 736
原创 珠玑妙算
我们现在有四个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,可能的情况为RGGB(槽1为红色,槽2、3为绿色,槽4为蓝色),作为玩家,你需要试图猜出颜色的组合。比如,你可能猜YRGB。要是你猜对了某个槽的颜色,则算一次“猜中”。要是只是猜对了颜色但槽位猜错了,则算一次“伪猜中”。注意,“猜中”不能算入“伪猜中”。 给定两个string A和guess。分别表示
2016-09-01 14:29:54 2162
原创 无判断max
请编写一个方法,找出两个数字中最大的那个。条件是不得使用if-else等比较和判断运算符。 给定两个int a和b,请返回较大的一个数。若两数相同则返回任意一个。测试样例: 1,2 , 返回:2public int getMax(int a ,int b){ b = a-b;//此时b>>31为1则b小于0即a<b,若b>>31为0 则a>b a- = b&(b>>31); /
2016-09-01 14:00:23 507
原创 维护x的秩
现在我们要读入一串数,同时要求在读入每个数的时候算出它的秩,即在当前数组中小于等于它的数的个数(不包括它自身),请设计一个高效的数据结构和算法来实现这个功能。 给定一个int数组A,同时给定它的大小n,请返回一个int数组,元素为每次加入的数的秩。保证数组大小小于等于5000。测试样例: [1,2,3,4,5,6,7],7 返回:[0,1,2,3,4,5,6]简单的方法可以像下面这样做:
2016-09-01 12:35:00 833
原创 找出字符串
有一个排过序的字符串数组,但是其中有插入了一些空字符串,请设计一个算法,找出给定字符串的位置。算法的查找部分的复杂度应该为log级别。 给定一个string数组str,同时给定数组大小n和需要查找的string x,请返回该串的位置(位置从零开始)。测试样例:[“a”,”b”,”“,”c”,”“,”d”],6,”c”, 返回:3class Finder {public: int
2016-09-01 12:11:27 368
原创 元素查找
有一个排过序的数组,包含n个整数,但是这个数组向左进行了一定长度的移位,例如,原数组为[1,2,3,4,5,6],向左移位5个位置即变成了[6,1,2,3,4,5],现在对于移位后的数组,需要查找某个元素的位置。请设计一个复杂度为log级别的算法完成这个任务。给定一个int数组A,为移位后的数组,同时给定数组大小n和需要查找的元素的值x,请返回x的位置(位置从零开始)。保证数组中元素互异。测试样
2016-09-01 11:00:13 424
原创 变位词排序
请编写一个方法,对一个字符串数组进行排序,将所有变位词合并,保留其字典序最小的一个串。这里的变位词指变换其字母顺序所构成的新的词或短语。例如”triangle”和”integral”就是变位词。 给定一个string的数组str和数组大小int n,请返回排序合并后的数组。保证字符串串长小于等于20,数组大小小于等于300。测试样例:[“ab”,”ba”,”abc”,”cba”], 返回:[“
2016-09-01 10:13:56 369
原创 堆箱子问题
有一堆箱子,每个箱子宽为wi,长为di,高为hi,现在需要将箱子都堆起来,而且为了使堆起来的箱子不到,上面的箱子的宽度和长度必须小于下面的箱子。请实现一个方法,求出能堆出的最高的高度,这里的高度即堆起来的所有箱子的高度之和。给定三个int数组w,l,h,分别表示每个箱子宽、长和高,同时给定箱子的数目n。请返回能堆成的最高的高度。保证n小于等于500。测试样例:[1,1,1],[1,1,1],[1
2016-09-01 09:59:22 2428
原创 二维子数组最大值
原数组B[M+1][N+1],但是存数的时候都是从1开始的,将B[i][0]和B[0][j]都初始化为0,方便未来的计算。下面计算以B[1][1]为左上角,右下角任意的矩形的元素和。用PS[M+1][N+1]存储。编程之美上的伪码如下for(i=0; i<=M; i++) PS[i][0]=0;for(j=0; j<=N; j++) PS[0][j]=0;for(i
2016-08-31 20:11:06 392
原创 阶乘N!末尾0个数以及其最低位1的位置
首先是末尾的0的个数://这个实际上就是阶乘中含有的5的个数,如下://阶乘结尾0的个数int tailZero(int n){ int count = 0; for (int i = 0; i <= n; ++i){ while (i != 0 && i % 5 == 0){ count ++; //注意这里是++
2016-08-31 18:57:02 336
原创 电梯调度算法
一栋楼有6层,现在设计一种电梯调度算法:电梯在一楼让大家上电梯,然后根据大家选择要到的楼层算出某一楼层i,电梯在i层停下让所有人下电梯,然后大家爬楼梯达到自己的楼层。请问电梯停在哪一层,可以使得这一次的所有乘客爬楼层之和最短?dp算法:假设停在i层,有N1个人在i层之下,N2个人在i层,N3个人在i层之上,若电梯停在i + 1层,则爬楼层总和需要增加 N1 + N2 - N3层,若N1 + N2
2016-08-31 15:53:42 3214
原创 git,vim,gdb常用的命令小结
gitgit status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git commit -am "init" 提交并且加注释 git push origin master 将文件给推到服务器上 git branch -D master develop 删除本地库developgit merge origin/dev 将分支dev与当前分支进行
2016-08-21 19:45:09 513
原创 面试问题汇总
Qt面试以及常用类继承关系图0-1背包问题 KMP算法分糖果跳跃游戏加油站找零问题 数bit 1的个数最大乘积子数组数位不相同的数 Perfect Squares 最长递增子序列摇摆数组 股票最大利润 旋转链表重序链表二叉树最大路径长度恢复二叉搜索树 唯一二叉搜索树二叉树横向连接二叉树叶节点和右侧视角的二叉树计算一棵完全二叉树上节点的数目二叉树的最小深度
2016-08-21 17:03:56 540
原创 Qt面试以及常用类继承关系图
关于Qt的事件事件的产生: 产生来源有timer事件外设的事件(mouseMoveEvent……),timer事件,滚轮事件,界面重绘制事件等等事件的接受与处理:QObject对象,也就是Qt的所有对象可以通过重写protect的Event方法来对相应的时间进行接受以及处理事件的分发:Gui程序由QApplication来分发,而非Gui程序由QCoreApplication来进行分发。他们利
2016-08-21 14:33:27 13619 1
原创 0-1背包问题
有n个物品,编号为i的物品的重量为w[i],价值为v[i],现在要从这些物品中选一些物品装到一个容量为m的背包中,使得背包内物体在总重量不超过m的前提下价值尽量大int maxPackage(vector<int> & w, vector<int> & v, int maxWeight){ int sz = w.size(); vector<int> dp(maxWeight +
2016-08-20 21:05:51 398
原创 KMP算法
Next数组的含义是:next[i]分别代表长度为i的字符串的前缀与后缀的最大公共长度获得next数组vector<int> getNext(string str){ int len = str.length(); vector<int> next(len + 1); //分别代表长度为i的字符串的前缀与后缀的最大公共长度 if (len == 0) r
2016-08-20 17:44:15 284
原创 分糖果
N个小孩站成一排,每个小孩必须给一块糖,标记等级高的小孩给的糖应该比其邻居高,且每个小孩至少要有一块,球所需的给的最少的糖的数目: int candy(vector<int> &ratings) { int size=ratings.size(); if(size<=1) return size; vector<int> num(size,1);
2016-08-20 14:07:04 328
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人