原创 Java8(九)——新的日期和時間API

前言 《Java 8 in action》一書中在介紹Java8新的日期和時間api之前,說了下原來老版本日期操作的痛苦之處。比如轉換操作比較繁瑣,SimpleDateFormat不是線程安全的等等。這裏只簡單上一段程序說明原來日

原创 Java8(八)——Stream的collector操作

前言 本篇博客對應《Java8 in action》一書的第六章,主要總結收集器的操作,在第六章的開頭,這本中用一個簡單的例子介紹了使用收集器的便捷。這裏還是先總結一下這個實例。在原書實例的基礎上,我們做了一個改良 需求:對一些交

原创 maven拾遺——一些簡單的梳理

前言 工作中maven用的最多的就是導入各種別人已經生成好的dependency或者上傳自己的api包,但是針對maven其他的一些功能似乎接觸比較少,這裏梳理一下。 之前接觸過maven的一些東西,但是這些東西都不太系統,有些m

原创 MyBatis拾遺(三)——MyBatis的緩存

前言 緩存是一般的ORM框架都會提供的功能,目的就是提升查詢的效率,和Hibernate一樣,MyBatis也有一級緩存和二級緩存,並且我們還可以通過實現MyBatis的緩存接口來採用第三方緩存。 一級緩存 一級緩存也稱爲本地緩存

原创 MyBatis拾遺(一)——MyBatis使用回顧

前言 之前針對MyBatis的使用進行過總結,但是現在在看spring源碼的過程中,爲了看懂spring第三方框架集成的原理,就重新開始研究mybatis發現之前總結的有些不太具體,這裏重新梳理一下,順便看看MyBatis源碼 準

原创 MyBatis拾遺(二)——一些配置的簡單梳理

一些配置屬性 下面從MyBatis的配置文件中梳理一下MyBatis的一些配置標籤 configuration標籤 這個是MyBatis配置文件中的一級配置屬性,其實對應MyBatis源碼中一個Configuration的類。打開

原创 spring源碼學習(一)——簡單認識一下bean的註冊

源碼的導入 源碼的導入其實比較簡單,但是,就是有點費時間,spring的代碼本身又是gradle構建的,因此有些小坑。之前寫過一個構建spring源碼的博客,大致步驟不差——傳送門:spring 源碼的控制檯構建 當時利用控制檯構

原创 spring拾遺(一)——IOC的應用

前言 spring這個玩意,其實要單純談使用的話,其實內容也不少,工作中有些東西用的挺多,但是很不繫統。去年也嘗試過看spring的源碼,但是通常陷入到"我是誰,我在哪兒的,我幹嘛要看這玩意"的思考(因爲太暈了),想想這玩意還是得

原创 spring boot(十)——發送郵件實例

發送郵件的總結博客 前言 其實發送郵件是一個比較簡單的操作,只是之前都沒進行總結,這裏彙總一下,大體分爲四個大類:1、發送簡單文本郵件。2、發送帶有附件的郵件。3、發送帶有HTML鏈接的郵件。4、發送模板渲染的郵件。 準備工作 通

原创 分佈式鎖實例(一)——防止重複提交

拋出一個問題 需求:現在有一個常見的場景——用戶註冊,但是如果出現重複提交的情況,則會出現多條註冊數據,因此這裏如何做好防止重複提交這是我們需要解決的問題。 正常的代碼邏輯 1、註冊controller /** * 用戶註冊請求

原创 spring boot(十一)——文件的上傳和下載實例

關於文件上傳和下載其實現在已經有很多較好的組件給我們封裝的很到位,我們實際要做的事情很少,但是這裏還是介紹基於commons-fileupload組件的文件上傳,和基於文件流的文件下載方式。 文件上傳 準備工作 1、引入commo

原创 數據結構(一)——鏈表的基本操作

關於數據結構,這次總算下定決心進行一個總結了,之前各種零星散散的總結,並不成體系,這裏對一些基本的數據結構進行一個總結。大學學過數據結構的理論,但是一直沒用代碼完全實現過。 鏈表和結點的定義 節點的定義 /** * autor:

原创 JVM(七)——垃圾收集器的補充說明

前言 之前總結過各種垃圾收集器,但是沒有針對如何選擇垃圾收集器,並沒有做一個合適的介紹,這篇博客會在之前博客的基礎上,先總結所有垃圾收集器,然後再總結一下垃圾收集器的選擇策略,之前博客的鏈接地址——JVM——垃圾收集器 GC Ro

原创 JVM(八)——一些工具的總結

前言 之前參照一些書籍對JDK自帶的一些工具進行了一些總結,但是非常凌亂,這一篇博客同樣也是總結這些工具。原博客地址——JDK自帶的命令工具 JVM參數 標準參數 標準參數不會隨着JDK版本的變化而變化,萬年都存在且萬年不變。 -

原创 數據結構(五)——圖的遍歷(遞歸)

圖的遍歷有多種方式,但是這裏從數據結構基礎出發,還是隻介紹基礎的兩種方式,深度優先遍歷和廣度優先遍歷。 深度優先遍歷 圖的深度優先搜索(Depth First Search),和樹的前序遍歷比較類似。 它的思想:假設初始狀態是圖中