原创 IntelliJ IDEA中好玩的註釋

1.TODO comments - 待辦事項註釋 寫代碼時,有時候寫着寫着突然就有個線上的bug或者有個更緊急的需求,不得不放下正在寫的東西,去做別的事。當那件事情忙完之後,回到原來的代碼,不知道自己寫到哪了。需要憑着記憶找半天。 這時候

原创 記一次Java程序莫名其妙消失不見的排查

表現:        1.前端突然問我,Java服務是不是停了。        2.第一反應查看java日誌文件,沒有發現服務重啓的日誌,OOM的日誌,異常日誌也沒有信息        3.根據日誌裏面顯示的pid以及啓動保存的pid,去

原创 記一次linux重裝後ssh導致的問題: IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

情景:          1.騰訊雲上買了一臺linux服務器,然後本機使用ssh密鑰登錄過。          2.過年的時候搶票,自己沒有服務器資源,然後把騰訊雲服務器重裝系統成windows系統去搶票。          3.搶票完

原创 SpringBoot在Centos(Linux)系統上以init.d即SysVinit(SystemV)守護進程的方式部署項目Jar包

一.引言 在linux系統中,我們通常使用下面指令來部署springboot項目: nohup java -jar appname.jar --spring.profiles.active=qa > /dev/null 2>&1 & e

原创 windows系統電腦將nacos/zookeeper等第三方組件註冊成windows服務,開機自啓

原理:使用apache的Procrun軟件,自主註冊windows服務,需指定啓動腳本和停止腳本。 大致步驟如下: 1.下載Procrun: http://archive.apache.org/dist/commons/daemon/bi

原创 Java打包、上傳服務器、部署springboot應用簡單腳本

一.應用場景: 本地開發java應用程序,當部署時,要打包java應用,上傳jar包到遠程服務器,登錄遠程服務器並執行指令進行重啓java服務。 有時候需要頻繁反覆進行該操作,每次都這樣一步一步的做,有些繁瑣並且浪費時間,因此寫了一份sh

原创 Springboot整合RestHighLevelClient進行Elasticsearch操作,基於6.3.2版本,6.1.1測試通過(辛酸踩坑歷史及經驗分享)

說一下寫這篇文章的原因,有點小複雜。 1.公司的es版本是6.1.1.禁用了9300的transport端口,只開放了rest端口. 我的springboot項目版本是2.2.0. 2.一開始興致勃勃使用了springdata start

原创 歸併排序算法

歸併排序(二路歸併排序)是一個高效的排序算法,僅次於快速排序。 思想:將元素從中間一直往下切分,直到分解成1個元素(不能再分時)就開始將數組進行合併排序。 一直往下二分,不能再分時,再把所有的二分合並並且排序。 核心在於二分,還有就是合併

原创 Spring項目集成apidoc生成api接口文檔

一、背景需求  JavaWeb/spring項目寫成的api接口,需要自動生成api文檔,甚至需要在線測試接口。考慮實現的方案有swagger,apidoc,spring rest docs。在之後的項目都有一一嘗試,最終還是覺得apid

原创 SpringBoot項目在window系統下以系統服務的方式部署jar包

1.部署背景:  作者的Java框架是以Spring cloud體系爲基礎構建的。基於Spring Boot一般有兩種打包方式,一種是War包,一種是Jar包,拋開War包部署不講,以jar包的形式部署是基於以下的考慮:  A:Spri

原创 SpringBoot啓動異常:This is very likely to create a memory leak. Stack trace of thread

錯誤信息警告: The web application [ROOT] appears to have started a thread named [Abandoned connection cleanup thread] but has

原创 SpringMvc實現分片上傳,斷點續傳,進度條上傳,秒傳,分段下載

一、需求背景大文件上傳,需要分片,並實現斷點續傳,進度條顯示,秒傳功能。下載時可以暫停,分段下載。二、實現原理1.分片:前端瀏覽器將文件根據設定的規則分割成多片小文件,一片一片的上傳到服務器。2.秒傳:前端瀏覽器截取文件的前面幾m和最後幾

原创 如何自定義Spring restTemplate請求及回調

Spring restTemplate是一個很好的http請求代替方案,當你對HttpClient等其他框架厭倦的時候。其原本的api已經足夠許多場景的http調用,但在實際應用中仍然可能會有一些自定義的場景。例如這樣的情況,出於安全性的

原创 Swagger除了註解方式之外自定義添加接口,額外定義接口

一、業務場景  集成swagger框架之後,在代碼上添加swagger註解即可生成api接口文檔,在大多數情況下都適用。但除此之外我們還有其他的一些場景:  1.非springMvc註解暴露接口,無法通過這種註解方式生成api接口文檔  

原创 如何隨心所欲地自定義log4j輸出格式

在某種情況下,我們需要在不影響原有代碼的基礎上自定義log4j的輸出格式。例如這樣的需求,硬性規定了項目的日誌格式爲: 日期 日誌等級 ClassName:line - [版本號] [請求ip地址] [項目應用名稱] [服務接口模塊] [