一. git clone失敗
1. 錯誤信息
Please make sure you have the correct access rights and the repository exists
第一次拉項目的時候已經(jīng)設(shè)置了公鑰骤公,在更新的時候發(fā)現(xiàn)更新不下來嗜浮,重新生成ssh公鑰配置添加到gitLab上也不行
2. 解決:
2.1 修改.git
文件夾下的config
文件
將url由原來的ssh開頭的改成https開頭的地址
2.2 設(shè)置git忽略ssh證書錯誤
git config --global http.sslVerify false
git config --global http.xxlVerify false
二. Linux中如何查看進程占用了哪些端口
通過下面的命令獲取pid
ps -aux | grep XXXX
通過下面的命令獲取該進程所占用的端口
netstat -apn | grep pid
三. Nacos在win上持久化數(shù)據(jù)到MySQL
1. 修改配置文件application.properties
spring.datasource.platform=mysql
db.num=1
# db.url.1=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
四. addShutdownHook優(yōu)雅關(guān)閉線程
通過我們的程序中運行完之后都會進行一些清理工作,比如關(guān)閉數(shù)據(jù)庫資源,同步等操作乎澄。這時我們的鉤子函數(shù)addShutdownHook有了用武之地友存。
1. 鉤子程序執(zhí)行時機:
當(dāng)程序正常退出,系統(tǒng)調(diào)用 System.exit方法或虛擬機被關(guān)閉時才會執(zhí)行添加的shutdownHook線程。其中shutdownHook是一個已初始化但并不有啟動的線程馅袁,當(dāng)jvm關(guān)閉的時候缎除,會執(zhí)行系統(tǒng)中已經(jīng)設(shè)置的所有通過方法addShutdownHook添加的鉤子严就,當(dāng)系統(tǒng)執(zhí)行完這些鉤子后,jvm才會關(guān)閉伴找。所以可通過這些鉤子在jvm關(guān)閉的時候進行內(nèi)存清理盈蛮、資源回收等工作。
2. 用法
Runtime.getRuntime().addShutdownHook(Thread thread)
這里我們需要將一個線程對象傳入,作為鉤子程序的實現(xiàn)代碼技矮。本質(zhì)上就是在jvm關(guān)閉時,執(zhí)行一個線程抖誉。
3. 實戰(zhàn)
public class Client{
public void test1(){
System.out.println("startting working......");
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void run() {
System.out.println("執(zhí)行鉤子線程");
}
});
System.out.println("program endding");
}
}
執(zhí)行結(jié)果:
startting working......
program endding
執(zhí)行鉤子線程
果然鉤子線程是在主程序執(zhí)行完畢之后才開始執(zhí)行。
五. System.exit()用法
System.exit(0)衰倦;用于正常退出
System.exit(1)袒炉;常用于catch()中,表示異常退出樊零。
這個方法是用來結(jié)束當(dāng)前正在運行中的java虛擬機我磁。如何status是非零參數(shù),那么表示是非正常退出驻襟。
System.exit(0)是將你的整個虛擬機里的內(nèi)容都停掉了 夺艰,而dispose()只是關(guān)閉這個窗口,但是并沒有停止整個application exit() 沉衣。無論如何郁副,內(nèi)存都釋放了!也就是說連JVM都關(guān)閉了豌习,內(nèi)存里根本不可能還有什么東西
System.exit(0)是正常退出程序存谎,而System.exit(1)或者說非0表示非正常退出程序
System.exit(status)不管status為何值都會退出程序拔疚。和return 相比有以下不同點: return是回到上一層,而System.exit(status)是回到最上層
package Test;
public class Test {
public static void main(String[] args) {
int a=10;
int b=10;
method(a, b);
System.out.println("a***"+a);
System.out.println("b***"+b);
}
public static void method(int a,int b) {
System.out.println("a=100");
System.out.println("b=200");
System.exit(1);
}
}
輸出:a=100
b=200