自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 吃透Netty源码系列二十八之PoolThreadCache二

吃透Netty源码系列二十八之PoolThreadCache二PoolArena的freePoolThreadCache的addcacheMemoryRegionCache的addPoolThreadCache的trimMemoryRegionCache的trimfreefreeEntryPool...

2020-02-19 22:14:40

阅读数 4

评论数 0

原创 吃透Netty源码系列二十七之PoolThreadCache一

吃透Netty源码系列二十七之PoolThreadLocalCachePoolThreadLocalCache PoolThreadLocalCache

2020-02-19 22:14:04

阅读数 7

评论数 0

原创 吃透Netty源码系列二十六之FastThreadLocal二

吃透Netty源码系列二十六之FastThreadLocal二FastThreadLocal构造方法setsetKnownNotUnsetaddToVariablesToRemoveremoveremoveFromVariablesToRemovegetinitializegetIfExistsd...

2020-02-18 22:54:46

阅读数 7

评论数 0

原创 吃透Netty源码系列二十五之FastThreadLocal一

吃透Netty源码系列二十五之池化内存分配六PoolChunk的initBuf PoolChunk的initBuf

2020-02-18 22:54:08

阅读数 4

评论数 0

原创 吃透Netty源码系列二十四之池化内存分配五

吃透Netty源码系列二十四之池化内存分配五PoolChunk的initBuf PoolChunk的initBuf 上一篇我们讲到子页的内存分配,讲到了我们获取了handle,今天将获取之后做什么。 我们可以看到子页分配的都是那么大的数,原因上篇已经讲过了。后面会有获取nioBuffer,就是在...

2020-02-17 21:19:43

阅读数 39

评论数 0

原创 吃透Netty源码系列二十三之池化内存分配四

吃透Netty源码系列二十三之池化内存分配四PoolSubpage的allocategetNextAvailfindNextAvailfindNextAvail0removeFromPooltoHandle重点以及为什么要加上0x4000000000000000L PoolSubpage的allo...

2020-02-17 21:19:07

阅读数 60

评论数 0

原创 吃透Netty源码系列二十二之池化内存分配三

吃透Netty源码系列二十二之池化内存分配三PoolChunk的allocateSubpage PoolChunk的allocateSubpage

2020-02-16 22:48:23

阅读数 8

评论数 0

原创 吃透Netty源码系列二十一之池化内存分配二

吃透Netty源码系列二十一之池化内存分配二PoolChunk的newChunkPoolChunk的一些属性PoolChunk构造方法newSubpageArray创建化子页数组allocate分配空间allocateRun大于页大小的分配,即Normal类型log2高效的取出2的次数深度d到底怎...

2020-02-16 22:46:38

阅读数 6

评论数 0

原创 吃透Netty源码系列二十之池化内存分配一

吃透Netty源码系列二十之创建PoolArena简介PoolArena构造函数位运算细节1位运算细节2newSubpagePoolArraynewSubpagePoolHead(int pageSize)按chunk的内存使用率进行分组 PoolArena构造函数 上篇讲到在PooledByte...

2020-02-16 22:46:05

阅读数 15

评论数 0

原创 吃透Netty源码系列十九之池化内存分配预备知识

