原创 對象老祖宗Object:我有話說

什麼是Object類 Object是所有Java類的祖先,位於 java.lang 包下,(這個包中所有類在使用時無需手動導入,系統會在程序編譯期間自動導入)。當一個類沒有直接繼承某個類時,默認繼承Object類,也就是說任何類都

原创 因爲說了句金額用double表示,結果被踢出羣聊

浮點型變量在進行計算的時候會出現丟失精度的問題,所以,在需要用到金錢的地方要用BigDecimal而不是其他,如下代碼段。 public class Main { public static void main(Strin

原创 談談任務調度的四種實現方式

一、什麼是任務調度 任務調度是指基於給定時間點,給定時間間隔或者給定執行次數自動執行任務,本文會介紹Timer、ScheduledExecutor、Quartz、Spring Boot中的調度模塊使用。 二、Timer Timer

原创 Class.forName和ClassLoader有啥區別?

Java中的Class.forName()和ClassLoader 都可以對類進行加載,在學習mysql期間可能會經常用到Class.forName(),ClassLoader負責將Class的字節碼形式轉換成內存形式的 Clas

原创 我想你需要了解一下ps命令

ps概述 Linux中的ps命令是Process Status的縮寫。使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有殭屍、哪些進程佔用了過多的資源等等,ps 爲我們提供了進程的一次性的查看,它所提供的查

原创 確定不瞭解下布隆過濾器?

在學習Redis時,三大緩存問題是不可避免的,所以,我也是在此學習到了布隆過濾器?於是總結了這篇文章。 一、什麼是布隆過濾器? 布隆過濾器是1970年由布隆提出的。它實際上是一個很長的二進制向量和一系列隨機映射函數。布隆過濾器可以

原创 SpringBoot+RabbitMQ實現郵箱服務

由於我有兩個項目,每個項目都需要用到郵件,所以把郵件拆分出來做成了一個單獨的郵件服務,也方便以後的項目直接調用。 也就是現在有三個服務,服務A接收其他服務發送的消息,這個消息中會包含三個基本的信息,郵件標題、郵件內容、接收者的郵件

原创 Tomcat源碼五部曲(四)、類加載器

在Tomcat中提供了三個基礎的類加載器和Web應用類加載器,如下圖,綠色是JDK本身類加載器,藍色則爲Tomcat定義的類加載器,這三個類加載器指向的路徑和包列表可以由catalina.properties配置,此文件位於Tom

原创 併發ScheduledThreadPoolExecutor源碼分析

ScheduledThreadPoolExecutor是一個可以在指定一定延時時間後或者定時進行任務調度的線程池,ScheduledThreadPoolExecutor繼承了ThreadPoolExecutor並實現了Schedu

原创 Guava與RateLimiter限流

什麼是Guava? Guava是Google的一組核心Java庫,提供了很多設計精良、使用方便的工具類,它廣泛用於Google的大多數Java項目中,也被許多其他公司廣泛使用。其中就包含一款限流工具RateLimiter。 首先我

原创 Tomcat源碼解析五部曲三、請求處理流程

Tomcat處理Http請求又是非常複雜的一步,至少我是這麼認爲。對於這一流程,個人實在沒有精力深入研究了(怕了怕了),所以在這裏只總結一下大概,或許有什麼地方可能不太正確,請多多指正。 一、主要類簡介 處理請求主要涉及到這麼幾個

原创 知道該選哪款Linux嗎?別猶豫了,就他

Linux發行版非常之多,有Ubuntu、Redhat、Manjaro、Debian、CentOS等,如果你是一個選擇困難戶,簡直是崩潰的狀態,到底該選那一個又不得不看一些推薦文章,最終可能同我以前一樣,選擇Ubuntu,因爲每一

原创 位運算那些騷操作,HashMap容量爲什麼是2的次冪?

位運算那些騷操作,數不甚數,就拿HashMap來說,在求出元素位置時候通過h & (length-1) 來計算,h是key的hash值,length是數組長度。但是這個length大小是有限制的,必須是2的次冪。那爲什麼是2的次冪

原创 Android自定義滑動進度條

一、效果圖 二、實現過程 實現過程很簡單,只要自定義一個TextView,在onTouchEvent中的移動事件中不斷重新繪製即可。 爲了方便使用,首先自定義幾個屬性。 <?xml version="1.0" encoding=

原创 好好的Timer居然有坑?

在做定時任務時,可能會使用到Timer+TimerTask類,但是這兩個小小的類,卻有大坑。 先來複現一下問題,如下,可能預期的是第一個PrintTask從1一直往後打印,直到爲5時拋出異常,第二個PrintTask從100往後不