原创 線程池的丟棄策略

四種策略 使用CallerRunsPolicy【主線程參與任務執行】 DiscardOldestPolicy【FIFO】 DiscardPolicy【丟棄沒異常】 AbortPolicy【丟棄拋異常】   默認策略 private sta

原创 tomcat入門介紹一

tomcat是一款基於servlet規範開發的應用服務器。(http服務器+servlet容器)   概述 整體架構包含兩個核心組建 連接器和容器。連接器對外 處理連接,容器對內處理業務請求 連接器使用ProtocalHandler接口封

原创 基於redis的分佈式鎖實現【換毛名字】

設計注意點 1.鎖要有超時時間 setnx 加時間 2.鎖要釋放 finally 3.藉助threadlocal避免線程錯亂解鎖   public class DistributedLockService { private

原创 tomcat學習筆記二

本章介紹tomcat的啓動流程的設計思想(組合/觀察者/模版) 先看下一個請求在tomcat的流轉過程(紅線部分) 組建按server service container是大到小,連接器和容器是外到內。初始化的順序是反過來的 tomca

原创 I/O模型&&零拷貝簡述

概要 用戶發起IO操作,一般就是兩個動作。 內核把網卡/磁盤的內容搬到內核空間(動作A),再把內核空間數據搬到用戶空間(動作B)。   主要有五種模型 同步阻塞 這個比較簡單,就是用戶發起操作後 靜靜的等待AB完成。完全block住

原创 【java基礎->常見線程通訊方法】

1.LockSupport LockSupport.park(); LockSupport.unPark(Thread t); park和unpark次數問題,可以先調用unpark再調用park,但是先unpark N次只會生效一次  

原创 【入門】netty 服務端離線檢測handler

服務端一般會記錄一個ChannelGroup, 這是一個保存與服務端建立連接的channel的集合 加入元素時機-        時機是handlerAdded事件被觸發 移除元素時機-       斷開連接handlerRemoved,

原创 netty1 -> init「channel和channelPipeline的生成」

1.channel的生成時機 channel可以簡單理解成網絡連接對象 一般channel會在doBind和doConnect的時候生成,具體的可以跟一下initAndRegister方法 具體生成比較簡單:使用了反射工廠的 newIns

原创 黏包&拆包處理

黏包&拆包處理 netty提供了很多frame的編解碼器 本次解析LengthFieldBaseFrameDecoder   黏包出現 客戶端發了10條數句,server端有時候 只打印一次,10條數據被融合了 public class

原创 netty2-> 扒一扒register

入口還是initAndRegister  final ChannelFuture initAndRegister() { Channel channel = null; try {

原创 [java基礎-hashMap] capacity/算槽位等有意思的操作

精妙的位移運算 初始化槽位大小,返回比cap大的最小2的N次方 static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1

原创 netty->[組件] ContantPool 以ChannelOption爲例

看看init方法,裏面有兩個對象 ChannelOption和Attribute void init(Channel channel) throws Exception { ChannelPipeline p =

原创 [mysql基礎]B+樹淺析

先拋幾個簡單問題吧 1.爲啥不用二叉樹,爲啥不用紅黑樹,爲啥不用B樹 2.爲啥正常情況下用B+ 不用hash 3.爲啥聚類索引推薦使用 自增的數字作爲主鍵 簡單說下第三個吧,uuid之類的對比起來性能比數字差,不是遞增的,後面的字符串可能

原创 【java基礎 > 鎖升級】

圍繞synchronize關鍵字說下三個鎖升級   無鎖 -> 偏向鎖 -> 輕量級鎖 -> 重量級鎖   1,Mark Word 2,指向類的指針 3,數組長度(只有數組對象纔有) 鎖的信息都是放在對象頭的mark word裏面的,具

原创 【入門】netty 服務端管理所有的channel 組件【ChannelGroup】&離線檢測handler

ChannelGroup 一個所有建立連接的channel的集合 加入元素-        時機是handlerAdded事件被觸發   移除元素-       斷開連接handlerRemoved,不過無需手動的移除   注意點