redis的List为什么用ziplist和quicklist
redis的List为什么用ziplist和quicklist
压缩列表(ziplist) 是一种节省内存的数据结构,最早是 Redis 中为了减少内存开销而引入的一种顺序存储结构。它不是标准库里的内容,而是某些底层系统(比如 Redis)在特定场景下的手动实现。
你可以把它理解为一个连续内存块中,紧凑地存储多个数据项(字符串或整数)的结构。
压缩列表的应用场景(以 Redis 为例)
在 Redis 中,压缩列表常被用于:
-
存储 小的 list 类型(如 list、hash、set 的底层实现)。
-
当使用
lpush
、rpush
插入少量数据时,Redis 会自动用压缩列表来表示这些数据。 -
例如:
lpush mylist a b c
如果
mylist
很小,Redis 可能会用 ziplist 来存储它,而不是链表
适合的场景:
- 元素数量少(比如不到 512 个)。
- 每个元素的值比较小(比如小于 64 字节)。
为什么要有压缩列表?
- 普通的链表结构虽然插入删除方便,但每个节点要额外的内存(如指针、元数据等)。
- 压缩列表用一个连续内存块来存储多个数据节点,没有额外指针,节省内存
压缩列表是一个连续内存块,由以下几个部分组成:
+--------------+--------------+--------------+----+--------+
| zlbytes(4B) | zltail(4B) | zllen(2B) | e1 | ... |
+--------------+--------------+--------------+----+--------+
zlbytes
:整个压缩列表占用的字节数。zltail
:最后一个节点的偏移量,方便从尾部快速访问。zllen
:压缩列表中的节点个数(最大 65535 个)。entry1, entry2, ..., entryN
:每个元素(entry),包括了:- 前一个 entry 的长度(用于反向遍历)。
- 当前元素的数据长度。
- 当前数据本身(字符串或整数)。
0xFF
:结束标志,表示列表结束。
压缩列表的特点
特点 | 说明 |
---|---|
连续内存 | 所有元素在内存中是紧凑排列 |
内存节省 | 没有指针,结构紧凑,空间利用率高 |
难于修改 | 插入或删除时需要整体移动元素,性能差于链表 |
顺序遍历快 | 因为是连续内存,顺序访问性能高 |
压缩列表 vs 可变数组:核心区别
特点 | 压缩列表(ziplist) | 可变数组(如 Java ArrayList / C++ vector) |
---|---|---|
目标 | 极致压缩内存 | 提供通用动态数组操作 |
结构 | 非等长数据,连续紧凑存储 | 每个元素等长或定长引用,结构简单 |
开销 | 几乎无额外开销 | 有指针或对象引用(特别在 Java) |
性能关注点 | 减少内存占用 | 提供高效随机访问 |
数据类型 | 自定义变长结构 | 一般是统一类型(如 int[], String[]) |
操作方式 | 顺序遍历/顺序插入较快 | 随机访问快,插入删除相对慢 |
1. 【内存效率】——压缩列表完胜
Java 的 ArrayList 或 C++ 的 vector 是为“通用场景”设计的:
- 每个元素在 ArrayList 中都是一个对象引用(Java 里是
String
、Integer
等包装类)。 - 存
10000
个"a"
字符串,实际上是10000
个指针 +10000
个 String 对象,严重浪费内存。
而压缩列表:
- 是二进制内存块,直接连续存储数据内容(无指针、无对象)。
- Redis 中
ziplist
存的字符串"a"
可能只用 1-2 个字节。 - 节省内存效果非常明显,尤其对大量小数据。
2. 【数据结构灵活性】——ziplist 更自由
压缩列表允许每个元素长度不同,不像数组那样必须等长或类型一致。
举个例子:
["a", "abc", 12345678, "x"]
- 压缩列表每个 entry 都有自己的长度描述(灵活、压缩)。
- 数组只能是统一类型(Java 中要么全是 String,要么全是 int)。
3. 【操作性能】——ArrayList 更方便,但不节省
可变数组是通用型的,优点在于:
- 插入、删除逻辑简单。
- 开发者操作方便(
get(i)
、set(i)
快)。
但压缩列表为了压缩内存,不惜:
- 每次插入可能要整体 memmove。
- 删除时要更新前一个长度字段。
- 某些情况还需要“链式更新”(如 prevlen 变化导致后续 entry 移位)。
所以压缩列表牺牲了操作性能,换取空间节省。
为什么 ziplist 不适合大数据或频繁增删?
1. 插入删除效率差(因为是连续内存)
压缩列表是连续的内存块,如果在中间插入一个新元素,会导致:
- 整体 memmove
- 后续所有 entry 的
prevlen
都要更新(可能出现“连锁更新效应”)
这在大数据场景下非常不划算。
2. 每个 entry 编码复杂
每个节点结构是变长的,读取/写入开销比链表大,处理大数据不划算。
3. 空间不够时需要重新分配
连续内存意味着一旦空间不够,需要 realloc
整个块,效率也不如链表的逐块扩展。
quicklist
quicklist 是 Redis 在 3.2 版本之后引入的一种 list 底层结构,它是:
一个由多个 ziplist 组成的 双向链表
简要表示为:
quicklist = ziplist1 <-> ziplist2 <-> ziplist3 <-> ...
每个节点是一个 ziplist,多个 ziplist 组成链表。
问题 | ziplist | linkedlist |
---|---|---|
插入/删除效率 | 差(连续内存) | 高(链式结构) |
内存占用 | 小(紧凑) | 大(节点 + 指针) |
于是 Redis 设计了 quicklist,想达到:
既能节省内存,又支持高效的插入/删除
每个 quicklist 节点(quicklistNode
)结构如下:
+--------------+-------------+--------------+
| prev pointer | ziplist ptr | next pointer |
+--------------+-------------+--------------+
quicklist
是整个链表的头部结构,指向若干quicklistNode
- 每个
quicklistNode
内部包含一个压缩列表(ziplist) - 双向链表结构,支持正向和反向遍历
- 节点数目不会太多(通过配置项控制 ziplist 的长度或总大小)
quicklist优点
- quicklist 把 ziplist 拆分为多个小块,避免大块连续内存的性能问题
- 通过链表连接这些 ziplist,提高插入/删除的灵活性
- 又保留 ziplist 的压缩特性,节省内存
ListPack
-
listpack是 Redis 自研的 紧凑型二进制编码结构,用来存储一组 字符串或整数,被广泛用于 Redis 的内部实现,比如:
-
Stream(流)里的一些内部结构
-
quicklist 的节点(quicklist 是 list 的底层结构)
-
Hash、Zset 在元素少时的压缩编码
也就是说,listpack 是“容器的容器” —— 用来承载多个数据项(entry),以一种压缩的方式存起来。
listpack 的结构长什么样?
listpack 的整体结构是个二进制数组,格式大致是这样:
| total_bytes | num_elements | entry1 | entry2 | ... | entryN | end_byte |
分别解释:
-
total_bytes(4字节)
listpack 的总字节长度,方便 Redis 直接跳到末尾,不用每次都遍历。
-
num_elements(2字节)
当前 listpack 里有多少个 entry,方便遍历时不重复计算。
-
entry1 ~ entryN
这是重点,每个 entry 都是变长的,内部有:
- 长度信息(包括类型、是否是整数)
- 内容(字符串或整数值)
- 后跟一段表示本 entry 的总长度(方便向后、向前遍历)
-
end_byte(1字节,固定是
0xFF
)表示 listpack 的结尾。
和普通数据结构比,它有这些优点:
特性 | 优势 |
---|---|
内存紧凑 | 比 ziplist 更节省内存,尤其是小整数、小字符串的场景 |
插入/删除快 | 可以前后遍历,entry 带有长度信息 |
二进制结构 | 访问时零拷贝,高效操作 |
替代 ziplist | Redis 6.0 开始,ziplist 逐渐被淘汰,listpack 是升级版 |
相关文章:
redis的List为什么用ziplist和quicklist
redis的List为什么用ziplist和quicklist 压缩列表(ziplist) 是一种节省内存的数据结构,最早是 Redis 中为了减少内存开销而引入的一种顺序存储结构。它不是标准库里的内容,而是某些底层系统(比如 Redis)在…...
Java 后端基础 Maven
Maven 1.什么是Maven 2.Maven的作用 Maven核心 Maven概述 IDEA集成Maven 1.创建Maven项目 点击设置里的 Project Structure 将jdk和编译语言进行设置 随后点击apply点击ok 2.Maven坐标 3.导入Maven项目 将文件夹复制到当前项目的目录下 在这个目录下,在磁盘中…...
开源情报的发展前景与行业运用
开源情报系统在实际中的应用正随着技术进步和社会需求的增长而不断拓展,其在国家安全、军事、经济、公共卫生等多个领域展现出显著价值。以下是结合最新动态与案例的综合分析: 一、国家安全:从传统到现代的情报体系升级 开源情报在国家安全…...
《黑马前端ajax+node.js+webpack+git教程》(笔记)——node.js教程+webpack教程(nodejs教程)
黑马程序员前端AJAX入门到实战全套教程,包含学前端框架必会的(ajaxnode.jswebpackgit),一套全覆盖 文章目录 Node.js与Webpack-01.Node.js入门定义和作用什么是前端工程化?(离不开node.js)Node.…...
Canvas设计图片编辑器全讲解(一)Canvas基础(万字图文讲解)
一、前序 近两年AI发展太过迅速,各类AI产品层出不穷,AI绘图/AI工作流/AI视频等平台的蓬勃发展,促使图片/视频等复杂内容的创作更加简单,让更多普通人有了图片和视频创作的机会。另一方面用户内容消费也逐渐向图片和视频倾斜。在“…...
disryptor和rabbitmq
disryptor和rabbitmq Disruptor 是什么? Disruptor 是一个由 LMAX Exchange 开发的高性能、低延迟的进程内(in-process)并发编程框架/库。它最初是为了解决金融交易系统中高吞吐量、低延迟消息传递的需求而设计的。 核心特点和设计理念&am…...
java基础-关键字:static、单例模式
1.例如:我们创造一个人的类,我们希望他是中国人类,所以我们希望所有对象都共有中国人的属性; import org.w3c.dom.ls.LSOutput;import java.sql.Connection; import java.sql.SQLOutput; import java.util.Arrays;public class Ma…...
深入解析PyTorch中MultiheadAttention的参数key_padding_mask与attn_mask
1. 基本背景 在multiheadattention中存在两个mask,一个参数是key_padding_mask,另外一个是attn_mask,尽管这两个参数是被人们所熟知的填充掩码和注意力掩码,但是深度理解以便清晰区分对于深刻理解该架构非常重要。 2. 参数Key_p…...
【Hadoop】--HA高可用搭建--3.2.2
修改环境配置文件 hadoop-env.sh # 在文件末尾添加以下内容: # java_home记得修改 export JAVA_HOME/usr/java/jdk1.8.0xxxx export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_ZKFC_USERroot export HDFS_JOURNALNODE_USERroot export YA…...
OpenCv(7.0)——银行卡号识别
文章目录 前言1.1 模板处理模块读取模板图像并预处理轮廓检测与处理构建数字模板库 1.2 银行卡图像预处理图像尺寸标准化形态学操作二值化与闭操作 1.3 卡号区域定位轮廓筛选逻辑 1.4 数字识别与结果展示完整代码展示总结 前言 本代码实现基于传统图像处理技术,通过…...
新手怎么样制作网站?
如果你是没有任何的建站基础,又没有任何的网站管理经验,那么应该如何开展网站制作呢?今天由我给大家分享一下网站制作的步骤和流程: 一、制定网站的核心主题: 在用户开展网站制作的之前,先确定一下以下的内…...
React集成百度【JSAPI Three】教程(002):设置不同的环境效果
文章目录 2、设置不同的天气2.1 安装antd前端UI库2.2 是否开启动态天空2.3 创建天气组件2.4 代码2.0版本下载2、设置不同的天气 2.1 安装antd前端UI库 安装命令: npm install antd --save2.2 是否开启动态天空 天气中的阴天、多云需要在开启动态天空后才能有效显示。在页面…...
Helm Chart 中配置多个 Docker Registry 地址以实现备用访问
在 Helm Chart 中配置多个 Docker Registry 地址以实现备用访问,可以通过以下几种方式实现: 1. 在 values.yaml 中定义多个 Registry 在 values.yaml 中定义主 Registry 和备用 Registry,以便在部署时灵活切换: # values.yaml …...
星云智控v1.0.0产品发布会圆满举行:以创新技术重构物联网监控新生态
星云智控v1.0.0产品发布会圆满举行:以创新技术重构物联网监控新生态 2024年5月15日,成都双流蛟龙社区党群服务中心迎来了一场备受业界瞩目的发布会——优雅草科技旗下”星云智控v1.0.0”物联网AI智控系统正式发布。本次发布会吸引了包括沃尔沃集团、新希…...
利用ffmpeg截图和生成gif
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg -vframes 180代表截取180帧, 实测后发现如果视频是60fps,那么会从第10秒截取到第13秒-i input.mp4:指定输入视频文件。-ss 00:00:10:…...
OpenCV CUDA 模块中的矩阵算术运算-----在频域中执行两个复数频谱的逐元素乘法的函数mulSpectrums()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 mulSpectrums()是OpenCV CUDA 模块中用于在频域中执行两个复数频谱的逐元素乘法的函数。 该函数实现了以下运算: d s t s r c 1 ⋅…...
可视化图解算法41:搜索二维矩阵(二维数组中的查找)
1. 题目 牛客网 面试笔试TOP101 | LeetCode 74. 搜索二维矩阵 描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数…...
OpenCV CUDA模块中的矩阵算术运算------创建卷积操作对象的工厂方法 cv::cuda::createConvolution
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 createConvolution函数是OpenCV CUDA 模块中用于创建卷积操作对象的工厂方法。它返回一个指向 cv::cuda::Convolution 接口的智能指针࿰…...
从代码学习深度学习 - 用于预训练词嵌入的数据集 PyTorch版
文章目录 前言辅助工具代码绘图工具 (utils\_for\_huitu.py)数据处理工具 (utils\_for\_data.py)读取数据集 (PTB)构建词表下采样高频词中心词和上下文词的提取负采样小批量加载训练实例整合代码:构建数据加载器总结前言 词嵌入(Word Embedding)是将词语映射到低维连续向量…...
基于jsp+mysql+Spring的Springboot旅游网站管理系统设计和实现
基于jspmysqlSpring的Springboot旅游网站管理系统设计和实现 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定…...
【Rust迭代器】Rust迭代器用法解析与应用实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
嵌入式学习笔记DAY23(树,哈希表)
一、树 1.树的概念 之前我们一直在谈的是一对一的线性结构,现实中,还存在很多一对多的情况需要处理,一对多的线性结构——树。 树的结点包括一个数据元素及若干指向其子树的分支,结点拥有的子树数称为结点的度。度为0的结点称为叶…...
操作系统————五种页面置换算法(OPT,FIFO,LRU,NRU,加强版NRU)大总结
❤️❤️❤️算法1:最佳置换算法(OPT) 算法思想: 值得注意的是这是一种理想型算法,实际上并不可能实现,读者需要注意 下面我们来解析一下它的原理: 我们假设有三个内存块,对于页面…...
数据结构(二) 线性表
一. 线性表 1.定义 线性表是由n(n>0)个具有相同数据类型的数据元素构成的有限序列。其中,元素之间通过顺序关系排列,每个元素有且只有一个直接前驱和一个直接后继(除首尾元素外) 二.线性表的顺序表示(顺序表) 1.存储方式 使用连续的内存空间(数组)存储…...
TS04:高性能四通道自动灵敏度校准电容触摸传感器
在现代电子设备中,电容触摸传感器的应用越来越广泛,而高性能的传感器芯片是实现良好用户体验的关键。 TS04 四通道电容触摸传感器,凭借其自动灵敏度校准功能和多种特性,成为理想的解决方案。本文将简要介绍 TS04 的主要特性、功能…...
鸿蒙 系统-安全-程序访问控制-应用权限管控
Ability Kit 提供了一种允许应用访问系统资源(如:通讯录等)和系统能力(如:访问摄像头、麦克风等)的通用权限访问方式,来保护系统数据(包括用户个人数据)或功能࿰…...
ArcGIS Pro 3.4 二次开发 - 框架
环境:ArcGIS Pro SDK 3.4 .NET 8 文章目录 框架1 框架1.1 如何在 DockPane 可见或隐藏时订阅和取消订阅事件1.2 执行命令1.3 设置当前工具1.4 激活选项卡1.5 激活/停用状态 - 修改条件1.6 判断应用程序是否繁忙1.7 获取应用程序主窗口1.8 关闭 ArcGIS Pro1.9 获取 …...
打破传统仓库管理困局:WMS如何重构出入库全流程
引言 在制造业与零售业高速发展的今天,仓库管理仍普遍面临效率低、错发漏发频发、库存数据滞后等痛点。人工登记导致30%的错单率,货位混乱让拣货耗时增加50%,而账实不符引发的二次采购成本更吞噬着企业利润。如何突破传统管理桎梏࿱…...
npm 安装时 SSL 证书过期问题笔记
问题描述: npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED npm error request to https://registry.npm.taobao.org/axios failed, reason: certificate has expired 这表明当前配置的 npm 镜像源(淘宝镜像 https://registry.npm.taobao.org&…...
【大数据】MapReduce 编程-- PageRank--网页排名算法,用于衡量网页“重要性”-排序网页
PageRank 是 Google 创始人拉里佩奇(Larry Page)和谢尔盖布林(Sergey Brin)在 1998 年提出的一种网页排名算法,用于衡量网页“重要性”的一种方式。它是搜索引擎中用于排序网页的一种基础算法 一个网页越是被其他重要…...
Craw4AI:LLM友好的网页爬虫
GitHub:https://github.com/unclecode/crawl4ai 更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI Crawl4AI旨在让网页爬取和数据提取变得简单而高效。无论构建复杂的 AI 应用程序还是增强大语言模型,Crawl4AI 都能…...
idea 安装飞算-javaAI 插件使用
文章目录 前言idea 安装飞算-javaAI 插件使用1. 介绍一下飞算-AI2. 安装使用 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞的人每天的运气都不会太差,实在白嫖的…...
Lombok
Lombok Lombok 是一个 Java 库,通过注解自动生成样板代码(如 Getter/Setter、构造函数等),从而简化开发。在你提供的代码中,AllArgsConstructor 就是一个 Lombok 注解。以下是 Lombok 常用注解及其作用的详细说明&…...
起点与破圈
写了多年代码,我为什么开始转向算法,直到如今投身于大模型领域? 作为一名拥有 10 年经验的开发者,我的职业路径几乎覆盖了技术发展的多个阶段。从最早使用 Flask/Django 开发网站,到后来构建大数据系统、设计服务器架…...
基于AI的Web数据管道,使用n8n、Scrapeless和Claude
引言 在当今数据驱动的环境中,组织需要高效的方法来提取、处理和分析网络内容。传统的网络抓取面临着诸多挑战:反机器人保护、复杂的JavaScript渲染以及持续的维护需求。此外,理解非结构化的网络数据则需要复杂的处理能力。 本指南演示了如…...
7GB显存如何部署bf16精度的DeepSeek-R1 70B大模型?
构建RAG混合开发---PythonAIJavaEEVue.js前端的实践-CSDN博客 服务容错治理框架resilience4j&sentinel基础应用---微服务的限流/熔断/降级解决方案-CSDN博客 conda管理python环境-CSDN博客 快速搭建对象存储服务 - Minio,并解决临时地址暴露ip、短链接请求改…...
初识函数------了解函数的定义、函数的参数、函数的返回值、说明文档的书写、函数的嵌套使用、变量的作用域(全局变量与局部变量)
文章目录 一、什么是函数?二、函数定义与调用2.1 基本语法2.2 示例演示 三、函数参数详解3.1 位置参数3.2 默认参数3.3 可变参数3.4 关键字参数 四、返回值与文档说明4.1 返回多个值4.2 编写文档字符串 五、函数嵌套与作用域5.1 嵌套函数示例5.2 变量作用域5.3 glob…...
Java常见API文档(下)
格式化的时间形式的常用模式对应关系如下: 空参构造创造simdateformate对象,默认格式 练习.按照指定格式展示 package kl002;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class Date3 {publi…...
ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出现问题】解决方案
ping baidu.coom可以通,ping www.baidu.com不通【DNS出现问题】解决方案 检查IPV6是否有问题 # 1. 检查 IPv6 地址,记住网络接口的名称 ip -6 addr show# 2. 测试本地 IPv6,eth0换成自己的网络接口名称 ping6 ff02::1%eth0# 3. 检查路由 ip…...
Oracle 中 open_cursors 参数详解:原理、配置与性能测试
#Oracle #参数 # open_cursors #ORA-01000 在 Oracle 数据库的众多参数中,open_cursors是一个对应用程序性能和资源管理有着重要影响的参数。它直接关系到数据库与应用程序之间游标资源的使用与分配,合理配置open_cursors参数,能够避免应用程…...
线程调度与单例模式:wait、notify与懒汉模式解析
一.wait 和 notify(等待 和 通知) 引入 wait notify 就是为了能够从应用层面,干预到多个不同线程代码的执行顺序,可以让后执行的线程主动放弃被调度的机会,等先执行的线程完成后通知放弃调度的线程重新执行。 自助取…...
AGI大模型(27):LangChain向量存储
1 安装依赖 使用一个简单的本地向量存储 FAISS,首先需要安装它 pip install faiss-cpu -i https://pypi.tuna.tsinghua.edu.cn/simple pip install langchain_community==0.3.7 -i https://pypi.tuna.tsinghua.edu.cn/simple 由于演示过程中用到了爬虫,需要安装依赖库,如…...
Qwen3 - 0.6B与Bert文本分类实验:深度见解与性能剖析
Changelog [25/04/28] 新增Qwen3-0.6B在Ag_news数据集Zero-Shot的效果。新增Qwen3-0.6B线性层分类方法的效果。调整Bert训练参数(epoch、eval_steps),以实现更细致的观察,避免严重过拟合的情况。 TODO: 利用Qwen3-0.6…...
Oracle 的 PGA_AGGREGATE_LIMIT 参数
Oracle 的 PGA_AGGREGATE_LIMIT 参数 基本概念 PGA_AGGREGATE_LIMIT 是 Oracle 数据库 12c 引入的一个重要内存管理参数,用于限制所有服务器进程使用的 PGA(Program Global Area)内存总量。 参数作用 硬性限制:设置 PGA 内存使…...
# idea 中如何将 java 项目打包成 jar 包?
idea 中如何将 java 项目打包成 jar 包? 例如如何将项目dzs168-dashboard-generate打包成 dzs168-dashboard-generate.jar 1、打开项目结构 Project Structure 在IDEA的顶部菜单栏中选择【File】,然后选择【Project Structure】(或者使用快…...
JVM(Java 虚拟机)深度解析
JVM(Java 虚拟机)深度解析 作为 Java 生态系统的核心,JVM(Java Virtual Machine)是 Java 语言 "一次编写,到处运行" 的关键。它不仅是 Java 程序的运行环境,更是一个复杂的系统软件&…...
算法题(150):拼数
审题: 本题需要我们将数组中的数据经过排序,使得他们拼接后得到的数是所有拼接方案中最大的 思路: 方法一:排序贪心 贪心策略1:直接排序 如果我们直接按照数组数据的字典序进行排序,会导致部分情况出错 eg&…...
怎么样进行定性分析
本文章将教会你如何对实验结果进行定性分析,其需要一定的论文基础,文末有论文撰写小技巧,不想看基础原理的人可以直接调到文章末尾。 一、什么是定性分析 定性分析是一种在众多领域广泛应用的研究方法,它致力于对事物的性质、特…...
RLᵛ_ Better Test-Time Scaling by Unifying LLM Reasoners With Verifiers
RLᵛ: Better Test-Time Scaling by Unifying LLM Reasoners With Verifiers 在人工智能领域,大语言模型(LLM)的推理能力提升一直是研究热点。今天要解读的论文提出了一种全新的强化学习框架RLᵛ,通过融合推理与验证能力…...
关于百度地图JSAPI自定义标注的图标显示不完整的问题(其实只是因为图片尺寸问题)
下载了几个阿里矢量图标库里的图标作为百度地图的自定义图标,结果百度地图显示的图标一直不完整。下载的PNG图标已经被正常引入到前端代码,anchor也设置为了图标底部中心,结果还是显示不完整。 if (iconUrl) {const icon new mapClass.Icon(…...