原创 設計模式(07)——設計原則(2)

KISS原則 Keep It Simple and Stupid 這個原則聽起來比較簡單,重點是理解什麼樣的代碼是簡單的,代碼行數少就是簡單的代碼嗎???還是說當程序的邏輯十分複雜不容易理解時就是一個複雜的代碼呢??? 下面就讓我們來看看怎

原创 設計模式(06)——設計原則(1)

設計原則 設計原則,是設計模式的內功心法,基本所有的設計模式都是基於設計原則進行的具體化,如果說設計模式是如何操作的話,那麼設計原則就是爲何這麼做的基石,因此,只要我們能充分理解設計原則,那麼在此基礎上,對設計模式就能更好的理解,甚至能自己

原创 使用Feign發送HTTP請求

使用Feign發送HTTP請求 在往常的 HTTP 調用中,一直都是使用的官方提供的 RestTemplate 來進行遠程調用,該調用方式將組裝代碼冗餘到正常業務代碼中,不夠優雅,因此在接觸到 Feign 後,考慮使其作爲一個 HTTP 發

原创 設計模式(05)——組合和繼承

組合和繼承 繼承帶來的問題 在 《面向對象以及特性分析》文章,我們可以看到繼承帶來的問題: 菱形問題; 繼承層次過深過複雜。 如上圖所示,因爲每個鳥根據特性會有會飛或者不會飛的特性,也會有會叫不會叫的特性等等,如果根據這些特性來設

原创 設計模式(04):接口和抽象類

接口和抽象類 區別 接口是對行爲的抽象,其重點關注的是要有該行爲。 抽象類是對一些共性行爲的聚合,將多個子類都有的具體行爲抽象成一個方法,形成複用。 public abstract class Bird { private Str

原创 設計模式(二):面向對象與面向過程的區別與聯繫

面向對象與面向過程 在前面我們講述了面向對象的概念,在這裏我們再分析一些另一種編程範式:面向過程。 面向過程和麪向過程語言 針對面向對象的概念解釋,這裏,我們用相同的方式來對面向過程進行解釋: 面向過程是一種編程範式,其重點是將函數

原创 設計模式(二):面向對象及其特性分析

面向對象 根據大綱,首先我們來學習一種代碼設計與編寫的風格,即面向對象。 面向對象編程和麪向對象編程語言 面向對象編程是一種編程範式,通俗來說,就是將 代碼的組織單元改成類和對象,並將 封裝、繼承、抽象、多態 作爲代碼設計和編寫的基

原创 設計模式(一):學習大綱

設計模式(一):學習大綱 該系列文章,是在學習網上課程時的學習總結,可能會有一些瑕疵和錯誤,看到的可以留言反饋,謝謝~ 學習意義 重要性的看法 設計模式老生常談了,對程序員的後續發展是很重要的,可以有效提升代碼的可讀性,具體來看,有

原创 Java8日期時間——LocalDateTime的使用以及相互轉換

日期時間處理 Java8內每個類含義 在 Java8 之前操作時間,用的都是 Date 和 Calendar 類,但這兩個類,操作起來及其繁瑣,且在時間轉換、時區轉換的時候也很麻煩,因此 JDK 官方在 8 之後,引入了 LocalDate

原创 Git-使用Rebase合併分支

commit 合併 在開發過程中,可能會出現多個 commit 所涉及的邏輯都是同一個功能模塊,此時,會導致 log tree 非常的混亂,不美觀,因此,我們可以將多個 commit 進行合併,變成一條,這樣,也使得 log tree 會更

原创 Spring AOP-用代理代替繁瑣邏輯

Spring AOP 基礎概念 AOP 是一種面向切面的編程思想,通俗來講,這裏假如我們有多個方法。 @Component public class Demo { public void say1() { Syst

原创 Spring Validation-用註解代替代碼參數校驗

Spring Validation 概念 在原先的編碼中,我們如果要驗證前端傳遞的參數,一般是在接受到傳遞過來的參數後,手動在代碼中做 if-else 判斷,這種編碼方式會帶來大量冗餘代碼,十分的不優雅。 因此,推出了用註解的方式,來代替

原创 JVM(三):深入分析Java字節碼-上

JVM(三):深入分析Java字節碼-上 字節碼文章分爲上下兩篇,上篇也就是本文主要講述class文件存在的意義,以及其帶來的益處。並分析其內在構成之一 ———字節碼,而下篇則從指令集方面着手,講解指令集都有哪些,以及其各自代表的含義。最

原创 JVM(二):Java中的語法糖

JVM(二):Java中的語法糖 上文講到在語義分析中會對Java中的語法糖進行解糖操作,因此本文就主要講述一下Java中有哪些語法糖,每個語法糖在解糖過後的原始代碼,以及這些語法糖背後的邏輯。 語法糖 語法糖(Syntactic s

原创 JVM(一):源文件的轉變

JVM(一):源文件的轉變 本文講述一個.java源文件是如何經過javac編譯器的一系列操作變爲.class文件的. 編譯 說到編譯,大家都能想到是編譯器經過一系列方法將源代碼轉變爲目標機器代碼,但Java作爲一個平臺無關性語言,前端