博客 / 列表

Carey_ccl - 9、PipedInputStream和PipedOutputStream的源碼分析和使用方法詳細分析

  在多線程編程中,線程間的數據交換是一個常見需求。Java IO包中的PipedInputStream和PipedOutputStream提供了一種高效的線程間通信機制,允許一批(多個)線程向PipedOutputStream寫入數據,另一批(多個)線程從PipedInputStream讀取數據。   但是,同一批(多個)線程相互之間會存在競爭,比如,同一批向PipedOutputStre

後端

Carey_ccl - 8、SequenceInputStream的源碼和Vector.class的一些函數説明(windows操作系統,JDK8)

一、SequenceInputStream源碼——可以順序讀取多個輸入Stream的裝飾器類   SequenceInputStream.class 的UML關係圖,如下所示:   SequenceInputStream.class的源碼,如下所示: package java.io; import java.io.InputStream; import java.util.Enumerat

後端

Carey_ccl - 7、InputStream的源碼、FilterInputStream源碼、BufferedInputStream的源碼(windows操作系統,JDK8)

  閲讀本文時,請先看我的另一篇博客:6、(InputStream的源碼、FilterInputStream源碼、BufferedInputStream的源碼解讀前言)AtomicReferenceFieldUpdater.class和System.arraycopy()函數的用法   Java IO 庫採用了裝飾器模式(Decorator Pattern)和適配器模式(Adapter Pa

後端

Carey_ccl - 6、(InputStream的源碼、FilterInputStream源碼、BufferedInputStream的源碼解讀前言)AtomicReferenceFieldUpdater.class和System.arraycopy()函數的用法

一、AtomicReferenceFieldUpdater的用法   AtomicReferenceFieldUpdater是一個抽象的工具類,其底層是通過反射找到目標字段的內存偏移量,然後利用Unsafe.class提供的CAS(Compare-And-Swap)操作來原子地更新某個類中指定變量的值。如下所示: package com.xxx.StreamAndReader; import ja

JAVA , 後端

Carey_ccl - 四、裝飾者模式

一、模式定義   在不改變原有對象的前提下(不改變ConcreteComponent情況下),給原有對象擴展功能(利用ConcreteDecorator擴展功能,在ConcreteDecorator中注入ConcreteComponent)。如下所示: 二、應用場景   擴展一個類的功能,或者給一個類添加一些附加職責 三、優點: ①、靈活改變組合; ②、符合開閉原則; 四、裝飾者模式

軟件設計

Carey_ccl - 三、適配器模式

一、模式定義   將一個類的接口轉換成使用者希望的另一個接口,Adapter模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。 二、應用場景   當使用者用到的某些類的接口與其它代碼不兼容時,就可以使用適配器模式來改造。當使用者希望重用幾個現有的子類,但這些類缺少一些不能添加到超類中的公共功能時,也可以使用適配器模式。 2.1、優點 ①、符合單一職責原則(Singl

軟件設計

Carey_ccl - 二、工廠模式

一、普通工廠模式 1.1、模式定義:   定義一個用於創建對象的接口,讓子類決定去實例化哪一個類:其中的抽象工廠方法(factoryMethod),就是使得一個類的實例化延遲到了子類。 1.2、應用場景 ①、當使用者不知道要創建的對象的確切類型時候; ②、當使用者希望為庫或者框架提供擴展其內部組件的方法時; 1.3、優點   將具體要創建的對象和創建者解耦: ①、符合單一職責原

軟件設計

Carey_ccl - 一、單例模式

一、模式定義: 保證一個類只有一個實例,並且提供一個全局訪問點 二、使用場景: 重量級對象,不需要多個實例,如:線程池,數據庫連接池 三、類圖: 四、不同方式創建的單例設計與區別 4.1、懶漢單例模式   懶漢單例模式的特點是延遲加載,只有在真正使用的時候,才開始實例化,用該方式創建單例對象時,對於線程安全問題和指令重排序導致的初始化並且引用賦值失敗的問題,可以用以下2種方式來解決:

軟件設計

Carey_ccl - 設計模式的前言——Solid設計原則

  Solid原則是為針對面向對象的程序語言設計,從本質上來講,SOLID是5個原則的縮寫,這5個原則有助於軟件設計:更加容易理解,更靈活,可維護性更強。這個與掌握軟件設計原理無關,這個原理是很多原則的子集。 單一職責原則(Single responsibility principle) 開閉原則(open-closed principle) 里氏替換原則(liskov substitut

軟件設計

Carey_ccl - 5、FileDescriptor的源碼和使用注意事項(windows操作系統,JDK8)

  操作系統使用文件描述符來指代一個打開的文件,對文件的讀寫操作,都需要文件描述符指向存儲設備的不透明標識符。Java雖然在設計上使用了抽象程度更高的流來作為文件操作的模型,但是底層依然要使用文件描述符與操作系統交互,而Java世界裏文件描述符的對應類就是FileDescriptor。同時,Java規定了FileDescriptor只能由JDK的其它類來創建(比如FileInputStream、F

後端