自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (10)
  • 收藏
  • 关注

原创 Esper专栏介绍

之前在csdn的博客专栏里没有查到Esper,所以本人抛砖引玉,开设了第一个Esper专栏。如果有大神也在研究Esper,希望能以专栏的形式推广Esper。虽然说小众,但是功能强大。下面我为各位做了简单的介绍。

2014-03-16 11:12:45 30366 27

原创 zab协议流程图总结

最近研究了一下zookeeper的zab协议,从网上几篇文章以及书本了解了下整体过程,但是都没有完整的流程图进行总结,其中的各个步骤分开看比较分散,所以我自己画了个全流程的图方便理解。

2017-10-22 22:34:04 1685

原创 Condition的await-signal流程详解

大概的整个过程是: 调用await的线程都会进入一个Condition队列。调用signal的线程每一次都会从firstWaiter开始找出未取消的Condition Node放到release队列里,然后调用signal的线程在await或者unlock的时候执行release方法才有机会将其解除阻塞。相对于lock-unlock,正常的流程要简单一些,但是对于中断处理会更为复杂。

2014-12-12 15:53:03 20324 5

原创 ReentrantLock的lock-unlock流程详解

在jdk1.5之前,多线程之间的同步是依靠synchronized来实现。synchronized是java的关键字,直接由jvm解释成为指令进行线程同步管理。因为操作简单,而且现在jdk的后续版本已经对synchronized进行了很多的优化,所以一直是大家编写多线程程序常用的同步工具。那为什么要推出新的同步api呢?jdk1.5发布的时候,synchronized性能并不好,这可能是concurrent包出现的一个潜在原因,但是更重要的是新的api提供了更灵活,更细粒度的同步操作,以满足不同的需求。但是

2014-12-11 21:12:48 27703 16

原创 一道不简单又简单的Google面试题

一道google面试的算法题:“给你一个数组A[0..n],请你在O(n)的时间里构造一个新的数组B[0..n],使得B[i]=A[0]*A[1]*A[2]*…*A[n]/A[i],但是不能使用除法运算。”

2014-12-01 15:04:47 2349

原创 如何用Mac完美编译OpenJDK 7

前段时间为了研究JVM,于是去下了OpenJDK6编译一把,就因为少声卡驱动,又没查到如何解决,结果总是编译不成功,遂放弃。但是近来调试jdk源码的时候,发现很多调试信息都没有,看得我那个辛苦啊。正好一朋友成功编译了OpenJDK7,我就又去下了一个试编,虽然在CentOS下成功了,但是我Mac下又用不了,所以我就花了点时间再次在Mac下弄一次。整体来说还算顺利,现在已经很开心的用上了。

2014-12-01 13:16:29 13032 1

原创 Intellij IDEA插件 - Scroll From Source

自从换了Mac以后,鼠标已经被我丢弃了,所以快捷键对我来说是越多越好。但是不幸的是,这个功能居然不能添加快捷键,这搞得我有时候得用触摸板点击,甚为不爽。而且也有几个用idea的朋友对这点吐槽多次了,所以我用了点零碎的时间看了下开发插件的过程,然后花了半个下午写了一个可以为”Scroll From Source“这个功能添加快捷键的插件。

2014-11-13 21:32:58 21622 10

原创 打印二叉树两个叶子节点间的路径

前两天在网上看到百度的一个校园招聘面试题:输出二叉树中两个叶子节点间的路径。感觉不是很难,所以花了点时间用Java实现了下。如果有更好的想法可以一起讨论。(另一个面试题是求二叉树中的最长路径,即相距最远的两个叶子节点,由于网上有实现所以我就不放出来了。)

2014-10-27 19:49:16 7322 2

原创 Storm杂记 — Field Grouping和Shuffle Grouping的区别

最近研究Storm的Stream Grouping的时候,对Field Grouping和Shuffle Grouping理解不是很透彻。去看WordCountTopology也不怎么理解,后来脑洞一开,加了一行代码再次运行,彻底顿悟。只能说自己对Storm的基本概念还是没吃透啊。

2014-10-24 23:44:46 29653 3

原创 Esper学习之十五:Pattern(二)

上一篇开始了新一轮语法——Pattern的讲解,一开始为大家普及了几个基础知识,其中有说到操作符。当时只是把它们都列举出来了,所以今天这篇就是专门详解这些操作符的,但是由于篇幅限制,本篇先会讲几个,剩余的后面几篇会逐个讲解。

2014-09-16 19:19:14 7272 17

原创 Esper学习之十四:Pattern(一)

