原创 《netty入門與實戰》筆記-06:心跳與空閒檢測 轉

本小節,我們一起探討最後一個話題:心跳與空閒檢測 首先,我們來看一下,客戶端與服務端之間的網絡會存在什麼問題? 1. 網絡問題 下圖是網絡應用程序普遍會遇到的一個問題:連接假死 連接假死的現象是:在某一端(服務端或者客戶端)看來,底層

原创 redis過期鍵刪除策略 原

redis服務器實際使用的過期鍵刪除策略有兩種: 定期刪除 惰性刪除 redis 會將每個設置了過期時間的 key 放入到一個獨立的字典中,以後會定時遍歷這個字典來刪除到期的 key。除了定時遍歷之外,它還會使用惰性策略來刪除過期的 k

原创 《netty入門與實戰》筆記-03:數據傳輸載體 ByteBuf 介紹 轉

ByteBuf結構 首先,我們先來了解一下 ByteBuf 的結構 以上就是一個 ByteBuf 的結構圖,從上面這幅圖可以看到: ByteBuf 是一個字節容器,容器裏面的的數據分爲三個部分,第一個部分是已經丟棄的字節,這部分數據是無

原创 《netty入門與實戰》筆記-01:客戶端啓動流程 轉

客戶端啓動 Demo 對於客戶端的啓動來說,和服務端的啓動類似,依然需要線程模型、IO 模型,以及 IO 業務處理邏輯三大參數,下面,我們來看一下客戶端啓動的標準流程 NettyClient.java public class Nett

原创 deepin下深度終端使用ssh-agent(xshell中的xagent功能) 原

背景:從windows10換到deepin後,在連接公司的服務器遇到了問題:windows下用的是xshell,開啓xagent後,可直接從公司的跳轉板上連接生產服務器;在deepin的深度終端上,從公司的跳板機連接到生產服務器時,提示需

原创 netty學習之一:第一個netty程序 原

最近在學習netty,看了幾天的博客之後,打算自己寫一個練手的程序。 這個程序很簡單:客戶端發送一個ping,服務端會相應地回覆一個pong,當監測到服務端失去連接後,即斷開。 整個代碼分爲client與server兩部分,結構如下: 引

原创 redis問題診斷:info指令 原

在使用 Redis 時,時常會遇到很多問題需要診斷,在診斷之前需要了解 Redis 的運行狀態,通過強大的 Info 指令,你可以清晰地知道 Redis 內部一系列運行參數。 Info 指令顯示的信息非常繁多,分爲 9 大塊,每個塊都有非常

原创 記一次異常排查過程:druid連接池拋出DataSourceDisableException 原

先交待下項目背景,項目中有個功能是從mysql中獲取數據庫信息來創建數據庫連接,用的連接池是druid,jar包版本是1.0.9。 1. 異常的發生 最近項目中出現了一個神奇的異常: 讀取MySQL數據錯誤: jdbc:mysql://6

原创 《netty入門與實戰》筆記-04:pipeline 與 channelHandler 轉

這一小節,我們將會學習 Netty 裏面一大核心組件: Pipeline 與 ChannelHandler Netty 中的 pipeline 和 channelHandler 通過責任鏈設計模式來組織代碼邏輯,並且能夠支持邏輯的動態添

原创 netty學習之二:http客戶端 原

本例中,使用netty來進行http客戶端的請求。 1.HttpClientDemo.java:啓動客戶端 package org.attempt.netty4.demo002; import io.netty.bootstrap.Boo

原创 會員體系中,積分過期的設計方案 原

背景:積分項目,每次添加的積分都有一個有效期,有效期爲一年,如2017-01-02添加了一條積分記錄,到2018-01-02這條記錄應該是過期的。當前項目設計有兩張表:積分明細表(存放積分添加、使用明細)、積分總額表(用戶當前的積分額度)

原创 spring+redis自主實現分佈式session(非spring-session方式) 原

背景:最近對一個老項目進行改造,使其支持多機部署,其中最關鍵的一點就是實現多機session共享。項目有多老呢,jdk版本是1.6,spring版本是3.2,jedis版本是2.2。 1.方案的確定 接到這項目任務後,理所當然地goog

原创 Java中的鎖分類 轉

在讀很多併發文章中,會提及各種各樣鎖如公平鎖,樂觀鎖等等,這篇文章介紹各種鎖的分類。介紹的內容如下: 公平鎖/非公平鎖 可重入鎖 獨享鎖/共享鎖 互斥鎖/讀寫鎖 樂觀鎖/悲觀鎖 分段鎖 偏向鎖/輕量級鎖/重量級鎖 自旋鎖 上面是很多鎖的

原创 redis單線程理解 原

redis是單線程程序. 1.單線程的redis爲何如此之快 redis的數據都在內存中,所有的運算都是內存級別的運算。 使用Redis指令時,對於時間複雜度爲O(n)級別的指令,一定要謹慎使用,一不小心就可能會導致Redis卡頓。 2

原创 quartz異常:Couldn't rollback jdbc connection 原

最近工作發現,有個項目偶爾會報Couldn't rollback jdbc connection. No operations allowed after connection closed,項目技術選型如下: 數據庫mysql 連接池d