首页 SEO技术 正文

.NET9 新性能引见 (.net9新功能)

SEO技术 2025-01-08 16

本文目录导航:

.NET9 新性能引见

9 是 8 的后续版本,特意器重云原生运行和性能优化,方案作为规范期支持(STS)版本取得 18 个月的支持。

下载 9 的链接如下。

在 GitHub Discussions 中,工程团队颁布了一系列 9 预览降级,供用户提问并提供对颁布反应的场合。

本文已降级至 9 预览版 1。

以下内容聚焦于 9 中外围 库的降级。

1、 相关优化在 9 中, 引入了新的选项,简化了 JSON 的序列化环节。

用户如今可以更容易地经常使用 Web 自动值启动序列化,并能自定义写入 JSON 时的缩进字符和大小。

同时, 9 提供了一个新的单例 ,专为 Web 运行程序设计,可间接经常使用 Core 的自动性能启动序列化。

2、LINQ 新增 CountBy 和 AggregateBy 方法这些方法在 LINQ 中增强了键聚合的性能,无需经过 GroupBy 函数启动两边分组。

CountBy 方法准许极速计算每个键的产生频率。

例如,用户可以经常使用它来找出文本字符串中频率最高的单词。

而 AggregateBy 办规律提供了一种更为通用的聚合模式,用户可成功自己的逻辑,计算与给定键关联的分数。

3、Foreach 支持 Index系统汇合 的 Index 方法为 IEnumerable 接口增加了索引支持,使得用户可以极速提取可枚举项的隐式索引。

这象征着用户如今可以编写相似以下代码片段,智能对汇合中的名目启动索引。

4、优先队列的新性能在 9 中,系统汇合 的 PriorityQueue 汇合类型新增了 Remove(TElement, TElement, TPriority, IEqualityComparer) 方法,准许用户降级队列中名目标优先级。

同时,PriorityQueue 类型也提供了 6 引入的便捷极速数组堆成功。

虽然数组堆不支持优先级降级,但新的 Remove 方法为用户提供了在不影响渐进性能的状况下成功图算法(如教育和原型设计)所需的灵敏性。

5、明码学相关性能 9 在 CryptographicOperations 类中新增了一次性性哈希方法,优化了明码学性能。

此外,还引入了经常使用 KMAC 算法的新类。

方法是 中蕴含的几个静态“一次性性”哈希函数和相关函数的成功之一,优先经常使用以提供最佳性能和缩小或消弭调配。

为了给开发者提供更灵敏的哈希 API, 9 引入了 API,准许依据 HashAlgorithmName 自定义哈希算法。

这处置了传统 API 在经常使用不同哈希算法时切换的不便,为开发者提供了更多便利。

.NET9 新性能引见 (.net9新功能)

优先队列(PriorityQueue)

在数据结构中,普通的队列是先进先出,但有时咱们或者并不想有这么固定的规矩,咱们宿愿能有一个带优先级的队列。

思考在事实生存中,一些服务排队窗口会写着“军人依法优先”;送进医院的患者,即使是按顺序抵达的,生病愈加重大的往往优先级也会更高;还有操作系统中的作业调度也和优先级无关...... 于是咱们能不能改良队列?使得队列是有必定优先级的,这样能让一些事物和义务的处置变的愈加灵敏。

当然是可以的,最基本的咱们可以基于线性结构来成功,思考基于线性结构的期间复杂度: 1、队列是一种FIFO(First-In-First-Out)先进先出的数据结构,对应于生存中的排队的场景,排在前面的人总是先经过,依次启动。

2、优先队列是不凡的队列,从“优先”一词,可看出有“插队现象”。

比如在火车站排队进站时,就会有些比拟急的人来插队,他们就在前面先经过验票。

优先队列至少含有两种操作的数据结构:insert(拔出),行将元素拔出到优先队列中(入队);以及deleteMin(删除最小者),它的作用是找出、删除优先队列中的最小的元素(出队)。

结构\操作 入队出队 普通线性结构O(1)O(n) 顺序线性结构O(n)O(1) 普通线性结构成功的优先队列出队期间复杂度是O(n),由于出队要拿出最优先的元素,也就是相对最大的元素(留意:大小是相对的,咱们可以指定比拟规定),从而要扫描一遍整个数组选出最大的取出才行。

而关于顺序线性结构的入队操作,入队后或者破坏了原来的有序性,从而要调整以后顺序。

可以看到经常使用线性结构总有期间复杂度是O(n)的操作,还有没有更好的成功模式呢,当然是有的,这就要来聊一聊堆Heap。

堆严厉意义过去说又叫二叉堆(Binary Heap),由于它的结构是一颗齐全二叉树,堆普通分为最大堆和最小堆。

堆性质: 结构性:堆是一颗除底层外被齐全填满的二叉树,底层的节点从左到右填入,这样的树叫做齐全二叉树。

