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

【C/C++算法】从浅到深学习---分治算法之快排思想(图文兼备 + 源码详解)

绪论:冲击蓝桥杯一起加油!!
在这里插入图片描述
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry”

绪论​:本章是针对快速排序进行的优化和再次理解快排思想,将会通过4道题目带你再次深入的了解。
————————
早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。


分治(快排思想)

分治的本质就是:

  • 通过将大问题分成子问题的思想
  • 然后将所有小问题解决后
  • 就相当于解决了大问题!
  • (具体下图)
    在这里插入图片描述

具体训练:


首先通过一题颜色分类,来为后面的快排中的优化做铺垫
快排有个缺点就是当多个数据相同时,它的时间复杂度将会大大增加

1. 颜色分类

题目:

在这里插入图片描述

分析题目

在这里插入图片描述
解法:

  1. 使用一个双指针(三指针)‘
  2. 将数组划分为三分
  3. 其中划分内容如下图红色方框
  4. 这样最终划分的三块就是最终的结果
    在这里插入图片描述

而具体的解决方法/移动方法如下图:

  1. 本质通过2个指针left、right将一个数组分成三分
  2. 再通过一个指针i进行遍历
  3. 将等于0的放到left左边
  4. 等于2的放到right右边
  5. 这样等于1的自然就仍然在中间了

在这里插入图片描述

题解核心逻辑:

具体步骤见注释:

class Solution {
public:void sortColors(vector<int>& nums) {//使用三指针的方法将数组分成 3 块//    left ~ i-1 :0// i ~ right - 1 :1// right ~ n - 1 :2//那么就需要使用 三个指针//left:0的最左边的区间//right:2的最右边的区间//i:进行遍历,遍历到的值存到 left、right 区间for(int left = -1,right = nums.size(),i = 0; i < right ;){if(nums[i] == 0){swap(nums[++left],nums[i++]);//++left,放入新值//i++,将继续向后查找 }else if(nums[i] == 2){swap(nums[--right],nums[i]);//--right:放入新值//i不变:因为交换来的值仍然需要判断}else{i++;//当是 i == 0 的时候 i++即可}} }
};

下面将把颜色划分的逻辑套用到快排中


2. 排序数组

题目:

在这里插入图片描述

分析题目

本题很好理解,就是排序,将一个无序的数组排成升序

本题将使用快速排序来进行解决,
它也是一个八大排序中的非常重要的思想
快排的主要逻辑如下图:
在这里插入图片描述

  1. 通过一个key值,将数组划分为左右两块
  2. 左区间严格 小于等于 key
  3. 右区间严格 大于key
  4. 然后再去左右区间中重复上述步骤
  5. 只到数组只剩一个数后返回,此时返回时因为前面的操作所以最终对于这个数组来说是已经拍好序的了
    在这里插入图片描述
    但当所有相等是就会变成 O(N2)的复杂度:
  • 他每次都找到了最后这个数(因为他是 刚好 <= key的)
    在这里插入图片描述
  • 所以需要进行优化:将数组同样划分为 3 块(而非 2 块!)
    在这里插入图片描述
  • 移动的方法同上题的颜色划分:
    在这里插入图片描述
    它具体怎么优化了呢?

快排的缺点是:当所有值都是重复的,也就是 <= key 时会不断找到最后,所以这里是不太合理的,所以现在将 == 的情况也单独的拿出来(具体如下图),这样的话就不会出现上面的情况,因为这种 == key 情况,它也是有单独的区域的,看公式就知道,最终会不断 i++直接遍历完成!!
在这里插入图片描述

对于选key值优化:

