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

专题三——二分查找

目录

一、二分查找

1、题目

2、解题思路

3、代码实现

 4、时间复杂度

5、朴素二分法的模板总结

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

1、题目

2、题目解析

3、代码实现

4、 模板总结(重点)

三、x的算法平方根

1、题目

2、 题目解析

3、代码实现

四、搜索插入位置

1、题目

2、题目解析

3、代码实现

五、上峰数组的索引

1、题目

 2、题目解析

3、代码实现

六、寻找峰值

1、题目

2、解题思路

3、代码编写


一、二分查找

1、题目

二分查找

2、解题思路

方法一:暴力解法:我们直接遍历找到target

方法二:二分查找:我们观察到它是一个升序数组,具有二段性 我们可以将它分为两段target一定可以在这两端中的一段,这样我们就可以直接省去一半的数值,然后我们再分二端又可以省去一半数值。。。

3、代码实现

暴力实现:

class Solution {
public:int search(vector<int>& nums, int target){for(int i = 0;i<nums.size();i++){if(target == nums[i])return  i;}return -1;}
};

二分查找: 

 

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

 4、时间复杂度

如上图时间复杂度为logn 

5、朴素二分法的模板总结

有一些人会使用left+(right-left+1)/2或者(right+left)/2其实和 (left+right)/2 和left+(right-left)/2的差别就是在数组个数为偶数的时候一个是前者,一个为后者,在朴素二分法这两者的效果是一样的

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

1、题目

https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/

2、题目解析

我们可以将题目化简成找target的左端点和右端点

找左端点 

我们像第一道题一样定义right,left求让中点值和target比较,当mid的值大于或者等于target 我们将right的移到mid(为什么要移到mid位置:因为防止mid的位置就是左端点的位置)

当mid的值小于target我们将left移到mid+1的位置

一直到left<right的时候结束循环:一般会出现三种情况  : left和right 区间中有我们最终的值

我们可以观察到一旦left=right的时候就是我们的最终结果

当left和right区域内全部大于t

我们观察到当全部都是大于t的时候right会不停向left靠近,当他们相等的时候判断值就知道了有没有找到,不需要再进入循环,当left和right区域内小于t同理

综上所述我们的循环结束条件是left<right 1.left = right的时候就是最终结果,无需判断

                                                                   2.一旦我们判断就是死循环

求中点的操作

mid = left+(right - left)/2 (不能使用left+(right -left+1)/2这个在偶数个数的时候会使用后面的值当作中点会进入死循环)

如上图如果选择后者为mid那么right会一直被停留在3,造成死循环。

找右端点

同理,不同的是当mid的值大于target我们将right的移到mid-1,如果mid的值小于或者等于target移动到将left移动到mid的位置,找中点结点使用的公式是left+(right -left+1)/2 

3、代码实现

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

4、 模板总结(重点)

这个模板只需要记住三角形的地方,其他地方我们可以快速判断(口诀:下面出现-1的时候,上面就+1)

三、x的算法平方根

1、题目

https://leetcode.cn/problems/sqrtx/

2、 题目解析

暴力解法:循环遍历从1到它本身的值看那个值的平方满足这个条件,然后返回

二分算法:我们能观察他是具有二段性的(就是可以将这组数据一分为二,比如这个可以分为大于值的,和小于值的)和前集体一样,我们首先定义left 和right

如果mid平方的值小于等于x left = mid,如果mid平方的值大于x right = left-1; 

3、代码实现

class Solution {
public:int mySqrt(int x){if(x<1)return 0;int left = 1;int right = x;while(left<right){long long mid = left+(right-left+1)/2;if(mid*mid <= x){left = mid;} else{right = mid-1;}}return right;}
};

四、搜索插入位置

1、题目

https://leetcode.cn/problems/search-insert-position/description/?envType=study-plan-v2&envId=top-100-liked

2、题目解析

暴力解法:遍历数组

二分算法:我们需要找到大于或等于目标值的值,这道题的思路和查找区间左端点的模板思路有                      高度的相似但是我们要注意的是这个算法只能解决目标值的大小在区间内的,例示例                      三我们需要让他返回后一个位置

3、代码实现

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

五、上峰数组的索引

1、题目

https://leetcode.cn/problems/B1IidL/description/

 2、题目解析

