当前位置: 首页 > news >正文

Postgresql源码(142)子查询提升pull_up_sublinks

1 案例

drop table t_fun01;
create table t_fun01 (image_id numeric primary key, content_id varchar(50), file_code varchar(20));
create index idx3 on t_fun01(content_id);
create index idx4 on t_fun01(file_code);
insert into t_fun01 select t.i, t.i%10, t.i%100 from generate_series(1,1000000) t(i);
analyze t_fun01;
explain analyze update t_fun01 t set content_id = 'null' where t.image_id in (select max(image_id) from t_fun01 where file_code = '1');

从计划上看,nestloop挂子查询Index Scan Backward确实是能想到的最优的计划:

postgres=# explain analyze update t_fun01 t set content_id = 'null' where t.image_id in (select max(image_id) from t_fun01 where file_code = '1');QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------------Update on t_fun01 t  (cost=4.69..12.73 rows=0 width=0) (actual time=0.257..0.259 rows=0 loops=1)->  Nested Loop  (cost=4.69..12.73 rows=1 width=180) (actual time=0.135..0.138 rows=1 loops=1)->  Subquery Scan on "ANY_subquery"  (cost=4.27..4.29 rows=1 width=88) (actual time=0.117..0.119 rows=1 loops=1)->  Result  (cost=4.27..4.28 rows=1 width=32) (actual time=0.112..0.113 rows=1 loops=1)InitPlan 1 (returns $0)->  Limit  (cost=0.42..4.27 rows=1 width=6) (actual time=0.107..0.108 rows=1 loops=1)->  Index Scan Backward using t_fun01_pkey on t_fun01  (cost=0.42..36389.43 rows=9467 width=6) (actual time=0.106..0.106 rows=1 loops=1)Index Cond: (image_id IS NOT NULL)Filter: ((file_code)::text = '1'::text)Rows Removed by Filter: 99->  Index Scan using t_fun01_pkey on t_fun01 t  (cost=0.42..8.44 rows=1 width=12) (actual time=0.014..0.014 rows=1 loops=1)Index Cond: (image_id = "ANY_subquery".max)Planning Time: 0.532 msExecution Time: 0.345 ms
(14 rows

优化器是如何上拉子查询的呢?

2 上拉子查询流程分析

2.1 pull_up_sublinks

  • pull_up_sublinks 是优化器中用于子链接(SubLink)上拉优化的核心函数。
  • 通过递归处理查询树中的子链接(如 ANYEXISTS),将其转换为**半连接(Semi Join)反半连接(Anti Join)**结构,从而提升查询性能。

在当前案例中,pull_up_sublinks函数拿到的Query树如下:
在这里插入图片描述
pull_up_sublinks递归入口

  • 调用 pull_up_sublinks_jointree_recurse 遍历 jointree,处理 RangeTblRef(单表)、FromExpr(FROM列表)和 JoinExpr(JOIN操作)中的子链接。
  • 调用 pull_up_sublinks_qual_recurse 处理条件表达式中的子链接,如 WHERE col = ANY (SELECT ...)

子链接转换逻辑

  • ANY 子链接:通过 convert_ANY_sublink_to_join 转换为 Semi Join,生成新的连接条件(如 col = t2.key
  • EXISTS 子链接:通过 convert_EXISTS_sublink_to_join 转换为 Anti Join,优化为外连接形式

2.2 convert_ANY_sublink_to_join

(gdb) bt
#0  convert_ANY_sublink_to_join (root=0x2b64f60, sublink=0x2a6f848, available_rels=0x2b653c0) at subselect.c:1272
#1  0x00000000008a1606 in pull_up_sublinks_qual_recurse (root=0x2b64f60, node=0x2a6f848, jtlink1=0x7ffd2e7e8318, available_rels1=0x2b653c0, jtlink2=0x0, available_rels2=0x0)at prepjointree.c:508
#2  0x00000000008a12e1 in pull_up_sublinks_jointree_recurse (root=0x2b64f60, jtnode=0x2b64cb0, relids=0x7ffd2e7e8380) at prepjointree.c:379
#3  0x00000000008a10e4 in pull_up_sublinks (root=0x2b64f60) at prepjointree.c:315
#4  0x0000000000886ad1 in subquery_planner (glob=0x2a6f968, parse=0x2a6fa78, parent_root=0x0, hasRecursion=false, tuple_fraction=0) at planner.c:689
#5  0x0000000000885e98 in standard_planner (parse=0x2a6fa78,query_string=0x2a6e538 "update t_fun01 t set content_id = 'null' where t.image_id in (select max(image_id) from t_fun01 where file_code = '1');", cursorOptions=2048,boundParams=0x0) at planner.c:413

进入convert_ANY_sublink_to_join时available_rels=[1,0]指向t_image,拿到的sublink:
在这里插入图片描述
convert_ANY_sublink_to_join

  • 输入:调用者已在查询的某个条件子句(qual clause)顶层发现了一个 ANY 子链接,但尚未进一步检查该子链接的属性。
  • 功能:判断是否适合以连接方式处理此子链接。若适合,构造并返回一个 JoinExpr 结构;否则返回 NULL(表示无法转换)。
  • 关键限制参数:available_rels
    • 含义:允许在子链接表达式中安全引用的父查询关系集合(即表或视图的标识集合)。
    • 作用:避免当子链接出现在外连接(Outer Join)的 ON 条件中时,因引用非法关系而改变查询语义。
    • 强制要求:若转换后的条件引用了 available_rels 之外的父查询关系,则转换必须失败。
JoinExpr *
convert_ANY_sublink_to_join(PlannerInfo *root, SubLink *sublink,Relids available_rels)

第一步判断:pull_varnos拿到 子查询里面 引用了那些level=0的基表,这里upper_varnos只有一个元素1。因为只用了一个RTE:t_fun01

	upper_varnos = pull_varnos(root, sublink->testexpr);if (bms_is_empty(upper_varnos))return NULL;

第二步判断:不能引用available_rels之外的表。

	if (!bms_is_subset(upper_varnos, available_rels))return NULL;

第三步判断:不能带v类型的函数。

	if (contain_volatile_functions(sublink->testexpr))return NULL;

到这里就说明可以转,开始拼join,增加一个RTE叫做ANY_subquery,所以可以在计划里面看到这个名字。

	pstate = make_parsestate(NULL);nsitem = addRangeTableEntryForSubquery(pstate,subselect,makeAlias("ANY_subquery", NIL),false,false);rte = nsitem->p_rte;parse->rtable = lappend(parse->rtable, rte);rtindex = list_length(parse->rtable);rtr = makeNode(RangeTblRef);rtr->rtindex = rtindex;subquery_vars = generate_subquery_vars(root,subselect->targetList,rtindex);quals = convert_testexpr(root, sublink->testexpr, subquery_vars);result = makeNode(JoinExpr);result->jointype = JOIN_SEMI;result->isNatural = false;result->larg = NULL;		/* caller must fill this in */result->rarg = (Node *) rtr;result->usingClause = NIL;result->join_using_alias = NULL;result->quals = quals;result->alias = NULL;result->rtindex = 0;return result;

3 pull_varnos

功能

  • 工具函数,其核心作用是 从语法树中提取所有引用“零层级”基表RTE的变量编号varnos集合。
  • varno:变量编号,唯一标识查询中引用的基表(如 FROM 后的表、子查询、连接结果等)。
  • 零层级(level-zero):指当前查询层级的基表(不包含嵌套子查询中的表)。
  • nullingrels:外连接中可能导致列值为 NULL 的基表集合(如 LEFT JOIN 的右表)。

工作方式:

  • query_or_expression_tree_walker递归遍历语法树,调用 pull_varnos_walker 处理每个节点
  • Var 节点:提取其 varno 和 varnullingrels(外连接空值关系)。
  • PlaceHolderVar 节点:若 root 非空,提取其 phnullingrels。
  • SubLink 节点:递归处理子链接内的表达式,捕捉上层的 varno 引用。
  • SubPlan 节点:仅处理传递给子计划的参数(子计划内部已独立优化)。

层级控制

  • sublevels_up 计数器:跟踪嵌套子查询的层级。
  • 当进入子查询时,计数器递增,仅收集当前层级(零层级)的 varno。
  • 嵌套子查询中的 varno 会被忽略(因其属于深层级)。
Relids
pull_varnos(PlannerInfo *root, Node *node)
{pull_varnos_context context;context.varnos = NULL;context.root = root;context.sublevels_up = 0;/** Must be prepared to start with a Query or a bare expression tree; if* it's a Query, we don't want to increment sublevels_up.*/query_or_expression_tree_walker(node,pull_varnos_walker,(void *) &context,0);return context.varnos;
}

相关文章:

Postgresql源码(142)子查询提升pull_up_sublinks

1 案例 drop table t_fun01; create table t_fun01 (image_id numeric primary key, content_id varchar(50), file_code varchar(20)); create index idx3 on t_fun01(content_id); create index idx4 on t_fun01(file_code); insert into t_fun01 select t.i, t.i%10, t.i%1…...

sonar代码检测研究及平台搭建

为了实现提交代码自动检测代码缺陷,本文介绍了一种将jenkins与gitlab集成的自动检测机制,如需应用于生产级开发流程,可在此基础上进行功能丰富和扩展,本文仅进行了原理性搭建。 一、基础环境准备 与sonar配合使用的jenkins和gitlab基础软件…...

清华大学:DeepSeek从入门到精通系列教程1-9讲(持续更新中)|大礼包免费下载

导 读INTRODUCTION 今天分享由清华大学新闻与传播学院、人工智能学院双聘教授沈阳老师团队倾力打造的《DeepSeek从入门到精通系列教程1-9讲(持续更新中)》,包含:《DeepSeek:从入门到精通》《DeepSeek如何赋能职场应用》…...

使用Python可视化图结构:从GraphML文件生成节点关系图(lightrag 生成)

引言 在数据可视化领域,图结构(Graph)常用于展示实体间的复杂关系。例如,文学分析中的角色关系、社交网络中的用户互动等。本文将通过一个实际案例,演示如何使用 NetworkX 和 Matplotlib 从 GraphML 文件生成节点关系…...

排序复习_代码纯享

头文件 #pragma once #include<iostream> #include<vector> #include<utility> using std::vector; using std::cout; using std::cin; using std::endl; using std::swap;//插入排序 //1、直接插入排序&#xff08;稳定&#xff09; void InsertSort(vecto…...

Docker Hub Mirror 终极解决方案——0成本,超高速!

CNB Docker Mirror (cdm) CNB Docker Mirror 是一个基于 CNB 的 Docker 镜像加速工具&#xff0c;提供本地镜像加速功能。 功能特性 镜像加速&#xff1a;在本地启动连接到 CNB 环境的 Docker 镜像加速服务&#xff0c;然后通过配置 Docker 客户端实现镜像加速下载自动重连&…...

2000-2019年各省地方财政车船税数据

2000-2019年各省地方财政车船税数据 1、时间&#xff1a;2000-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政车船税 4、范围&#xff1a;31省 5、指标说明&#xff1a;车船税作为地方财政的重要组成部分&#x…...

c#处理算数溢出的情况

在C#中&#xff0c;算术运算的溢出处理可以通过 checked 和 unchecked 关键字控制&#xff0c;默认行为是 静默截断&#xff08;unchecked模式&#xff09;&#xff0c;但可以通过配置或代码块显式调整。以下是详细说明&#xff1a; 1. 默认行为&#xff08;unchecked模式&…...

Java「Deque」 方法详解:从入门到实战

Java Deque 各种方法解析&#xff1a;从入门到实战 在 Java 编程中&#xff0c;Deque&#xff08;双端队列&#xff09;是一个功能强大的数据结构&#xff0c;允许开发者从队列的两端高效地添加、删除和检查元素。作为 java.util 包中的一部分&#xff0c;Deque 接口继承自 Qu…...

简记_FPGA 硬件最小系统设计

一、FPGA板级设计的五要素 1.1、电源电路 核心电压&#xff1a;一般为固定值 IO电压&#xff1a;FPGA的IO分为多个bank&#xff0c;同一个bank的不同IO引脚电压相同&#xff0c;不同bank的电压可以不同 辅助电压&#xff1a;除了核心电压和IO电压&#xff0c;FPGA工作所需的…...

C++题目

1、内存管理 1.内存模型 栈:在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放。 堆&#xff1a;就是那些由new分配的内存块&#xff0c;其释放由程序员控制&#xff08;一个new对应一个delete&#xff09…...

Vulhub-jangow-01-1.0.1通关攻略

第0步&#xff1a; 打开靶机&#xff0c;按下shift&#xff0c;出现下图界面 在此页面按下e键&#xff0c;进入如下界面&#xff0c; 将ro 替换为 rw signie init/bin/bash 替换完毕后&#xff0c;按下Ctrl键X键&#xff0c;进入如下页面 ip a查看网卡信息 编辑配置文件网卡信…...

入剖析 Android Compose 框架的关键帧动画(keyframes、Animatable)(二十三)

深入剖析 Android Compose 框架的关键帧动画&#xff08;keyframes、Animatable&#xff09; 引言 在当今的 Android 应用开发领域&#xff0c;用户体验已成为衡量一款应用成功与否的关键因素之一。而动画作为提升用户体验的重要手段&#xff0c;能够为应用增添生动性和交互性…...

java中的枚举类型和c,c++的有区别吗?c,c++的枚举,结构体,联合体,三种数据有什么区别和联系

Java 枚举类型与 C、C 枚举类型的区别 1. 类型安全 Java&#xff1a;Java 的枚举类型是类型安全的。枚举常量是枚举类型的实例&#xff0c;编译器会严格检查传递的参数是否为该枚举类型的有效常量。例如&#xff1a; java Apply enum Color { RED, GREEN, BLUE } // 编译器会检…...

详解Redis的持久化与数据可靠性

Redis持久化与数据可靠性详解&#xff08;结合实例&#xff09; Redis作为内存数据库&#xff0c;持久化是保证数据不丢失的核心机制。它通过将内存数据保存到磁盘&#xff0c;确保服务器重启后能恢复数据。Redis提供RDB、AOF和混合持久化三种方式&#xff0c;下面通过实例和操…...

1、mysql基础篇--概述

关系型数据库&#xff08;RDBMS&#xff09; 概念特点&#xff1a;数据模型&#xff1a; 概念 建立在关系模型基础上&#xff0c;有多张表相互连接的二维表组成的数据库 特点&#xff1a; 1、使用表存储&#xff0c;格式统一&#xff0c;便于维护 2、使用sql语言操作&#…...

【Tiny RDM】Redis客户端工具

Tiny RDM Tiny RDM是一款现代化、轻量级、跨平台的Redis客户端&#xff0c;支持Mac、Windows和Linux&#xff0c;目前在Github上已有10kStar。 Github 项目地址&#xff1a; https://github.com/tiny-craft/tiny-rdm 功能特性 极度轻量&#xff0c;基于Webview2&#xff0c…...

常见框架漏洞攻略-Shiro篇

漏洞名称 Shiro rememberMe反序列化漏洞 漏洞简介 Apache Shiro是⼀个强⼤易⽤的Java安全框架&#xff0c;提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易⽤&#xff0c;同时也能提供健壮的安全性。 漏洞原理 在Shiro框架下&#xff0c;⽤户登陆成功后会⽣成…...

常见框架漏洞之一:Thinkphp5x

ThinkPHP是为了简化企业级应⽤开发和敏捷WEB应⽤开发⽽诞⽣的&#xff0c;是⼀个快速、兼容⽽且简单的轻量级国产PHP开发框架&#xff0c;诞⽣于2006年初&#xff0c;原名FCS&#xff0c;2007年元旦正式更名为 ThinkPHP&#xff0c;遵循Apache2开源协议发布&#xff0c;从Stru…...

MORL4PDEs:基于多目标优化与强化学习的数据驱动偏微分方程发现

摘要&#xff1a;本文提出了一种结合多目标优化与强化学习的数据驱动方法MORL4PDEs&#xff0c;用于从复杂系统观测数据中发现简洁的偏微分方程&#xff08;PDE&#xff09;。该方法无需预定义候选函数库&#xff0c;通过神经网络代理生成符号表达式&#xff0c;结合遗传算法优…...

UniApp和微信小程序中v-switch夜间模式动画开关

UniApp兼容版 <template><view><view class"main-container" :style"{ backgroundColor: value ? #45e3f9 : #20114c,transform:scale(${size})}" tap"onClick"><view class"content" :style"{ left: val…...

六十天Linux从0到项目搭建第四天(通配符命令、其他命令、压缩解压工具、shell的感性理解、linux权限解析)

通配符&#xff08;Wildcard&#xff09; 是 Shell 提供的特殊字符&#xff0c;用于 匹配文件名或路径名&#xff0c;可以代替一个或多个字符&#xff0c;使得命令能批量操作文件&#xff0c;而无需手动输入每个文件名。 典型用法 * 匹配任意字符 *.txt → 匹配所有 .txt 文…...

RAG优化:python从零实现自适应检索增强Adaptive Retrieval

开篇:当RAG遇上“自适应大脑”,检索从此不再“一根筋”!🧠 想象一下,你的AI助手是个超级聪明的“学霸”,但有时候却像个“一根筋”的机器人——无论你问它什么,它都用同一种方式去回答。问它“什么是XAI?”它给你一堆定义;问它“AI发展太快了吗?”它还是给你一堆定…...

C语言实现的冰墩墩

在windows系统下&#xff0c;vs 2022编译。 其中#include <graphics.h>需要自己下载安装。 环境配置没什么难度&#xff0c;直接上demo。 代码如下&#xff1a; #include <graphics.h> #include <conio.h> #include <math.h> #define PI acos(-1.0…...

【构建CV图像识别系统】从传统方法到深度学习

目录 1. 图像的基本概念1.1 像素与色彩1.2 过滤与卷积 2. 图像分类与检测3. 图像特征的提取3.1 全局特征3.2 局部特征3.2.1 边缘&#xff08;Edge&#xff09;3.2.2 角点&#xff08;Corner&#xff09;3.2.3 SIFT 特征 4. 传统方法与深度学习在图像识别中的应用4.1 基于传统方…...

在Centos 7环境下安装MySQL

前言&#xff1a;在安装与卸载MySQL时&#xff0c;用户需切换为root&#xff0c;这样安装之后&#xff0c;普通用户也能够使用。 Tips:我们在刚开始学习时&#xff0c;尽量全部使用root进行&#xff0c;适应mysql语句&#xff0c;后面学了用户管理&#xff0c;就可以考虑新建普…...

【机器学习基础 4】 Pandas库

一、Pandas库简介 Pandas 是一个开源的 Python 数据分析库&#xff0c;主要用于数据清洗、处理、探索与分析。其核心数据结构是 Series&#xff08;一维数据&#xff09;和 DataFrame&#xff08;二维表格数据&#xff09;&#xff0c;可以让我们高效地操作结构化数据。Pandas …...

干部监督预警系统的定义与功能

一、干部监督预警系统是什么&#xff1f; 干部监督预警系统是通过整合多源数据&#xff08;如干部档案、履职表现、廉政记录、舆情反馈等&#xff09;&#xff0c;利用大数据分析、人工智能等技术&#xff0c;对干部行为进行实时监测、风险评估和分级预警的数字化管理工具。 二…...

可视化图解算法:链表的奇偶重排(排序链表)

1. 题目 描述 给定一个单链表&#xff0c;请设定一个函数&#xff0c;将链表的奇数位节点和偶数位节点分别放在一起&#xff0c;重排后输出。 注意是节点的编号而非节点的数值。 数据范围&#xff1a;节点数量满足 0≤n≤105&#xff0c;节点中的值都满足 0≤val≤10000 要…...

获取小红书笔记详情接口的详细指南

一、引言 小红书作为一个集社交、购物、分享于一体的综合性平台&#xff0c;拥有海量的用户和丰富的笔记内容。小红书笔记详情API接口为开发者提供了一种高效获取笔记详细信息的方法&#xff0c;包括笔记的标题、正文、图片、视频、标签、点赞数、评论数等。这些数据可以帮助开…...

麒麟系统运维指令

麒麟系统运维指令 麒麟系统运维指令1、 查看系统版本2、查看系统信息3、用户与权限管理4. 网络相关命令5. 包管理6. 文件操作7. 进程管理 麒麟系统运维指令 1、 查看系统版本 目的指令查看操作系统版本信息cat /etc/os-release查看操作系统版本信息hostnamectl查看内核版本un…...

pyqt SQL Server 数据库查询

一、概述 本项目旨在开发一个基于 Python 和 PyQt6 的数据库查询工具&#xff0c;该工具能够连接到 SQL Server 数据库&#xff0c;显示数据库中的表名&#xff0c;支持用户输入 SQL 查询语句进行数据查询&#xff0c;并将查询结果展示在表格中。同时&#xff0c;为了提升用户…...

抓包软件【Fiddler】

我叫补三补四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲Fiddler 什么是Fidder Fiddler是一款非常流行并且实用的HTTP抓包工具&#xff0c;原理是在电脑上开启一个HTTP代理服务器&#xff0c;然后转发所有的HTTP请求和响应。是用C#开发的工具…...

SpringCould微服务架构之Docker(1)

项目中微服务比较多的时候&#xff0c;一个一个手动的部署太麻烦了&#xff0c;所以就需要用到Docker。 项目部署中的问题&#xff1a; Docker是一种快速交付应用、运行应用的技术。...

计算图(Computation Graph)

在强化学习中&#xff0c;TensorFlow的计算图&#xff08;Computation Graph&#xff09;是用于描述模型结构和训练流程的核心机制。 1. 计算图的基本概念 定义&#xff1a;计算图是TensorFlow中表示数学运算和数据流动的有向图。图中的节点&#xff08;Nodes&#xff09;代表…...

邮件营销:如何设置合适的发送频率

在邮件营销里&#xff0c;把握好发送频率特别关键&#xff0c;这直接关系到客户愿不愿意搭理你的邮件&#xff0c;以及邮件营销能不能达到预期效果。下面这几个步骤和建议&#xff0c;能帮你找到合适的邮件发送频率&#xff1a; 一、了解目标受众 分析客户行为&#xff1a;查…...

React项目中,递归写法获取tree的id集合

后端接口返回一个childrens的树&#xff0c;最后要拿到的是每个childrens下第一个对象的id集合&#xff0c;用于编辑页的回显 采用的是递归写法&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; const categoryIds: Array&…...

深入解析Linux网络、安全与容器技术

1. Netfilter&#xff1a;Linux内核的包处理框架 Netfilter 是Linux内核中用于控制网络数据包的核心机制&#xff0c;负责处理数据包的过滤、修改和转发。其核心功能包括&#xff1a; 包过滤&#xff08;Packet Filtering&#xff09;&#xff1a;根据规则允许或拒绝数据包通过…...

AF3 Rotation 类解读

Rotation 类(rigid_utils 模块)是 AlphaFold3 中用于 3D旋转 的核心组件,支持两种旋转表示: 1️⃣ 旋转矩阵 (3x3) 2️⃣ 四元数 (quaternion, 4元向量) 👉 设计目标: 允许灵活选择 旋转矩阵 或 四元数 封装了常用的 旋转操作(组合、逆旋转、应用到点上等) 像 torch.…...

数据预处理习题

简述常用的文本数据类型。 结构化文本&#xff1a;如数据库中的表格数据、JSON/XML格式数据&#xff0c;具有明确的字段和层级关系。非结构化文本&#xff1a;如自然语言文本&#xff08;新闻、社交媒体内容&#xff09;、长文档&#xff08;书籍、论文&#xff09;&#xff0…...

常见框架漏洞—中间件IIS

一.IIS6.x篇 1.在Windows server 2003中搭建网站 2.访问网站&#xff0c;并对该网站进行抓包 3.修改提交方式为PUT&#xff0c;然后写入木马 4.修改提交方式为MOVE&#xff0c;令将其更名为脚本⽂档后缀 5.我们在Windows server 2003中可以看到我们上传的shell.asp 6.我们在网…...

群体智能优化算法-蚁狮优化算法(Ant Lion Optimizer, ALO,含Matlab源代码)

一、文章摘要 蚁狮优化算法&#xff08;Ant Lion Optimizer&#xff0c;ALO&#xff09;是一种新颖的元启发式算法&#xff0c;由Mirjalili提出&#xff0c;其灵感来源于自然界中蚁狮幼虫构筑陷阱捕猎蚂蚁的行为。该算法通过模拟蚂蚁的随机游走、蚁狮的陷阱机制、陷阱缩小及精…...

【计算机视觉】数据增强

一、数据增强的意义 在深度学习中&#xff0c;数据集往往有限&#xff0c;而模型需要大量的样本来学习特征。数据增强技术通过对图像进行如下变换&#xff1a; 扩充样本数量&#xff1a;利用已有数据生成新的样本。提高模型鲁棒性&#xff1a;使模型适应不同的图像变换&#…...

BERT文本分类实战----美团外卖评论情绪分类

HuggingFace 提供了巨大的模型库&#xff0c;虽然其中的很多模型性能表现出色&#xff0c;但这些模型往往是在广义的数据集上训练的&#xff0c;缺乏针对特定数据集的优化&#xff0c;所以在获得一个合适的模型之后&#xff0c;往往还要针对具体任务的特定数据集进行二次训练&a…...

Chrome 133 版本开发者工具(DevTools)更新内容

Chrome 133 版本开发者工具&#xff08;DevTools&#xff09;更新内容 一、持久化的 AI 聊天记录 AI 助手面板会在本地持久化聊天记录&#xff0c;即使重新加载 DevTools 或 Chrome&#xff0c;也可以查看之前与 Gemini 的对话内容。 二、Performance 面板改进 此版本为 Per…...

大模型应用(Java)2025/3/24

大佬视频&#x1f449;使用Java实现一个基础的大模型RAG问答对话系统_哔哩哔哩_bilibili 需求 让大模型来理解知识库内容&#xff0c;并根据知识库回答。 通过本次应用我学到了&#xff1a; RAG工程的基本处理框架流程&#xff08;基于java&#xff09;向量数据库的基础使用…...

基于Sentinel-1A GRD洪涝淹没范围提取(SDWI阈值法和OSTU自动阈值法)

0 前言 两幅灾前和灾后的遥感影像经过SARscape配准、滤波、辐射定标预处理之后&#xff0c;使用GDAL库分别使用SDWI阈值法和OSTU自动阈值法提取洪涝淹没范围 1 ENVI 5.6和SARscape5.6安装 通过网盘分享的文件&#xff1a;ENVI5(1).6 链接: https://pan.baidu.com/s/1mKcEkC3…...

PPT 转高精度图片 API 接口

PPT 转高精度图片 API 接口 文件处理 / 图片处理&#xff0c;将 PPT 文件转换为图片序列。 1. 产品功能 支持将 PPT 文件转换为高质量图片序列&#xff1b;支持 .ppt 和 .pptx 格式&#xff1b;保持原始 PPT 的布局和样式&#xff1b;转换后的图片支持永久访问&#xff1b;全…...

IOS接入微信方法

导入SDK 和配置 SDK 的不做介绍&#xff1b; 1 在IOS 开发者中心 Identifiers 打开‘Associated Domains’ 2 建立一个文件&#xff08;不带后缀的&#xff09;apple-app-site-association, teamid在 IOS 开发者中心的会员找&#xff0c;appid在 xcode里面找 {"applin…...

隐式与显式等待的区别及混合使用

隐式等待&#xff08;Implicit Wait&#xff09;和显式等待&#xff08;Explicit Wait&#xff09;是 Selenium WebDriver 中两种不同的等待机制&#xff0c;用于处理动态加载的页面元素或异步操作。以下是它们的区别、作用范围以及混合使用的注意事项&#xff1a; 1. 核心区别…...