自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 内部类

嵌套类 内部类特点区别嵌套类:静态嵌套类1.用的很少2.只能访问外部类静态成员内部类:非静态嵌套类内部类分为成员内部类、方法内部类、匿名内部类。几种内部类的共性:      A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。      B、内部类不能用普通的方式访问

2017-03-17 21:11:21 218

转载 ConcurrentHashMap

ConcurrentHashMap1.实现原理2.数据结构3.增删改查一.实现原理锁分离   ConcurrentHashMap使用分段锁技术,将数据分段存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问,能够实现真正的并发访问。对于一个key,需要经过三次(为什么要hash三次下文会详细讲解)hash操

2016-03-25 16:23:59 348

原创 多线程 等待/通知机制

多线程 等待/通知机制1.通过操作值和操作栈进行传递消息  多生产 多消费 模式要多看看2.通过管道进行传递消息2.1字节流PipedInputStream  PipedOutputStream2.2字符流PipedReader  PipedWriter3.join  意思就是把子线程合并到主线程上来主线程创建并启动了子线程,为了防止子线程未完成

2016-03-23 17:01:27 732

原创 ReentrantLock

ReentrantLock1. ReentrantLock  lock.lock(); lock.unlock();相当于synchronized语句块lock.tryLock() 如果锁已经被保持了的话就直接跳过,不阻塞吧2.Condition  condition = lock.newCondition();condition.await();//必须卸

2016-03-23 14:34:43 281

原创 java-synchronized

1.场景:----------------以下都是对象锁----------------------------------------------Synchronized同步方法方法1.关键字Synchronized取得的锁都是对象锁2.多个线程去争抢同个对象锁的时候容易导致脏读3.可重入锁:因为关键字取得的是对象锁,可以通过重入锁调用父类的同步方法:为什么呢,因为父类方法本

2016-03-22 18:23:10 224

原创 java-volatile

volatile关键字意义: 解决了私有堆栈和公共堆栈的值不同步问题。强制性从公共堆栈中取值。1.保证数据的可见性,不保证原子性(原子性:要么一起成功,要么一起失败);synchronized会保证原子性,并且会将私有内存和公共内存做同步所以也支持可见性2.是线程同步的轻量级实现3.只能修饰变量4.volatile不会发生阻塞,synchronized会发生阻塞5.只能

2016-03-22 13:27:32 247

原创 Wait和Sleep的区别

Wait和Sleep的区别Wait释放同步锁监视对象,直到其他线程调用notify,获得对象的所有权,然后继续执行ps:其他线程要notify的前提是获得这个对象的同步锁,必须写在synchronized(lockobj) {...}之中sleep不释放同步锁一直保持对象的所属权,等待时间到了之后然后继续前进。对于线程的同步,使用wait与not

2016-03-22 12:46:30 265

原创 hive 实例

