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

【LeetCode 题解】算法:4.寻找两个正序数组的中位数

1. 引言:挑战 LeetCode 经典算法题

在算法这片广袤无垠的天地里,一道道经典题目宛如夜空中熠熠生辉的星辰,持续吸引着开发者们投身其中,不断探索。今天,我们继续将目光聚焦于 LeetCode 平台上一道极具代表性的题目:如何运用 Java 语言,精确找出两个正序数组的中位数,并且要将算法的时间复杂度严格控制在 (O(log (m + n))) 。这一挑战过程就像一场充满惊险与刺激的冒险,其间思维的火花不断碰撞,探索的乐趣贯穿始终,让我们一同开启这段精彩绝伦的奇妙之旅。

2. 问题拆解:正序数组中位数探寻任务

题目明确给出两个大小分别为 m 和 n 的正序数组 nums1 与 nums2 。我们的核心任务,便是毫无差错地找出这两个数组合并之后的中位数。形象地来讲,这就如同在一堆已经依照顺序排列整齐的拼图碎片里,精准定位到处于最中间位置的那一块(若总碎片数为偶数,则是中间两块的平均值),这个中位数对于把握整个数据集合的中心趋势起着至关重要的作用。

2.1 示例解析:直观理解中位数计算

  • 示例一:当输入为 nums1 = [1, 3] ,nums2 = [2] 时,输出结果为 2.00000 。想象一下,有三个数字小朋友依次站成一排,顺序是 1、2、3 ,站在正中间位置的 2 小朋友,就是我们苦苦寻觅的中位数,它直观地代表了这个小型数字集合的中间水平。

  • 示例二:若输入为 nums1 = [1, 2] ,nums2 = [3, 4] ,输出则是 2.50000 。此时,四个数字小朋友站成一排,顺序为 1、2、3、4 ,而中间位置恰好处于 2 和 3 这两个数字之间。所以,中位数就是这两个数字的平均值,即 (2 + 3) / 2 = 2.5 。这一计算过程,就像是在数字队列中精准地找到了中间的平衡点,巧妙且清晰地反映出数据的集中趋势。

3. 解题思路:巧用二分查找破题

要想实现 (O(log (m + n))) 这般高效的时间复杂度,二分查找这一强大有力的工具无疑是我们的 “秘密武器”。不妨想象一下,你身处一座规模宏大、藏书海量的图书馆,而你需要寻找一本特定的书籍。二分查找就如同赋予了你一种神奇的能力,每一次操作都能够精准地将搜索范围缩小一半,从而迅速锁定目标,极大程度地提升查找效率。

具体到本题当中,我们的解题思路是在较短的那个数组上巧妙施展二分查找的精妙技巧。我们把两个数组视作两块大蛋糕,需要将它们切成左右两部分。在切分的时候,有两个关键要求:其一,左右两部分的元素个数要尽可能相等(若总元素个数为奇数,那就让左边比右边多一个);其二,左边部分的所有元素都必须小于等于右边部分的所有元素。一旦成功完成这样的切分操作,处于中间位置的元素(若总元素个数为偶数,则是中间两个元素的平均值),便是我们梦寐以求的中位数。

4. Java 代码呈现:核心实现逻辑

