Java生产者消费者的三种实现

  Java生产者消费者是最基础的线程同步问题,java岗面试中还是很容易遇到的,之前没写过多线程的代码,面试中被问到很尬啊,面完回来恶补下。在网上查到大概有5种生产者消费者的写法,分别如下。 用synchronized对存储加锁,然后用object原生的wait() 和 notify()做同步。 用concurrent.locks.Lock,然后用condition的await() 和signal()做同步。 直接使用concurrent.BlockingQueue。 使用PipedInputStream/PipedOutputStream。 使用信号量semaphore。  

Read More »

Java线程间同步(诡异的IllegalMonitorStateException )

  前两天去面试,被问到了一个线程同步的问题,两个线程依次输出1……100,一个线程只输出奇数,一个只输出偶数。之前工作中没写过线程同步的代码,只知道使用object的wait()和notify()方法可以实现线程同步,之前也看过线程池实现的代码,用的也是wait()和notify()。 面试过程中没写出来,于是想回来学习下多线程的同步,然后就有了今天这诡异的事。

Read More »

大数据下的实时热点功能实现讨论(实时流的TopN)

  我司内部有个基于jstorm的实时流编程框架,文档里有提到实时Topn,但是还没有实现。。。。这是一个挺常见挺重要的功能,但仔细想想实现起来确实有难度。实时流的TopN其实离大家很近,比如下图百度和微博的实时热搜榜,还有各种资讯类的实时热点,他们具体实现方式不清楚,甚至有可能是半小时离线跑出来的。今天不管他们怎么实现的,我们讨论下实时该怎么实现(基于storm)。

Read More »

OpenTSDB简介

  OpenTSDB(Open time series data base),开发时间序列数据库。DB这个词很有误导性,其实并不是一个db,单独一个OpenTSDB无法存储任何数据,它只是一层数据读写的服务,更准确的说它只是建立在Hbase上的一层数据读写服务。行业内各种db都很多了,为什么还会出现它?它到底有什么好?它做了什么?别着急,我们来一一分析下。

Read More »

『问题』如何被更好的解决

  最近迷上了一个电视节目,说出来也不怕笑话,这个节目就是CCTV科教频道的《我爱发明》。过年回家的时候有天晚上发现播这个,后来每天晚上就看这个了。从家里回来后,业余时候也就是陪女朋友聊天、刷《老友记》、看《哈利波特》原著,再剩下实在无聊就是在youtube上看《我爱发明》了(翻墙就是为了看这个………)。想了下我之所以喜欢看《我爱发明》,有部分原因是我对新鲜事物的好奇,但更重要的是发明人解决问题的过程,还有一点是让我体会到了发明创造的魅力(make the world a better place)。

Read More »

高效工程师系列(三) 持续学习

  学习机会不会被工作场所限制。我们应该时刻问自己如何提高自我?如何做的更好?接下来我应该学些什么来为我的未来做好准备呢?这些问题可能和工程无关。也许你对音乐、艺术、运动、写作或工艺品没任何兴趣。但我们学到的一些技能可能是跨职能的,有助于我们的工程工作(例如,在与陌生人交谈时提高我的舒适度,比如能在会议和面试其他优秀工程师时帮助到我)。也许其他的技巧无法直接转化为工程效益,但是,采用一种成长型思维能让我们成为更好的学习者,更愿意超越自己的舒适区。 这本身是一个高收益比的投资,另外还有一些附带的收益,心理学研究表明持续学习和幸福感的增加有密不可分的联系。

Read More »

Leetcode 295. Find Median from Data Stream

题目链接295. Find Median from Data Stream   在一个有序数组中找中位数,但需要支持再数组中添加新的元素。本来是有序里的,可以很轻易就查到中位数,但如果添加新数字后,不一定有序。如果先对数组排序,那代价就比较大了,每次排序时间复杂度O(n*log(n)),看discuss发现了一种很巧妙的解法,可以把添加数据的时间复杂度降低到O(log(n)) ,查询中位数O(1)。

Read More »

高效工程师系列(二) 花时间学习新技能

  工作中很容易被各种必须完成的事压得喘不过气来。我指导过的那些人,通常都是刚开始工作的人经常感觉到他们的工作任务清单在持续增长,而且进度远远的落在了后面,他们总是花很长时间追赶进度而不是花足够的时间开发能让他们更高效的新技能。

Read More »

欢送本命年(17年年终总结)

  17年的年终总结为什么起名叫『欢送本命年』呢!没错,17年是我本命年(毕竟我今年已经0x18岁了),发生了很多事让我相信有本命年水逆这回事,因为感觉17年是我人生中过的最不顺的一年,尤其是在工作上,感觉很坎坷,所以希望在新的一年里一切糟糕的事都成为过去式,让这些悲惨的回忆只存在于这篇总结里吧!

Read More »

高效工程师系列(一) 如何找到一个利于自己成长的环境

  这个系列内容全部来自于Edmond Lau 所著《The Effective Engineer》一书,截止本文写稿时间(17年末)还未在中国出版,因为我没有足够的时间精力翻译全书,所以就挑选几部分做成高效工程师 系列文章,希望对大家在职业生涯中有帮助。

Read More »