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

c/c++的opencv均值函数

C/C++ 中的均值函数:从基础到应用 📊

在 C/C++ 编程中,计算一组数值的**均值(平均值)**是一项非常基础且常见的操作。无论是数据分析、信号处理、图像处理还是机器学习,均值函数都扮演着重要的角色。本文将详细介绍如何在 C/C++ 中实现和使用均值函数,探讨其注意事项、应用场景以及在开源项目中的身影。

什么是均值函数?

均值,或算术平均值,是一组数值的总和除以这组数值的个数。数学表达式为:

Mean = ∑ i = 1 N x i N \text{Mean} = \frac{\sum_{i=1}^{N} x_i}{N} Mean=Ni=1Nxi

其中, x _ i x\_i x_i 是数据集中的第 i i i 个值, N N N 是数据集中值的总数。


C/C++ 中均值函数的实现与使用方式

在 C/C++ 中,我们可以为不同类型的数据(如 int, float, double)和不同的数据结构(如数组、std::vector)实现均值函数。

1. 针对 C 风格数组

#include <numeric> // For std::accumulate (C++11 and later)
#include <stdexcept> // For std::invalid_argument// C++11 using std::accumulate
double calculateMeanCArray(const int arr[], int size) {if (size <= 0) {throw std::invalid_argument("Array size must be positive.");}// Use long long for sum to prevent overflow with many large int valueslong long sum = 0;for (int i = 0; i < size; ++i) {sum += arr[i];}return static_cast<double>(sum) / size;
}// For floating point numbers
double calculateMeanCArrayDouble(const double arr[], int size) {if (size <= 0) {throw std::invalid_argument("Array size must be positive.");}double sum = 0.0;for (int i = 0; i < size; ++i) {sum += arr[i];}return sum / size;
}

使用示例 (C 风格数组):

#include <iostream>// ... (include calculateMeanCArray and calculateMeanCArrayDouble definitions above)int main() {int int_data[] = {1, 2, 3, 4, 5};int int_size = sizeof(int_data) / sizeof(int_data[0]);try {double mean_val_int = calculateMeanCArray(int_data, int_size);std::cout << "Mean of integers: " << mean_val_int << std::endl; // Output: 3} catch (const std::invalid_argument& e) {std::cerr << "Error: " << e.what() << std::endl;}double double_data[] = {1.5, 2.5, 3.5, 4.5, 5.5};int double_size = sizeof(double_data) / sizeof(double_data[0]);try {double mean_val_double = calculateMeanCArrayDouble(double_data, double_size);std::cout << "Mean of doubles: " << mean_val_double << std::endl; // Output: 3.5} catch (const std::invalid_argument& e) {std::cerr << "Error: " << e.what() << std::endl;}return 0;
}

2. 针对 std::vector (现代 C++)

使用 std::vector 更为灵活和安全。std::accumulate 函数可以简化求和操作。

#include <vector>
#include <numeric>   // For std::accumulate
#include <stdexcept> // For std::invalid_argumenttemplate<typename T>
double calculateMeanVector(const std::vector<T>& data) {if (data.empty()) {throw std::invalid_argument("Input vector cannot be empty.");}// Use double for sum to maintain precision and handle larger sumsdouble sum = 0.0;for (const T& val : data) {sum += static_cast<double>(val); // Cast to double before adding}// Alternatively, using std::accumulate:// double sum = std::accumulate(data.begin(), data.end(), 0.0);// Note: for integer types, ensure the initial value for accumulate is a double (0.0)// or cast inside the lambda for more control if values can be very large.return sum / data.size();
}

使用示例 (std::vector):

#include <iostream>
#include <vector>// ... (include calculateMeanVector definition above)int main() {std::vector<int> int_vec = {10, 20, 30, 40, 50};try {double mean_vec_int = calculateMeanVector(int_vec);std::cout << "Mean of vector<int>: " << mean_vec_int << std::endl; // Output: 30} catch (const std::invalid_argument& e) {std::cerr << "Error: " << e.what() << std::endl;}std::vector<double> double_vec = {1.1, 2.2, 3.3, 4.4, 5.5};try {double mean_vec_double = calculateMeanVector(double_vec);std::cout << "Mean of vector<double>: " << mean_vec_double << std::endl; // Output: 3.3} catch (const std::invalid_argument& e) {std::cerr << "Error: " << e.what() << std::endl;}return 0;
}