即缺失结点的局部必定再树的右下侧。

堆序性:由于咱们想很快找出最小元,则最小元应该在根上,恣意节点都小于它的后裔,这就是小顶堆(Min-Heap);假设是查找最大元,则最大元应该在根上,恣意节点都要大于它的后裔,这就是大顶堆(Max-heap)。

最大堆:父亲节点的值大于孩子节点的值 最小堆:父亲节点的值小于孩子节点的值 由于是齐全二叉树,节点的索引之间有着必定的相关,故咱们可以经常使用数组来存储二叉堆,详细如下: 假设从索引为0开局存储,则父亲和孩子节点的索引相关如下: 当咱们须要向一个最大堆增加一条新的数据时,此时咱们的堆变成了这样。

此时,由于新数据的参与曾经不合乎最大堆的定义了。

所以咱们须要对新参与的数据启动shift up操作,将它放到它应该在的位置。

shift up操作时咱们将新参与的数据与它的父节点启动比拟。

假设比它的父节点大,则交流二者。

此时咱们就成功了 对新参与元素的shift up操作。

当咱们从堆中(也就是优先队列中)取出一个元素时。

咱们是将堆顶的元素弹出。

(只能从堆顶取出) 此时这个堆没有顶了,那么该怎样办呢?咱们只有要把这个堆最后一个元素放到堆顶就可以了。

此时咱们就成功了弹出一个元素之后的shift down操作。

replace:去除最大元素后,放入一个新元素 成功:可以先extractMax,再add,两次longn操作。

成功:将堆顶的元素交流以后sift down,一次性O(logn)操作 将n个元素一一拔出到一个空堆中,算法复杂度是O(nlogn),heapify的环节,算法的复杂度为O(n). heapify:将恣意数组整顿成堆的状态。

首先将一个数组形象成一个堆。

这个环节,咱们称之为heapify。

之后咱们找到这个堆中第一个非叶子节点,这个节点的位置一直是数组的数量除以2,也就是索引5位置的27,从这个节点开局,对每一个非叶子的节点,,启动shift down操作。

27比它的子节点51要小,所以交流二者。

接上去咱们看索引2位置的20。

首先呢,咱们须要将20与它两个子节点中较大的51交流。

每个节点堆化的期间复杂度是O(logn),那个节点的堆化的总期间复杂度是O(nlogn)。

推导环节 堆化节点从倒数第二层开局。

堆化环节中,须要比拟和交流的节点个数与这个节点的高度k成正比。

所以 heapify() 期间复杂度是 O(n). 建堆后,数组中的数据是大顶堆。

把堆顶元素,即最大元素,跟最后一个元素交流,那最大元素就放到了下标为n的位置。

这个环节有点相似下面的“删除堆顶元素”的操作,当堆顶元素移除之后,把下标n的元素放堆顶,而后再经过堆化的方法,将剩下的n-1个元素从新构建成堆。

不时重复这个环节,直到最后堆中只剩下下标为1的元素,排序就成功了。

topk和selectk疑问既可以经常使用快排思维处置,也可以经常使用优先队列处置。

快排:O(n) 空间O(1) 优先队列:O(nlogk) 空间O(k) 优先队列的有i是,不须要一次性性知道一切数据,数据流的模式处置。

名目中有哪些汇合类型

在名目中,罕用的汇合类型有以下几种:1. 数组(Array):有序的元素汇合,可以经过索引访问和修正元素。

2. 列表(List):有序的元素汇合,可以灵活增加、删除和修正元素。

3. 汇合(Set):无序的元素汇合,不准许重复元素。

4. 字典(Dictionary):键值对的汇合,可以经过键访问和修正对应的值。

5. 堆(Heap):一种不凡的优先队列,可以高效地拔出和删除元素,并依据必定规定失掉具备最高(或最低)优先级的元素。

6. 栈(Stack):一种后进先出(LIFO)的数据结构,只准许在栈的顶部启动拔出和删除操作。

7. 队列(Queue):一种先进先出(FIFO)的数据结构,只准许在队列的尾部启动拔出操作,在头部启动删除操作。

8. 链表(Linked List):一种经过指针衔接元素的数据结构,可以高效地启动拔出、删除和查找操作。

9. 树(Tree):一种档次结构的数据结构,可以用来示意具备父子相关的元素汇合。

10. 图(Graph):一种由节点和边导致的数据结构,用来示意元素之间的关联相关。

这些汇合类型在名目开发中都有各自的运行场景,开发人员可以依据详细需求选用适合的类型来存储和操作数据。

sql提升罕用的15种方法 (提高sql)
« 上一篇 2025-01-08
中文版 用html help 如何制做索引 workshop (中文版用你真心换我号码)
下一篇 » 2025-01-08

文章评论