自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Grok coding

For sustained progress 关注大数据技术

  • 博客(84)
  • 资源 (3)
  • 收藏
  • 关注

原创 实习面试小记-腾讯、阿里、大摩、网易

今年的实习生相关的面试其实早就结束了,个人比较懒,今天打算用流水账的方式记录下相关的面试细节。

2016-06-07 19:10:58 778

原创 ThreadPoolExecutor源码解析

ThreadPoolExcutor是java并发模块中非常重要的一个线程池的实现,FixedThreadPool,CachedThreadPool和SingleThreadPool都是该pool的一个不通的参数情况下的特性。本文主要介绍一下ThreadPoolExcutor的关键参数以及常用的方法的内部实现。1. 构造函数及关键参数下面的代码是ThreadPoolExecutor的构造函数,这里涉

2015-11-21 16:48:27 930

原创 使用java Condition构建生产者消费者

1.Condition介绍在上一篇文章中曾经提到对象的wait和notify方法,condition类其实就是这种方法的一种替代性产物。 Condition对象是同Lock结合使用,由Lock进行创建,并且condition.await的调用者必须获取lock,在await时该线程自动释放锁,当其被其他线程signal之后再重新获取锁,这同上一篇博客中提到的sychronized的用法类似。2.

2015-11-18 21:49:19 1306

原创 Java中的wait和notify总结和应用