(1)暴力方法:遍历数组,如果它的下一个比它的值要小就是山峰

(2)二分查找:我们发现我们可以将这个数组分为两部分(一部分arry[i]<arry[i+1]另外一部分              arry[i]>arry[i+1])所以它符合二分性,可以使用二分查找

如果arry[mid]>arry[mid-1] left = mid  如果arry[mid]<arry[mid-1 ] right = mid -1;

mid =left+ (right -left+1)/2;

3、代码实现

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

六、寻找峰值

1、题目

https://leetcode.cn/problems/find-peak-element/

2、解题思路

(1)暴力解法:遍历整个数组如果nums[i+1]<nums[i] i就是封顶

(2)二分查找:我们可以发现虽然这个数据是无需的但是如果nums[i+1]<nums[i]在左边一定有峰           值right = mid,如果nums[i+1]>nums[i]在右边一定有峰值left = mid+1(mid 表示中介按值)

3、代码编写

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

七、寻找旋转排序数组中最小的值

1、题目

https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/

2、解题思路

1、暴力查找:遍历整个数组,如果nums[i+1]<nums[i] ,i即为最小值的索引

2、二分算法:首先我们可以将这个数组给大致画出来

如上图,我们可以能明显的发现二分性,左边始终大于最后一个的值,右边始终小于等于最后一个值

我们定义left ,right 分别指向第一个值和最后一个值,当他们的中间值nums[mid] (mid = left +(right- left)/2)<= nums[nums.size()-1] right = mid;               当他们的中间值nums[mid] >nums[nums.size()-1] left= mid+1  ; 

3、代码编写

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

相关文章:

专题三——二分查找

目录 一、二分查找 1、题目 2、解题思路 3、代码实现 4、时间复杂度 5、朴素二分法的模板总结 二、在排序数组中查找元素的第一个和最后一个位置 1、题目 2、题目解析 3、代码实现 4、 模板总结&#xff08;重点&#xff09; 三、x的算法平方根 1、题目 2、 题目解…...

从零实现HTTP服务器

响应&#xff1a; 第一部分测试代码&#xff0c;读取请求 Makefile binhttpserver #生成的可执行程序 ccg #编译器名称 LD_FLAGS-stdc11 -lpthread #-DDEBUG1 #链接选项 srcmain.cc$(bin):$(src)$(cc) -o $ $^ $(LD_FLAGS).PHONY:clean clean:rm -f $(bin) 1111111 main.cc…...

智能检索知识库​

一、智能检索知识库作用 1. 提升信息检索效率&#xff0c;降低人力成本 快速获取精准答案&#xff1a;员工无需手动翻阅大量文档&#xff08;如产品手册、合同、技术文档&#xff09;&#xff0c;直接通过自然语言提问获取答案。 减少重复性工作&#xff1a;HR、客服、技…...

北斗导航 | 接收机自主完好性监测(RAIM)算法学习思路总结及其算法研究:理论、实现与验证

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 接收机自主完好性监测学习思路 壹、学习思路贰、理论、实现与验证1. 引…...

无法读取库伦值文件节点解决方案

读取库伦值的目的是为了换算成电流&#xff0c;量化场景功耗用途 1.报错日志 /power_log/debuglogger$ adb shell dmesg | grep -Ei "avc..system_server"[ 79.942272] logd.auditd: type1400 audit(1744279324.832:7149): avc: denied { read } for comm"…...

OCR API识别对比

OCR 识别DEMO OCR识别 demo 文档由来 最开始想使用百度开源的 paddlepaddle大模型 研究了几天&#xff0c;发现表格识别会跨行&#xff0c;手写识别的也不很准确。最终还是得使用现成提供的api。。 文档说明 三个体验下来 腾讯的识别度比较高&#xff0c;不论是手写还是识别表…...

高速电路设计概述

1.1 低速设计和高速设计的例子 本节通过一个简单的例子&#xff0c;探讨高速电路设计相对于低速电路设计需要考虑哪些不同的问题。希望读者通过本例&#xff0c;对高速电路设计建立一个表象的认识。至于高速电路设计中各方面的设计要点&#xff0c;将在后续章节展开详细的讨论…...

Keil C51中32位变量赋值异常问题分析与解决

Keil C51中32位变量赋值异常问题分析与解决 问题描述 在使用Keil5对51单片机进行编程时&#xff0c;遇到一个32位变量赋值不正确的问题。具体代码如下&#xff1a; typedef unsigned long uint32;g_Flow_Time (uint32)Storage[2] << 24 | Storage[3] << 16 | S…...

python工程中的包管理(requirements.txt)

pip install -r requirements.txtpython工程通过requirements.txt来管理依赖库版本&#xff0c;上述命令&#xff0c;可以一把安装依赖库&#xff0c;类似java中maven的pom.xml文件。 参考 [](...

用Python修改字体字形与提取矢量数据:fontTools实战指南

字体设计与分析是NLP和视觉领域的交叉应用&#xff0c;而**fontTools** 是一款强大的Python库&#xff0c;可以让我们直接操作字体文件的底层结构。本文将通过两个实用函数&#xff0c;展示如何修改特定字形和提取所有字形的矢量数据&#xff0c;帮助开发者快速上手字体编辑与分…...

数据库守护神-WAL机制

什么是WAL机制&#xff1f; WAL&#xff08;Write-Ahead Logging&#xff0c;预写日志&#xff09;是一种保证数据库操作原子性和持久性的核心机制。其核心原则可概括为&#xff1a; 任何数据修改操作&#xff0c;必须在对应的日志记录持久化到磁盘之后&#xff0c;才能将实际…...

[MySQL]数据库与表创建

欢迎来到啾啾的博客&#x1f431;。 这是一个致力于构建完善 Java 程序员知识体系的博客&#x1f4da;。 它记录学习点滴&#xff0c;分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 本篇简单记录…...

工作记录 2015-05-27

工作记录 2015-05-27 序号 工作 相关人员 1 修改了指定短语的大小写的处理。 取消了一些逗号的处理。 郝 另&#xff1a; iCDA更新到了190的D:\Temp\CHTeam\iCDA_20150527下了 修改的文件&#xff1a; bin目录下是程序。 0223目录下是0223的一些设置和关键字。 更新…...

嵌入式汇编语言从小白到入门:从零开始的底层编程之旅

嵌入式汇编语言从小白到入门:从零开始的底层编程之旅 汇编语言作为最接近机器语言的编程方式,在嵌入式开发中扮演着不可替代的角色。本文将带你从零开始,逐步掌握嵌入式汇编语言的核心概念和实践技巧,最终能够独立编写简单的汇编程序并与C语言混合编程。 一、汇编语言与嵌…...

GPIO_ReadInputData和GPIO_ReadInputDataBit区别

目录 1、GPIO_ReadInputData: 2、GPIO_ReadInputDataBit: 总结 GPIO_ReadInputData 和 GPIO_ReadInputDataBit 是两个函数&#xff0c;通常用于读取微控制器GPIO&#xff08;通用输入输出&#xff09;引脚的输入状态&#xff0c;特别是在STM32系列微控制器中。它们之间的主要…...

不使用docker在本地安装与配置RAGFlow

RAGFlow 本地安装与配置(非docker方式) 一. 运行环境 windows10 CPU i7-12700F 2.10GHz内存 32GGPU RTX 4060 Ti 8G wsl 2 Ubuntu-22.04 1. 防火墙配置 wsl默认访问windows的本机服务需要配置防火墙&#xff0c;否则访问会失败。 windows10的防火墙配置&#xff1a; 打…...

sysfs 设备模型

介绍 Sysfs 设备文件系统与proc是同一类的文件系统&#xff0c;基于ramfs实现的内存文件系统。 1.1 为什么会有 sysfs&#xff1f;procfs 的局限性&#xff1a; 早期&#xff0c;Linux 使用 procfs 来提供内核与用户空间的交互接口。但 procfs 的设计不够层次化&#xff0c;设…...

彩讯携Rich AICloud与一体机智算解决方案亮相中国移动云智算大会

2025年4月10日&#xff0c;2025中国移动云智算大会在苏州盛大开幕&#xff0c;本次大会以“由云向智 共绘算网新生态”为主题&#xff0c;与会嘉宾围绕算力展开重点探讨。 大会现场特设区域展出各参会单位的最新算力成果&#xff0c;作为中国移动重要合作伙伴&#xff0c;彩讯…...

