Java
Z_ChenChen
这个作者很懒,什么都没留下…
展开
-
ScheduledThreadPoolExecutor中定时周期任务的实现源码分析
ScheduledThreadPoolExecutor是一个定时任务线程池,相比于ThreadPoolExecutor最大的不同在于其阻塞队列的实现首先看一下其构造方法:public ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFacto...原创 2020-01-07 16:18:01 · 287 阅读 · 0 评论 -
RocketMQ中Producer的启动源码分析
RocketMQ中通过DefaultMQProducer创建ProducerDefaultMQProducer定义如下:public class DefaultMQProducer extends ClientConfig implements MQProducer { protected final transient DefaultMQProducerImpl defaultMQProd...原创 2019-07-31 03:10:30 · 876 阅读 · 0 评论 -
【Java】ServiceLoader源码分析
ServiceLoader主要的功能是用来完成对SPI的provider的加载。先看下它的成员:public final class ServiceLoader<S> implements Iterable<S> { private static final String PREFIX = "META-INF/services/"; // T...原创 2019-05-15 19:52:49 · 270 阅读 · 0 评论 -
java邮件发送工具
最近在web项目中,客户端注册时需要通过邮箱验证,服务器就需要向客户端发送邮件,我把发送邮件的细节进行了简易的封装:在maven中需要导入:<!--Email--><dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId>...原创 2019-05-01 18:35:36 · 450 阅读 · 0 评论 -
【JAVA】ThreadLocal源码分析
ThreadLocal内部是用一张哈希表来存储:static class ThreadLocalMap { static class Entry extends WeakReference<ThreadLocal<?>> { /** The value associated with this ThreadLocal. */ ...原创 2019-04-17 17:27:10 · 248 阅读 · 0 评论 -
【Java】Properties文件的解析
public abstract class ReadProperties { public ReadProperties() {} /** * 回调函数,由调用者处理 * @param key * @param value */ public abstract void dealKeyAndValue(String key, String value); /**...原创 2019-04-17 15:03:19 · 232 阅读 · 0 评论 -
【Java】模拟Sping,实现其IOC和AOP核心(二)
接着上一篇,在上一篇完成了有关IOC的注解实现,这一篇用XML的方式实现IOC,并且完成AOP。简易的IOC框图注解的方式实现了左边的分支,那么就剩下右边的XML分支:XmlContext:这个类是也是AbstractApplicationContext的子类,和AnnotationContext相似,只不过这里是要解析XML文件而不是注解:(关于XML文件的解析之前给过一篇博客:【J...原创 2018-10-29 17:35:09 · 167 阅读 · 0 评论 -
【Java】模拟Sping,实现其IOC和AOP核心(一)
在这里我要实现的是Spring的IOC和AOP的核心,而且有关IOC的实现,注解+XML能混合使用!参考资料:IOC:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Look...原创 2018-10-29 14:45:45 · 187 阅读 · 0 评论 -
【Java】HashMap源码分析——基本概念
在JDK1.8后,对HashMap源码进行了更改,引入了红黑树。在这之前,HashMap实际上就是就是数组+链表的结构,由于HashMap是一张哈希表,其会产生哈希冲突,为了解决哈希冲突,HashMap采用了开链法,即对于用hash值计算哈希表数组下表时,当出现相同情况时,会在相同的地方追加造成链表的形式。对于分布均匀的情况下,仅仅是一个一维数组,查询起来时间复杂度时O(1),当,分布不均匀的时...原创 2018-10-07 14:17:48 · 306 阅读 · 0 评论 -
【Java】HashMap中的tableSizeFor方法
在HashMap中数据是存储在哈希表中的,实际上就是一个一维数组,而哈希表的大小总是是二的整数幂,这是因为在HashMap的resize()方法也就是扩容中,对于其所形成的链表的移动是以当前哈希表数组的下标值加上原来数组长度作为扩容后的数组下标,那么其最大取值就是原来数组的两倍大小,又因为其默认的初始大小是16,故该哈希表的大小总是2的整数幂。所以在HashMap中给出了一个计算大于等于当前数值的...原创 2018-10-07 00:00:10 · 2213 阅读 · 0 评论 -
【Java】用注解实现分发器
在Spring中,可以通过包扫描,找到带有注解的类和方法,通过反射机制进行注入;接下来会仿照这种模式,简单模拟其原理,完成核心效果:类标识的注解,只有带有该标识,才进行之后方法的扫描,否则不进行:import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.an...原创 2018-10-05 18:18:09 · 1254 阅读 · 0 评论 -
【Java】XML文件的解析
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import javax.xml.parsers.DocumentBuilder;import jav...原创 2018-10-05 15:10:25 · 204 阅读 · 0 评论 -
【Java】包、jar包的扫描
package com.test.package_scanner.core;import java.io.File;import java.io.FileFilter;import java.io.IOException;import java.net.JarURLConnection;import java.net.URISyntaxException;import java.ne...原创 2018-10-05 15:43:15 · 685 阅读 · 0 评论 -
【Java】HashMap源码分析—put、get、resize方法详解
上一篇介绍了HashMap的基本概念,这一篇着重介绍HasHMap中的一些常用方法:put()get()resize()首先介绍resize()这个方法,在我看来这是HashMap中一个非常重要的方法,是用来调整HashMap中table的容量的,在很多操作中多需要重新计算容量。源码如下:final Node&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;K,V&amp;amp;amp;amp;amp;amp;amp;amp;amp原创 2018-10-11 22:11:49 · 564 阅读 · 0 评论