吃透Netty源码系列十九之PooledByteBufAllocator介绍前言PooledByteBufAllocatorArena区域Chunk块Page页内存规格分类TinySmallNormalHuge图示主要变量主要变量初始化DEFAULT_PAGE_SIZE(io.netty.allo...

2020-02-15 22:46:53

阅读数 7

评论数 0

原创 吃透Netty源码系列十八之PooledByteBuf预备知识jemalloc简介

吃透Netty源码系列十八之PooledByteBuf预备知识jemallocjemalloc内存分配算法简介解决的问题更加细粒度的分配 jemalloc内存分配算法简介 为什么要讲这个呢,因为netty的池化内存分配就是这个的改进版,要想更好的了解改进版,当然要先知道他的原版是怎么样的啦,要知道...

2020-02-13 23:21:04

阅读数 8

评论数 0

原创 吃透Netty源码系列十七之UnpooledDirectByteBuf

吃透Netty源码系列十七之UnpooledDirectByteBufUnpooledDirectByteBufCLEANERCleanerJava6freeDirectBufferCleanerJava9freeDirectBufferUnsafe的invokeCleaner设置和获取ByteB...

2020-02-11 22:39:19

阅读数 12

评论数 0

原创 吃透Netty源码系列十六之UnpooledHeapByteBuf

吃透Netty源码系列十六之ByteBuf系列二ByteBuf简单介绍 ByteBuf简单介绍

2020-02-11 22:38:50

阅读数 6

评论数 0

原创 吃透Netty源码系列十四之DirectByteBuffer分配释放原理

吃透Netty源码系列十三之DirectByteBuffer分配释放原理简单介绍简单的例子DirectByteBuffer内存页对齐Bits.reserveMemoryBits.tryReserveMemoryUNSAFE.allocateMemoryDeallocatorUNSAFE.freeM...

2020-02-10 22:01:58

阅读数 7

评论数 0

原创 吃透Netty源码系列十五之ByteBuf和引用计数

吃透Netty源码系列十三之ByteBuf详解简单介绍一些特定的操作discardReadBytesclearByteBufAllocator 简单介绍 一个接口,但是有很多方法,可以理解成一个缓冲区数组,有一些操作的索引,比如读索引readerIndex表示从这个索引开始读,写索引writerI...

2020-02-10 21:59:51

阅读数 7

评论数 0

原创 吃透Netty源码系列十三之ChannelOutboundBuffer详解

吃透Netty源码系列十三之ChannelOutboundBuffer详解简单介绍内部类Entry重要属性decrementPendingOutboundBytessetWritablefireChannelWritabilityChangedtotalcurrentcurrentProgress...

2020-02-06 22:32:01

阅读数 9

评论数 0

原创 吃透Netty源码系列十二之NioSocketChannelUnsafe详细介绍

吃透Netty源码系列十二之管道NioSocketChannelUnsafe详细介绍简单介绍write(Object msg, ChannelPromise promise)filterOutboundMessage(Object msg)AbstractNioChannel的newDirectB...

2020-02-05 21:55:46

阅读数 13

评论数 0

原创 吃透Netty源码系列十一之管道DefaultChannelPipeline详细介绍三

吃透Netty源码系列十一之管道DefaultChannelPipeline详细介绍三TailContext的作用出站操作AbstractChannelHandlerContext的write(Object msg)AbstractChannelHandlerContext的invokeWrite...

2020-02-05 21:55:18

阅读数 10

评论数 0

原创 吃透Netty源码系列十之管道DefaultChannelPipeline详细介绍二

吃透Netty源码系列十之管道DefaultChannelPipeline详细介绍二HeadContext的作用构造方法channelRegisteredchannelUnregisteredchannelActivereadIfIsAutoReadchannelReadComplete Head...

2020-02-04 22:37:18

阅读数 10

评论数 0

原创 吃透Netty源码系列九之管道DefaultChannelPipeline详细介绍一

吃透Netty源码系列九之管道DefaultChannelPipeline详细介绍一一些重要属性构造方法一些常见的方法创建通道上下文头添加处理器addFirstaddFirst0添加到双向链表中callHandlerCallbackLater延迟触发HandlerAddedcallHandlerA...

2020-02-04 22:36:57

阅读数 8

评论数 0

原创 吃透Netty源码系列八之管道ChannelPipeline

图解Netty源码系列八之管道ChannelPipelineworker组注册NioSocketChannel worker组注册NioSocketChannel

2020-02-03 21:27:30

阅读数 77

评论数 0

原创 吃透Netty源码系列七之worker组注册NioSocketChannel

图解Netty源码系列七worker组注册NioSocketChannel读取消息doReadByteswriteBytessetBytesinternalNioBuffer_internalNioBufferallocHandle.lastBytesRead(doReadBytes(byteBu...

2020-02-03 21:27:10

阅读数 67

评论数 0

原创 吃透Netty源码系列六之ServerBootstrapAcceptor分发

其实内部还是调用了selector.select(),这个selector已经被包装成SelectedSelectionKeySetSelector也是继承了Selector抽象类的 private int select(long deadlineNanos) throws IOExcep...

2020-02-03 21:26:40

阅读数 62

评论数 0

原创 NIO源码系列之Selector史上最详细分析三

NIO源码系列之Selector史上最详细分析三选择器注册serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);findKey(Selector sel)register(AbstractSelectableChannel c...

2020-02-03 21:24:44

阅读数 106

评论数 0

原创 NIO源码系列之Selector史上最详细分析二

NIO源码系列之Selector史上最详细分析二windows下的非阻塞设置windows下的selectpollAddressLiuux下的Epoll总结 windows下的非阻塞设置 在NIO里面,我们设置一般都会用非阻塞,也就是这样设置erverSocketChannel.configure...

2020-02-03 21:24:05

阅读数 68

评论数 0

原创 NIO源码系列之Selector史上最详细分析一

NIO源码系列之Selector史上最详细分析Linux里的select函数 Linux里的select函数 在讲NIO里的Selector之前,我觉得有必要先有预先的知识铺垫,否则很难理解NIO的Selector在做什么。 所以打算先讲下Linux的select,我们可以在Linux中用命令ma...

2020-02-03 21:23:20

阅读数 101

评论数 0

原创 吃透Netty源码系列五之runAllTasks细节

图解Netty源码系列五新启动的线程的作用执行NioEventLoop的run方法NioEventLoop. select()NioEventLoop. processSelectedKeys()NioEventLoop. runAllTasks(long timeoutNanos) 新启动的线程...

2020-01-22 21:40:35

阅读数 21

评论数 0

原创 NIO源码系列之Channel

NIO与Netty源码系列之ChannelChannel通道NetworkChannelSelectableChannelServerSocketChannel服务器简单例子ServerSocketChannel serverSocketChannel = ServerSocketChannel....

2020-01-21 22:13:39

阅读数 31

评论数 0

原创 NIO源码系列之Buffer

NIO与Netty源码系列一Buffer基本属性基本方法positionlimitmarkresetclearflipremaininghasRemaining子类IntBufferallocateputgetwrap(int[] array)wrap(int[] array, int offse...

2020-01-21 22:13:01

阅读数 30

评论数 0

原创 吃透Netty源码系列四之NioEventLoop

Netty源码深度解析系列四向bossGroup里注册通道doBind0NioEventLoop. run()NioEventLoop. select()NioEventLoop. processSelectedKeys()NioEventLoop. runAllTasks(long timeou...

2020-01-21 22:08:38

阅读数 26

评论数 0

原创 吃透Netty源码系列三之bossGroup注册通道

Netty源码深度解析系列三向bossGroup里注册通道 向bossGroup里注册通道 我们接着上篇继续,接下去就是注册通道了ChannelFuture regFuture = config().group().register(channel);: @Override pub...

2020-01-21 22:07:39

阅读数 62

评论数 0

原创 吃透Netty源码系列二之ServerBootstrap

Netty源码深度解析系列二启动器ServerBootstrap关键的binddoBind通道的创建和初始化initAndRegister实例化NioServerSocketChannelDefaultChannelPipeline初始化通道init(channel)关键点addLast创建`Ch...

2020-01-21 22:07:15

阅读数 39

评论数 0

原创 吃透Netty源码系列一之NioEventLoopGroup

Netty源码深度解析系列一前言Netty的Reactor模式 前言 netty更新的是快,最新发布版本已经是4.1.45.Final了,以前有学过netty,觉得学的还不够深入,这次打算从源码级别去更加深入的理解内部机制。我不想介绍太多关于netty是什么,怎么用,我更想介绍一下原理,这样才能更...

2020-01-21 22:05:52

阅读数 47

评论数 0

原创 CAS原子操作底层原理

CAS原子操作史上最底层原理抢红包的问题compareAndSetobjectFieldOffsetcompareAndSetInt 抢红包的问题 本篇我只想讲这一个方法,因为其他的CAS操作类似,只要把这个搞懂了,其他的就不是问题。举个最简单的例子,1000个线程要去修改一个值,但是这个值只能被...

2020-01-14 19:58:26

阅读数 18

评论数 0

原创 ThreadPoolExecutor原理详细解读二

ThreadPoolExecutor原理详细解读二构造器关闭shutdown修改状态advanceRunState中断空闲的线程interruptIdleWorkers停止shutdownNow中断所有线程interruptWorkers清空队列并返回任务drainQueue超时等待终止await...

2020-01-14 19:57:38

阅读数 29

评论数 0

原创 ThreadPoolExecutor原理详细解读一

ThreadPoolExecutor原理详细解读一执行任务execute(Runnable command)添加线程addWorker(Runnable firstTask, boolean core)添加线程失败addWorkerFailed(Worker w)尝试终止tryTerminate具...

2020-01-14 19:57:00

阅读数 30

评论数 0

原创 ThreadPoolExecutor原理预备知识

ThreadPoolExecutor原理预备知识为什么要有线程池Executor又是什么ThreadPoolExecutor的基本信息基本服务流程状态一些问题核心线程或者队伍满了怎么办线程哪里来线程数量的限制 为什么要有线程池 首先先说下为什么要使用线程池,其实就是这个池子有什么好处,解决我们什么...

2020-01-14 19:56:27

阅读数 22

评论数 0

原创 ReentrantLock和AQS源码解读系列五

ReentrantLock和AQS源码解读系列五读写锁读写锁的结构ReentrantReadWriteLock构造方法WriteLockReadLockNonfairSyncFairSyncSyncHoldCounterThreadLocalHoldCounterwriteLock.lock()t...

2020-01-10 20:54:24

阅读数 43

评论数 0

原创 ReentrantLock和AQS源码解读系列四

ReentrantLock和AQS源码解读系列四共享锁CountDownLatchCountDownLatch构造方法awaittryAcquireShareddoAcquireSharedInterruptibly 共享锁 以CountDownLatch为例子来讲比较容易理解,我们先来看个例子,...

2020-01-10 20:53:51

阅读数 59

评论数 0

原创 ReentrantLock和AQS源码解读系列三

ReentrantLock和AQS源码解读系列三locklockInterruptiblytryLocktryLock(long timeout, TimeUnit unit) lock 这个方法是在获取锁的过程中不会响应中断,也不会退出,要么阻塞,要么继续获取锁,直到成功获取了才,如果期间有中断...

2020-01-10 20:53:21

阅读数 56

评论数 0

提示
确定要删除当前文章?
取消 删除