理解C#里面的聚集有哪些?怎么用,什么是安全聚集?
![在这里插入图片形貌](https://img-blog.csdnimg.cn/direct/723663ad941e48408bba3f500f672c6e.png)
先容
在C#中,聚集是一种用于存储和操纵多个元素的数据结构。它们提供了各种操纵,如添加、删除、查找等,以及遍历聚集中的元素。聚集通常根据实在现方式和行为特性进行分类。
聚集继承IEnumerable
在C#中,几乎所有的聚集类型都实现了IEnumerable接口或其泛型版本IEnumerable<T>,以支持迭代和枚举聚集中的元素。这意味着它们都具有GetEnumerator()方法,该方法返回一个实现了IEnumerator接口或IEnumerator<T>接口的对象,用于遍历聚集中的元素。
但是,并非所有聚集都直接继承自IEnumerable接口。例如,LinkedList<T>继承自System.Collections.Generic.LinkedList<T>,而LinkedList<T>实现了IEnumerable<T>接口,但并未直接继承自IEnumerable。不过,由于IEnumerable<T>继承自IEnumerable,因此LinkedList<T>也间接地支持IEnumerable。
总的来说,虽然不是所有聚集都直接继承自IEnumerable,但它们通常都实现了IEnumerable接口或其泛型版本,以支持在foreach循环中迭代聚集中的元素。
在C#中,聚集类型有很多种,每种都有其特定的使用环境和适用场景。
数组 (Array):
用于存储固定大小的同类型元素。
适用于须要快速随机访问元素的环境。
int[] numbers = new int { 1, 2, 3, 4, 5 };
列表 (List):
用于存储可变大小的同类型元素序列。
适用于须要频繁添加或删除元素的场景。
List<string> names = new List<string>();
names.Add("Alice");
names.Add("Bob");
队列 (Queue):
用于实现先辈先出(FIFO)的数据结构。
适用于任务调理、消息传递等场景。
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
栈 (Stack):
用于实现后进先出(LIFO)的数据结构。
适用于表达式求值、深度优先搜索等场景。
Stack<string> stack = new Stack<string>();
stack.Push("A");
stack.Push("B");
字典 (Dictionary):
用于存储键值对聚集。
适用于须要快速通过键查找值的环境。
Dictionary<string, int> ages = new Dictionary<string, int>();
ages.Add("Alice", 30);
ages.Add("Bob", 35);
聚集 (Set):
用于存储独一无二的元素。
适用于须要去重或聚集运算的场景。
HashSet<int> set = new HashSet<int>();
set.Add(1);
set.Add(2);
链表 (LinkedList):
用于存储元素以节点情势构造的数据结构。
适用于频繁的插入和删除操纵,但不适用于随机访问。
LinkedList<string> linkedList = new LinkedList<string>();
linkedList.AddLast("A");
linkedList.AddLast("B");
排序列表 (SortedList):
用于存储已排序的键值对聚集。
适用于须要快速查找和有序遍历的场景。
SortedList<int, string> sortedList = new SortedList<int, string>();
sortedList.Add(3, "C");
sortedList.Add(1, "A");
有序字典 (SortedDictionary):
用于存储已排序的键值对聚集。
适用于须要有序键值对聚集的场景。
SortedDictionary<int, string> sortedDictionary = new SortedDictionary<int, string>();
sortedDictionary.Add(3, "C");
sortedDictionary.Add(1, "A");
可观察聚集 (ObservableCollection):
用于实现数据绑定和通知变化的动态聚集。
适用于须要与界面交互并实时更新的场景。
ObservableCollection<string> observableCollection = new ObservableCollection<string>();
observableCollection.Add("Item 1");
键控聚集 (KeyedCollection):
用于存储具有唯一键的元素聚集。
适用于须要通过键进行查找和检索的场景。
public class PersonCollection : KeyedCollection<string, Person>
{
protected override string GetKeyForItem(Person item) => item.Name;
}
树形聚集 (Tree):
用于存储具有层级结构的数据。
适用于表现构造结构、文件系统等场景。
// 示例:自定义树形结构
public class TreeNode<T>
{
public T Data { get; set; }
public List<TreeNode<T>> Children { get; set; } = new List<TreeNode<T>>();
}
线程安全的聚集
在多线程环境中,为了确保线程安全,可以使用以下线程安全的聚集:
[*]ConcurrentBag<T>:用于在并行操纵中存储对象的无序聚集。
[*]ConcurrentDictionary<TKey, TValue>:用于在多线程环境中存储键/值对的字典。
[*]ConcurrentQueue<T>:用于在多线程环境中实现先辈先出(FIFO)的队列。
[*]ConcurrentStack<T>:用于在多线程环境中实现后进先出(LIFO)的栈。
[*]BlockingCollection<T>:提供了一个线程安全的聚集,用于在生产者-消费者模式中使用。
这些线程安全的聚集类型能够在多线程环境中保证数据的一致性和完整性,制止出现竞态条件和死锁等问题。
题外话
初入盘算机行业的人大概大学盘算机相关专业结业生,很多因缺少实战履历,就业到处碰壁。下面我们来看两组数据:
2023届全国高校结业生预计达到1158万人,就业形势严峻;
国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。
一方面是每年应届结业生就业形势严峻,一方面是网络安全人才百万缺口。
6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。
2022届大学结业生月收入较高的前10个专业
本科盘算机类、高职自动化类专业月收入较高。2022届本科盘算机类、高职自动化类专业月收入分别为6863元、5339元。此中,本科盘算机类专业起薪与2021届基本持平,高职自动化类月收入增长显着,2022届反超铁道运输类专业(5295元)排在第一位。
具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技能、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技能虽是近年新增专业但表现亮眼,已跻身2022届本科结业生结业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。
https://img-blog.csdnimg.cn/img_convert/4dc95ac415cf3b1976127c0a9b9e2d84.jpeg
“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关告急的因素之一。
网络安全行业特点
1、就业薪资非常高,涨薪快 2022年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!
https://img-blog.csdnimg.cn/img_convert/d5f06d6b9945fd6e8a5f92a0198e5446.png
2、人才缺口大,就业机会多
2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年造就的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,如今从事网络安全行业的从业人员只有10W人。
https://img-blog.csdnimg.cn/img_convert/9cf857398f52a97ff49d437ac5fe690a.png
行业发展空间大,岗位非常多
网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、排泄工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产物经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、劫难规复专业人员、实战攻防专业人员…
职业增值潜力大
网络安全专业具有很强的技能特性,尤其是掌握工作中的核心网络架构、安全技能,在职业发展上具有不可替换的竞争上风。
随着个人能力的不断提升,所从事工作的职业价值也会随着自身履历的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。
从某种程度来讲,在网络安全范畴,跟医生职业一样,越老越吃香,因为技能愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
行业发展空间大,岗位非常多
网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、排泄工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产物经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、劫难规复专业人员、实战攻防专业人员…
职业增值潜力大
网络安全专业具有很强的技能特性,尤其是掌握工作中的核心网络架构、安全技能,在职业发展上具有不可替换的竞争上风。
随着个人能力的不断提升,所从事工作的职业价值也会随着自身履历的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。
从某种程度来讲,在网络安全范畴,跟医生职业一样,越老越吃香,因为技能愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5CAdministrator%5CDesktop%5C%E7%BD%91%E5%AE%89%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%5C%E4%BA%AB%E5%AD%A6%E9%A6%96%E5%88%9B%E5%B9%B4%E8%96%AA40W%2B%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%B7%A5%E7%A8%8B%E5%B8%88%20%E9%9D%92%E9%93%9C%E5%88%B0%E7%8E%8B%E8%80%85%E6%8A%80%E6%9C%AF%E6%88%90%E9%95%BF%E8%B7%AF%E7%BA%BFV4.0.png&pos_id=img-Th8b5nwM-1716784294141
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,假如你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、排泄测试基础、漏洞详解、盘算机基础知识等,都是网络安全入门必知必会的学习内容。
3.技能文档和电子书
技能文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的履历和技能要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
4.工具包、口试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络垂纶等,感兴趣的同学不容错过。
另有我视频里讲的案例源码和对应的工具包,须要的话也可以拿走。
这些题目都是大家在口试深信服、奇安信、腾讯大概其它大厂口试时经常碰到的,假如大家有好的题目大概好的看法欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清楚,含图像化表现更加易懂。
内容概要:包括 内网、操纵系统、协议、排泄测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
https://img-blog.csdnimg.cn/img_convert/da1274937756ef025cecc0439519a3d4.png
因篇幅有限,仅展示部分资料,须要点击下方链接即可前往获取
假如你对网络安全入门感兴趣,那么你须要的话可以点击这里
页:
[1]