3. 通用模板化均值函数

为了更好的泛用性,我们可以创建一个模板函数,它可以处理任何支持算术运算的数值类型。

#include <vector>
#include <numeric>
#include <stdexcept>
#include <type_traits> // For std::is_arithmetictemplate<typename T, typename Container = std::vector<T>>
typename std::enable_if<std::is_arithmetic<T>::value, double>::type // SFINAE to ensure T is numeric
calculateMeanGeneric(const Container& data) {if (data.empty()) {throw std::invalid_argument("Input container cannot be empty.");}// Use double for sum to maintain precision and avoid overflow for common typesdouble sum = 0.0;for (const auto& val : data) {sum += static_cast<double>(val);}// Or using std::accumulate:// double sum = std::accumulate(std::begin(data), std::end(data), 0.0);// For very large integer sums, you might need a custom loop or a different accumulator type.return sum / data.size();
}

这个通用版本可以用于 std::vector, std::array, std::list 等容器类型。


⚠️ 注意事项

  1. 空容器/数组处理:
    在计算均值之前,必须检查容器或数组是否为空。除以零会导致程序崩溃或未定义行为。通常通过抛出异常或返回一个特殊值(如 NaN,Not a Number)来处理。

  2. 整数除法 vs. 浮点数除法:
    如果总和 sum 和数量 size 都是整数类型,那么 sum / size 将执行整数除法,结果会截断小数部分。

    int sum = 7;
    int count = 2;
    double mean = sum / count; // mean will be 3.0, not 3.5!
    

    为了得到精确的浮点数结果,至少有一个操作数应该是浮点类型:

    double correct_mean = static_cast<double>(sum) / count; // mean will be 3.5
    // or
    // double correct_mean = sum / static_cast<double>(count);
    // or (if sum is already double)
    // double correct_mean = sum_double / count;
    
  3. 数值溢出:
    当处理大量数据或数值较大的数据时,累加和 sum 可能会超出其数据类型的最大表示范围,导致溢出。例如,如果使用 int 存储许多大的 int 值的和,很容易溢出。

    • 解决方案: 使用一个更大范围的类型来存储累加和,例如用 long long 存储 int 的和,或始终使用 double (或 long double) 进行累加。
    // For integers, prefer:
    long long sum_ll = 0;
    for(int x : data) sum_ll += x;
    double mean = static_cast<double>(sum_ll) / data.size();// For floating point, double usually has enough precision for sum.
    
  4. 数据类型和精度:

    • 返回类型通常应为 double(或 float,如果精度要求不高)以保留小数部分。
    • 在累加浮点数时,可能会有微小的精度损失(舍入误差累积)。对于大多数应用,double 的精度足够。对于高精度科学计算,可能需要考虑 long double 或专门的数值库。
  5. std::accumulate 的初始值类型:
    当使用 std::accumulate 时,其第三个参数(初始值)的类型会决定累加过程中使用的类型。如果对 std::vector<int> 使用 std::accumulate(vec.begin(), vec.end(), 0),累加会以 int 类型进行,可能溢出。应使用 std::accumulate(vec.begin(), vec.end(), 0.0) (使用 double 初始值) 或 std::accumulate(vec.begin(), vec.end(), 0LL) (使用 long long 初始值) 来避免此问题,然后进行适当的类型转换。


🎯 使用场景

均值函数在各种计算领域都有广泛应用:

  1. 数据分析与统计:

    • 计算数据集的集中趋势,如平均成绩、平均温度、平均收入等。
    • 作为其他统计量的计算基础(如方差、标准差)。
  2. 信号处理:

    • 平滑滤波: 移动平均滤波器 (Moving Average Filter) 使用一个窗口内数据的均值来平滑信号,去除噪声。
    • 信号的直流分量 (DC component) 通常是信号的均值。
  3. 图像处理:

    • 均值滤波 (Mean Filter / Box Blur): 一种简单的图像模糊技术。用像素邻域内所有像素的平均灰度值(或颜色分量平均值)替换中心像素的值,可以有效去除图像噪声,但也会模糊边缘。
  4. 机器学习:

    • 特征归一化/标准化: 在某些算法(如梯度下降)中,将特征缩放到均值为0(或接近0)可以提高收敛速度和性能。
    • 计算模型评估指标的平均值(如平均准确率、平均损失)。
    • 在 K-均值聚类 (K-Means Clustering) 算法中,簇的中心就是簇内所有点的均值。
  5. 物理与工程:

    • 计算传感器读数的平均值以提高测量的可靠性。
    • 在模拟中计算一段时间内的平均物理量。

