原创 JUC源碼學習之AbstractQueuedSynchronizer

源碼基於的Oracle JDK版本爲:11.0.5 什麼是CLH隊列 簡單理解是一個雙向鏈表,鏈表中存放的是包含線程在內的信息,隊首的是正在執行的線程,後面的是等待執行的線程,如下圖所示: Node概述 The wait q

原创 如何用代碼將博客從hexo批量遷移到wordpress

感覺"業務"有擴展,hexo不能動態添加文章有點不太適應 wordpress添加markdown支持 選擇了WP Editor.md這個插件,新增post,測試markdown能夠生效。 獲取hexo博客的md文檔 在source

原创 簡略梳理IO模型

這是一篇對IO模式知識點的簡要筆記,後續會根據知識的積累與理解繼續做更新。 幾種常見的IO名稱 最早接觸的是BIO,在Java的網絡編程中,有一個ServerSocket,會調用accept()方法,監聽某個端口,直到有新的連

原创 Netty源碼學習系列③新連接的建立

當服務端啓動好了之後,也就是說,服務端已經在執行NioEventLoop的一個死循環方法run()中,一直輪詢事件,並且此時的監聽的事件爲OP_ACCEPT。如果有新連接接入,那麼首先會在上述的run()方法中觸發… 收到新

原创 HashMap源代碼分析-II-擴容策略詳細分析

距離寫第一篇關於HashMap的筆記(CSDN鏈接、HEXO鏈接)已經有1年多了,感覺當年的分析中還是少寫了些內容,現在看起來有些部分有點費勁。所以現在特地補充上現在的分析筆記,主要集中在resize()擴容這一個操作上面。

原创 理解Servlet與Filter的關係與設計思路

什麼是Servlet 對一個HTTP請求的正常的處理流程是: 發送HTTP請求 服務端的HTTP服務器收到請求 調用業務邏輯 返回HTTP響應 產生了下面3個問題: HTTP 服務器怎麼知道要調用哪個業務邏輯,也就是 Ja

原创 如何快速確認鏈表上是否存在環

這個問題遇到過很多次了,但是並不是說每次都很清楚。所以這次用golang的代碼來實現一遍,加深理解與記憶。 如果一個鏈表上不存在環,那麼一定能夠遍歷完鏈表中所有的Node節點;如果存在環,那麼可以想象成存在一個圓形操場。在一個

原创 docker構建MySQL環境

安裝及配置docker(基於Ubuntu) sasurai@ubuntu:~$ sudo apt install docker.io sasurai@ubuntu:~$ docker version Client: Versio

原创 Spring系中常見註解用法說明

@PathVariable與@RequestParm 在spring mvc中,有@requestparm, @requestbody和@pathvariable 三種註解來獲得瀏覽器端的參數,其中@requestparm是取自u

原创 netty中粘包與拆包的處理

TCP是個流協議,流是一串沒有界限的數據。TCP會根據TCP緩衝區的實際情況對包進行劃分。因此造成一個完整的業務包,會被TCP分成多個包、把多個包封裝成一個大的包進行發送。 粘包與拆包現象 服務端分兩次讀取到了兩個獨立的

原创 Spring源代碼學習系列〇源代碼下載、導入與Hello World

最近確實受到一些打擊,開始思考人生、也開始思考自己到底缺的是什麼。決定從spring源代碼開始學習,是我在思考後,作出的決定。但是同時我也不會放棄netty,等稍微有點時間了,我會繼續開始netty相關的學習。 說起來很是慚愧

原创 Java中的Queue之概述

對技術還是得有敬畏之心,總覺得Queue好像沒啥,其實只是沒有仔細去了解過。 不過自從上次認真地看了線程池的源代碼之後,發現Queue是一個很神奇的集合類。Queue的形式有無界、有界,還有堵塞、非堵塞。初略想想,這個實現可能

原创 Java中的線程池從精通到入門

說真的,我一直認爲線程池很簡單,也沒去看過它的實現,大概瞭解過其中的原理,但是並未深入學習。一方面,瞭解過之後很長時間不去看,非常容易忘;另一方面,還是深入源碼得到的信息纔會比較深刻,還能避免背書式學習。 繼承結構說明 在Ex

原创 docker中的wordpress添加https訪問

申請證書 可以從freessl.cn免費申請。免費的SSL證書時間長度爲1年,但是隻能對單個域名,不支持多域名通配符,選擇的話以個人需求爲準。 選擇瀏覽器生成 點擊確認創建後,得到如下信息: 接下來到域名管理裏面,按上述信息配