原创 學習Spring Boot:(一)入門

微服務 現在微服務越來越火了,Spring Boot熱度蹭蹭直升,自學下。 微服務其實是服務化思路的一種最佳實踐方向,遵循SOA(面向服務的架構)的思路,各個企業在服務化治理上面的道路已經走得很遠了,整個軟件交付鏈上各個環節的基

原创 使用Redis完成分佈式鎖

實現原理 分佈式的CAP理論告訴我們“任何一個分佈式系統都無法同時滿足一致性(Consistency)、可用性(Availability)和分區容錯性(Partition tolerance),最多隻能同時滿足兩項。”所以,很多

原创 Spring中使用Configuration注入Bean

在Spring容器中使用applicationContext.xml中來給對應的類注入對應的屬性,來完成初始化,最典型的就是配置數據庫連接池了。 <bean id="dataSource" class="com.alibaba.d

原创 學習Spring Boot:(九)統一異常處理

前言 開發的時候,每個controller的接口都需要進行捕捉異常的處理,以前有的是用切面做的,但是SpringMVC中就自帶了@ControllerAdvice ,用來定義統一異常處理類,在 SpringBoot 中額外增加了

原创 fastDFS與Java整合上傳下載

由於項目需要整合個文件管理,選擇使用的是fastDFS。 整合使用還是很方便的。 準備 下載fastdfs-client-java源碼 源碼地址 密碼:s3sw 修改pom.xml 第一個plugins是必需要的,是mave

原创 併發容器CopyOnWriteArrayList

Copy-On-Write簡稱COW,是一種用於程序設計中的優化策略。其基本思路是,從一開始大家都在共享同一個內容,當某個人想要修改這個內容的時候,纔會真正把內容Copy出去形成一個新的內容然後再改,這是一種延時懶惰策略。從JDK

原创 理解一致性哈希算法(consistent hashing)

一致性哈希算法在1997年由麻省理工學院提出的一種分佈式哈希(DHT)實現算法,設計目標是爲了解決因特網中的熱點(Hot spot)問題,初衷和CARP十分類似。一致性哈希修正了CARP使用的簡 單哈希算法帶來的問題,使得分佈式哈

原创 初探Java 9 的的模塊化

Java 9中最重要的功能,毫無疑問就是模塊化(Module),它將自己長期依賴JRE的結構,轉變成以Module爲基礎的組件,當然這在使用Java 9 開發也和以前有着很大的不同。 Java8或更加早期的系統的問題 Jar文件

原创 學習Spring Boot:(三)配置文件

前言 Spring Boot使用習慣優於配置(項目中存在大量的配置,此外還內置了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的項目快速運行起來。 正文 使用配置文件注入屬性 Spring Boot 默認的配置文件src/ma

原创 Java8 新特性Stream 的學習和使用方法

流(Stream) 流是java 8 中新引入的特性,用來處理集合中的數據,Stream 是一個來自數據源的元素隊列並支持聚合操作。 * Java 中 Stream 不會存儲元素。 * 數據源 流的來源。 可以是集合,數組,I

原创 Java的順序棧和鏈式棧

棧的定義 棧是限制在表的一段進行插入和刪除的運算的線性表,通常能夠將插入、刪除的一端爲棧頂,例外一端稱爲棧底,當表中沒有任何元素的時候稱爲空棧。 通常刪除(又稱“退棧”)叫做彈出pop操作,每次刪除的都是棧頂最新的元素;每次插入(

原创 Java中使用有返回值的線程

在創建多線程程序的時候,我們常實現Runnable接口,Runnable沒有返回值,要想獲得返回值,Java5提供了一個新的接口Callable,可以獲取線程中的返回值,但是獲取線程的返回值的時候,需要注意,我們的方法是異步的,獲

原创 學習Spring Boot:(六) 集成Swagger2

前言 Swagger是用來描述和文檔化RESTful API的一個項目。Swagger Spec是一套規範,定義了該如何去描述一個RESTful API。類似的項目還有RAML、API Blueprint。 根據Swagger S

原创 學習Spring Boot:(七)集成Mybatis

前面都是用的是spring data JPA,現在學習下Mybatis,而且現在Mybatis也像JPA那樣支持註解形式了,也非常方便,學習一下。 數據庫 mysql 5.7 添加依賴 在pom文件中添加: <mybatis.

原创 學習Spring Boot:(五)使用 devtools熱部署

前言 spring-boot-devtools 是一個爲開發者服務的一個模塊,其中最重要的功能就是自動應用代碼更改到最新的App上面去。原理是在發現代碼有更改之後,重新啓動應用,但是比速度比手動停止後再啓動還要更快,更快指的不是