c#集合详解-Dictionary、List、Queue、Stack等

目录

一,非泛型集合

1,ArrayList

(1)创建和初始化ArrayList()

(2)常用方法

①Add(value)

②AddRange(value)

③Insert(index,value)

④Remove(value)

⑤RemoveAt(index)

⑥clear()

⑦Contains(value)

⑧IndexOf(value)

⑨Sort()

⑩Reverse()

(3)总结

2,Hashtable

(1)创建Hashtable

(2)常用方法

①Add()

②ContainsKey(value)

③containsValue(value)

④Remove(Key)

⑤clear()

⑥keys属性

⑦values属性

⑧索引器

(3)总结

二,泛型集合

1,List

(1)创建List的两种方式

①创建一个空的List

②使用初始化器创建List

(2)List常用方法

①Add(value)

②Insert(index,value)

③Remove(value)

④RemoveAt(index)

⑤clear()

⑥contains(value)

⑦IndexOf(value)

⑧Count

⑨Sort()

⑩Reverse()

2,Dictionary,value>

(1)创建Dictionary的两种方式

①创建一个空的Dictionary

②使用初始化器创建并初始化Dictionary

(2)常用方法和属性

①Add(key,value)

②containskey(key)

③containsValue(value)

④Remove(key)

⑤clear()

⑥Count

⑦索引器

(3)遍历字典

3,Queue

(1)创建队列

(2)常用方法和属性

(3)遍历队列

4,Stack

(1)创建栈

(2)常用方法和属性

(3)遍历栈

5,HashSet

(1)创建HashSet

(2)常用方法

(3)遍历HashSet

6,SortedList,>

(1)SortedList的基本特性

(2)常用方法和属性

(3)遍历SortedList

三,总结


集合是用于存储,管理和操作数据的容器,集合提供了不同的数据结构和方法,方便对数据进行增、删、查、改等操作。

C#提供了多种集合类型,分为两大类:

1,非泛型集合:如ArrayList,Hashtable等

2,泛型集合:如List<T>,Dictionary<Key,Value>,Queue<T>,stack<T>,HashSet<T>, SortedList<Key,Value>等

(1)List<T>:动态数组,存储任意类型的数据吗,支持按索引访问

(2)Dictionary<key,value>:键值对集合,每个元素有一个键和一个值组成

(3)Queue<T>:队列,先进先出

(4)Stack<T>:栈,后进后出

(5)HashSet<T>:无重复元素的集合,常用于判断集合中是否存在某个元素

(6)SortedList<key,value>:按键排序的键值对集合

一,非泛型集合

常见的非泛型集合:

1,ArrayList

动态数组,允许存储不同的类型的元素,位于System.Collections命名空间下,大小可以动态变化,类似数组,但可以在运行时调整其大小,ArrayList具有类似数组的功能,但是同时允许动态增加和删除元素

(1)创建和初始化ArrayList()

可以通过不同的方式来创建ArrayList

例:

