自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (1)
  • 问答 (30)
  • 收藏
  • 关注

原创 Netty源码分析-PoolChunk

上图中是一个默认大小的chunk, 由2048个page组成了一个chunk,一个page的大小为8192, chunk之上有11层节点,最后一层节点数与page数量相等。每次内存分配需要保证内存的连续性,这样才能简单的操作分配到的内存,因此这里构造了一颗完整的平衡二叉树,所有子节点的管理的内存也属于其父节点。如果我们想获取一个8K的内存,则只需在第11层找一个可用节点...

2019-10-28 21:55:28 479

原创 Netty源码分析-PoolArena

1、PoolChunk:维护一段连续内存,并负责内存块分配与回收,其中比较重要的两个概念:page:可分配的最小内存块单位;chunk:page的集合;2、PoolSubpage:将page分为更小的块进行维护;3、PoolChunkList:维护多个PoolChunk的生命周期。多个PoolChunkList也会形成一个list,方便内存的管理。最终由PoolArena对这一系列类进...

2019-10-28 13:37:41 348

原创 Netty源码分析-PoolChunkList

前面我们介绍了PoolChunk以及针对page的更细粒度的PoolSubpage,其实在chunk的上层还有一个管理类:PoolChunkList,PoolChunkList负责管理多个chunk的生命周期,在此基础上对内存分配进行进一步的优化,那它是如何去做的呢?我们来简单的了解下,先看看它的几个属性: //arena,整个内存池管理的大管家 private final P...

2019-10-27 22:34:11 360

原创 Netty源码分析-内存模型PoolSubpage

