原创 《Java 8 in Action》Chapter 8:重構、測試和調試

我們會介紹幾種方法,幫助你重構代碼,以適配使用Lambda表達式,讓你的代碼具備更好的可讀性和靈活性。除此之外,我們還會討論目前比較流行的幾種面向對象的設計模式,包括策略模式、模板方法模式、觀察者模式、責任鏈模式,以及工廠模式,

原创 解決Mac下VSCode打開zsh亂碼

  1.亂碼問題 iTerm2終端使用Zsh,並且配置Zsh主題,該主題主題需要安裝字體來支持箭頭效果,在iTerm2中設置這個字體,但是VSCode裏這個箭頭還是顯示亂碼。   iTerm2展示如下: VSCode展示如下: 2.解決方

原创 還在用if else?策略模式瞭解一下!

在公司負責的就是訂單取消業務,老系統中各種類型訂單取消都是通過if else 判斷不同的訂單類型進行不同的邏輯。在經歷老系統的折磨和產品需求的不斷變更,決定進行一次大的重構:消滅 if else。 接下來就向大家介紹下是如何消滅 if e

原创 《Elasticsearch技術解析與實戰》Chapter 2.1 Elasticsearch索引增刪改查

1. 創建索引 PUT /lujiahao123 { "acknowledged": true, "shards_acknowledged": true } 索引默認的主分片數量是5,每個主分片的副本數量是1。 創建自定義字

原创 《Elasticsearch技術解析與實戰》Chapter 1.4 Spring Boot整合Elasticsearch

1. spring-boot-starter-data-elasticsearch 1.1 pom.xml和application.yml <!-- Spring Boot Elasticsearch 依賴 --> <dependen

原创 《Elasticsearch技術解析與實戰》Chapter 1.1:Elasticsearch入門和倒排索引

1. 簡介 Elasticsearch是一個機遇Lucene構建的開源、分佈式、RESTful接口全文搜索引擎。同時,Elasticsearch還是一個分佈式文檔數據庫,能夠擴展至數百個服務器存儲以處理PB級數據,通常作爲複雜搜索場景

原创 《Java 8 in Action》Chapter 12:新的日期和時間API

在Java 1.0中,對日期和時間的支持只能依賴java.util.Date類。同時這個類還有兩個很大的缺點:年份的起始選擇是1900年,月份的起始從0開始。 在Java 1.1中,Date類中的很多方法被廢棄,取而代之的是java

原创 《Java 8 in Action》Chapter 11:CompletableFuture:組合式異步編程

某個網站的數據來自Facebook、Twitter和Google,這就需要網站與互聯網上的多個Web服務通信。可是,你並不希望因爲等待某些服務的響應,阻塞應用程序的運行,浪費數十億寶貴的CPU時鐘週期。比如,不要因爲等待Faceboo

原创 《Java 8 in Action》Chapter 10:用Optional取代null

1965年,英國一位名爲Tony Hoare的計算機科學家在設計ALGOL W語言時提出了null引用的想法。ALGOL W是第一批在堆上分配記錄的類型語言之一。Hoare選擇null引用這種方式,“只是因爲這種方法實現起來非常容易

原创 《Java 8 in Action》Chapter 9:默認方法

傳統上,Java程序的接口是將相關方法按照約定組合到一起的方式。實現接口的類必須爲接口中定義的每個方法提供一個實現,或者從父類中繼承它的實現。 但是,一旦類庫的設計者需要更新接口,向其中加入新的方法,這種方式就會出現問題。現實情況是

原创 《Java 8 in Action》Chapter 8:重構、測試和調試

我們會介紹幾種方法,幫助你重構代碼,以適配使用Lambda表達式,讓你的代碼具備更好的可讀性和靈活性。除此之外,我們還會討論目前比較流行的幾種面向對象的設計模式, 包括策略模式、模板方法模式、觀察者模式、責任鏈模式,以及工廠模式,在

原创 《Java 8 in Action》Chapter 7:並行數據處理與性能

在Java 7之前,並行處理數據集合非常麻煩。第一,你得明確地把包含數據的數據結構分成若干子部分。第二,你要給每個子部分分配一個獨立的線程。第三,你需要在恰當的時候對它們進行同步來避免不希望出現的競爭條件,等待所有線程完成,最後把這

原创 《Java 8 in Action》Chapter 6:用流收集數據

1. 收集器簡介 collect() 接收一個類型爲 Collector 的參數,這個參數決定了如何把流中的元素聚合到其它數據結構中。Collectors 類包含了大量常用收集器的工廠方法,toList() 和 toSet() 就是其

原创 《Java 8 in Action》Chapter 5:使用流

流讓你從外部迭代轉向內部迭代,for循環顯示迭代不用再寫了,流內部管理對集合數據的迭代。這種處理數據的方式很有用,因爲你讓Stream API管理如何處理數據。這樣Stream API就可以在背後進行多種優化。此外,使用內部迭代的話

原创 《Java 8 in Action》Chapter 4:引入流

1. 流簡介 流是Java API的新成員,它允許你以聲明性方式處理數據集合(通過查詢語句來表達,而不是臨時編寫一個實現)。就現在來說,你可以把它們看成遍歷數據集的高級迭代器。此外,流還可以透明地並行處理。讓我們來看一個實例返回低熱量