原创 Spring填坑日誌(1)——Jackson序列化報錯HttpMessageNotWritableException

問題描述 今天編碼的時候遇到一個報錯: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: No s

原创 Git使用(1)——版本回退與代碼合併

一、版本回退 使用git版本管理工具的好處之一時,您可以隨時回退到以前的版本中,不用擔心操作錯誤或誤刪文件。 回退操作需要使用git命令,以下是部分操作的代碼。(git默認的是版本只升不降,所謂版本回退其實是用原來的版本直接覆蓋當

原创 《領域驅動設計精簡版》讀書筆記(1)——何爲領域驅動設計

基本概念 爲了創造一個好軟件,你必須知道這個軟件究竟是什麼。在你充分了解金融業務是什麼之前,你是做不出一個好的銀行業系統的,你必須理解銀行業的領域。讓軟件和領域和諧相處的最佳方式是讓軟件成爲領域的映射,軟件需要具現領域裏重要的核心

原创 Java基礎填坑日誌(1)——移位運算符

問題描述 最近在學習神書《Java編程思想》(第4版),在學習到第三章移位運算符的時候,講解裏面有這麼一段話,一開始讓我百思不得其解: Java 也添加了一種“無符號”右移位運算符( >>>), 它使用了“零擴展”:無論正負,都

原创 動態規劃算法(1)——支持連續值的0-1揹包問題(Knapback)

動態規劃算法 總體思想 動態規劃算法與分治法類似,其基本思想也是將待求解問題分解成若干個子問題,但是經分解得到的子問題往往不是互相獨立的: 在用分治法求解時,有些子問題被重複計算了許多次 不同子問題的數目常常只有多項式量級 如

原创 ThreadPoolExecutor填坑日誌(1)——newFixedThreadPool(1)與newSingleThreadPool()的區別

兩種工廠方法區別 ThreadPoolExecutor是Executors類的底層實現,在JDK幫助文檔中,有如此一段話:“強烈建議程序員使用較爲方便的 Executors 工廠方法 Executors.newCachedThre

原创 最新版hexo+github搭建個人博客

從學生時代開始就有做筆記和總結的習慣,以前的筆記都是在本子上,經常不知不覺就做了很多筆記,每次回頭看到那麼多工整漂亮(嗯,就是自戀>o<)的筆記成就感就油然而生。現在已經是信息時代了,購物也從線下搬到線上,想必筆記也應該如此。俗話

原创 git填坑日誌(1)——git clone --recursive克隆包括子模塊的項目報錯

問題描述 這個問題出現的情況是,子模塊的url使用http方式獲取的情況下,在clone項目的時候,使用–recursive參數初始化子模塊或者git submodule update的時候會直接出現以下報錯: bash: /de

原创 Java核心技術Ι(2)——併發之同步

競爭條件     在大多數實際的多線程應用中, 兩個或兩個以上的線程需要共享對同一數據的存取。如果兩個線程存取相同的對象,並且每個線程都調用了一個修改該對象狀態的方法,這樣線程之間就會相互影響。根據各線程訪問數據的次序,可能會產生

原创 計算機算法應用(1)——選擇金額最接近票據(0-1揹包問題)

應用場景 最近遇到了一個場景,具體爲在計算出金額水位差額以後通過質押若干張電票(票據可以在多張票據集合中選擇,且票據只能全部質押不能部分質押)的方式彌補水位,爲了把控風險,要儘量使得水位差額被完全填補,但是在水位差額被填補以後又需

原创 Java基礎填坑日誌(2)——Thread.join()方法使用分析

前言 在學習java中的併發的時候,很容易注意到一個函數join,此函數的功能是等待指定的線程死亡或者經過指定的毫秒數,如果不指定毫秒數或者指定的毫秒數爲空,則一直等待直到指定的線程死亡。JDK源碼如下: /** * Waits

原创 Java核心技術Ι(1)——併發之線程

基本概念     大家應該都很熟悉操作系統中的多任務(multitasking):在同一時刻運行多個線程的能力。今天人們大多擁有單臺擁有多個CPU的計算機,但是,併發執行的線程數目並不是由CPU數目制約的。操作系統將CPU的時間片

原创 Spring填坑日誌(1)——Jackson序列化報錯

問題描述 今天編碼的時候遇到一個報錯: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: No s

原创 《領域驅動設計精簡版》讀書筆記(4)——保持模型一致性

保持模型一致性 當遇到需要若干個團隊通力配合的大型項目,我們應該做的是有意識地將大模型分解成數個較小的部分。只要遵守相綁定的契約,整合得好的小模型會越來越有獨立性。每個模型都應該有一個清晰的邊界,模型之間的關係也應該被精確地定義。

原创 《領域驅動設計精簡版》讀書筆記(3)——面向深層理解的重構

持續重構 重構是不改變應用行爲而重新設計代碼以讓它變得更好的過程,重構通常是非常謹慎的,按照小幅可控的步驟進行,以確保不破壞原有的功能和引入某些缺陷,通過自動化測試可以有效保障重構的代碼質量。基於某些重構模式的自動化重構工具可以讓