  1. 用随机的方式选择基准元素(是比较快的相对于三数取中)
  2. 生成随机数 r (rand() + srand(time(NULL)))
  3. 0 ~ n - 1:r % (right - left + 1)+ left

题解核心逻辑:

class Solution {
public:int getRandom(vector<int>& nums,int l,int r){int ra = rand() ;return nums[ra % (r - l + 1) + l];}void qsort(vector<int>& nums,int l,int r){if(l >= r) return ;int key = getRandom(nums,l,r);//随机数int i = l, left = l - 1,right = r + 1;while(i < right){if(nums[i] < key) swap(nums[++left],nums[i++]);else if( nums[i] == key) i++;else swap(nums[--right],nums[i]);}qsort(nums,l,left);//处理左区间qsort(nums,right,r);//处理右区}vector<int> sortArray(vector<int>& nums) {//快速排序思想 + 划分 3 块//生成随机值:// [0 ~ left]// [left + 1 ~ i] // [right ~ n - 1]// 先将数组划分成 3 分,然后再 分治 0 ~ left 和 right ~ n -1 即可//划分方法:// i < k : swap(nums[++left],nums[i++])// i == k : i++// i > k : swap(nums[--right],nums[i])// 对于基准值 key(用于划分的值)//使用随机生成的形式srand(time(NULL));qsort(nums,0,nums.size()-1);return nums;}
};

3. 数组中的第K个最大元素

题目:

在这里插入图片描述

题解核心逻辑:

本题解题思路和是通过快排的方式,将数组不断的划分,并且在划分过程中寻找第K大的值
具体步骤如下:

  1. 快排思想 + 划分成3块 + 随机取key值
  2. 此时因为会划分成3块,而这三块他们的属性如下:
    1. 0 ~ left:小于key值
    2. left ~ right - 1:等于key值
    3. right ~ n - 1:大于key值
  3. 我们就能通过记录这三块区间中元素的个数,来快速的缩小区间查找
    在这里插入图片描述

更多细节和注释见下代码:

class Solution {
public:int qsort(vector<int>& nums, int k, int l, int r){if (l == r)return nums[r];int key = nums[rand() % ( r - l + 1) + l];int a = 0, b = 0, c = 0;// 划分区间int i = l, left = l - 1, right = r + 1;while (i < right){if (nums[i] < key) {swap(nums[++left], nums[i++]);a++;} else if (nums[i] == key) {i++;b++;} else {swap(nums[--right], nums[i]);c++;}}//如果:第k大的元素 <= c的个数(代表最在右边的区间)
//那么继续在该区间中去找if (k <= c)return qsort(nums, k, right, r);else if (k <= b + c)//若 k <= b + c (代表k是在等于key值的区间,此时他和key值相等所以返回key即可)return key;//最终不断的划分,最差的结果是在最后一次划分后得到答案else//最后就是在最左边的区间去找,此处第k大的需要减去 left 左边区间元素个数return qsort(nums, k - b - c, l, left);}int findKthLargest(vector<int>& nums, int k) {// 使用 快速选择 解决// 将数组划分成 三分:// 0 ~ left : <key(个数为 c 个)// left + 1 ~ right - 1 : == key(个数为b个)// right ~ n - 1 : >key(个数为a个)// 化成三分之后,判断 第k大的元素,在那个区间: a / b / c// 判断方法:// c 中存到是最大的前几:那么如果 k < c 代表 k// 在c中(c中的个数代表的就是前几大) b 若不在c中则在 b 区间中找,此时 k// < c + b 就代表在 b中(因为已经不在c中了,所以前面的要加上) a ... k <// a + b + csrand(time(NULL));return qsort(nums, k, 0, nums.size() - 1);}
};

4. 库存管理 III

题目:

在这里插入图片描述

题解核心逻辑:

本题和上题类似,就不过述了,具体见注释:

class Solution {
public:vector<int> inventoryManagement(vector<int>& stock, int cnt) {//同样 使用 快速 分三块 + 随机基准值srand(time(NULL));qsort(stock,cnt,0,stock.size()-1);//通过找到第cnt个小的数后,将数组划分成了 三块return {stock.begin(),stock.begin() + cnt};}void qsort(vector<int>& stock, int cnt,int l,int r){if(l == r) return ;int key = stock[rand() % (r - l + 1) + l];int i = l,left = l - 1,right = r + 1;while(i < right){if(stock[i] < key) {swap(stock[++left],stock[i++]);}else if(stock[i] == key){i++;}else{swap(stock[--right],stock[i]);}}int a = left - l + 1,b = right - left - 1;
//找前k个小的
//若 cnt < a 代表前面 a 个元素个数比 cnt 的个数大,所以只需要在前 l ~ left 区间找即可if(cnt < a){//面存了a个小的return qsort(stock,cnt,l,left);}else if(cnt <= a + b)// 3 < 2 + 1return ;elsereturn qsort(stock,cnt - a - b,right,r);}
};

相关文章:

【C/C++算法】从浅到深学习---分治算法之快排思想(图文兼备 + 源码详解)

绪论&#xff1a;冲击蓝桥杯一起加油&#xff01;&#xff01; 每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a;本章是针对快速排序进行的优化和再次理解快排思想&#xff0c;将会通过4道题目带你再次…...

精通React JS中的API调用:示例指南

精通React JS中的API调用:示例指南 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 精通React JS中的API调用:示例指南为什么在React JS中进行API调用?在React JS中制作API调用:…...

浅谈Thread类及常见方法与线程的状态(多线程编程篇2)

目录 前言 1.Thread类及常见方法 Thread类中常见的属性 1. getId() 2. getName() 3. getState() 4. getPriority() 5. isDaemon() 6. isAlive() 7. isInterrupted() 2.Thread类中常见的方法 Thread.interrupt() (中断线程) Thread.start()(启动线程) 1. 覆写 run…...

算法刷题记录——LeetCode篇(1.2) [第11~20题](持续更新)

更新时间&#xff1a;2025-03-29 LeetCode题解专栏&#xff1a;实战算法解题 (专栏)技术博客总目录&#xff1a;计算机技术系列目录页 优先整理热门100及面试150&#xff0c;不定期持续更新&#xff0c;欢迎关注&#xff01; 17. 电话号码的字母组合 给定一个仅包含数字 2-9…...

基于HTML5和CSS3实现3D旋转相册效果

基于HTML5和CSS3实现3D旋转相册效果 这里写目录标题 基于HTML5和CSS3实现3D旋转相册效果项目介绍技术栈核心功能实现原理1. HTML结构2. CSS样式设计2.1 基础样式设置2.2 容器样式2.3 图片样式 3. JavaScript实现4. 交互功能实现4.1 触摸和鼠标拖拽4.2 播放控制 项目亮点技术难点…...

unity中Xcharts图表鼠标悬浮表现异常

鼠标悬浮在面板附近&#xff0c;只显示单独的一个项目 而且无论鼠标如何移动&#xff0c;根本没有效果。 解决方案&#xff1a; 需要在对应的Canvas上绑定主相机才可以 鼠标移动到项目上就有信息展示了...

Unity程序嵌入Qt后点击UI按钮Button没有反应

一、前言 在一次项目中&#xff0c;需要将Unity程序嵌入qt中&#xff0c;并在主界面显示&#xff0c;根据网络资料与相关代码&#xff0c;成功将unity程序嵌入&#xff0c;但是在点击Unity的Button按钮时却没有响应&#xff0c;在查找相关资料后&#xff0c;解决问题&#xff…...

Linux安装Cmake (Centos 7.9)

cmake安装 这个虽然已经更新到了4.0.0版本了&#xff0c;但是我们要用3.5版本的&#xff0c;因为这个比较稳定 官方地址&#xff1a;https://github.com/Kitware/CMake/releases/tag/v3.5.0&#xff0c;选择那个cmake-3.5.0-Linux-x86_64.tar.gz下载&#xff0c; 首先解压文…...

31天Python入门——第14天:异常处理

你好&#xff0c;我是安然无虞。 文章目录 异常处理1. Python异常2. 异常捕获try-except语句捕获所有的异常信息获取异常对象finally块 3. raise语句4. 自定义异常5. 函数调用里面产生的异常补充练习 异常处理 1. Python异常 Python异常指的是在程序执行过程中发生的错误或异…...

Linux使用集群服务器查看已安装conda环境,且环境名无显示、系统环境混乱等问题

一、问题 在使用集群服务器前可以查看导入&#xff0c;module load不需要安装。我都是自己重新下载Anaconda3-2024.10-1-Linux-x86_64.sh&#xff0c;然后安装&#xff0c;导致混乱。下面是情况 1.创建的环境名跑到目录下了 2.多个base,且有个base无显示 二、解决办法 1.删…...

【Linux】B站黑马程序视频学习笔记(一)

一、Linux内核与发行版 注意&#xff1a;下图程序指向内核的箭头用的是“调用”&#xff0c;内核指向硬件用的是“调度”。 Linux内核代码下载网站&#xff1a;https://www.kernel.org/ 二、虚拟机-VMware 学习Linux可以借助虚拟机&#xff08;其使用到的CPU、内存、硬盘都是…...

HarmonyOS NEXT——【鸿蒙原生应用加载Web页面】

鸿蒙客户端加载Web页面&#xff1a; 在鸿蒙原生应用中&#xff0c;我们需要使用前端页面做混合开发&#xff0c;方法之一是使用Web组件直接加载前端页面&#xff0c;其中WebView提供了一系列相关的方法适配鸿蒙原生与web之间的使用。 效果 web页面展示&#xff1a; Column()…...

【软件工程】习题及答案

目录 第一章 习题第一章 习题答案第二章 习题第二章 习题答案第三章 习题第三章 习题答案第四章 习题第四章 习题答案第五章 习题第五章 习题答案第六章 习题第六章 习题答案第七章 习题第七章 习题答案 第一章 习题 一、选择题 1&#xff0e;关于引起软件危机的原因&#xff…...

css选择最后结尾的元素DOM

前言 选中最后一个元素&#xff0c;实际使用非常频繁。 解决方案 使用 CSS 提供的选择器&#xff0c;即可完成。 如下代码示例&#xff0c;两种选择器均可实现。 <p>...</p>p:last-child{ background:#ff0000; }p:nth-last-child(1){background:#ff0000; }p&…...

【AI论文】挑战推理的边界:大型语言模型的数学基准测试

摘要&#xff1a;近年来&#xff0c;大型推理模型的迅猛发展导致现有用于评估数学推理能力的基准测试趋于饱和&#xff0c;这凸显出迫切需要更具挑战性和严谨性的评估框架。为填补这一空白&#xff0c;我们推出了OlymMATH&#xff0c;这是一项全新的奥林匹克级数学基准测试&…...

使用 Python包管理工具 uv 完成 Open WebUI 的安装

uv 是一个极其快速的 Python 包安装器和解析器&#xff0c;用 Rust 编写&#xff0c;旨在作为 pip 和 pip-tools 工作流的替代品 使用 uv 安装&#xff08;推荐&#xff09; macOS/Linux&#xff1a; curl -LsSf https://astral.sh/uv/install.sh | shWindows&#xff1a; po…...

【区块链安全 | 第三篇】主流公链以太坊运行机制

文章目录 1. 以太坊账户类型2. 以太坊网络架构2.1 节点类型2.2 交易流程 3. 共识机制4. Gas 机制4.1 Gas 计算方式4.2 以太坊 EIP-1559 交易机制 5. EVM&#xff08;以太坊虚拟机&#xff09;5.1 EVM 结构5.2 EVM 指令5.3 EVM 运行机制 6. 智能合约7. ERC 代币标准7.1 ERC-207.…...

C# 字符串(String)

C# 字符串&#xff08;String&#xff09; 引言 在C#编程语言中&#xff0c;字符串&#xff08;String&#xff09;是处理文本数据的基础。字符串是字符的有序集合&#xff0c;用于存储和处理文本信息。C#的字符串类型是System.String&#xff0c;它是一个引用类型&#xff0…...

Unity Shader 学习18:Shader书写基本功整理

1. Drawer [HideInInspector]&#xff1a;面板上隐藏[NoScaleOffset]&#xff1a;隐藏该纹理贴图的TillingOffset[Normal]&#xff1a;检查该纹理是否设为法线贴图[HDR]&#xff1a;将颜色类型设为高动态范围颜色&#xff08;摄像机也要开启HDR才有效果&#xff09;[PowerSlid…...

构建第一个SpringBoot程序

第一种方式&#xff1a; 注&#xff0c;构建过程中一定要联网 new module -->选择spring Initializr 选择Web --> 勾选Spring Web --> create 构建好的项目如下 这里的 .mvn .git* HELP.md mvnw* 都可以删除 编辑好controller 之后 点击即可运行第一个springbo…...

Java高级JVM知识点记录,内存结构,垃圾回收,类文件结构,类加载器

JVM是Java高级部分&#xff0c;深入理解程序的运行及原理&#xff0c;面试中也问的比较多。 JVM是Java程序运行的虚拟机环境&#xff0c;实现了“一次编写&#xff0c;到处运行”。它负责将字节码解释或编译为机器码&#xff0c;管理内存和资源&#xff0c;并提供运行时环境&a…...

使用飞书API自动化更新共享表格数据

飞书API开发之自动更新共享表格 天马行空需求需求拆解1、网站数据爬取2、飞书API调用2.1 开发流程2.2 创建应用2.3 配置应用2.4 发布应用2.5 修改表格权限2.6 获取tenant_access_token2.7 调用API插入数据 总结 天马行空 之前一直都是更新的爬虫逆向内容&#xff0c;工作中基本…...

C++中ShellExecute函数使用方法说明,如果一开始参数为隐藏,后面还能再显示出来吗

文章目录 一、ShellExecute基础用法函数原型关键参数 nShowCmd示例代码&#xff1a;启动程序并隐藏窗口 二、隐藏后能否重新显示窗口直接答案 三、实现隐藏后显示窗口的步骤1. 获取目标窗口句柄2. 显示窗口 四、完整流程示例五、注意事项六、总结 在C中使用ShellExecute函数时&…...

MySQL的多表查询

我们之前在讲解SQL语句的时候&#xff0c;讲解了DQL语句&#xff0c;也就是数据查询语句&#xff0c;但是之前讲解的查询都是单表查询&#xff0c;而本章节我们要学习的则是多表查询操作&#xff0c;主要从以下几个方面进行讲解。 5.1 多表关系 项目开发中&#xff0c;在进行…...

(UI自动化测试web端)第二篇:元素定位的方法_css定位之层级选择器

看代码里的【find_element_by_css_selector( )】( )里的表达式怎么写&#xff1f; 文章介绍了第五种写法&#xff0c;层级选择器 &#xff0c;你要根据网页中的实际情况来判断自己到底要用哪一种方法来进行元素定位。每种方法都要多练习&#xff0c;全都熟了之后你在工作当中使…...

《Python Web部署应知应会》No2:如何基于FastAPI 和 OLLAMA 架构实现高并发 AI 推理服务

《Python Web部署应知应会》No2&#xff1a;如何基于FastAPI 和 OLLAMA 架构实现高并发 AI 推理服务&#xff08;上&#xff09; 摘要&#xff1a; 在 FastAPI 和 OLLAMA 架构中实现高并发 AI 推理服务&#xff0c;并优化性能指标采集和缓存策略&#xff0c;可以充分利用 asy…...

【LeetCode 题解】算法:8.字符串转换整数(atoi)

一、问题描述 在 LeetCode 的算法题库里&#xff0c;有这样一道题目&#xff0c;要求我们实现一个名为 myAtoi(string s) 的函数&#xff0c;其功能是将给定的字符串转换为一个 32 位有符号整数。具体的转换规则如下&#xff1a; 处理步骤 剔除前导空格&#xff1a;读取字符串…...

Uni-app页面信息与元素影响解析

获取窗口信息uni.getWindowInfo {pixelRatio: 3safeArea:{bottom: 778height: 731left: 0right: 375top: 47width: 375}safeAreaInsets: {top: 47, left: 0, right: 0, bottom: 34},screenHeight: 812,screenTop: 0,screenWidth: 375,statusBarHeight: 47,windowBottom: 0,win…...

飞书电子表格自建应用

背景 coze官方的插件不支持更多的飞书电子表格操作&#xff0c;因为需要自建应用 飞书创建文件夹 创建应用 开发者后台 - 飞书开放平台 添加机器人 添加权限 创建群 添加刚刚创建的机器人到群里 文件夹邀请群 创建好后&#xff0c;就可以拿到id和key 参考教程&#xff1a; 创…...

《云原生安全攻防》-- K8s容器安全:权限最小化与SecurityContext

一旦容器被入侵&#xff0c;攻击者就可以获取到容器的权限&#xff0c;所以&#xff0c;容器运行过程中&#xff0c;我们首先需要考虑的是容器的权限问题。 在本节课程中&#xff0c;我们将重点介绍权限最小化以及如何使用SecurityContext来管理容器的权限。 在这个课程中&…...

uniapp中的流式输出

一、完整代码展示 目前大多数的ai对话都是流式输出&#xff0c;也就是对话是一个字或者多个字逐一进行显示的下面是一个完整的流式显示程序&#xff0c;包含的用户的消息发出和ai的消息回复 <template><view class"chat-container"><view class&quo…...

PipeWire 音频设计与实现分析一——介绍

PipeWire 是一个基于图的媒体处理引擎&#xff0c;一个可以运行多媒体节点图的媒体服务器&#xff0c;是 Linux 的音频/视频总线&#xff0c;它管理 Linux 系统中&#xff0c;不同应用程序对音频和视频设备的共享访问。它提供了一个本地客户端音频 API&#xff0c;但也提供兼容…...

MVC 文件夹:架构之美,开发之魂

MVC 文件夹&#xff1a;架构之美&#xff0c;开发之魂 引言 在软件开发领域&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;架构模式已经成为了一种广泛应用的架构设计理念。它将应用程序分为三个核心部分&#xff1a;模型&#xff08;Model&#xff09;、视图…...

IO模型之于并发编程模型、并发模型之于架构模式

一、并发编程模型主要包括以下几种‌&#xff1a; ‌多进程模型‌&#xff1a;利用操作系统的进程模型来实现并发。每个用户请求接入时都会创建一个进程&#xff0c;适用于I/O密集型任务。缺点是创建进程的开销高&#xff0c;且上下文切换的开销也大。典型应用如Apache Web Ser…...

Postman 7.3.5 旧版下载指南(Win64)及注意事项

Postman-win64-7.3.5-Setup 是 Postman 的一个旧版本&#xff08;2019年发布&#xff0c;适用于 Windows 64位系统&#xff09;。以下是相关信息和建议&#xff1a; 1. Postman 7.3.5 版本说明 功能&#xff1a;用于 API 开发、测试和协作。 系统要求&#xff1a;Windows 64位…...

​Flink/Kafka在python中的用处

一、基础概念 1. ​Apache Kafka 是什么&#xff1f; ​核心功能&#xff1a;Kafka 是一个分布式流处理平台&#xff0c;主要用于构建实时数据管道和流式应用程序。​核心概念&#xff1a; ​生产者&#xff08;Producer&#xff09;​&#xff1a;向 Kafka 发送数据的程序。…...

【Spring Boot 与 Spring Cloud 深度 Mape 之十】体系整合、部署运维与进阶展望

【Spring Boot 与 Spring Cloud 深度 Mape 之十】体系整合、部署运维与进阶展望 #微服务实战 #Docker #Kubernetes #SpringSecurity #OAuth2 #分布式事务 #Seata #ServiceMesh #总结 #SpringCloud #SpringBoot 系列终章&#xff1a;经过前九篇 [【深度 Mape 系列】] 的系统学习…...

轻松理解Python装饰器:从基础到应用

一、为什么需要装饰器 想象一下&#xff0c;你写了很多函数来完成不同的任务&#xff0c;突然有个新需求&#xff1a;在每个函数执行前打印一条“函数开始执行”的消息&#xff0c;执行后打印“函数执行结束”。如果没有装饰器&#xff0c;你就得在每个函数里手动添加这两条打…...

RabbitMQ 技术详解:异步消息通信的核心原理与实践

这里写目录标题 RabbitMQ 技术详解&#xff1a;异步消息通信的核心原理与实践一、RabbitMQ 本质剖析核心架构组件 二、核心功能与应用场景主要作用典型应用场景 三、工作流程深度解析消息传递流程关键协议机制 四、Java 实现示例1. 依赖配置&#xff08;Maven&#xff09;2. 消…...

MySQL-- 多表查询的分类,SQL92与SQL99,7种JOIN的实现,SQL99语法的新特性

目录 一&#xff0c;多表查询的分类 角度1&#xff1a;等值连接 vs 非等值连接 角度2&#xff1a;自连接 vs 非自连接 角度3&#xff1a;内连接 vs 外连接 二&#xff0c;SQL92语法实现内连接&#xff1a;见上&#xff0c;略SQL92语法实现外连接&#xff1a;使用 -…...

Selenium文件上传

在 Web 自动化测试中,文件上传是一项常见的任务。不同的网站和前端技术可能导致上传方式有所不同,因此需要采用不同的方法进行处理。 方法 1:使用 send_keys() 直接上传(最常用) 适用场景: 页面中 有标准的 <input type="file"> 标签。 不需要弹出 Wind…...

getID3获取本地或远程视频时长

音频文件也可使用&#xff0c;使用ffmeg安装太复杂了 附ffmpeg方式&#xff1a;centos下安装ffmpeg_yum安装ffmpeg-CSDN博客 使用composer先安装 composer require james-heinrich/getid3 获取本地视频 //获取本地视频$video_path $_SERVER[DOCUMENT_ROOT].$params[video];…...

OpenAI流式解析

OpenAI 流式的代码&#xff1a; 首选一般请使用os.getenv 去读环境变量的内容 注意使用pip install python-dotenv 的安装方法 load_dotenv 是这个库提供的一个函数&#xff0c;用于读取 .env 文件并将其中定义的键值对设置为系统的环境变量。 默认情况下&#xff0c;load_…...

在Trae中设置Python解释器版本

Python 是一种广泛使用的高级编程语言&#xff0c;因其简洁易读的语法和强大的功能而备受欢迎。随着 Python 的不断发展&#xff0c;多个版本相继发布&#xff0c;每个版本都带来了新特性和改进。然而&#xff0c;这也带来了一些问题&#xff0c;比如不同的工程&#xff0c;需要…...

第 6 章:优化动态分配内存的变量_《C++性能优化指南》_notes

优化动态分配内存的变量 第六章核心知识点详解总结第六章 动态内存优化 重点难点梳理 一、多选题&#xff08;每题至少2个正确答案&#xff09;二、设计题答案与详解多选题答案设计题答案示例 第六章核心知识点详解 动态内存分配的开销 知识点&#xff1a;动态内存分配需要调用…...

图像数据增强教程:为目标检测任务准备数据

目录 一、简介 二、代码结构 三、环境要求 四、数据增强类 4.1 调整增强概率和参数 4.2 增强方法参数 五、数据增强主函数 六、主函数 效果展示 完整代码 一、简介 在目标检测任务中&#xff0c;数据增强是一种关键技术&#xff0c;通过对原始图像应用多种变换来增加…...

Unity编辑器功能及拓展(2) —Gizmos编辑器绘制功能

Unity中的Gizmos功能是用于在场景视图中绘制辅助图形或图标的工具&#xff0c;帮助开发者在编辑模式下直观调试和可视化游戏对象的位置、范围、方向等信息。 一.定义概述 Gizomsd 概述 Gizoms是Unity提供的一个API&#xff0c;或者叫做一个工具类&#xff0c;包含一系列静态…...

HarmonyOS WebSocket全场景应用开发深度解析

注&#xff1a;适用版本&#xff08;Harmony OS NEXT / 5.0 / API 12 &#xff09; 一、最终效果预览 二、基础代码结构 Entry Component struct ChatApp {State messages: Message[] [] // 所有聊天记录State inputText: string "" // 输入框内容State isCon…...

JCRQ1河马算法+消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测

JCRQ1河马算法消融实验&#xff01;HO-CNN-LSTM-Attention系列四模型多变量时序预测 目录 JCRQ1河马算法消融实验&#xff01;HO-CNN-LSTM-Attention系列四模型多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于HO-CNN-LSTM-Attention、CNN-LSTM-Attent…...

ubuntu 安装 postgresql

在 Ubuntu 系统中安装 PostgreSQL 的步骤如下&#xff1a; 步骤 1&#xff1a;更新软件包列表 sudo apt update步骤 2&#xff1a;安装 PostgreSQL Ubuntu 默认仓库包含 PostgreSQL&#xff0c;直接安装&#xff1a; sudo apt install postgresql postgresql-contrib -ypost…...