- 博客(149)
- 问答 (1)
- 收藏
- 关注
原创 读Objects源码
[code="java"]//该类是一个工具类,主要封装了对对象的equals,hashcode,compare和check 异常等方法。 //先看构造函数: //工具类,所以构造函数是私有的。防止反射创建对象所以抛出异常。 private Objects() { throw new AssertionError("No java.util.Objects ...
2018-06-17 14:02:29
273
原创 读java Optional 源码
[code="java"] //该类是jdk1.8新增的类,主要是为了解决NPE问题。 //先看构造函数: private Optional() { this.value = null; } private Optional(T value) { this.value = Objects.requireNonNull(value...
2018-06-01 20:00:41
253
原创 springmvc执行过程
[img]http://dl2.iteye.com/upload/attachment/0129/2812/d39c7cd0-55dd-30cb-8777-bbac2a8c4415.png[/img] [code="java"] springmvc的执行过程: 一个请求执行的是DispatcherServlet的doService方法: protected void...
2018-03-26 10:09:12
278
原创 springmvc的初始化
[img]http://dl2.iteye.com/upload/attachment/0129/2650/4e61523d-811a-3e41-bc4e-88a54ec96293.png[/img] [code="java"] 先从核心DispatcherServlet入手: 既然是servlet那我们先来看serlvet的初始化: @Override publi...
2018-03-23 13:41:27
220
原创 java从数据库中查出来二次封装基于注解
实现类似于mybatis一对多关系和一对一关系: 上代码: [code="java"] /** * @author * @version 创建时间:2017年3月23日 上午11:01:39 * @description 定义1对多关系注解 value代表要发射的字段名 */ @Target({ ElementType.FIELD }) @Retention(Ret...
2018-03-05 22:33:24
269
原创 java从数据库中查出来二次封装基于XML
实现类似于mybatis的配置关系一对多或者一对一的实现:基于实现: 先上个配置文件 [code="java"] /** * @author * @version 创建时间:2017年3月20日 下...
2018-03-05 22:22:50
191
原创 mybatis与spring整合之MapperScannerConfigurer
[code="java"] //实现了BeanDefinitionRegistryPostProcessor和InitializingBean接口 //所以首先会调用 //判空扫描的包 public void afterPropertiesSet() throws Exception { notNull(this.basePackage, "Property 'basePacka...
2017-10-25 11:32:41
179
原创 mybatis与spring整合之SqlSessionFactoryBean
[code="java"] //初始化SqlSessionFactoryBean //SqlSessionFactoryBean实现了InitializingBean来进行初始化 public void afterPropertiesSet() throws Exception { notNull(dataSource, "Property 'dataSource' is requ...
2017-10-25 11:31:29
1021
原创 spring之BeanNameAware
[code="java"] //BeanNameAware该接口主要用于获取自身在spring中的名称 public interface BeanNameAware extends Aware { void setBeanName(String name); } //其实现原理也是在创建bean的时候进行注入 //AbstractAutowireCapableBeanFa...
2017-10-23 10:38:01
1387
原创 spring之ApplicationContextAware接口
[code="java"] //该接口会帮你注入ApplicationContext public interface ApplicationContextAware extends Aware { void setApplicationContext(ApplicationContext applicationContext) throws BeansException; } ...
2017-10-20 17:40:54
175
原创 spring之BeanDefinitionRegistryPostProcessor接口
[code="java"] //该接口继承自BeanFactoryPostProcessor,该接口可用于动态像spring注册bean //例如在spring跟mybatis的整合中MapperScannerConfigurer就实现了该类用于动态注册mapper。 public interface BeanDefinitionRegistryPostProcessor extends...
2017-10-20 13:59:31
250
原创 spring之FactoryBean接口
[code="java"] //该接口主要用于从spring中获取bean的时候如果实现了该接口会直接调用该接口中的getObject来获取bean public interface FactoryBean { T getObject() throws Exception; Class getObjectType(); boolean isSingleton...
2017-10-20 10:53:48
197
原创 spring之InitializingBean接口的使用
[code="java"] //记录几个spring的接口以及使用 //从名字可以看出来这个接口主要用于初始化bean用。在bean被初始化后就会执行afterPropertiesSet方法。 public interface InitializingBean { void afterPropertiesSet() throws Exception; } //其实现原理如...
2017-10-20 10:26:22
224
原创 读AbstractStringBuilder源码
[code="java"] //该类是StringBuilder和StringBuffer基类实现了Appendable和CharSequence接口 //StringBuffer是线程安全的.所以就在所有方法上加上了synchronized关键字。 //先看构造函数 AbstractStringBuilder() { } AbstractStringBuilder...
2017-10-16 16:56:41
242
原创 读String源码
[code="java"] //先看构造函数 public String() { this.value = new char[0]; } public String(String original) { this.value = original.value; this.hash = original.hash; ...
2017-10-16 15:17:29
172
原创 读ThreadLocal源代码
[code="java"] //可以存取线程局部变量 //先看构造函数 public ThreadLocal() { } //设置值 public void set(T value) { Thread t = Thread.currentThread(); //这个Map以this为key ThreadLocalMap map =...
2017-10-12 15:00:38
168
原创 读Collections源码
[code="java"] //一个操作集合的工具类,里面全部都是静态方法。 //根据元素的自然顺序进行排序 public static contains = c2; Collection iterate = c1; //注释上写的这样效率更高 if (c1 instanceof Set) { ...
2017-10-11 14:53:13
196
原创 读Exchanger源码
[code="java"] //用于线程间交换数据 public V exchange(V x) throws InterruptedException { if (!Thread.interrupted()) { Object v = doExchange((x == null) ? NULL_ITEM : x, false, 0); ...
2017-10-10 11:38:56
167
原创 读EnumSet源码
[code="java"] //一个基于枚举的Set,其效率在大多数时候都比HashSet高。 //该类是一个抽象类其实现类有RegularEnumSet和JumboEnumSet。 //创建一个最初包含指定元素的枚举(带of的方法实现基本都一样) public static EnumSet of(E e) { EnumSet result = noneOf(e...
2017-10-06 18:02:59
155
原创 读EnumMap源码
[code="java"] //一个key是枚举类型的map,速度基本会比hashMap更快 //先看构造函数 //构造指定键类型的EnumMap public EnumMap(Class keyType) { this.keyType = keyType; //获取key的枚举值 keyUniverse = getKeyUniverse(key...
2017-10-06 15:23:15
195
原创 读IdentityHashMap源码
[code="java"] //和HashMap的主要区别在于判断key的相等采用的是== //该map计算hash值使用的是System.identityHashCode方法。 //并且该Map内部将键存在i位置,值存在i+1位置上。 //先看构造函数: public IdentityHashMap() { init(DEFAULT_CAPACITY); ...
2017-10-06 11:11:31
170
原创 读Stack源码
[code="java"] //一个堆栈结构的集合(先进后出)继承于Vector //基本已被ArrayDeque取代 //先看构造函数 public Stack() { } //新增一个元素 public E push(E item) { addElement(item); return item; } pu...
2017-10-05 10:14:12
136
原创 java编译编码问题
最近由一个编码问题。让我对另一个编码问题产生了疑惑。 即我们在写java源文件的时候一般使用的是utf-8编码,但是tomcat控制台(直接在bin里面启动的那个黑窗口)编码是gbk.为什么tomcat控制没有乱码问题? 最开始我想的是既然我的java源文件是按照utf-8编码,那么最后必须按照utf-8解码才不会有问题啊。为什么tomcat用gbk解码没有乱码问题? 然后查了下...
2017-10-02 11:35:18
581
原创 读Executors源码
[code="java"] //一个管理线程创建的类里面都是静态方法 //创建一个corePoolSize和maximumPoolSize相等的线程池也就是当线程数为nThreads时,就不在新增线程了。 public static ExecutorService newFixedThreadPool(int nThreads) { return new Thread...
2017-09-29 15:23:24
209
原创 读WeakHashMap源码
[code="java"] //一个基于弱引用的Map对象 //先看构造函数 public WeakHashMap() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR); } public WeakHashMap(int initialCapacity) { this(initi...
2017-09-28 17:06:15
164
原创 读ArrayDeque源码
[code="java"] //一个双端队列 比stack和LinkedList效率高 //先看构造函数 public ArrayDeque() { elements = (E[]) new Object[16]; } public ArrayDeque(int numElements) { allocateElements(numEl...
2017-09-26 13:38:10
175
原创 读ScheduledThreadPoolExecutor源码
[code="java"] //一个可以延迟执行的定时任务 //先看构造函数 构造函数最重要的区别是传入了DelayedWorkQueue一个延迟的queue /** 总结:该线程池继承了ThreadPoolExecutor。同时内部封装了一个DelayedWorkQueue和 ScheduledFutureTask。DelayedWorkQueue用于管理任务的新增和获取。Sche...
2017-09-25 17:33:01
221
原创 读部分ThreadPoolExecutor源码
[code="java"] //线程池 //先看构造方法 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ...
2017-09-25 15:27:34
126
原创 读AbstractExecutorService
[code="java"] //他是ExecutorService的部分实现 public abstract class AbstractExecutorService implements ExecutorService //提交一个Runnable任务给AbstractExecutorService执行返回Future public Future submit(Runnable t...
2017-09-23 16:34:55
179
原创 读ExecutorCompletionService源码
[code="java"] //一个用来管理已完成任务的service,内部封装了一个队列。 //它是CompletionService的一个实现 public class ExecutorCompletionService implements CompletionService //先看构造函数 public ExecutorCompletionService(Executo...
2017-09-23 11:22:38
192
原创 读FutureTask源码
[code="java"] //一个可以异步返回计算的结果 //它同时实现了Future和Runnable //先看构造函数 public FutureTask(Callable callable) { if (callable == null) throw new NullPointerException(); this.c...
2017-09-22 16:45:10
164
原创 读ConcurrentSkipListMap源码
[code="java"] //数据结构是跳表 关于数据结构http://blog.youkuaiyun.com/coslay/article/details/44819823这篇文章写得很好 //另外ConcurrentSkipListSet底层也是用ConcurrentSkipListMap实现的。 //先看构造函数 public ConcurrentSkipListMap() { ...
2017-09-21 15:11:15
120
原创 读TreeMap源码
[code="java"] //一个基于二叉红黑树实现的map //关于红黑树http://blog.youkuaiyun.com/chenssy/article/details/26668941这篇博客写的非常好 //另外TreeSet的是用TreeMap实现的。(组合设计模式,将所有的实现委托给TreeMap实现) //先看构造函数 public TreeMap() { co...
2017-09-13 11:21:00
133
原创 读Semaphore源码
[code="java"] //一个信号量,只有在池中还拥有许可时才允许线程继续执行。 //先看构造函数 //默认是非公平模式 public Semaphore(int permits) { sync = new NonfairSync(permits); } NonfairSync(int permits) { super(...
2017-09-09 14:58:27
150
原创 oracle分组查询
oracle中分组查询并且查询每组前几条数据 select * from ( SELECT b,c,row_number() OVER(PARTITION BY b ORDER BY c desc) e FROM test_table) t where e
2017-09-08 16:10:05
280
原创 读CyclicBarrier源码
[code="java"] //一个循环的屏障。所有的线程在屏障处等待其他线程执行完毕。然后再各自执行。 //先看构造函数 public CyclicBarrier(int parties) { this(parties, null); } //barrierAction代表在屏障上等待的最后一个线程已经执行完后,执行的runnable public...
2017-09-01 17:59:28
258
原创 读CountDownLatch源码
[code="java"] //在完成一组操作之前允许一个或多个线程等待内部用的AQS private static final class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 4982264981922014374L; ...
2017-09-01 14:01:35
134
原创 读ConcurrentLinkedQueue
[code="java"] //这是一个无阻塞的队列没有加任何锁全部利用CAS机制实现。效率极高。 //先看构造函数 public ConcurrentLinkedQueue() { head = tail = new Node(null); } public ConcurrentLinkedQueue(Collection...
2017-09-01 11:40:24
132
原创 读ConcurrentHashMap源码
[code="java"] //先看构造函数 public ConcurrentHashMap() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_CONCURRENCY_LEVEL); } public ConcurrentHashMap(int initialCapacity) {...
2017-08-31 11:21:39
144
原创 读HashSet源码
[code="java"] //先看构造函数 public HashSet() { map = new HashMap(); } public HashSet(int initialCapacity) { map = new HashMap(initialCapacity); } public HashSet(int ini...
2017-08-29 11:33:47
111
空空如也
java web在ie中在线打开pdf
2015-02-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