原创 Netty學習總結

客戶端使用Netty程序實現邏輯 解析控制檯指令(譬如發送消息或者建立羣聊等指令)->基於控制檯輸入創建指令對象->協議的編碼(通過自定義二進制協議將指令對象封裝成二進制); 接收服務端數據拆包粘包處理(截取一段完整的二進制數據包)->

原创 Shell編程基礎

Shell概述 簡單來說,shell是一個命令行解釋器,爲用戶命令和Linux內核執行該命令架起了一座橋樑 shell還是一個功能相當強大的編程語言,易編寫,易調試,靈活性強。shell是解釋執行的腳本語言,在shell中可以直接調用

原创 Linux基礎筆記

文章目錄Linux軟件安裝管理軟件包分類**腳本安裝包**RPM包命名規則1.RPM包的來源2.RPM包命名原則3.RPM包依賴性安裝命令1.包全名與包名2.RPM安裝升級與卸載1.RPM包升級2.卸載RPM包查詢1.查詢是否安裝2.

原创 Linux基礎知識

Linux系統安裝 虛擬機的安裝:https://www.imooc.com/video/3241 虛擬機的使用:https://www.imooc.com/video/3242 VMware_Install_Cleaner 虛擬機清

原创 J.U.C之AQS

AbStractQueuedSynchronizer類,簡稱AQS,一個用來構建鎖和同步器的框架 。從JDK1.5開始,引入了併發包,也就是J.U.C,大大提高了JAVA程序的併發性能,而AQS則是J.U.C的核心,是併發類中核心部分

原创 線程安全性

當多個線程訪問某個類時,不管運行時環境採用何種調度方式或者這些進程將如何交替執行,並且在主調代碼中不需要任何額外的同步或協調,這個類都能表現出正確的行爲,那麼就稱這個類是線程安全的。 線程安全性主要體現: 原子性:提供了互斥訪問,同一

原创 Java內存模型

CPU緩存一致性和亂序執行優化,在多核多併發下,需要額外做很多的事情,才能保證程序的執行,符合我們的預期。那麼JVM(Java Virtual Machine (Java虛擬機))是如何解決這些問題的?爲了屏蔽掉各種硬件和操作系統的內存訪

原创 CPU多級緩存

CPU多級緩存 Main Memory : 主存 Cache : 高速緩存,數據的讀取和存儲都經過此高速緩存 CPU Core : CPU核心 Bus : 系統總線    CUP Core 與 Cache 之間有一條快速通道,Main M

原创 頭條資訊項目

Velocity模板語法(類似Java語法) $!{ 變量/表達式 } ## 註釋 ## #* 多行註釋 *# for #foreach ($color in $colors) Color$!{foreach.count}/${forea

原创 X的平方根和排列硬幣

X的平方根 https://leetcode-cn.com/problems/sqrtx/ 一個數 x 的開方 sqrt 一定在 0 ~ x 之間,並且滿足 sqrt == x / sqrt 。可以利用二分查找在 0 ~ x 之間查找 s

原创 約瑟夫環問題

問題描述:約瑟夫問題是一個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍,從編號爲k的人開始報數,數到m的那個人出列;他的下一個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人只

原创 多線程Lost Wake-Up Problem

爲什麼wait()方法要放在同步塊中? 這得介紹一個多線程編程裏面臭名昭著的問題"Lost wake-up problem"說起。 這個問題並不是說只在Java語言中會出現,而是會在所有的多線程環境下出現。 假如有兩個線程,一個消費者線程

原创 動態規劃-最大正方形

https://leetcode-cn.com/problems/maximal-square/ 動態規劃,問題轉化成求最大正方形邊長 建立二維矩陣dp[M][N]其中M, N分別爲原二維矩陣的高和寬 矩陣中一點dp[i][j]表示以ma

原创 二叉樹的右視圖

https://leetcode-cn.com/problems/binary-tree-right-side-view/ 這又是一道二叉樹分層的題目,與劍指offer中的分層輸出二叉樹和z字形輸出二叉樹類似。找到每層最後一個節點並加到l

原创 Paxos算法和ZAB協議

Paxos要解決的問題,是分佈式系統中的一致性問題。那麼,到底什麼是“分佈式系統中的一致性問題”呢?在分佈式系統中,爲了保證數據的高可用,通常我們會將數據保留多個副本(replica),這些副本會放置在不同的物理的機器上。副本要保持一致,