1. wait,notify 介绍java中的wait和notify是java object中就有的两个函数,主要用于线程之间的协作,但是笔者之前一直没有对这种方式掌握好。 wait和notify必须得成对使用,而且一定需要遵循下面的格式:sychronized(obj){ while(! condition) obj.wait() //do something}sych

2015-11-14 18:26:50 1442

原创 [LeetCode]Substring with Concatenation of All Words

You are given a string, s, and a list of words, words, that are all of the same length. Find all starting indices of substring(s) in s that is a concatenation of each word in wordsexactly once and w

2015-05-16 15:50:45 736

原创 [LeetCode]Binary Tree Inorder Traversal

题意:题意比较简单就是二叉树的中序遍历思路:1. 递归是最简单的了   2. 非递归的实现:用一个stack做存储结构一直查找leftchild 知道没有下一个leftchild,访问该元素如果该元素有right child 加入stack从stack中取出一个元素 重复上述行为(这里需要加入set集合记录访问过得left的节点 否则会出现重复访问的问题)代码:

2015-05-16 15:41:44 709

原创 [LeetCode]Copy List with Random Pointer

题意:这个题目也是个蛮有意思的题目,就是对一个有随机指针的链表进行深拷贝,思路:简单地来说就是递归拷贝,然后呢防止重复拷贝,所以凡是拷贝过得内存地址都得记录下来代码: Map m = new HashMap(); //保存已经copy的部分 public RandomListNode copyRandomList(RandomListNode head)

2015-05-16 15:35:45 590

原创 [LeetCode]Anagrams

题意:这个题意理解比较重要,题目的意思就是指找到一个字符串数组中由相同字符构成的字符串组思路:基本思路是这样的,建立一个string - > list 的hash表, key是字符串的字符按序排列的字符串,然后遍历list的size即可代码: public List anagrams(String[] strs) { List rs = new LinkedLis

2015-05-16 15:31:55 689

原创 [LeetCode]Repeated DNA Sequences Total

题意:题目意思很简单就是有一个由 A C G T 组成的字符串,要求找出字符窜中出现次数不止1次的字串思路1: 遍历字符串,用hashmap存储字串,判断即可代码1: public List findRepeatedDnaSequences(String s) { List rs = new LinkedList(); Map map = new

2015-05-16 15:28:29 642

原创 HRegionServer Flush操作源码分析

Flush操作是将HBase中的数据存到硬盘上的过程,具体的flush的流程图如下,本文主要简要分析flush的过程相关源码。 Flush 任务提交每当HRegion完成数据插入的操作的时候,就会进行检查此时是否需要进行一次flush,flush是将HRegion缓存的数据存储到磁盘的过程:long addedSize = doMiniBatchMutation(batchOp);long ne

2015-05-06 09:31:53 1770

原创 [LeetCode]Container With Most Water

Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Fin

2015-04-21 21:20:19 617

原创 [LeetCode]Trapping Rain Water

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.For example, Given [0,1,0,2,1,0,1,3,2,1,2,1]

2015-04-20 09:14:31 695

原创 [LeetCode] Search in Rotated Sorted Array

题意:在旋转的有序数组中搜索某个元素,无重复数据思路:二分搜索,注意有旋转的区间的上下界的判断代码: public int search(int[] A, int target) { return bsearch(A, target, 0, A.length - 1); } /** * 二分搜索,无重复元素,判断是否为rotated

2015-04-18 09:09:26 830

原创 [LeetCode]Remove Duplicates from Sorted Array2

题意:从有序数组中删除重复数据,但是与题目一有一点区别:可以允许重复一次思路:首先判断是否重复,有的话指针后移,然后按照题1中的思路进行,复杂度O(N)代码: public int removeDuplicates(int[] A) { if(A == null || A.length == 0)return 0; int len = A.leng

2015-04-18 09:05:47 818

原创 [LeetCode]Next Permutation

题意: 找出当前数组排列的下一个排列,按升序,如果没有下一个排列就输出最小的排列思路:倒序寻找升序序列直到某个元素不满足逆升序为止,然后交换该元素与其后面比他大的最小元素,最后将后续元素按升序排序即可代码: public void nextPermutation(int[] num) { int j = num.length - 1; int i

2015-04-18 09:02:35 836

原创 [LeetCode]Longest Consecutive Sequence

题意:在一堆无序元素中找到最长的连续串的长度,要求时间复杂度O(N)思路:首先将元素放到set集合中,然后再判断,每次判断是否包含某元素的复杂度为O(1)代码: public int longestConsecutive(int[] num) { int currLen = 0, longestLen = Integer.MIN_VALUE; Se

2015-04-18 08:58:07 933

原创 [LeetCode] Find Minimumin Rotated Sorted Array II

题意:在旋转过的有序数组中找到最小数,数组中可能有重复元素思路:二分,判断是否有相等的元素,主要是二分的时候的一些细节,比如说是有序的还是rotated代码: public int findMin(List nums) {//solution1 O(log(N)) int min = Integer.MAX_VALUE; int l = 0, r

2015-04-18 08:54:44 945

原创 HBase createTable 的服务器端实现源码分析

HBase的所有请求调用都是通过RPC的机制进行的,RPCServer监听到请求之后会解析请求内容,然后根据解析的方法以及参数调用服务器端实际的方法,这也是远程代理模式的经典做法,createTable的请求最终实现是在HMaster中的,但是实际的表的建立过程是在CreateTableHandler类中的,接下来主要就HBase中表的建立过程进行详细分析。1. HMaster的createTab

2015-04-17 14:00:38 2027

原创 [LeetCode]Pascal's Triangle 1 & 2

这两题都比较简单,第一题输出杨辉三角,第二题输出特定的某一行,第二题要求空间复杂度为O(k)代码如下:Pascal's Triangle: public List> generate(int numRows) {//direct simulate List> rs = new LinkedList>(); if(numRows == 0)retur

2015-04-15 13:57:51 675

原创 HBase1.0.0源码分析之请求处理流程分析以Put操作为例(二)

HBase1.0.0源码分析之请求处理流程分析以Put操作为例(二)1.通过mutate(put)操作,将单个put操作添加到缓冲操作中,这些缓冲操作其实就是Put的父类的一个List的集合。如下: private List<Row> writeAsyncBuffer = new LinkedList<>(); writeAsyncBuffer.add(m);当writeAsyncBu

2015-04-13 22:17:06 1503

原创 HBase1.0.0源码分析之请求处理流程分析以Put操作为例(一)

如下面的代码所示,是HBase Put操作的简单代码实例,关于代码中的Connection connection = ConnectionFactory.createConnection(conf),

2015-04-13 17:10:32 1639 1

原创 [LeetCode]Combination Sum

题意:求一个数组中的组合为某个target的所有子数组组合,要求不重复,思路:先将数组排序,然后按深度遍历的思想对i - > len -1的元素进行遍历代码如下:public class Solution { public List> combinationSum(int[] candidates, int target) { List> results = n

2015-04-07 21:47:47 723

原创 [LeetCode]Unique Paths II

该题和之前的题目之间的区别就是某些单元是不可达的,这可以加上判断语句即可算法1:public class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int pathsNum = 0,m = obstacleGrid.length,n=obstacleGrid[0].l

2015-04-06 16:43:36 406

原创 [LeetCode]Plus One

简单题不解释, 维护一个进位即可public class Solution { public int[] plusOne(int[] digits) { int c = 1; for(int i = digits.length - 1; i >=0; i --){ if(c == 0)break; digits[i]

2015-04-06 16:00:06 822

原创 [LeetCode]Set Matrix Zeroes

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.in place,主要是感觉比较麻烦,其实就是利用第一行和第一列保存该行列是否需要变0,再用两个变量表示第一行和第一列是否需要变0代码:public class Solution { publi

2015-04-06 15:39:19 779

原创 [LeetCode]Rotate Image

You are given an n x n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise).Follow up:Could you do this in-place?思路1:直接开辟一个数组,然后按照对应关系复制即可,空间和时间复杂度o(N*N)代码1:

2015-04-06 13:58:22 638

原创 [LeetCode]Minimum Path Sum

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.Note: You can only move either down or right

2015-04-06 12:44:11 965

原创 [LeetCode]Sort Colors

Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.Here, we will use the integer

2015-04-06 10:56:52 909

原创 [LeetCode]First Missing Positive

题意:在乱序数组中找到第一个没出现的正整数思路1: 直接暴力解决,复杂度O(N*N)代码1: public int firstMissingPositive1(int[] A) {// big O(N*N) if(A.length == 0)return 1; int i = 1; while(i <= A.length){

2015-04-05 21:28:48 521

原创 [LeetCode]Find Peak Element

A peak element is an element that is greater than its neighbors.Given an input array where num[i] ≠ num[i+1], find a peak element and return its index.The array may contain multiple peaks,

2015-04-05 17:09:52 696

原创 [LeetCode]Unique Paths

题意: https://leetcode.com/problems/unique-paths/A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).The robot can only move either down or right at a

2015-04-05 16:27:48 555

原创 [LeetCode]Find Minimum in Rotated Sorted Array

题意:从一个平移过的数组中找到最小的元素思路1:最简单的思路莫过于排序然后取第一个元素,复杂度O(N*log(N))代码1:public class Solution { public int findMin(int[] num) { Arrays.sort(num); return num[0]; }}思路2: 遍历,比较两段

2015-04-05 15:51:14 574

原创 [LeetCode]Majority Element

题意: 找出一个数组中的主要元素,主要元素为出现次数大于[n/2]的元, 当然最笨的方法就是暴力,没式不知道时间行不行思路1: 遍历数组,统计每个元素出现的次数,用HashMap统计每个元素出现的次数 时间复杂度O(N),空间复杂度 O(N)代码1:public class Solution { public int majorityElement(int[] num)

2015-04-05 15:15:38 681

原创 [LeetCode] Search Insert Position

题意: 给出一个target找出他在有序数组中的位置思路1: 直接遍历 复杂度O(N)代码1: public int searchInsert1(int[] A, int target) {//直接遍历 算法O(N) int i = 0; if(target < A[0]) return 0; if(target > A[A.len

2015-04-04 10:56:57 698

原创 [LeetCode]Merge Sorted Array

题意;将A,B连个有序数组合并到A中,A空间充足思路1: 基本思路很简单,开辟一个额外数组,空间复杂度和时间复杂度都为O(N)代码1:public class Solution { public void merge(int A[], int m, int B[], int n) { if(n == 0)return; if(m == 0){

2015-04-03 20:54:05 515

原创 [LeetCode]Rotate Array

题意:给定一个数组,求该数组向右平移k个位置之后的数组,例如:[1,2,3,4,5,6,7] k = 3 => [5,6,7,1,2,3,4,5,6]思路1:最简单的想法必然是暴力啊,一个个的平移,复杂度O(K*N),代码简洁,也能够通过代码1: public void rotate3(int [] nums, int k){//一次移动一个 if(k ==0 )

2015-04-03 18:38:23 572

原创 [LeetCode]3Sum

题意: 找出一个数组内和为0的三元组,元组不能重复思路1:.直接暴力DFS,这样会超时,不过先排序加上剪枝的花据说能够AC思路2:先排序O(N*log(N)),然后遍历a 从0 到 nums.length - 2, 结下来的问题就简化为2Sum的问题了 复杂度O(N*N)代码: public List> threeSum(int[] num) { List>

2015-04-01 18:06:01 729

原创 HBase1.0.0源码分析之Client启动连接流程

我们知道在使用HBase的过程中首要的是和服务器端取得链接,那么客户端是如何去链接的,它是怎么找到master和regionserver的? 参与该过程中的主要组件又有哪些?这些组件之间是如何协同工作的呢? 今天就让我们来一起解析.

2015-04-01 10:39:36 1715

原创 [LeetCode]Two Sum

题意:求出某个数组中的两个数值的和等于一个固定的target的该两个数值的下标,按从小到大的顺序.解题思路:1: 直接暴力遍历 复杂度O(n*n) 超时2:先排序,再遍历 增加了空间复杂度,时间复杂度为O(N+N*log(N)+N)3:有人建议用HashMap但是如果有重复数据就应该是不成立的,思路二的解法如下: public int[] twoSum(int[] num

2015-03-31 20:07:54 691

原创 HBase1.0.0的RPC机制分析与源码解读(一)

HBase的RPC机制,除了使用protocal buf的工具之外都是利用java的原生API进行构造,RPC机制的解读包括客户端和服务器端两个部分,本文主要就服务器端的服务运行机制以及工作流程进行简要分析.首先我们来分析一下一个典型的RPC服务器短的处理流程,如下图所示:从图中可以清楚的看到当客户端向服务器端发送一个请求的时候,最开始是被RPCServer中的Listener所监

2015-03-30 15:03:52 1462

hbase权威指南中文

目前讲habse最全面的书籍,虽然有点老但是也没新的,可以参考

2014-08-01

新浪微博用户页面解析UserHomePagePrase

该源码展示了解析新浪微博页面的一般方法和技巧

2014-06-15

微博爬虫源代码-WeiboRobot

新浪微博爬虫登录以及页面下载组件,use it anywhere you want

2014-06-09

空空如也

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

TA关注的人

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