原创 Reactor模式中的5種組件

下圖來自Douglas C. Schmidt的《Reactor  An Object Behavioral Pattern forDemultiplexing and Dispatching Handles for Synchronous

原创 NIO零拷貝

在Java體系的NIO和Netty中都存在着零拷貝這麼一個東西,這項技術可以提升數據的讀寫速度,那到底什麼是零拷貝呢,下面這張圖可以很詳細的說明。 在發送系統調用sendfile之前,處於用於上下文,之後切換到內核上下文進行系統調用 s

原创 eclipse中使用gradle

1、到gradle官網下載gradle 2、將下載下來的壓縮包放到磁盤中並解壓,比如:D:\gradle-5.6 3、設置系統環境變量 GRADLE_HOME=D:\gradle-5.6 PATH=$PATH;%GRADLE_HMOE

原创 第一個Thrift程序

Thrift是一個rpc框架,也是一個不錯的序列化框架,支持多種語言,此處我使用的是Java。 1、當然開始之前需要下載thrift到本地,我這裏下載的是最新的0.12.0版本,並設置好環境變量 2、編寫IDL ##命令空間 names

原创 學習“閃電俠”的Netty系列源碼博文筆記

1、netty的reactor線程在添加一個任務的時候被創建,該線程實體爲 FastThreadLocalThread,最後線程執行主體爲NioEventLoop的run方法。   2、reactor線程大概做的事情分爲對三個步驟不斷循環

原创 Netty中ChannelHandlerContext、Channel、ChannelPipeline的write()方法底層調用鏈的不同

最近在看《Netty實戰》這本書,看到書中講解ChannelHandlerContext、Channel、ChannelPipeline的write()的不同時有點懵逼,沒大看懂,遂動手寫了一個Demo來驗證到底是怎麼回事。 服務啓動類O

原创 Netty源碼編譯導入Eclipse

1、環境要求 Maven、Git、JDK、Eclipse 2、從Netty的Git庫拉取源碼到本地,https://github.com/netty/netty 3、打開windows的命令提示符進入源碼文件夾下通過 mvn clean

原创 《Netty實戰》閱讀筆記

1、ChannelHandler的執行和阻塞 通常ChannelPipeline中的每一個ChannelHandler都是通過它的EventLoop(I/O線程)來處理給它傳遞的事件的。所以至關重要的是不要阻塞這個線程,因爲這會對整體的I

原创 FFmpeg安裝及將rtsp流轉hls協議流通過nginx進行視頻直播

在工作中遇到需要將海康威視等的rtsp協議的監控視頻在瀏覽器上播放,如果直接通過瀏覽器播放需要在客戶pc上安裝插件,明顯這是不可行的,在網上找了一段時間的方案後確定了通過ffmpeg將rtsp轉成hls協議的視頻流再通過nginx轉達的方

原创 如何通過Spring Boot配置動態數據源訪問多個數據庫(轉)

一、數據庫環境準備 下面以Mysql爲例,先在本地建3個數據庫用於測試。需要說明的是本方案不限數據庫數量,支持不同的數據庫部署在不同的服務器上。如圖所示db_project_001、db_project_002、db_project

原创 Spring和SpringBoot項目中的WebSocket中引用對象的不同寫法

在實際項目開發中發現不管是在普通Spring還是SpringBoot項目中的WebSocket主類中使用@Autowired都沒辦法注入想要的對象,現針對這兩種情況記錄一下解決辦法。 1、在普通Spring項目中的WebSocket主類中

原创 SpringBoot上傳文件跟傳統的SpringMVC的區別

在新項目中,項目組選擇了之前重來沒用過的SpringBoot。今天再處理文件上傳時起初就照搬了之前項目中SpringMVC的配置和代碼,結果總是報參數不存在的錯誤,改來改去弄了很久纔在網上找到解決問題的辦法,在此記錄一下! 一、先來

原创 使用keytool命令生成證書並導入java的cacerts證書庫

1、生成證書,其中-alias後是別名,-keystore後是證書路徑和名稱 keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/cas/keystore/tomcat.key

原创 mysql導入大量數據時報MySQL server has gone away錯誤的解決辦法

  在我們使用mysql導入大文件sql時可能會報MySQL server has gone away錯誤,該問題是max_allowed_packet配置的默認值設置太小,只需要相應調大該項的值之後再次導入便能成功。該項的作用是限制my

原创 Spring的事務隔離級別和事務傳播特性

一、事務隔離級別 1、在數據庫操作中,爲了保證併發讀取的正確性,繼而提出了事務隔離級別。簡單點,怎麼讓不同的事務相互之間不影響。 Spring中定義了5種事務隔離級別: 2、使用不同的隔離級別可以解決不同的問題: 1)、ISOLATI