原创 Java實現23種設計模式(二):建造者模式(Builder模式)

二十三種設計模式分類 一、概述 建造者模式(Builder Pattern)使用多個簡單的對象一步一步構建成一個複雜的對象。將一個複雜對象的構建與其表示相分離,同樣的構造過程可以創建不同的表示。主要解決複雜對象的創建,將變與不

原创 Java實現23種設計模式(五):橋接模式

二十三種設計模式分類 一、概述 橋接(Bridge)模式的定義如下:將抽象與實現分離,使它們可以獨立變化。它是用組合關係代替繼承關係來實現,從而降低了抽象和實現這兩個可變維度的耦合度。橋接模式主要想實現的是抽象部分和實現部分兩

原创 Java實現23種設計模式(三):原型模式

二十三種設計模式分類 一、概述 原型(Prototype)模式的定義如下:用一個已經創建的實例作爲原型,通過複製該原型對象來創建一個和原型相同或相似的新對象。在這裏,原型實例指定了要創建的對象的種類。用這種方式創建對象非常高效

原创 Java實現23種設計模式(一):單例模式

二十三種設計模式分類 一、概述 單例(Singleton)模式的定義:指一個類只有一個實例,且該類能自行創建這個實例的一種模式。例如,Windows中只能打開一個任務管理器,這樣可以避免因打開多個任務管理器窗口而造成內存資源的

原创 Java實現23種設計模式(八):裝飾器模式

二十三種設計模式分類 一、概述 裝飾(Decorator)模式的定義:指在不改變現有對象結構的情況下,動態地給該對象增加一些職責(即增加其額外功能)的模式,它屬於對象結構型模式。 動態地給一個對象添加一些額外的職責。就增加功能

原创 Java實現23種設計模式(六):責任鏈模式

二十三種設計模式分類 一、概述 責任鏈(Chain of Responsibility)模式的定義:爲了避免請求發送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一對象記住其下一個對象的引用而連成一條鏈;當有請求發生時

原创 劍指offer-面試題37:序列化二叉樹

題目描述 請實現兩個函數,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式保存爲字符串,從而使得內存中建立起來的二叉樹可以持久保存。序列化可以基於先序、中序、後序、層序的二叉樹遍歷方

原创 劍指offer-面試題39:數組中出現次數超過一半的數字

題目描述 數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入一個長度爲9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2。如果不存在則輸出0。 思路分析

原创 劍指offer-面試題38:字符串排列

題目描述 輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。 輸入描述: 輸入一個字符串,長度不超過9(可

原创 Java學習路線大綱+Java學習路線圖

一、Java學習路線 參考知乎回答2019年最新的Java學習路線是怎樣的,求分享? 二、學習大綱 地基部分 數據結構:線性表、隊列、棧、樹、圖、哈希等等 常見算法:10大排序、字符串匹配、二分法、雙指針等等 操作系統:

原创 JDK動態代理簡單使用方法+通過Proxy和InvocationHandler源碼解析原理

一、JDK動態代理的使用 JDK動態代理模式是基於接口,所以我們先定義一個Moveable接口: public interface Moveable { void go(); } 再定義一個需要被代理的Car類: pub

原创 劍指offer-面試題33:二叉搜索樹的後序遍歷序列

題目描述 輸入一個非空整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 思路分析 8 / \ 6

原创 劍指offer-面試題34:二叉樹中和爲某一值的路徑

題目描述 輸入一顆二叉樹的根節點和一個整數,打印出二叉樹中結點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,數組長度大的數組靠前) 思路分析 要求二

原创 SpringBoot @PathVariable請求路徑出現點號"."時導致路徑參數截斷獲取不全的解決辦法

Springboot使用@PathVariable路徑參數,當請求路徑中含有【.】符號,點符號後面的會被截斷,解決方法如下: 解決辦法: 添加:.+在逗號分隔處; @GetMapping("video/{fileName:.

原创 Springboot @Value讀取map或list的properties配置

一、properties文件內容 config-prod.properties屬性配置文件: yjs.client.functional.filter=A,B,C,D yjs.client.functional.map={key: