《Netty》从零开始学netty源码(四十二)之PoolChunk.runsAvailMap

news2024/10/6 14:35:30

runsAvailMap

PoolChunk中的runsAvailMap属性用于存放可用的run的信息,PoolChunk中每一次分配内存都会更新runsAvailMap中可用的run的起始信息及末尾信息,先看下它的数据结构:

在这里插入图片描述

我们看下它的构造函数是如何赋值的:

在这里插入图片描述

PoolChunk的默认大小为4MB,对应sizeClasses表格中的31,所以array的初始长度为32,初始化mask和maxProbe的值:

在这里插入图片描述

array存放数据的格式为array[index]存放key值,则array[index+1]存放handle值,为了防止array[31]存放key值后没有空闲位置存放handle值,所以mask为30,这样任何值与它取模后都在0~30之间,这样最多array[30]放key,array[31]存放handle值。

假设array[index]存放key值,刚好array[index]已经有数据,则查看array[index+2]是否空闲,有则将key存放,没有则再按相同规则寻找,最多找maxProbe次,如果maxProbe次后还没找到则将array翻倍扩容。

接下来我们看下它的putremove方法
在这里插入图片描述

在这里插入图片描述

通过它的put和remove方法可看出与java原生的HashMap类似,逻辑相对来说更简单。

至此,runsAvailMap分析到此结束。

全文完,如果觉得文章有点意思,不妨点个“赞”或者“在看”吧,您的每一份正反馈都是对三横兰写作的最大肯定,感谢阅读_

每天坚持一点点,每天进步一点点

坚持是日复一日,质变需日积月累

我是三横兰,那个三横的兰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/457640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么MySQL索引更适合B+树而不是二叉树、B树

概述: 在当今社会,程序员内卷非常的严重,如果没有过硬的技术,很难在众多的程序员中脱颖而出,例如,以前问数据库方面的知识,只会问些增删改查语句表面的东西,而如今却要问数据库底层…

【翻译一下官方文档】之uniapp的网络请求

uni.request(OBJECT) 发起网络请求。 参数名类型必填默认值说明平台差异说明urlString是开发者服务器接口地址dataObject/String/ArrayBuffer否请求的参数App 3.3.7 以下不支持 ArrayBuffer 类型headerObject否设置请求的 header,header 中不能设置 RefererApp、H5…

关于链表的题目—leetcode

第一题:删除链表中的指定节点 问题描述: 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 示例 1: 输入: head [4,5,1,9], val 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点…

【redis】缓存预热雪崩穿透击穿

【redis】缓存预热雪崩穿透击穿(上) 文章目录 【redis】缓存预热雪崩穿透击穿(上)前言一、面试题二、缓存预热三、缓存雪崩发生原因预防+解决高可用:多缓存结合: 人民币玩家 四、缓存穿透是什么…

谷歌云端硬盘Drive批量下载大文件或大文件夹的稳定方法

本文介绍在谷歌云端硬盘(Drive)中,快速、稳定下载大文件、文件夹的方法。 在使用谷歌Drive下载文件或文件夹时,我们往往会遇到下载不稳定或失败的情况;在下载较大的文件或文件夹时,这一问题出现的频率更多。…

NLP语义识别在人工智能领域中的应用与前景

自然语言处理(NLP)是人工智能领域中的一个重要分支,它致力于让计算机能够理解并处理人类自然语言。语义识别是NLP中的一个重要技术,它可以使计算机更好地理解人类语言的含义和意图。在本文中,我们将探讨NLP语义识别在人…

4月24号软件更新资讯合集.....

GoFrame v2.4 版本发布,企业级 Golang 开发框架 大家好啊,GoFrame 框架今天发布了 v2.4.0 正式版本啦!👏👏👏👏 该版本最大的亮点在于提供了微服务开发的功能特性、开发工具以及工程脚手架&am…

第三章作业:关系数据库

第三章作业:关系数据库 目录 第三章作业:关系数据库选择题简答题1、关系代数:产生学生成绩表,包括学号、姓名、课程名、学分和成绩。题目代码 2、关系代数:检索选择了课程号为“C2"的学生学号和姓名。题目代码 3、…

