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

Mysql COUNT() 函数详解

简介

COUNT()函数定义

COUNT()函数是SQL中常用的 聚合函数 ,用于统计满足特定条件的记录数。它可以灵活地应用于各种查询场景,帮助用户快速获取所需的数据统计信息。该函数不仅能够计算所有行的数量,还能针对特定列进行计数,并支持去除重复值的计数操作。这种多功能性使得COUNT()成为数据分析和报表生成的重要工具,在日常数据库管理和决策支持中发挥着关键作用。

语法结构

COUNT()函数是SQL中常用的聚合函数,用于统计满足特定条件的行数。其基本语法格式如下:

SELECT COUNT(expression) FROM table_name [WHERE condition];

其中,expression可以是以下几种形式之一:

  • COUNT(*) :统计所有行,包括NULL值

  • COUNT(column_name) :统计指定列的非NULL值

  • COUNT(DISTINCT column_name) :统计指定列的不同非NULL值

值得注意的是,COUNT()函数对NULL值的处理有所不同:

  • COUNT(*)始终包括NULL值

  • COUNT(column_name)和COUNT(DISTINCT column_name)会忽略NULL值

这种灵活性使COUNT()函数能够在各种查询场景中发挥作用,满足不同的统计需求。

基本用法

COUNT(*)

COUNT(*)函数是SQL中最常用的聚合函数之一,用于统计表中的行数。它的主要特点是 包括所有行,无论各列的值是否为NULL 。这一特性使其成为获取表中总记录数的理想选择。

在实际应用中,COUNT(*)函数广泛用于各种统计场景。例如,假设我们有一个名为"employees"的员工表,可以使用以下查询来获取员工总数:

SELECT COUNT(*) AS total_employees FROM employees;

这个查询将返回表中的总行数,包括所有员工记录。

COUNT()的一个重要优势是其 执行效率 。特别是在InnoDB存储引擎中,MySQL对COUNT()进行了专门的优化。从MySQL 8.0.13版本开始,对于没有附加查询条件的SELECT COUNT() FROM tbl_name查询,InnoDB引擎会遍历最小可用的辅助索引,从而提高查询性能。这意味着即使表中有大量数据,COUNT()也能提供较快的响应。

然而,需要注意的是,COUNT()的性能可能会受到 并发事务 的影响。由于InnoDB不保存表中的内部行数,每个事务可能看到不同数量的行。因此,SELECT COUNT()语句仅统计当前事务可见的行数。这种行为在高并发环境中尤为重要,可能导致不同事务获得略有不同的结果。

为了进一步提高COUNT(*)的性能,特别是对于大型表,可以考虑以下优化策略:

  1. 创建计数器表 :这种方法涉及创建一个单独的表来跟踪行数变化,并让应用程序根据插入和删除操作更新计数器。虽然这种方法可能无法很好地扩展到数千个并发事务同时更新同一计数器表的情况,但在适当的应用场景下可以显著提高性能。

  2. 使用SHOW TABLE STATUS :如果只需要近似的行数,可以使用SHOW TABLE STATUS命令。这个命令提供了表的大致行数,虽然精度可能在40%~50%左右,但在某些情况下足以满足需求。

通过合理使用COUNT(*)函数并结合适当的优化策略,可以在各种复杂的查询场景中高效地获取所需的统计信息,同时平衡查询性能和数据准确性之间的权衡。

COUNT(column_name)

COUNT(column_name)函数是SQL中一种强大的统计工具,特别适用于需要精确了解特定列非NULL值数量的场景。与COUNT(*)不同,它 专注于指定列的有效值 ,自动过滤掉NULL值,这在处理部分字段可能存在缺失数据的表时尤为有用。

在实际应用中,COUNT(column_name)常用于多种统计需求:

  1. 产品库存管理 :假如我们有一个名为"inventory"的产品库存表,其中包含"product_id"和"quantity"等字段。使用COUNT(quantity)可以帮助我们快速统计有多少种产品的库存数量大于零:

    SELECT COUNT(quantity) AS non_zero_inventory_items
    FROM inventory
    WHERE quantity > 0;

这个查询不仅排除了NULL值,还进一步过滤了库存为零的商品,为我们提供了准确的库存统计。

  1. 用户活跃度分析 :在用户行为分析中,我们可以利用COUNT(login_date)来统计过去一个月内至少登录过一次的活跃用户数:

    SELECT COUNT(login_date) AS active_users_last_month
    FROM users
    WHERE login_date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH);

这个例子展示了COUNT(column_name)与日期函数结合使用的强大功能,为我们提供了用户活跃度的关键指标。

  1. 订单完成率评估 :对于电子商务平台,COUNT(order_status)可以帮助我们计算已完成订单的比例:

    SELECT COUNT(order_status) AS completed_orders,
    COUNT(*) AS total_orders
    FROM orders
    WHERE order_status = ‘Completed’;

通过这两个COUNT函数的组合,我们可以轻松计算出已完成订单占总订单的比例,为业务运营提供有价值的洞察。

COUNT(column_name)的灵活性在于它可以根据具体需求进行定制化使用。例如,结合CASE语句,我们可以实现更复杂的统计逻辑:

SELECT COUNT(CASE WHEN payment_method = 'Credit Card' THEN 1 ELSE NULL END) AS credit_card_payments,COUNT(CASE WHEN payment_method = 'PayPal' THEN 1 ELSE NULL END) AS paypal_payments
FROM transactions;

这个查询展示了如何使用COUNT(column_name)来统计不同支付方式的交易次数,为财务分析提供了详细的细分数据。

通过这些例子,我们可以看到COUNT(column_name)在数据统计和分析中的广泛应用价值。它不仅能有效处理NULL值,还能与其他SQL构造巧妙结合,为用户提供高度定制化的统计结果,满足多样化的数据分析需求。

COUNT(DISTINCTcolumn_name)

COUNT(DISTINCT column_name)函数是SQL中一种强大的统计工具,用于计算指定列中 唯一非NULL值的数量 。这个函数在数据去重和汇总分析中扮演着关键角色,尤其适用于需要精确统计不同实体数量的场景。

在执行COUNT(DISTINCT)时,数据库会遍历指定列的所有值,使用哈希表或其他数据结构来追踪唯一值。这种方法在小型数据集上表现出色,但面对大型数据集时可能会面临性能挑战。为了优化大规模数据的处理,可以采用以下策略:

  1. 使用索引 :在涉及的列上建立索引可以显著提升查询效率。

  2. 使用临时表或子查询 :通过预先过滤数据,可以有效减少计算量。

  3. 使用近似算法 :对于超大数据集,考虑使用如HyperLogLog算法进行近似统计。

在实际应用中,COUNT(DISTINCT)常与其他SQL构造结合使用,以满足复杂的数据分析需求。例如,结合GROUP BY子句可以实现多维度的统计:

SELECT country, COUNT(DISTINCT city) AS unique_cities
FROM locations
GROUP BY country;

这个查询展示了如何统计每个国家的独特城市数量,体现了COUNT(DISTINCT)在地理数据分析中的应用价值。

通过合理运用COUNT(DISTINCT),数据分析师和开发者可以更精准地把握数据特征,为决策制定和业务优化提供有力支持。

高级应用

条件COUNT()

在MySQL中,条件COUNT()是一种高级应用,允许用户根据特定条件进行计数。这种技术通常涉及使用WHERE子句或IF()函数与COUNT()函数相结合,以实现更精细的数据统计。

使用WHERE子句进行条件计数

最常用的方法是通过WHERE子句来限定计数范围。例如,如果我们有一个名为"sales"的销售表,我们可以使用以下查询来统计销售额超过1000元的订单数量:

SELECT COUNT(*) FROM sales WHERE amount > 1000;

这种方法简洁明了,适合处理单一条件的计数需求。

使用IF()函数进行复杂条件计数

对于更复杂的条件,IF()函数提供了一种灵活的方式来控制计数行为。IF()函数的基本语法如下:

SELECT COUNT(IF(condition, expression, NULL)) FROM table;

这里的condition是我们设定的条件,expression是在条件成立时返回的值。如果条件不成立,函数返回NULL,这样就不会被计入COUNT()的结果中。

IF()函数的优势在于可以处理多个条件的组合。例如,如果我们想统计既属于电子产品类别又售价超过500元的产品数量,可以使用以下查询:

SELECT COUNT(IF(category = 'Electronics' AND price > 500, 1, NULL)) FROM products;

这种方法允许我们在一个COUNT()函数中实现多条件的逻辑判断,提高了查询的灵活性和效率。

多层嵌套实现复杂统计

在处理复杂的数据统计需求时,可以将IF()函数与子查询结合起来,实现多层次的条件计数。例如,如果我们有一个包含用户信息的"users"表和一个记录用户活动的"activities"表,我们可以使用以下查询来统计过去一年内至少登录过三次的活跃用户数量:

SELECT COUNT(IF((SELECT COUNT(*) FROM activities WHERE user_id = u.id AND activity_date >= DATE_SUB(NOW(), INTERVAL 1 YEAR)) >= 3, 1, NULL))
FROM users u;

这个查询首先在子查询中统计每个用户的登录次数,然后在外部查询中使用IF()函数判断是否满足条件,最后使用COUNT()函数计算满足条件的用户数量。这种方法虽然语法较为复杂,但能够处理非常复杂的统计需求。

性能考虑

在使用条件COUNT()时,性能是一个需要重点关注的问题。对于大型数据表,频繁使用IF()函数可能会导致性能下降。在这种情况下,可以考虑以下优化策略:

  1. 使用子查询 :将复杂的条件判断放入子查询中,可以简化外部查询的复杂度。

  2. 使用JOIN操作 :对于涉及多表关联的统计,使用JOIN操作往往比嵌套子查询更高效。

  3. 合理使用索引 :确保参与条件判断的列都有合适的索引,可以显著提高查询速度。

通过合理设计查询结构和优化索引,可以在保证查询精度的同时,最大限度地提高条件COUNT()的执行效率。

组合COUNT()

在SQL查询中,组合使用多个COUNT()函数是一种强大的技术,可以实现复杂的数据统计需求。这种方法特别适用于需要同时获取多个维度统计数据的场景,能够提供全面而详细的数据概览。

一个典型的应用场景是对用户行为进行多角度分析。假设我们有一个电子商务网站的用户表,包含用户ID、注册日期和最近登录日期等字段。我们可以使用以下查询来获取不同类型用户的数量:

SELECT COUNT(*) AS total_users,COUNT(DISTINCT CASE WHEN last_login IS NOT NULL THEN user_id END) AS active_users,COUNT(DISTINCT CASE WHEN registration_date >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY) THEN user_id END) AS new_users
FROM users;

这个查询同时计算了总用户数、活跃用户数(最近有过登录的用户)和新注册用户数(过去30天内注册的用户)。通过组合使用COUNT()、DISTINCT和CASE语句,我们可以一次性获取多个重要的用户指标,大大提高了查询效率。

在处理大型数据集时,组合使用多个COUNT()函数可能会对查询性能产生一定影响。为了优化这类查询,可以考虑以下策略:

  1. 使用子查询 :将复杂的COUNT()表达式拆分为多个子查询,可以降低单个查询的复杂度,有时能提高整体性能。

  2. 合理使用索引 :确保参与COUNT()计算的列上有适当的索引,尤其是使用DISTINCT时,索引可以显著加快去重过程。

  3. 使用近似算法 :对于一些不需要精确统计的场景,可以考虑使用HyperLogLog等近似算法来估算COUNT(DISTINCT)的结果,以换取更快的查询速度。

通过合理组合使用多个COUNT()函数,我们可以实现更灵活、更高效的数据统计分析,为业务决策提供强有力的支持。

性能考虑

索引对COUNT()的影响

在探讨COUNT()函数的性能时,索引的选择和使用起着至关重要的作用。MySQL查询优化器在处理COUNT(*)查询时,会根据不同的索引类型和表结构做出智能选择,以提高查询效率。

MySQL 5.7.18及以上版本引入了一项重要优化: 优先使用最小的可用二级索引 来处理COUNT(*)查询。这一改变源于对成本效益的考量——二级索引树通常比主键索引树小,因此扫描成本更低。

二级索引(又称辅助索引)在处理COUNT(*)查询时展现出显著优势。这是因为二级索引的叶子节点只存储主键值,而不包含完整的行数据。这种结构使得二级索引在进行行数统计时更加轻量级,减少了I/O开销。

然而,索引的选择并非总是那么简单。在某些特殊情况下,MySQL仍可能选择使用主键索引。这种情况通常发生在 缺乏合适二级索引表结构特殊 的场景中。例如,当表中只有一个主键索引而无其他索引时,查询优化器别无选择,只能使用主键索引。

值得注意的是,COUNT()函数的表现还受 并发环境 的影响。由于InnoDB存储引擎不保存表中的内部行数,每个事务可能看到不同数量的行。这意味着COUNT(*)查询的结果可能因并发事务的存在而略有差异。这种行为在高并发系统中尤为重要,开发者需要充分考虑其潜在影响。

为了进一步优化COUNT()查询,可以考虑以下策略:

  1. 创建专门的计数器表 :这种方法涉及维护一个独立的表来跟踪行数变化,特别适合需要频繁更新和查询行数的场景。

  2. 使用SHOW TABLE STATUS :对于只需大致行数的情况,SHOW TABLE STATUS命令可以提供快速的近似值,虽然精度可能在40%~50%之间,但在某些应用场景中已足够使用。

