原创 工程質量的一些實踐

一些共性實踐 按照通常的產品研發過程,我們大約要經歷如下幾個階段:需求 -> 設計 -> 開發 -> 測試 -> 上線 -> 維護,下面針對這些階段分別提出一些建議 (着急的同學可以直接跳到最後的歸納部分,對感興趣的內容再跳回來讀 )

原创 如何在一個終端配置多個git賬戶

操作系統:Mac OS X; git相關配置在本文不做詳細贅述。 設置user.name,user.email git config user.name "username"//替換成github或者其他git repository用戶

原创 Spring源碼閱讀之DefaultListableBeanFactory

注:本文所有的源碼對應spring jar version爲4.2.4 類圖 開篇先給出DefaultListableBeanFactory類圖,本篇將根據類圖的繼承關係從上往下依次分析。 相關類介紹 AliasRegistry:定義

原创 Design Review 中應該考慮的問題

Design Review 是我們開發過程中至關重要的一環,一個好的Design review不但能讓我們的技術方案考慮的更加周全,更多時候還可以大大節省我們的工作量,並減少未來的線上Bug以及不必要的反覆修改。 Design Rev

原创 sonar學習及簡單使用

sonar簡介: sonar是一個用於代碼質量管理的開源平臺,用於管理源碼質量。目前通過插件的形式,可以支持包括java,c#,c,c++,PL/SQL,js,groovy等二十多種變成語言的代碼質量管理與檢測。 sonar代碼

原创 sonar相關插件開發

前言 某天,來一需求,由於業務線使用ThreadLocal後經常忘記remove,導致出現一些故障。爲了可以儘早發現這種使用錯誤的現象,想在公司使用的sonar上新加一個規則用於檢查ThreadLocal。 接下來開始了苦逼的擴展sona

原创 Spring源碼閱讀之準備篇-Spring整體架構分析

前言 Spring是2003年興起的一個輕量級的Java開源框架,是爲了解決企業應用開發的複雜性而創建的,它使用基本的javaBean來完成以前只可能由EJB完成的事情。但是,Spring的用途不僅僅限於服務器端的開發,從簡單性、可測試性

原创 設計模式-工廠方法模式

引言 爲什麼要引入工廠方法模式? 前文已經詳細的講解了簡單工廠模式,既然已經有了簡單工廠模式,爲什麼還要有工廠方法模式呢? 相信看完前文已經明確的知道簡單工廠模式有以下不足: 把實例的創建(在這裏實際是指產品類的實例化)都放在了工廠類

原创 Spring源碼閱讀之DefaultListableBeanFactory系列-SimpleAliasRegistry

SimpleAliasRegistry是AliasRegistry的具體實現,具體實現了對別名的增刪改等操作。 相關源碼分析: /** * 實現對別名的增刪改等操作 */ public class SimpleAliasRegistr

原创 設計模式-策略模式

前言 還是按照慣例先說說策略模式的定義、結構。 策略模式定義 策略模式屬於對象的行爲模式。它的用意是針對一組算法,講每一個算法封裝到具有共同接口的獨立的類中國,從而使他們可以相互替換。它可以使得算法可以在不影響客戶端的情況下發生變化。

原创 設計模式-抽象工廠模式

引言 如果有看完前兩篇簡單工廠模式和工廠方法模式,相信讀者心裏多少都有一些困惑,簡單工廠模式是有一些不足之處,但是在工廠方法模式以及把那些不足之處都改進了,工廠方法模式已經是工廠模式的一個較好的應用,爲什麼還要引入抽象工廠呢?這麼多的工

原创 設計模式-單例模式

引言 單例模式,這個名字大家絕對是耳熟能詳。作爲對象的創建模式,單例模式實質上是爲了確保某一個類它只有一個實例,並且自行實例化向整個系統提供這個實例。 單例模式的要點 單例模式的要點有三個,這也是我們在設計單例模式時需要注意的幾點:

原创 Spring源碼閱讀之DefaultListableBeanFactory系列-DefaultSingletonBeanRegistry

DefaultSingletonBeanRegistry是接口SingletonBeanRegistry的具體實現,實現了對單例的註冊及獲取等相關操作。 相關源碼分析: /** * 單例註冊、獲取等具體實現 */ public cl

原创 influxdb+grafana搭建業務監控平臺前篇-相關環境搭建

引言 在介紹具體的業務監控搭建之前還是現在介紹介紹influxdb和grafana。 時間序列數據庫 在開始介紹Influxdb之前先簡要介紹一下時間序列數據庫。 何謂時間序列數據庫? 什麼是時間序列數據庫,最簡單的定義就是數據格式裏

原创 java8中的Stream

java8提出的函數式編程旨在幫助程序猿們寫出更優雅的代碼,上文函數式編程基礎也介紹了java8新提出的一些函數式接口,通過它們代碼貌似已經簡潔了一波,但是,代碼其實還可以更簡潔下,接下來就要開始給大家介紹另一個神器了:Stream,通過