月获2万份简历,硕士占比超70%!中欧基金如何破圈打造雇主品牌?

成立于2006年的中欧基金,作为国内首批实现员工持股的基金公司,坚持以人为本,相信优秀的业绩要靠优秀的人才来创造。 因此,中欧基金在完善公司治理机制基础上,实现不仅有敢打硬仗能打胜仗的将才,还有更多不…

Pytorch损失函数

基本用法 criterion LossCriterion() #构造函数有自己的参数loss criterion(x, y) #调用标准时也有参数 1 L1范数损失 L1Loss 计算 output 和 target 之差的绝对值。 torch.nn.L1Loss(reductionmean)参数: reduction-三个值 none: 不使用约简; me…

S32K系列MCU学习介绍

前言 最近因为工作需要,在学习恩智浦的S32K312,开发一款汽车PDU。 一、S32K3系列 1.特点 S32K系列是恩智浦公司于2017年推出的面向汽车电子的微控制器。S32K3 系列包括基于 Arm Cortex-M7 的 MCU,采用单步、双步和锁步内核配置&#xff0…

滴水逆向3期笔记与作业——01汇编

防止OneNote丢失。 海哥牛逼。 01汇编笔记 01进制进制定义10-2进制转换八进制 02数据宽度/逻辑运算数据宽度与存储逻辑运算计算机做加法的本质作业 03通用寄存器_内存读写通用寄存器表通用寄存器图内存读写计算机操作系统位数意义 04内存地址_堆栈寻址公式PUSH指令POP指令作业 …

《稻》念袁老,孙溟㠭先生为纪念袁隆平老先生治印一方

孙溟㠭篆刻作品《稻》 孙溟㠭篆刻作品《稻》 稻穗熟了,袁老走了。溟㠭先生为纪念袁隆平老先生而治印一枚。 拓印左侧禾苗繁茂,稻田里蛙声一片。拓印右侧为袁老的样子,人瘦心厚,顶着烈日,照料自己试验的稻田。袁老一…

3.黑马springboot开发篇自己修改笔记

SpringBoot开发实用篇 ​ KF-1.热部署 ​ 什么是热部署?简单说就是你程序改了,现在要重新启动服务器,嫌麻烦?不用重启,服务器会自己悄悄的把更新后的程序给重新加载一遍,这就是热部署。 ​ 热部署的功能…

[渗透教程]-017-入侵检测与社交网络安全

文章目录 1.入侵检测1.1 入侵检测基本概念1.2 入侵艰难侧系统评估指标1.3 入侵检测基本技术1.4 通用入侵检测框架2.社交网络安全1.入侵检测 1.1 入侵检测基本概念 入侵检测(Intrusion Detection),指对系统的运行状态进行监视,发现各种攻击企图、攻击行为或者攻击结果,以保证…

大神们分享STM32的学习方法

单片机用处这么广,尤其是STM32生态这么火!如何快速上手学习呢? 第一:你要考虑的是,要用STM32实现什么 为什么使用STM32而不是8051? 是因为51的频率太低,无法满足计算需求?是51的管脚太少,无法…

MySQL单表操作

二、数据的新增、修改、删除 1.回顾ishop的数据表 mysql> use ishop; Database changed mysql> show tables; ----------------- | Tables_in_ishop | ----------------- | commodity | | commoditytype | | customer | | order | ----------…

【人工智能】遗传算法

人工智能算法---遗传算法(基础篇) 知识导图:遗传算法(概念)1.初始化种群二进制编码与解码 2.选择操作3.交叉操作4.评估操作5.终止操作 知识导图: 遗传算法(概念) 可以把遗传算法类比…

关于API接口应用

随着互联网技术的发展,API接口已成为众多应用程序开发中的必备工具,它不仅方便了开发者进行应用程序开发,也为应用程序提供了更多的功能和服务。本文将介绍API接口的概念和应用,以及API接口的优势和未来趋势。 一、什么是API接口…

Android 系统架构大图

android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。 1.应用程序 Android会同一系列核心应用程序包一起发布,该应用…