- 浏览: 297751 次
- 性别:
- 来自: 合肥
最新评论
-
honey_fansy:
JAVA类加载器分析-比较热部署和"Hot Code Replace" -
xialia8:
有个疑问,WebAppContextClassLoader的p ...
细说Tomcat如何打破双亲委派(有源码和图) -
wwenyunkui:
下载后,进行安装就可以了。https://repos.fedo ...
一键安装Maven/Ant (使用Yum) -
regale:
java用的double,scala用的String,要精确, ...
Scala浮点运算精度问题 -
nomandia:
不错了,之前的方法太麻烦了
一键安装Maven/Ant (使用Yum)
文章列表
【大数据笔记】--浅谈WordCount的Bug
- 博客分类:
- 大数据
最近精读Hadoop WordCount的示例,发现里面应该存在一个"可能的"Bug,现斗胆发出,希望有高人指点.
Bug描述:
WordCount数单词的时候,如果遇到大文件会对文件进行切分.但是切分是按照字节来进行的,完全有可能会将一个单词切分成2个单词,这样也就可能会创造2个不存在的单词.
相关代码:
WordCount main 函数
( FileInputFormat.addInputPath(job, new Path(otherArgs[0]));)
public static void main(String[] ...
Java1.5引入的泛型是一个比较大的进步,让人用的也很爽.但是java的泛型是基于类型擦除,也就是只在编译期才有泛型的存在,在运行时根本没有泛型什么事. 这也造成了泛型不能支持下面这些情况,而这些是在C++里面是都得到了支持的.
不支持New操作
Java代码
class SomeContainer<E>
{
E createContents()
一键安装Maven/Ant (使用Yum)
- 博客分类:
- Shell
在Centos下面如何安装Maven,查了很多地方,都是: 下载,解压,复制....
今天偶然发现了一个通过Yum安装maven的办法,就2个命令:
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repoyum -y install apache-maven
如果是安装ANT,可以直接运行如下命令
yum -y install ant
错误提示:
在通过Hui使用Hbase时,提示如下错误
hbase Api Error: Could not connect to localhost:9090
具体原因:
The HBase Browser application依赖HBase Thrift server,但是CDH并没有默认的启用Thrift Server role
解决办法:
一句话描述:在Hui所对应的节点上,启用Thrift Server role
具体步骤:
选择HbaseService,选择Instances 标签,点击Add.
在接下来的页面中选择激活一个 ...
多线程之--2种办法让HashMap线程安全
多线程之--synchronized 和reentrantlock的优缺点
多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)
多线程之--详解JAVA线程的中断
中断线程,并不是直接的中断一个线程,需要依赖于当前线程的 ...
多线程之--2种办法让HashMap线程安全
多线程之--synchronized 和reentrantlock的优缺点
多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)
本文从成员函数和锁的获取这2个角度, 比较这2种锁. 发现区别其实不大.只有在阻塞队列为0的时候才有些许区别. 如果分析的不对,请斧正.
稍后如果有时间,准备使用实例来测试一下.
成员函数的比较
从下面的截图可以清晰的看到除了构造函数不一样,其他的都一样.重点是都只有lock() 和 tryAcquire(), 那从另一个角度也可 ...
多线程之--2种办法让HashMap线程安全
多线程之--synchronized 和reentrantlock的优缺点
多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)
reentrantlock的优点
可以添加多个检控条件, 如果使用synchronized,则只能使用一个. 使用 reentrant locks 可以有多个wait()/notify() 队列. [译注:直接多new 几个ReentrantLock就可以了,不同的场景/条件用不同的ReentrantLock ]
可以控制线程得到锁的顺序,也就是有公平锁(按照进入 ...
Oracle默认的索引是升序的, 同时也支持降序索引. 一直没想明白为什么要支持降序索引,因为索引是用来查找的,只要是排序后的查找都是可以使用折半查找的(使用平衡树会更快些),根本不关心是升序还是降序排列.
查了多方资料也没找到原因, 最近想到了一个可能的场景. 就是如果查询结果是需要降序排列,这个时候排序字段如果有降序索引就可以加快响应速度.(需要是组合索引才会有用,并且需要查询语句的Order by 与索引创建的排序方式一致)
不过这个场景好像不是很通用,也许这就是为什么降序索引平时很少见的原因吧.
前面我们已经分析了因为原子性并不能保证事务在一个时间点上完成,而是在一个时间片上完成,所以不能作为一致性的充分条件.详细的分析,可以参考:http://flyfoxs.iteye.com/admin/blogs/2087543
那么原子性,加上隔离性可以推导出一致性吗? 下面我们通过一个例子来分析下这个问题.
场景如下
A是老板,需要给员工B, C发工资. A账户里面有100元,需要给2员工,每人20元工资.
如果只有隔离性,和原子性那么操作结果如下.
时间戳
事务1
事务2
t1
A减少20
t2
B添加20
A ...
数据库的原子性可以推导出一致性吗
- 博客分类:
- 数据库
数据库用了很久了,最近看书又看到了ACID,突然想起来原子性就是不可分割, 既然是这样,那应该就可以保证一致性,为什么数据库的事务定义了4个特性.
其实这个问题的症结在怎么理解原子性,以前学物理的时候,留下了一个印象,原子性就是不可再分割的意思,但是在数据库事务里面却需要加上一些注释,是把本来几个可以分的事情整个在一起,要成功都成功,要失败都失败.
说简单点,就是事务里面的各个组成部分,并不是在一个时间点,而是分布在一个时间段(比如一分钟)里面去完成.
原子性只是保证了各个组成部分能够全部成功,或者都失败.但是无法保证一致性,比如各个部分只成功了一半,不让其他事务去读 ...
CGLIB生存的Class的命名规则有多种,它们都是由接口NamingPolicy对应的实现来定义的.接下来针对DefaultNamingPolicy进行分析.泛泛的说,生成的CLASS的规则如下
被代理class name(包名和类名) + "$$" +
使用cglib处理的class name(只有类名,不包含包名) +"ByCGLIB" + "$$" +
key的hashcode(接下来会对key有一个详细的分析) +
序列号
下面是上面规则的示例:
aop.target.HelloImpl$$Enha ...
看到好多地方对比CGLIB和动态代理来实现AOP的, 感觉就是一边倒的. CGLIB什么都好, 比如:
目标对象可以是Interface或者Class,不像动态代理只支持Interface
CGlib性能也好.
看到这些,我就有一个疑问, 既然如此优秀, 为什么动态代理还有存在的必要呢.带着这个疑问,我研究了一下CGLIB的不足.对比动态代理来实现AOP,CGLIB需要有2个前提条件,都是动态代理不存在的.
final Class不支持, 因为CGLIB是生成子类来实现AOP,所以final Class自然无法支持了.
需要强制无参数构造函数
其实从JAVA实 ...
百度一道面试题的三种解法
- 博客分类:
- JAVA
http://greemranqq.iteye.com/blog/2069056
在上面的地址看到了一个百度面试的题目:怎么找出{1,1,2,3,3,4,4,4,5,5,5,5} 找出出现次数为奇数的数字.
个人总结了一下,在上面博文加评论里面共提到了2种方法.
1)使用一个数组来记录出 ...
2种AOP方式的比较(动态代理, Cglib)
- 博客分类:
- JAVA
动态代理说到底,还是设计模式代理的一种.
根据"代理对象的接口"生成一个新对象(利用反射).实际情况是根据传入的对象,看此对象实现的所有接口,然后生成新对象.生成新对象最后还是通过 InvocationHandler 来调用真正的业务对象
缺点:所代理的对象必须有接口
Cglib运行时,动态生成指定拦截对象的子类. 通过子类就可以添加说需要的拦截方式了.由于是生成子类所以也就不需要是针对接口,适应面比较广.
缺点:使用不好,会生成大量的子类,类的元数据又会放入永久内存,很难回收,所以会造成内存不够.
疑问为什么SUN 设计动态代理时,不能通过反射生成子 ...
使用Clojure实现贪吃蛇
- 博客分类:
- Clojure
最近学习Clojure,买了<<Clojure程序设计>>,对里面大部分章节进行了精读. 比如贪吃蛇程序,并且这个程序也比较精简,200行不到.
在读的过程中,对不能一目了然的地方,添加了注释,现发出来,希望能对有的人有用.
;;
;;Excerpted from "Programming Clojure, Second Edition",
;;published by The Pragmatic Bookshelf.
;;Copyrights apply to this code. It may not be used to ...