原创 Hibernate運行原理

Hibernate運行原理 Hibernate是一個開放源代碼的對象關係映射框架,她對JDBC進行了非常輕量級的對象封裝,使得java程序員可以隨心所欲的使用對象編程思維來操縱數據庫,hibernate可以應用在任何使用JDBC的場合,既

原创 ConCurrent併發包 - Lock詳解

synchronized的缺陷 我們知道,可以利用synchronized關鍵字來實現共享資源的互斥訪問。Java 5在java.util.concurrent.locks包下提供了另一種來實現線程的同步訪問,那就是Lock。既然有了s

原创 多線程 - 線程池的實現

概述 系統啓動一個新線程的成本是比較高的,因爲它需要與系統交互,使用線程池可以有效地控制系統中併發線程的數量。尤其是當系統中需要創建大量生命週期很短的線程時,這種效果尤爲明顯。 線程池會在程序啓動時創建一定數量的線程。當程序將一個Run

原创 Java回調機制(callback)

最近學習java,接觸到了回調機制(CallBack)。初識時感覺比較混亂,而且在網上搜索到的相關的講解,要麼一言帶過,要麼說的比較單純的像是給CallBack做了一個定義。當然了,我在理解了回調之後,再去看網上的各種講解,確實沒

原创 Java虛擬機模型

1 概述 衆所周知,Java支持平臺無關性、安全性和網絡移動性。而Java平臺由Java虛擬機和Java核心類所構成,它爲純Java程序提供了統一的編程接口,而不管下層操作系統是什麼。正是得益於Java虛擬機,它號稱的“一次編譯,

原创 設計模式 - 觀察者模式

概述 很早以前,當一個對象的行爲依賴於另一個對象的狀態時,只能開啓一個線程不斷的監聽對象所依賴的狀態。比如通過Callable線程的call()方法獲取線程的返回值。當調用Future接口的get()方法時,程序會阻塞在那裏,直到拿到線

原创 Java基礎--定時任務Timer

一、Timer介紹  java.util.Timer  java.util.TimerTask Timer是一個定時器類,通過該類可以爲指定的定時任務進行配置。TimerTask類是一個定時任務類,該類實現了Runnable接口,

原创 集合框架 - ArrayList的實現原理

一、基本特性 ArrayList是基於數組實現的,並且可以動態擴容。下面簡述一下ArrayList的特性: (1)get和set操作性能很高,可以按索引獲取; (2)在末尾add和remove的效率也很高,不需要移動元素; (3)常規的a

原创 java.lang.OutOfMemoryError: unable to create new native thread

概述 首先要明確一點,OutofMemory的問題基本上都是程序邏輯不對引起的。如果你碰到這種問題,要去檢查代碼邏輯。引起OutofMemoryError異常的原因有2種: (1)Java虛擬機內存空間不足。 (2)可分配的native

原创 關於synchronized的幾點說明

釋放同步監視器的時機 任何線程進入同步代碼塊,同步方法之前,必須先獲得對同步監視器的鎖定。由於程序無法顯式釋放對同步監視器的鎖定,那麼究竟何時會釋放同步監視器鎖呢? 當前線程的同步代碼塊或同步方法正常執行結束;當前線程在同步代碼塊或同

原创 多線程 - Callable接口

概述 從Java 5開始,Java就提供了Callable接口,可以把它看作是Runnable接口的增強版:Callable接口提供了一個call()方法作爲線程執行體,它可以有返回值,並且可以拋異常。但是如何獲取call()方法的返回

原创 集合框架 - HashSet和HashMap實現原理

HashSet的實現 HashSet是基於HashMap實現的,只使用HashMap的key來實現各種特性,用PRESENT構造一個虛假的value。所以HashSet判斷兩個Key是否相等的機制和HansMap是一模一樣的:equal

原创 javax.swing.Timer的使用

一、Timer的使用 Timer(int delay, ActionListener listener):創建一個每delay毫秒將通知其偵聽器的Timer. #delay:延遲的毫秒數,0表示啓動後立刻執行。 #listener:偵聽器

原创 spring-mvc工作原理

1、瀏覽器發送請求給DispathcherServlet 2、DispatcherServlet根據請求信息到HandlerMapping中查找對應的控制器Controller 3-4、DispatcherServlet調用Cont

原创 8張圖理解Java

一圖勝千言,下面圖解均來自Program Creek 網站的Java教程,目前它們擁有最多的票選。如果圖解沒有闡明問題,那麼你可以藉助它的標題來一窺究竟。 1、字符串不變性 下面這張圖展示了這段代碼做了什麼 1 2