原创 關於打印debug日誌是否加判斷日誌級別的分析

一、問題由來 在代碼中,我們經常會看到打印debug日誌的時候,會判斷下當前的日誌級別: 到底有沒有必要呢? 二、答案 1、如果打印的實參不含計算的,【完全沒有必要】 2、如果打印的實參含有計算的,【完全有必要】 三、實驗探究 1、

原创 Cannot allocate memory 的分析及解決方法

背景 拿到一臺基於VMware的虛擬機,安裝一個公司產品,包含各個組件(微服務),內存要求較高。 問題 安裝產品過程中,出現如下問題:   問題分析                    問題定位:無非就是軟件安裝時的問題或者服務器問題

原创 Algorithm negotiation fail

修復升級OpenSSH版本至8.1後(7.5以後),連接不上SSH:     1、修改/etc/ssh/sshd_config配置文件,添加jdk1.6支持的加密算法,如下:     KexAlgorithms +diffie-hellm

原创 策略模式與工廠模式的結合使用

簡介: 策略模式: 定義了一組算法(業務規則); 封裝了每個算法; 這族的算法可互換代替(interchangeable)。 組成:          抽象策略角色: 策略類,通常由一個接口或者抽象類實現。          具體策略角色

原创 Redis(二)——分佈式鎖

https://blog.csdn.net/hxyascx/article/details/88036004

原创 一個比Spring Boot快44倍的Java框架!

https://blog.csdn.net/youanyyou/article/details/88812143

原创 PostgreSQL 與 MySQL 相比,優勢何在?

一、 PostgreSQL 的穩定性極強, Innodb 等引擎在崩潰、斷電之類的災難場景下抗打擊能力有了長足進步,然而很多 MySQL 用戶都遇到過Server級的數據庫丟失的場景——mysql系統庫是MyISAM的,相比之下,PG數據

原创 java中的notify和notifyAll有什麼區別?

先說兩個概念:鎖池和等待池 鎖池:假設線程A已經擁有了某個對象(注意:不是類)的鎖,而其它的線程想要調用這個對象的某個synchronized方法(或者synchronized塊),由於這些線程在進入對象的synchronized方法之前

原创 Redis的同步機制

前言 在Redis中,用戶可以通過執行SLAVEOF命令或者設置slaveof選項,讓一個服務器去複製另一個服務器,我們稱被複制的服務器爲主服務器(master),而對主服務器進行復制的服務器則被稱爲從服務器(slave)。 1 舊版複製

原创 Fiddler Web調試工具

Httpwatch是比較常用的http抓包工具,但是隻支持IE和firefox瀏覽器(其他瀏覽器可能會有相應的插件),對於想要調試chrome瀏覽器的http請求,似乎稍顯無力,而Fiddler 4 是一個使用本地 127.0.0.1:8

原创 GC Root 對象有哪些

  JVM垃圾回收的根對象的範圍有以下幾種:   (1)虛擬機(JVM)棧中引用對象 (2)方法區中的類靜態屬性引用對象   (3)方法區中常量引用的對象(final 的常量值) (4)本地方法棧JNI的引用對象

原创 對象何時進入老生代

內存分配策略 對象的內存分配其實就是在堆上分配,那麼細分呢,什麼時候在新生代什麼時候在老生代都是需要了解的問題。這些問題與虛擬機垃圾回收器有關,但是大多數情況下,對象優先在新生代的Eden區上分配空間,但是也有直接在老生代分配內存的情況。

原创 新生代內存分區

1.爲什麼會有年輕代 我們先來屢屢,爲什麼需要把堆分代?不分代不能完成他所做的事情麼?其實不分代完全可以,分代的唯一理由就是優化GC性能。你先想想,如果沒有分代,那我們所有的對象都在一塊,GC的時候我們要找到哪些對象沒用,這樣就會對堆的所

原创 JVM調優

jvm調優沒有一個固定模板配置說必須如何操作,它需要根據系統的情況不同對待。 1、初始化內存和最大內存儘量保持一致,避免內存不夠用繼續擴充內存。最大內存不要超過物理內存,例如內存8g,你可以設置最大內存4g/6g但是不能超過8g否則加載類

原创 在靜態方法和非靜態方法上加 Synchronized的區別

synchronized修飾不加static的方法,鎖是加在單個對象上,不同的對象沒有競爭關係;修飾加了static的方法,鎖是加載類上,這個類所有的對象競爭一把鎖。   Synchronzied 修飾非靜態方法==》對象鎖 Synchr