public class MedianOfTwoSortedArrays {public double findMedianSortedArrays(int[] nums1, int[] nums2) {// 确保nums1是较短的数组,这样可以减少二分查找的范围if (nums1.length > nums2.length) {return findMedianSortedArrays(nums2, nums1);}int m = nums1.length;int n = nums2.length;int imin = 0, imax = m, halfLen = (m + n + 1) / 2;while (imin <= imax) {// 在nums1上进行二分查找int i = (imin + imax) / 2;// 根据i计算nums2上的划分位置int j = halfLen - i;if (i < m && nums2[j - 1] > nums1[i]) {// i太小,需要增大imin = i + 1;} else if (i > 0 && nums1[i - 1] > nums2[j]) {// i太大,需要减小imax = i - 1;} else {// i是完美的划分位置int maxOfLeft;if (i == 0) {// nums1左半部分为空maxOfLeft = nums2[j - 1];} else if (j == 0) {// nums2左半部分为空maxOfLeft = nums1[i - 1];} else {// 取两个数组左半部分的最大值maxOfLeft = Math.max(nums1[i - 1], nums2[j - 1]);}if ((m + n) % 2 == 1) {// 总元素个数为奇数,中位数就是左半部分的最大值return maxOfLeft;}int minOfRight;if (i == m) {// nums1右半部分为空minOfRight = nums2[j];} else if (j == n) {// nums2右半部分为空minOfRight = nums1[i];} else {// 取两个数组右半部分的最小值minOfRight = Math.min(nums1[i], nums2[j]);}// 总元素个数为偶数,中位数是左半部分最大值和右半部分最小值的平均值return (maxOfLeft + minOfRight) / 2.0;}}// 不会执行到这里throw new IllegalArgumentException();}public static void main(String[] args) {MedianOfTwoSortedArrays solution = new MedianOfTwoSortedArrays();int[] nums1 = {1, 3};int[] nums2 = {2};System.out.println(solution.findMedianSortedArrays(nums1, nums2));nums1 = new int[]{1, 2};nums2 = new int[]{3, 4};System.out.println(solution.findMedianSortedArrays(nums1, nums2));}}

5. 代码逐行剖析:理解每一步操作

5.1 数组长度调整策略

代码一开始,就会细致地比较 nums1 和 nums2 的长度。一旦发现 nums1 的长度大于 nums2 ,便会灵活巧妙地调用自身方法,将两个数组的位置进行互换,以此确保 nums1 始终是较短的那个数组。这一操作就如同在整理书架时,特意把书本数量较少的那一排放在最便于拿取的位置,为后续进行二分查找提供了极大的便利,能够显著缩小查找范围,进而有效提升算法的整体效率。

5.2 二分查找初始化与推进

初始化了多个关键变量,其中 imin 和 imax 就如同两个忠诚的 “哨兵”,精准无误地标记出二分查找的范围边界;而 halfLen 则像是一把特制的 “尺子”,专门用于确定数组划分位置的关键数值。在 while 循环中,通过 (imin + imax) / 2 这一精巧的运算,在 nums1 数组上成功确定划分位置 i 。紧接着,依据 halfLen 迅速计算出 nums2 数组对应的划分位置 j 。这一过程,就仿佛是在两块拼图板上同时精准地寻找分割线,使得左右两边的拼图数量恰到好处,为后续正确划分数组奠定了坚实的基础。

5.3 划分位置动态优化

当 i 取值过小时,就会出现 nums2 左半部分的某个元素大于 nums1 右半部分对应元素的情况。此时,程序会毫不犹豫地将 imin 增大,促使 i 向右移动,这就如同在拼图过程中发现某块碎片位置摆放错误,及时将其调整到正确方向。反之,若 i 取值过大,导致 nums1 左半部分的某个元素大于 nums2 右半部分对应元素,程序则会减小 imax ,让 i 向左移动,通过不断地这样优化划分位置,直至达到理想状态。

5.4 中位数计算与输出

一旦成功找到完美的划分位置 i ,便正式进入计算中位数的关键环节。首先确定左半部分的最大值 maxOfLeft :若 nums1 左半部分为空,那就直接选取 nums2 左半部分的最后一个元素;若 nums2 左半部分为空,则选取 nums1 左半部分的最后一个元素;若两者均不为空,就从两个数组左半部分中选取较大值。若总元素个数为奇数,那么 maxOfLeft 就是我们苦苦追寻的中位数,直接返回该结果,顺利完成任务。若总元素个数为偶数,还需确定右半部分的最小值 minOfRight ,其计算方式与确定 maxOfLeft 类似。最后,通过 (maxOfLeft + minOfRight) / 2.0 这一公式,精准计算出中位数,这就如同找到了拼图中间的关键连接点,将左右两边完美融合,输出最终答案。

6. 复杂度分析:算法效率评估

6.1 时间复杂度

(O(log(min(m, n)))) ,这是因为我们巧妙地将二分查找操作限定在较短的数组上。每次执行二分查找,都如同在迷宫中找到了正确的岔路,能够将搜索范围精准地缩小一半,极大地提高了查找效率,使得算法能够快速朝着目标前进。

6.2 空间复杂度

(O(1)) ,整个算法在执行过程中,仅仅使用了几个固定不变的变量,就如同在一个小巧而精致的工作室里工作,无需占用过多额外空间,充分展现了算法设计的简洁高效,尽显精妙之处。

感谢各位的阅读,后续将持续给大家讲解力扣中的算法题,如果觉得这篇内容对你有帮助,别忘了点赞和关注,后续还有更多精彩的算法解析与你分享!

相关文章:

【LeetCode 题解】算法:4.寻找两个正序数组的中位数

1. 引言&#xff1a;挑战 LeetCode 经典算法题 在算法这片广袤无垠的天地里&#xff0c;一道道经典题目宛如夜空中熠熠生辉的星辰&#xff0c;持续吸引着开发者们投身其中&#xff0c;不断探索。今天&#xff0c;我们继续将目光聚焦于 LeetCode 平台上一道极具代表性的题目&am…...

2025.03.23【前沿工具】| CellPhoneDB:基因网络分析与可视化的利器

文章目录 1. CellPhoneDB工具简介2. CellPhoneDB的安装方法3. CellPhoneDB常用命令 1. CellPhoneDB工具简介 在单细胞生物学的迅猛发展中&#xff0c;理解细胞间的通讯机制对于揭示组织功能和疾病状态至关重要。CellPhoneDB工具&#xff0c;作为一个专门设计用来分析单细胞转录…...

Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表

目录 PowerQuery工具基础修改现有数据理规则PowerQuery抓取数据的两种方式多文件合并透视不同表结构多表追加数据透视追加与合并整理横向表格:逆透视 数据用拆分工具整理数据算账龄 不等步长值组合合并文件夹中所有文件PowerQuery处理CSV文件双行表头、带合并单元格如何做数据…...

【WebGIS教程2】Web服务与地理空间服务解析

前言&#xff1a; 在万物互联的时代&#xff0c;Web服务作为跨平台协作的基石&#xff0c;正推动地理信息领域向开放共享迈进。地理空间Web服务通过标准化协议&#xff08;如WMS、WFS&#xff09;与松耦合架构&#xff0c;打破传统GIS的封闭性&#xff0c;实现数据与功能的无缝…...

[250325] Claude AI 现已支持网络搜索功能!| ReactOS 0.4.15 发布!

目录 Claude AI 现已支持网络搜索功能&#xff01;ReactOS 0.4.15 发布&#xff01; Claude AI 现已支持网络搜索功能&#xff01; 近日&#xff0c;Anthropic 公司宣布&#xff0c;其 AI 助手 Claude 现在可以进行网络搜索&#xff0c;为用户提供更及时、更相关的回复。这项新…...

gitee第三方登录获取openid | python+Django |已跑通

注&#xff1a;此项目根据美多改编&#xff0c;qq第三方需要备案gitee不用 一、获取appid和appsecret 点击右侧账号设置 左侧菜单栏数据管理里有第三方应用 点击创建应用&#xff0c;根据你的具体情况设置 二、以下是事例代码&#xff0c;根据需要修改即可 setting.py #QQ登…...

Enovia许可分析的自动化解决方案

随着企业产品生命周期管理&#xff08;PLM&#xff09;需求的不断演变&#xff0c;Enovia许可分析已成为确保资源优化和合规性的关键环节。然而&#xff0c;传统的手动许可分析方法往往效率低下、易出错&#xff0c;并且难以应对大规模数据。为了解决这一挑战&#xff0c;Enovi…...

【模拟面试】计算机考研复试集训(第十四天)

文章目录 前言一、专业面试1、进程调度中的轮转调度&#xff08;Round Robin&#xff09;如何实现&#xff1f;时间片大小对系统性能有何影响&#xff1f;2、动态规划的核心思想是什么&#xff1f;举一例说明其与分治法的区别。3、事务的ACID特性中&#xff0c;“隔离性” 如何…...

ambiq apollo3 ADC实例程序注释

#include "am_mcu_apollo.h" // Apollo MCU 外设寄存器定义和HAL库 #include "am_bsp.h" // 板级支持包&#xff08;引脚定义、LED函数等&#xff09; #include "am_util.h" // 通用工具函数&#xff08;如printf重…...

ECharts实现数据可视化

ECharts实现数据可视化 一、Echarts的简介二、Echarts使用教程1.下载echarts.min.js文件2.编写echarts代码&#xff08;1&#xff09;创建渲染实列&#xff08;2&#xff09;修改option达到预期的效果&#xff08;3&#xff09;创建配置项到实例中 三、Echarts的基础配置四、前…...

Json冲突崩溃问题

在一个项目中同时使用RapidJSON库后崩溃了。。。。 --- ### **一、潜在问题分析** 1. **符号重复定义&#xff08;ODR冲突&#xff09;** - **原因**&#xff1a;若您的库和上位机主程序均静态链接了RapidJSON&#xff08;如编译为.a或.lib&#xff09;&#xff0c;或通…...

HeyGem.ai 全离线数字人生成引擎加入 GitCode:开启本地化 AIGC 创作新时代

在人工智能技术飞速演进的时代&#xff0c;数据隐私与创作自由正成为全球开发者关注的焦点。硅基智能旗下开源项目 HeyGem.ai 近日正式加入 GitCode&#xff0c;以全球首个全离线数字人生成引擎的颠覆性技术&#xff0c;重新定义人工智能生成内容&#xff08;AIGC&#xff09;的…...

Go常见问题与答案笔记

这是一篇值的收藏的go常见问题与答案的笔记&#xff0c;内容包括了go的高级&#xff0c;如&#xff1a;悲观锁与乐观锁区别&#xff0c;for range赋值、waitgroup底层原理、go同步原语、defer关键字讲解。 文章目录 1.悲观锁VS乐观锁的区别2.for range中赋值的变量&#xff0c…...

Redis 服务搭建

&#x1f4a2;欢迎来到张翊尘的开源技术站 &#x1f4a5;开源如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 Redis 服务搭建源代码编译安装获取源码安装依赖Ub…...

React-Router路由跳转、传参、抽象封装以及嵌套路由

React-Router 示例React-Router抽象路由模块步骤&#xff1a; 路由导航声明式导航编程式导航 路由导航传参searchParams传参params传参 嵌套路由配置默认二级路由404路由配置两种路由模式如何选择 示例 这里我创建两个页面&#xff0c;分别是主页和登录页分别使用编程式导航和…...

PhotoShop学习02

1.添加文本 这个工具栏是文字工具栏&#xff0c;快捷键是T。选择之后鼠标会变成一个竖杠外貌&#xff0c;我们可以借此在图片中写入文字。 选择后&#xff0c;上方的工具栏会变为专门调整文字工具 这个框点击旁边的小箭头可以选择我们我们电脑系统自带的字体&#xff0c;同时可…...

Isaac Sim与Isaac Lab初使用

目录 基于Omiverse下载Isaacsim安装Isaac Lab配置isaacsim环境测试克隆仓库配置python环境强化学习训练的测试 IsaacLab模板配置vscode环境ros接口安装 作为nvidia出品的仿真软件&#xff0c;很多机器人、机器狗【具身智能】都可以有很不错的效果&#xff0c;所以会使用isaac s…...

用户模块——自定义业务异常

用户信息查询接口 在开发用户系统时&#xff0c;一个最基本的需求就是获取用户的个人信息&#xff0c;比如昵称、头像、改名卡次数等。本部分将介绍如何实现一个用户信息查询接口&#xff0c;并结合项目中的用户背包表&#xff0c;查询用户是否有可用的改名卡。 1. 用户信息查…...

基于数据挖掘从经验方和医案探析岭南名医治疗妇科疾病的诊疗和用药规律

标题:基于数据挖掘从经验方和医案探析岭南名医治疗妇科疾病的诊疗和用药规律 内容:1.摘要 背景&#xff1a;岭南地区独特的地理环境、气候条件及人文风俗使该地区妇科疾病具有一定特点&#xff0c;岭南名医在长期临床实践中积累了丰富的治疗经验。目的&#xff1a;基于数据挖掘…...

从零到一开发一款 DeepSeek 聊天机器人

AI聊天机器人 目标设计方案系统架构技术选型功能模块 实现代码环境配置安装依赖 核心代码API 请求函数主循环函数 功能扩展1. 情感分析2. 多语言支持3. 上下文记忆4. 用户身份识别 总结附录 目标 开发一个智能聊天机器人&#xff0c;旨在为用户提供自然、流畅的对话体验。通过…...

开源CDN产品-GoEdge

一、背景 上篇文章分析了一下CDN的基本原理以及使用代码实现了一个乞丐版的智能DNS调度器。从整个例子我们可以清晰了解到CDN原理&#xff0c;也就那么回事。 但是&#xff0c;之前也讲过了&#xff0c;CDN产品融合的技术比较杂、也比较多。所以我就想着&#xff0c;万物皆有开…...

Resume全栈项目(一)(.NET)

文章目录 项目地址一、数据库创建/日志安装1.1 创建实体层1. Entities2. Enums 存放枚举 1.2 创建数据库层1. 安装Persistance层需要的库2. 创建ResumeDbContext3. 添加数据库配置/注册DBContext4. 执行Add-Migration5. 修改字段类型6. Enum支持Json 1.3 安装Serilog1. Api层安…...

如何快速下载并安装 Postman?

从下载、安装、启动 Postman 这三个方面为大家详细讲解下载安装 Postman 每一步操作&#xff0c;帮助初学者快速上手。 Postman 下载及安装教程(2025最新)...

【PICO】开发环境配置准备

Unity编辑器配置 安装Unity编辑器 安装UnityHub 安装Unity2021.3.34f1c1 添加安卓平台模块 Pico软件资源准备 资源准备地址&#xff1a;Pico Developer PICO SDK PICO Unity Integration SDK PICO Unity Integration SDK 为 PICO 基于 Unity 引擎研发的软件开发工具…...

Unity图形学Shader快速回顾

参考知识点来源于: 人间自有韬哥在&#xff0c; 唐老狮&#xff0c;窗外听轩雨 , 呆呆敲代码的小Y little_fat_sheep, AitTech, DeepSeek, 百度&#xff0c; 豆包 目录 一、渲染管线1.应用阶段2.几何阶段3.光栅化阶段 二、矩阵的几何意义1. 平移2. 旋转3. 缩放4.复合运算 三、…...

十六进制(Hexadecimal)简介

十六进制&#xff08;Hexadecimal&#xff09;简介 1.1 什么是十六进制&#xff1f; 十六进制是一种使用16个符号表示数值的系统&#xff1a;数字0-9&#xff08;表示0-9&#xff09;&#xff0c;字母A-F&#xff08;表示10-15&#xff09;。 1.2 十六进制表示法 在编程中&a…...

1、pytest基本用法

目录 先给大家分享下学习资源 1. 安装pytest 2. 编写用例规则 3. 执行用例 最近在学习pytest的用法 并且用这套框架替换了原来的unittest&#xff0c; 同是测试框架 确实感觉到pytest更加便捷 这边分享给大家我得学习心得 先给大家分享下学习资源 1 官方文档 pytest 官方…...

2024年3月全国计算机等级考试真题(二级C语言)

&#x1f600; 第1题 下列叙述中正确的是 A. 矩阵是非线性结构 B. 数组是长度固定的线性表 C. 对线性表只能作插入与删除运算 D. 线性表中各元素的数据类型可以不同 题目解析&#xff1a; A. 矩阵是非线性结构 错误。矩阵通常是二维数组&#xff0c;属…...

GitHub高级筛选小白使用手册

GitHub高级筛选小白使用手册 GitHub 提供了强大的搜索功能&#xff0c;允许用户通过高级筛选器来精确查找仓库、Issues、Pull Requests、代码等。下面是一些常用的高级筛选用法&#xff0c;帮助你更高效地使用 GitHub 搜索功能。 目录 搜索仓库搜索Issues搜索Pull Requests搜…...

如何用腾讯云建站做好一个多语言的建筑工程网站?海外用户访问量提升3倍!分享我的经验

作为新疆地区领先的工程建筑企业&#xff0c;我们深知在数字化浪潮中&#xff0c;一个专业、高效且具备国际视野的官方网站是企业形象与业务拓展的“门面担当”。然而&#xff0c;传统的建站流程复杂、技术门槛高、多语言适配难等问题&#xff0c;曾让我们在数字化转型中举步维…...

SpringBoot-配置文件中敏感信息的加密保姆级教程

前言 公司安全部门检查&#xff0c;要求系统配置文件中的敏感信息如数据库密码等&#xff0c;进行加密处理&#xff0c;否则将受到公司的安全处罚&#xff0c;无奈只要按照公司要求&#xff0c;对springboot项目配置文件的敏感信息进行加密和解密处理。详细教程如下。 快速上…...

数据结构——串

串是一种数据元素为字符的特殊的线性表。 1. 串的定义 零个或多个字符&#xff08;字母、数字或其他字符&#xff09;组成的有限序列。记为 S"a1a2...an"S"a1​a2​...an​"&#xff0c;长度为 nn&#xff0c;空串长度为0。 2.串的术语 串长度&#xf…...

使用python爬取网络资源

整体思路 网络资源爬取通常分为以下几个步骤&#xff1a; 发送 HTTP 请求&#xff1a;使用requests库向目标网站发送请求&#xff0c;获取网页的 HTML 内容。解析 HTML 内容&#xff1a;使用BeautifulSoup库解析 HTML 内容&#xff0c;从中提取所需的数据。处理数据&#xff…...

【MySQL | 七、存储引擎是什么?】

存储引擎是什么&#xff1f;作用于哪里&#xff1f; 1. 存储引擎的定义 存储引擎&#xff08;Storage Engine&#xff09;是数据库管理系统中负责 数据的存储、检索和管理 的核心组件。它决定了数据如何存储在磁盘上&#xff0c;以及如何从磁盘中读取数据。存储引擎是数据库与…...

Linux -- 进程间通信(IPC)-- 进程间通信、管道、system V 共享内存、system V 消息队列、责任链模式 、system V 信号量

一、什么是进程间通信 1.进程间通信的目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程。资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发…...

远程登录服务(ssh)

一、远程登录服务概述 1. 概念 远程登录服务就像是一个神奇的桥梁&#xff0c;它让你能够跨越物理距离&#xff0c;通过网络连接到另一台计算机上进行操作。无论你身在何处&#xff0c;只要有网络连接&#xff0c;你就可以像坐在目标计算机前一样进行各种操作。 2. 功能 分享…...

【从零实现Json-Rpc框架】- 项目设计篇

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

EtherCAT转CANopen配置CANopen侧的PDO映射

EtherCAT转CANopen配置CANopen侧的PDO映射 在工业自动化领域&#xff0c;EtherCAT和CANopen是两种广泛应用的通信协议。它们各自具有独特的优势&#xff0c;但在某些应用场景下&#xff0c;需要将这两种协议进行转换以实现设备间的高效数据交换。本文将详细介绍如何在使用Ethe…...

Vite管理的Vue3项目中monaco editer的使用以及组件封装

文章目录 背景环境说明安装流程以及组件封装引入依赖封装组件 外部使用实现效果 v-model实现原理 背景 做oj系统的时候,需要使用代码编辑器,决定使用Monaco Editor&#xff0c;但是因为自身能力问题&#xff0c;读不懂官网文档&#xff0c;最终结合ai和网友的帖子成功引入&…...

完整的类在JVM中的生命周期详解

首先给出一个示例代码&#xff1a; 示例的目标是展示一个多功能的类结构&#xff0c;包含继承、接口实现、静态成员、本地方法、线程安全等特性&#xff0c;同时模拟一个简单的“计算器”场景&#xff0c;计算并管理数字。&#xff08;尽量将所有的 Java 组件和关键字都给出&am…...

大数据学习栈记——HBase操作(shell java)

本文介绍HBase在shell终端的常见操作以及如何利用java api操作HBase&#xff0c;操作系统&#xff1a;Ubuntu24.04 参考&#xff1a; https://blog.51cto.com/u_16099228/8016429 https://blog.csdn.net/m0_37739193/article/details/73618899 https://cloud.tencent.com/d…...

【商城实战(65)】退换货流程全解析:从前端到后端的技术实现

【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102 章内容层层递进。无论是想…...

改进BM25稀疏检索和BGE稠密检索

改进BM25稀疏检索和BGE稠密检索 检索算法层面 混合检索策略优化 自适应加权融合:在BM25和BGE等混合检索时,根据查询文本的特征(如长度、专业术语占比等)动态调整两者的权重。例如,对于包含大量专业术语的查询,增加BGE的权重;对于关键词明确的简单查询,增加BM25的权重。…...

WPS二次开发系列:以自动播放模式打开PPT文档

在前面文章中 android 调用wps打开文档并感知保存事件 介绍了如何使用WPS SDK打开文档&#xff0c;那么我们是否能够实现在打开WPS 文档的时候能够传递一些参数来控制打开文档的行为呢&#xff0c;经过研究WPS SDK相关文档和API&#xff0c;最终实现了 以自动播放方式打开PPT文…...

当AI重构编程范式:Java 24的进化逻辑与技术深水区的战略突围

一、语言进化的底层密码&#xff1a;从“工具适配”到“定义规则” 在2025年3月19日发布的Java 24中&#xff0c;Oracle以"30周年技术宣言"的姿态展示了编程语言进化的新范式。该版本不仅包含模式匹配、结构化并发等21项JEP特性&#xff0c;更通过后量子加密、AI原生…...

air780eq 阿里云

硬件&#xff1a;APM32F030C8 Air 780eq 参考文档&#xff1a; 合宙780E-4G模块通过AT指令连接到阿里云平台&#xff0c;实现信息的收发_air780e上传阿里云属性值at命令-CSDN博客 阿里云 - atair780eq - 合宙文档中心 4G模块接入阿里云-实现数据上传和命令下发_4g模块上传…...

网络安全之vlan实验

在对vlan进行一定的学习之后我们来练习一个小实验来加深理解记忆 首先是对实验进行一个搭建 第一部分&#xff1a;给交换机配置vlan 首先是sw1 [Huawei]vlan batch 2 to 5 [Huawei]int g0/0/1 [Huawei-GigabitEthernet0/0/1]port hybrid tagged vlan 2 [Huawei-GigabitEthe…...

mac命令行快捷键

光标移动 Ctrl A: 将光标移动到行首。Ctrl E: 将光标移动到行尾。Option 左箭头: 向左移动一个单词。Option 右箭头: 向右移动一个单词。 删除和修改 Ctrl K: 删除从光标到行尾的所有内容。Ctrl U: 删除从光标到行首的所有内容。Ctrl W: 删除光标前的一个单词。Ctrl …...

计算机网络 - OSI 七层模型

OSI 七层模型 OSI&#xff08;Open System Interconnection&#xff0c;开放系统互联&#xff09;模型由 ISO&#xff08;国际标准化组织&#xff09; 制定&#xff0c;目的是为不同计算机网络系统之间的通信提供一个标准化的框架。它将网络通信划分为 七个层次&#xff0c;每…...

TCP/IP 协议族详细知识点清单

&#x1f4da; TCP/IP 协议族详细知识点清单 一、概述与体系结构 &#x1f310; TCP/IP 协议模型&#xff08;四层模型&#xff09; 层次协议功能应用层HTTP、FTP、DNS、SMTP提供应用服务传输层TCP、UDP端到端传输&#xff0c;可靠或不可靠网络层IP、ICMP、ARP、RARP寻址、路…...