前述的几篇关于EPL语法的文章,如果各位都掌握得很好,那基本上应付不少业务场景应该说是轻轻松松。但是总有那么些复杂场景只靠那点基础语法还是搞不定,比如说:某个用户在请求登录服务时,n秒内连续m次未登录成功,可视为该ip在暴力破解密码。又或者:用户在页面上的操作间隔超过n秒即认为该用户已关闭该网页。也许上面的几个例子不够好或者已经有别的方式实现,但是Esper确实能够将其抽象成多个关联的事件进行处理。像这类具有关联性事件的处理,即是本篇的中心内容——Pattern,它就像一个我们自定的模板,如果事件按照模板进

2014-08-27 17:00:06 7912 4

原创 Esper学习之十三:EPL语法(九)

距离上一篇博客已经有很多个月的时间了,由于工作的原因,没怎么腾出手来写博客。再加上自己已计划算法学习为第一要务,更新博客的事情暂时就放缓了脚步。所以各位童鞋大可不必等我的博客,先把文档看起来,有什么不懂的先记下来,可以私信问我也可以等文章出来后再理解一遍,这样就不耽误大家的学习了。

2014-08-01 13:44:17 6154 2

原创 Esper学习之十二:EPL语法(八)

今天的内容十分重要,在Esper的应用中是十分常用的功能之一。它是一种事件集合,我们可以对这个集合进行增删查改,所以在复杂的业务场景中我们肯定不会缺少它。它就是Named Window。

2014-04-10 22:07:17 10463 13

原创 Esper学习之十一:EPL语法(七)

上一篇说到了EPL如何访问关系型数据库这种数据源,实际上别的数据源,比如:webservice、分布式缓存、非关系型数据库等等,Esper提供了统一的数据访问接口。然后今天会讲解如何创建另外一种事件类型——Schema。

2014-02-20 23:32:34 7207

原创 Esper学习之十:EPL语法(六)

年前的最后一篇说的是子查询和join,基本上epl的大部分简单语法都说完了。之前有朋友问我epl怎么和数据库交互,正好今天这篇就是来专门解释这个问题。但是要提醒各位,本篇只是说明了在epl中如何与数据库交互,并且只能算是简单的交互。而高级的用法会在esperio里有详细的指导(esperio的文档可在esper的官网找到)。

2014-02-10 16:48:33 9793 5

原创 Esper学习之九:EPL语法(五)

暂停更新三个多月,转眼间就2014年了。年底相信都是大家最忙碌的时候,我也不例外,以至于真的是没腾出手来继续更新,好在年初这段时间可以休息一阵了,所以赶着这段时间空闲就多写点吧。本来想先写view,pattern这些常用的内容以满足大部分人的需求,但是考虑到这些章节有涉及到前面章节的知识,所以我觉得基础还是要学的,不能还没学会走就想跑,否则可能会摔得很惨哦。

2014-01-11 12:56:29 9815 11

原创 Esper学习之八:EPL语法(四)

国庆假期之后的工作周,居然苦逼的只有一个休息日,博客没写成不说,打球还把脚给扭了。不仅如此,这周开始疯狂加班了,所以今天这篇拖了又拖。。。关于EPL,已经写了三篇了,预估计了一下,除了今天这篇,后面还有5篇左右。大家可别嫌多,官方的文档对EPL的讲解有将近140页,我已经尽量将废话都干掉了,再配合我附上的例子,看我的10篇文章比那140页英文文档肯定舒服多了吧。也请各位原谅我一周一篇的

2013-10-22 22:02:16 8756 24

原创 Esper学习之七:EPL语法(三)

国庆七天,本想出去玩玩,可是哪里都是人,所以还是家里蹲吧。上篇说到了Select Clause和From Clause,今天这篇就说说Aggregation,Group by,Having和Output Clause。先预告一下,由于例子比较多,所以篇幅会有些长,需要各位耐心观看哦。1.Aggregation2.Group by2.1多字段Group by2.2@Hint3

2013-10-06 23:38:01 13765 15

原创 Esper学习之六:EPL语法(二)

从上一篇开始说EPL的语法,主要是关于注解的。今天来说说比较常用的语法,Select Clause和From Clause。这个两个可以说是写EPL必备,要想得到事件流的处理结果,基本上就靠他们俩了(Pattern除外)。今天的内

2013-09-21 23:02:13 12167 24

原创 Esper学习之五:EPL语法(一)

