原创 【睡JDK】Java函數式編程接口詳解之UnaryOperator、BinaryOperator

今天介紹的這兩位兄弟大U(Unary:一元的)和大B(Binary:二元的)其實並不是全新的東西,而是兩個特例,我們先來康康他們的源碼。 UnaryOperator的源碼: @FunctionalInterface public

原创 【睡JDK】Java函數式編程接口詳解之Supplier

一、Supplier簡介 Supplier有什麼好處?這個在網上也是衆說紛紜,Supplier可能不像之前介紹的Predicate、Consumer、Function那麼好理解。官方的介紹是: 表示結果的提供者,不要求每次調用S

原创 【睡JDK】Java函數式編程接口詳解之Predicate

一、初識 Predicate是Java提供的重要的函數編程接口之一,作用主要是用於邏輯判斷。 首先看看源碼: @FunctionalInterface public interface Predicate<T> { bo

原创 【睡JDK】Java函數式編程接口詳解之Consumer、Function

今天將介紹Java另外兩個函數編程接口Consumer、Function,這兩個函數是幹嘛的呢?先看看官方的定義: Consumer:表示接受單個輸入參數但不返回結果的操作。 Function:表示接受一個參數並生成結果的函數。

原创 重識Java8函數式編程

前言 最近真的是太忙忙忙忙忙了,很久沒有更新文章了。最近工作中看到了幾段關於函數式編程的代碼,但是有點費解,於是就準備總結一下函數式編程。很多東西很簡單,但是如果不總結,可能會被它的各種變體所困擾。接觸Lambda表達式已經很久了

原创 23種常用設計模式之享元模式

前言 本文代碼是以BeanCopier爲題材實現的,意在給BeanCopier加一層緩存。但是!!!這個做法是多餘的,因爲BeanCopier自帶了緩存功能,由於剛接觸BeanCopier不久,所以幹了這件傻事,不過代碼對於學習享

原创 設計模式系列文章集合

設計模式 1. 創建型模式      1.1 工廠模式           1.1.1 簡單工廠模式           1.1.2 工廠方法模式           1.1.3 抽象工廠模式      1.2 原型模式     

原创 23種常用設計模式之中介者模式

說明 中介者(Mediator)模式屬於行爲型模式。定義:定義一箇中介對象來封裝一系列對象之間的交互,使原有對象之間的耦合鬆散,且可以獨立地改變它們之間的交互。中介者模式又叫調停模式,它是迪米特法則的典型應用。簡單的說,A想跟B通

原创 代碼片段:利用存儲過程創建大量測試數據示例

說明 在平時的開發工作中經常需要創建大量的測試數據,手動插入顯然不現實。這個時候我們就需要使用存儲過程來爲我們批量插入數據,這裏簡單介紹一下存儲過程的例子。 示例表 CREATE TABLE `z_generate` ( `i

原创 23種常用設計模式之訪問者模式

說明 訪問者模式是一種行爲型模式,表示一個作用於其對象結構中的各元素的操作,它使你可以在不改變各元素類的前提下定義作用於這些元素的新操作。 可以對定義這麼理解:有這麼一個操作,它是作用於一些元素(Element)之上的,而這些元素

原创 23種常用設計模式之狀態模式

說明 狀態模式(State)是一種行爲型模式,當一個對象的內在狀態改變時允許改變其行爲,這個對象看起來像是改變了其類。 應用場景 行爲隨狀態改變而改變的場景。 條件、分支語句的代替者。 模式特徵 角色 說明 舉慄

原创 23種常用設計模式之迭代器模式

說明 迭代器模式是一種對象行爲型模式,提供一個對象來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示。 應用場景 當需要爲聚合對象提供多種遍歷方式時。 當需要爲遍歷不同的聚合結構提供一個統一的接口時。 當訪問一個聚合對

原创 23種常用設計模式之備忘錄模式

說明 備忘錄模式(Memento Pattern)保存一個對象的某個狀態,以便在適當的時候恢復對象。備忘錄模式屬於行爲型模式。 應用場景 需要保存/恢復數據的相關狀態場景。 提供一個可回滾的操作。 模式特徵 Originat

原创 HashMap不支持深拷貝問題解決方案

前言 當構造一個複雜耗時的對象的時候,而且實際用的時候僅僅只是需要改動一小部分,這個時候我們往往會想到使用實現Cloneable接口來開啓對象克隆。但是這裏有一個問題就是,對於自定義對象無法支持深拷貝,HashMap實現了Clon

原创 代碼片段:自己動手寫SQL慢查詢統計

前言 首先,MySQL是有自己的慢查詢日誌記錄的,但是作爲開發者,並不一定有權限查看MySQL的日誌。因此可以自己動手寫個SQL慢查詢統計,但這個實現方式所統計到的時間是包含網絡開銷的,不過在正常情況下,沒啥關係,根據統計也能分析