原创 碼農的書法窩

本人除了是個低調不奢華的碼農,還是個平時喜歡亂寫亂畫的書法愛好者。小時候崇拜爺爺蒼勁有力的字體,因而模仿起來,從此一發不可收拾,走上了習字之路。硬筆方面,我的啓蒙老師是我爺爺,後來有臨摹龐中華、司馬彥等大家字體;毛筆方面,我首先是

原创 聽說你還不會實現equals方法?收藏這篇文章就夠了!

1、何時需要重寫equals 相信javaer們應該都知道equals方法,它是基類大佬Object中的一個方法,所以java下面所有的類都“自帶”這個方法。看方法名就知道,意圖就是對比傳入的目標對象, 跟自己是否“相等”。我們先

原创 Spring Data Redis事務的正確使用姿勢

之前使用Spring Data Redis的時候,由於使用不當,導致redis連接不釋放的血案。現在來總結下Spring Data Redis事務的兩種使用方式。 1、execute(SessionCallback session

原创 @Transactional註解實現事務管理的原理

一、引言 在實際項目中,用Spring進行事務控制,我們通常都用@Transactional註解。這個註解用法很簡單,把原來jdbc繁瑣的事務控制都濃縮在這個註解的使用上了。秉着“知其然,知其所以然”的心態,我們可以思考,這個註解

原创 釋放sqlite文件佔用的多餘空間

當刪除sqlite文件裏的數據之後,會發現sqlite文件佔的磁盤空間並不會縮小,那是因爲: 當你從Sqlite刪除數據後,未使用的磁盤空間被添加到一個內在的”空閒列表”中用於存儲你下次插入的數據。磁盤空間並沒有丟失。但是也不向操

原创 Happens-Before原則

一、讓人又愛又恨的指令重排 瞭解過Java併發編程知識的童鞋都知道,Java內存模型是圍繞着併發過程中如何處理原子性、可見性和有序性3個特徵來建立的,其中有序性最爲複雜。 我們習慣性的認爲代碼總是從先到後、依次執行的,這在單線程的

原创 、>>>的運用

雖然在項目中很少用上移位運算,但基礎知識還是要掌握好的。衆所周知移位運算的效率比運算符要高很多,在底層開發和遊戲開發運用得比較多。 <<:左移。例如 x<

原创 web.xml中classpath:和classpath*:的區別

在web項目中,web.xml文件往往看到classpath和classpath*:的配置。classpath指的是WEB-INF文件夾下的classes目錄。 classes目錄是個定位資源的入口: 1、class文件的存放,

原创 volatile關鍵字的作用及使用場景

volatile關鍵字是java虛擬機提供的最輕量級的同步機制。在併發的場景下,我們都習慣於使用synchronized鎖進行同步,其實,有些簡單的場景下,我們也可以使用volatile來代替,但volatile有它本身的使用規則

原创 契約測試 No stubs or contracts were found for [XXX]問題解決

1、問題 最近在學習契約測試,用到的是spring-cloud-contract,網上有很多教程,便試着照葫蘆畫瓢的方式,來實現一遍。由提供者建立契約、生成存根,然後把存根交給消費方測試時,拋出了一個異常No stubs or c

原创 equals方法的姐妹篇——如何實現高效的hashCode方法

1、何時實現hashCode方法 上一篇文章介紹瞭如何實現equals方法如何實現equals方法,hashCode跟equals一樣,都是基類Object中的一個方法。而什麼時候該重寫hashCode方法呢?其實這個問題的答案我

原创 帶你用廣度優先搜索實現地鐵計費功能

文章目錄1、地鐵是如何實現收費的?1.1 數組實現方式1.2 無向圖實現方式2、廣度優先搜索找到兩個站點最短路徑2.1 構建站點對象2.2 用鄰接表構造地鐵無向圖2.3 建立搜索類2.4 測試站點距離計算2.5 爲什麼廣度優先搜索

原创 爲什麼HotspotJVM垃圾回收中的“標記-複製”算法需要兩個survivor空間?

一、提出問題 如題,爲什麼HotspotJVM垃圾回收中的“標記-複製”算法需要兩個survivor空間?爲什麼要強調Hotspot JVM呢,因爲JVM有很多種,每種JVM的實現方式都不一樣。本文提到的JVM,一律是代表Hots

原创 記一次filebeat與logstash配合使用遇到的坑

背景 初學filebeat和logstash,於是根據官方文檔,做了個最簡單的filebeat採集日誌,然後輸出到logstash的最簡配置。本以爲可以愉快的輸出“helloworld”的… 問題 啓動配置好的filebeat和l

原创 jdk動態代理實現總結和範例

最近在研究spring aop,其中代理在aop扮演着一個很重要的角色,現在來總結一下動態代理(這裏只總結動態代理,代理模式和靜態代理略)。 動態代理是跟靜態代理的目的都一樣,代理類主要負責爲委託類預處理消息、過濾消息、把消息轉發