上篇说到了Esper的Context,要是不了解的同学请参看《Esper学习之四:Context》,看过的同学如果还是不理解的话可以给我评论,我将会尽可能的解答。之前有些同学问我Context和Group by有什么区别,其实如果只是很简单的用Context,那么确实没太大区别,无非是在Context下select可以不包含group by修饰的属性。但是Group by明显没有Context

2013-09-13 05:58:19 24188 15

原创 Esper学习之四:Context

Context是Esper里一个很有意思的概念,要是理解为上下文,我觉得有点不妥。以我的理解,Context就像一个框,把不同的事件按照框的规则框起来,并且有可能有多个框,而框与框之间不会互相影响。不知道各位在看完这篇文章后是否认同我的观点,我愿洗耳恭听。

2013-09-04 20:51:07 16265 21

原创 Esper学习之三:进程模型

上周末本来要更新第三篇的,但是因为突发事情没能完成。这周我会争取更新两篇,让感兴趣的同学一次看个够。之前对Esper所能处理的事件结构进行了概述,并结合了例子进行讲解,不清楚的同学请看Esper学习之二:事件类型。今天主要为大家解释一下Esper是怎么处理事件的,即Esper的进程模型。1.UpdateListenerUpdaterListener是Esper提供的一个接口,用于监

2013-08-31 14:38:34 18484 43

原创 Esper学习之二:事件类型

上周我们介绍了Esper,它是一个适合实时分析数据的内存计算引擎。若有不了解的同学可以看一下Esper学习之一:Esper介绍。如果各位自己运行过之前的程序,应该对Esper的处理机制和EPL比较感兴趣。不过这篇文章就先来介绍一下Esper能处理的数据结构,即“事件”。Esper对事件有特殊的数据结构约定。能处理的事件结构有:POJO,java.util.Map,Object Arra

2013-08-18 18:35:32 21303 15

原创 Esper学习之一:Esper介绍

由于项目需要,我开始了学习Esper的任务。刚开始觉得他是个很高级的东西,学了一段时间后发现他确实是很高级的东西。不过貌似在国内的应用很少,网上都查不到什么资料的,所以我觉得在博客里写一下自己的学习的收获,一是总结所学知识点,二是分享给更多的学习者,毕竟好东西不能这样被埋没了。今天就先来简单介绍一下Esper是什么玩意儿。       说到Esper,不得不说一下CEP。CEP即Complex

2013-08-11 16:10:44 56505 27

原创 Mongodb入门篇

之前写了一篇关于Mongodb集群搭建的文章,发现是不是应该写一篇Monogdb的入门篇会更好些呢?网上关于Mongodb的文章倒是挺多的,我这里就抛砖引玉,简单给大家讲解下Mongodb的入门知识吧。想了解更多详细内容我想还是看官网最好了:http://docs.mongodb.org/manual/        MongoDB是一个基于分布式文件存储的数据库,并且它是非关系型数据库,用C

2013-06-16 19:50:05 9946 1

原创 Mongodb集群搭建的三种方式

Mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式。关于Mongodb的特点,这里就不多介绍了,大家可以去看看官方说明:http://docs.mongodb.org/manual/       今天主要来说说Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slaver。这里只说明最简单

2013-01-13 23:40:33 159158 21

原创 How to install Sublime Package Control(Sublime Text 2/3)

