原创 關於類初始化的一個詭異問題

聖思園張龍老師關於類加載器的一個例子。 這個打印的是1,1 這個打印的是1,0   造成以上的區別的原因就在於:類加載的時候先準備(靜態變量賦默認值),然後初始化(賦值或者靜態代碼塊),實例化。   類的初始化只有在以下六種情況(主動

原创 服務端參數校驗(二):SpringMVC項目的參數校驗

項目參見: https://gitee.com/xxssyyyyssxx/validation compile "top.jfunc.validation:validation-core:1.0.1" compile "top.jfun

原创 使用logrotate來管理日誌

日誌文件包含了關於系統中發生的事件的有用信息,在排障過程中或者系統性能分析時經常被用到。對於忙碌的服務器,日誌文件大小會增長極快,服務器會很快消耗磁盤空間,這成了個問題。除此之外,處理一個單個的龐大日誌文件也常常是件十分棘手的事。

原创 如何優雅地保證程序不退出?

首先提兩個問題: springboot應用程序只在main方法中調用SpringApplication.run(xx),程序就運行起來了,他爲什麼能保持住不退出? quartz程序爲什麼能一直運行不退出? 我們爲了讓程序保持不退出,一般使

原创 ElasticSearch初步學習

本文來自 《Elasticsearch: 權威指南》 https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html   ElasticSearch安裝與基本使

原创 Redhat安裝mysql-5.7.29.tar.gz

安裝rpm包方便但是不好修改配置文件,一般修改了啓動有問題,所以採用安裝tar.gz的方式。 1.查看以前的mysql # rpm -qa|grep -i mysql 2.如果有先刪除 # rpm -ev mysql-commun

原创 服務端參數校驗(一):校驗工具

項目參見: https://gitee.com/xxssyyyyssxx/validation compile "top.jfunc.validation:validation-core:1.0.1" compile "top.jfun

原创 關於樹形結構、扁平化、子級的通用做法

樹形結構是典型的遞歸結構,常見於代碼中,但是代碼比較通用,所以記之備忘。實現方式有多種,此僅僅是一種比較好理解的方式,不適合於數據量太大的情況,如果數據量太大,請使用分批次查詢的方式。 形成一個樹形結構大部分情況下是基於一張表,然後通過一

原创 記錄定時任務遷移xxl-job的過程和理解

         一般定時任務使用的是基於quartz或者spring-scheduler的,能夠滿足大部分的開發需求。但是像手動執行一次,執行情況監測,進程阻塞停止等維護需求就顯得無能爲力了。無意間在gitee.com上發現了一個很好滿

原创 關於nginx的重定向問題

nginx作爲反向代理服務器的時候,如果端口設置的特殊,在重定向的時候可能遇到問題。當然可以通過在代碼中redirect一個絕對地址來規避這些端口問題,但是對代碼有侵入,也不優雅。還可以修改後端tomcat的proxyPort="xxx"

原创 cron(一)根據cron表達式計算每天有哪些執行時刻

      參見 http://gitee.com/xxssyyyyssxx/cron-hms       我們項目中一般會有很多的定時任務,我們怎麼知道這些定時任務是否正常執行了呢?一個基本的想法是,在任務執行前保存一條記錄,任務執行後

原创 複製目錄初探

複製一個目錄,這個目錄如果有很多子項,可能會耗費大量的時間,並且不可控(你不知道複製了哪些,還剩哪些)。以下的腳本解決這個問題,每複製一個文件或者文件夾,就記錄下來,這樣如果一次沒有複製完,還可以重啓腳本繼續複製。 SRC=/data/

原创 數據庫+緩存的正確姿勢

項目規模或者併發訪問量較小的時候,使用數據庫就可以滿足查詢的需要。當併發量逐漸增大的時候,數據庫可能就扛不住訪問壓力了。這個時候可以加入緩存提高查詢速度,但是加入緩存是一項比較有技術含量的工作,如果姿勢不對,可能造成數據不一致或者不起作用

原创 List遍歷的正確方式

對於List一般有兩種實現方式,一種基於數組,如ArrayList;一種基於鏈表,如LinkedList。查看其類定義,有一個非常明顯的區別,就是ArrayList實現了一個特殊的接口RandomAccess。該接口是一個標記接口

原创 tomcat8.0.30升級爲8.5.51注意事項

最近由於爆發了Apache Tomcat AJP協議任意文件下載和任意文件包含可導致遠程命令執行的漏洞,tomcat8系列的需要升級至8.5.51. 升級注意幾個問題: bin/catalina.sh 我們是通過在執行環境配置e