摘要: 该篇博客的有些内容和在之前介绍过了,在这里再次涉及到的就不详细说了,如果有不理解请看【Java】NIO中Channel的注册源码分析, 【Java】NIO中Selector的创建源码分析 Selector的创建在Windows下默认生成WindowsSelectorImpl对象,那么Selector阅读全文
posted @ 2019-05-19 18:40 松饼人 阅读(99) 评论(0) 编辑
摘要: Channel的注册是在SelectableChannel中定义的: 而其具体实现是在AbstractSelectableChannel中: 其中regLock和keyLock是两个对象,分别用来做注册锁和key集合锁 isOpen判断Channel是否关闭,只有在Channel关闭后才会令isOp阅读全文
posted @ 2019-05-17 13:19 松饼人 阅读(113) 评论(0) 编辑
摘要: 在使用Selector时首先需要通过静态方法open创建Selector对象 可以看到首先是调用SelectorProvider的静态方法provider,得到一个Selector的提供者 这段代码的逻辑也比较简单,首先判断provider是否已经产生,若已经产生,则直接返回现有的;若没有,则需要调阅读全文
posted @ 2019-05-16 11:00 松饼人 阅读(91) 评论(0) 编辑
摘要: ServiceLoader主要的功能是用来完成对SPI的provider的加载。 先看下它的成员: 可以看到他首先是实现了Iterable接口,可以迭代。PREFIX:指明了路径是在"META-INF/services/"下。service:表示正在加载的服务的类或接口。loader:使用的类加载器阅读全文
posted @ 2019-05-15 20:01 松饼人 阅读(164) 评论(0) 编辑
摘要: 最近在web项目中,客户端注册时需要通过邮箱验证,服务器就需要向客户端发送邮件,我把发送邮件的细节进行了简易的封装: 最近在web项目中,客户端注册时需要通过邮箱验证,服务器就需要向客户端发送邮件,我把发送邮件的细节进行了简易的封装: 在maven中需要导入: 1 <!--Email--> 2 <d阅读全文
posted @ 2019-05-01 18:43 松饼人 阅读(51) 评论(0) 编辑
摘要: ThreadLocal内部是用一张哈希表来存储: 看过HashMap的话就很容易理解上述内容【Java】HashMap源码分析 而在Thread类中有一个ThreadLocalMap 的成员: 所以不难得出如下关系: 每一个线程都有一张线程私有的Map,存放多个线程本地变量 每一个线程都有一张线程私阅读全文
posted @ 2019-04-17 17:44 松饼人 阅读(182) 评论(0) 编辑
摘要: 使用:在src下新建一个test.properties文件如下: 执行解析: 结果如下:阅读全文
posted @ 2019-04-17 17:36 松饼人 阅读(55) 评论(0) 编辑
摘要: 接着上一篇,在上一篇完成了有关IOC的注解实现,这一篇用XML的方式实现IOC,并且完成AOP。 简易的IOC框图 注解的方式实现了左边的分支,那么就剩下右边的XML分支: XmlContext:这个类是也是AbstractApplicationContext的子类,和AnnotationConte阅读全文
posted @ 2018-10-29 18:06 松饼人 阅读(303) 评论(0) 编辑
摘要: 在这里我要实现的是Spring的IOC和AOP的核心,而且有关IOC的实现,注解+XML能混合使用! 参考资料: IOC:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Depend阅读全文
posted @ 2018-10-28 18:21 松饼人 阅读(371) 评论(0) 编辑
摘要: 上一篇介绍了HashMap的基本概念,这一篇着重介绍HasHMap中的一些常用方法:put()get()**resize()** 首先介绍resize()这个方法,在我看来这是HashMap中一个非常重要的方法,是用来调整HashMap中table的容量的,在很多操作中多需要重新计算容量。源码如下:阅读全文
posted @ 2018-10-12 23:37 松饼人 阅读(311) 评论(0) 编辑