🌍 开源项目中的运用场景

均值计算是基础操作,几乎遍布于各类需要数据处理的开源项目中:

  1. OpenCV (开源计算机视觉库):

    • cv::blur() 函数中实现均值滤波。
    • cv::mean() 函数直接计算图像或矩阵元素的均值。
    • 内部大量用于图像特征计算、统计分析等。
  2. Eigen (C++ 模板库,用于线性代数):

    • 提供了对矩阵和向量元素计算均值的方法,如 .mean()
    • 广泛用于科学计算和机器学习应用的底层。
  3. NumPy (Python 库,但其核心部分用 C 实现):

    • numpy.mean() 是其核心功能之一,底层的 C 实现确保了高效计算。虽然这是 Python 库,但体现了均值在数据科学核心工具中的重要性,其 C 实现是性能的关键。
  4. TensorFlow / PyTorch (深度学习框架):

    • 在计算损失函数的平均值、对梯度进行平均(如分布式训练中的梯度同步)、数据增强中的均值填充、批量归一化 (Batch Normalization) 层中计算批数据的均值等方面广泛使用。其核心运算也常通过 C++ 实现以获得高性能。
  5. GNU Octave / R (数据分析和统计计算环境):

    • 均值是这些统计软件中最基本和最常用的函数之一,其核心计算部分通常用 C/C++ 或 Fortran 实现。
  6. 游戏引擎 (如 Godot Engine, Unreal Engine):

    • 物理模拟中计算平均速度、平均碰撞力。
    • AI 行为树中根据平均感知值做决策。
    • 性能分析中计算平均帧率。

基本上,任何需要对一组数值进行汇总、分析或平滑处理的开源项目,都会直接或间接地用到均值计算。它是构建更复杂算法和分析工具的基石之一。

相关文章:

c/c++的opencv均值函数

C/C 中的均值函数&#xff1a;从基础到应用 &#x1f4ca; 在 C/C 编程中&#xff0c;计算一组数值的**均值&#xff08;平均值&#xff09;**是一项非常基础且常见的操作。无论是数据分析、信号处理、图像处理还是机器学习&#xff0c;均值函数都扮演着重要的角色。本文将详细…...

go 数据类型转换

graph TDA[整型<br>int, int8, int16, int32, int64] -->|类型转换| B[浮点型<br>float32, float64]B -->|类型转换| AA -->|类型转换| C[布尔型<br>bool]C -->|类型转换| AB -->|类型转换| D[复数型<br>complex64, complex128]D -->…...

Go内存管理

内存管理 文章目录 内存管理何为内存&#xff1f;内存为什么需要管理&#xff1f;内存管理的方式操作系统存储模型操作系统是怎么管理内存的&#xff1f;虚拟内存与物理内存认识虚拟内存分页管理 Golang 内存模型TCMalloc核心概念go内存管理核心概念GO内存分配GO 内存逃逸机制一…...

解决软件连接RabbitMQ突发System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接异常

一、问题描述 系统再运行时&#xff0c;突然出现 System.Exception: [RabbitMQ.Send Error] RabbitMQ.Client.Exceptions.AlreadyClosedException: Already closed: The AMQP operation was interrupted: AMQP close-reason, initiated by Library, code541, text“Unexpected…...

基于局部显著位置感知的异常掩码合成方法在CT图像肺部疾病异常检测与病变定位中的应用|文献速递-深度学习医疗AI最新文献

Title 题目 Local salient location-aware anomaly mask synthesis for pulmonary disease anomaly detection and lesion localization in CT images 基于局部显著位置感知的异常掩码合成方法在CT图像肺部疾病异常检测与病变定位中的应用 01 文献速递介绍 肺部疾病是全球发…...

【cursor疑惑】cursor续杯后使用agent对话时,提示“需要pro或商业订阅的用户才能使用“

背景 cursor的pro会员体验过期了&#xff0c;想再次体验deepseek、Claude等agent对话提示:“免费版本不可以使用agent对话功能(英文忘记截图了&#xff0c;大意是这样)”。 处理方法 Step-1&#xff1a;再次续杯cursor的pro会员14天体验 详情&#xff0c;见&#xff1a;【c…...

