原创 Mina僞裝接收到心跳回復

在應用中,作爲客戶端,可能會遇到服務端不回覆心跳的情況,那麼這個時候就需要客戶端自發自收。 不必費力寫一個定時器向自身發送心跳回復,直接在發送時調用其內部API就可以: public class KeepAliveGatewayZ

原创 利用IDE打jar包

一切操作基於IntelliJ IDEA。 打jar包可以直接使用IDE來完成。 第一步: 第二步: 第三步: 最後就是生成了: 生成的路徑一般在項目根目錄(非module)下的build\classes\artifacts

原创 關於gradle多渠道打包的命名

使用gradle多渠道打包也不是什麼新鮮事了,配置productFlavors就完事了,再寫點buildConfigField什麼的,似乎也就可以用了。 用確實是可以用,但遇上某天想改打包出來的名字就很尷尬了,不知道怎麼改。 使用

原创 IDEA無法選擇新安裝字體

原來使用IDEA的時候遇到過一個問題:在win10系統中,新安裝在系統中的字體,在IDEA中根本顯示不出來,怎麼調設置都調不出來。 先說結果,如果遇到這種問題,能夠確定IDEA中的設置沒什麼毛病的,請直接懷疑是系統問題:需要【爲所

原创 關於定時上報數據的無頭無尾問題

問題 場景1:一組數據有規律的上報,根據其時間間隔對其分段,判斷其每一段數據的開始與結束 場景2:一個消息一旦開始上報,則會以固定時間間隔上報,消息本身並無開始結束標誌,現需要判斷消息開始與結束 用文字描述不太利索,直接舉例說明:

原创 在Java中運行JS

在Java中運行JS代碼是一件很容易的事----對於服務端來說,直接調用ScriptEngineManager類即可;對於移動端安卓來說,運行JS代碼往往需要藉助Webview中的js引擎才能執行JS代碼。 當然,也有不借助Web

原创 Netty在無Internet網絡狀況下的連接建立超時

首先記錄下結果,都是尋找DNS的鍋。 測試代碼: public void testFlow(){ EventLoopGroup group = new NioEventLoopGroup(); //

原创 正則替換group(n)內容

正則替換指定內容本來應該是一件挺容易的事情,但由於某些原因,替換指定group的內容得自己實現。 先設定一個需求,把下面字符串第1個的01換成1234,第2個01換成2345,當然也可能會有更多的01或者其他字符串: Stri

原创 從Mina源碼看心跳超時機制

首先明確一點,在Mina或者其他相似的框架中,心跳機制肯定都是和計時掛鉤的,只要找到計時相關的代碼,其實就離真正的心跳邏輯不遠了。 Mina中的心跳超時其實都是指會話空閒,即在一定時間段內未接收或未發送消息的狀態,此時會觸發ses

原创 併發寫日誌文件

併發寫文件一般都會使用到鎖來着,但這裏就不用了,換用BlockingQueue代替一下,也不用操心鎖的問題了。 不過如果真得要使用鎖的話,ReentrantReadWriteLock是個不錯的選擇,使用起來大概是這樣的:

原创 關於Kotlin泛型遇到的問題

在使用kotlin的過程中,遇到了一些泛型上的問題,索性統一研究下; 關於通配 Java裏有?、extends、super; Kotlin裏有*、out、in; 雖然表示方法不同,但其實可以認爲是分別對應且等價的; 需要明確的是其

原创 寫一個定時自檢

有一個後臺程序需要這麼一個功能: 需要知道自己什麼時候進入穩定狀態。 我原來用一種沙雕方式實現的,即開一個線程讓一個計數器定時自增,自增到某個數即表示已經進入穩定狀態,如果中間有打破這種狀態的操作,那麼就讓計數器重置爲0: pu

原创 關於線程池中終止任務

使用線程池本身刪除或終止任務,有一個必須的前提: 任務必須存在於隊列之中。 爲什麼這麼說? 是因爲我們所謂的“刪除任務”是指ThreadPoolExecutor的remove方法: public boolean remov

原创 JNA加載DLL及在jar中的運用

文章目錄需求相關DLL相關JNA相關使用JNA加載DLL在jar中使用JNA加載DLL 需求相關 需求 使用JNI方式加載DLL,並封裝爲SDK供他人使用。 方法 原生JNI方式 調用JNA框架 原生JNI方式適合自行

原创 使用gradle發佈文件到maven倉庫

使用gradle構建發佈腳本,即可快速方便地發佈文件到maven倉庫。有2種插件可以選擇,一種maven,一種maven-publish。 使用maven插件 maven插件內置了一個方法uploadArchives,這個方法會將