PoolSubpage源码分析-这个方法获取一个long表示的64个比特位置是否还有空余空间 private int findNextAvail() { // 没有明确的可用位置时则挨个查找 final long[] bitmap = this.bitmap; final int bitmapLength = this...

2019-10-27 16:38:08 483

原创 Netty使用技巧-使用Openssl加密传输

JDK原生使用数字证书和PKCS#8格式的私钥完成SSL引擎的初始化。#使用JDK的SslEngine引擎初始化SslContentFile certChainFile=new File("/home/certs/nginx.crt");File keyFile=new File("/home/certs/pkcs8_rsa_private_key.pem");SslConte...

2019-10-22 17:39:57 4682 1

原创 Netty源码分析-Unsafe

Unsafe是JAVA提供偏底层的一个工具类,提供堆外内存管理,CAS操作,线程调度等功能。Unsafe这个类不能直接获取,需要用反射获取其对象。 //反射拿到Unsafe对象 private static Unsafe reflectGetUnsafe() { try { Field field = Unsafe.class....

2019-10-16 18:06:26 322

原创 Netty源码分析-PlatformDependent内存管理

PlatformDependent类当中的常量,定义了允许使用的堆外内存最大值,该值可以通过-XX:MaxDirectMemorySize=2G设置。private static final long MAX_DIRECT_MEMORY = maxDirectMemory0();在netty中,如果使用了堆外内存,Netty会进行统计,如果超过最大限制会抛出异常。 ...

2019-10-15 17:41:46 1904

原创 Netty源码分析-NioEventLoop(二)

NioEventLoop源码分析。EventLoop的本质:内部一个线程,一个有序队列存储,线程源源不断的运行队列中的任务。register方法把java-nio的channel注册到selector上面。 //把JAVA底层Channel注册到selector上 public void register(final SelectableChannel ch, f...

2019-10-14 14:45:23 301

原创 Netty源码分析-MultithreadEventExecutorGroup

MultithreadEventExecutorGrouppublic abstract class MultithreadEventExecutorGroup extends AbstractEventExecutorGroup { private final EventExecutor[] children; private final Set<Event...

2019-10-12 16:12:08 944

原创 Netty源码分析-SingleThreadEventExecutor

public abstract class SingleThreadEventExecutor extends AbstractScheduledEventExecutor implements OrderedEventExecutor { static final int DEFAULT_MAX_PENDING_EXECUTOR_TASKS = Math.max(16...

2019-10-12 15:13:51 1933

原创 Netty源码分析-GlobalEventExecutor

GlobalEventExecutor源码分析,GlobalEventExecutor内部只有一个线程执行队列中的任务,如果队列超过1秒没有新的任务,那么线程会结束, 此时如果再有新的任务加入,则会创建新的线程继续执行。package io.netty.util.concurrent;import io.netty.util.internal.logging.InternalLo...

2019-10-11 14:23:30 1319

原创 Netty源码分析-AbstractScheduledEventExecutor

AbstractScheduledEventExecutor源码分析public abstract class AbstractScheduledEventExecutor extends AbstractEventExecutor { //比较器-根据ScheduledFutureTask的到期时间比较大小 //到期时间长的大 private static f...

2019-10-10 15:41:21 521

原创 Netty源码分析-DefaultPriorityQueue

DefaultPriorityQueue保证队列元素的顺序性,在add和poll元素时会移动元素,根据元素大小重新排列数据在元素中的位置,保证元素的顺序性。package io.netty.util.internal;import java.util.AbstractQueue;import java.util.Arrays;import java.util.Comparat...

2019-10-09 17:39:17 621

原创 Netty源码分析-ScheduledFutureTask

ScheduledFutureTask//Netty当中的异步任务,把逻辑封装到此类异步完成后获取结果final class ScheduledFutureTask<V> extends PromiseTask<V> implements ScheduledFuture<V>, PriorityQueueNode { //任务ID 自增,唯一...

2019-10-08 20:48:35 1267

原创 Netty源码分析-InternalThreadLocalMap

InternalThreadLocalMap源码分析package io.netty.util.internal;import io.netty.util.concurrent.FastThreadLocal;import io.netty.util.concurrent.FastThreadLocalThread;import io.netty.util.internal.l...

2019-10-07 15:26:29 929 1

原创 Netty源码分析-FastThreadLocalRunnable

FastThreadLocalRunnable源码分析package io.netty.util.concurrent;import io.netty.util.internal.ObjectUtil;final class FastThreadLocalRunnable implements Runnable { private final Runnable runnab...

2019-10-07 15:06:45 1321

原创 Netty源码分析-FastThreadLocalThread

FastThreadLocalThread源码分析package io.netty.util.concurrent;import io.netty.util.internal.InternalThreadLocalMap;import io.netty.util.internal.UnstableApi;//如果传入Rannable都使用FastThreadLocalRunnab...

2019-10-07 10:50:36 324

原创 Netty源码分析-PromiseTask

PromiseTask源码分析package io.netty.util.concurrent;import java.util.concurrent.Callable;import java.util.concurrent.RunnableFuture;//封装一个任务,该类的成功与失败状态只能由执行结果决定,不能通过外部设置class PromiseTask<V...

2019-10-06 20:56:37 462

原创 Netty源码分析-AbstractExecutorService

Netty源码分析-AbstractExecutorService,这个类是JDK里面并发包内的类,在阅读Netty源码时看到。package java.util.concurrent;import java.util.*;public abstract class AbstractExecutorService implements ExecutorService { ...

2019-10-06 18:47:32 299

原创 Netty源码分析-ChannelFuture的注意事项

在Netty当中所有的IO操作全部是异步的,也就是说调用任何方法都会立即返回,而不能保证所请求的I / O操作在调用结束时已完成,想下面的方法,像对端发送一个消息,方法会立即返回,但是消息是异步发送的,你不知道消息最后的具体发送是成功了还是失败了。ctx.channel().writeAndFlusf();该方法返回一个ChannelFuture实力,通过它设置回调函数来接收操作的执行情...

2019-10-04 12:31:45 634

原创 Netty源码分析-DefaultPromise

Netty-Future基类,所有IO操作都返回该实现或其子类DefaultPromise源码分析://Netty-Future基类,所有IO操作都返回该实现或其子类public class DefaultPromise<V> extends AbstractFuture<V> implements Promise<V> { private...

2019-10-03 22:53:47 907

原创 Netty源码分析-DefaultFutureListeners

Netty对内存使用做了极大的优化,一个存储Listeners的容器都没有直接使用List,而是自定义实现,每次扩容2个,因为Listeners每次使用时并不会设置太多,使用List会浪费一点点内存。package io.netty.util.concurrent;import java.util.EventListener;//Netty所有IO操作都是异步的,通过设置回...

2019-10-03 15:08:34 384

Jquery框架 有文档

Jquery1.3目前流行的框架.有中文文档。

2009-06-20

FreeMarker 技术应用在哪些场景

2014-02-07

Spring 与 Cglib代理的诡异问题

2013-10-28

谁能真正整明白java volatile 关键字? 一知半解的莫入!

2013-10-10

JDK动态代理 CGLIB动态代理 AspectJ静态代理的区别是什么?

2013-10-06

Spring3.2MVC ContextLoaderListener DispatcherServlet 加载冲突

2013-08-19

log4j如何配置日志,就是想看哪个就看哪个

2013-08-11

Fiddler 如何设置拦截代码发起的HTTP请求

2013-07-01

Tomcat7.0.32 Filter拦截不到 @<%@ include file='xxx.jsp'%>请求

2013-05-17

java中 volatile关键字具体什么作用

2013-05-12

在Spring中 BeanFactory与 ApplicationContext 俩个接口的区别是什么

2013-05-09

请教 Aspose.Cells for Java 自定义excel模板问题

2013-04-28

java如何获取 request payload 里面的数据

2013-04-13

Jackson 序列化 如何让为NULL的属性不参与序列化

2013-03-29

springmvc @ResponseBody日期格式化

2013-03-16

Json_lib 序列化对象 如果属性为null 不序列化

2013-03-14

Hibernate 查看SQL语句

2013-02-23

ExtJs 实现类似JqGrid的搜索功能,求能人指点

2013-02-18

Jackson Json序列化的问题

2013-01-25

java自动识别图片固定位置的编号

2013-01-09

请问console.log([]==![]);的输出结果,原理是什么?

2013-01-01

ExtJs JsonStore 配置问题

2012-12-07

javaScript 回调函数问题

2012-12-01

spring3 与 hibernate3.2集成时的问题,个人感觉配置没什么问题好像是jar从冲突

2012-11-19

为什么往匿名类的方法中传参数必须定义长final的

2012-11-16

JsonObject 解析java对象的问题

2012-11-14

Hibernate4.1.7 配置proxool 问题

2012-11-10

怎么样能让tomcat6 在死掉的时候自动重启

2012-09-28

jquery validate 让普通按钮 代替 submit 来激发表单验证

2012-09-25

mybatis-3.1.1的配置文件下载地址

2012-09-10

关于ibaits返回map缓存问题

2012-09-07

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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