2022年下半年信息系统项目管理师——综合知识真题及答案(3)

2022年下半年信息系统项目管理师 ——综合知识真题及答案&#xff08;3&#xff09; 零、时光宝盒 &#xff08;https://blog.csdn.net/weixin_69553582 逆境清醒&#xff09; 此文是我2025-05-19回复头条上某作者文章时的评论记录&#xff0c;原作者的文章是写那些被有组织…...

华为云Flexus+DeepSeek征文|基于华为云Flexus云服务的云服务器单机部署Dify-LLM应用开发平台

目录 一、前言 二、华为云Flexus云服务优势 三、华为云Flexus一键部署Dify 3.1 选择模板 3.2 参数配置 3.3 资源栈设置 3.4 配置确认 3.5 创建执行计划 3.6 部署 四、Dify-LLM应用开发平台初体验 4.1 访问Dify-LLM应用开发平台 4.2 设置管理员账户 4.3 登录Dify-LLM应用开发平台…...

NC105NC106美光固态颗粒NC108NC109

NC105NC106美光固态颗粒NC108NC109 美光固态颗粒技术矩阵深度解析&#xff1a;NC105/NC106/NC108/NC109的性能博弈与市场卡位 一、技术基因图谱&#xff1a;解密NC系列颗粒的底层架构 1. TLC与QLC的技术路线分野 美光NC系列颗粒呈现出清晰的技术分层&#xff1a;NC105/NC10…...

洛谷U536262 井底之“鸡” 附视频讲解

题目截图 题目背景 2024年山东财经大学新生赛的时候&#xff0c;xz_chicken厌倦了在鸡舍的生活&#xff0c;于是决定把他的主人ZQH写成QH鸡&#xff0c;然而除了在第一题中已经出现了ZQH所在队伍征途再起的合影&#xff0c;同时xz_chicken还露出其他马脚&#xff0c;比如说答案…...

特征筛选方法总结(面试准备15)

非模型方法 一.FILTER过滤法&#xff1a; 1.缺失值比例&#xff08;80%以上缺失则删除&#xff09;/方差 注意&#xff1a; 连续变量只删方差为0的&#xff0c;因为变量取值范围会影响方差大小。 离散类的看各类取值占比,如果是三分类变量可以视作连续变量。 函数&#xff1a;V…...

深入解析分布式数据库TiDB:原理、优化与架构实践

前言 在云计算与大数据时代&#xff0c;传统单机数据库面临三大挑战&#xff1a;海量数据存储、高并发访问和实时分析需求。MySQL 分库分表方案复杂、NoSQL 缺乏 ACID 支持、MPP 数仓难以处理 OLTP… 在这样的背景下&#xff0c;TiDB 应运而生。作为一款开源的分布式 NewSQL 数…...

YouTube视频字幕转成文章算重复内容吗?

很多创作者误以为「自己说的话不算抄袭」&#xff0c;却不知道YouTube自动生成的字幕早已被搜索引擎存档。 去年就有案例&#xff1a;某美食博主将教程视频字幕转为图文&#xff0c;结果原创度检测仅42%&#xff0c;导致页面权重暴跌。 本文揭秘5个实操技巧&#xff1a;从删除…...

codeup添加流水线docker自动化部署

在项目根目录下增加Dockerfile文件 # 使用基础镜像 FROM maven:3.8.4-openjdk-17-slim AS build # 设置工作目录 WORKDIR /app # 复制项目源代码 COPY . . # 构建项目 RUN mvn clean package -DskipTests # 验证JAR包是否生成 RUN ls -l target/your-project.jar # 使用合适的…...

面试点补充

目录 1. 搭建lnmp Linux 系统基础命令 nginx相关命令 MySQL 相关命令 PHP 相关命令 验证命令 下载并部署 Discuz! X3.4 论坛 到 Nginx 网站 2. 脑裂 2.1 脑裂的定义 2.2 脑裂产生的原因 1. 主备节点之间的心跳线中断 2. 优先级冲突 3. 系统或服务负载过高 2.3 如何…...

深入解析 Oracle session_cached_cursors 参数及性能对比实验

在 Oracle 数据库管理中&#xff0c;session_cached_cursors参数扮演着至关重要的角色&#xff0c;它直接影响着数据库的性能和资源利用效率。本文将深入剖析该参数的原理、作用&#xff0c;并通过性能对比实验&#xff0c;直观展示不同参数设置下数据库的性能表现。 一、sessi…...

