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

冒泡与 qsort 排序策略集

今天我们要学习两种排序方法,分别是冒泡排序和qsort函数排序,冒泡排序相对qsort函数排序要简单一点,更易于理解。

1.冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法,它通过重复遍历元素列并比较相邻元素来实现排序。这个算法的名字来源于较小的元素会像气泡一样逐渐“浮”到数列的顶端。冒泡排序是一种稳定的排序算法,即它保持相等元素的初始顺序。

核心思想就是:两两相邻的元素进行比较。

 算法动画链接:
318217b5c82cf71a7313612a3b46fe62.gif (826×257)https://i-blog.csdnimg.cn/blog_migrate/318217b5c82cf71a7313612a3b46fe62.gif

void Bubble_sort(int* arr, int sz)//实现冒泡排序
{for (int i = 0; i < sz - 1; i++)//实现第一次循环,该数组一共有十个数,除去最后一个数以外,每个数都要与其他数进行比较,一共循环九次{for (int j = 0; j < sz - i - 1; j++)//实现第二次循环,实现前后相邻两两比较,第一个数需要与其他九个数比较,第二个就只需要比较八个数,依次递减{if (arr[j] > arr[j + 1])//如果前一个数大于后一个数,需要进行交换{int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int main()
{int arr[10] = { 23,45,43,56,232,567,21,12,198,88 };int sz = sizeof(arr) / sizeof(arr[0]);//求解arr数组内有多少个元素Bubble_sort(arr, sz);//for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

上述是一个简单的冒泡排序算法,他的时间复杂度是比较高的,我们可以对其做一定的优化:
 

void Bubble_sort(int* arr, int sz)
{int flag;//设置一个变量,判断数组是否有序for (int i = 0; i < sz - 1; i++){flag = 1;//flag为1代表有序for (int j = 0; j < sz - i - 1; j++){if (arr[j] > arr[j + 1]){flag = 0;//flag为0,代表无序,如果一个数排完还没有进行交换,flag没有置0,说明数组已经有序,后面的数无需再排int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}if (flag == 1)//有序退出循环break;}
}int main()
{int arr[10] = { 23,45,43,56,232,567,21,12,198,88 };int sz = sizeof(arr) / sizeof(arr[0]);Bubble_sort(arr, sz);//for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

冒泡排序并非只能进行整型数组的排序,他还能进行浮点数,字符串甚至结构体的排序,我们在这里就不一一介绍了,它们的思想都是相同的,区别只是比大小和交换的区别,大家有兴趣可以了解一番。 

 2.qsort函数排序

 qsort函数要比冒泡函数复杂很多,我们将举更多示例来学习。

有关qsort详细信息的链接:

qsort - C++ Referencehttps://legacy.cplusplus.com/reference/cstdlib/qsort/?kw=qsort

qsort 函数是 C 标准库 <stdlib.h> 中提供的一个通用排序函数,它可以对任意类型的数组进行排序。

首先我们来看这个函数原型:

void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

qsort函数参数有四个 ,分别为:

  • base:指向要排序的数组的第一个元素的指针。由于使用 void* 类型,它可以接受任意类型的数组。
  • nmemb:数组中元素的个数。
  • size:每个元素的大小(以字节为单位)。
  • compar:一个指向比较函数的指针,用于定义元素之间的比较规则。该比较函数接受两个 const void* 类型的参数,返回一个整数值表示两个元素的大小关系。它的函数原型为:
int compar(const void *a, const void *b);

int compare(const void* p1,const void* p2)
{return *((int*)p1) - *((int*)p2);
}int main()
{int arr[10] = { 23,45,43,56,232,567,21,12,198,88 };size_t sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), compare);for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

上面的示例比较简单,我们要想学好qsort函数,还得多加练习,我们用qsort排序结构体试一下。

在排序结构体之前,我们先来学习另一个函数,strcmp,它是专门用来比较两个字符串大小的函数,它是怎么比较的呢?

有关strcmp详细详细信息的链接:

strcmp - C++ Referencehttps://legacy.cplusplus.com/reference/cstring/strcmp/?kw=strcmp

strcmp 函数是 C 语言标准库 <string.h> 中用于比较两个字符串的函数

strcmp 函数的主要作用是按照字典序(ASCII 码顺序)比较两个字符串,根据比较结果返回不同的值,从而帮助开发者判断两个字符串的大小关系。

函数原型:

int strcmp(const char *s1, const char *s2);

参数:

s1:指向要比较的第一个字符串的指针。

s2:指向要比较的第二个字符串的指针。

返回值:

返回值小于 0:表示 s1 所指向的字符串在字典序上小于 s2 所指向的字符串。也就是说,s1 字符串中第一个不同字符的 ASCII 码值小于 s2 中对应位置字符的 ASCII 码值,或者 s1 是 s2 的前缀。

返回值等于 0:表示 s1 所指向的字符串和 s2 所指向的字符串完全相同。

返回值大于 0:表示 s1 所指向的字符串在字典序上大于 s2 所指向的字符串。即 s1 字符串中第一个不同字符的 ASCII 码值大于 s2 中对应位置字符的 ASCII 码值,或者 s2 是 s1 的前缀。

struct Student {char name[10];int age;
};int compare_name(const void* p1, const void* p2)
{return strcmp(((struct Student*)p1)->name,((struct Student*)p2)->name);
}int compare_age(const void* p1, const void* p2)
{return ((struct Student*)p1)->age - ((struct Student*)p2)->age;
}int main()
{struct Student stu[4] = { {"lisa",18},{"peter",20},{"kate",15},{"jane",25} };size_t sz = sizeof(stu) / sizeof(stu[0]);//qsort(stu, sz, sizeof(stu[0]), compare_name);//按照name排序qsort(stu, sz, sizeof(stu[0]), compare_age);//按照age排序for (int i = 0; i < sz; i++){printf("%s ", stu[i].name);}printf("\n");for (int i = 0; i < sz; i++){printf("%d ", stu[i].age);}return 0;
}

 3.用冒泡排序模拟qsort函数功能的实现

int compare(const void* p1, const void* p2)
{return (*(int*)p1 - *(int*)p2);//将p1,p2转换为整型指针,解引用后读取四个字节,就是原来数组的值
}void Swap(void* p1, void* p2, size_t size)
{for (int i = 0; i < size; i++)//逐一交换每一个字节的内容,循环四次,交换整型变量{char temp = *((char*)p1+i);*((char*)p1 + i) = *((char*)p2 + i);*((char*)p2 + i) = temp;}
}void Bubble(void* arr, size_t sz, size_t size, int (*compare)(const void*, const void*))
{for (int i = 0; i < sz - 1; i++){for (int j = 0; j < sz - i - 1; j++){if (compare((char*)arr + j * size, (char*)arr + (j + 1) * size) > 0)//调用比较函数{Swap((char*)arr + j * size, (char*)arr + (j + 1) * size, size);}}}
}int main()
{int arr[10] = { 1,5,33,4,2,6,9,8,99,100 };size_t sz = sizeof(arr) / sizeof(arr[0]);Bubble(arr, sz, sizeof(arr[0]), compare);//模仿qsort函数for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

相关文章:

冒泡与 qsort 排序策略集

今天我们要学习两种排序方法&#xff0c;分别是冒泡排序和qsort函数排序,冒泡排序相对qsort函数排序要简单一点&#xff0c;更易于理解。 1.冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它通过重复遍历元素列并比较相邻元素来实现排…...

【Linux】第七章 控制对文件的访问

目录 1. 什么是文件系统权限&#xff1f;它是如何工作的&#xff1f;如何查看文件的权限&#xff1f; 2. 解释‘-rw-r--r--’这个字符串。 3. 使用什么命令可以更改文件和目录的权限&#xff1f;写出分别使用符号法和数值法将权限从 754 修改为 775 的命令。 4. 如何修改文…...

网站301搬家后谷歌一直不收录新页面怎么办?

当网站因更换域名或架构调整启用301重定向后&#xff0c;许多站长发现谷歌迟迟不收录新页面&#xff0c;甚至流量大幅下滑。 例如&#xff0c;301跳转设置错误可能导致权重传递失效&#xff0c;而新站内容与原站高度重复则可能被谷歌判定为“低价值页面”。 即使技术层面无误&a…...

socket 客户端和服务器通信

服务器 using BarrageGrab; using System; using System.Collections.Concurrent; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading;namespace Lyx {class Server{private TcpListener listener;private Concurre…...

C实现md5功能

md5在线验证&#xff1a; 在线MD5计算_ip33.com 代码如下&#xff1a; #include "md5.h" #include <string.h> #include "stdio.h"/** 32-bit integer manipulation macros (little endian)*/ #ifndef GET_ULONG_LE #define GET_ULONG_LE(n,b,i) …...

【项目】CherrySudio配置MCP服务器

CherrySudio配置MCP服务器 &#xff08;一&#xff09;Cherry Studio介绍&#xff08;二&#xff09;MCP服务环境搭建&#xff08;1&#xff09;环境准备&#xff08;2&#xff09;依赖组件安装<1> Bun和UV安装 &#xff08;3&#xff09;MCP服务器使用<1> 搜索MCP…...

第五节:React Hooks进阶篇-如何用useMemo/useCallback优化性能

反模式&#xff1a;滥用导致的内存开销React 19编译器自动Memoization原理 React Hooks 性能优化进阶&#xff1a;从手动到自动 Memoization &#xff08;基于 React 18 及以下版本&#xff0c;结合 React 19 新特性分析&#xff09; 一、useMemo/useCallback 的正确使用场景…...

【Qt】QWidget 核⼼属性详解

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;QT 欢迎大家点赞收藏评论&#x1f60a; 目录 &#x1f3dd; 一.相关概念&#x1f3a8;二. 核⼼属性概览&#x1f344;2.1 enabled&#x1f96d;2.2geometry&#x1f338; 2.3 windowTitle&#…...

如何知道raid 有问题了

在 Rocky Linux 8 上&#xff0c;你的服务器使用了 RAID5&#xff08;根据 lsblk 输出&#xff0c;/dev/sda3、/dev/sdb1 和 /dev/sdc1 组成 md127 RAID5 阵列&#xff09;。为了监控 RAID5 阵列中磁盘的健康状态&#xff0c;并及时发现某块磁盘损坏&#xff0c;可以通过以下方…...

操作系统之shell实现(上)

&#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C语言的相关知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给更…...

精益数据分析(3/126):用数据驱动企业发展的深度解析

精益数据分析&#xff08;3/126&#xff09;&#xff1a;用数据驱动企业发展的深度解析 大家好&#xff01;一直以来&#xff0c;我都坚信在当今竞争激烈的商业环境中&#xff0c;数据是企业获得竞争优势的关键。最近深入研究《精益数据分析》这本书&#xff0c;收获颇丰&…...

React 18/19 使用Ant Design全局弹窗message

react 18 及以上&#xff0c;拥有并发模式&#xff0c;不允许在渲染过程中直接触发副作用&#xff08;如弹窗、网络请求等&#xff09;&#xff0c;应将其放至 useEffect 中&#xff0c;确保其在渲染完成后调用 useEffect(() > {message.success(操作成功&#xff01;);}, …...

【spark3.2.4】--完全分布式集群搭建

一、spark-env.sh 文件配置&#xff08;操作路径&#xff1a;$SPARK_HOME/conf/spark-env.sh&#xff09; 如果还没创建&#xff1a; cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh然后编辑&#xff08;比如用 vim&#xff09;&#xff1a; vim…...

Web3技术下数字资产数据保护的实践探索

在这个信息爆炸的时代&#xff0c;数字资产已经成为我们生活中不可或缺的一部分。随着Web3技术的兴起&#xff0c;它以其去中心化、透明性和安全性的特点&#xff0c;为数字资产的管理和保护提供了新的解决方案。本文将探讨Web3技术在数字资产数据保护方面的实践探索&#xff0…...

灰度共生矩阵(GLCM)简介

灰度共生矩阵(GLCM)简介 1. 基本概念 灰度共生矩阵(Gray-level Co-occurrence Matrix, GLCM)是一种用于分析图像纹理特征的统计方法。它通过计算图像中特定空间关系的像素对出现的频率,来描述纹理的规律性1。 核心思想:统计图像中相距为d、方向为θ的两个像素点,分别具…...

基于javaEE+jqueryEasyUi+eclipseLink+MySQL的课程设计客房管理信息系统

1. 系统概述 1.1 系统功能概述 1)客户管理。能够增加一个客户&#xff0c;包括&#xff1a;身份证号、客户名称、出生年月、性别、联系电话、邮箱、会员类别等信息&#xff0c;默认会员类别为空&#xff1b;能够修改和删除客户信息&#xff1b;能够根据客户名称、联系电话查询…...

3款本周高潜力开源AI工具(多模态集成_隐私本地化)

本周聚焦 AI 技术领域&#xff0c;为开发者精选 3 款兼具创新性与实用性的开源项目。这些项目覆盖图像生成、智能助手、大语言模型框架等方向&#xff0c;通过技术突破解决开发痛点&#xff0c;助力开发者高效构建智能应用。 更多精彩科技推荐请点击->&#xff1a;更多精彩科…...

第一期第10讲

Linux常用的压缩文件扩展名有 .tar, .tar.bz2, .tar.gz 使用gzip压缩和解压缩 对单个文件压缩&#xff1a; gzip a.c //压缩a.c为a.c.gz gzip -d a.c.gz //解压缩为a.c 对文件夹压缩&#xff1a; gzip -r test //对test文件夹里的文件进行压缩&#xff0c;不对test进行压缩…...

计算方法在单细胞数据分析中的应用及AI拓展

单细胞技术的出现彻底革新了我们对生物系统的理解&#xff0c;揭示了看似同质的细胞群体内部复杂的异质性。为了从这些技术产生的大量复杂数据中提取有意义的见解&#xff0c;精密的计算方法是不可或缺的。 AI拓展 单细胞数据分析的核心在于处理和解释高维度数据的能力&#…...

如何配置环境变量HADOOP_HOMEM、AVEN_HOME?不配置会怎么样

以下是在不同操作系统中配置 HADOOP_HOME 和 JAVA_HOME 环境变量的方法&#xff0c;以及不配置可能产生的后果&#xff1a; 配置 HADOOP_HOME - Windows系统&#xff1a;下载并解压Hadoop安装包&#xff0c;然后右键“此电脑”&#xff0c;选择“属性”&#xff0c;点击“高级…...

【现代深度学习技术】循环神经网络03:语言模型和数据集

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

【学习笔记】Taming 3DGS泛读

原文链接&#xff1a;https://arxiv.org/abs/2406.15643 代码链接&#xff1a;https://github.com/nullptr81/3dgs-accel 一、学习内容 1.研究背景 3DGS在新视角合成&#xff08;NVS&#xff09;中表现优异&#xff0c;但优化过程低效&#xff1a; 存在 1&#xff09;资源需…...

SAP系统交货已完成标识

问题&#xff1a;交货已完成标识 现象&#xff1a;采购订单一直处于未完成交货状态&#xff0c;及交货完成标识处于非勾选状态 原因&#xff1a;采购订单交货完成标识勾会在两种情况下勾选&#xff0c; a.交货数量在容差范围内&#xff1b; b.手动勾选。 某些特殊情况&#xf…...

【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——音频测试 #ES8388 #录音测试

1&#xff09;实验平台&#xff1a;正点原子ATK-DLMP257B开发板 2&#xff09;浏览产品&#xff1a;https://www.alientek.com/Product_Details/135.html 3&#xff09;全套实验源码手册视频下载&#xff1a;正点原子资料下载中心 文章目录 第四章 ATK-DLMP257B功能测试——音频…...

WPF 使用 DI EF CORE SQLITE

WPF 使用 DI EF CORE SQLITE 1.安装 nuget包 <PackageReference Include"Microsoft.EntityFrameworkCore.Sqlite" Version"9.0.4" />2.创建DbContext的实现类&#xff0c;创建有参构造函数 public XXContext(DbContextOptions<XXXContext> o…...

探索鸿蒙沉浸式:打造无界交互体验

一、鸿蒙沉浸式简介 在鸿蒙系统中&#xff0c;沉浸式是一种极具特色的设计理念&#xff0c;它致力于让用户在使用应用时能够全身心投入到内容本身&#xff0c;而尽可能减少被系统界面元素的干扰。通常来说&#xff0c;就是将应用的内容区巧妙地延伸到状态栏和导航栏所在的界面…...

Linux红帽:RHCSA认证知识讲解(十 三)在serverb上破解root密码

Linux红帽&#xff1a;RHCSA认证知识讲解&#xff08;十 三&#xff09;在serverb上破解root密码 前言操作步骤 前言 在红帽 Linux 系统的管理工作中&#xff0c;系统管理员可能会遇到需要重置 root 密码的情况。本文将详细介绍如何通过救援模式进入系统并重新设置 root 密码。…...

【网络安全】谁入侵了我的调制解调器?(一)

文章目录 我被黑了159.65.76.209,你是谁?黑客攻击黑客?交出证据三年后我被黑了 两年前,在我家里使用家庭网络远程办公时,遇到了一件非常诡异的事情。当时,我正在利用一个“盲 XXE 漏洞”,这个漏洞需要借助一个外部 HTTP 服务器来“走私”文件。为了实现这一点,我在 AW…...

阿里一面:Nacos配置中心交互模型是 push 还是 pull ?(原理+源码分析)

对于Nacos大家应该都不太陌生&#xff0c;出身阿里名声在外&#xff0c;能做动态服务发现、配置管理&#xff0c;非常好用的一个工具。然而这样的技术用的人越多面试被问的概率也就越大&#xff0c;如果只停留在使用层面&#xff0c;那面试可能要吃大亏。 比如我们今天要讨论的…...

MySQL 慢查询日志深入分析与工具实战(mysqldumpslow pt-query-digest)

&#x1f3af; 学习目标 • ✅ 熟悉慢查询日志结构与核心字段 • ✅ 掌握日志开启与 SQL 记录机制 • ✅ 使用 pt-query-digest 工具进行分析 • ✅ 解读分析结果并提出优化建议 &#x1f4c2; 基本概念 项目 内容说明 功能 记录执行时间超过阈值的 SQL 启动参数…...

JVM:垃圾回收

一、垃圾回收概述 &#xff08;1&#xff09;垃圾回收主要解决的问题 内存溢出&#xff1a;当程序在运行过程中&#xff0c;所需的内存超出了 JVM 被分配到的内存空间时&#xff0c;就会发生内存溢出。垃圾回收会将不再被引用的对象进行回收&#xff0c;释放内存空间&#xf…...

与AI深度融合的Go开发框架sponge,解决使用cursor、trae等AI辅助编程工具开发项目时的部分痛点

摘要 AI 编程助手在近几年快速发展&#xff0c;帮助开发者提升了开发效率。然而&#xff0c;通用 AI 工具往往难以精准落地到具体业务与框架中。本文介绍了一款与 Go 框架深度融合的 AI 编程工具 —— sponge AI 助手。它不仅理解框架的结构&#xff0c;还能按照标准化流程自动…...

《AI大模型应知应会100篇》第21篇:Prompt设计原则:让大模型精准理解你的需求

第21篇&#xff1a;Prompt设计原则&#xff1a;让大模型精准理解你的需求 摘要 在与大模型交互时&#xff0c;如何高效地表达需求是决定输出质量的关键。本文将系统介绍高效Prompt设计的核心原则和方法论&#xff0c;并通过实战代码案例详细解释每个核心知识点&#xff0c;帮助…...

【更新完毕】2025泰迪杯数据挖掘竞赛A题数学建模思路代码文章教学:竞赛论文初步筛选系统

完整内容请看文末最后的推广群 基于自然语言处理的竞赛论文初步筛选系统 基于多模态分析的竞赛论文自动筛选与重复检测模型 摘要 随着大学生竞赛规模的不断扩大&#xff0c;参赛论文的数量激增&#xff0c;传统的人工筛选方法面临着工作量大、效率低且容易出错的问题。因此&…...

[Windows] 电脑自动备份插入的U盘数据

[Windows] 电脑自动备份U盘数据 链接&#xff1a;https://pan.xunlei.com/s/VONyazSEIqhnzZCHRlio9Vw2A1?pwdcmhc# [Windows] 电脑自动备份插入的U盘数据...

《JVM考古现场(二十一):奇点黎明·在事件视界编译时空曲率》

目录 楔子&#xff1a;事件视界警报 上卷时空曲率引擎 第一章&#xff1a;volatile场方程重构 第二章&#xff1a;synchronized黑洞能层 番外篇&#xff1a;时空涟漪观测站 中卷量子逃逸分析 第三章&#xff1a;柯西视界稳定性证明 第四章&#xff1a;白洞负熵连接 实战…...

list的一些常用接口

其实list的接口和前面的string和vector基本都是一样的&#xff0c;用法也基本类似&#xff0c;我们还是挑几个讲讲吧。 一.常用的接口 1.1 push_back 图中是一个空参构造加上一个push_back的使用&#xff0c;这两个接口的使用还是很简单的&#xff0c;看一下即可。下面是迭代器…...

芯洲SCT2434AQFPAR:3.6V-36V Vin, 3.5A, 高效率同步降压DCDC转换器

特性&#xff1a; AEC-Q100合格&#xff0c;结果如下&#xff1a;-器件温度等级1&#xff1a;-40C至125C环境工作温度范围宽输入电压范围&#xff1a;3.6V-36V持续输出电流3.5A 1V1%反馈参考电压集成60mΩ高侧功率MOSFET和36mΩ低侧功率MOSFET轻载PSM工作模式在睡眠模式下具有…...

单例模式:懒汉和饿汉

目录 一、关于设计模式 二、单例模式是什么 2.1 饿汉模式 2.2 懒汉模式 三、单例模式和多线程 3.1 饿汉模式 3.2 懒汉模式 一、关于设计模式 单例模式是一种设计模式&#xff0c;说它之前先来聊聊设计模式是什么。 设计模式&#xff0c;类似于于棋谱&#xff08;大佬把…...

第八节:React HooksReact 18+新特性-React Server Components (RSC) 工作原理

• 与SSR区别&#xff1a;零客户端JS、服务端数据直出 • 搭配Next.js 14使用场景 React Server Components (RSC) 工作原理及 Next.js 14 应用场景解析 一、RSC 核心工作原理 React Server Components (RSC) 是 React 18 引入的颠覆性特性&#xff0c;其设计目标是 服务端与…...

Spark-SQL核心编程3

数据加载与保存 通用方式&#xff1a; SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API&#xff0c;根据不同的参数读取和保存不同格式的数据&#xff0c;SparkSQL 默认读取和保存的文件格式为parquet 数据加载方法&#xff1a; spark.read.lo…...

利用XShell 创建隧道(tunnel)在本地可视化远程服务器上的Visdom

1. 创建隧道 打开Xshell&#xff0c;选择你想要操作的终端&#xff0c;单击右键 -> 选择属性 打开属性对话框后&#xff0c;单击添加按钮。 在弹出的对话框中&#xff0c;先填写自己本地的浏览器的地址以及对应的端口号。然后呢&#xff0c;再填写autod远程服务器的地址和…...

React 高级特性与最佳实践

在掌握了 React 的基础知识后&#xff0c;我们可以进一步探索 React 的高级特性和最佳实践。这些特性将帮助你构建更高效、可维护和可扩展的 React 应用。本文重点介绍 Hooks、Context、Refs 和高阶组件等核心高级特性。 1. Hooks&#xff1a;函数组件的强大工具 Hooks 是 Rea…...

考研数据结构之图(一)(包含真题及解析)

考研数据结构之图的存储与基本操作&#xff1a;邻接矩阵、邻接表、十字链表、邻接多重表 图&#xff08;Graph&#xff09;是数据结构中的重要非线性结构&#xff0c;广泛应用于网络路由、社交关系分析等领域。本文将详细讲解图的四种主要存储方式——邻接矩阵法、邻接表法、十…...

Qt QML实现Windows桌面颜色提取器

前言 实现一个简单的小工具&#xff0c;使用Qt QML实现Windows桌面颜色提取器&#xff0c;实时显示鼠标移动位置的颜色值&#xff0c;包括十六进制值和RGB值。该功能在实际应用中比较常见&#xff0c;比如截图的时候&#xff0c;鼠标移动就会在鼠标位置实时显示坐标和颜色值&a…...

2025 年网络安全的挑战与机遇

2024 年是网络安全领域风云变幻的一年。从备受瞩目的勒索软件攻击所带来的影响&#xff0c;到人工智能工具日益商品化&#xff0c;挑战不断增加。 关键基础设施的漏洞变得极为明显&#xff0c;身份盗窃次数也达到了前所未有的程度。然而&#xff0c;在这一片混乱之中&#xff…...

Vue 3 中 ref和reactive的详细使用场景

一、核心区别 特性refreactive数据类型基本类型 对象/数组&#xff08;自动解包&#xff09;仅对象/数组响应式原理通过 .value 触发响应直接代理对象模板中使用自动解包&#xff08;无需 .value&#xff09;直接访问属性解构/传递保持响应性需用 toRefs 保持响应性 二、使用…...

react使用createFromIconfontCN,自定义iconfont 图标

记录reactantdesign项目中使用createFromIconfontCN&#xff0c;自定义iconfont 图标 效果图&#xff1a; import { createFromIconfontCN } from ant-design/icons;const MyIcon createFromIconfontCN({scriptUrl: //at.alicdn.com/t/font_8d5l8fzk5b87iudi.js, // 在 icon…...

危化品经营单位安全生产管理人员备考要点

危化品经营单位安全生产管理人员备考要点 &#x1f4cc; 考试核心内容 ✅ 必考法规&#xff1a; 《危险化学品安全管理条例》重点条款&#xff08;如经营许可条件&#xff09; GB 18218-2018《重大危险源辨识》新标准 安全生产法律责任&#xff08;罚款金额/刑事责任&…...

音频炼金术:Threejs 让 3D 场景「听」起来更真实

在 Three.js 中允许在场景中添加声音&#xff0c;将声音与 3D 对象关联&#xff0c;实现更丰富的交互体验。 Audio Three.js 中的Audio对象用于表示音频源&#xff0c;它是一个THREE.Object3D的子类&#xff0c;用于控制音频播放、暂停、是否循环等设置的对象&#xff0c;可以…...