原创 【注意點】netty-> 作用域 channel和context
這兩個擁有很多同名方法,主要差異如下 channel的操作會經過左右的hanndle,context只是從自己這個handle往後操作 context的事件流更短,所以context的性能會更好一些
原创 netty->[組件] ChannelPipeline的addLast方法解析
隨處可見的addLast方法,分兩種情況。channel未註冊和channel已註冊 public final ChannelPipeline addLast(EventExecutorGroup group, String na
原创 netty->[組件] channelHandlerContext.attr和channel.attr對比
這兩個都是attributeMap的實現 4.1開始作用域相同,不存在每個handle中存在一個map channel中也存在一個單獨的map 具體的實現就是context其實是調用對應的channel的attr方法 666
原创 【入門】NIO標準範式
server package com.deppyu.nio; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerS
原创 【入門】netty範式-client&server
server package com.deppyu.netty.demo.server; import com.deppyu.netty.demo.server.websocket.WebSocketInitializer; impo
原创 netty-> 常用編解碼處理器
簡述 分類入棧處理器(channelInboundHandler)&出棧處理器(channelOutboundHandler) 裏面全都是回調方法,方法被觸發的時候,會調用對應的實現。常見的編解碼器有encode&decode net
原创 【入門】netty->byteBuf「非池化堆內內存」
結構圖和nio有差異 同時有讀寫指針,寫讀不用噁心的切換了。 唯一注意的就是讀的時候有相對方法(readBytes)和絕對方法(getBytes),相對方法會改變讀遊標,絕對方法則不會 創建byteBuf實例 ByteBuf bu
原创 netty-> [組件] future promise簡述
1.netty自己也定義了future 繼承自jdk的future,更加實用點吧(主要是在完成的時候 可以添加listener<觀察者模式>) jdk的只能主動的調用對應的方法去判斷是否執行完畢 2.promise是future的變種
原创 【入門】nio->byteBuffer「堆內內存爲例」
初始化實例 //單位大小是byte ByteBuffer buffer = ByteBuffer.allocate(10240); System.out.println("buffer = " + buffer); reset方法演
原创 redis基於隊列實現的流控模型
前言 本文實現中使用的evalsha執行的lua,所以先描述下redis中eval和evalsha使用區別 eval 基本語法如下: redis 127.0.0.1:6379> EVAL script numkeys key [
原创 interrupt的三個方法區分
thread的三個interrupt方法名比較類似,業務代碼中寫的不多,經常會忘記 三個的差異。看源碼的時候 就會錯亂。 interrupt簡述 interrupt()方法只是改變中斷狀態,不會中斷一個正在運行的線程。需要用戶
原创 幾個不錯的面試題
1.java的一些類爲什麼要實現序列化 2.abstract class和interface的區別 (is-a like-a 具體說明下) 3.談談java的放射機制 4.請說一下java中爲什麼要引入內部類?還有匿名內部類? 5.
原创 redhat忘記root密碼
自己VM虛擬機裏安裝redhat linux root密碼忘了,剛開始想重新安裝,但是後來想到還有linux有一個single模式,使用single可以直接進入字符界面,然後修改; 啓動vm虛擬機,啓動linux系統; 進
原创 斐波那契(面向對象方法實現和規律實現兩種方法)
準備年後跳槽 找了些簡單的面試題 練練手 import java.util.ArrayList;import java.util.List;public class 斐波拉契 {public static void main(Stri
原创 寫個鏈表玩玩
public class 約瑟夫 { public static void main(String[] args) { NodeLink nl = new NodeLink(10); Node n