MyBatis:动态SQL

文章目录 动态SQLif标签trim标签where标签set标签foreach标签include标签和sql标签 Mybatis动态SQL的官方文档&#xff1a; https://mybatis.net.cn/dynamic-sql.html 动态SQL 动态SQL是 MyBatis的强大特性之一,如果是使用JDBC根据不同条件拼接sql很麻烦&#xff0c;例如拼接…...

数据库性能调优:索引设计、缓存配置与查询计划优化

在高并发、大数据量场景下,数据库性能直接影响系统稳定性与用户体验。 本文将从索引设计、缓存配置、查询计划优化三大核心维度出发,结合实战案例与代码示例,系统解析数据库性能调优的关键策略,并深入讲解 EXPLAIN ANALYZE 与 索引覆盖策略 的应用技巧。 一、索引设计:从…...

安全强化的Linux

SElinux简介 SELinux是security-Enhanced Linux的缩写,意思是安全强化的linux SELinux主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用。传统的访问控制在我们开启权限后,系统进程可以直接访问 当我们对权限设置不严谨时,这种访问方式就是系统的安全漏洞 在…...

计算机网络(2)——应用层(上)

1.应用层概述 应用层(Application Layer)属于计算机网络体系结构中的最顶层&#xff0c;直接面向用户&#xff0c;提供各种网络服务和应用程序的接口 本文主要的学习内容如下&#xff1a; (1)网络应用进程通信方式 客户端-服务器方式点对点方式混合方式 (2)网络应用的需求与传输…...

day017-磁盘管理-实战

文章目录 1. 硬盘命名规则2. 添加硬盘2.1 查看硬盘名称 3. 硬盘分区3.1 分区命名规则&#xff1a;mbr分区表格式3.2 创建分区&#xff1a;fdisk3.2.1 fdisk -l&#xff1a;查看硬盘及分区信息3.2.2 fdisk /dev/sdc :为该硬盘分区3.2.3 创建扩展分区和逻辑分区3.2.4 保存设置并退…...

Win10 安装单机版ES(elasticsearch),整合IK分词器和安装Kibana

一. 先查看本机windows是否安装了ES(elasticsearch)&#xff0c;检查方法如下&#xff1a; 检查进程 按 Ctrl Shift Esc 组合键打开 “任务管理器”。在 “进程” 选项卡中&#xff0c;查看是否有 elasticsearch 相关进程。如果有&#xff0c;说明系统安装了 ES。 检查端口…...

STM32 控制 OLED 全攻略(二):实现字符和汉字的显示

目录 一 前言 二 OLED介绍 &#xff08;一&#xff09;SSD1306 &#xff08;二&#xff09;OLED屏幕 三 显示原理结合代码解释 1 指令---0x00 2 数据---0x40 3 初始化oled函数 4 codetab.h 四 显示字符串的原理 &#x1f9fe; ASCII 编码范围&#xff1a; ✅ OLED_S…...

c#将json字符串转换为对象数组

在C#中&#xff0c;将JSON字符串转换为对象数组是一个常见的需求&#xff0c;特别是在处理来自Web API的响应或需要反序列化本地文件内容时。这可以通过使用Newtonsoft.Json&#xff08;也称为Json.NET&#xff09;库或.NET Core内置的System.Text.Json来完成。以下是如何使用这…...

Cryosparc里头restack的妙用

在Cryosparc里头经常需要迁移job或者将particle打包成relion可以识别的模式&#xff0c;总是会遇到一个问题&#xff0c;我们需要的颗粒明明很少&#xff0c;但总是保存出一大堆东西来。原因就是&#xff0c;他会把最开初的particle都给你算进来&#xff0c;而不是某个作业对应…...

.bat文档如何运行Python程序

.bat文档如何运行Python程序 在Windows操作系统中&#xff0c;你可以通过几种方式来运行Python程序&#xff0c;即使是通过.bat批处理文件。.bat文件是一种批处理脚本&#xff0c;它允许你执行一系列命令。以下是一些步骤和示例&#xff0c;说明如何从.bat文件运行Python程序。…...

力扣HOT100之二叉树:230. 二叉搜索树中第 K 小的元素

