原创 《Java併發編程實踐》二(4):組合對象的線程安全性

第2,3章,介紹了線程安全的最基礎的技術原理,在實際項目中,我們肯定不希望在那個層面來分析每一個對象操作的線程安全性,而是期望使用現有的線程安全組件來構建線程安全的程序。 如何設計一個線程安全的類 如果將一個類的狀態存儲在publ

原创 算法導論第十章:基本數據結構

引言 數據結構 集合:如同在數學中一樣,集合也是計算機科學的基礎。不過數學上的集合時不變的,而算法所操作的集合是動態改變的。數據結構這一部分介紹在計算機中表示和操作有窮動態集合的一些基本技術。   字典:許多算法要求能夠將元素插入集合,從

原创 Spring基礎二:依賴注入

一個應用系統必然包含大量的bean,這些bean之間存在依賴關係。 依賴注入(Dependency injection)是Spring容器的核心功能。Bean可以幾種方式來聲明自己的依賴: 構造方法參數、工廠方法參數、Setter

原创 Spring基礎三:BeanScope

當我們提供一一份bean的定義時,我們實際製作瞭如何創建一個bean的菜譜,這意味着,基於這個定義我們可以創建任意多個bean實例。Bean作用域的概念,定義了bean實例的有效範圍,Spring支持6種作用域範圍,其中4種只在w

原创 Spring基礎五:容器功能擴展

Spring容器不僅提供了強大的配置方法,還提供了容器功能擴展點,用戶可以基於這些擴展點代碼可以增強容器的功能。實際上,Spring很多模塊,比如AOP,對註解的支持等,都是基於該機制實現的。 通過BeanPostProcesso

原创 Spring基礎四:Bean回調機制

容器內的bean能夠設置一些回調方法,以執行bean自身初始化&銷燬,或響應容器的某些事件。 bean的init&destroy回調 InitializingBean和DisposableBean接口 InitializingBe

原创 Spring基礎九:環境Environment

在繼續講解基於註解(@Value)的屬性配置之前,我們先介紹Spring的Environment,否則@Value的屬性來源會講不清楚。這與官方文檔的順序有所不同。本章內容對應官方文檔地址。 Environment是對Spring

原创 算法導論第十四章:數據結構的擴張

    在應用工程中,需要在現有的數據結構上有所創新,但很少需要創造出全新的數據結構。通常情況下,只要向標準的數據結構中增加一些信息即可。可以對數據結構編入新的造作,以支持所需的應用。但是,數據結構的擴張並不總是輕而易舉的,附加的信息需要

原创 Spring基礎八:基於java代碼配置

前兩章介紹了,利用java註解,我們可以大大減少xml配置的篇幅,只需在xml裏開啓對相關注解的支持即可。這一節介紹基於java代碼的容器配置,讓我們完全擺脫對xml的依賴。 java代碼配置實際上是結合註解和java代碼,其中的

原创 SpringMVC之三:HandlerMapping

我們知道Spring通常以bean的形式來組織功能模塊,Spring MVC也不列外。Spring MVC以一系列特定類型的bean來構建整個框架。 相關Bean類型 Bean類型 說明 HandlerMapping

原创 Spring AOP:概念和用法

在一個應用系統中,我們會有一些核心業務邏輯之外的關注點,比如安全、日誌、事務,這些關注點橫跨整個業務系統,與具體業務功能交織在一起。對於此類關注點,面向對象編程束手無策。AOP(面向切面編程)是解決該問題的技術概念模型,一個切面是

原创 《Java併發編程實踐》二(2):什麼是線程安全

第2~5章是原書的第二部分,介紹多線程的基礎知識,分別是: 第2章:線程安全性 第3章:共享對象 第4章:組合對象的線程安全性 第5章:線程安全組件 第2章介紹線程安全性的基本概念,內容如下。 狀態 每當我們談及線程安全的話題

原创 算法導論第十三章:紅黑樹

一棵高度爲h的查找樹的各種操作的性能爲O(h),當樹的高度較低時,性能較好,當高度很高時,和鏈表沒什麼區別。從上一章可以知道,隨機構造的二叉查找樹的期望高度爲O(lgn)。本章介紹一種平衡的查找樹:紅黑樹,確保在最壞情況下,基本動態集合的

原创 《Java併發編程實踐》二(3):共享對象

第2章介紹瞭如何通過原子操作來保護對象狀態,第3章介紹如何在多線程之間共享和發佈對象。 多個線程共享一個對象涉及兩個問題,第一個問題是:多個線程併發地訪問對象而不發生錯誤;第二個問題是:當一個線程修改了對象狀態,其他線程能夠及時看

原创 《Java併發編程實踐》五(2):自定義同步器

這一章介紹基於狀態條件同步的一般場景,以及通過條件隊列來構建自定義同步機制的方法。最後介紹JDK同步器的公共抽象—AQS的基本原理,以及它在Java併發庫內的應用。 狀態條件 一般來說,線程之間的同步都是圍繞狀態條件展開的,以”容