Installation is through the Sublime Text 2 console. Thisis accessed via the ctrl+` shortcut. Once open, paste thefollowing command into the console:import urllib2,os; pf='Package Control.sublime

2012-11-11 21:21:21 2674 1

转载 Netty 介绍

1. 问题        现在,我们使用适合一般用途的应用或组件来和彼此通信。例如,我们常常使用一个HTTP客户端从远程服务器获取信息或者通过web services进行远程方法的调用。       然而,一个适合普通目的的协议或其实现并不具备其规模上的扩展性。例如,我们无法使用一个普通的HTTP服务器进行大型文件,电邮信息的交互,或者处理金融信息和多人游戏数据那种要求准实时消息传递的

2012-08-16 16:50:43 2498

原创 解决eclipse无法运行或调试的办法

前一天还好好的clipse,今天上班打开以后,居然不能调试和运行了,也不能加断点。开始以为是workspace的问题,就重新建立了一个workspace,结果还是不行。我又重新下了个eclipse,问题依旧,而且换了好几个版本的eclipse都没用,最后试了把myeclipse,出了一个timezone的问题,上网查了下改了点东西居然好了。问题细节及解决办法如下:1.在运行或调

2012-08-13 22:43:17 36459 9

转载 如何掌握程序语言

学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰。  作为一个程序语言的研究者,我深深的知道这种心理产生的根源。程序语言里面其实有着非常简单,永恒不变的原理。看到了它们,就可以在很短的时间之内就能学会并且开始使用任何新的语言,而不是花费很多功夫去学

2012-08-12 15:19:08 1526

原创 不能为了敲代码而敲代码

在公司实习了一年,接触了不少项目,但是基本都是做后半期的事情。由于本人还是菜鸟,心思都投入在怎么写好代码上去了,所以对业务上的事情基本是一问三不知,同事都对我有点。。。。哎,我都惭愧死了。好在带我的人了解我的情况,业务上的问题基本都是他帮我答了。我也逐渐发现了自己的这个不足,但是由于技术还是不够好,所以重心还是没怎么放在理解业务上。直到上周和公司高层聊了以后,才发现理解业务是多么的重要。

2012-07-28 15:45:39 1954 1

原创 scrot 一个好用的Linux截图工具

在Linux下很多软件使用命令就可以很好的操作,截图软件也不例外。刚好要截图使用一下,就找到了这款小巧的却很使用的Linux下的截图工具,就是scrot。1.安装很简单,像安装其他软件一样,Fedora下 yum install scrot , Ubuntu下apt-get install scrot就可以。2.一般用法,使用 scrot 可以抓取整个桌面、某个指定的窗口、以及选择的矩

2012-07-21 16:16:08 9892

原创 下载Tomcat源码后,编译时找不到JDT的解决办法

1.右键单击你的tomcat源码项目2.依次选择"Build Path" -> "Configure Build Path..." -> "Libraries" -> "Add Variable..."3.点击"jdt-....",再点击下面的"Configure Variables...",进入Classpath Variables4.选中"jdt.....",点击"Edit..."

2012-04-23 16:01:24 1341

原创 我的程序猿之路

注册csdn已有3年了,自己的博客上基本没什么文章。今天难得写一篇,不知道会不会被黑客给修改了。在此调侃下csdn的信息泄露事件,挺想不通为啥用明文存储密码。虽然咱也查了下,自己没有被盗,不过还是把密码改成了21位的。自己写了大大小小几个系统,除了前两个用的明文密码,不过之后的全加了密。       回到正题!今天说啥呢?说说自己吧。先声明下,本文不是技术文章,不感兴趣的朋友现在就可以点击右上

2011-12-24 00:59:54 3876 21

转载 Java 7七大新功能预览

<br />Java 7已经完成的7大新功能:<br />1 对集合类的语言支持;<br />2 自动资源管理;<br />3 改进的通用实例创建类型推断;<br />4 数字字面量下划线支持;<br />5 switch中使用string;<br />6 二进制字面量;<br />7 简化可变参数方法调用。<br />下面我们来仔细看一下这7大新功能:<br />1 对集合类的语言支持<br />Java将包含对创建集合类的第一类语言支持。这意味着集合类的创建可以像Ruby和Perl那样了。<br />原

2011-03-21 15:59:00 1226

原创 正则表达式匹配正确也报错?

<br />      正则表达式,我想大家都不陌生。Java有,C#有,JavaScript有,其他语言也有,大致的匹配规则都很相似。如果用过正则表达式的开发人员,都觉得这个是个好东西。不过本人在一次获取一段字符串里的数字时遇到一个奇怪的问题。代码如下:<br />package test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class PatternTest{ public stat

2011-03-09 07:40:00 4701

Netty5.0架构剖析和源码解读

针对Netty5.0的架构和源码进行了详细的解读,很不错的文档

2014-03-03

Cassandra High Performance Cookbook

Cassandra的一些高性能技巧,高清全英文

2012-11-01

Beginning CouchDB

CouchDB的入门书籍,初学者适用,高清全英文

2012-11-01

50 Tips and Tricks for MongoDB Developers.

MongoDB开发的50个小技巧,挺实用的,不过是全英文。

2012-11-01

Java NIO(O'Reilly)英文版

O‘Reilly出版的,是一本很不错的书。这是目前市面上对nio讲解最全面的一本书。作者是Ron Hitchens

2012-06-23

How Tomcat Works中文版(高清PDF)

详细讲解了tomcat的工作原理,每一章都有一个小例子,非常容易理解

2012-02-16

Java反编译工具,可反编译jar包

可以反编译单个class文件,也可以反编译整个jar包

2011-05-03

Java学习指南完整版

Java学习指南完整版,内容详细,实例丰富

2009-06-06

Java课程设计,15个经典源代码

有15个经典的程序,方便学习,适合初学者使用

2009-03-29

空空如也

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

TA关注的人

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