原创 一篇徹底學會常用的sql語句

爲了以後查閱方便,對常用的sql語句進行一下總結。主要內容包括,增刪改查(CURD),重點在查詢(子查詢,模糊查詢,分組查詢等)。 在開始之前,要注意:sql是不區分大小寫的,但是爲了代碼容易閱讀與調試,一般將Sql關鍵字大寫,

原创 JDK源碼解析基礎篇--java.lang.Object及其方法約定

這是源碼閱讀的開端,當然選擇從類層次結構的根類–java.lang.Object類開始。 所有類的默認繼承Object類(若沒有繼承其他類),Object類是繼承體系的根類,由類直接或間接繼承。 Object方法分類 首

原创 JDK源碼解析集合篇--HashMap無敵全解析

前兩篇寫了Collection體系的List下的ArrayList與LinkedList,另外一部分是Set集合下的集合類,但是Set集合的實現類基本是由Map集合的實現類實現的,所以先分析一下重要的HashMap。 數組存儲區

原创 10大排序算法大總結--Java實現

     今天總結了一下排序算法,在這裏給出總結。主要以代碼形式給出,沒有涉及過多的解釋。但是都比較簡單,看代碼註釋也可以看懂。首先,來個綜述: 這是百度上的一個總結,爲什麼這裏說有10種排序算法呢,這是因爲加上了計數排序和桶排序,這兩

原创 Java的四種引用類型與ReferenceQueue

Java垃圾回收算法中,判斷一個引用對象是否還存活是很重要的。Java有四種引用類型:分別爲:強引用,軟引用,弱引用,虛引用。 在JDK 1.2以前的版本中,若一個對象不被任何變量引用,那麼程序就無法再使用這個對象。也就是說,

原创 設計模式--JDK動態代理的實現與原理解析(2)

在上一篇博客中,實現了JDK的動態代理。但是,我們不僅要學會如何使用,更要理解其內部的具體實現。 我們是通過此方法獲得對目標對象的代理類: public Object getProxy() { //參數意

原创 JDK源碼解析基礎篇-8種基本數據類型的包裝類及相關討論

這是源碼解析系列的第二篇,依然來學習java.lang包下常用的類–8種基本數據類型對應的包裝類。將從概念到源碼進行學習,並對其緩存、自動拆裝箱的語法糖等注意點進行分析。 在開始之前,今天看到一個有趣問題:Java到底是純面嚮對

原创 JDK源碼解析集合篇--綜述

Java集合工具包位於Java.util包下,包含了很多常用的數據結構,如數組、鏈表、棧、隊列、集合、哈希表等。學習Java集合框架下大致可以分爲如下五個部分:List列表、Set集合、Map映射、迭代器(Iterator、Enu

原创 二分搜索及其變形應用

    二分搜索(折半查找)是應用很廣泛的一種算法,當出現有序序列時,我們可以立馬想到能否可以用二分法,其寫法也較爲固定。我們可以把二分法視爲分治的應用。但是如果不注意其變換條件也是很容易寫錯。下邊給出了二分查找的非遞歸和遞歸寫法,只要注

原创 設計模式--工廠模式(簡單工廠、工廠方法、抽象工廠模式)

工廠模式是最常用的一類創建型設計模式,通常我們所說的工廠模式是指工廠方法模式,它也是使用頻率最高的工廠模式。本章將要學習的簡單工廠模式是工廠方法模式的“小弟”,它不屬於GoF 23種設計模式,但在軟件開發中應用也較爲頻繁,通常將它

原创 理解null關鍵字及集合或字符串需先判斷null再判斷長度的原因

null關鍵字 Java中,null是一個關鍵字,代表不確定的對象。null只能用於賦給引用類型變量,不可以賦給基本數據類型變量。類成員引用變量默認爲null。但對於非類成員變量,不能只聲明定義,不進行初始化,但後邊的代碼中使用了

原创 設計模式--CGLib動態代理的實現與解析

在前兩篇的JDK動態代理中,它是通過Proxy類和實現InvocationHandler接口實現的。但是此方式最大的缺點是:要求被代理的目標類必須實現一個接口,而且只能對接口中的方法實現代理。因爲最終生成的代理類是繼承了Proxy

原创 設計模式--裝飾者模式(在IO體系中的應用)

上一篇介紹了適配器模式,它是將一個類的接口,轉化成客戶期望的另一個接口,適配器讓原本接口不兼容的類可以合作無間。裝飾者模式:動態的將責任附加到對象上(因爲利用組合而不是繼承來實現,而組合是可以在運行時進行隨機組合的)用來擴展功能。

原创 設計模式--JDK動態代理的實現與原理解析(1)

代理模式是一種很重要很有用的設計模式。被應用到很多著名的框架中,其中Spring Aop的底層就是通過JDK動態代理和CGLib動態代理實現的。其中,JDK動態代理是其默認實現。動態代理的作用就是在不修改原目標類的前提下,對目標類

原创 深入分析ThreadLocal

在JDK1.2 版本中,提供了java.lang.ThreadLocal。它爲解決多線程併發問題提供了一種新的思路,有其特定的應用場景。 1. 如何理解ThreadLocal ThreadLocal,很多人叫它線程本