这道题直接用最笨的办法来做的&#xff0c;用递归来做&#xff0c;我们定义一个全局变量vector<int> element&#xff0c;然后使用中序遍历&#xff0c;每当碰到一个非空节点就将其加入到向量中&#xff0c;这样依赖当向量中的元素小于k时&#xff0c;就返回0&#xff0c…...

【Nextcloud】使用 LNMP 架构搭建私有云存储:Nextcloud 实战指南

目录 一、环境准备与基础配置 1. 系统环境要求 2. 初始化系统配置 二、搭建 LNMP 基础架构 1. 一键安装 LNMP 组件 2. 启动数据库服务 三、部署 Nextcloud 存储服务 1. 上传并解压安装包 2. 设置目录权限&#xff08;测试环境配置&#xff09; 3. 配置 MariaDB 数据库…...

已知6、7、8月月平均气温和标准差,求夏季季平均温度与标准差

由下面定理&#xff0c;得出平方和的公式&#xff1a;&#xff08;即每天的温度平方和&#xff09; 这样就可以推出季平均的算法&#xff1a; 举例&#xff1a;在Excel用公式算&#xff0c;不要手算&#xff1a; 因此季平均&#xff1a;(B2*C2B3*C3B4*C4)/SUM(B2:B4) 季标准差…...

【cursor指南】cursor免费续杯pro会员试用

背景 心血来潮(其实是被逼的)&#xff0c;开始需要cursor里面的agent对话。cursor用着用着就会出现点数耗尽、试用到期等问题&#xff0c;于是自行开始找免费的cursor会员续用方法。 Part01&#xff1a;参考链接鸣谢 1. Cursor 全攻略&#xff1a;注册、使用到无限续杯&…...

Visual Studio解决方案构建三剑客:生成/重新生成/清理完全指南(实战经验总结)

文章目录 当你在VS里右键解决方案时...一、先看实战场景&#xff08;老板发飙警告&#xff09;二、三大命令解剖课&#xff08;重点标记版&#xff09;2.1 生成解决方案&#xff08;F7&#xff09;2.2 重新生成解决方案&#xff08;CtrlAltF7&#xff09;2.3 清理解决方案&…...

《JVM如何判断一个对象可以被回收?图文详解GC Root算法》

大家好呀&#xff01;我是你们的老朋友Java技术博主&#x1f44b; 今天咱们来聊聊Java虚拟机(JVM)中一个超级重要的话题——垃圾回收机制(Garbage Collection)和GC Root可达性分析&#xff01;这可是Java程序员必须掌握的核心知识点哦&#xff01;&#x1f60e; &#x1f31f;…...

常用算法/机理模型演示平台搭建(一)

算法/机理模型演示平台搭建 一、算法列表(app/algorithms)二、行业机理模型 (app/models)三、如何使用本项目旨在为初学者提供 35种 常用算法和 9种 行业机理模型的简单Python实现或概念说明。每个算法都有其独特的应用场景,从数据预测、质量检测、过程控制到结构分析和优化问…...

一文详解红黑树

一文详解红黑树 前言一、基本概念与特性1.1 红黑树的定义1.2 红黑树的特性 二、红黑树的节点结构与表示三、红黑树的基本操作3.1 插入操作3.2 删除操作 四、红黑树的应用场景4.1 编程语言的集合类4.2 数据库索引4.3 Linux 内核进程调度 总结 前言 在数据结构的领域中&#xff…...

Windows 安装显卡驱动

1.第一步&#xff1a;打开Nvidia 官网驱动下载页面 2.第二步&#xff1a;选择相关信息&#xff0c; 玩游戏选择&#xff0c;GeForce Game Ready ,创意设计、摄影直播 选择 NVIDIA Studio 驱动程序 &#xff08;NVIDIA Studio Driver - WHQL.&#xff09; 2.第三步&#xff1…...

【C语言】易错题 经典题型

出错原因&#xff1a;之前运行起来的可执行程序没有关闭 关闭即可 平均数&#xff08;average&#xff09; 输入3个整数&#xff0c;输出它们的平均值&#xff0c;保留3位小数。 #include <stdio.h> int main() {int a, b, c;scanf("%d %d %d", &a, &…...

C++类与对象--5 运算符重载

对已有的运算符进行重新定义&#xff0c;赋予不同的功能&#xff0c;以适应不同的数据类型 5.1 加号运算符 实现两个自定义数据类型的加运算 (1)通过成员函数实现“”重载 class Number { public:Number(int a, int b):m_A(a),m_B(b){}Number(){}Number operator(Number &a…...

