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

我爱学算法之—— 二分查找(上)

了解二分算法

二分查找,想必多多少少有一点了解了,我们了解的二分查找算法:

当一个数组有序的时候,我们可以使用二分算法来查找一个值;

直接比较mid((left + right)/2)和我们要查找的值target;如果nums[mid] > target就在右边查找,否则在左边查找。

但是二分查找真的如此简单吗?在什么时候才能使用二分查找呢?

使用二分查找的条件:数组有序;其实本质是是利用二段性

简单来说,将数组分为;两个区间,一个区间内是满足某个条件;而另一个区间是满足其相反的条件的。

现在我们来通过了解二分查找的算法题,来深入探究二分查找,以及什么时候能够使用二分查找。

一、二分查找

题目解析

在这里插入图片描述

这道题,想必之前已经见到过了;

给定一个数组nums和一个值target,让我们在nums数组中查找target,如果存在就返回下标;否则返回-1

算法思路

对于这道题,我们可以使用暴力查找:让target和数组nums中所有元素一个一个比较;

暴力解法时间复杂度为O(n);从效率上来说也是非常不错的;

但是暴力解法并没有使用到我们数组有序这一个条件;

我们这里想一下,当我们暴力查找到一个位置mid时,区间[0,mid-1]内的值是不是都是小于mid位置的值的;区间[mid+1,n]内的值是不是都是大于mid位置的值的。

简单来说就是:我们任取一个位置,这个位置的值为x;这个位置左边区间的值都是小于x的,右边区间的值都是大于x的。

那我们是不是就可以将区间划分为两部分:

  • 左边区间的值都是小于x
  • 右边区间的值都是大于x

这样我们任取一个位置,如果这个位置的值x大于我们要找的值target,那就去这个位置左边区间再去找target

如果这个位置的值x大于我们要找的值target,那就去这个位置右边区间内再去找target

那我们大致就理解了如何去找target;但是我们可以取二分点也可以取三分点四分点…,那如何去取mid呢?

这里就不叙述这个问题了,我们取二分点的效率是最高的。

二分整体思路:

  • 首先定义leftright分别指向区间的开始位置和结束位置。

  • midmid = (left + right)/2

  • 比较mid位置和要查找的值target

    如果nums[mid] > target,就去左边区间找,right = mid - 1

    如果nums[mid] < target,就去右边区间找,left = mid + 1

    如果nums[mid] == target,找到了我们要查找的值,返回结果。

  • 查找结束还没有返回结果(leftright错过去了,那就表示数组中不存在target)。

在这里插入图片描述

这里需要注意:

**循环结束的条件:**我们leftright指向的位置都是没有查找过的位置,所以当left > right时,循环才能结束。

**取mid:**这里如果数组过大,left + right就可能超出数据范围,我们使用left + (right - left)/2或者left +(right - left + 1)/2来计算;但是有一个问题,对于数组内数据个数是奇数时,这两种计算方式没有什么影响;但如果数组中数据个数是偶数时,第一种left + (right - left)/2求的mid是偏左的,而left + (right - left +1)/2求出的mid是偏右的。

在这道题中我们感受不到这两种求法的差别,在下面题目中我们就能感受到这两种求法的差别了。
在这里插入图片描述

代码实现

