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

【从零开始入门unity游戏开发之——C#篇12】新的引用类型——数组array

文章目录

  • 一、数组(`array`)(一维数组)
    • 1、声明数组
    • 2、初始化数组
    • 3、访问数组元素
    • 4 、修改数组元素
    • 5、获取数组的长度
    • 6、遍历数组
      • 使用 `for` 循环:
      • 使用 `foreach` 循环:
    • 7、数组方法
      • 排序:
      • 逆序:
      • 查找元素:
      • 复制数组:
    • 8、`string.Join`拼接合并数组数据为字符串
      • 语法:
      • 示例:
    • 9、数组的注意事项
  • 二、多维数组
    • 1、二维数组
    • 2、三维数组
    • 3、其他使用
  • 三、交错数组(了解即可,用的很少)
    • 1、什么是交错数组?
    • 2、如何声明和初始化交错数组?
    • 3、访问和操作交错数组中的元素:
    • 4、交错数组的优点与缺点:
    • 5、与二维数组的比较
  • 专栏推荐
  • 完结

一、数组(array)(一维数组)

在 C# 中,数组是一种数据结构,用于存储固定大小同类型元素集合。一般一维数组就简称为数组。数组中的每个元素都通过索引来访问,索引是从 0 开始的。

注意,数组属于引用类型

1、声明数组

要声明一个数组,你需要指定数组的类型,并使用 [] 表示数组。例如:

int[] numbers;  // 声明一个整型数组
string[] names; // 声明一个字符串数组

2、初始化数组

数组可以通过两种方式进行初始化:

  • 显式初始化:在声明时直接指定数组的元素。

    int[] numbers = new int[3] { 1, 2, 3 };// 创建一个包含 3 个整数的数组
    int[] numbers = new int[5]; // 创建一个包含 5 个整数的数组,所有元素默认为 0string[] names = new string[] { "Alice", "Bob", "Charlie" }; // 创建一个包含 3 个字符串的数组
    
  • 简洁初始化:通过数组字面量直接给数组赋值。

    int[] numbers = { 1, 2, 3, 4, 5 }; // 简单初始化数组
    string[] names = { "Alice", "Bob", "Charlie" }; // 初始化字符串数组
    

3、访问数组元素

数组中的元素可以通过索引来访问,索引从 0 开始。例如:

int[] numbers = { 1, 2, 3, 4, 5 };
Console.WriteLine(numbers[0]); // 输出 1,数组的第一个元素
Console.WriteLine(numbers[3]); // 输出 4,数组的第四个元素

4 、修改数组元素

数组的元素是可以修改的,只需通过索引进行赋值:

int[] numbers = { 1, 2, 3, 4, 5 };
numbers[2] = 10; // 修改第三个元素为 10
Console.WriteLine(numbers[2]); // 输出 10

5、获取数组的长度

使用 .Length 属性来获取数组的元素个数:

int[] numbers = { 1, 2, 3, 4, 5 };
Console.WriteLine(numbers.Length); // 输出 5

6、遍历数组

可以使用 for 循环或 foreach 循环来遍历数组。

使用 for 循环:

int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{Console.WriteLine(numbers[i]); // 输出数组元素
}

使用 foreach 循环:

int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{Console.WriteLine(number); // 输出数组元素
}

7、数组方法

Array 类提供了一些常用的方法来操作数组,例如:

排序:

int[] numbers = { 5, 3, 8, 1, 2 };
Array.Sort(numbers); // 对数组进行升序排序
foreach (var number in numbers)
{Console.WriteLine(number); // 输出 1, 2, 3, 5, 8
}

逆序:

Array.Reverse(numbers); // 将数组元素逆序
foreach (var number in numbers)
{Console.WriteLine(number); // 输出 8, 5, 3, 2, 1
}

查找元素:

int[] numbers = { 1, 2, 3, 4, 5 };
int index = Array.IndexOf(numbers, 3); // 查找元素 3 的索引
Console.WriteLine(index); // 输出 2

复制数组:

int[] numbers = { 1, 2, 3, 4, 5 };
int[] copiedNumbers = new int[5];
Array.Copy(numbers, copiedNumbers, numbers.Length); // 将 numbers 数组复制到 copiedNumbers
foreach (var number in copiedNumbers)
{Console.WriteLine(number); // 输出 1, 2, 3, 4, 5
}

你可能会问,这有什么用?我完全可以使用=赋值即可

int[] copiedNumbers = numbers;

因为开头已经说过了,数组是应用类型,所以直接使用 int[] copiedNumbers = numbers; 其实是将 copiedNumbers 和 numbers 指向了同一个数组对象,而不是创建一个新的副本。因此,如果你在 copiedNumbers 上做修改,也会影响到 numbers,反之亦然。简而言之,这种方式会导致两个变量共享同一个内存区域。

使用Array.Copy复制数组会实现类似值类型的效果,即创建数组的一个独立副本。这样,当你修改副本时,不会影响原始数组,反之亦然。

8、string.Join拼接合并数组数据为字符串

string.Join 是 C# 中用于将数组或集合中的元素连接成一个单一的字符串的方法。它可以指定一个分隔符,将数组中的每个元素连接起来,形成一个新的字符串。这个方法非常常见,用于打印或格式化数组数据。

语法:

string result = string.Join(string separator, IEnumerable<string> values);
  • separator:用作元素之间的分隔符的字符串。
  • values:一个实现了 IEnumerable 接口的集合,通常是一个数组、列表或其他可枚举的集合。

示例:

假设我们有一个字符串数组,并希望将其连接成一个以逗号分隔的字符串:

string[] fruits = { "Apple", "Banana", "Cherry" };
string result = string.Join(", ", fruits);
Console.WriteLine(result);

输出:

Apple, Banana, Cherry

9、数组的注意事项

  • 数组是固定大小的:一旦数组的大小被指定,它的大小就不能更改。如果需要更改数组的大小,可以创建一个新的数组并复制数据。
  • 数组的索引从 0 开始:访问数组时,必须使用有效的索引,索引超出范围会抛出 IndexOutOfRangeException 异常。
  • 默认值:数组中的元素在初始化时会被赋予默认值。例如,整型数组的默认值是 0,布尔型数组的默认值是 false,引用类型数组的默认值是 null

二、多维数组

C# 支持多维数组(例如,二维数组)。可以通过逗号分隔的多个维度来定义。

1、二维数组

int[,] matrix = new int[3, 3] // 创建一个 3x3 的二维数组
{{ 1, 2, 3 },{ 4, 5, 6 },{ 7, 8, 9 }
};
Console.WriteLine(matrix[1, 2]); // 输出 6,访问第二行第三列的元素

2、三维数组

int[,,] threeDArray = new int[2, 2, 2]
{{ { 1, 2 }, { 3, 4 } },{ { 5, 6 }, { 7, 8 } }
};
Console.WriteLine(threeDArray[1, 0, 1]); // 输出 6

3、其他使用

其他使用和一维数组基本一样,这里就不多介绍了


三、交错数组(了解即可,用的很少)

C# 中的交错数组是一种数组的数组,也就是说,交错数组是一个二维数组的特殊形式,其中每个元素本身也是一个数组。与传统的矩阵型二维数组不同,交错数组中的每一行(即每个子数组)可以具有不同的长度。

1、什么是交错数组?

交错数组其实是一个一维数组,其中的每个元素又是一个数组(可以看作是二维数组的每一行)。这使得每一行的数组长度可以不同,解决了普通二维数组在内存中固定的大小限制问题。

2、如何声明和初始化交错数组?

声明交错数组:

int[][] jaggedArray;

这里,jaggedArray 是一个数组,数组的元素是类型为 int[] 的数组(即一维整数数组)。

初始化交错数组:

jaggedArray = new int[3][];  // 创建一个包含 3 个子数组的交错数组
jaggedArray[0] = new int[4];  // 第一行有 4 个元素
jaggedArray[1] = new int[2];  // 第二行有 2 个元素
jaggedArray[2] = new int[3];  // 第三行有 3 个元素

在这个例子中,jaggedArray 有 3 个元素,分别是长度为 4、2、3 的一维数组。

3、访问和操作交错数组中的元素:

可以通过两层索引来访问交错数组中的元素:

jaggedArray[0][0] = 1;  // 第一行第一列的元素赋值为 1
jaggedArray[1][1] = 5;  // 第二行第二列的元素赋值为 5
Console.WriteLine(jaggedArray[0][0]);  // 输出 1
Console.WriteLine(jaggedArray[1][1]);  // 输出 5

4、交错数组的优点与缺点:

优点:

  • 灵活性:交错数组可以在每一行中存储不同长度的数组,因此能更好地适应数据大小不等的情况。
  • 节省内存:由于每行的数组长度可以不同,所以在内存使用上会更节省,尤其在每行的数据量相差较大的情况下。

缺点:

  • 不连续存储:交错数组的每一行实际上是独立存储的,并不按顺序在内存中存储。这可能会导致一些性能上的开销,尤其是在需要频繁访问数组元素时。
  • 访问复杂度:与普通的二维数组相比,交错数组的访问略显复杂,因为要通过两次索引来访问数据。

5、与二维数组的比较

假设有一个标准的二维数组(矩阵):

int[,] array = new int[3, 4];  // 创建一个 3x4 的二维数组

二维数组在内存中是连续存储的,所有元素按行列顺序存储,具有固定的行和列数。

而交错数组则更灵活,每一行可以有不同的列数,但其内存布局可能不如二维数组那样连续。


专栏推荐

地址
【从零开始入门unity游戏开发之——C#篇】
【从零开始入门unity游戏开发之——unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

相关文章:

【从零开始入门unity游戏开发之——C#篇12】新的引用类型——数组array

文章目录 一、数组&#xff08;array&#xff09;&#xff08;一维数组&#xff09;1、声明数组2、初始化数组3、访问数组元素4 、修改数组元素5、获取数组的长度6、遍历数组使用 for 循环&#xff1a;使用 foreach 循环&#xff1a; 7、数组方法排序&#xff1a;逆序&#xff…...

人工智能在数字人的技术与应用

在人工智能领域&#xff0c;数字人技术正逐渐从科幻小说走向现实。数字人&#xff0c;也称为虚拟助手或虚拟形象&#xff0c;是通过AI技术模拟人类行为、语言和情感的数字化存在。本文将深入探讨数字人技术的核心原理、最新进展以及在不同领域的应用案例&#xff0c;为专业人士…...

【机器人】Graspness 端到端 抓取点估计 | 论文解读

在复杂场景中实现抓取检测&#xff0c;Graspness是一种端到端的方法&#xff1b; 输入点云数据&#xff0c;输出抓取角度、抓取深度、夹具宽度等信息。 开源地址&#xff1a;GitHub - rhett-chen/graspness_implementation: My implementation of Graspnet Graspness. 论文地…...

服务器Docker OOM RSS高问题排查思路

优质博文&#xff1a;IT-BLOG-CN 防走弯路为防止走弯路&#xff0c;强烈建议先仔细阅读以下加粗内容&#xff1a; 如果你的应用是因为公司最近降成本调小实例物理内存才出现docker oom&#xff0c;而之前从来没有出现过&#xff0c;那么大概率是堆内存太大导致&#xff0c;这种…...

动态导出word文件支持转pdf

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、功能说明二、使用步骤1.controller2.工具类 DocumentUtil 导出样式 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff…...

【文档搜索引擎】在内存中构造出索引结构(下)

文章目录 4.保存到磁盘中为什么要保存在磁盘中怎么保存操作步骤1. 前期准备2. 主要操作 5. 将磁盘中的数据加载到内存中Parser 类完整源码Index 类完整源码 4.保存到磁盘中 为什么要保存在磁盘中 索引本来是存储在内存中的&#xff0c;为什么要将其保存在硬盘中&#xff1f; …...

旅游资源系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…...

如何用细节提升用户体验?

前端给用户反馈是提升用户体验的重要部分&#xff0c;根据场景选择不同的方式可以有效地提升产品的易用性和用户满意度。以下是常见的方法&#xff1a; 1. 视觉反馈 用户执行了某些操作后&#xff0c;需要即时确认操作结果。例如&#xff1a;按钮点击、数据提交、页面加载等。…...

容器设计模式:Sidecar

文章目录 容器设计模式&#xff1a;Sidecar 模式1. 什么是 Sidecar 模式&#xff1f;2. Sidecar 模式的原理2.1 工作机制2.2 常见用途 3. Sidecar 模式示例示例&#xff1a;日志收集 4. Sidecar 模式的架构图图例&#xff1a; 5. Sidecar 模式的优点6. Sidecar 模式的局限性7. …...

深入剖析MyBatis的架构原理

架构设计 简要画出 MyBatis 的架构图 >> ​​ Mybatis 的功能架构分为哪三层&#xff1f; API 接口层 提供给外部使用的接口 API&#xff0c;开发人员通过这些本地 API 来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。MyBatis 和数据库的…...

深入C语言文件操作:从库函数到系统调用

引言 文件操作是编程中不可或缺的一部分&#xff0c;尤其在C语言中&#xff0c;文件操作不仅是处理数据的基本手段&#xff0c;也是连接程序与外部世界的重要桥梁。C语言提供了丰富的库函数来处理文件&#xff0c;如 fopen、fclose、fread、fwrite 等。然而&#xff0c;这些库…...

【Linux】shell脚本二

2、接收用户的参数 shell脚本已经内设了用于接收用户输入参数的变量&#xff0c;变量之间可以使用空格隔开。 如&#xff1a;./test.sh one two three four $0&#xff1a;对应的是当前shell脚本程序的名称&#xff0c;即test.sh$#&#xff1a;对应的是总共有几个参数&#…...

从万维网到人工智能:改变生活的11项技术里程碑

1984 年 1 月 24 日&#xff0c;苹果公司推出了 Macintosh 128K&#xff0c;从此永远改变了个人电脑的面貌。 史蒂夫・乔布斯&#xff08;Steve Jobs&#xff09;这款小巧且用户友好的电脑向全世界引入了图形用户界面&#xff0c;标志着个人技术发展历程中的一个关键时刻。 从…...

Hyperledger Fabric 2.x 环境搭建

Hyperledger Fabric 是一个开源的企业级许可分布式账本技术&#xff08;Distributed Ledger Technology&#xff0c;DLT&#xff09;平台&#xff0c;专为在企业环境中使用而设计&#xff0c;与其他流行的分布式账本或区块链平台相比&#xff0c;它有一些主要的区别。 环境准备…...

【Maven】自定义Maven插件

场景&#xff1a; 1、自定义一个插件目标 timer&#xff0c;用于显示当前日期时间。 2、将 timer 绑定到 validate 阶段。 调研 1、maven-clean-plugin 下载 maven-clean-plugin 插件的源码&#xff0c;在本地使用 IDEA 打开 可以看到&#xff0c;maven-clean-plugin 插件是…...

修改vscode中emmet中jsx和tsx语法中className的扩展符号从单引号到双引号 - HTML代码补全 - 单引号双引号

效果图 实现步骤 文件 > 首选项 > 设置搜索“”在settings.json中修改&#xff0c;增加 "emmet.syntaxProfiles": {"html": {"attr_quotes": "single"},"jsx": {"attr_quotes": "double","…...

数据结构day3作业

一、完整功能【顺序表】的创建 【seqList.h】 #ifndef __SEQLIST_H__ #define __SEQLIST_H__#include <stdio.h> #include <string.h> #include <stdlib.h>//宏定义&#xff0c;线性表的最大容量 #define MAX 30//类型重定义&#xff0c;表示要存放数据的类…...

pydub AudioSegment实现音频重采样 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…...

C++多线程常用方法

在 C 中&#xff0c;线程相关功能主要通过头文件提供的类和函数来实现&#xff0c;以下是一些常用的线程接口方法和使用技巧&#xff1a; std::thread类 构造函数&#xff1a; 可以通过传入可调用对象&#xff08;如函数指针、函数对象、lambda 表达式等&#xff09;来创建一…...

【网络安全】Web Timing 和竞争条件攻击:揭开隐藏的攻击面

Web Timing 和竞争条件攻击&#xff1a;揭开隐藏的攻击面 在传统的 Web 应用中&#xff0c;漏洞的发现和利用通常相对容易理解。如果代码存在问题&#xff0c;我们可以通过发送特定输入来强制 Web 应用执行非预期的操作。这种情况下&#xff0c;输入和输出之间往往有直接关系&…...

12月最新编程语言排行榜

“岁末将至&#xff0c;2024年的编程世界又发生了哪些变化&#xff1f;是Python依然稳坐王座&#xff0c;还是有新语言杀出重围&#xff1f;让我们一起看看12月最新编程语言排行榜&#xff0c;寻找未来技术的风向标。” 今年&#xff0c;哪些编程语言成为行业焦点&#xff1f;…...

迭代器模式

迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为设计模式&#xff0c;它提供了一种方法来访问一个聚合对象中的各个元素&#xff0c;而又不暴露其内部的表示。这种模式允许你逐个访问对象中的元素&#xff0c;而无需知道其底层的数据结构。迭代器模…...

探秘 WB 实验:AI 助力攻克操作难关

在生物学研究的浩瀚领域中&#xff0c;WB 实验犹如一座关键的灯塔&#xff0c;照亮了我们探索蛋白质世界的道路。今天&#xff0c;就让我们一同深入了解 WB 实验的全貌&#xff0c;以及 AI 如何在其中发挥神奇作用&#xff0c;帮助我们应对实际操作中的重重挑战。 WB 实验&…...

labelimg使用指南

YOLOv8目标检测(一)_检测流程梳理&#xff1a;YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集&#xff1a;YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型&#xff1a;YOLOv8目标检测(三)_训…...

车载终端_智能车载终端定制_农机/出租车/叉车/驾培车载终端MTK方案

车载终端集成了先进的技术和卓越的性能&#xff0c;采用了联发科的高效低功耗ARM处理器&#xff0c;具备八核架构&#xff0c;主频高达2.0GHz&#xff0c;基于12nm制程工艺&#xff0c;不仅性能强劲&#xff0c;而且功耗控制出色。基本配置为4GB内存与64GB存储&#xff0c;用户…...

Unity中Pico实现透视

1.参照Pico官方【透视 | PICO 开发者平台】文档设置。 2.额外的需要将主相机的post processing禁用。...

elk部署与实战案例

**ELK Stack** 是一个非常强大的日志处理和分析平台&#xff0c;由 **Elasticsearch**、**Logstash** 和 **Kibana** 三个组件组成。它被广泛应用于日志收集、搜索、分析和可视化。ELK 可以处理大量数据&#xff0c;并帮助用户从中提取有价值的信息。以下是一个从部署到实际应用…...

Isaac Gym, Sim, Lab

本文仅为个人学习笔记&#xff0c;文章参考请见参考资料部分&#xff0c;主要目的是进行多场景并行仿真测试&#xff0c;笔记中大部分内容都是针对于这个目标。 参考资料 常见问题 — Isaac Lab 文档 https://github.com/isaac-sim/IsaacLab 一. Gym, Sim, Lab 之间的关系 Is…...

活着就好20241217

亲爱的朋友们&#xff0c;大家早上好&#xff01;&#x1f31e; 今天是17号&#xff0c;星期二&#xff0c;2024年12月的第十七天&#xff0c;同时也是第50周的第八天&#xff0c;农历甲辰[龙]年十一月初十三日。在这晨光熹微的美好时刻&#xff0c;愿那温暖而明媚的阳光轻轻拂…...

第十六章:IO流 (java.io包中)

一、理解 1. 简单而言&#xff1a;流就是内存与存储设备之间传输数据的通道、管道。 2. 分类&#xff1a; (1) 按方向 ( 以 JVM 虚拟机为参照物 ) 【重点】 输入流&#xff1a;将 < 存储设备 > 中的内容读入到 < 内存 > 中。 输出流&#xff1a;将 < 内…...

Introduction to NoSQL Systems

What is NoSQL NoSQL database are no-tabular非數據表格 database that store data differently than relational tables 其數據的存儲方式與關係型表格不同 Database that provide a mechanism機制 for data storage retrieval 檢索 that is modelled in means other than …...

【JVM】JVM基础教程(四)

上一章&#xff1a;【JVM】JVM基础教程&#xff08;三&#xff09;-CSDN博客 目录 自动垃圾回收 方法区的回收 方法区回收条件 手动触发回收 堆回收 如何判断堆上的对象可以回收&#xff1f; 可以给对象引用赋值null&#xff0c;切断引用 引用计数法 循环引用缺点 查…...

前端实现在线预览excel文件

在前端开发中&#xff0c;经常会遇到需要在线预览各种文件的需求。本文将介绍如何使用前端技术实现在线预览 Excel 文件的功能。 一、基于微软office服务的excel预览 获取要预览的 Excel 文件的 URL&#xff08;例如存储在 OneDrive 或 SharePoint 上的文件&#xff09;。 使…...

Python 写的《桌面时钟》屏保

原代码&#xff1a; # 日历式时钟 # 导入所需的库 # 作者&#xff1a;Hoye # 日期&#xff1a;2024年12月16日 # 功能&#xff1a;显示当前日期、星期、时间&#xff0c;并显示模拟时钟 import tkinter as tk from tkinter import ttk import time import math import sysdef …...

计算机视觉单阶段实例分割实践指南与综述

概述 原文地址&#xff1a;https://towardsdatascience.com/single-stage-instance-segmentation-a-review-1eeb66e0cc49 实例分割是一项具有挑战性的计算机视觉任务&#xff0c;需要预测对象实例及其每像素分割掩码。这使其成为语义分割和目标检测的混合体。 自 Mask R-CNN …...

Axios结合Typescript 二次封装完整详细场景使用案例

Axios 是一个基于 promise 的 HTTP 客户端&#xff0c;用于浏览器和 node.js。二次封装 Axios 主要是为了统一管理 HTTP 请求&#xff0c;例如设置统一的请求前缀、头部、超时时间&#xff0c;统一处理请求和响应的格式&#xff0c;以及错误处理等。 以下是一个使用 TypeScrip…...

C++面试:HTTP1.0/1.1,HTTP2.0,HTPP3.0的区别

1.你对HTTP1.0/1.1&#xff0c;HTTP2.0&#xff0c;HTPP3.0有什么了解&#xff1f; 答&#xff1a;HTTP1.0&#xff1a; ①属于无连接式&#xff0c;每次发送HTTP请求都需要建立TCP连接。 ②会造成发送时的对头阻塞&#xff0c;当上一个请求没有应答&#xff0c;当前的请求就会…...

使用 Docker Compose 部署 Redis 主从与 Sentinel 高可用集群

文章目录 使用 Docker Compose 部署 Redis 主从与 Sentinel 高可用集群Redis 主从架构简介Redis Sentinel 简介配置文件1. 主节点配置 (redis-master.conf)2. 从节点配置 (redis-slave1.conf 和 redis-slave2.conf)redis-slave1.confredis-slave2.conf3. Sentinel 配置 (sentin…...

【Java】4、虚拟机 JVM

目录 Java内存区域详解(重点) JVM垃圾回收详解(重点) 类文件结构详解 类加载过程详解 类加载器详解(重点) 最重要的JVM参数总结 JDK监控和故障处理工具总结 JVM线上问题排查和性能调优案例 参考&#xff1a; JVM 核心技术 32 讲 深入浅出 Java 虚拟机...

Vue3之组合式API详解

Vue 3引入了一种新的API风格——组合式API&#xff08;Composition API&#xff09;&#xff0c;旨在提升组件的逻辑复用性和可维护性。本文将详细阐述Vue 3中的组合式API&#xff0c;包括其定义、特点、使用场景、优势等&#xff0c;并给出具体的示例代码。 一、定义 组合式…...

Flutter编译Module was compiled with an incompatible version of Kotlin错误解决

文章目录 编译报错如下解决方法修复方案 编译报错如下 e: C:/Users/YUAN/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.9.20/e58b4816ac517e9cc5df1db051120c63d4cde669/kotlin-stdlib-1.9 .20.jar!/META-INF/kotlin-stdlib-jdk8.kotlin_module:…...

Uniapp插件如何通过NFC读取多种证卡信息?

nfc读卡uniapp插件&#xff0c;由中软高科进行开发&#xff0c;主要是通过NFC读取居民身份证、港澳台居住证、外国人居住证、护照等证卡的信息。经过多个版本的升级更新&#xff0c;目前性能已趋于稳定&#xff0c;并且读卡速度较之最初版本有了大的提升。 注意事项 测试使用的…...

本地docker镜像改名字

如果你想修改本地 Docker 镜像的名字&#xff0c;可以通过创建该镜像的新标签&#xff08;tag&#xff09;来实现。Docker 中没有直接修改镜像名字的命令&#xff0c;但可以通过重新打标签的方式实现类似的效果。以下是具体步骤&#xff1a; 查看当前镜像&#xff1a; docker…...

VS Code 远程连接 SSH 服务器

文章目录 一、安装 Remote - SSH 扩展并连接远程主机二、免密连接远程主机1. 生成 SSH 密钥对2. 将公钥复制到远程服务器3. 配置 SSH 客服端4. 连接测试 随着技术的不断迭代更新&#xff0c;在 Linux 系统中使用 Vim、nano 等基于 Shell 终端的编辑器&#xff08;我曾经也是个 …...

艾体宝案例丨CircleCI 助力 ANA Systems 打造高效 CI/CD 模型

在现代软件开发领域&#xff0c;效率和可靠性是企业在竞争中取胜的关键。本文将深入探讨 ANA Systems 如何通过引入业界领先的 CI/CD 平台——CircleCI&#xff0c;克服传统开发流程的瓶颈&#xff0c;实现开发运营效率的全面提升。同时&#xff0c;本文还将详细解析 CircleCI …...

vue 上传组件 vxe-upload 实现拖拽调整顺序

vue 上传组件 vxe-upload 实现拖拽调整顺序&#xff0c;通过设置 drag-sort 参数就可以启用拖拽排序功能 官网&#xff1a;https://vxeui.com/ 图片拖拽排序 <template><div><vxe-upload v-model"imgList" mode"image" multiple drag-sor…...

Elasticsearch的一些介绍

你想问的可能是 **Elasticsearch**&#xff0c;以下是关于它的一些介绍&#xff1a; ### 概述 Elasticsearch是一个基于Apache Lucene库构建的开源分布式搜索和分析引擎&#xff0c;采用Java语言编写&#xff0c;具有高性能、可扩展性和易用性等特点&#xff0c;可用于各种数据…...

从源码构建安装Landoop kafka-connect-ui

背景 部署Landoop kafka-connect-ui最简单的办法还是通过docker来部署&#xff0c;我们之前的kafka-connect-ui就是通过docker部署的&#xff0c;但是&#xff0c;最近发现个问题&#xff1a;当使用docker部署且防火墙使用的是firewalld的情况下&#xff0c;就会出现端口冲突。…...

MybatisPlus-扩展功能

代码生成 在使用MybatisPlus以后&#xff0c;基础的Mapper、Service、PO代码相对固定&#xff0c;重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成PO、Mapper、Service等相关代码。只不过代码生成器同样要编码使用&#xff0c;也很麻烦。 这里…...

发布/部署WebApi服务器(IIS+.NET8+ASP.NETCore)

CS软件授权注册系统-发布/部署WebApi服务器(IIS.NET8ASP.NETCore) 目录 本文摘要VS2022配置发布VS2022发布WebApiIIS服务器部署WebApi 将程序文件复制到云服务器添加网站配置应用程序池配置dns域名配置端口阿里云ECS服务器配置19980端口配置https协议 (申请ssl证书)测试WebAp…...