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

项目中数据结构为什么用数组,不用List

总结

1,从内存和性能角度,数组占用更小的内存(),访问性能更高()

分配效率:数组在内存中是连续分配的一块固定空间

访问速度:直接操作内存,数组的读写操作是直接通过索引计算偏移量(O(1) 时间复杂度),无额外开销

2,List好处,更符合开发习惯,方法丰富

思考

首先,得考虑数组和List的区别。数组是Java中的基础数据结构,而List是集合框架的一部分,比如ArrayList或LinkedList。数组在内存中是连续分配的,访问速度快,但长度固定。List则更灵活,可以动态扩容,但可能有额外的性能开销。

用户可能是在优化性能,特别是在乎内存使用或访问速度的场景。比如,高频交易系统或者嵌入式设备,这些地方对性能要求极高,数组可能更合适。数组没有像ArrayList那样的包装层,直接操作内存,效率更高。

另外,可能涉及到与旧代码或库的兼容性。有些老的API可能只接受数组,这时候就必须用数组。比如一些JNI调用或者遗留系统接口,这时候用List反而需要转换,增加开销。

还有可能是对数据结构的明确性要求。数组的类型在编译时确定,不会有类型擦除的问题。而List在泛型中使用会有类型擦除,运行时无法获取具体类型信息。如果项目中有严格的类型检查需求,数组可能更合适。

不过,用户可能没有考虑到数组的缺点,比如固定长度,无法动态扩展。如果数据量变化大,用数组可能需要手动扩容,比较麻烦。而List的自动扩容更方便。

需要确认用户的具体场景。如果他们处理的是固定大小的数据,比如矩阵运算、图像处理中的像素数据,数组更高效。但如果是需要频繁增删元素的业务逻辑,List更合适。

另外,内存使用方面,数组更紧凑,没有额外的对象开销。ArrayList内部也是基于数组,但会有一些额外的字段如size,modCount等,占用更多内存。对于内存敏感的应用,比如移动端或大数据处理,数组可能更优。

还有线程安全问题。数组本身不是线程安全的,但如果在多线程环境下,使用List如Vector或CopyOnWriteArrayList可能更安全。不过用户的问题可能不涉及多线程,或者他们自己处理了同步。

可能用户看到了某些框架或库中使用数组,比如Java的反射API,或者某些序列化库,这些地方数组更高效,所以项目中也沿用了这种做法。

总结来说,用户可能是在特定场景下需要更高的性能、更少的内存占用,或者与旧系统兼容,所以选择数组而非List。需要详细解释这些情况,帮助他们理解背后的权衡。

在项目中选择使用数组(Array)而非 List(如 ArrayList)通常是基于性能、内存控制、场景需求或历史代码兼容性等因素的综合考量。以下是具体原因和场景分析:


一、使用数组的典型场景

1. 性能敏感场景
  • 内存分配效率

    • 数组在内存中是连续分配的一块固定空间,初始化即可直接使用,无需动态扩容。

    • List(如 ArrayList)内部基于数组实现,但需要维护额外的元数据(如容量、当前大小等),内存占用略高。

  • 访问速度

    • 数组的读写操作是直接通过索引计算偏移量(O(1) 时间复杂度),无额外开销。

    • List 的 get/set 方法虽然也是 O(1),但涉及方法调用和可能的边界检查(如 ArrayList 的 rangeCheck)。

示例:高频计算或底层算法

java

复制

下载

// 数组直接操作,适合数值计算
double[] matrix = new double[1000];
matrix[10] = 3.14;// List 需要包装,额外开销
List<Double> list = new ArrayList<>(1000);
list.set(10, 3.14);  // 涉及自动装箱(Double)和方法调用
2. 固定长度需求
  • 若数据规模预先明确且不会变化,数组更简洁。

  • List 的自动扩容机制(如 ArrayList 扩容为1.5倍)在此场景下是冗余的。

示例:存储一周的日期

java

复制

下载

String[] daysOfWeek = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
3. 与底层系统或库交互
  • 某些API(如JNI、文件I/O、网络协议)要求使用数组。

  • 例如:Java的 File.read(byte[] buffer) 直接操作字节数组。

java

复制

下载

// 文件读取必须用 byte[]
try (InputStream is = new FileInputStream("data.bin")) {byte[] buffer = new byte[1024];int bytesRead = is.read(buffer);
}
4. 内存敏感场景
  • 数组的内存占用更紧凑,尤其对于基本类型(如 int[])。

  • List 存储基本类型需装箱(如 Integer),导致内存浪费。

内存占用对比

类型存储 1000个int内存占用(估算)
int[]直接存储~4 KB
ArrayList<Integer>存储Integer对象~16 KB (包含对象头、引用等)
5. 多维度数据
  • 多维数组(如 int[][])的语法更直观。

  • List<List<Integer>> 需要嵌套初始化,且访问效率略低。

示例:矩阵运算

java

复制

下载

// 多维数组
int[][] matrix = new int[3][3];
matrix[0][0] = 1;// List 嵌套
List<List<Integer>> listMatrix = new ArrayList<>();
for (int i = 0; i < 3; i++) {listMatrix.add(new ArrayList<>(Arrays.asList(0, 0, 0)));
}
listMatrix.get(0).set(0, 1);

二、使用 List 的优势场景

尽管数组有特定优势,但在大多数业务场景中,List 更灵活且更符合现代开发习惯:

  1. 动态扩容:无需手动处理容量变化。

  2. 丰富的API:支持 add()remove()contains() 等便捷操作。

  3. 类型安全:通过泛型避免类型错误(数组允许不安全的类型转换)。

  4. 集合框架集成:与 StreamCollections 工具类等无缝协作。


三、选择数组还是 List

考量因素数组List(如 ArrayList)
数据规模是否固定✅ 适合❌ 冗余(自动扩容机制)
性能敏感度✅ 高频访问、底层计算❌ 有额外开销
内存敏感度✅ 存储基本类型或大规模数据❌ 基本类型需装箱,内存占用高
是否需要动态修改❌ 需手动实现扩容✅ 内置动态扩容
代码可读性与维护性❌ 语法较底层✅ 高级API,代码更简洁
多维数据✅ 语法直观(如 int[][]❌ 嵌套结构初始化繁琐

四、实际案例

1. 图像处理

java

复制

下载

// 存储像素数据(RGBA格式,每个像素占4字节)
int[] pixels = new int[width * height * 4];
  • 选择数组:内存紧凑,直接操作高效。

2. 协议解析

java

复制

下载

// 解析网络包的字节流
byte[] packetBuffer = new byte[1024];
socket.read(packetBuffer);
  • 选择数组:与底层API(如Socket)直接兼容。

3. 科学计算

java

复制

下载

// 矩阵乘法
double[][] matrixA = new double[N][N];
double[][] matrixB = new double[N][N];
double[][] result = multiply(matrixA, matrixB);
  • 选择数组:语法直观,性能更高。

4. 业务逻辑

java

复制

下载

// 管理用户列表
List<User> users = new ArrayList<>();
users.add(new User("Alice"));
users.removeIf(user -> user.isInactive());
  • 选择 List:动态增删,API便捷。


五、总结

  • 用数组的场景:性能敏感、内存紧凑、固定长度、多维数据、与底层API交互。

  • 用 List 的场景:动态数据、业务逻辑复杂、需要丰富API支持。

在项目中,若没有明确的性能或内存约束,优先选择 List(如 ArrayList)以提高开发效率和代码可维护性;若存在特定优化需求,再考虑数组。

相关文章:

项目中数据结构为什么用数组,不用List

总结 1&#xff0c;从内存和性能角度&#xff0c;数组占用更小的内存&#xff08;&#xff09;&#xff0c;访问性能更高&#xff08;&#xff09; 分配效率&#xff1a;数组在内存中是连续分配的一块固定空间 访问速度&#xff1a;直接操作内存&#xff0c;数组的读写操作是…...

Linux常见指令介绍下(入门级)

1. head head就和他的名字一样&#xff0c;是显示一个文件头部的内容&#xff08;会自动排序&#xff09;&#xff0c;默认是打印前10行。 语法&#xff1a;head [参数] [文件] 选项&#xff1a; -n [x] 显示前x行。 2. tail tail 命令从指定点开始将文件写到标准输出.使用t…...

从Kafka读取数据

用Spark-Streaming从Kafka读取数据 在大数据处理领域&#xff0c;Spark-Streaming和Kafka都是明星技术。今天咱们就来聊聊怎么用Spark-Streaming从Kafka读取数据并做处理&#xff0c;就算你是小白&#xff0c;也保证能看懂&#xff01;先讲讲从Kafka获取数据的两种方式。早期有…...

硬件工程师面试常见问题(7)

第三十一问&#xff1a;RTC电路&#xff0c;电池寿命估算 上图可知&#xff0c;该电路有两个供电一个是电池供电&#xff0c;一个是其他供电&#xff0c;已知电池大小为120mAh&#xff0c;该电路在电池供电下吃3uA的电流&#xff0c;计算 120*&#xff08;10^3&#xff09;/ 3…...

二分小专题

P1102 A-B 数对 P1102 A-B 数对 暴力枚举还是很好做的&#xff0c;直接上双层循环OK 二分思路:查找边界情况&#xff0c;找出最大下标和最小下标&#xff0c;两者相减1即为答案所求 废话不多说&#xff0c;上代码 //暴力O(n^3) 72pts // #include<bits/stdc.h> // usin…...

Explain详解与索引最佳实践

Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句&#xff0c;分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字&#xff0c;MySQL 会在查询上设置一个标记&#xff0c;执行查询会返回执行计划的信息&#xff0c;而不是执行这条SQL 注意…...

【Qt6 QML Book 基础】07:布局项 —— 锚定布局与动态交互(附完整可运行代码)

引言 在 QML 界面开发中&#xff0c;** 锚定布局&#xff08;Anchors&#xff09;** 是实现响应式设计的核心机制。通过声明式的锚定规则&#xff0c;开发者无需手动计算坐标&#xff0c;即可让元素与父容器或其他元素保持动态位置关联。本文结合官方示例&#xff0c;详细解析…...

rocky9.4部署k8s群集v1.28.2版本(containerd)(纯命令)

文章目录 前言三个节点的主机名 所有节点操作主机名和ip解析关闭交换分区&#xff0c;关闭防火墙&#xff0c;关闭selinux更换阿里云yum源时间同步修改内核参数修改系统最大打开文件数开启bridge网桥过滤&#xff0c;加载br_netfilter模块&#xff0c;加载配置文件安装ipset及i…...

Crawl4AI 部署安装及 n8n 调用,实现自动化工作流(保证好使)

Crawl4AI 部署安装及 n8n 调用&#xff0c;实现自动化工作流&#xff08;保证好使&#xff09; 简介 Crawl4AI 的介绍 一、Crawl4AI 的核心功能 二、Crawl4AI vs Firecrawl Crawl4AI 的本地部署 一、前期准备 二、部署步骤 1、检查系统的网络环境 2、下载 Crawl4AI 源…...

onlyoffice8.3.3发布了-豆豆容器市场同步更新ARM64版本

8.3.3 修复内容 文档编辑器 • 修复从右到左&#xff08;RTL&#xff09;段落的计算问题 (DocumentServer#2590) • 修复从右到左段落中"项目符号/编号/多级列表"样式缩略图的显示问题 • 修复从右到左段落中编号列表&#xff08;项目符号&#xff09;的显示问题 (…...

rabbitmq安装项目集成

使用Docker来安装 1.1.下载镜像 docker pull rabbitmq:3-management 1.2.安装MQ docker run \-e RABBITMQ_DEFAULT_USER=root \-e RABBITMQ_DEFAULT_PASS=123123 \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3-management 15672:RabbitMQ提供…...

济南国网数字化培训班学习笔记-第二组-3节-电网工程建设项目部门

电网工程建设项目部 组成 监理项目部 履行监理合同&#xff0c;监理单位派驻&#xff1a;负责合同管理&#xff0c;审查&#xff0c;见证&#xff0c;旁站&#xff0c;巡视&#xff0c;验收&#xff0c;控制进度&#xff0c;安全&#xff0c;质量&#xff0c;协调各方 造价…...

JDK(java)安装及配置 --- app笔记

JDK官方下载地址&#xff1a;Java Downloads | Oracle 安装好后&#xff0c;配置 “环境变量”&#xff1a; 新建JAVA_HOME变量&#xff0c;值为 jdk 安装 根目录&#xff08;C:\Program Files\Java\jdk-24&#xff09; 在path变量最后面&#xff0c;添加 %JAVA_HOME% 新建 CLA…...

【前端】【面试】在前端开发中,如何优化 CSS 以提升页面渲染性能?

题目&#xff1a;在前端开发中&#xff0c;如何优化 CSS 以提升页面渲染性能&#xff1f; 关键词总结 关键词说明选择器优化避免通配符、减少层级深度、防止后代选择器过度嵌套样式规则优化合并重复规则、慎用高成本属性加载与渲染优化关键 CSS 优先加载、合理使用媒体查询文…...

python的mtcnn检测图片中的人脸并标框

python的mtcnn检测图片中的人脸并标框&#xff0c;标记鼻尖位置 import cv2 from mtcnn import MTCNN# 初始化 MTCNN 检测器 # stages&#xff1a;指定检测阶段 # 指定运行设备为CPU detector MTCNN(stages"face_and_landmarks_detection", device"CPU:0"…...

矩阵系统源码搭建账号分组功能开发全流程解析,支持OEM

在短视频矩阵运营场景下&#xff0c;企业和创作者往往管理着数十甚至上百个不同平台的账号&#xff0c;传统的统一管理模式效率低下&#xff0c;难以满足精细化运营需求。矩阵系统的账号分组功能通过对账号进行分类整合&#xff0c;实现差异化管理与精准化操作。本文将从功能需…...

跟着deepseek学golang--认识golang

文章目录 一、Golang核心优势1. 极简部署方式生产案例​​&#xff1a;依赖管理​​&#xff1a;容器实践​​&#xff1a; 2. 静态类型系统​​类型安全示例​​&#xff1a;性能优势​​&#xff1a;​​代码重构​​&#xff1a; 3. 语言级并发支持​​GMP调度模型实例​​&…...

如何创建极狐GitLab 议题?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 创建议题 (BASIC ALL) 创建议题时&#xff0c;系统会提示您输入议题的字段。 如果您知道要分配给议题的值&#xff0c;则可…...

制造工厂如何借助电子看板实现高效生产管控

在当今高度竞争的制造业环境中&#xff0c;许多企业正面临着严峻的管理和生产挑战。首先&#xff0c;管理流程落后&#xff0c;大量工作仍依赖"人治"方式&#xff0c;高层管理者理论知识薄弱且不愿听取专业意见。其次&#xff0c;生产过程控制能力不足&#xff0c;导…...

QLExpress 深度解析:构建动态规则引擎的利器

QLExpress 深度解析:构建动态规则引擎的利器 在现代业务系统中,“规则变更快、逻辑复杂、发布要求高”已成为常态。传统硬编码已无法满足这种需求。本文以阿里巴巴开源的轻量级表达式引擎 QLExpress 为例,从实际应用、核心结构到落地建议,系统解析其强大能力和设计哲学。 …...

Java Thread类深度解析:构造方法与核心方法全攻略

一、Thread类的作用与线程模型 Thread类是Java多线程编程的核心&#xff0c;每个线程都与一个唯一的Thread对象关联。JVM通过Thread对象管理线程的整个生命周期。理解以下核心概念至关重要&#xff1a; 任务定义&#xff1a;通过run()方法描述线程要执行的任务 线程创建&…...

nodejs导入文件模块和导入文件夹

在 Node.js 中&#xff0c;导入文件模块和导入文件夹的方式略有不同&#xff0c;但都很常见。下面是详细说明&#xff1a; ✅ 一、导入文件模块 1. CommonJS&#xff08;.js&#xff09;方式&#xff1a; // 假设有个模块文件叫 utils.js const utils require(./utils); // …...

信息系统项目管理工程师备考计算类真题讲解八

一、风险管理 示例1&#xff1a;EMV 解析&#xff1a;EMV(Expected Monetary Value)预期货币价值。一种定量风险分析技术。通过考虑各种风险事件的概率及其可能带来的货币影响&#xff0c;来计算项目的预期价值。 可以用下面的较长进行表示&#xff1a; 水路的EMV:7000*3/4(7…...

UML 活动图深度解析:以在线购物系统为例

目录 一、UML 活动图的基本构成要素 二、题目原型 三、在线购物系统用户购物活动图详细剖析 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;节点分析 三、注意事项 四、活动图绘画 五、UML 活动图在软件开发中的关键价值 六、总结 在软件开发与系统设计领…...

Redis--预备知识以及String类型

目录 一、预备知识 1.1 基本全局命令 1.1.1 KEYS 1.1.2 EXISTS 1.1.3 DEL 1.1.4 EXPIRE 1.1.5 TTL 1.1.6 TYPE 1.2 数据结构以及内部编码 1.3 单线程架构 二、String字符串 2.1 常见命令 2.1.1 SET 2.1.2 GET 2.1.3 MGET 2.1.4 MSET 2.1.5 SETNX 2.2 计数命令 2.2.1 INCR 2.2.2…...

电子削铅笔刀顺序图详解:从UML设计到PlantUML实现

题目&#xff1a;为电子削铅笔刀建立一个顺序图和一个通信图。图中的对象包括操作者、铅笔、插入点(也就是铅笔插入铅笔刀的位置)、马达和其他元素。包括哪些交互消息?有那些激活?如何在图中表示出自身调用。 一、顺序图概述 顺序图&#xff08;Sequence Diagram&#xff09…...

负环-P3385-P2136

通过选择标签&#xff0c;洛谷刷一个类型的题目还是很方便的 模版题P3385 P3385 【模板】负环 - 洛谷 Tint(input())def bellman(n,edges,sta):INFfloat(inf)d[INF]*(n1)d[sta]0for i in range(n-1):for u,v,w in edges:ncostd[u]wif ncost<d[v]:d[v]ncostfor u,v,w in e…...

《数据结构之美--栈和队列》

一&#xff1a;引言&#xff1a; 上次我们学习了双向链表的实现&#xff0c;这次我们来学习两个新的数据结构&#xff0c;因为比较简单&#xff0c;就放在一块学习。 二&#xff1a;栈的实现 1. 栈的结构与性质 只凭文字来描述的话不够生动&#xff0c;下面我们就以图画的形…...

如何彻底卸载Android Studio?

要彻底卸载 Android Studio&#xff0c;需要分别在不同操作系统上进行不同的操作&#xff0c;以下为你详细介绍&#xff1a; Windows 系统 卸载主程序 通过 “开始” 菜单&#xff0c;打开 “设置”&#xff0c;选择 “应用”。在应用列表中找到 “Android Studio”&#xff…...

乐聚机器人与地瓜机器人达成战略合作,联合发布Aelos Embodied具身智能

要闻 4月19日&#xff0c;在CCF人形机器人与人工智能技术巡回研讨会&#xff08;武汉站&#xff09;上&#xff0c;乐聚机器人与地瓜机器人达成战略合作&#xff0c;双方将基于RDK X5、RDK S100以及更高性能的国产大算力平台&#xff0c;就夸父&#xff08;KUAVO&#xff09;、…...

[MERN 项目实战] MERN Multi-Vendor 电商平台开发笔记(v2.0 从 bug 到结构优化的工程记录)

[MERN 项目实战] MERN Multi-Vendor 电商平台开发笔记&#xff08;v2.0 从 bug 到结构优化的工程记录&#xff09; 其实之前没想着这么快就能把 2.0 的笔记写出来的&#xff0c;之前的预期是&#xff0c;下一个阶段会一直维持到将 MERN 项目写完&#xff0c;毕竟后期很多东西都…...

KS卡片铃铛知多少,春花秋月何时了

废话不多说&#xff0c;直接上干活 卡片随意跳转技术 可以私信卡片&#xff0c;也可以群发卡片&#xff0c;丝毫不影响使用 铃铛跳转实例 需要一定要找我哦&#xff1a;qmfy01...

SQL 语法

好的&#xff0c;下面是对 SQL 语法的简洁总结&#xff0c;涵盖了常见的 SQL 操作和基本语法结构。 创建一个表 (CREATE TABLE) 首先&#xff0c;我们需要创建一个表 users&#xff0c;如果还没有的话&#xff1a; CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100)…...

《ATPL地面培训教材13:飞行原理》——第1章:概述与定义

翻译&#xff1a;刘远贺&#xff1b;辅助工具&#xff1a;Cluade 3.7 第1章&#xff1a;概述与定义 目录 概述一般定义术语表符号列表希腊符号其他自我评估问题答案 概述 飞机的基本要求如下&#xff1a; 机翼产生升力&#xff1b; 机身容纳载荷&#xff1b; 尾部表面增加…...

https nginx 负载均衡配置

我的系统是OpenEuler。 安装nginx yum install -y nginx 启动&开机启动 systemctl start nginx systemctl enable nginx 自定义conf配置文件 cat <<EOF >> /etc/nginx/conf.d/load_balancer.conf upstream backend {ip_hash; # 防止验证码验证失败server…...

初始https附带c/c++源码使用curl库调用

使用C与CURL开发HTTPS客户端的深度指南 目录 准备工作基础HTTPS请求实现核心功能扩展进阶配置与优化安全注意事项调试与问题排查跨平台适配要点 一、准备工作 1.1 cURL库简介 cURL&#xff08;Client URL Request Library&#xff09;是一个支持多种网络协议的开源库&…...

NI Multisim官网下载: 电路设计自动化EDA仿真软件

NI Multisim是一款由美国国家仪器公司&#xff08;National Instruments&#xff0c;简称 NI&#xff09;推出的电路设计与仿真软件&#xff0c;广泛应用于工程教育、电子电路开发和科研领域。它结合了图形化的电路绘图界面与强大的 SPICE 仿真引擎&#xff0c;让用户可以在虚拟…...

通过阿里云Milvus与通义千问VL大模型,快速实现多模态搜索

本文主要演示了如何使用阿里云向量检索服务Milvus版与通义千问VL大模型&#xff0c;提取图片特征&#xff0c;并使用多模态Embedding模型&#xff0c;快速实现多模态搜索。 基于灵积&#xff08;Dashscope&#xff09;模型服务上的通义千问 API以及Embedding API来接入图片、文…...

React 与 Vue:两大前端框架的深度对比

在前端开发领域&#xff0c;React 和 Vue 无疑是当下最受欢迎的两大框架。它们各自拥有独特的优势和特点&#xff0c;吸引了大量开发者。无论是初学者还是经验丰富的工程师&#xff0c;选择 React 还是 Vue 都是一个常见的问题。本文将从多个角度对 React 和 Vue 进行对比&…...

OpenFeign和Gateway

OpenFeign和Gateway 一.OpenFeign介绍二.快速上手1.引入依赖2.开启openfeign的功能3.编写客户端4.修改远程调用代码5.测试 三.OpenFeign参数传递1.传递单个参数2.多个参数、传递对象和传递JSON字符串3.最佳方式写代码继承的方式抽取的方式 四.部署OpenFeign五.统一服务入口-Gat…...

openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解

1 先看openwrt时间&#xff0c;一定要保证时间和浏览器和服务器是一致的&#xff0c;不然无法更新 2 openwrt设置旁路由前先测试下&#xff0c;路由器能否ping通主路由&#xff0c;是否能够连接外网&#xff0c;好多旁路由设置完了&#xff0c;发现还不能远程好多就是旁路由本…...

ai如何赋能艺术教育

在数字化浪潮席卷全球的今天,人工智能(AI)作为第四次工业革命的核心驱动力,正以前所未有的速度重塑教育生态。艺术教育领域作为培养创造力、批判性思维与跨文化理解力的关键阵地,正经历着AI技术带来的深刻变革。本文将从技术赋能、教育范式革新、全球化协作三个维度,探讨…...

NocoBase 本周更新汇总:联动规则条件左侧支持变量

原文链接&#xff1a;https://www.nocobase.com/cn/blog/weekly-updates-20250424。 汇总一周产品更新日志&#xff0c;最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支&#xff1a;main &#xff0c;next和 develop。 main &#xff1a;截止…...

协作开发攻略:Git全面使用指南 — 第二部分 高级技巧与最佳实践

协作开发攻略&#xff1a;Git全面使用指南 — 第二部分 高级技巧与最佳实践 Git 是一种分布式版本控制系统&#xff0c;用于跟踪文件和目录的变更。它能帮助开发者有效管理代码版本&#xff0c;支持多人协作开发&#xff0c;方便代码合并与冲突解决&#xff0c;广泛应用于软件开…...

sass 变量

基本使用 如果分配给变量的值后面添加了 !default 标志 &#xff0c;这意味着该变量如果已经赋值&#xff0c;那么它不会被重新赋值&#xff0c;但是&#xff0c;如果它尚未赋值&#xff0c;那么它会被赋予新的给定值。 如果在此之前变量已经赋值&#xff0c;那就不使用默认值…...

多级缓存架构深度解析:从设计原理到生产实践

多级缓存架构深度解析&#xff1a;从设计原理到生产实践 一、多级缓存架构核心定位与设计原则 1. 架构分层与角色定位 多级缓存通过分层存储、流量削峰、数据分级实现性能与成本的平衡&#xff0c;典型三层架构如下&#xff1a; 层级代表组件存储介质数据特征命中目标成本级…...

(51单片机)LCD展示动画(延时函数)(LLCD1602教程)

前言&#xff1a; 前面我们说过&#xff0c;之前LCD1602模块有点难&#xff0c;但是现在&#xff0c;我们通过几遍博客的学习&#xff0c;今天来讲一下LCD1602的原理 演示视频&#xff1a; LCD1602流动 源代码&#xff1a; main.c #include <STC89C5xRC.H> #include &q…...

12N60-ASEMI无人机专用功率器件12N60

编辑&#xff1a;LL 12N60-ASEMI无人机专用功率器件12N60 型号&#xff1a;12N60 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 最大漏源电流&#xff1a;12A 漏源击穿电压&#xff1a;600V 批号&#xff1a;最新 RDS&#xff08;ON&#xff09;Max&#xff1a;0.68…...

[Redis] Redis最佳实践

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…...

arm64适配系列文章-第九章-arm64环境上sentinel的部署

ARM64适配系列文章 第一章 arm64环境上kubesphere和k8s的部署 第二章 arm64环境上nfs-subdir-external-provisioner的部署 第三章 arm64环境上mariadb的部署 第四章 arm64环境上nacos的部署 第五章 arm64环境上redis的部署 第六章 arm64环境上rabbitmq-management的部署 第七章…...