class Solution {
public:int search(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1;while (left <= right) {// int mid = (left+right)/2;int mid = left + (right - left) / 2;if (nums[mid] > target)right = mid - 1;else if (nums[mid] < target)left = mid + 1;elsereturn mid;}return -1;}
};

二、在排序数组中查找元素的第一个和最后一个位置

题目解析

在这里插入图片描述

这道题和上面那一道题不同,上一道题目在nums数组中只存在应该target,而这道题目中可能存在多个target

我们需要找到多个target的起始位置和结束位置。

如果数组中不存在target就返回-1,-1

算法思路

首先还是来看暴力解法:从左到右遍历数组,遇到target,就记录target起始位置,然后继续向后遍历直到某个位置的值不等于target

如果数组中不存在target,那暴力解法最坏情况下的时间复杂度为O(n)

那现在我们来想如何使用二分查找来解决这个问题:

这里相信有人和博主一样,先利用二分查找查找到target的某一个位置,然后向左和向右遍历查找target出现的起始位置和结束位置;但是如果数组中的数据都是target,那我们不也是要查找完整个数组,时间复杂度也是O(n)

这里我们就不使用上面二分算法划分区间的方法了,因为我们这里target不一定只出现一次,我们找到target时不能直接返回,因为我们不确定是否还存在其他target

这里我们要查找的是target的起始位置和结束位置,说白了就是左边界和右边界。

二分算法查找左边界:

这里我们查找到target不能直接返回,那就试着将nums[mid] == target划分到左边或者右边的情况;

简单来说就是这里要找的是大于等于t区间的左边界,我们将数组划分成两部分:

  • 左边区间内的值都是小于target的。
  • 右边区间内的值都是大于等于target的。

这样我们在使用二分查找时:

  • 如果nums[mid] < target,那就可以直接舍去[left , mid-1]mid位置的(left = mid + 1);
  • 如果nums[mid] >= target,我们的mid位置的值可能等于target,所以我们只能舍去区间[mid + 1 , right];(right = mid)(这里我们要找的是左边界,如果mid位置的值是等于mid+1位置的值时,我们是可以舍去mid+1位置的

这里我们要求的是大于等于target区间的左边界,所以划分成小于x和大于等于x的两个区间

在这里插入图片描述

这里要注意:

**循环结束条件:**这里我们当left == right时,循环就结束了;所以循环的条件是left < right而不是left <= right

  • 这里left == right时是不需要判断的,因为此时就是最终结果:

    数组中存在大于等于target的区间,也存在小于target的区间,此时leftright相等时指向的就是大于等于target区间左端点的位置

    数组中如果所有数都大于等于target,此时right最终会指向left的位置也就是数组的起始位置,也是大于等于target区间的左端点的位置。

    数组中如果所有数都小于target,此时left最终最指向left的数组的结束位置,也就是right

  • 如果left == right判断了,可能会陷入死循环

    因为这里当nums[mid] >= target时,right = mid;这样如果最后leftright指向的位置是大于等于target的,求出的mid是等于leftright的,那此时就会陷入死循环。

mid的值:

在上面朴素的二分查找算法中,我们利用哪一种求法都可以,但是在这里就不一样了;

如果数据个数是偶数个,利用mid = left + (right - left)/2求出的mid是偏左的;利用mid = left + (right - left + 1)/2求出来的mid是偏右的;

这里我们要找的是区间的左边界,我们要使用mid = left + (right - left)/2来求mid

因为最后如果leftright指向两个相邻的位置(left + 1 = right),利用第一种方法求出来的mid是等于left的;利用第二章方法求出来的mid是等于right的;

如果我们right位置的值的大于等于target的,如果求出的mid是等于right的,此时就会陷入死循环;(因为nums[mid] >= target时,right = mid

在这里插入图片描述

二分算法查找右边界:

和查找左边界类似:

我们要查找的是小于等于target区间的有边界,我们可以根据要查找的位置将数组划分成两部分:

  • 左边区间内的值都是小于等于target
  • 右边区间内的值都是大于target

在二分查找的过程中:

  • 如果nums[mid] <= targetmid位置可能就是最终要查找的结果,所以只能舍去区间[left , mid-1]left = mid);(这里查找的是区间的右边界,所以即使mid-1位置的值等于mid位置的值,也是直接可以舍去的
  • 如果nums[mid] > target,区间[mid , right]内的值都是大于target的,可以舍去区间[mid , right]right = mid - 1)。

这里我们要查找的是小于等于target区间的右边界所以划分为:小于等于target和大于target两区间

在这里插入图片描述

这里也要注意:

循环条件left < right而不是left<=right

mid

在求左边界时使用的是mid = left + (right - left)/2,这样在偶数个数据时求的是偏左位置的;

这里我们要使用mid = left + (right - left + 1)/2,这样当数组在数据个数是偶数个时,求出的mid是偏右的。

因为最后如果leftright指向两个相邻的位置(left + 1 = right),利用第一种方法求出来的mid是等于left的;利用第二章方法求出来的mid是等于right的;

如果我们left位置的值的小于等于target的,如果求出的mid是等于left的,此时就会陷入死循环;(因为nums[mid] <= target时,left = mid

在这里插入图片描述

代码实现

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {//数组为空if(nums.empty())    return {-1,-1};int n = nums.size();int begin = 0,end = 0;//求大于等于target区间的左边界int left = 0,right = n-1;while(left < right){int mid = left + (right - left)/2;if(nums[mid] >= target) right = mid;else    left = mid + 1;}//判断是否存在targetif(nums[left] != target)    return {-1,-1};begin = left;//求小于等于target区间的右边界left = 0,right = n-1;while(left < right){int mid = left + (right - left + 1)/2;if(nums[mid] <= target) left = mid;else    right = mid -1;}end = right;return {begin,end};}
};

简单总结

这里两道题,算是最基本的二分算法题,我们一定要理解,理解之后在之后的二分算法题目再深入探究二分算法。

相关文章:

我爱学算法之—— 二分查找(上)

了解二分算法 二分查找&#xff0c;想必多多少少有一点了解了&#xff0c;我们了解的二分查找算法&#xff1a; 当一个数组有序的时候&#xff0c;我们可以使用二分算法来查找一个值&#xff1b; 直接比较mid((left right)/2)和我们要查找的值target&#xff1b;如果nums[mid]…...

Tauri快速入门1 - 搭设开发环境

前言 Tauri框架结合了 Web 技术的优势&#xff0c;开发者能用熟悉的 HTML、CSS 和 JavaScript 进行开发&#xff0c;像开发网页应用一样便捷高效。 其次&#xff0c;该框架有着出色的性能表现&#xff0c;相比一些传统框架&#xff0c;其资源占用相对较低。在安全性方面&#x…...

tigase源码学习杂记-IO处理的线程模型

前言 tigase是一个高性能的服务器&#xff0c;其实个人认为作为即时通讯的服务器&#xff0c;高性能主要体现在他对IO复用&#xff0c;和多线程的使用上&#xff0c;今天来学习一下他的IO的线程处理模型的源码&#xff0c;并记录一下他优秀的设计。 概述 tigase是使用的NIO作…...

电商秒杀系统技术栈与难点解析 - Java架构师面试实战

电商秒杀系统技术栈与难点解析 - Java架构师面试实战 第一轮提问 面试官&#xff1a;马架构&#xff0c;欢迎参加我们公司的面试。首先&#xff0c;请您简单介绍一下自己。 马架构&#xff1a;您好&#xff0c;我叫马架构&#xff0c;拥有十年的Java研发经验和架构设计经验&…...

ASP.NET MVC​ 入门指南三

16. 安全性 16.1 身份验证和授权 身份验证&#xff1a;确认用户的身份。ASP.NET MVC 支持多种身份验证方式&#xff0c;如表单身份验证、Windows 身份验证和 OAuth 等。 表单身份验证&#xff1a;用户通过输入用户名和密码登录&#xff0c;服务器验证后颁发一个身份验证票证&…...

导览项目KD-Tree最近地点搜索优化

背景描述 我在做一个校园导览的小程序的时候&#xff0c;涉及到最近地点搜索的业务功能&#xff0c;根据当前位置搜索最近的校园地点&#xff0c;比如教学楼&#xff0c;图书馆&#xff0c;自习室&#xff0c;办事地点等等。 我最初想到的办法就是获取用户当前位置的经纬度后&…...

【Pandas】pandas DataFrame rmul

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象&#xff08;如 DataFrame、Series 或标量&#xff09;的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...

苹果(IOS)手机怎么开启开发者模式(简单明了版)

苹果手机怎么开启开发者模式&#xff08;简单明了版&#xff09; iOS 16 以后&#xff0c;苹果新增了「开发者模式」。如果你要在 iPhone 上运行自己开发的 App&#xff0c;比如通过 Xcode 或其它工具安装测试包&#xff0c;必须先开启这个模式。 下面是开启方法&#x1f447…...

Agent2Agent

rag系列文章目录 文章目录 rag系列文章目录前言一、协议设计原则与技术基础二、通信机制与消息格式三、身份验证与安全设计四、能力发现与任务协作总结 前言 谷歌于2025年4月推出了A2A&#xff08;Agent2Agent&#xff09;协议&#xff0c;旨在解决当前AI智能体生态中的互操作…...

【MCP】了解远程MCP调用背后使用的SSE协议

本文介绍了远程MCP使用的SSE协议&#xff0c;通过wireshark抓包的方式了解MCP客户端和服务端之间通过SSE协议交互涉及到的请求与响应。 1. 什么是SSE协议&#xff1f; 参考&#xff1a;https://zhuanlan.zhihu.com/p/1894024642395619635和https://blog.csdn.net/aerror/artic…...

Log4j Properties 配置项详细说明

Log4j Properties 配置项详细说明 1. 核心配置项说明 根日志记录器&#xff1a;定义全局日志级别和输出目标 log4j.rootLogger [级别], appender1, appender2,...Appender 定义&#xff1a;指定日志输出目标&#xff08;控制台、文件等&#xff09; log4j.appender.[名称].[属…...

哪些物联网框架支持多协议接入?选型指南与核心能力解析

在物联网&#xff08;IoT&#xff09;领域&#xff0c;设备通信协议的多样性&#xff08;如MQTT、CoAP、Modbus、Zigbee等&#xff09;是开发者面临的核心挑战之一。选择支持多协议接入的物联网框架&#xff0c;可以显著降低异构设备连接的复杂度&#xff0c;提升系统的兼容性和…...

第三方测试机构如何保障软件质量并节省企业成本?

在软件行业&#xff0c;第三方测试机构扮演着极其重要的角色。他们提供独立且专业的测试服务&#xff0c;目的是为了保障软件的质量以及提升用户的使用体验。 专业独立 测试机构拥有经验丰富的测试员和严谨的测试流程。他们会对软件各项功能进行细致检验&#xff0c;力求不放…...

Eigen迭代求解器类

1. 迭代求解器核心类概览 Eigen 提供多种迭代法求解稀疏线性方程组 AxbAxb&#xff0c;适用于大规模稀疏矩阵&#xff1a; 求解器类适用矩阵类型算法关键特性ConjugateGradient对称正定&#xff08;SPD&#xff09;共轭梯度法&#xff08;CG&#xff09;高精度&#xff0c;内…...

AI 与高性能计算的深度融合:开启科技新纪元

在当今科技迅猛发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;与高性能计算&#xff08;HPC&#xff09;正以前所未有的态势深度融合&#xff0c;这种融合宛如一场强大的风暴&#xff0c;席卷并重塑着众多领域的格局。从科学研究的突破到商业应用的革新&#xff0c…...

写入cache时数据格式错误产生的ERRO导致整个测试框架无法运行

背景 在yaml文件里面提取request放入缓存时&#xff0c;request是form-data&#xff0c;错用jsonpath提取并写入缓存&#xff0c;导致后面的所有运行都异常 原因 起因是我想引用请求体的Uid&#xff0c;提取方式用错了&#xff0c;所以可以看到最后一段current_request_set_…...

3:QT联合HALCON编程—海康相机SDK二次程序开发

思路&#xff1a; 1.定义带UI界面的主函数类 1.1在主函数中包含其它所有类头文件&#xff0c;进行声明和实例化&#xff1b;使用相机时&#xff0c;是用公共相机的接口在某一个具体函数中去实例化具体的海康相机对象。 1.2设计界面&#xff1a;连接相机&#xff0c;单次采集&a…...

图论---LCA(倍增法)

预处理 O( n logn )&#xff0c;查询O( log n ) #include<bits/stdc.h> using namespace std; typedef pair<int,int> pii; const int N40010,M2*N;//是无向边&#xff0c;边需要见两边int n,m; vector<int> g[N]; //2的幂次范围 0~15 int depth[N],fa[N][1…...

Bento4的安装和简单转码

1.下载Bento4 2解压复制到安装位置 3配置环境变量 在path下配置 5.视频转码为Dash 视频分片化 mp4fragment --track video --fragment-duration 4000 C:\Users\zcc\Downloads\Video\gg.mp4 C:\Users\zcc\Downloads\Video\out3\input_fragmented.mp4分片化的视频转码为dash…...

用python写一个相机选型的简易程序

最近有点忙&#xff0c;上来写的时间不多。 今天就把之前写的一个选型的简易程序&#xff0c;供大家参考。 代码&#xff1a; import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,QLabel, QLineEdit, QPushButton, QGro…...

论人际关系发展的阶段

朋友关系的建立和发展是一个渐进的过程&#xff0c;通常需要经历情感积累、信任磨合和价值观融合等阶段。以下是朋友关系发展的详细阶段划分及核心特征&#xff1a; 一、表层接触阶段&#xff08;社交试探期&#xff09; 核心特征&#xff1a;以信息交换为主&#xff0c;关系停…...

2软考系统架构设计师:第一章系统架构概述 - 练习题附答案及超详细解析

第一章系统架构概述综合知识单选题 每道题均附有答案解析&#xff1a; 1. 系统架构的核心定义是什么&#xff1f; A. 系统代码的实现细节 B. 系统组件、组件关系及与环境交互的高层次设计蓝图 C. 用户界面的设计规范 D. 数据库表结构的详细设计 答案&#xff1a;B 解析&…...

华为OD机试真题——素数之积RSA加密算法(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C、GO六种语言的最佳实现方式&#xff1b; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析&#xff1b; 本文收录于专栏&#xff1a;《2025华为OD真题目录…...

k8s中资源的介绍及标准资源namespaces实践

文章目录 第1章 k8s中的资源(resources)介绍1.1 k8s中资源(resouces)的分类1.2 k8s中资源(resources)的级别1.3 k8s中资源(resources)的API规范1.4 k8s中资源(resources)的manifests 第2章 k8s中的标准资源之namespaces的实践2.1 基本介绍2.2 编写相关ns资源对象的manifests2.3…...

k8s学习记录(四):节点亲和性

一、前言 在上一篇文章里&#xff0c;我们了解了 Pod 中的nodeName和nodeSelector这两个属性&#xff0c;通过它们能够指定 Pod 调度到哪个 Node 上。今天&#xff0c;我们将进一步深入探索 Pod 相关知识。这部分内容不仅信息量较大&#xff0c;理解起来也有一定难度&#xff0…...

联想笔记本电脑在Windows下通过联想驱动实现风扇控制

概述 本文旨在解决部分联想笔记本电脑无法使用主流的风扇控制工具&#xff08;如Fan Control, SpeedFan&#xff09;控制风扇的问题。主流的风扇控制工具在这些电脑上会因无法找到控制风扇的EC寄存器而无法发挥作用。但这是不是就意味着没办法控制风扇了呢&#xff1f;答案是否…...

Java单链表题目

Java链表题目练习 移除链表元素反转单链表链表的中间节点返回倒数第K个节点合并两个有序列表判断链表是否回文 学习了知识&#xff0c;就要进行其检验自己是否真正学会&#xff0c;练习题目来加强对知识的理解&#xff0c;今天就来练习一下链表题目 移除链表元素 目的&#xff…...

springboot入门-controller层

在 Spring Boot 中&#xff0c;Controller 层是处理 HTTP 请求的核心组件&#xff0c;负责接收客户端请求、调用业务逻辑&#xff08;Service 层&#xff09;并返回响应。其核心原理基于 Spring MVC 框架&#xff0c;通过注解驱动的方式实现请求的路由和参数绑定。以下是 Contr…...

游戏引擎学习第245天:wglChoosePixelFormatARB

Blackboard: PBO&#xff08;像素缓冲对象&#xff09; 我们将一起编写一个完整的游戏。老实说&#xff0c;我原本以为我们会花更长时间来实现异步纹理上传&#xff0c;结果我们只用了两天时间&#xff0c;主要原因是我们没有设置标志来真正告诉程序下载纹理&#xff0c;所以这…...

中国大陆DNS服务选择指南:阿里云VS AWS,合规性与最佳实践

导语 在中国大陆开展互联网业务时,DNS服务的选择不仅关乎性能,更涉及合规性问题。本文将深入探讨DNS服务商选择的自由度、阿里云与AWS DNS服务的优劣势,以及如何在确保合规的同时优化您的域名解析策略。无论您是初创公司还是跨国企业,这份指南都将助您在复杂的中国互联网环境中…...

LLaMa Factory大模型微调

LLaMa Factory大模型微调 大模型微调平台&硬件LLaMA-Factory安装hfd下载hugging face模型自我认知微调Alpaca数据集指令监督微调断点续训 大模型微调 微调自我认知微调特定领域数据集。 平台&硬件 Ubuntu20.04显卡&#xff1a;M40 24G 2080TI 22G微调框架&#xff…...

git和github的使用指南

目录 1.git初始化本地仓库 2.远程仓库 3.如何将自己的代码上传到远程仓库的某一个分支 1.git初始化本地仓库 在项目目录中初始化 Git 仓库&#xff1a; cd your-project-directory git init 将文件添加到暂存区&#xff1a; git add . //添加所有文件 git add <fi…...

如何快速轻松地恢复未保存的 Word 文档:简短指南

文字处理器已经存在了几十年&#xff0c;其中许多已经变得非常擅长防止问题。丢失未保存的数据是一个常见问题&#xff0c;因此办公软件通常带有恢复文件的方法。在本文中&#xff0c;我们将介绍如何恢复 Word 文档&#xff0c;即使您尚未保存它。 确保数据安全的最佳方法是保…...

【Linux网络】打造初级网络计算器 - 从协议设计到服务实现

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

基于STM32定时器中断讲解(HAL库)

基于STM32定时器中断讲解&#xff08;HAL库&#xff09; 1、定时器简单介绍 以STM32F103C8T6中几个定时器为例&#xff1a; TIM1&#xff1a;这是一个高级定时器&#xff0c;不仅具备基本的定时中断功能&#xff0c;还拥有内外时钟源选择、输入捕获、输出比较、编码器接口以…...

《Vue3学习手记5》

pinia 共享的数据交给集中状态管理 引入与使用 //main.ts // 引入Pinia import {createPinia} from "pinia"const piniacreatePinia() app.use(pinia)案例&#xff1a; <template><div class"count"><h2>当前和为&#xff1a;{{ sum…...

MySQL多查询条件下深度分页性能优化技巧及示例总结

深度分页(Deep Pagination)是MySQL中常见的性能瓶颈问题,特别是在多查询条件下,当offset值很大时,查询性能会急剧下降。本文将总结多种优化技巧,并提供实际示例。 一、深度分页的性能问题分析 当执行类似SELECT * FROM table WHERE condition1 AND condition2 LIMIT 1000…...

3、初识RabbitMQ

界面上的导航栏共分6部分&#xff0c;分别代表不同的意思 一、Producer和Consumer Producer: 生产者, 是RabbitMQ Server的客户端, 向RabbitMQ发送消息 Consumer: 消费者, 也是RabbitMQ Server的客⼾端, 从RabbitMQ接收消息 Broker&#xff1a;其实就是RabbitMQ Server, 主要…...

量子计算与GPU的异构加速:基于CUDA Quantum的混合编程实践

一、量子模拟的算力困境与GPU破局 量子计算模拟面临‌指数级增长的资源需求‌&#xff1a;n个量子比特的态向量需要存储2^n个复数。当n>30时&#xff0c;单机内存已无法承载&#xff08;1TB需求&#xff09;。传统CPU模拟器&#xff08;如Qiskit Aer&#xff09;在n28时计算…...

在Spring Boot项目中实现Word转PDF并预览

在Spring Boot项目中实现Word转PDF并进行前端网页预览&#xff0c;你可以使用Apache POI来读取Word文件&#xff0c;iText或Apache PDFBox来生成PDF文件&#xff0c;然后通过Spring Boot控制器提供文件下载或预览链接。以下是一个示例实现步骤和代码&#xff1a; 1. 添加依赖 …...

Windows怎样使用curl下载文件

安装curl 从官网下载&#xff1a;访问curl官方网站&#xff0c;根据系统位数&#xff08;32 位或 64 位&#xff09;选择相应的版本进行下载。下载完成后&#xff0c;双击安装程序并按照提示进行安装。也可以选择自定义安装路径&#xff0c;记住安装路径&#xff0c;后续配置环…...

priority_queue的学习

priority_queue的介绍 优先级队列是一种容器适配器&#xff0c;根据严格的弱排序标准&#xff0c;它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆&#xff0c;在堆中可以随时插入元素&#xff0c;并且只能检索最大堆元素(优先队列中位于顶部的元素)。优先队列被…...

浅谈Java 内存管理:栈与堆,垃圾回收

在Java编程世界里&#xff0c;内存管理是一项极为关键的技能&#xff0c;它就像程序运行背后的“隐形守护者”&#xff0c;默默影响着程序的性能与稳定性。今天&#xff0c;咱们就来简单学习一下Java内存管理中的两大核心要点&#xff1a;栈与堆的内存分配机制&#xff0c;以及…...

windows下查看idea运行的进程占的JVM情况工具

jconsole 查看JVM 查看线程数 自己测试时&#xff0c;可以先不把线程关闭查效果。 也可以用这工具查下是不是有线程一直在增加。...

【新技术】微软 Azure Test Impact Analyzer (TIA) 全面解析

目录 一、什么是 Azure Test Impact Analyzer&#xff1f;二、核心功能与优势三、如何掌握 Azure TIA&#xff1f;四、工作中的典型应用场景五、最佳实践与注意事项六、总结 一、什么是 Azure Test Impact Analyzer&#xff1f; Azure Test Impact Analyzer (TIA) 是微软 Azur…...

JAVA服务内存缓慢上涨,年轻代GC正常但Full GC频繁,如何定位?

1. 分析 &#xff1a; 年轻代GC正常&#xff0c;说明年轻代的对象回收没有问题&#xff0c;可能大部分对象都是朝生夕死的&#xff0c;所以Minor GC能有效清理。但Full GC频繁&#xff0c;通常意味着老年代空间不足&#xff0c;导致频繁进行Full GC来回收老年代。而内存缓慢上…...

浏览器界面无显示,提示“代理服务器可能有问题”,这是怎么回事呢?

前言 &#x1f31f;&#x1f31f;本期讲解浏览器代理服务器解决办法介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…...

C#中的弱引用使用

弱引用&#xff08;Weak Reference&#xff09;是一种特殊的引用类型&#xff0c;它允许你引用一个对象&#xff0c;但不会阻止该对象被垃圾回收器&#xff08;GC&#xff09;回收。弱引用通常用于需要缓存或跟踪对象&#xff0c;但又不希望因保留引用而导致内存泄漏的场景。弱…...

在Linux虚拟机下使用vscode,#include无法跳转问题

总结&#xff1a;需要通过Linux指令来添加编译器和压缩文件&#xff0c;解压&#xff0c;这样获得的编译器会具有可执行权限类似于 -rwxr-xr-x 1 user user 12345 Apr 26 14:22 myscript.sh 如果你直接从window中拖入文件到Linux文件下&#xff0c;你需要自己来再度开启可编译…...

MIL、SIL、HIL与Back-to-Back测试详解:从模型到硬件的完整验证链

1. 引言 在嵌入式系统和控制算法开发中&#xff0c;MIL、SIL、HIL和Back-to-Back测试构成了从模型设计到硬件部署的完整验证流程。它们覆盖不同开发阶段&#xff0c;确保系统功能正确性、实时性和可靠性。 本文将清晰解析这四种测试方法的核心概念、应用场景及差异。 2. 四种测…...