原创 Java設計模式之適配器模式----解決接口之間的兼容問題

一.適配器模式介紹 適配器模式(Adapter Pattern):將一個接口轉換成客戶希望的另一個接口,使接口不兼容的那些類可以一起工作,其別名爲包裝器(Wrapper)。適配器模式既可以作爲類結構型模式,也可以作爲對象結構

原创 Java設計模式之裝飾器模式----避免繼承帶來的類冗餘問題

一.裝飾器模式介紹 裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬於結構型模式,它是作爲現有的類的一個包裝。 這種模式創建了一個裝飾類,用來包裝原有

原创 Java設計模式之命令模式----解耦請求發出者和請求實現者

一.場景 在餐廳裏,我們要吃飯,就需要對餐廳發出請求,此時,我們是請求發出者。餐廳的廚師則是請求實現者,如果我們直接和廚師交流溝通說自己想吃什麼,這時,我們和廚師就是一種強耦合關係,當顧客越來越多,廚師也各司其職的時候,就不好運

原创 Java設計模式之工廠模式----簡單工廠?抽象工廠?工廠方法?

一.我們說的設計模式指什麼? GoF(Gang of Four):是四個人的代號。 《Design Patterns: Elements of Reusable Object-Oriented Software》(即後述《設計模

原创 Java併發之CopyOnWriteArrayList源碼------寫時複製如何保證線程安全?

一.場景引入 還是繼續上次的例子,三十個線程,每個都向list中加一個8位字符串並打印,觀察結果 public class NotSafeDemo { public static void main(String[]

原创 Java多線程與併發之Callable接口-------是什麼,怎麼用

面試題:幾種方式獲得多線程? 此時如果你答兩種:Runnable和繼承Thread,這是不行的,正確答案應該是: 傳統的是繼承thread類和實現runnable接口 JDK1.5 以後又有通過實現callable接口和線程池獲

原创 SQL查詢語句練習題

一.查找最晚入職員工的所有信息 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varc

原创 【圖示】MyBatis架構及其解析流程

一.MyBatis介紹 MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名爲MyBatis,實質上My

原创 深入學習Java集合類源碼之ArrayList

一.簡介: ArrayList是基於數組實現的List類,它可以動態增長 ArrayList是線程不安全的 ArrayList繼承自AbstractList 二.源碼分析: 1.繼承關係 public class Array

原创 深入學習Java集合類源碼之LinkedList

一.簡介: LinkedList是一種可以在任何位置進行高效地插入和移除操作的有序序列,它是基於 雙向鏈表 實現的。 LinkedList可以被當作堆棧、隊列或雙端隊列進行操作。 LinkedList 是非同步的 二.源碼分

原创 Redis數據庫中List列表的常用命令,高級語法和應用場景

一.簡介 Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊) 一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素) 類似JAV

原创 深入學習Java集合類源碼之PriorityQueue

一.最小堆和最大堆 最大堆:根結點的鍵值是所有堆結點鍵值中最大者,且每個結點的值都比其孩子的值大。 最小堆:根結點的鍵值是所有堆結點鍵值中最小者,且每個結點的值都比其孩子 二.繼承關係 public class Priori

原创 Redis數據庫中Hash哈希的介紹,常用命令和應用場景

一.簡介 Redis hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。 可以看成一個map容器 Redis 中每個 hash 可以存儲 232 - 1 鍵值對(40多億) 。該類型

原创 Spring註解驅動開發-------------管理bean生命週期的四種方式

一.應用場景 在之前,我們會使用XML配置文件來指定每一個Bean的id,屬性,或者作用域,初始化及銷燬方法,這要求我們寫大量的配置文件,在開發過程中十分麻煩。通過Spring提供的一套註解驅動支持,我們可以用註解來替代之前的配

原创 Java併發編程之用Condition配合Lock進行多線程循環順序打印-----面試常考

一.場景 多線程之間按順序調度 三個線程 A B C A打印5次,B打印10次,C打印15次 循環十輪 如果用之前那一套語法,也就是wait,notifyAll很難實現我們的需求,所以我們通過Lock配合Condition來完