通过合理选择和优化索引策略,结合适当的查询技巧,可以在保证查询精度的同时,最大化COUNT()函数的执行效率,从而提升整个系统的性能表现。

大表COUNT()优化

在处理大型数据表时,COUNT(*)查询可能会面临严重的性能瓶颈。为了应对这一挑战,我们可以采取多种优化策略,以提高查询效率并减少资源消耗。以下是几种有效的优化方法:

  1. 使用二级索引

在InnoDB存储引擎中,选择合适的索引类型对COUNT()查询至关重要。MySQL倾向于使用最小的可用二级索引来进行COUNT()操作,这主要是因为二级索引的叶子节点只存储主键值,相比主键索引具有更高的空间效率。例如:

CREATE INDEX idx_column ON table_name(column_name);

这种方法特别适用于需要频繁执行COUNT(*)查询的场景,尤其是在数据量达到数百万或更多行时。

  1. 使用近似算法

对于那些对结果精确度要求不高的场景,可以考虑使用近似算法来估算COUNT(*)的结果。例如,MySQL 8.0引入了APPROX_COUNT_DISTINCT()函数,它使用HyperLogLog算法来估算不同值的数量:

SELECT APPROX_COUNT_DISTINCT(column_name) FROM table_name;

这种方法能在保持较高精度的同时,大幅提高查询速度,特别适合处理海量数据。

  1. 使用分区表

对于非常大的表,可以考虑将其划分为多个较小的分区表。这样,COUNT(*)查询就可以并行地在每个分区上执行,最后合并结果:

CREATE TABLE big_table (...
) PARTITION BY RANGE (TO_DAYS(date_column));

通过这种方式,可以显著减少查询所需的时间,特别是在处理时间序列数据时效果更为明显。

  1. 使用物化视图

对于需要频繁执行的复杂COUNT(*)查询,可以考虑创建物化视图来存储预计算的结果:

CREATE VIEW view_name AS
SELECT COUNT(*) FROM table_name WHERE condition;

虽然这需要额外的存储空间,但在查询频繁且数据更新较少的场景下,可以极大地提高查询性能。

  1. 使用并行查询

在MySQL 8.0及更高版本中,可以启用并行查询功能来加速COUNT(*)操作:

SET optimizer_switch='parallel_derived=on';

这允许MySQL并行执行子查询,从而显著提高大型表上COUNT(*)查询的速度。

通过综合运用这些优化策略,我们可以有效地提高大型数据表上COUNT(*)查询的性能,确保系统在处理海量数据时仍然保持良好的响应速度。在实际应用中,应根据具体的数据特性和查询需求,选择最适合的优化方法组合,以达到最佳的效果。

注意事项

NULL值处理

在讨论COUNT()函数的使用时,NULL值的处理是一个关键点。COUNT()函数对NULL值的处理方式取决于其参数:

参数

结果

COUNT(*)

包含NULL值在内的所有行

COUNT(column_name)

排除NULL值,仅计算非NULL值

这种灵活性使得COUNT()函数能够适应不同的统计需求。例如,在统计用户登录情况时,COUNT(login_date)会自动忽略未登录(NULL值)的用户,提供准确的登录用户数。

然而,在某些场景下,可能需要包含NULL值。这时,可以使用ISNULL()或NVL()函数将NULL转换为特定值后再进行计数。这种方法在处理缺失数据或需要统一计数标准时特别有用。

COUNT()与其他聚合函数的区别

在SQL聚合函数中,COUNT()、SUM()和AVG()各有独特用途:

  • SUM()用于数值列求和,AVG()计算平均值,而COUNT()则统计行数或非NULL值数量。

  • COUNT()对NULL值的处理方式灵活,可通过COUNT(*)包含所有行,或COUNT(column_name)排除NULL值。

  • SUM()和AVG()默认忽略NULL值,需使用COALESCE()或IFNULL()处理特殊情况。

  • COUNT()在性能方面表现优异,尤其在InnoDB存储引擎中,通过优化策略如使用最小可用二级索引,可大幅提升查询效率。

这种多样性使数据分析师可根据具体需求选择最适合的函数,以实现高效准确的数据统计和分析。

相关文章:

Mysql COUNT() 函数详解

简介 COUNT()函数定义 COUNT()函数是SQL中常用的 聚合函数 ,用于统计满足特定条件的记录数。它可以灵活地应用于各种查询场景,帮助用户快速获取所需的数据统计信息。该函数不仅能够计算所有行的数量,还能针对特定列进行计数,并支…...