js触发隐式类型转换的场景

JavaScript 的隐式类型转换&#xff08;Implicit Type Coercion&#xff09;会在某些操作或上下文中自动触发&#xff0c;将值从一种类型转换为另一种类型。以下是常见的触发场景&#xff1a; 1. 使用 &#xff08;宽松相等&#xff09;比较时 会尝试将两边的值转换为相同类型后…...

《AI大模型应知应会100篇》第9篇:大模型的推理能力:原理与实现

第9篇&#xff1a;大模型的推理能力&#xff1a;原理与实现 摘要 近年来&#xff0c;随着大语言模型&#xff08;LLM&#xff09;的快速发展&#xff0c;其推理能力逐渐成为研究和应用中的热点话题。这些模型不仅能够生成流畅的文本&#xff0c;还能在一定程度上进行逻辑推理、…...

PODS_ROOT、BUILT_PRODUCTS_DIR和SRCROOT有什么区别

在 iOS/macOS 开发中&#xff0c;${PODS_ROOT}、${BUILT_PRODUCTS_DIR} 和 ${SRCROOT} 是三个核心的 Xcode 环境变量&#xff0c;它们的区别主要体现在 目录层级、内容归属 和 生命周期 上。以下是结构化对比和具体示例&#xff1a; 1. 定义与作用域对比 变量全称指向路径管理…...

Elasticsearch 系列专题 - 第六篇:高级功能与生态系统

Elasticsearch 不仅是一个强大的搜索引擎,还提供了高级功能和丰富的生态系统支持。本篇将深入探讨这些特性,并介绍如何与其他工具协同工作。 1. 高级特性 1.1 跨集群搜索(Cross-Cluster Search) 跨集群搜索允许查询多个独立集群的数据,适用于分布式系统。 配置远程集群:…...

python的web框架flask(hello,world版)

问题 最近需要基于一个开源项目进行二次开发&#xff0c;但是&#xff0c;现在的我主修java&#xff0c;从来没有接触过python的web开发。所以&#xff0c;我现在需要学习一下flask的hello&#xff0c;world。 python版本选择 通过这个Python版本状态页面Status of Python v…...

Vue学习笔记 - 逻辑复用 - 组合式函数

昨天参加了次视频面试&#xff0c;慢慢可以查漏补缺,继续学习Vue相关的知识&#xff0c;考虑找个实际的开源项目。 逻辑复用 组合式函数 在 Vue 应用的概念中&#xff0c;“组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。 无状态的…...

Caffeine的两种实现方式

咱们来具体对比一下你之前给的这段配置代码&#x1f447;&#xff1a; java Configuration EnableCaching public class CacheConfig { Bean public CacheManager cacheManager() { CaffeineCacheManager manager new CaffeineCacheManager("myCache"); manager.…...

单细胞Seurat标准分析流程R语言封装