using System;using System.Collections;class Program
{static void Main(){// 创建一个空的 ArrayListArrayList list1 = new ArrayList();// 使用初始容量创建 ArrayListArrayList list2 = new ArrayList(10);  // 初始容量为 10// 从数组创建 ArrayListint[] numbers = { 1, 2, 3, 4, 5 };ArrayList list3 = new ArrayList(numbers);// 使用集合初始化ArrayList list4 = new ArrayList { 10, "Hello", 3.14, true };// 输出初始化的 ArrayListConsole.WriteLine("list4:");foreach (var item in list4){Console.WriteLine(item);}}}

输出

list4:

10

Hello

3.14

True

(2)常用方法

①Add(value)

向ArrayList中添加一个元素

例:

ArrayList list = new ArrayList();

list.Add(10);

list.Add("Hello");

Console.WriteLine(list[0]); // 输出:10

Console.WriteLine(list[1]); // 输出:Hello

②AddRange(value)

向ArrayList中添加一个集合中的所有元素

例:

ArrayList list1 = new ArrayList() { 1, 2, 3 };

ArrayList list2 = new ArrayList() { 4, 5, 6 };

list1.AddRange(list2);

Console.WriteLine(string.Join(", ", list1));  // 输出:1, 2, 3, 4, 5, 6

③Insert(index,value)

在指定的位置插入元素

例:

ArrayList list = new ArrayList() { 1, 2, 4 };

list.Insert(2, 3); // 在索引 2 位置插入元素 3

Console.WriteLine(string.Join(", ", list));  // 输出:1, 2, 3, 4

④Remove(value)

从ArrayList中删除第一次出现的指定的元素

例:

ArrayList list = new ArrayList() { 1, 2, 3, 4, 5 };

list.Remove(3); // 删除元素 3

Console.WriteLine(string.Join(", ", list));  // 输出:1, 2, 4, 5

⑤RemoveAt(index)

删除指定索引位置的元素

例:

ArrayList list = new ArrayList() { 1, 2, 3, 4 };

list.RemoveAt(1); // 删除索引 1 处的元素

Console.WriteLine(string.Join(", ", list));  // 输出:1, 3, 4

⑥clear()

删除ArrayList中的所有元素

例:

ArrayList list = new ArrayList() { 1, 2, 3, 4 };

list.Clear();

Console.WriteLine(list.Count);  // 输出:0

⑦Contains(value)

判断ArrayList中是否包含指定的元素

例:

ArrayList list = new ArrayList() { 1, 2, 3, 4 };

Console.WriteLine(list.Contains(3));  // 输出:True

Console.WriteLine(list.Contains(5));  // 输出:False

⑧IndexOf(value)

返回指定元素在ArrayList中第一次出现的位置,如果元素不存在则返回-1

例:

ArrayList list = new ArrayList() { 1, 2, 3, 4 };

Console.WriteLine(list.IndexOf(3));  // 输出:2

Console.WriteLine(list.IndexOf(5));  // 输出:-1

⑨Sort()

对ArrayList中的元素进行排序(默认升序)

例:

ArrayList list = new ArrayList() { 4, 2, 1, 3 };

list.Sort();

Console.WriteLine(string.Join(", ", list));  // 输出:1, 2, 3, 4

⑩Reverse()

将ArrayList中元素顺序反转

例:

ArrayList list = new ArrayList() { 1, 2, 3, 4 };

list.Reverse();

Console.WriteLine(string.Join(", ", list));  // 输出:4, 3, 2, 1

(3)总结

优点:动态大小,可以自动扩展,可以存储任意类型的数据

缺点:ArrayList性能较低,因为它是非泛型集合,在增删操作时都需要进行装箱和拆箱操作,所以目前一般推荐使用List<T>来替代ArrayList

2,Hashtable

Hashtable位于System.Collections命名空间下,它存储的是键值对(key-value)形式的数据,类似于字典,每个键(key)在Hashtable中必须是唯一的,而值(value)可以重复

Hashtable可以通过键来快速的查找对应的值,它实现了哈希表数据结构,提供了高效的查找,插入和删除操作

(1)创建Hashtable

例:

using System;using System.Collections;class Program
{static void Main(){// 创建一个空的 HashtableHashtable hashtable = new Hashtable();// 使用 Add 方法添加键值对hashtable.Add("name", "John");hashtable.Add("age", 30);hashtable.Add("country", "USA");// 通过索引器直接添加hashtable["city"] = "New York";// 输出内容Console.WriteLine("Name: " + hashtable["name"]);Console.WriteLine("Age: " + hashtable["age"]);Console.WriteLine("Country: " + hashtable["country"]);Console.WriteLine("City: " + hashtable["city"]);}}

输出

Name: John

Age: 30

Country: USA

City: New York

(2)常用方法

①Add()

添加键值对,如果键已存在,则会抛出异常

例:

Hashtable hashtable = new Hashtable();

hashtable.Add("name", "Alice");

hashtable.Add("age", 25);

②ContainsKey(value)

判断Hashtable中是否包含指定的键

例:

bool contains = hashtable.ContainsKey("name");

Console.WriteLine(contains);  // 输出:True

③containsValue(value)

判断Hashtable中是否包含指定的值

例:

bool containsValue = hashtable.ContainsValue(25);

Console.WriteLine(containsValue);  // 输出:True

④Remove(Key)

根据键删除指定的键值对,如果键不存在,则什么也不做

例:

hashtable.Remove("age");

Console.WriteLine(hashtable.ContainsKey("age"));  // 输出:False

⑤clear()

清空所有键值对

例:

hashtable.Clear();

Console.WriteLine(hashtable.Count);  // 输出:0

⑥keys属性

获取Hashtable中所有的键

例:

foreach (var key in hashtable.Keys)

{

    Console.WriteLine(key);  // 输出所有键

}

⑦values属性

获取所有的值

例:

foreach (var value in hashtable.Values)

{

    Console.WriteLine(value);  // 输出所有值

}

⑧索引器

使用索引器来访问指定键的值

例:

Console.WriteLine(hashtable["name"]);  // 输出:"Alice"

(3)总结

与ArrayList类似,性能较低,推荐使用泛型的Dictionary<Key,Value>来代替

二,泛型集合

泛型集合在定义集合时可以指定元素的类型,而不需要在代码中提前确定具体的类型

1,List<T>

List<T>位于System.Collections.Generic命名空间下,它表示一个动态数组,与 ArrayList类似,推荐使用List<T>

(1)创建List<T>的两种方式

①创建一个空的List
using System;using System.Collections.Generic;class Program{static void Main(){List<int> numbers = new List<int>();  // 创建一个空的 List<int>// 向 List 中添加元素numbers.Add(10);numbers.Add(20);numbers.Add(30);// 输出所有元素foreach (var number in numbers){Console.WriteLine(number);}}}
②使用初始化器创建List<T>

例:

using System;using System.Collections.Generic;class Program{static void Main(){List<int> numbers = new List<int> { 10, 20, 30 };  // 创建并初始化 List<int>// 输出所有元素foreach (var number in numbers){Console.WriteLine(number);}}}

(2)List常用方法

①Add(value)

向List中添加元素

例:

List<int> numbers = new List<int>();

numbers.Add(10);  // 向列表中添加数字 10

②Insert(index,value)

在指定索引处插入元素,其他元素后移

例:

numbers.Insert(1, 15);  // 在索引 1 处插入数字 15

③Remove(value)

移除List<T>中第一次出现的指定元素

例:

numbers.Remove(15);  // 移除值为 15 的元素

④RemoveAt(index)

移除指定索引位置的元素

例:

numbers.RemoveAt(0);  // 移除索引 0 处的元素

⑤clear()

移除List中的所有元素

例:

numbers.Clear();  // 清空列表

⑥contains(value)

检查List是否包含指定的元素

例:

bool contains = numbers.Contains(10);  // 检查是否包含值 10

Console.WriteLine(contains);  // 输出:True

⑦IndexOf(value)

返回指定元素的位置,如果不存在,返回-1

例:

int index = numbers.IndexOf(20);  // 返回值 20 的索引

Console.WriteLine(index);  // 输出:1

⑧Count

获取List中元素的数量

例:

int count = numbers.Count;  // 获取列表的元素数量

Console.WriteLine(count);  // 输出:2

⑨Sort()

对List中的元素排序

例:

numbers.Sort();  // 对数字列表进行排序

⑩Reverse()

对List中的元素进行反转

例:

numbers.Reverse();  // 反转列表中的元素

2,Dictionary<Key,Value>

Dictionary位于System.Collection.Generic命名空间下,与上面讲的Hashtable类似,也是一个基于键值对的集合,可以提供快速的查找,插入和删除操作(时间复杂度为O(1)),相比上面的Hashtable,推荐使用Dictionary。不过由于使用哈希表实现,字典的元素存储时是无序的,如果需要有序的字典,可以使用SortedDictionary<Key,Value>

(1)创建Dictionary的两种方式

①创建一个空的Dictionary
using System;using System.Collections.Generic;class Program{static void Main(){Dictionary<int, string> dict = new Dictionary<int, string>();  // 创建一个空字典// 向字典中添加元素dict.Add(1, "Apple");dict.Add(2, "Banana");dict.Add(3, "Cherry");// 输出所有键值对foreach (var kvp in dict){Console.WriteLine("Key: {kvp.Key}, Value: {kvp.Value}");}}}
②使用初始化器创建并初始化Dictionary
using System;using System.Collections.Generic;class Program
{static void Main(){Dictionary<int, string> dict = new Dictionary<int, string>{{ 1, "Apple" },{ 2, "Banana" },{ 3, "Cherry" }};// 输出所有键值对foreach (var kvp in dict){Console.WriteLine("Key: {kvp.Key}, Value: {kvp.Value}");}}}

(2)常用方法和属性

①Add(key,value)

向字典中添加一个新的键值对,如果键已经存在,则会抛出异常

例:

dict.Add(4, "Date");  // 向字典中添加新的键值对

②containskey(key)

判断字典中是否包含指定的键

例:

bool contains = dict.ContainsKey(2);  // 检查字典中是否包含键为 2 的项

Console.WriteLine(contains);  // 输出:True

③containsValue(value)

检查字典是否包含指定的值

例:

bool contains = dict.ContainsValue("Banana");  // 检查字典中是否包含值 "Banana"

Console.WriteLine(contains);  // 输出:True

④Remove(key)

根据给出的键移除字典中的键值对,如果键不存在,则返回false

例:

bool removed = dict.Remove(3);  // 移除键为 3 的项

Console.WriteLine(removed);  // 输出:True

⑤clear()

移除字典中的所有键值对

例:

dict.Clear();  // 清空字典

⑥Count

获取字典中键值对的数量

例:

int count = dict.Count;  // 获取字典中的元素个数

Console.WriteLine(count);  // 输出:2

⑦索引器

根据键来访问字典中对应的值,如果不存在,抛出异常

例:

string value = dict[1];  // 获取键为 1 的值

Console.WriteLine(value);  // 输出:Apple

(3)遍历字典

可以通过foreach循环遍历字典,前面使用的遍历不做说明

foreach (var kvp in dict)

{

    Console.WriteLine("Key: {kvp.Key}, Value: {kvp.Value}");

}

3,Queue<T>

也就是队列,原则是先进先出,位于System.Collections.Generic命名空间下,它的特点是先进先出

(1)创建队列

Queue<T> queue = new Queue<T>();

(2)常用方法和属性

①Enqueue(value):向队列的末尾添加一个元素

②Dequeue():从队列的开头移除并返回此元素,如果队列为空,报错

③Peek():返回队列的第一个元素,但不移除它,如果队列为空,报错

④Count:获取队列中当前元素的数量

⑤clear():移除队列的所有元素

⑥Contains(value):检查队列中是否包含指定的元素

⑦ToArray():将队列的元素复制到一个新的数组中

(3)遍历队列

在遍历时用foreach

例:

Queue<int> queue = new Queue<int>();

queue.Enqueue(1);

queue.Enqueue(2);

queue.Enqueue(3);

foreach (var item in queue)

{

    Console.WriteLine(item);  // 输出:1, 2, 3

}

4,Stack<T>

也就是栈,原理是后进后出,位于System.Collections.Generic命名空间下,常用于 函数调用栈,表达式求值等场景

(1)创建栈

Stack<T> stack = new Stack<T>();

(2)常用方法和属性

①Push(value):将元素压入栈顶

②Pop():移除并返回栈顶的元素,如果栈顶为空,报错

③Peek():返回栈顶元素,但不移除它,如果栈为空,报错

④Count:获取栈中当前元素的数量

⑤clear():移除栈中所有元素

⑥Contains(value):检查栈中是否包含指定的元素

⑦ToArray():将栈的元素复制到一个新数组中

(3)遍历栈

通过foreach遍历栈

例:

Stack<int> stack = new Stack<int>();

stack.Push(1);

stack.Push(2);

stack.Push(3);

foreach (var item in stack)

{

    Console.WriteLine(item);  // 输出:3, 2, 1

}

5,HashSet<T>

HashSet是一个基于哈希表的集合类,它存储不重复的元素,位于System.Collections.Generic命名空间下,常用于需要快速查找和去重的元素

HashSet中的元素的是唯一的,不能有重复的元素,如果尝试添加重复元素将会失败,同时HashSet中的元素没有特定的顺序,因此它不会像List一样可以按索引访问元素,不过由于哈希表的实现,HashSet提供了非常快的查找、添加和删除操作(时间复杂度通常为O(1))

(1)创建HashSet

HashSet<T> set = new HashSet<T>();

(2)常用方法

①Add(value):向集合中添加元素,如果元素已经存在,返回false,添加成功, 返回true

②Remove(value):从集合中删除指定的元素,如果元素不存在,返回false, 删除成功则返回true

③Contains(value):检查集合中是否包含指定的元素

④Count:获取集合中的元素的数量

⑤clear():移除集合中的所有元素

⑥UnionWith(HashSet other):用另一个集合中元素更新当前集合,形成并集, 集合中将包含两个集合中的所有元素,但不重复

例:

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };

HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

set1.UnionWith(set2);  // set1 变为 { 1, 2, 3, 4, 5 }

⑦IntersectWith(HashSet other):用另一个集合中的元素更新当前集合,形成交集

⑧ExceptWith(HashSet other):从当前集合中删除在另一个集合中存在的元素, 形成差集

例:

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };

HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

set1.ExceptWith(set2);  // set1 变为 { 1, 2 }

(3)遍历HashSet

HashSet<T>是无序集合,因此遍历时元素的顺序不可预测,可以使用foreach 循环遍历

例:

HashSet<int> set = new HashSet<int> { 1, 2, 3, 4, 5 };

foreach (var item in set)

{

    Console.WriteLine(item);  // 输出:1, 2, 3, 4, 5(顺序不可预测)

}

6,SortedList<key, value>

SortedList也是基于键值对的集合,在存储键值对时会自动按键排序,位于 System.Collections.Generic命名空间下

(1)SortedList的基本特性

①自动排序:根据键的顺序自动排序,可以是升序或自定义的排序方式(如果 提供了比较器)

②键唯一:每个键都是唯一的,不能重复

(2)常用方法和属性

①Add(key,value):向SortedList中添加键值对

②Remove(key):根据键删除指定的键值对

③ContainsKey(key):判断是否包含指定的键

④IndexOfKey(key):获取指定键的位置,如果键不存在,返回-1

⑤Count():获取SortedList中的元素数量

⑥clear():清空所有键值对

(3)遍历SortedList

通过foreach直接循环遍历

例:

SortedList<int, string> sortedList = new SortedList<int, string>

{

    { 3, "Three" },

    { 1, "One" },

    { 2, "Two" }

};

foreach (var kvp in sortedList)

{

    Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");

}

输出:

Key: 1, Value: One

Key: 2, Value: Two

Key: 3, Value: Three

三,总结

以上就是所有的集合类型,推荐使用泛型类型的集合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次网闸部署经历

1.在成功获取某大厂伟思网闸设备&#xff0c;并与客户就现有网络架构&#xff08;包括防火墙与交换机&#xff09;进行了详尽的沟通与评估后&#xff0c;我们团队精心构思并提出了一个创新的实施方案——采用透明网桥模式。这一模式以其独特的优势&#xff0c;即无需对客户现有…

SpringCloud(一)--SpringCloud简介

一. 引言 ​ 在微服务架构日益盛行的今天&#xff0c;Spring Cloud凭借其简单易用、功能强大的特性&#xff0c;成为了众多开发者的首选。本文仅为学习所用&#xff0c;联系侵删。 二. SpringCloud概述 2.1 定义 ​ Spring Cloud是一系列框架的有序集合&#xff0c;它巧妙地…

SQLALchemy如何将SQL语句编译为特定数据库方言

最近在一个使用fastapitortoise-orm的项目中&#xff0c;需要将orm的语句编译成特定数据库方言&#xff0c;但是查询了官方文档及一些资料却找不到合适的方法论&#x1f614;&#xff0c;于是乎我就把目光放到了sqlalchemy身上&#xff0c;东找西找给我找着了。话不多说&#x…

庐山派K230学习日记2 MicroPython基础

MicroPython文档&#xff1a; https://docs.micropython.org/ MicroPython是编程语言 Python3 的精简高效实现&#xff0c;语法和 Python3 保持一致&#xff0c;但只实现了 Python 标准库的一小部分&#xff0c;并且经过优化&#xff0c;适用于物联网 (IoT)、消费电子和嵌入式…

《计算机组成及汇编语言原理》阅读笔记:p177-p177

《计算机组成及汇编语言原理》学习第 13 天&#xff0c;p177-p177 总结&#xff0c;总计 1 页。 一、技术总结 1.real mode A programming model where the program has access to the entire capability of the machine, bypassing security and memory management. Useful…

2000-2020年各省财政一般预算支出面板数据

2000-2020年各省财政一般预算支出面板数据 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;年份、省份、地方财政一般预算支出 4、范围&#xff1a;31省 指标解释&#xff1a;地方财政一般预算支出‌是指地方ZF根据预算安排&#xff0…

python小项目:给复制出来的段落前添加星号

给复制出来的段落前添加星号 最终效果二、实现步骤2.1 编写python脚本2.2 批处理脚本2.3 运行脚本 三、用到知识3.1 pyperclip 模块 最终效果 说明&#xff1a;复制四段内容&#xff08;段落实际不做限制&#xff09;&#xff0c;在windows终端输入 bulletPointAdder&#xff0…

【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数

二分查找 搜索插入位置搜索二维矩阵在排序数组中查找元素的第一个和最后一个位置寻找旋转排序数组中的最小值搜索旋转排序数组寻找两个正序数组的中位数&#xff08;hard&#xff09; 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并…

24.Java 新特性扩展(重复注解、类型注解)

一、重复注解 1、基本介绍 自从 JDK 5 引入注解以来&#xff0c;注解的使用开始流行&#xff0c;在各个框架中被广泛使用 不过注解有一个很大的限制&#xff0c;在同一个地方不能多次使用同一个注解 JDK 8 引入了重复注解的概念 2、具体实现 &#xff08;1&#xff09;自…

后端java开发路由接口并部署服务器(四)

一、安装IntelliJ IDEA&#xff0c;安装包下载 1、官网下载 2、网盘资源 安装包下载完成后进行傻瓜式下一步安装就可以了 打开IntelliJ IDEA&#xff0c;输入网盘资源文件内容 三、汉化处理 插件搜索chinese&#xff0c;就会找到相应的插件安装重启软件即可 四、新建后端j…

Vue.js 表单验证实战:一个简单的登录页面

修改日期备注2025.1.2初版 一、前言 Vue.js 学习第一天——学会一个带有简单表单验证的登录页面。通过这个项目&#xff0c;会对 Vue.js 的核心概念有了更深入的理解&#xff0c;加深掌握如何运用 Vue 的一些强大特性来实现动态交互和数据处理。 二、项目的基本结构 首先&a…

MySQL 锁那些事

Q1 : MySQL有哪些锁,功能是什么,如何项目中使用?Q2 : 行锁是如何实现的?什么情况下会使用行锁?Q3 : 四种事务隔离形式的行锁有什么不一样?读未提交读提交可重复读串行 Q4 : MySQL 的读写都是怎样加锁的?Q5 : 需要注意什么? Q1 : MySQL有哪些锁,功能是什么,如何项目中使用…

国产文本编辑器EverEdit - 批量转码转换行符

1 批量转码&转换行符 1.1 应用场景 如果用户批量在Windows编辑文件&#xff0c;要上传到异构系统&#xff0c;如&#xff1a;Linux&#xff0c;则需要批量转换编码和换行符&#xff0c;此时可以使用EverEdit的批量转码功能。 1.2 使用方法 选择主菜单文档 -> 批量转码…

Java实现下载excel模板,并实现自定义下拉框

GetMapping("excel/download")ApiOperation(value "模板下载")public void getUserRecordTemplate(HttpServletResponse response, HttpServletRequest request) throws IOException {OutputStream outputStream response.getOutputStream();InputStream…

成立一家无人机培训机构需要哪些基础配置

成立一家无人机培训机构&#xff0c;需要一系列基础配置来确保教学质量、学员安全以及机构的正常运营。以下是根据公开发布的信息整理出的关键基础配置&#xff1a; 一、场地配置 1. 飞行场&#xff1a;提供一个安全、宽敞的室外飞行环境&#xff0c;面积最好大于三千平米&…

交换机性能详解

1. 背板带宽 只有模块化交换机&#xff08;拥有可扩展插槽&#xff0c;可灵活改变端口数量&#xff09;才有这个概念&#xff0c;固定端换机是没有这个概念的。并且固定端换机的背板容量和交换容量大小是相等的。 背板带宽是交换机的总数据处理能力&#xff0c;由硬件架构设…

读“将计算性能调高到极致的基点秘诀”的尝试

看到一篇文章&#xff0c;说最近阅读LAMMPS源码&#xff0c;悟出了很多道理。在计算性能优化这块&#xff0c;源代码作者很多写法我最初不以为意&#xff0c;后来发现是作者有意为之&#xff0c;就是为了把计算性能优化到极致。做计算仿真软件&#xff0c;也特别需要注意这些吧…

Gitea代码仓服务搭建

特点与优势 轻量级:Gitea是一个轻量级的Git服务,提供了快速、稳定的代码托管和协作开发环境。它资源占用低,适合在资源受限的环境中运行。易于安装和部署:Gitea提供了简单易用的安装和部署方式,支持多种安装方式,包括二进制文件、Docker容器等,并提供了详细的文档和配置…

leetcode hot 小偷

class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""# 使用动态规划&#xff0c;把之前的给保存起来ans[0,nums[-1]]for i in range(1,len(nums)):ans.append(max(ans[-1],ans[-2]nums[-1*i-1]))return ans[-1]…

端口被占用

端口8080被占用 哈哈哈&#xff0c;我是因为后端项目跑错了&#xff0c;两个项目后端名称太像了&#xff1b; &#xff08;1&#xff09;netstat -aon | findstr 8080&#xff0c;找到占用8080端口的进程号&#xff0c;获取对应的进程号pid&#xff1b; &#xff08;2&#…