Redis缓存一致性难题:如何让数据库和缓存不“打架”?

标题:Redis缓存一致性难题:如何让数据库和缓存不“打架”?(附程序员脱发指南) 导言:当数据库和缓存成了“异地恋” 想象一下:你刚在美团下单了一份麻辣小龙虾,付款后刷新页面&#…...

WIn32 笔记:本专栏课件

专栏导航 上一篇:在VS2019里面,调整代码字体大小 回到目录 下一篇:计算机基础:二进制基础01,比特与字节 本节前言 在之前的讲解里面,我讲解了 Visual Studio 软件的一些个基础操作步骤。从本节开始&am…...

设置同一个局域网内远程桌面Ubuntu

1、安装xrdp: 打开终端,运行以下命令来安装xrdp: sudo apt update sudo apt install xrdp 2、启动 XRDP 并设置开机自启 sudo systemctl start xrdp sudo systemctl enable xrdp 3、验证 XRDP 运行状态 sudo systemctl status xrdp 如果显示 active (ru…...

Spring Boot 自定义 Starter 完整实战手册

Spring Boot 自定义 Starter 完整实战手册 一、核心概念与项目结构 1. 什么是 Starter? 本质:预配置模块 依赖集合 自动配置类 默认实现核心价值: 统一技术栈:团队快速复用标准组件简化配置:隐藏复杂实现细节&…...

C++ 红黑树万字详解(含模拟实现(两种版本))

目录 红黑树的概念 红黑树的性质 红黑树的删除 红黑树与AVL树的比较 红黑树的应用 红黑树的模拟实现 红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶…...

使用 Spring Boot 和 Keycloak 的 OAuth2 快速指南

1. 概述 本教程是关于使用 Spring Boot 和 Keycloak 通过 OAuth2 配置后端的。 我们将使用 Keycloak 作为 OpenID 提供程序。我们可以将其视为负责身份验证和用户数据(角色、配置文件、联系信息等)的用户服务。它是最完整的 OpenID Connect &#xff0…...

4个小时开发DeepSeek+baiduNaotu一键生成思维导图

一、引言 最近发现AI生成思维导图的解决方案普遍存在两个断层:用户需手动复制模型输出的JSON数据到脑图软件,且缺乏实时可视化反馈。基于日常使用的BaiduNaotu框架(其轻量级架构与简洁的UI设计已满足基础需求),我决定…...

DeepSeek 开源狂欢周(一)FlashMLA:高效推理加速新时代

上周末,DeepSeek在X平台(Twitter)宣布将开启连续一周的开源,整个开源社区为之沸腾,全球AI爱好者纷纷为关注。没错,这是一场由DeepSeek引领的开源盛宴,推翻了传统推理加速的种种限制。这周一&…...

视频批量分段工具

参考原文:视频批量分段工具 选择视频文件 当您启动这款视频批量分段工具程序后,有两种便捷的方式来选择要处理的视频文件。其一,您可以点击程序界面中的 “文件” 菜单,在下拉选项里找到 “选择视频文件” 按钮并点击&#xff1b…...

【OMCI实践】ONT上线过程的omci消息(五)

引言 在前四篇文章中,主要介绍了ONT上线过程的OMCI交互的第一、二、三个阶段omci消息,本篇介绍第四个阶段,OLT下发配置到ONT。前三个阶段,每个厂商OLT和ONT都遵循相同标准,OMCI的交换过程大同小异。但第四个阶段&…...

git从零学起

从事了多年java开发,一直在用svn进行版本控制,如今更换了公司,使用的是git进行版本控制,所以打算记录一下git学习的点滴,和大家一起分享。 百度百科: Git(读音为/gɪt/)是一个开源…...

服务器间迁移conda环境

注意:可使用迁移miniconda文件 or 迁移yaml文件两种方式,推荐前者,基本无bug! 一、迁移miniconda文件: 拷贝旧机器的miniconda文件文件到新机器: 内网拷贝:scp -r mazhf192.168.1.233:~/miniconda3 ~/ 外…...

计算机毕业设计SpringBoot+Vue.js精准扶贫管理系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

[RH342]tcpdump

[RH342]tcpdump 1. 题目2. 解题 1. 题目 服务器serverc 和 servera 之间有进程定期发送一个明文密码,找出它2. 解题 找出通信端口 抓包分析 tcpdump -X -vv port 6644红框中就是密码,所以密码是root123...

LeetCode-Hot100-001两数之和

给出个人解答&#xff0c;不懂的可以在评论区问 代码 使用的手写的hash函数 class Hash{ public:static const int MAXN 10007;int num;struct Data{int key;int v; int nxt;};vector<Data> data;vector<int> head;Hash(): num(0), data(3*MAXN), head(3*MAXN)…...

(2.26 “详细分析示例“ 暴力+位运算 最长优雅子数组)leetcode 2401

a&b0说明a和b的每一位都是一个0和一个1 不存在两个均为1的位次 a|0a 0与任何数|都等于它本身 &#xff08;mask&#xff09;的作用&#xff1a; 担心两数的1在用一位导致mask覆盖了&#xff1f; 答&#xff1a;出现这种情况说明mask与nums j后就直接break 由&#xff1a;…...

【Go】十六、protobuf构建基础服务信息、grpc服务启动的基础信息

商品服务 服务结构 创建 goods 服务&#xff0c;将之前 user 服务的基本结构迁移到 goods 服务上&#xff0c;完整目录是&#xff1a; mxshop_srvs user_srv … tmp … goods_srv config config.go 配置的读取表 global global.go 数据库、日志初始化、全局变量定义 handler …...

ONNX转RKNN的环境搭建

将ONNX模型转换为RKNN模型的过程记录 工具准备 rknn-toolkit:https://github.com/rockchip-linux/rknn-toolkit rknn-toolkit2:https://github.com/airockchip/rknn-toolkit2 rknn_model_zoo:https://github.com/airockchip/rknn_model_zoo ultralytics_yolov8:https://github…...

解决npm run dev报错

解决&#xff1a;Node.js 版本更新后与 OpenSSL 不兼容导致的npm报错“Error: error:0308010C:digital envelope routines::unsupported” 方法一&#xff1a;更改系统环境变量方法二&#xff1a;更改项目环境变量方法三&#xff1a;更换 Node.js 版本方法四&#xff1a;升级依…...

【Kubernetes】对资源进行PATCH

文章目录 1 更新资源的方式2 PATCH的三种方式2.1 JSON Patch2.2 Merge Patch2.3 Strategic Merge Patch 3 kubectl中的patch命令4 PATCH的优势和问题5 参考文档 1 更新资源的方式 K8S的核心就是各种资源以及针对资源的控制器&#xff0c;为了能够操作资源对象&#xff0c;apis…...

打破关节动力桎梏!杭州宇树科技如何用“一体化设计”重塑四足机器人性能?

核心价值&#xff1a;通过集成电机与行星减速器、创新双联齿轮结构&#xff0c;实现机器人关节动力单元体积缩小50%&#xff0c;力矩控制精度提升30%。&#xff08;申请人&#xff1a;杭州宇树科技有限公司&#xff0c;申请号&#xff1a;201821267397.0&#xff09; 一、技术解…...

一劳永逸解决vsocde模块import引用问题

这里写目录标题 原因解决方案 原因解决方案 原因&#xff1a; VSCode中需要显式地声明PYTHONPATH&#xff0c;不然根本找不到本项目内的模块和包的路径。 解决方法&#xff0c;加入到setting。json里当前Project路径&#xff0c;以后运行就自动添加了&#xff1a; 打开设置 …...

在 Vue 组件中,如何确认父组件在 add 模式下传入 value 的情况及其对子组件 getProducts() 方法的触发影响?

文章目录 父组件中 <ave-form> 的使用add 模式下触发逻辑value 的传入情况是否触发 getProducts()&#xff1f; 验证 add 模式下 getProducts() 是否触发结论&#xff1a; 检查父组件传入 value 的完整情况如何明确知道父组件传入的 value最终回答 父组件 index.vue子组件…...

Unity XR-XR Interaction Toolkit开发使用方法(十)组件介绍(XR Interaction Group)

目录 一、插件介绍 二、主要组件 XR Interaction Manager XR Controller XR Interactor XR Direct Interactor XR Ray Interactor XR Socket Interactor XR Gaze Interactor 三、XR Interaction Group 1、组件介绍 2、核心功能与特点 优先级与冲突管理 动态交互切…...

docker简介-学习与参考

docker Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是完全使用沙箱…...

3dtiles平移旋转工具制作

3dtiles平移旋转缩放原理及可视化工具实现 背景 平时工作中&#xff0c;通过cesium平台来搭建一个演示场景是很常见的事情。一般来说&#xff0c;演示场景不需要多完善的功能&#xff0c;但是需要一批三维模型搭建&#xff0c;如厂房、电力设备、园区等。在实际搭建过程中&…...

【第十节】C++设计模式(结构型模式)-Flyweight( 享元)模式

目录 一、问题背景 二、模式选择 三、代码实现 四、总结讨论 一、问题背景 享元模式&#xff08;Flyweight Pattern&#xff09;在对象存储优化中的应用 在面向对象系统的设计与实现中&#xff0c;创建对象是最常见的操作之一。然而&#xff0c;如果一个应用程序使用了过多…...

VScode在windows10上使用clang-format

用途&#xff1a;自动调整代码格式&#xff0c;如缩进等。 clang-format官方文档&#xff1a;ClangFormat — Clang 21.0.0git documentation 前提&#xff1a;有一个.clang-format文件 下载LLVM&#xff1a;https://github.com/llvm/llvm-project/releases&#xff0c;将可…...

青少年编程与数学 02-010 C++程序设计基础 11课题、程序结构

青少年编程与数学 02-010 C程序设计基础 11课题、程序结构 一、C程序结构二、main函数1. main 函数的基本形式1.1 无参数形式1.2 带参数形式 2. 参数解释3. 示例3.1 无参数形式3.2 带参数形式 4. 编译和运行4.1 编译4.2 运行 5. main 函数的返回值6. 总结 三、预处理指令1. #in…...

Node.js与MySQL的深入探讨

Node.js与MySQL的深入探讨 引言 Node.js,一个基于Chrome V8引擎的JavaScript运行时环境,以其非阻塞、事件驱动的方式在服务器端应用中占据了一席之地。MySQL,作为一款广泛使用的开源关系型数据库管理系统,凭借其稳定性和高效性,成为了许多应用的数据库选择。本文将深入探…...

【洛谷贪心算法题】P2240部分背包问题

【解题思路】 贪心策略选择 对于部分背包问题&#xff0c;关键在于如何选择物品放入背包以达到最大价值。由于物品可以分割&#xff0c;遍历排序后的物品数组&#xff0c;根据物品重量和背包剩余容量的关系&#xff0c;决定是将整个物品放入背包还是分割物品放入背包&#xff…...

ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;地表覆盖图的矢量化是一项至关重要的任务。天地图作为中国国家级的地理信息服务平台&#xff0c;提供了丰富且详尽的地表覆盖数据。然而&#xff0c;这些数据通常以栅格格式存在&#xff0c;不利于进行空间分析和数据…...

AF3 pair_sequences函数解读

AlphaFold3 msa_pairing模块的pair_sequences函数的核心目标是基于 MSA(多序列比对)中的物种信息,在多条链之间建立 MSA 配对索引,从而帮助 AlphaFold3 捕捉共进化信息,提升蛋白复合物预测的准确性。函数pair_sequences 通过调用 _make_msa_df、 _create_species_dict 以…...

在VSCode 中使用通义灵码最新版详细教程

在 VSCode 中使用通义灵码&#xff1a;最新版详细教程与使用场景 Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款由微软开发的轻量级、功能强大的开源代码编辑器&#xff0c;支持多种编程语言&#xff0c;深受开发者喜爱。而通义灵码&#xff08;TONGYI Lingma…...

ssh和rdp踩坑

ssh和rdp&#xff08;远程桌面&#xff09;踩坑 使用微软账号登录windows的话&#xff0c;ssh的用户名是本地用户名&#xff08;就是c盘用户文件夹下的用户名&#xff09;&#xff0c;rdp的用户名是微软账号用户名&#xff0c;但是密码都是微软账号的密码&#xff0c;跟登录密…...

Linux驱动学习(四)--字符设备注册

上一节讲到的字符设备注册与销毁是通过cdev_init、cdev_add、cdev_del等函数分步执行的&#xff0c;本小节用一种更简单的方式&#xff0c;来注册字符设备 register_chrdev 如果major为0&#xff0c;该函数将动态的分配一个主设备号并且返回对应的值如果major > 0&#xff…...

vue3 下载文件 responseType-blob 或者 a标签

在 Vue 3 中&#xff0c;你可以使用 axios 或 fetch 来下载文件&#xff0c;并将 responseType 设置为 blob 以处理二进制数据。以下是一个使用 axios 的示例&#xff1a; 使用 axios 下载文件 首先&#xff0c;确保你已经安装了 axios&#xff1a; npm install axios然后在你…...

Meta最新研究:从单张照片到3D数字人的革命性突破

随着人工智能技术的发展,3D建模和虚拟人物生成逐渐变得更加普及和高效。Meta(前身为Facebook)的最新研究成果展示了如何仅通过一张普通手机拍摄的照片就能生成高质量、全方位的3D数字人。这项技术不仅适用于虚拟试衣、游戏角色建模,还能广泛应用于AR/VR内容生成等领域。本文…...

大中型虚拟化园区网络设计

《大中型虚拟化园区网络设计》属于博主的“园区网”专栏&#xff0c;若想成为HCIE&#xff0c;对于园区网相关的知识需要非常了解&#xff0c;更多关于园区网的内容博主会更新在“园区网”专栏里&#xff0c;请持续关注&#xff01; 一.前言 华为云园区网络解决方案(简称Cloud…...

Vue 项目中配置代理的必要性与实现指南

Vue 项目中配置代理的必要性与实现指南 在 Vue 前端项目的开发过程中&#xff0c;前端与后端地址通常不同&#xff0c;可能引发跨域问题。为了在开发环境下顺畅地请求后端接口&#xff0c;常常会通过配置**代理&#xff08;proxy&#xff09;**来解决问题。这篇文章将详细解析…...

chromadb向量数据库使用 (1)

目录 完整代码代码解释 完整代码 import chromadb chroma_client chromadb.Client()collection chroma_client.create_collection(name"my_collection")collection.add(documents["This is a document about pineapple","This is a document about…...

玩机日记 12 fnOS使用lucky反代https转发到外网提供服务

目录 1、安装lucky 2、更新lucky 3、上传ssl证书 4、设置安全入口&#xff0c;替换fnOS的应用url 5、添加https反代 这一篇主要是解决一下飞牛反代https的问题。可以先看玩机日记 12.5 在PVE Windows11上部署本地AI模型&#xff0c;使用群晖反代https转发到外网提供服务&a…...

5分钟学会SpringAI

引言 要开发一个Spring AI的入门案例&#xff0c;我们可以从一个简单的Spring Boot项目开始&#xff0c;然后集成Spring AI的功能来实现基本的生成式AI任务。下面是一个步骤指南&#xff0c;帮助你快速启动并运行一个简单的Spring AI应用。 步骤 1: 准备环境 首先&#xff0…...

专业的UML开发工具StarUML

专业的UML开发工具StarUML 可靠的软件建模软件StarUML StarUML 是一款支持统一建模语言 (UML)框架的开源建模软件。它提供了几种类型的图表&#xff0c;并允许用户生成多种语言的代码。在它的帮助下&#xff0c;软件开发人员可以创建设计、概念和编码解决方案。但是&#xff0…...

go语言环境下载与配置(Windows)

下载 Go下载 - Go语言中文网 - Golang中文社区 建议在D盘中创建文件夹安装到 D 盘 &#xff0c;方便进行管理&#xff0c;然后进行傻瓜式安装。 安装 验证安装 go version 安装成功 配置环境变量 winE --> 右击此电脑 --> 选择属性 --> 高级系统设置 --> 点击…...

矩阵系列 题解

1.洛谷 P1962 斐波那契数列 题意 大家都知道&#xff0c;斐波那契数列是满足如下性质的一个数列&#xff1a; F n { 1 ( n ≤ 2 ) F n − 1 F n − 2 ( n ≥ 3 ) F_n \left\{\begin{aligned} 1 \space (n \le 2) \\ F_{n-1}F_{n-2} \space (n\ge 3) \end{aligned}\right. …...

C++ 正则表达式分组捕获入门指南

在 C 中&#xff0c;正则表达式&#xff08;regex&#xff09;是一种用于匹配字符串模式的强大工具。正则表达式不仅能帮助你查找符合特定模式的字符&#xff0c;还能捕获匹配的子字符串&#xff08;即分组捕获&#xff09;。这篇文章将介绍 C 正则表达式中的分组捕获机制&…...

动态数据表格:基于 PrimeFaces 的运行时列选择实现

在现代的 Web 应用开发中&#xff0c;动态数据表格是一个非常实用的功能&#xff0c;它允许用户根据自己的需求选择显示哪些列。这种灵活性不仅提升了用户体验&#xff0c;还能适应不同的数据展示需求。今天&#xff0c;我们将通过一个具体的实现案例&#xff0c;展示如何使用 …...

Plugin ‘mysql_native_password‘ is not loaded`

Plugin ‘mysql_native_password’ is not loaded mysql_native_password介绍1. 使用默认的认证插件2. 修改 my.cnf 或 my.ini 配置文件3. 加载插件&#xff08;如果确实没有加载&#xff09;4. 重新安装或检查 MySQL 版本 遇到错误 ERROR 1524 (HY000): Plugin mysql_nativ…...