单细胞Seurat标准分析流程R语言封装 数据预处理与质控(线粒体基因比例计算、QC图表生成)标准化与高变基因筛选PCA/UMAP降维与聚类分析 差异表达分析模块自动化输出PNG可视化图表(质控小提琴图、UMAP聚类图)结果将保存在results/和figures/目录下(RDS对象、差异基因CSV表格…...

MOS管的发热原因和解决办法

发热来源 如上图&#xff0c;MOS管的工作状态有4种情况&#xff0c;分别是开通过程&#xff0c;导通过程&#xff0c;关断过程和截止过程。 导致发热的损耗主要有两种&#xff1a;开关损耗、导通损耗。 导通损耗 导通损耗比较好计算&#xff0c;根据驱动电压VGS值可以得到MOS…...

航顺HK32M070电钻解决方案:驱动未来,掌控无限可能

一、市场规模与增长&#xff1a;电动工具行业持续扩容&#xff0c;电钻需求强劲 全球电动工具市场规模近年来保持稳定增长&#xff0c;2023年市场规模已达288.5亿美元&#xff0c;预计2024年将突破304.9亿美元&#xff0c;年复合增长率达6.9%。中国市场表现尤为亮眼&#xff0…...

关于nacos注册的服务的ip异常导致网关路由失败的问题

文章目录 关于nacos注册的服务的ip异常导致网关路由失败的问题相关处理方案为方案一:手动指定服务注册的 IP 地址方法二&#xff1a;设置优先使用的网络段方法三&#xff1a;指定网络接口方法四&#xff1a;忽略特定的网卡 备注 关于nacos注册的服务的ip异常导致网关路由失败的…...

UI测试流程与关键注意点解析

在当今以用户体验为核心的数字时代&#xff0c;用户界面(UI)作为软件与用户交互的直接窗口&#xff0c;其质量直接影响着产品的成败。UI测试作为软件测试的重要组成部分&#xff0c;确保应用程序不仅功能完善&#xff0c;而且在视觉呈现和交互体验上也能满足用户期望。 作为软…...

从零开始构建智能聊天机器人:Rasa与ChatGPT API实战教程

引言&#xff1a;AI对话系统的时代机遇 在数字化转型浪潮中&#xff0c;聊天机器人已成为连接用户与服务的关键纽带。无论是客服系统中的724小时即时响应&#xff0c;还是智能家居中的语音交互&#xff0c;聊天机器人正在重塑人机交互方式。本文将通过详细教程&#xff0c;手把…...

SSM aop切面编程的学习

面向切面的AOP编程的引入&#xff1a; 1. 代码缺陷 - 非核心代码对核心业务功能有干扰&#xff0c;导致程序员在开发核心业务功能时分散了精力 - 附加功能代码重复&#xff0c;分散在各个业务功能方法中&#xff01;冗余&#xff0c;且不方便统一维护&#xff01; 2. 解决思路 …...

Zen 5白色装机优选,华硕X870 AYW GAMING WIFI W主板来了!

华硕X870/X870E系列主板再次迎来新成员——华硕X870 AYW GAMING WIFI W主板正式发售&#xff01;专为追求高性价比游戏玩家而量身打造&#xff0c;延续AYW系列经典SPACE太空元素&#xff0c;配合大面积银白色散热装甲&#xff0c;打造出了极具金属质感和科技感的外观&#xff0…...

第Y1周:调用YOLOv5官方权重进行检测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 文章目录 1、前言2、下载源码3、运行代码 1、前言 YOLOv5分为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个版本&#xff0c;这里以YOLOv5s为例。 2、下载源码 安…...

科技项目验收测试怎么做?验收测试报告如何获取?

科技项目从研发到上市需要一个很长的周期&#xff0c;并且在上市之前还有一个至关重要的交付过程&#xff0c;那就是项目验收&#xff0c;验收需要通过验收测试来呈现。科技项目验收测试是确保项目成功交付的关键步骤&#xff0c;那么是如何进行的呢?企事业单位想要获取科技项…...

C++笔记

C知识笔记 一、C概述 C是一种通用编程语言&#xff0c;它在C语言的基础上扩展而来&#xff0c;支持面向对象编程、泛型编程和过程化编程等多种编程范式。C具有高效、灵活、接近硬件等特点&#xff0c;广泛应用于系统软件、应用软件、嵌入式系统、游戏开发等领域。其强大的性能…...

国产Linux统信安装mysql8教程步骤

系统环境 uname -a Linux FlencherHU-PC 6.12.9-amd64-desktop-rolling #23.01.01.18 SMP PREEMPT_DYNAMIC Fri Jan 10 18:29:31 CST 2025 x86_64 GNU/Linux下载离线安装包 浏览器下载https://downloads.mysql.com/archives/get/p/23/file/mysql-test-8.0.33-linux-glibc2.28…...

如何应对“最后时刻任务堆积”(鼓包现象)

应对“最后时刻任务堆积”&#xff08;鼓包现象&#xff09;的方法包括&#xff1a;合理规划项目时间表、强化进度跟踪管理、明确任务优先级、有效的资源配置、提升团队沟通效率。其中&#xff0c;强化进度跟踪管理尤为关键。根据项目管理协会&#xff08;PMI&#xff09;的调查…...

C语言,原码、补码、反码

计算机是以补码来存储的 原码&#xff1a;正数最高位为&#xff1a;0&#xff1b;负数最高位为&#xff1a;1 &#xff08;最高位是符号位&#xff09; 正数&#xff1a;三码合一 如&#xff1a;2&#xff1a; 原码&#xff1a;0000 0000 0000 0000 0000 0000 0000 0010&#…...

Unifying Short and Long-Term Tracking with Graph Hierarchies—CVPR2023

Unifying Short and Long-Term Tracking with Graph Hierarchies 博客目录 Unifying Short and Long-Term Tracking with Graph Hierarchies摘要概况引言和相关介绍提出的观点 SUSHI核心构建跟踪图的层次结构构建分层剪辑分区 做第二个创新模块的需要将研究的重点从处理遮挡的问…...

深入解析 C# 中的模板方法设计模式

模板方法设计模式&#xff08;Template Method Pattern&#xff09;是行为型设计模式中的一种&#xff0c;它定义了一个操作中的算法框架&#xff0c;并允许子类在不改变算法整体结构的情况下&#xff0c;重新定义该算法的某些步骤。该模式通常用于类中包含一系列固定步骤的算法…...

0411 | 软考高项笔记:项目立项

在软考的项目管理知识体系中&#xff0c;技术可行性和经济可行性是项目立项阶段非常重要的两个分析维度。以下是对这两个考点的详细解释和记忆方法&#xff1a; 技术可行性分析 定义&#xff1a; 技术可行性分析是评估项目在现有技术条件和资源下是否能够成功实施。它主要回答…...

ubnetu 服务器版本常用端口和开放的端口对应的应用

1. 使用 netstat 查看端口与进程 netstat 是查看网络连接和监听端口的常用工具。通过以下命令可以列出所有开放的TCP/UDP端口及其关联的进程&#xff1a; sudo netstat -tulnp参数解析&#xff1a; -t&#xff1a;显示TCP端口。 -u&#xff1a;显示UDP端口。 -l&#xff1…...

【服务器端表单字符验证】

文章目录 一、实验目的二、核心代码实现三、调试关键问题四、总结 一、实验目的 掌握JSP表单验证在服务器端的实现技术&#xff0c;实现对用户输入字符的非空及长度为5的验证&#xff0c;返回对应提示信息并优化用户交互。 二、核心代码实现 前端表单 <form action"…...

pip 与 conda 的全面比较:Python 包管理的深度解析

在 Python 的生态系统中&#xff0c;包管理工具是开发者日常工作的重要组成部分。​其中&#xff0c;pip 和 conda 是最常用的两种包管理工具。​虽然它们在功能上有一些重叠&#xff0c;但在设计理念、功能范围、依赖管理、环境隔离等方面存在显著差异。​本文将从多个维度深入…...

GTID不一致修复

背景描述 GTID模式下&#xff0c;mysql主从切换后&#xff0c;主从同步报错 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION 1, but the master has purged bi…...

conda-pack打包环境到超算上。解决无法打包可编辑包

conda-pack 打包 使用 conda-pack 打包 Conda 环境可以将整个环境打包成一个独立的可移植压缩包&#xff0c;方便在其他机器上解压使用。以下是具体步骤&#xff1a; 1.安装 conda-pack 首先需要安装 conda-pack。你可以通过 conda 或 pip 安装&#xff1a; conda install …...

O(n)复杂度实现寻找数组第k小的数(快速选择算法)

非堆排序实现&#xff0c;利用快速排序思想实现的快速选择 package algorithm;public class Test {public int quickSelect(int nums[], int left, int right, int k){if (left right) return nums[left];int i left - 1, j right 1, x nums[left];while (i < j){do i…...

利用 RNN 预测股票价格:从数据处理到可视化实战

在金融领域&#xff0c;预测股票价格走势一直是众多投资者和研究者关注的焦点。今天&#xff0c;我们将利用深度学习中的循环神经网络&#xff08;RNN&#xff09;来构建一个简单的股票价格预测模型&#xff0c;并详细介绍从数据加载、预处理、模型搭建、训练到最终结果可视化的…...

前端从全链路角度分析性能

在面试中回答“从全链路角度分析性能优化”时,需覆盖用户请求到页面渲染的完整链路。以下是结构化回答框架,结合业界实践和最新优化策略: 一、网络传输优化 1. CDN与协议升级 ◦ 使用CDN缩短资源物理距离,结合HTTP/2/3的多路复用和头部压缩特性,提升资源加载效率(如We…...