原创 本地測試神器-mockito

前言 我們在寫自己的單測時,通常寫法都是 main方法或者SpringBootTest + junit 但是這兩種寫法都有問題 1、main方法,無法進行bean注入,只能進行簡單的邏輯測試 2、springbootTest

原创 postman的兄弟之curl,登錄生產機器調用服務暴露的web端口

背景 使用SpringBoot的我們可以很快的搭建一個web服務,@RestController等,這樣可以用postman發送一次請求調到服務,通常留個後門,便於修復一些奇怪的問題。但是,當我們本地機器無法訪問st環境/生產環境

原创 一次http請求打到java服務

什麼是servlet容器 我們單純寫一個java程序,並不具備監聽http請求等功能,實現這個能力,需要把java程序放到一個web 容器中,也就是servlet容器,通過它來監聽相應端口號,並把http請求打到我們的java服務

原创 自己的項目中創建一個java.lang包下的類的探究-雙親委派機制拓展問題

創建String類 其他類調用時 並不能引用到自定義String類,原String中找不到這樣的構造方法 執行類main方法時 創建java.lang包下不存在的類 執行main方法 其他類調用 結論 1、當創建jav

原创 線上機器CPU使用查看

1、top -c 列出進程相關信息,按大寫P按照CPU使用率排序 2、找到進程後,定位耗費CPU的線程 top -Hp pid 3、定位哪段代碼導致的CPU過高 1、先把定位到的線程ID轉換爲16進制 printf "%x\n

原创 線上進程kill不掉怎麼辦?

1、ps -aux ,若STAT那一欄爲Z,則說明是殭屍線程 2、ps -ef |grep 殭屍進程ID,即可以找到父進程ID kill掉父進程即可

原创 MetaSpace淺析

jdk1.8後 使用metaSpace代替了永久代 我們在使用metaSpace會設置兩個參數: 官網java8相關參數 -XX:MetaspaceSize=size 含義:當metaspace達到size值時,觸發fullgc

原创 Spring中InitializingBean和BeanPostProcessor區別

InitializingBean和BeanPostProcess都是Spring提供的接口 區別: 1、BeanPostProcess先於InitializingBean執行 2、InitializingBean是在對象已經實例化

原创 content-type的一點探究

背景 最近在工作中,寫後門接口調試的時候發現一個問題 使用postman調試時 以前的電腦 content-type設置的是:multipart/form-data 現在 使用這個content-type類型傳的參數並不能被獲取

原创 POST時Controller獲取不到請求參數

代碼是這樣的, postman設置如下: 結果msg爲空 將postman請求的時候 content-type改爲 x-www-form-urlencoded 就好了

原创 RedisCluster集羣間通信gossip協議

基礎通訊原理 集羣元數據的維護一般分爲集中式和gossip 集中式:集羣的元數據存儲在某個節點上 gossip:每個節點相互通信 redis cluster採用gossip redis集羣內部通訊端口號=對外端口號+10000 g

原创 SpringBoot工程yml文件沒有生效

背景 新建了一個基於springboot的maven項目,本來想實現一個controller測試一下接口,yml配置了端口號和根路徑 但是啓動時卻沒有生效還是8080端口, 直接增加JVM啓動參數 -Dserver.port=8

原创 父類子類定義相同的變量名

今天遇到了一個很有意思的問題,父類和子類都定義了一個同名變量,聲明一個父類類型a指向子類實例時,a.變量 = 父類的值 代碼 public class Father { public int i = 1; publ

原创 Mac創建目錄時提示Read-Only filesystem

1、重啓mac,按住Command+R,等到系統進入安全模式。 2、點擊屏幕上方的工具欄找到命令行工具。 3、執行,命令 csrutil disable 這一步就是關閉SIP 4、重啓電腦後,不要進入安全模式,正常進入系統 執行命