原创 【JDk源碼解析之三】HashMap源碼解析

1.HashMap的實現了Map接口,繼承於AbstractMap 2.我們常說HashMap是數組加鏈表的實現形式,那麼就具體來看看。HashMap的主要屬性定義如下圖。先說數組+鏈表,數組只的就是table[]數組,這個數組是Ent

原创 每天進步一點點——Linux中的文件描述符與打開文件之間的關係

1. 概述     在Linux系統中一切皆可以看成是文件,文件又可分爲:普通文件、目錄文件、鏈接文件和設備文件。文件描述符(file descriptor)是內核爲了高效管理已被打開的文件所創建的索引,其是一個非負整數(通常是小整

原创 Java集合類Set的add方法妙用

關於這個Set方法的妙用,主要在於Set集合的add方法。 我們知道Set集合是可以去重的,就是沒有相同的元素。在執行add方法時候,如果這個元素已經在set中存在,那麼就返回false,否則返回true。 所以,我們可以根據返回值,來確

原创 【JDk源碼解析之一】ArrayList源碼解析

1.ArrayList的繼承關係如圖所示: 2.宏觀上說,ArrayList是基於動態數組實現的,數組具有按索引查找的特性,所以訪問很快,適合經常查詢的數據。 3.具體源碼解析。 爲什麼說ArrayList是動態數組,這個可以看它的構造

原创 Socket的深入理解之一

這幾天看了看Socket相關的內容,很有收穫記錄一下。 1.什麼是Socket? Socket本質上還是文件,因爲Linux上一切皆文件。Socket也有對應的文件描述符(fd)。文件描述符相關的參考另外一篇博客。 http://blog

原创 Java線程池

java線程池。在jdk5之後爲我們提供了線程池,只需要使用API,不用去考慮線程池裏特殊的處理機制。jdk5線程池分好多種,固定尺寸的線程池、可變尺寸連接池等。常用的是ThreadPoolExecutor,它的構造方法如下: pu

原创 Linux IO模式及 select、poll、epoll詳解

注:本文是對衆多博客的學習和總結,可能存在理解錯誤。請帶着懷疑的眼光,同時如果有錯誤希望能指出。 本文和另外一個一起看,效果會很好: https://www.zhihu.com/question/32163005 同步IO和異步

原创 String直接賦值和new一個對象的理解

我們直接來看兩句代碼 String str1 = new String("abc"); String str2 = "abc"; System.out.println

原创 Spring源碼解析之四 ------ AOP原理和源碼分析

<!-- 另外寫了兩篇博客,一個是refresh()裏面方法的基本介紹,另外一個是bean的實例化過程 --> 在介紹AOP之前,想必很多人都聽說AOP是基於動態代理和反射來實現的,那麼在看AOP之前,你需要確實弄懂動態代理和反射。 巧了

原创 Java併發之CountDownLatch的使用和源碼解析

CountDownLatch 構造方法 它在初始化時候,可以通過構造函數新建一個類似於計數器的功能。 public CountDownLatch(int count) { if (count < 0) throw

原创 JDK動態代理源碼分析之一

一、JDK動態代理的Demo 接口實現類: package com.weili.cn; /** * Created by weili on 17/6/23. */ public class Animal implements A

原创 Java虛擬機之Java內存區域劃分

一、Java虛擬機 在執行Java程序的過程中,會把所管理的內存區域劃分爲多個不同的數據區域:方法區、堆、Java虛擬機棧、本地方法區、程序計數器。 二、程序計數器 程序計數器是線程私有的。 所謂線程私有就是說,多個線程之間互不影響,獨

原创 Spring源碼解析之三 ------ bean的初始化(IOC的第二步)

在前兩篇博客裏,講了spring對於自定義標籤和默認標籤的初始化過程。對於bean標籤的解析註冊,這只是IOC的第一步,而我們知道,我們經常用的bean默認是單例的,而且是spring爲我們提供好的。這就涉及到IOC的第二步,爲bean

原创 Java虛擬機之垃圾收集算法

一、標記-清除算法 算法分爲標記和清除兩個階段。 首先標記需要回收的所有對象,然後在標記完成後,統一回收所有被標記的對象。 不足:1.效率問題。標記和清除兩個過程的效率都不高              2.空間問題。標記清除之後會產生大量

原创 springMVC使用@ControllerAdvice實現異常處理

@ControllerAdvice註解的類,會被作用於@RequesMapping註解的方法上。 先來看看它的基本實現 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIM