java学习之数据结构:一、数组
主要是对数组所有的东西进行总结,整理
适合小白~
目录
1.什么是数组
1.1数组定义
1.2数组创建
1)静态创建
2)动态创建
1.3数组遍历
1)for和while遍历
2)foreach遍历
2.数组越界问题及解决
2.1数组越界问题
2.2越界问题解决----数组拷贝扩容
1)防止发生:
2)发生后解决:
3)采用List list = new ArrayList<>();
3.数组算法
3.1插入算法
1)尾插法
2)指定位置插入法
2.删除
1)删除第一个符合条件的数据
2)删除所有符合条件的数据
3)使用快慢指针删除元素
3.查找算法
1)二分查找法
1.什么是数组
1.1数组定义
数组是一种用于存储固定大小的同类型元素的集合,是一种数据结构。
int[] arr = {1,2,3,4,5,6,7,8,9,10};char[] chars = {'a','b','c','d','e','f','g','h','i','j'};String[] strings = {"hello","world","java","python","c++"};double[] doubles = {1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.10};
1.2数组创建
有两种方式。[两者相比后者灵活性更高,区别不大,针对需求选择格式使用]
1)静态创建
在创建数组时就明确地指定数组中的元素,数组的长度由指定的元素个数决定。
// 基本数据类型数组
int[] staticArray1 = {1, 2, 3, 4, 5};
// 对象数组
String[] staticArray2 = {"apple", "banana", "cherry"};
2)动态创建
在创建数组时只指定数组的长度,而不具体给出数组元素的初始值。后续可以再对数组元素进行赋值操作。
// 基本数据类型数组
int[] dynamicArray1 = new int[5];List<Integer> list = new ArrayList<>();
1.3数组遍历
java中数组有两种常见的遍历方式
1)for和while遍历
2)foreach遍历
这种方式不能修改数组值和单独访问下标索引。形式为for( int name : names)表示对数组names中的每个元素都复制给name然后执行
int[] arr = {1,2,3,4,5,6,7,8,9,10};
// for遍历for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}
// while遍历int i = 0;while (i< arr.length){System.out.println(arr[i]);}
// foreach遍历for (int i : arr) {System.out.println(i);}
2.数组越界问题及解决
2.1数组越界问题
数组越界:访问的索引值超过了数组的最大长度-1[因为数组下标从0开始]。或者是添加元素超过了数组最大长度-1、删除数组中没有的元素
越界异常提示实例如下:
int[] arr = {1,2,3,4,5,6,7,8,9,10};System.out.println(arr[10]);
提示为:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
at com.weimeng.test.array.main(array.java:25)
2.2越界问题解决----数组拷贝扩容
发生越界后有以下解决方法:
1)防止发生:
仔细检查索引计算:在编写代码时,要确保索引的计算不会超出数组的有效范围。
进行边界检查:在访问数组元素之前,先检查索引是否在有效范围内。可以编写一个if辅助方法来进行边界检查,避免越界访问。
2)发生后解决:
数组扩容:就是创建新数组再拷贝原数组元素,新数组的长度更长。先创建新数组,再将原数组元素复制过来,最后替换引用。如下:
int[] arr = {1,2,3,4,5,6,7,8,9,10};
// 数组扩容
//先创建新数组,再将原数组元素复制过来,最后替换引用int len=arr.length;double factor=1.5;//扩大因子int[] brr=new int[(int) (len*factor)];//新数组for(int i=0;i<len;i++){brr[i]=arr[i];}arr=brr;System.out.println(arr[10]);
3)采用List<Integer> list = new ArrayList<>();
这种方法可以防止添加元素越界,访问越界和删除越界可以再结合1)方式。
3.数组算法
3.1插入算法
数组的插入算法是指在数组的特定位置插入一个新元素的操作。由于数组的特性(元素在内存中连续存储,长度固定),插入元素可能需要移动其他元素来腾出空间。
1)尾插法
尾插法过程:判断数组满没满,没满就直接放入数组最后元素的下一个位置;满了就进行扩容再插入。整个过程通过size控制,代码如下:
public class Array1 {int size=0;int len=10;double factor=1.5;//扩大因子int arr[]=new int[len];// 目标:实现尾插法public static void main(String[] args) {Array1 list=new Array1();list.add(1);list.add(2);list.add(3);System.out.println(list.toString());}public void add(int data){if(size==len){len=(int)(len*factor);int[] brr=new int[len];for(int i=0;i<size;i++){brr[i]=arr[i];}arr=brr;}arr[size]=data;size++;}public String toString(){String str="[";for(int i=0;i<size;i++){str+=arr[i];if(i!=size-1){str+=",";}}str+="]";return str;}
}
2)指定位置插入法
算法原理:先判断插入位置是否合理,保证代码合法性;再判断数组是否满;插入时反向循环,先将size++,然后arr[i]=size[i-1]进行循环,如下图所示:
// 指定位置插入public void addAtIndex(int index,int data){//保证数组访问安全if(index<0||index>size){System.out.println("超出范围");return;}//扩容if(size==len){len=(int)(len*factor);int[] brr=new int[len];for(int i=0;i<size;i++){brr[i]=arr[i];}arr=brr;}size++;for(int i=size;i>index;i--){arr[i]=arr[i-1];}arr[index]=data;}public String toString(){String str="[";for(int i=0;i<size;i++){str+=arr[i];if(i!=size-1){str+=",";}}str+="]";return str;}
2.删除
1)删除第一个符合条件的数据
原理:从前向后遍历,找删除的数据。找不到直接输出“不存在该元素”;找到则记录该位置,通过循环从该位置开始,arr[i]=arr[i+1]覆盖掉,size--,输出“删除完成"
public void remove(int data) {for (int i = 0; i < size; i++) {if (arr[i] == data) {// 移动元素覆盖要删除的元素for (int j = i; j < size - 1; j++) {arr[j] = arr[j + 1];}// 最后一个有效位置置为默认值arr[size - 1] = 0;size--;System.out.println("删除成功");return;}}System.out.println("不存在该元素");}
2)删除所有符合条件的数据
即通过循环遍历元素,遇到arr[i]==data就进行删除,如下:
public void delete(int data) {for(int i=0;i<size;i++){if(arr[i]==data){for(int j=i+1;j<size;j++){arr[j-1]=arr[j];}size--;i--;}}}
3)使用快慢指针删除元素
- 慢指针(
slow
):用于记录删除特定元素后数组的有效长度,它指向的位置是下一个非data元素应该存放的位置。 - 快指针(
fast
):用于遍历数组中的每一个元素。
具体步骤:
1.初始化两个指针:slow
和 fast
,都指向arr的起始位置(索引为 0)。
2.使用 fast
指针遍历数组:如果 fast
指针指向的元素不等于data,则将该元素赋值给 slow
指针指向的位置,然后 slow
指针向后移动一位。如果 fast
指针指向的元素等于data,则跳过该元素,slow
指针保持不动。
重复步骤 2,直到 fast
指针遍历完整个数组。最终 slow
指针的值就是删除特定元素后数组的新长度。
代码:
// 使用快慢指针删除元素public void delete2(int data){int slow=0;int fast=0;while(fast<size){if(arr[fast]!=data){arr[slow]=arr[fast];slow++;}fast++;}size=slow;}
3.查找算法
1)二分查找法
二分查找适合有序数组,它的核心思想是不断将查找区间缩小一半,以此减少查找范围,从而快速定位目标元素。
算法内容:
1.先设置左右边界,左边界 left
初始化为数组的第一个元素的索引(通常为 0),右边界 right
初始化为数组最后一个元素的索引(即数组长度减 1)。
2.再计算当前查找区间的中间元素的索引 mid
,计算公式为 mid = left + (right - left) / 2
。
3.比较中间元素跟目标元素:若中间元素等于目标元素,表明找到了目标元素,返回中间元素的索引。若中间元素大于目标元素,说明目标元素在左半部分区间,更新右边界 right = mid - 1
。若中间元素小于目标元素,说明目标元素在右半部分区间,更新左边界 left = mid + 1
。
4.重复2、3步,持续缩小查找区间,直到左边界大于右边界,此时表示目标元素不存在于数组中,返回 -1。
代码:
public int binarySearch(int target) {int left = 0;int right = arr.length - 1;while (left <= right) {int mid = (right + left) / 2;if (arr[mid] == target) {return mid;} else if (arr[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return-1;}
相关文章:
java学习之数据结构:一、数组
主要是对数组所有的东西进行总结,整理 适合小白~ 目录 1.什么是数组 1.1数组定义 1.2数组创建 1)静态创建 2)动态创建 1.3数组遍历 1)for和while遍历 2)foreach遍历 2.数组越界问题及解决 2.1数组越界问题 2…...
Oracle OCP认证考试考点详解083系列04
题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 16. 第16题: 题目 解析及答案: 关于使用恢复管理器(RMAN)恢复表,以下哪三项是…...
MARM:推荐系统中的记忆增强突破
文章目录 1. 背景1.1 模型规模与推荐系统的挑战1.2 缓存技术在推荐系统中的潜力1.3 推荐系统中的数据与计算需求1.4 复杂度对比1.5 MARM模型的创新性 2. 方法2.1 流程2.1.1 序列生成器2.1.2 外部缓存查找2.1.3 多目标注意力机制2.1.4 发结果到缓存 **2.2 MARM与SIM**2.2.1 SIM的…...
INP指标
什么是INP(Interaction to Next Paint) 参考网站:webVital-INP文档 定义与核心目标 INP 是一项稳定的 Core Web Vitals 指标,通过统计用户访问期间所有符合条件的互动约定时间,评估网页对用户操作的总体响应能力。最…...
Flink 的状态机制
在实时流处理领域,状态管理是构建复杂业务逻辑的核心能力。Apache Flink 通过统一的状态抽象和高效的容错机制,为开发者提供了从毫秒级窗口聚合到 TB 级历史数据关联的全场景支持。本文将深入剖析 Flink 状态机制的底层原理,结合实际案例展示…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】1.1 数据库核心概念与PostgreSQL技术优势
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 深度解析PostgreSQL核心架构与技术优势:从数据库原理到实战场景1.1 数据库核心概念与PostgreSQL技术优势1.1.1 关系型数据库核心架构解析1.1.1.1 数据库系统的底…...
linux下,ollama会把模型文件保存在哪里?
文章目录 运行ollama,有两种形式,估计得分开讨论首先是使用自动启动的ollama:先跑个“小一点的大模型”但是现在模型文件存在哪儿呢?运行ollama,有两种形式,估计得分开讨论 我们用两种方式,来运行ollama。 首先是使用自动启动的ollama: ps -aux | grep ollama系统自…...
EMMC存储性能测试方法
记于 2022 年 9 月 15 日 EMMC存储性能测试方法 - Wesley’s Blog 参考Android-emmc性能测试 | 一叶知秋进行实践操作 dd 命令 页面缓存 为了测试 emmc 的真实读写性能,我们需要先把页面缓存给清理: echo 1 > /proc/sys/vm/drop_caches console:…...
19. LangChain安全与伦理:如何避免模型“幻觉“与数据泄露?
引言:当AI成为企业"数字员工"时的责任边界 2025年某金融机构因AI客服泄露用户信用卡信息被罚款2300万美元。本文将基于LangChain的安全架构与Deepseek-R1的合规实践,揭示如何构建既强大又安全的AI系统。 一、AI安全风险矩阵 1.1 2025年最新威…...
5月3日日记
上午睡到自然醒(其实六点多被我爸叫起来抢火车票,发现明天中午的软卧候补上了,挺好的)然后继续睡到快10点。 中午吃的什么来着,好像是西红柿炒鸡蛋和藜麦饭,有个鱼不是很想吃就没吃 中午打了两把吃鸡&…...
C++类_构造函数
在 C11 里,类的构造函数有多种类型,下面为你详细介绍各类构造函数并给出示例代码。 1. 默认构造函数 默认构造函数是没有参数的构造函数,要是没有为类定义任何构造函数,编译器会自动生成一个默认构造函数。 2. 带参数的构造函数…...
【React】Hooks useReducer 详解,让状态管理更可预测、更高效
1.背景 useReducer是React提供的一个高级Hook,没有它我们也可以正常开发,但是useReducer可以使我们的代码具有更好的可读性,可维护性。 useReducer 跟 useState 一样的都是帮我们管理组件的状态的,但是呢与useState不同的是 useReducer 是集…...
Runnable组件重试机制降低程序错误率
一、LangChain 重试机制深度解析 当构建生产级AI应用时,with_retry() 机制可有效提升系统容错性,典型应用场景包括: API调用频率限制时的自动恢复模型服务临时不可用的故障转移网络波动导致的瞬时异常处理 参数详解与配置策略 1. 参数配置…...
纹理过滤方式和纹理包裹方式
纹理过滤方式 纹理过滤方式有临近过滤(Nearest)和双线性插值过滤(Linear),什么时候用什么过滤方式其实看个人选择,区别就是临近过滤是当需要的像素大于图片像素时候,一些像素点需要复用与他相近…...
55.[前端开发-前端工程化]Day02-包管理工具npm等
包管理工具详解 npm、yarn、cnpm、npx、pnpm 1 npm包管理工具 代码共享方案 包管理工具npm 2 package配置文件 npm的配置文件 方式二 常见的配置文件 常见的属性 常见的属性 常见的属性 依赖的版本管理 常见属性 npm install 命令 项目安装 3 npm install原理 npm instal…...
Maven安装配置以及Idea中的配置教程
一、下载Maven 我使用的是3.9.9的版本: 下载地址:Download Apache Maven – Maven 二、安装 将下载好的Maven压缩包解压到一个路径不包含中文的文件夹: 三、配置环境变量 以win11系统为例: 1.鼠标右键此电脑->属性->…...
【JavaScript】性能优化:打造高效前端应用
文章目录 一、执行效率优化(关键路径优化)1.1 算法时间复杂度控制1.2 Web Workers多线程计算二、内存管理(避免内存泄漏)2.1 定时器清理2.2 DOM引用释放三、DOM操作优化(渲染性能)3.1 批量DOM更新3.2 读写分离策略四、网络传输优化(加载性能)4.1 代码分割(Dynamic Imp…...
【C语言练习】018. 定义和初始化结构体
018. 定义和初始化结构体 018. 定义和初始化结构体1. 定义结构体示例1:定义一个简单的结构体输出结果2. 初始化结构体示例2:在声明时初始化结构体输出结果示例3:使用指定初始化器初始化结构体(C99及以上标准支持)输出结果3. 结构体数组示例4:定义和初始化结构体数组输出结…...
Three.js支持模型格式区别、建议
在 Three.js 中,3D 模型的种类和格式非常多样,每种格式都有其适用场景和优缺点。以下是常见的 Three.js 支持的模型格式、它们的区别、使用建议及推荐。 在这里推荐免费的blender工具,免费、占用空间不大,而且好用,前端打开模型时使用不错,或者有自己想做的模型也可以用它…...
JavaScript基础-流程控制概念
在JavaScript编程中,掌握如何控制程序的执行流程是编写功能强大、逻辑清晰代码的关键。流程控制语句允许我们根据不同的条件执行不同的代码块,或者重复执行某些操作,从而实现复杂的功能逻辑。本文将详细介绍JavaScript中的几种主要流程控制结…...
PowerBI企业运营分析——多维度日期指标分析
PowerBI企业运营分析——多维度日期指标分析 欢迎来到Powerbi小课堂,在竞争激烈的市场环境中,企业运营分析平台成为提升竞争力的核心工具。 通过整合多源数据、实时监控关键指标,该平台能够精准分析业务表现,快速识别问题与机会…...
施磊老师rpc(三)
文章目录 mprpc框架项目动态库编译框架生成动态库框架初始化函数-文件读取1. 为什么要传入 argc, argv2. 读取参数逻辑3. 配置文件设计 init部分实现 mprpc配置文件加载(一)配置文件加载类成员变量主要方法**src/include/mprpcconfig.h** 配置文件**bin/test.conf** 实现配置文…...
k8s 探针
Kubernetes 中的探针(Probes)用于检测容器的健康状态或就绪状态,确保应用在运行时的可靠性。Kubernetes 提供三种探针类型,它们的核心区别在于用途和失败后的处理逻辑。以下是它们的详细说明和对比: 1. 启动探针&…...
MIT6.S081-lab8
MIT6.S081-lab8 1. Large files 从 lecture 我们可以知道,我们目前的单个文件的最大大小很小,这是因为我们能够索引的索引块范围很小,实际上,目前的索引只有直接索引和一级索引,而这个实验就是需要我们去实现二级索引…...
【RabbitMQ】 RabbitMQ快速上手
文章目录 一、RabbitMQ 核心概念1.1 Producer和Consumer2.2 Connection和Channel2.3 Virtual host2.4 Queue2.5 Exchange2.6 RabbitMQ工作流程 二、AMQP协议三 、web界面操作4.1 用户相关操作4.2 虚拟主机相关操作 四、RabbitMQ快速入门4.1 引入依赖4.2 编写生产者代码4.2.1 创…...
使用Rust + WebAssembly提升前端渲染性能:从原理到落地
一、问题背景:为什么选择WebAssembly? 最近在开发数据可视化大屏项目时,我们遇到了一个棘手的问题:前端需要实时渲染10万数据点的动态散点图,使用纯JavaScript Canvas方案在低端设备上帧率不足15FPS。经过性能分析&a…...
【quantity】9 长度单位模块(length.rs)
代码是用Rust语言定义的一组长度单位类型,利用了泛型和类型别名来创建带不同SI前缀的长度量。下面是详细解释: 基础结构: 使用了Quantity<V, P, Meter>作为基础类型,表示一个带有值类型V、前缀P和单位Meter的量。 Meter是…...
网络通信领域的基础或流行协议
一、TCP(传输控制协议) 1. 宏观介绍 TCP:全称“Transmission Control Protocol”——传输控制协议,是互联网最基础的传输协议之一。传输层协议,提供面向连接、可靠的字节流传输服务。它通过三次握手建立连接、四次挥手断开连接,确保数据有序、完整地传输作用:让两个设备…...
STM32——GPIO
1、GPIO简介 GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平:0V~3.3V,部分引脚可容忍5V 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 …...
AE模板 300个故障干扰损坏字幕条标题动画视频转场预设
这个AE模板提供了300个故障干扰损坏字幕条标题动画视频转场预设,让您的视频具有炫酷的故障效果。无论是预告片、宣传片还是其他类型的视频,这个模板都能带给您令人惊叹的故障运动标题效果。该模板无需任何外置插件或脚本,只需一键点击即可应用…...
2025-2026 XCPC
基本信息 本赛季由 jr-zlw \texttt{\color{#AA00AA}{jr-zlw}} jr-zlw, Skyzhou \texttt{\color{#03A89E} Skyzhou} Skyzhou 和 sunchaoyi \texttt{\color{#0000FF}sunchaoyi} sunchaoyi 组队,全靠大佬带飞~。 训练记录 2025.05.02 The 2023 Guangdong Provinci…...
list类的详细讲解
【本节目标】 1. list的介绍及使用 2. list的深度剖析及模拟实现 3. list与vector的对比 1. list的介绍及使用 1.1 list的介绍 1. list 是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list 的底层是双向链表结构&a…...
中小企业MES系统数据库设计
版本:V1.0 日期:2025年5月2日 一、数据库架构概览 1.1 数据库选型 数据类型数据库类型技术选型用途时序数据(传感器读数)时序数据库TimescaleDB存储设备实时监控数据结构化业务数据关系型数据库PostgreSQL工单、质量、设备等核心…...
wfp CommandParameter 详细解说
WPF 中的 CommandParameter 是命令模型中的关键属性,用于向命令的执行逻辑传递动态参数。以下是其主要特性和应用场景的详细解析: 1. 基本概念与用法 数据传递机制 CommandParameter 通常与 Command 属性配合使用,允许在 XAML 中静态定义参数或在绑定中动态传递值。…...
正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真
目录 Multisim使用教程说明链接 一、正弦波信号发生电路 1.1正弦波发生电路 电路组成 工作原理 振荡频率 1.2 正弦波发生电路仿真分析 工程文件链接 二、方波信号发生电路 2.1 方波发生电路可调频率 工作原理 详细过程 2.2 方波发生电路可调频率/可调占空比 调节占空比 方波产生…...
Java语言概述
Java语言概述 什么是程序? 程序是计算机执行某些操作或解决某个问题而编写的一系列有序指令单集合。 举例: 计算11,并把结果写在黑板上 计算11,并把结果显示在屏幕上(按编程语言规定的语句࿰…...
截图软件、画图软件、左右分屏插件、快捷键
截图软件 画图软件 画图时候按字母可以改变颜色:红色r,蓝色b,绿色g,粉色p,橙色o 左右分屏: 快捷键 1.打开文件或文件夹: CtrlP:快速打开文件。CtrlR:快速打开文件或文件夹。 2.文件操作: CtrlN&…...
Linux 信号
一、生活中的信号 1.1、生活中的信号从产生到结束过程 例: ①、外卖电话响了(信号产生)-> 我接了电话并告诉外卖员说先放到楼下的架子上(识别到这个信号,并记住,保存到我的脑海里面) ->…...
AI 生成内容的版权困境:法律、技术与伦理的三重挑战
最近研学过程中发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…...
【愚公系列】《Manus极简入门》013-电影推荐专家:“银幕导航家”
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
MCP智能体意图识别与工具路由:让AI自主决策调用链路
目录 🚀 MCP智能体意图识别与工具路由:让AI自主决策调用链路 🌟 什么是意图识别与工具路由? 🛠️ 1. 设计意图识别模块 1.1 简易关键字规则版(基础版) 1.2 使用大模型辅助意图识别ÿ…...
【Redis】List类型
文章目录 List的特点介绍lpush,lpushx,rpush,rpushx命令lrange命令lpop和rpoplindex命令linsert命令llen命令lrem 命令ltrim命令lset命令阻塞版本的命令blpop和brpop 命令小结list的内部编码List的应用场景 List的特点介绍 列表相当于一个数…...
Trae 安装第三方插件支持本地部署的大语言模型
Trae 安装第三方插件支持本地部署的大语言模型 0. 引言1. 安装插件 0. 引言 字节发布的 Trae IDE 一直不支持本地部署的的大语言模型。 Qwen3 刚刚发布,想在 Trae 中使用本地部署的 Qwen3,我们可以在 Trae 中安装其他插件。 1. 安装插件 我们可以安装…...
【免费】2010-2019年上市公司排污费数据
2010-2019年上市公司排污费数据 1、时间:2010-2019年 2、来源:上市公司披露报告 3、指标:代码、日期、名称、本期支出 4、范围:417家上市公司 5、相关研究:胡珺,宋献中,王红建.非正式制度、家乡认同与企业环境治理…...
第Y3周:yolov5s.yaml文件解读
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 本次任务:将yolov5s网络模型中的第4层的C3x2修改为C3x1,第6层的C3x3修改为C3x2。 首先输出原来的网络结构: from n pa…...
python 桌面程序开发简述及示例
Python桌面程序开发简述及示例 Python凭借其简洁的语法和丰富的库支持,非常适合开发跨平台的桌面应用程序。本文将介绍Python桌面开发的主要方法,并提供实际代码示例。 一、Python桌面开发主要方法 1.1 Tkinter(标准库) Python内置的GUI库,适合开发简单桌面应用 1.2 …...
【前端知识】Vue3状态组件Pinia详细介绍
Vue3状态组件Pinia详细介绍 关联知识 Pinia 组件介绍、核心原理及使用方式 Pinia 组件介绍 Pinia 是 Vue.js 的官方状态管理库,专为 Vue 3 设计,提供简洁的 API 和强大的 TypeScript 支持。其核心组件包括: • Store:状态存储容器…...
YOLO旋转目标检测之ONNX模型推理
YOLO旋转检测相较于目标检测而言,其只是最后的输出层网络发生了改变,一个最明显的区别便是:目标检测的检测框是xywh,而旋转检测则为xywha,其中,这个a代表angle,即旋转角度,其余的基本…...
C++八股--three day --设计模式之单例和工厂
对于C编程中的思想,最常见的就是考察设计模式了 那么我们在面试中常考的设计模式包含以下几种:单例模式, 接下来我们按顺序介绍 1.单例模式: 一个类只能创建一个实例:常应用于日志模块,数据库模块 …...
GAMES202-高质量实时渲染(Assignment 2)
目录 作业介绍环境光贴图预计算传输项的预计算Diffuse unshadowedDiffuse shadowedDiffuse Inter-reflection(bonus) 实时球谐光照计算 GitHub主页:https://github.com/sdpyy1 作业实现:https://github.com/sdpyy1/CppLearn/tree/main/games202 作业介绍 物体在不同…...