原创 【Java】NIO中Selector的select方法源碼分析

該篇博客的有些內容和在之前介紹過了,在這裏再次涉及到的就不詳細說了,如果有不理解請看【Java】NIO中Channel的註冊源碼分析, 【Java】NIO中Selector的創建源碼分析 Selector的創建在Windows下默

原创 【Java】NIO中Channel的註冊源碼分析

Channel的註冊是在SelectableChannel中定義的: public abstract SelectionKey register(Selector sel, int ops, Object att)

原创 Netty中的ChannelFuture和ChannelPromise

在Netty使用ChannelFuture和ChannelPromise進行異步操作的處理 這是官方給出的ChannelFutur描述 * | Compl

原创 【Java】NIO中Selector的創建源碼分析

在使用Selector時首先需要通過靜態方法open創建Selector對象 public static Selector open() throws IOException { return SelectorPr

原创 Netty中的ChannelPipeline源碼分析

ChannelPipeline在Netty中是用來處理請求的責任鏈,默認實現是DefaultChannelPipeline,其構造方法如下: private final Channel channel; private final

原创 【Java】ServiceLoader源碼分析

ServiceLoader主要的功能是用來完成對SPI的provider的加載。 先看下它的成員: public final class ServiceLoader<S> implements Iterable<S> {

原创 java郵件發送工具

最近在web項目中,客戶端註冊時需要通過郵箱驗證,服務器就需要向客戶端發送郵件,我把發送郵件的細節進行了簡易的封裝: 在maven中需要導入: <!--Email--> <dependency> <groupId>javax.m

原创 【JAVA】ThreadLocal源碼分析

ThreadLocal內部是用一張哈希表來存儲: static class ThreadLocalMap { static class Entry extends WeakReference<ThreadLocal<?>> {

原创 【Java】Properties文件的解析

public abstract class ReadProperties { public ReadProperties() {} /** * 回調函數,由調用者處理 * @param key * @param

原创 【Java】模擬Sping,實現其IOC和AOP核心(二)

接着上一篇,在上一篇完成了有關IOC的註解實現,這一篇用XML的方式實現IOC,並且完成AOP。 簡易的IOC框圖 註解的方式實現了左邊的分支,那麼就剩下右邊的XML分支: XmlContext: 這個類是也是AbstractApp

原创 【Java】模擬Sping,實現其IOC和AOP核心(一)

在這裏我要實現的是Spring的IOC和AOP的核心,而且有關IOC的實現,註解+XML能混合使用! 參考資料: IOC:控制反轉(Inversion of Control,縮寫爲IoC),是面向對象編程中的一種設計原則,可以用來減低

原创 【Java】HashMap源碼分析—常用方法詳解

上一篇介紹了HashMap的基本概念,這一篇着重介紹HasHMap中的一些常用方法: put() get() resize() 首先介紹resize()這個方法,在我看來這是HashMap中一個非常重要的方法,是用來調整HashMap

原创 【Java】HashMap源碼分析——基本概念

在JDK1.8後,對HashMap源碼進行了更改,引入了紅黑樹。 在這之前,HashMap實際上就是就是數組+鏈表的結構,由於HashMap是一張哈希表,其會產生哈希衝突,爲了解決哈希衝突,HashMap採用了開鏈法,即對於用對象ha

原创 【Java】HashMap中的tableSizeFor方法

在HashMap中數據是存儲在哈希表中的,實際上就是一個一維數組,而哈希表的大小總是是二的整數冪,這是因爲在HashMap的resize()方法也就是擴容中,對於其所形成的鏈表的移動是以當前哈希表數組的下標值加上原來數組長度作爲擴容後

原创 【Java】用註解實現注入

在Spring中,可以通過包掃描,找到帶有註解的類和方法,通過反射機制進行注入; 接下來會仿照這種模式,簡單模擬其原理,完成核心效果: 類標識的註解,只有帶有該標識,才進行之後方法的掃描,否則不進行: import java.lang