- 博客(10)
- 资源 (15)
- 收藏
- 关注
原创 枚举类型模拟
JAVA中的枚举类型总是会让初学者有些害怕。由于C语言的惯性思维,导致很多人总是不能很好的理解JAVA中的枚举类型的原理。本文就从模拟枚举类型的实现的角度来学习枚举类型。JAVA中的枚举:1.枚举类型是一种取值被严格限定在一个有限的集合中的变量类型。 2.java中的枚举是一种特殊的类。每一个枚举都会被编译成一个class文件。 3.枚举主要用于限定变量的取值,从而从根源上有效的避免
2016-02-23 20:24:32 451
原创 Java线程池(2)
在上篇博文中,我描述了Java线程池的大概执行流程。但是由于我们平时使用线程池的时候,一般都不会自己new ThreadPoolExecutor(),而是通过类似于 Executors.newCachedThreadPool()这样的方法来构建一个线程池。下面我们就来看下Executors.newCachedThreadPool()到底构建了一个什么样的线程池。直接看代码: public st
2016-02-23 19:46:52 420
原创 Java线程池(1)
昨天正好面试的时候,问了面试者线程池的问题,问题时这样的:”ThreadPoolExecutor中,假如corePoolSize=5, maximumPoolSize=10, workQueue的长度也是5,此时我向这个线程池中提交6个Runnable,线程池此时如何处理这第六个Runnable?”。这道题目很多面试者容易犯错,因为直观上,我们感觉线程池应该这样处理: (1) 当线程池中的线程数目
2016-02-23 15:49:22 429
原创 Druid原理介绍(2)
上一篇谈到了位图索引的问题,其中提到了一点: 如果某一列的取值的维度比较大,则不太适合建立位图索引。因为位图索引会非常大, 则不太适合建立位图索了。 但是对于OLAP框架而言,这个问题时不可避免的,举例而言,我们需要保存和统计公司的所有网站的访问记录,那么IP的范围就会比较大。此时如果直接对IP建立位图索引的话就会导致该索引非常大,不太现实,那么怎么办呢?这就需要对位图索引进行压
2015-09-15 15:33:51 1385
原创 Druid原理介绍(1)
Druid(Druid.io)是一种OLAP工具, 不是阿里的数据库连接池。 所谓OLAP,按我的理解就是实时在线查询。就是说当我需要查询实时和历史数据的时候,能较快的得到响应。这样就出现了一个矛盾了, 在大数据系统中, 由于数据量较大,实时响应非常困难, 那么Druid是如何做到的呢? 其实Druid的实现原理很简单,就是为保存的数据定时生成位图索引,这样在查询的时候,它就能快速的
2015-09-07 18:30:43 3509
原创 spring-aop之AfterReturningAdvice
spring-aop的AfterReturningAdvice的执行,其实就跟责任链中在调用invokeHandlers.invole()之后写的逻辑的原理是一样的。看下图:再看AfterReturningAdviceInterceptor的代码: public Object invoke(MethodInvocation mi) throws Throwable { Obje
2015-02-27 11:19:13 874
原创 spring-aop之MethodBeforeAdvice实现
spring-aop有四种常用的advice类型,分别是在方法执行前执行的逻辑, 在方法返回前执行的逻辑, 在方法抛出异常时执行的逻辑以及在方法运行的过程中执行的逻辑(其实前面三种只是最后一种的特殊实现)。使用学习可以看链接:http://www.mkyong.com/spring/spring-aop-examples-advice/. 下面我们就来看看在方法执行前执行的逻辑是如何实现的。
2015-02-27 10:20:26 1386
原创 一个HashMap的陷阱叙述
今天在工作当中遇到了一个问题, 其实问题跟下面的代码描述的是一样的: public class OsStat { //访问次数 private long hits; private String osFamily; private String os; @Override public int hashCode() { final int pri
2014-12-16 17:56:13 423
原创 动态代理设计模式
动态代理类是一个在运行时由开发人员所指定的一列接口的实现。动态代理接口是一种由代理类实现的接口,并且是一个java.lang.reflect.Proxy类的实例。每一个代理实例都与一个调用处理器对象相联,这个调用处理器实现了java.lang.reflect.InvocationHandler接口。在代理实例上的一个方法调用是通过其中之一的代理接口被转发到与这个代理实例相联的调用处理的invoke
2012-08-19 21:13:34 771
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人