原创 Java--引用

強引用 創建一個對象,讓一個引用變量指向該對象,該引用變量就是強引用,處於可達的狀態,是不可能被垃圾回收期機制回收的,,如果一個對象沒有被引用對象指向,可認爲是可以被回收的。只要有引用變量指向,都不會回收。 @Test p

原创 Java多線程--自旋鎖

自旋鎖,是指不會阻塞當前線程,而是採用循環的方式去獲取鎖,這樣的話減少上下文切換,但是同時會消耗CPU資源。 //---------------------------自旋鎖-----------------------

原创 Redis--常見問題及方案

緩存穿透:請求一個一定不存在的數據,因爲緩存中不存在,就一定會去數據庫查,然後數據庫也不存在,就不會寫入緩存,一直查數據庫,導致數據庫壓力很大。 解決方案:即使不存在,也要寫入緩存,設置過期時間短一點。 緩存擊穿:一個不存在的數

原创 RabbitMQ--消息投遞確認與100%投遞成功方案

Rabbitmq消息投遞確認有四種方案 通過RabbitMQ事務 @Test public void test02() throws IOException, TimeoutException {

原创 Redis--哨兵模式

哨兵模式 sentinel monitor redisMaster 192.168.209.101 6379 1 daemonize yes logfile "./sentinel.log" taotaoMaster: 監控

原创 Java--異常情況討論

堆相關的主要就是堆內存異常,不停的創建對象,並且存在應用指向,比如利用List容器存儲下來。 /** * -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapD

原创 Java--官方定位問題工具

jps (JVM process status)可以查看Java虛擬機進程執行情況,-l顯示具體的啓動類,-m顯示具體的入參。-v顯示啓動配置的jvm參數 jps -l jstats(JVM statistic Monitor

原创 Redis-布隆過濾器

實現原理 對的數據肯定是對的,錯的數據不能保證是對的。 解釋如下: 之前添加到容器中的數據,再次進行判斷是不是在這裏面,因爲來過,槽位肯定我爲1,所以判斷是不會出現問題的。 容器中不存在,判斷是不是在容器中,可能其他的數據通過h

原创 Mysql--關於NULL

公司DBA強制字段設置not null,不明覺厲,看了一下網上的文章,整理如下 創建表 CREATE TABLE `test02` ( `id` int(11) NOT NULL AUTO_INCREMENT, `col1

原创 Java--阻塞隊列

如果隊列滿了,添加元素的線程將會陷入等待狀態,而隊列爲空,獲取元素的線程將會陷入等待。有了BlockingQueue,我們不需要關心什麼時候需要阻塞線程,什麼時候需要喚醒線程。這一切都交給了BlockingQueue。 Arra

原创 Java--垃圾回收機制

垃圾回收算法思想 引用計數 複製拷貝 標記清除 標記整理 Serial 串行 只使用一個線程進行垃圾的回收。會暫停所有的用戶線程。不適合服務器環境,類似於餐廳需要打掃垃圾,需要請客人出去,然後開始打掃垃圾。 主要的收集器:Us

原创 Java多線程--線程狀態

線程的幾種狀態及相互切換 摘自https://www.cnblogs.com/hejing-swust/p/8038263.html 阻塞 在wait和sleep方法調用的時候,會強制使用try-catch包住異常,這個是因爲線

原创 計算機網絡-傳輸層

UDP (User Datagram Protocol)用戶數據報協議 UDP數據報在網絡傳輸中的位置 報文信息 附wireshark抓包 UDP無法保證可靠的交付數據,首部開銷小,UDP沒有擁塞控制,發送到網絡中就完了,

原创 IP協議的轉發流程

計算機網絡 廣域網 城域網 局域網 OSI 應用層-》爲計算機用戶提供接口和服務 表示層-》數據處理 會話層-》管理會話 傳輸層-》管理端到端的通信 網絡層-》數據路由(決定數據在網絡的路徑) 鏈路層-》管理相鄰節點間的數據通信

原创 Java多線程--volatile

volatile是Java虛擬機提供的輕量級同步機制,保證任意線程都能看到其他線程對該變量最後寫入的值。 1 保證可見性 private static volatile int C = 0; @Test pub