原创 Java8新特性之Streams和Parallel Streams

一、Streams(流) java.util.Stream 表示能應用在一組元素上一次執行的操作序列。Stream 操作分爲中間操作或者最終操作兩種,最終操作返回一特定類型的計算結果,而中間操作返回Stream本身,這樣你就可以將

原创 什麼是微服務、微服務架構

本文基於微服務提出者馬丁.福勒(Martin Fowler) 的微服務論文 一、什麼是微服務 While there is no precise definition of this architectural style,

原创 分佈式系統常見負載均衡算法及其nginx實現

一、概要 隨着系統日益龐大、邏輯業務越來越複雜,系統架構由原來的單一系統到垂直系統,發展到現在的分佈式系統。分佈式系統中,可以做到公共業務模塊的高可用,高容錯性,高擴展性,然而,當系統越來越複雜時,需要考慮的東西自然也越來越多,要

原创 爲什麼要使用多線程?

先從總體上來說: 從計算機底層來說: 線程可以比作是輕量級的進程,是程序執行的最小單位,線程間的切換和調度的成本遠遠小於進程。另外,多核 CPU 時代意味着多個線程可以同時運行,這減少了線程上下文切換的開銷。 從當代互聯網發展趨

原创 sleep() 方法和 wait() 方法區別和共同點

兩者最主要的區別在於:sleep 方法沒有釋放鎖,而 wait 方法釋放了鎖 。 兩者都可以暫停線程的執行。 Wait 通常被用於線程間交互/通信,sleep 通常被用於暫停執行。 wait() 方法被調用後,線程不會自動甦醒,

原创 cesium的giuhub項目將documentation打包

npm run generateDocumentation npm start

原创 solr8學習進階(二)整合springboot實現空間資源搜索

本文基於2019.10.25的solr最新版本solr-8.2.0 目標 實現對mysql數據庫中的資源數據的圓選、框選。圓選及在地圖上畫圓,將圓心座標以及半徑作爲參數傳給後端,後端返回座標處於圓內的資源數據,用於前端將資源標

原创 solr8學習進階(三)定時增量導入MySql數據

本文基於2019.10.25的solr最新版本solr-8.2.0 上一篇講到了solr整合springboot實現資源搜索,但是還有缺陷,數據第一次手動導入之後,不能自動同步MySql數據庫的數據,這一篇來講一講如何用sol

原创 Java線程池學習總結

這裏很多地方引用了百度、平時收集的文章,出處找不到了 目錄一 使用線程池的好處二 Executor 框架2.1 簡介2.2 Executor 框架結構(主要由三大部分組成)1) 任務(`Runnable` /`Callable

原创 Java 設計模式看這一篇就夠了

下面是自己學習設計模式的時候做的總結,有些是自己的原創文章,有些是網上寫的比較好的文章,保存下來細細消化吧! 系列文章推薦:https://design-patterns.readthedocs.io/zh_CN/latest/i

原创 Java8新特性之Optionals

Optionals不是函數式接口,而是用於防止 NullPointerException 的漂亮工具。 Optional 是一個簡單的容器,其值可能是null或者不是null。在Java 8之前一般某個函數應該返回非空對象但是有時

原创 Java8新特性之Lambda表達式(Lambda expressions)

目錄一、Lambda表達式二、函數式接口(Functional Interfaces)三、方法和構造函數引用(Method and Constructor References)四、Lamda 表達式作用域(Lambda Scop

原创 Java8新特性之接口的默認方法(Default Methods for Interfaces)

Java 8使我們能夠通過使用 default 關鍵字向接口添加非抽象方法實現。 此功能也稱爲虛擬擴展方法。 第一個例子: interface Formula{ double calculate(int a);

原创 Java8新特性之Annotations(註解)

在Java 8中支持多重註解了,先看個例子來理解一下是什麼意思。 首先定義一個包裝類Hints註解用來放置一組具體的Hint註解: @interface Hints { Hint[] value(); } @Repeata

原创 Java8新特性之Maps的一些新增方法

Map 類型不支持 streams,不過Map提供了一些新的有用的方法來處理一些日常任務。Map接口本身沒有可用的 stream()方法,但是你可以在鍵,值上創建專門的流或者通過 map.keySet().stream(),map