1.得出2015年每个用户前2次订单,并得出每个订单购买的商品号列表 select *from (select cust_id,parent_id,concat_ws('#', collect_set(product_id)),row_number() over (partition by cust_id order by order_creation_date) as paiming

2016-03-10 18:58:28 591

原创 表-队列

队列就是先进先出表实现上基本采用循环数组实现应用:生产消费者模式

2016-03-08 17:19:53 237

原创 表-Stack栈

后进先出表基本操作就是push、pop、top增加:O(1),如果需要扩容的话,O(n)删除:O(1)应用:1.检查平衡符号。开放符号放到栈中,如果是封闭符合,从栈中去除,查看是否配对。这是一个联机算法2.后缀表达式。不需要优先级3.中缀到后缀的转换。需要优先级4.方法调用。尾递归。

2016-03-08 16:34:31 224

原创 表-LinkedList

LinkedList是一个双向列表,并实现了迭代器可以存储不同类型的数据向链表中插入或删除节点无需调整结构的容量特别适合以排序的顺序动态的添加新元素数组适合数据的数量是有上限的情况,而链表适合元素数量不固定的情况增:只在末尾插入的话,O(1),如果是中间插入的话,O(n)删:O(n),当然在迭代器中删除的时候为O(1)改:O(1)查:通过索引查找O(N),遍历查找的话,为O

2016-03-08 15:34:13 182

原创 表-ArrayList的实现

待写入。着重增删该查的效率,迭代器的使用,为什么迭代的时候remove还是很慢迭代器使用了内部类来实现。好好看

2016-03-07 23:25:22 239

原创 hive left semi join

由于hive不支持in/exists 子查询,所以可以使用left semi join 来实现。注意:①join右边的表只能在on里进行条件过滤,不能再where中进行条件设置            ②select 不能获得右边表的字段数据,但是去获得的时候不会报错,但是值为null            ③左边表与右边表为一对多的时候,只会查询出一条数据,不会出现多条数据

2016-03-07 17:34:19 452

原创 敏感词系统的设计思路

这个我得好好想想

2016-03-03 20:30:30 948 5

原创 2个有序的整数集合,怎么获得交集呢?

List list1 = new ArrayList();List list2 = new ArrayList();list1.add(8);list1.add(9);list1.add(11); list2.add(5);list2.add(7);list2.add(9);list2.add(10);list2.add(11);list2.add(12); List

2016-03-03 20:00:12 597

原创 归并排序

public void mergeSort(int[] arr, int low, int high) { int mid = (low+high) / 2; if(low<high) { mergeSort(arr, low, mid); mergeSort(arr, mid+1, high); merge(arr, low, mid, high); }}private

2016-03-03 17:01:30 380

原创 选择排序

public void selectSort(int[] arr){ for(int i = 0; i<arr.length; i++) { int min = arr[i]; int min_j = i; for(int j =i+1; j<arr.length;j++){ if(arr[j]<min){ min = arr[j]; min_j = j;

2016-03-03 09:27:16 219

原创 插入排序

public void insertSort(int[] arr) { int size = arr.length; for(int i = 1; i<size;i++){ if(arr[i] < arr[i-1]) { int tmp = arr[i]; int j = i-1; while(j >= 0 && arr[j] > tmp) { arr[j+1]

2016-03-03 08:57:29 265

转载 hive窗口函数理解加实践

http://blog.csdn.net/xiepeifeng/article/details/42676567

2016-03-03 07:47:38 2374

原创 快速排序

public void quicksort(int[] arr, int start, int end) {int i = start;int j = end;int pivot = arr[start];while(iwhile (ii++;}while (i pivot ){j--;}if(i int tmp = arr[i];arr[i]

2016-03-02 20:23:59 276

原创 冒泡排序

int[] numbers = new int[]{13,4,2,8,90,23,14};int size = numbers.length;for(int i = 0; i < size-1; i++) { for(int j = i + 1; j< size; j++) { if(numbers[i] > numbers[j]) { int tmp = numbers[i];

2016-03-02 18:35:17 205

原创 Hive 源头获取 终点获取

使用窗口函数 FIRST_VALUE场景:你定义了每个用户的每个订单的最开始来源为第一单。那么每个用户的每个订单的来源订单就用FIRST_VALUESELECT cookieid,createtime,url,ROW_NUMBER() OVER(PARTITION BY cookieid ORDER BY createtime) AS rn,FIRST_VALUE(ur

2016-03-01 20:26:43 287

原创 Hive 上下文分析 LAG LEAD

使用窗口函数 LAGSELECT cookieid,createtime,url,ROW_NUMBER() OVER(PARTITION BY cookieid ORDER BY createtime) AS rn,LAG(createtime,1,'1970-01-01 00:00:00') OVER(PARTITION BY cookieid ORDER BY create

2016-03-01 20:17:29 533

原创 Hive 层次查询

使用窗口函数:NTILESELECTcookieid,createtime,pv,NTILE(2) OVER(PARTITION BY cookieid ORDER BY createtime) AS rn1,--分组内将数据分成2片NTILE(3) OVER(PARTITION BY cookieid ORDER BY createtime) AS rn2, --分组内将

2016-03-01 20:11:00 3379

原创 Hive 累积和的计算

使用窗口函数Sumeg:统计1-12月的累积销量,即1月为1月份的值,2月为1.2月份值的和,3月为123月份的和,12月为1-12月份值的和SELECT month,SUM(amount) month_amount,SUM( SUM(amount)) OVER (ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING A

2016-03-01 19:59:55 8215

原创 Hive TopN+分组TopN

TopN可以通过sort by limit N 来实现 比 通过order by limit N 来实现要快得多个人感觉sort by使用的时候如果能合理使用distribute by的话会更均衡一些sort by可以启动多个reduce,每个reduce做局部排序,但是这对于sort by limit N已经够用了。第一个JOB是在每个reduce中做局部排序,然后分别取TO

2016-03-01 19:41:04 2870

原创 Hive 分区排序 rank dense_rank row_number

综合查询select province,city,rank() over (order by people desc) rank,dense_rank() over (order by people desc) dense_rank,row_number() over(order by people desc) row_numberfrom pcpgroup by prov

2016-03-01 18:56:58 1202

空空如也

空空如也

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

TA关注的人

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