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

Starrocks 的 ShortCircuit短路径

背景

本文基于 Starrocks 3.3.5
本文主要来探索一下Starrocks在FE端怎么实现 短路径,从而加速点查查询速度。
在用户层级需要设置 enable_short_circuit 为true

分析

数据流:
直接到StatementPlanner.createQueryPlan方法:

...
OptExpression root = ShortCircuitPlanner.checkSupportShortCircuitRead(logicalPlan.getRoot(), session);
...
optimizedPlan = optimizer.optimize(session,root,mvTransformerContext,stmt,new PhysicalPropertySet(),new ColumnRefSet(logicalPlan.getOutputColumn()),columnRefFactory);

首先是通过ShortCircuitPlanner.checkSupportShortCircuitRead来判断该SQL是不是支持短路径查询:

 public static OptExpression checkSupportShortCircuitRead(OptExpression root, ConnectContext connectContext) {if (!connectContext.getSessionVariable().isEnableShortCircuit()) {root.setShortCircuit(false);return root;}boolean supportShortCircuit = root.getOp().accept(new LogicalPlanChecker(), root, null);if (supportShortCircuit && OperatorType.LOGICAL_LIMIT.equals(root.getOp().getOpType())) {root = root.getInputs().get(0);}root.setShortCircuit(supportShortCircuit);return root;}
  • 通过isEnableShortCircuit也就是enable_short_circuit(默认是false) 来判断是否支持短路径查询
  • 通过visitor LogicalPlanChecker来判断SQL本身是否支持短路径查询
    通过 LogicalPlanChecker 实现看到,目前只支持 Scan Project Filter Limit 操作:
     public static class LogicalPlanChecker extends BaseLogicalPlanChecker {...@Overridepublic Boolean visitLogicalFilter(OptExpression optExpression, Void context) {...return visitChild(optExpression, context);}@Overridepublic Boolean visitLogicalProject(OptExpression optExpression, Void context) {...return visitChild(optExpression, context);}@Overridepublic Boolean visitLogicalLimit(OptExpression optExpression, Void context) {...return visitChild(optExpression, context);}@Overridepublic Boolean visitLogicalTableScan(OptExpression optExpression, Void context) {return createLogicalPlanChecker(optExpression, allowFilter, allowLimit, allowProject,allowSort, predicate, orderByColumns, limit).visitLogicalTableScan(optExpression, context);}protected static boolean isPointScan(Table table,List<String> keyColumns,List<ScalarOperator> conjuncts,ShortCircuitContext shortCircuitContext) {Map<String, PartitionColumnFilter> filters = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);filters.putAll(ColumnFilterConverter.convertColumnFilter(conjuncts, table));if (keyColumns == null || keyColumns.isEmpty()) {return false;}long cardinality = 1;for (String keyColumn : keyColumns) {if (filters.containsKey(keyColumn)) {PartitionColumnFilter filter = filters.get(keyColumn);if (filter.getInPredicateLiterals() != null) {cardinality *= filter.getInPredicateLiterals().size();// TODO(limit operator place fe)if (cardinality > MAX_RETURN_ROWS ||(shortCircuitContext.getMaxReturnRows() != 0 && cardinality != 1)) {return false;}} else if (!filter.isPoint()) {return false;}} else {return false;}}return true;}}}
    
    • 直接看visitLogicalTableScan这个方法
      只有是存算一体的,也就是LogicalOlapScanOperator实例,才会有短路径查询,最终会走到ShortCircuitPlannerHybrid.LogicalPlanChecker.visitLogicalTableScan方法
      public Boolean visitLogicalTableScan(OptExpression optExpression, Void context) {LogicalScanOperator scanOp = optExpression.getOp().cast();Table table = scanOp.getTable();if (!(table instanceof OlapTable) || !(KeysType.PRIMARY_KEYS.equals(((OlapTable) table).getKeysType()))) {return false;}for (Column column : table.getFullSchema()) {if (IDictManager.getInstance().hasGlobalDict(table.getId(), column.getColumnId())) {return false;}}List<String> keyColumns = ((OlapTable) table).getKeyColumns().stream().map(Column::getName).collect(Collectors.toList());List<ScalarOperator> conjuncts = Utils.extractConjuncts(predicate);return isPointScan(table, keyColumns, conjuncts, shortCircuitContext);}
      
      • 首先必须满足 是主键模型
      • 再次是 必须满足SQL 查询的表和字段没有全局字典
      • 最后 判断是不是点查
        满足:1. 过滤条件要么是IN,要么是=
        2. 如果是IN的话,IN中的项不能超过2024个
        3. 必须包含所有的主键(可以额外包含其他的非主键)
  • 如果确定可以走短路径的话,则设置root.setShortCircuit(true),否则为false

再次进行计划级别的优化 optimizer.optimize:
这里会调用optimizeByCost方法,到调用 rewriteAndValidatePlan方法:

 private OptExpression rewriteAndValidatePlan(OptExpression tree,TaskContext rootTaskContext) {OptExpression result = logicalRuleRewrite(tree, rootTaskContext);OptExpressionValidator validator = new OptExpressionValidator();validator.validate(result);// skip memoif (result.getShortCircuit()) {result = new OlapScanImplementationRule().transform(result, null).get(0);result.setShortCircuit(true);}return result;}

ShortCircuit 短路径涉及到的有两方面:

  1. logicalRuleRewrite中 ruleRewriteForShortCircuit
        private Optional<OptExpression> ruleRewriteForShortCircuit(OptExpression tree, TaskContext rootTaskContext) {Boolean isShortCircuit = tree.getShortCircuit();if (isShortCircuit) {deriveLogicalProperty(tree);ruleRewriteIterative(tree, rootTaskContext, RuleSetType.SHORT_CIRCUIT_SET);ruleRewriteOnlyOnce(tree, rootTaskContext, new MergeProjectWithChildRule());OptExpression result = tree.getInputs().get(0);result.setShortCircuit(true);return Optional.of(result);}return Optional.empty();}
    

这里会专门针对于shortCircuit做一些规则优化:

new PruneTrueFilterRule(),
new PushDownPredicateProjectRule(),
PushDownPredicateScanRule.OLAP_SCAN,
new CastToEmptyRule(),
new PruneProjectColumnsRule(),
PruneScanColumnRule.OLAP_SCAN,
new PruneProjectEmptyRule(),
new MergeTwoProjectRule(),
new PruneProjectRule(),
new PartitionPruneRule(),
new DistributionPruneRule();
 new MergeProjectWithChildRule()

以上规则只是在project以及 常量优化,以及更好的过滤数据的层级进行了优化,免去了一般性的规则过滤. 正如primary_key_table所说,由于primary key模型使得谓词下推成为了可能。

  1. OlapScanImplementationRule().transform
    这个也是在该SQL能够进行短路径的情况下,才会走到的数据流
    这一步的作用主要是把逻辑的scan转换为物理的scan

经过了以上两步以后,就直接返回了,也不会进入到memo的CBO优化。
至此 FE端 短路径的 优化就结束了,接下来就是生成物理计划了。

相关文章:

Starrocks 的 ShortCircuit短路径

背景 本文基于 Starrocks 3.3.5 本文主要来探索一下Starrocks在FE端怎么实现 短路径&#xff0c;从而加速点查查询速度。 在用户层级需要设置 enable_short_circuit 为true 分析 数据流&#xff1a; 直接到StatementPlanner.createQueryPlan方法&#xff1a; ... OptExpres…...

Windows远程访问Ubuntu的方法

要在Windows上远程访问Ubuntu系统&#xff0c;以下是几种常见的方法&#xff1a; SSH (Secure Shell):通过Windows命令行远程连接到Ubuntu。 在Ubuntu上&#xff0c;确保安装并启用了SSH服务&#xff08;通常可以通过sudo apt update && sudo apt install openssh-serv…...

23种设计模式-行为型模式之模板方法模式(Java版本)

Java 模板方法模式&#xff08;Template Method Pattern&#xff09;详解 &#x1f9e0; 什么是模板方法模式&#xff1f; 模板方法模式是一种行为型设计模式&#xff0c;定义了一个操作中的算法骨架&#xff0c;将一些步骤的实现延迟到子类中。通过模板方法模式&#xff0c;…...

(undone) MIT6.S081 Lec17 VM for APP 学习笔记

url: https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/lec17-virtual-memory-for-applications-frans/17.1-ying-yong-cheng-xu-shi-yong-xu-ni-nei-cun-suo-xu-yao-de-te-xing 17.1 应用程序使用虚拟内存所需要的特性 今天的话题是用户应用程序使用的虚拟内存…...

值拷贝、浅拷贝和深拷贝

✅ 一、基本概念 1. 值拷贝&#xff08;Value Copy&#xff09; 含义&#xff1a;将一个变量的值完整复制到另一个变量中。 对象级别表现&#xff1a;调用的是拷贝构造函数&#xff08;copy constructor&#xff09;。 特点&#xff1a;对基本类型或不含动态资源的对象&…...

JWT原理及工作流程详解

JSON Web Token&#xff08;JWT&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间安全传输信息。其核心原理是通过结构化、签名或加密的JSON对象实现无状态身份验证和授权。以下是JWT的工作原理和关键组成部分&#xff1a; 1. JWT结构 J…...

广西某建筑用花岗岩矿自动化监测

1. 项目简介 某矿业有限公司成立于2021年&#xff0c;是由某建筑材料有限公司与个人共同出资成立&#xff0c;矿区面积0.4069平方公里&#xff0c;可开采筑用花岗岩、建筑用砂岩。建筑用花岗岩、建筑用砂岩可利用资源量分别为6338.69万吨、303.39万吨&#xff0c;设计生产规模…...

100个思维模型系列更新完毕!

giszz的粉丝们&#xff0c;到今天为止&#xff0c;思维模型专栏已经更新了100期&#xff0c;正式告一段落了。 以下是为你列出的100个思维模型名字&#xff08;部分思维模型可能存在多种表述方式&#xff0c;但核心概念一致&#xff0c;这里尽量涵盖不同领域常见的思维模型&am…...

Bitcoin跨链协议Clementine的技术解析:重构DeFi生态的信任边界

2025年5月2日&#xff0c;比特币Rollup项目Citrea在测试网正式推出跨链协议Clementine&#xff0c;其基于BitVM2编程语言构建的信任最小化桥接技术&#xff0c;被视为解决比特币与DeFi生态融合难题的关键突破。本文从技术背景、核心机制、安全模型、应用场景四大维度&#xff0…...

北斗导航 | RTKLib中重难点技术,公式,代码

Rtklib 一、抗差自适应卡尔曼滤波1. **核心难点**2. **公式与代码实现**二、模糊度固定与LAMBDA算法1. **核心难点**2. **LAMBDA算法实现**3. **部分模糊度固定技术**三、伪距单点定位与误差修正1. **多系统多频点修正**2. **接收机钟差与系统间偏差**四、动态模型与周跳处理1.…...

C++学习之类和对象_1

1. 面向过程与面向对象 C语言是面向过程的&#xff0c;注重过程&#xff0c;通过调用函数解决问题。 比如做番茄炒蛋&#xff1a;买番茄和鸡蛋->洗番茄和打鸡蛋->先炒蛋->把蛋放碟子上->炒番茄->再把蛋倒回锅里->加调料->出锅 而C是面向对象的&#xff…...

Oracle OCP认证考试考点详解083系列14

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 66. 第66题&#xff1a; 题目 解析及答案&#xff1a; 当一个非常大的数据文件被划分为四个部分进行 RMAN 多区段备份时&#xff0c;以下…...

华为欧拉(EulerOS)系统全栈软件部署指南:从 Redis 到 MySQL 实战详解

前言 在国产化操作系统蓬勃发展的背景下&#xff0c;华为欧拉&#xff08;EulerOS&#xff09;凭借其稳定性与安全性&#xff0c;成为企业级服务器部署的重要选择。本文基于官方技术文档与最佳实践&#xff0c;详细梳理 Redis 集群、RabbitMQ、JDK、Tomcat 及 MySQL 在欧拉系统…...

YOLO使用CableInspect-AD数据集实现输电线路缺陷检测

输电线路缺陷检测是一个关键的任务&#xff0c;旨在确保电力传输系统的可靠性和安全性。今天我们使用CableInspect-AD数据集进行训练完成缺陷检测&#xff0c;下载的数据集格式如下&#xff1a; 我们需要经过以下步骤&#xff1a; COCO转YOLO 首先是将COCO格式的数据转换为YO…...

全国青少年信息素养大赛 Python编程挑战赛初赛 内部集训模拟试卷五及详细答案解析

博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解...

三个线程 a、b、c 并发运行,b,c 需要 a 线程的数据如何解决

说明&#xff1a; 开发中经常会碰到线程并发&#xff0c;但是后续线程需要等待第一个线程执行完返回结果后&#xff0c;才能再执行后面线程。 如何处理呢&#xff0c;今天就介绍两种方法 1、使用Java自有的API即CountDownLatch&#xff0c;进行实现 思考&#xff1a;CountDown…...

python实现点餐系统

使用python实现点餐系统的增加菜品及价格&#xff0c;删除菜品&#xff0c;查询菜单&#xff0c;点菜以及会员折扣价等功能。 代码&#xff1a; 下面展示一些 内联代码片。 # coding utf-8menu {拍黄瓜: 6, 小炒肉: 28, 西红柿炒蛋: 18, 烤鱼: 30, 红烧肉: 38, 手撕鸡: 45,…...

力扣26——删除有序数组中的重复项

目录 1.题目描述&#xff1a; 2.算法分析&#xff1a; 3.代码展示&#xff1a; 1.题目描述&#xff1a; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对…...

A2A与MCP定义下,User,Agent,api(tool)间的交互流程图

官方图&#xff1a; 流程图&#xff1a; #mermaid-svg-2smjE8VYydjtLH0p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2smjE8VYydjtLH0p .error-icon{fill:#552222;}#mermaid-svg-2smjE8VYydjtLH0p .error-tex…...

【大模型面试每日一题】Day 13:数据并行与模型并行的区别是什么?ZeRO优化器如何结合二者?

【大模型面试每日一题】Day 13&#xff1a;数据并行与模型并行的区别是什么&#xff1f;ZeRO优化器如何结合二者&#xff1f; &#x1f4cc; 题目重现 &#x1f31f;&#x1f31f; 面试官&#xff1a;数据并行与模型并行的区别是什么&#xff1f;ZeRO优化器如何结合二者&…...

各种注解含义及使用

RestController RestController注解 是Spring 4.0引入的一个组合注解&#xff0c;用于简化RESTful Web服务的开发。 RestController注解 相当于 Controller 和 ResponseBody 注解的组合&#xff0c;表示该类是一个控制器&#xff0c;并且所有的方法返回值都将直接写入HTTP响应体…...

amass:深入攻击面映射和资产发现工具!全参数详细教程!Kali Linux教程!

简介 OWASP Amass 项目使用开源信息收集和主动侦察技术执行攻击面网络映射和外部资产发现。 此软件包包含一个工具&#xff0c;可帮助信息安全专业人员使用开源信息收集和主动侦察技术执行攻击面网络映射并执行外部资产发现。 使用的信息收集技术 技术数据来源APIs&#xf…...

xxl-job简单入门使用教程

1、从git中拉取xxl-job代码 https://gitee.com/xuxueli0323/xxl-job HTTPS&#xff1a;git clone https://gitee.com/xuxueli0323/xxl-job.git SSH&#xff1a;git clone gitgitee.com:xuxueli0323/xxl-job.git 拉取本地后&#xff0c;使用Idea打开项目&#xff0c;当前使用…...

设置GO程序在离线情况下读取本地缓存的模块

在 Go 中&#xff0c;GOPROXY 环境变量用于指定模块代理服务器的地址。如果你想让 GOPROXY 读取本地的模块&#xff0c;可以通过以下几种方式实现&#xff1a; 1. 使用本地代理服务器 你可以搭建一个本地的 Go 模块代理服务器&#xff0c;将需要的模块代码推送到代理服务器中…...

Python 爬虫基础入门教程(超详细)

一、什么是爬虫&#xff1f; 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称网页蜘蛛&#xff0c;是一种自动抓取互联网信息的程序。爬虫会模拟人的浏览行为&#xff0c;向网站发送请求&#xff0c;然后获取网页内容并提取有用的数据。 二、Python爬虫的基本原…...

C语言实现三子棋

目录 1.通过模块化来实现三子棋 2.三子棋代码基本逻辑 3.代码的书写 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; gane.h gane.c main.c 第五步&#xff1a; game.h game.c main.c 第六步&#xff1a; game.h game.c main…...

SCDN是什么?

SCDN是安全内容分发网络的简称&#xff0c;它在传统内容分发网络&#xff08;CDN&#xff09;的基础上&#xff0c;集成了安全防护能力&#xff0c;旨在同时提升内容传输速度和网络安全性。 SCDN的核心功能有&#xff1a; DDoS防御&#xff1a;识别并抵御大规模分布式拒绝服务…...

Transformer编码器+SHAP分析,模型可解释创新表达!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基本介绍 基于SHAP分析的特征选择和贡献度计算&#xff0c;Matlab2023b代码实现&#xff1b;基于MATLAB的SHAP可解释Transformer编码器回归模型&#xff0c;敏感性分析方法。 详细介绍 引言 在正向渗透&#xff08…...

机器学习第三讲:监督学习 → 带答案的学习册,如预测房价时需要历史价格数据

机器学习第三讲&#xff1a;监督学习 → 带答案的学习册&#xff0c;如预测房价时需要历史价格数据 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1…...

【TACD模拟】质子辐照对GaN器件临界电压增加的影响机制

2013 年,佛罗里达大学的 Erin Patrick 等人基于 TRIM 和 FLOODS 模型,研究了质子辐照对 AlGaN/GaN HEMTs 的影响。研究背景方面,AlGaN/GaN HEMTs 因其宽禁带、高击穿场、高电子迁移率以及优秀的热管理能力,在商业和军事领域应用前景广阔,但长期可靠性仍是问题,尤其是栅极…...

VBA高级应用30例应用4:利用屏蔽事件来阻止自动运行事件

《VBA高级应用30例》&#xff08;版权10178985&#xff09;&#xff0c;是我推出的第十套教程&#xff0c;教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开&#xff0c;这套教程案例与理论结合&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以…...

基于SSM实现的健身房系统功能实现八

一、前言介绍&#xff1a; 1.1 项目摘要 随着社会的快速发展和人们健康意识的不断提升&#xff0c;健身行业也在迅速扩展。越来越多的人加入到健身行列&#xff0c;健身房的数量也在不断增加。这种趋势使得健身房的管理变得越来越复杂&#xff0c;传统的手工或部分自动化的管…...

Java设计模式之原型模式详解:从入门到精通

1. 原型模式概述 1.1 定义与核心概念 **原型模式(Prototype Pattern)**是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过new关键字实例化。这种模式特别适用于创建成本较高的对象。 专业术语解释表: 术语解释原型(Prototype)被复制的原始对象克隆(Clone)…...

鞋样设计软件

Sxy 64鞋样设计软件是一款专业级鞋类设计工具 专为鞋业设计师与制鞋企业开发 该软件提供全面的鞋样设计功能 包括二维开版 三维建模 放码排料等核心模块 支持从草图构思到成品输出的完整设计流程 内置丰富的鞋型数据库与部件库 可快速生成各种鞋款模板 软件采用智能放码技术 精…...

移动IP与手机移动数据流量的概念、原理、区别与联系

移动IP与手机移动数据流量的概念、原理、区别与联系 文章目录 移动IP与手机移动数据流量的概念、原理、区别与联系一、概念与原理二、核心区别三、联系与协作四、技术挑战与发展趋势五、总结 一、概念与原理 移动IP 定义&#xff1a;移动IP是一种网络层协议&#xff0c;允许设…...

Spring中除DI之外获取 BEAN 的方式​

前言 在 Spring 框架的开发实践中&#xff0c;获取 Bean 是极为重要的基础操作。我们熟知通过依赖注入能便捷地获取 Bean&#xff0c;不过在许多场景下&#xff0c;还需要借助其他方式来获取 Bean。本文将深入探讨在 Spring 中除了依赖注入之外获取 Bean 的多种方式&#xff0c…...

屎上雕花系列-2nd

以下为“屎上雕花”的尝试2nd 使用Deepseek扩容而来&#xff0c;我竟然没有找到明显的错误&#xff0c;太强大了&#xff0c;工作改变生活了 LeCroy 以太网与 SAN 网络测试解决方案 硬件平台一&#xff1a;Xena 以太网流量生成器 Xena 以太网流量生成器是一款高性能的网络测…...

第十五章,SSL VPN

前言 IPSec 和 SSL 对比 IPSec远程接入场景---client提前安装软件&#xff0c;存在一定的兼容性问题 IPSec协议只能够对感兴趣的流量进行加密保护&#xff0c;意味着接入用户需要不停的调整策略&#xff0c;来适应IPSec隧道 IPSec协议对用户访问权限颗粒度划分的不够详细&…...

第四天 从CAN总线到Spark/Flink实时处理

前言 在智能网联汽车快速发展的今天&#xff0c;每辆汽车每天产生的数据量高达数GB。这些数据蕴藏着驾驶行为、车辆健康、道路状况等宝贵信息。本文将带您从零开始&#xff0c;系统学习车辆数据采集与分析的全流程技术体系&#xff0c;包含&#xff1a; CAN总线数据解析与采集…...

pandas中的数据聚合函数:`pivot_table` 和 `groupby`有啥不同?

pivot_table 和 groupby 是 pandas 中两种常用的数据聚合方法&#xff0c;它们都能实现数据分组和汇总&#xff0c;但在使用方式和输出结构上有显著区别。 0. 基本介绍 groupby分组聚合 groupby 是 Pandas 库中的一个功能强大的方法&#xff0c;用于根据一个或多个列对数据进…...

AI客服问答自动生成文章(基于deepseek实现)

小编一直在用AI做网站平台文章的润色或者二创。一直有一个想法&#xff0c;在自己网站加一个AI智能客服&#xff0c;通过文心或者deepseek来智能回答网友提出的问题&#xff0c;这样就能减少很多人工回复的麻烦&#xff0c;提高互动效率。 开发背景 其实很多网友提出的问题非…...

镜头内常见的马达类型(私人笔记)

① 螺杆式马达 驱动来源&#xff1a;机身内马达。镜头尾部有一个接收“螺杆”的接口&#xff0c;通过机械传动带动镜头对焦组。缺点&#xff1a;慢、吵、不能用于无机身马达的相机。✅ 典型镜头&#xff1a;尼康 AF、AF-D 系列&#xff1b;美能达老镜头。尼康传统的AF镜头通过…...

从 JMS 到 ActiveMQ:API 设计与扩展机制分析(一)

引言 在当今的分布式系统开发中&#xff0c;消息中间件扮演着举足轻重的角色&#xff0c;它为应用程序之间提供了可靠的异步通信机制。JMS&#xff08;Java Message Service&#xff09;作为 Java 平台上的消息服务规范&#xff0c;定义了一套通用的 API&#xff0c;使得开发者…...

第J7周:ResNeXt解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: Tensorflow &#xff08;二&#xff09;具体…...

机器学习-无量纲化与特征降维(一)

一.无量纲化-预处理 无量纲&#xff0c;即没有单位的数据 无量纲化包括"归一化"和"标准化"&#xff0c;这样做有什么用呢&#xff1f;假设用欧式距离计算一个公司员工之间的差距&#xff0c;有身高&#xff08;m&#xff09;、体重&#xff08;kg&#x…...

Shiro(八):JWT介绍

1、什么是JWT&#xff1f; JWT&#xff08;JSON Web Token&#xff0c;JSON Web令牌&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络应 用环境间安全地传递声明&#xff08;claims&#xff09;作为JSON对象&#xff1b;JWT会按指定的加密算…...

linux0.11内核源码修仙传第十六章——获取硬盘信息

&#x1f680; 前言 书接第十四章&#xff1a;linux0.11内核源码修仙传第十四章——进程调度之fork函数&#xff0c;在这一节博客中已经通过fork进程创建了一个新的进程1&#xff0c;并且可以被调度&#xff0c;接下来接着主线继续走下去。希望各位给个三连&#xff0c;拜托啦&…...

画家沈燕的山水实验:在传统皴法里植入时代密码

导语&#xff1a;当宋代山水遇上AI算法&#xff0c;当青绿颜料邂逅生态数据&#xff0c;沈燕在宣纸与人工智能的交界处&#xff0c;开启了一场关于水墨基因的“基因突变”实验。她的画笔既似考古学家的洛阳铲&#xff0c;又似未来学家的扫描仪&#xff0c;在古今对话中重构山水…...

聊聊四种实时通信技术:短轮询、长轮询、WebSocket 和 SSE

这篇文章&#xff0c;我们聊聊 四种实时通信技术&#xff1a;短轮询、长轮询、WebSocket 和 SSE 。 1 短轮询 浏览器 定时&#xff08;如每秒&#xff09;向服务器发送 HTTP 请求&#xff0c;服务器立即返回当前数据&#xff08;无论是否有更新&#xff09;。 优点&#xff1…...

国联股份卫多多与北京经纬智诚签署战略合作协议

5月9日&#xff0c;北京经纬智诚电子商务有限公司&#xff08;以下简称“经纬智诚”&#xff09;总经理王学文一行到访国联股份卫多多&#xff0c;同卫多多/纸多多副总裁、产发部总经理段任飞&#xff0c;卫多多机器人产业链总经理郭碧波展开深入交流&#xff0c;双方就未来合作…...