-
Java 8 - Stream Lazy Invocation 延遲調用
Lazy 兩個重點: 中間操作(intermediate operations)會被延遲執行,直到啟動終端操作(terminal operation)後才執行對源數據的計算 所有中間操作都是延遲性的,因此直到實際需要處理結果時才執行它們。(因此不同的中間操作順序會造成不同的執行次數) Reference Java 8 Streams - Lazy evaluation...
-
Java 8 - Stream Operation 操作
Operations Intermediate operations Stream.filter(): to filter all elements of the stream Stream.map(): converts each element into another object via the given function St...
-
Java 8 - Stream Pipelines 流管道
Pipelines 流的構成: Ref: Java 8 中的 Streams API 详解 To perform a sequence of operations over the elements of the data source and aggregate their results, three parts are needed - the source, i...
-
Java 8 - Stream Creation 建立Stream流
Stream Creation 創建stream的實例後,不會修改元數據 因此允許從單個元數據創建多個實例 Ref: The Java 8 Stream API Tutorial - Baeldung Empty Stream Syntax: static <T> Stream<T> empty() Return Value: empty s...
-
Java 8 - Stream
Overview Oracle Package java.util.stream Description Classes to support functional-style operations on streams of elements, such as map-reduce transformations on collections. For example: publ...
-
Java 8 - Lambda Expression
Lambda Expression 細數Java 8最大的更動就屬於【Lambda Expression】吧(個人感覺)! In programming, a Lambda expression (or function) is just an anonymous function, i.e., a function with no name and without being b...
-
Java 8 - Tutorial
Overview Java8於2014年初發佈,此次發佈是在版本歷史中很重要的一次大幅度更新, 僅從編程語言特性來說,Java8絕對是一次革命性的改進,以前的聲明式編程,如今吸收了函數式編程語言的特點,提升了Java語言的表達力、簡潔性。 我們程序員要與時俱進!不要怕改變,跳出舒適區,好好地擁抱新技術、新思想吧! Lambda Expression Streams Met...
-
Java - ThreadPoolExecutor
ThreadPoolExecutor 在java.uitl.concurrent.ThreadPoolExecutor類是Executor框架中最核心的類。 先來看頂部注釋: Ref: 线程池你真不来了解一下吗? - Java3y - 博客园 構造方法與參數說明 ThreadPoolExecutor有四個構造方法,前三個都是基於第四個實現。 第四個構造方法定義如下: 七...
-
Java - Thread Callable & Future
Callable & Future There are two wats of creating threads – one by extending the Thread class and other by creating a thread with a Runnable. However, one feature lacking in Runnable is tha...
-
Java - Thread Executor 框架
Executor Executor框架是Java5之後引進的,存在於java.util.concurrent包下, 雖然Executor只是個簡單的接口,卻為一個靈活而且強大的框架創造了基礎,並且是【線程池】的基礎。 解耦的機制 -> Executor提供了一種將【任務提交】與【任務執行】分離開來的機制(解耦) TaskExecutionWebServer使用Executor代...
-
Java - Executors 線程池
Thread Pool in Oracle tutorial 【Thread Pools (The Java™ Tutorials > Essential Classes > Concurrency)】 Most of the executor implementations in java.util.cuncurrent use thread pools, which co...
-
Java - Thread Task Execution 任務執行
任務(Tasks) 大多數並發應用程序是圍繞執行任務(task)進行管理的。任務時邏輯上的工作單元,線程是使任務異步執行的機制。 任務(task)的定義: 是抽象、離散的工作單元(unit of work) 是獨立的工作,它的工作並不依賴其他任務的狀態、結果或邊界效應(side effect) 任務的邊界(task boundaries): Web服務器 郵件服務...
-
Java - Thread Life Cycle method 線程生命週期方法
Overview Reference wait and notify() Methods in Java - Baeldung The Thread.join() Method in Java - Baeldung
-
Java - Thread Life Cycle 線程生命週期
Overview In the Java language, multithreading is driven by the core concept of a Thread. During their lifecycle, threads go through various states: Ref: Life Cycle of a Thread in Java - Baeldu...
-
Clean Code 無暇的程式碼- Ch8 邊界
重點:如何花最少時間學習與使用第三方API 有以下方式可供快速使用: 封裝泛型細節,使用者只要知道我需要的結果就好,不需要知道到底傳入什麼泛型 apache log4j 單元測試(unit test) 第一點說明: public class Sensors { private Map sensors = new HashMap(); public Se...
-
Clean Code 無暇的程式碼- Ch7 異常處理
Use try-catch 重點總結: 使用異常處理,而非錯誤碼 在最外層定義好try-catch,讓調用者決定如何處理異常 使用unchecked異常,原因是維持封閉性原則 提供異常的詳細資訊 打包被調用者,封裝異常 第四點詳細說明: 這是沒修飾過的一般代碼: LDAP ldap = new LDAP("username", "password"); try...
-
Clean Code 無暇的程式碼- Ch6 對象及數據結構
Summary 具體化的類別:曝露行為,隱藏數據 抽象化的接口:曝露數據,隱藏行為 Allow users to manipulate the essence of the data, without having to know the implementation 允许用户操纵数据的本质,而不必了解实现 簡單來說,利用面向對象以及三個特性(封裝、繼承、多態...
-
Clean Code 無暇的程式碼- Ch5 編排
前言 看完這章節,說真的我以前沒有那麼注意排版,因為我排版都用編譯器(IDEA)自動排版,個人覺得IDEA的排版就很好看了,而且很方便。 再來如果IDEA排版後不足之處我會自己【依感覺】調整,不過我覺得我的美觀感都滿有用的,可能我是文組科系,首先就天天看排版,也在學排版, 本身就對排版好壞很敏感。 (其實也不是絕對,看我同學排版跟屎一樣,就知道這也是跟天賦有關~) 廢話不多說,這章節沒...
-
Clean Code 無暇的程式碼- Ch4 註解
這章節的重點就在目錄: 註解原則: 【註解無法彌補糟糕的代碼】 【用好的程序表達你的本意】 好的註解: README: 每個文件開頭的標準註解 // Copyright (c) 2019 by ~ // Released ~ Lincense version 2 資訊型註解:對一些方法的額外註解(例如終止遞歸的條件是啥,或是這段代碼在做啥),當然如果用...
-
Clean Code 無暇的程式碼- Ch3 函數
【每個函數只有一層抽象概念】 抽象概念高層次:getHTML(); 抽象概念中層次:String pagePathName = PathParser.render(pagePath); 抽象概念低層次:string.append("\n") 一個函數擁有混合層次的抽象概念,總是令人困惑,無法分辨某個表達式(expression)是一個基本概念還是一個細節。 變量與參數 ...