原创 【Java常用排序算法】選擇排序(簡單選擇排序、堆排序)

選擇排序 選擇排序的基本思想:每一趟從待排序的元素序列中選出關鍵字最大(最小)的元素,按順序放在已排序的元素序列的最後面(最前面),直到全部排完爲止。 根據選出元素的方式又分爲簡單選擇排序和堆排序。簡單選擇排序是通過簡單的數組遍

原创 【Java常用排序算法】歸併排序(二路歸併排序)

歸併排序的思路 歸併排序是通過“歸併”操作完成排序的,將兩個或者多個有序子表歸併成一個子表。歸併排序是“分治法”的一個非常典型的應用,同時它也是遞歸算法的一個好的實例。它將問題分成一些小的問題然後遞歸求解,而治就是把分階段的答案拼

原创 Redis簡介及環境搭建(Windows和CentOS)

Redis簡介 Redis是一個開源(BSD許可),內存中的數據結構存儲,用作數據庫,緩存和消息代理。它支持數據結構,例如字符串,哈希,列表,集合,帶有範圍查詢的排序集,位圖,超文本和具有半徑查詢的地理空間索引。Redis具有內置複製,L

原创 findBug 錯誤修改指南(轉載)

FindBugs錯誤修改指南  1. EC_UNRELATED_TYPES Bug: Call to equals() comparing different types Pattern id: EC_UNRELATED_TYPES,

原创 《深入理解Java虛擬機》個人讀書總結——垃圾收集/回收算法

說起垃圾回收,我估計很多初級java開發(包括之前的我)想到的是這個JVM會幫我管理的啊,我們不太需要去考慮這種事情。但是,當需要排查各種內存溢出、內存泄漏問題時,當垃圾收集成爲系統達到更高併發量的瓶頸的時候,我們就有必要對垃圾回收GC進

原创 Spring事務管理詳解

事務的基本原理 Spring事務的本質其實就是數據庫對事務的支持,使用JDBC的事務管理機制,就是利用java.sql.Connection對象完成對事務的提交,那在沒有Spring幫我們管理事務之前,我們要怎麼做。 Connection

原创 重新去認識HashMap(Java8源碼淺析)

加入新公司後一直忙於項目,瘋狂加班,斷更了N個月,一直沒時間去管理自己所學習的新的知識(說白了就是懶。。。),前些天在頭條上看到了一篇關於jdk5,6,7,8,9的一些區別的文章,雖然有所瞭解,但由於自己的項目中用的依舊還是1.6,因此並

原创 JDK裏的設計模式

看到一篇比較詳細關於JDK中的設計模式,目前正學設計模式,剛好想研究開源代碼裏面存在的設計模式相關的思想。轉載下來備後面查閱用。 下面是JDK中有關23個經典設計模式的示例,在stakeoverflow也有相應的討論:http://sta

原创 ServletContextListener使用詳解

在 Servlet API 中有一個 ServletContextListener 接口,它能夠監聽 ServletContext 對象的生命週期,實際上就是監聽 Web 應用的生命週期。 當Servlet 容器啓動或終止Web 應用時,

原创 Java設計模式之裝飾者模式

裝飾者模式,通過這種設計模式爲一個對象動態的加上一系列的動作,而不需要因爲這些動作的不同而產生大量的繼承類。這個模式在JDK中幾乎無處不在,例如: java.io.BufferedInputStream java.io.FileRea

原创 正則表達式必知必會

寫在前面 對於正則表達式,我相信很多人的都和我一樣,看一眼,迷迷糊糊,要用到的時候也是直接百度現成的,知乎上關於如何學好正則表達式一致的說法都是”無他,唯手熟爾”。我們每次百度現成的就會少一次自己獨立思考的機會,雖然之前有學過一丁半點,但

原创 Log4J的基本配置

Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是Java的properties文件。通常,我們都提供一個名爲 log4j.properties的文件(log4j.xml文件也有在用,推薦用xml),在第一次調用到Log4J時

原创 Spring IOC的個人理解及Spring對bean的裝配

IOC是什麼? IOC的英文全稱是Inversion of Control,即控制反轉。IOC並不是什麼技術,而是一種設計思想。 IOC有什麼好處,或者說你怎麼理解控制反轉? 這是恐怕是面試官對於Spring框架的問題中最爲常見的一個問題

原创 面試中關於HashMap的時間複雜度O(1)的思考

今天在面試的時候說到HashMap,面試官問了這麼一個問題:你說HashMap的get迭代了一個鏈表,那怎麼保證HashMap的時間複雜度O(1)?鏈表的查找的時間複雜度又是多少? 在這之前我是閱讀過HashMap的源碼的:Java7源

原创 《深入理解Java虛擬機》個人讀書總結——虛擬機類加載機制

我們都知道Java虛擬機是用來運行我們編譯好的.class文件的,class文件中夾帶類的各種信息,虛擬機要運行這些文件,第一件事就是要加載到虛擬機中,這就引出了這次總結的問題——虛擬機是如何加載這些class文件的?加載後虛擬機是怎麼處