接口排查不能靠猜:实战中如何用抓包工具精准定位问题(含 Charles 使用示例)

几乎每个写代码的开发者都经历过这样的时刻&#xff1a;接口突然返回空、请求超时、前端数据没更新……你试过重启服务、翻查日志、改代码打印&#xff0c;最后还是无解。 我想说&#xff0c;其实很多问题的答案都藏在“网络请求”里&#xff0c;只是你没有去看。 这篇文章&a…...

【占融数科-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

4.7 时间模块

时间模块&#xff1a; * 1. time&#xff1a;操作时间本身 2.datetime&#xff1a;主要用于设置某一时间 3.calendar&#xff1a;主要用于时间份量计算 import time # 1. actimr:把一个表示时间的元组转换为字符串。要是不给出参数则返回当前本地时间。 print(time.asctime())…...

SHIMADZU岛津 R300RC300 Operation Manual

SHIMADZU岛津 R300RC300 Operation Manual...

(C语言篇)处理字符串的四个基础函数

strlen、strcpy、strcat、strcmp使用以及注意事项 在C语言中&#xff0c;strlen、strcpy、strcat、strcmp是处理字符串的四个基础函数&#xff0c;都在<string.h>头文件中声明。下面为你详细介绍它们的功能、用法和注意事项。 1. strlen - 计算字符串长度 函数原型&am…...

mysql的安装方式

1.yum/apt安装 yum安装&#xff1a; 先搭建yum仓库&#xff0c;可以在清华源内找&#xff1a;mysql | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror vim /etc/yum.repos.d/mysql.repo[mysql-connectors-community] nameMySQL Connectors Communit…...

嵌入式(C语言篇)Day11

嵌入式Day11 一、动态内存分配核心函数 &#xff08;一&#xff09;函数列表 函数名功能头文件返回值malloc分配连续的size字节堆内存stdlib.h成功返回首地址&#xff08;void*&#xff09;&#xff0c;失败返回NULLcalloc分配num个元素size字节/元素的堆内存&#xff0c;自…...

Java集合框架解析:从基础到底层源码

Java集合框架解析&#xff1a;从基础到底层源码 一、集合体系 1.1 两大核心接口深度解析 Collection 单列集合 List 系列 ArrayList&#xff1a;动态数组实现&#xff0c;初始容量10&#xff0c;扩容策略为 原容量的1.5倍// JDK17 扩容源码片段 int newCapacity oldCapacity…...

C语言实现android/linux按键模拟

C语言实现 input事件模拟 #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <linux/input.h>int main() {int fd open("/dev/input/event0", O_RDWR);if (fd < 0) {perror("Failed to open device");ret…...

VisionPro:轴承错位标识

找出轴承缺陷并标记:效果 1.打开导入图片 2.添加CogToolblock:方便后续写代码 3.对零件进行模板匹配 4.对图片进行预处理(重点) 5.添加找圆工具和展开工具 根据下图将线链接 6.添加模板匹配工具并运行 7.训练模板 好的全找出来 8.代码编写 红色框为添加的代码(下面有完整代码) …...

专题五:floodfill算法(扫雷游戏精讲)

以leetcode529题 题目解析&#xff1a; M表示&#xff1a;未挖出的地雷 E表示&#xff1a;未挖出的空白方块 什么叫未挖出&#xff0c;就是你没玩的时候&#xff0c;棋盘是什么样的&#xff0c;就是你站在上帝视角看待棋盘 B&#xff1a;表示挖出来是空白的&#xff0c;如…...

MySQL企业版免费开启,强先体验

近期Oracle突然宣布&#xff0c;MySQL企业版面向开发者免费开放下载&#xff0c;这一消息瞬间引爆DBA圈。作为数据库领域的“顶配车型”&#xff0c;企业版长期因高昂授权费让中小团队望而却步&#xff0c;如今免费开放无异于“劳斯莱斯开进菜市场”。 本文将深度拆解企业版的…...

React Contxt详解

React Contxt详解 React 的 Context API 是用于跨组件层级传递数据的解决方案&#xff0c;尤其适合解决「prop drilling」&#xff08;多层组件手动传递 props&#xff09;的问题。以下是关于 Context 的详细解析&#xff1a; 文章目录 React Contxt详解一、Context 核心概念二…...