数据结构练习-算法与时间复杂度

----------------------------------------------------------------------------------------------------------------------------- 

        1. 设n是描述问题规模的非负整数,下列程序段的时间复杂度是( )。

    x=0;

    while(n>=(x+1)*(x+1)

    x=x+1;

        A.O(logn) B.O(n^(1/2)) C.O(n) D.O(n²)

        解析:

        分析选项

  • A. O(log n):这通常描述的是算法中有对数增长的特性,例如二分查找。在我们的例子中,x 的增长并非基于对数规模。

  • B. O(n^(1/2)):根据上面的分析,这个选项看起来合适,因为 x 的增长与 �n​ 成正比,即每次循环 x 增加1,直到接近 �n​。

  • C. O(n):这表示算法的执行次数与输入大小 n 成正比。对于我们的代码片段,x 的增长速率明显低于这一级别。

  • D. O(a^2):这个选项似乎是个打字错误或格式错误。它不符合常见的复杂度标记,也不适用于当前的分析。

        

----------------------------------------------------------------------------------------------------------------------------- 

        2. 下面的说法中,错误的是(  )。

        ① 算法原地工作的含义是指不需要任何额外的辅助空间。

        ② 在相同规模n下,复杂度为0(n)的算法在时间上总是优于复杂度为0(n²)的算法。

        ③ 所谓时间复杂度,是指最坏情况下估算算法执行时间的一个上界。

        ④ 同一个算法,实现语言的级别越低,执行效率越低。

        A.①        B.①②        C.①④         D.

        解析:

        ① 算法原地工作的含义是指不需要任何额外的辅助空间。

  • 这个说法是错误的。"原地工作"(in-place)一词通常指算法只需使用常数量的额外空间进行其操作。因此,若算法执行时所需要的辅助空间相对于输入数据量而言是一个常数,则称这个算法为原地工作,辅助空间为0(1)。不是指不需要任何额外的空间。原地算法允许少量的额外空间来进行索引或交换等操作。因此,说原地算法不需要任何额外空间是过于绝对。

        ② 在相同规模n下,复杂度为O(n)的算法在时间上总是优于复杂度为O(n²)的算法。

  • 这个说法通常是正确的,尤其是当我们讨论大规模输入n时。O(n)的复杂度意味着算法的执行时间与输入大小成线性关系,而O(n²)的复杂度表示执行时间与输入大小的平方成正比。虽然在某些特定小规模的情况或者特定的常数因素影响下,O(n)的算法可能在性能上不如某个具体实现的O(n²)算法,但在大多数情况和理论分析中,O(n)确实总体上优于O(n²)。

        ③ 所谓时间复杂度,是指最坏情况下估算算法执行时间的一个上界。

  • 这个说法本质上是正确的。时间复杂度确实常用于描述算法在最坏情况下的性能。它是一个理论度量,用于估计算法在最不利情况下的时间上界。虽然时间复杂度也可以用来描述平均情况或最好情况,但在算法分析中,最坏情况复杂度是最常用和最重要的度量标准。

        ④ 同一个算法,实现语言的级别越低,执行效率越低。

  • 这个说法是错误的。低级语言(如C或汇编)通常提供更高的执行效率,因为它们提供更直接的系统硬件控制和更少的抽象层次。相反,高级语言(如Python或Java)虽然提高了开发效率和易用性,但可能牺牲了一些执行效率,因为它们加入了额外的抽象和管理层(如垃圾回收)。因此,低级语言在执行效率方面通常优于高级语言。

        综合以上分析,选项①和④中的说法是错误的。因此,正确答案是 C. ①④。这些解析有助于清晰地理解数据结构和算法分析中的一些基础概念,尤其是对初学者来说。

        笔记:

  1. 原地算法(In-place):

    • 通常只需要固定的、常数量的额外空间。
  2. 时间复杂度O(n) vs O(n²):

    • O(n) 在大多数情况下性能优于 O(n²),尤其是对于大规模数据。
  3. 时间复杂度的含义:

    • 通常描述算法最坏情况下的性能上界。
  4. 语言级别与执行效率:

    • 低级语言(如C、汇编)通常执行效率更高,因为它们提供直接的硬件控制。

----------------------------------------------------------------------------------------------------------------------------- 

        3.算法的时间复杂度取决于(  )。

        A.内存的大小               B.处理器的速度

        C. 问题的规模和待处理数据的状态    D.程序所占空间

        解析:

        时间复杂度是一个用来评估算法运行效率和速度的度量,它描述了算法执行所需时间随输入数据量增加的增长率。

        A. 内存的大小

  • 虽然内存大小可以影响程序的运行,尤其是在处理大数据集时,不足的内存可能导致性能下降(例如频繁的磁盘交换操作)。然而,内存的大小并不直接决定算法的时间复杂度。时间复杂度是从理论上评估算法效率的一个抽象度量,主要关注算法执行步骤的增长趋势,而不是实际的硬件资源。

        B. 处理器的速度

  • 处理器速度会影响算法的实际执行时间,即算法在特定机器上的性能。但是,时间复杂度是一个与机器无关的度量,它旨在提供一种独立于任何特定硬件或软件环境的方法来评估和比较算法的效率。因此,虽然处理器速度对算法执行时间有实际影响,它不决定算法的时间复杂度。

        C. 问题的规模和待处理数据的状态

  • 这是决定时间复杂度的关键因素。问题的规模通常是指输入数据的数量,而数据的状态(例如排序状态)可以显著影响某些算法的性能。例如,对于快速排序算法,已经部分排序的数据会影响其性能。时间复杂度通常描述最好、平均和最坏情况,这些都直接与问题的规模和数据状态相关。这是评估算法在理论上的运行时间时考虑的主要因素。

        D. 程序所占空间

  • 程序占用的空间或空间复杂度与时间复杂度是两个不同的概念。空间复杂度关注算法对存储空间的需求如何随输入大小变化,而时间复杂度关注的是执行时间的增长。虽然这两者在某些情况下可能相关(例如,使用额外空间可以降低时间复杂度),但程序所占的空间本身并不直接决定时间复杂度。

        根据上述详细解析,正确选项是 C. 问题的规模和待处理数据的状态。这个选项正确地指出了时间复杂度与算法处理的数据量及其特定状态的关系,这些因素是时间复杂度分析中最核心的部分。理解这一点对于学习和应用计算机科学中的算法至关重要。

        笔记:

  • 时间复杂度是理论上评估算法效率的度量,独立于具体的硬件性能如内存大小和处理器速度。
  • 它反映了算法执行时间随输入数据量增加的增长趋势,主要由问题规模和数据状态决定。

----------------------------------------------------------------------------------------------------------------------------- 

        4. 在存储数据时,通常不仅要存储各数据元素的值,而且还要存储(  )。

        A.数据的处理方法  B. 数据元素的类型  C.数据元素间的关系  D.数据的存储方法

        解析:

        A. 数据的处理方法

  • 此选项指的是如何处理数据的方法或算法。虽然了解数据的处理方法对于应用程序是重要的,但这些方法通常不直接存储在数据结构中,而是作为程序代码的一部分来实现。因此,这个选项并不是描述数据存储时通常要存储的内容。

        B. 数据元素的类型

  • 知道每个数据元素的类型是重要的,因为不同类型的数据(如整数、浮点数、字符串等)在内存中的存储方式和占用空间可能不同。然而,数据类型的知识通常是在程序的类型系统中定义的,而不是作为数据存储的一部分。在一些动态类型语言中,类型信息可能与数据一起存储,但这不是最普遍的需求。

        C. 数据元素间的关系

  • 在许多数据结构中,数据元素之间的关系是关键的部分,尤其是在如链表、树、图等结构中。存储这些关系(例如,指向其他元素的指针或引用)确保了数据结构的完整性和功能性。例如,在链表中,每个节点不仅存储其数据值,还存储指向下一个节点的链接。因此,这个选项非常符合数据存储的典型需求。

        C. 数据元素间的关系

  • 数据的存储方法(如使用数组、链表、树等结构)确实决定了如何组织和访问数据。然而,存储方法本身通常是数据结构设计的一部分,而不是存储在每个数据元素或数据集合中的信息。数据结构的选择影响了性能和功能,但它更多是一种实现细节,不同于数据元素间的直接关系。

        在上述选项中,C. 数据元素间的关系 是描述数据存储时最常需要额外存储的内容的最准确选项。这种关系是数据结构功能的核心,对于维护数据的逻辑和物理结构至关重要。存储这些关系确保了数据可以按预期方式有效地被访问和管理。因此,对于刚接触数据结构的学习者来说,理解如何存储数据元素间的关系是非常重要的,因为它直接影响到数据的使用和操作

        笔记:

  1. 数据元素间的关系:
    • 在数据结构中,除了存储每个元素的值,通常还需要存储元素之间的关系。
    • 这些关系可能通过指针、引用或索引来实现,特别是在链表、树、图等结构中。
    • 存储关系对于维持数据结构的整体功能和组织至关重要。

----------------------------------------------------------------------------------------------------------------------------- 

        5. 某算法的基本语句执行频度为(3n+nlog₂n+2n²+10),则该算法的时间复杂度为( )。

        A.O(n) B.O(nlog₂n) C.O(n²) D.O(log₂n)

        解析:

        若f(n)是一个多项式,则T(n)是取最高级别的那一项,可以忽略系数和低级别的项。在表达式 3n+nlog₂n+2n²+10中,最大,取即可。这里要注意n*log₂n<n², 所以答案选C

        笔记:

----------------------------------------------------------------------------------------------------------------------------- 

        6. 下列函数的时间复杂度是(  )。                                     

    int fun (int n)[

    int i=0,sum=0;

    while(sum<n)
        sum +=++i;

    return i;

    )

        A.O(logn)             B.O(n^(1/2)            C.O(n)                               D.O(nlogn)

        解析:

        根据上述详细分析,正确答案是 B. O(n^(1/2))。这表示函数的时间复杂度与 �n 的平方根成正比,反映了循环次数随 n 的增大而增大的速率。理解这一点对于初学者来说是理解算法效率如何与操作步骤之间关系的一个重要案例。

----------------------------------------------------------------------------------------------------------------------------- 

        7. 下列程序段的时间复杂度是(  )。                                

count=0;

for(k=1;k<=n;k*=2)

for(j=1;j<=n:j++)

count++;

        A    O(log2n)                      B.O(n)                       C.O(nlogn)                    D.O(n)

        解析:

        分析外循环

        外循环的控制变量 k 从 1 开始,每次迭代后乘以 2 (k *= 2)。这意味着 k 的值会以 1, 2, 4, 8, 16, ... 这样的指数方式增长,直到超过 n。我们可以计算这个循环的迭代次数是对数次:

  • 第一次循环时,k = 1
  • 第二次循环时,k = 2
  • 第三次循环时,k = 4
  • ...
  • 直到 k 超过 n

        循环的结束条件是 k > n,这会发生在第 m 次循环,其中 2^m > n。解这个等式,我们得到 m ≈ log₂n。因此,外循环的时间复杂度为 O(log₂n)

        分析内循环

        内循环的控制变量 j 从 1 开始,每次迭代增加 1,直到达到或超过 n。这意味着无论外循环的具体状态如何,内循环都将执行 n 次。因此,内循环的时间复杂度为 O(n)

        计算总时间复杂度

        由于这是一个双层嵌套循环,外循环的每一次迭代都会导致内循环执行 n 次,我们需要将外循环的迭代次数乘以内循环的迭代次数来得到总的执行次数。因此,总时间复杂度是外循环和内循环复杂度的乘积:

  • 外循环的复杂度:O(log₂n)
  • 内循环的复杂度:O(n)

        将这两者相乘,我们得到总的时间复杂度为 O(nlog₂n)

----------------------------------------------------------------------------------------------------------------------------- 

        8. 已加两个长度分别为m n的升序链表,若将它们合并为 一个长度为m+n  的降序链表,则最坏情况下的时间复杂度是(   ),                                                        

        A.O(n)                 B.O(mn)                           C.O(min(m,n))                     D.O(max(m,n))

        解析:

        假设我们有两个链表:

  • 第一个链表的长度为 m
  • 第二个链表的长度为 n

        目标是将这两个链表合并成一个长度为 m+n 的降序链表。合并两个已排序的链表的基本策略通常是使用一个双指针技术,一个指针在每个链表上追踪当前位置,然后逐个比较指针指向的元素,并按排序顺序添加到新链表中。

        最坏情况下的时间复杂度

        在最坏情况下,每个元素可能都需要与另一个链表中的元素进行比较才能确定其正确位置。具体到本问题,我们需要保证链表是降序的,这意味着比较和合并操作可能涉及频繁的指针移动和元素比较。以下是对各选项的详细评估:

        A. O(n)

        这意味着合并操作的时间复杂度只与其中一个链表的长度 n 成正比,忽略了另一个链表的长度 m。这种情况只有在另一个链表完全空时才成立,因此不适用于一般情况。

        B. O(mn)

        这表明时间复杂度与两个链表长度的乘积成正比,暗示在最坏情况下,每个来自一个链表的元素都可能需要与另一个链表的所有元素比较。这对于合并两个链表来说过于悲观,实际上合并过程的时间复杂度不需要达到这个级别。

        C. O(min(m,n))

        这意味着时间复杂度只与较短链表的长度有关,这显然不准确,因为在合并两个链表时通常需要考虑两者的所有元素。

        D. O(max(m,n))

        这个选项表示时间复杂度与较长的链表长度成正比,这在直觉上更符合合并两个链表的过程。无论哪个链表更长,我们总是需要遍历两个链表的所有元素来完成合并。因此,这种情况下的时间复杂度应该与两个链表的总长度 m+n 相关,而 O(max(m,n)) 是一个有效的简化表示。

        正确的答案是 D. O(max(m,n)),因为在合并两个链表的过程中,无论哪个链表较长,都需要考虑所有元素以确保正确的排序。这个复杂度级别正确地反映了在两个链表中进行元素比较和链接操作的需要。

        

----------------------------------------------------------------------------------------------------------------------------- 

9.   n(n>0);  的阶乘的算法如下 .其时间复杂度是(   )                    

int fact(int n) {
    if (n <= 1)
        return 1;
    return n * fact(n - 1);
}

A.O(log₂n)                          B.O(n)                                   C.O(nlog₂n)                      D.O(n)

        解析:

        递归结构

  • 基本情况:当 n 小于或等于 1 时,函数直接返回 1。这是递归的停止条件。
  • 递归步骤:如果 n 大于 1,函数通过返回 n * fact(n - 1) 来计算阶乘,其中 fact(n - 1) 是对自身的递归调用。

        时间复杂度分析

  • 每次调用 fact 函数都会导致另一个 fact 函数的调用,直到 n 达到 1。
  • 对于每个 n,函数只进行一次递归调用,每次调用减少 n 的值(n - 1)。
  • 这意味着从 n 到 1,将会有 n 次函数调用。

        循环或递归次数

        每次递归调用都对应一个整数 n,直到 n 递减到 1。因此,总的调用次数等于 n

        计算每次调用的复杂度

  • 在每次递归调用中,操作数(这里是乘法操作)固定为一次。
  • 因此,每次递归的时间复杂度是 O(1)。

        总的时间复杂度

  • 由于递归函数从 n 调用到 1,总的时间复杂度是每次调用的时间复杂度乘以调用次数。
  • 既然每次调用的复杂度是 O(1),总的调用次数是 n,则整个函数的时间复杂度是 n * O(1) = O(n)

        选项分析

  • A. O(log₂n):通常与分治算法中每次将问题规模减半的情况相关,这里不适用。
  • B. O(n):正确,反映了递归每次减少问题规模的步骤数,每步执行一次乘法。
  • C. O(nlog₂n):通常与某些排序或搜索算法相关,每次操作涉及对数运算,这里不适用。
  • D. O(n²):表示算法时间复杂度与输入规模的平方成正比,这里不适用。

        正确答案是 B. O(n)。这种分析方法帮助初学者理解递归函数的时间复杂度是如何根据调用次数和每次调用的复杂度计算的。对于这种简单递归算法,每层递归都做相似的工作量,且调用次数直接与输入大小 n 相关。

----------------------------------------------------------------------------------------------------------------------------- 

        10. 下列程序段的时间复杂度是(   )                                      

int sum = 0;
for (int i = 1; i < n; i *= 2)      // 外层循环
    for (int j = 0; j < i; j++)     // 内层循环
        sum++;

        A.O(logn)                    B.O(n)                             C.O(nlogn)                           D.O(n²)

        解析:

-----------------------------------------------------------------------------------------------------------------------------

 

        11. 下列程序段的时间复杂度是(   )                                 

x = 0;
for (i = 0; i < n; i++)        // 外层循环
    for (j = i; j < n; j++)    // 内层循环
        x++;

        A.O(log₂n)                    B.O(n)                       C.O(nlog₂n)                   D.O(n²)

        解析:

        外层循环    

        外层循环的控制变量 i 从 0 开始,增加到 n-1。因此,外层循环总共执行 n 次。

        内层循环

        内层循环的控制变量 ji 开始,增加到 n-1。这意味着当 i 的值为 0 时,内层循环执行 n 次;当 i 为 1 时,执行 n-1 次;以此类推,直到 in-1 时,内层循环执行 1 次。

----------------------------------------------------------------------------------------------------------------------------- 

        12. 若 一个算法的时间复杂度用T(n)表示,其中n 的含义是(   )。       

        A. 问题规模       B.语句条数      C.循环层数        D.函数数量

        解析:

        正确的选项是 A. 问题规模。这是因为在算法分析中,n 通常用于表示算法处理的数据的规模,这可以是元素数量、数据点的数量或任何其他衡量输入大小的指标。问题规模的增加通常会导致运算数量的增加,从而影响算法的执行时间。理解 n 作为问题规模的代表是评估和比较不同算法时最为基本和重要的概念之一。这种理解对于初学者来说,有助于建立对算法时间复杂度如何与算法性能关联的基本认识。

        笔记:

       在时间复杂度中,

        n: 问题规模 - n 表示算法输入数据的大小或数量,直接影响算法需要执行的操作数量。

----------------------------------------------------------------------------------------------------------------------------- 

        

        13.计算机算法指的是(  )。                                       

        A.计算方法                        B. 排序方法

        C. 解决某一问题的有限运算序列        D.调度方法

        解析:

        算法的定义

        在计算机科学中,算法是一组定义清晰的指令集,用于完成一项特定的任务或解决特定的问题。一个算法应该有以下特征:

  • 有限性:算法必须在执行有限步骤后终止。
  • 确定性:算法的每一步骤必须明确无误,不含模糊或二义性。
  • 输入:算法有零个或多个输入。
  • 输出:算法有一个或多个输出,这些输出是算法处理输入后的结果。
  • 有效性:算法中的每一步都必须足够基本,能在有限的时间内完成。

        选项分析

        A. 计算方法

  • 这个选项太广泛,计算方法可以包括各种数学计算、统计方法等,并不特指计算机科学中的算法。算法是计算方法中的一种,但不限于此。

        B. 排序方法

  • 排序是算法的一种常见应用,特别是在数据处理和计算机程序中。然而,排序方法只描述了算法的一种类型,并不涵盖算法的全部定义。

        C. 解决某一问题的有限运算序列

  • 这个选项非常准确地反映了算法的本质。它指出算法是用于解决问题的一系列明确的运算步骤,且这些步骤是有限的。这符合算法应有的特性,包括有限性、确定性、输入、输出和有效性。

        D. 调度方法

  • 调度方法通常指的是资源分配、任务调度等领域的特定算法。它是算法应用的一个例子,但与排序方法一样,它只描述了算法的一种用途,而非算法的定义。

        最准确的选项是 C. 解决某一问题的有限运算序列。这个定义涵盖了算法的基本特性和用途,提供了对算法概念的全面理解。它不仅突出了算法的结构和目的,还强调了算法的普遍性和必要性,适用于计算机科学中解决问题的各种情况。因此,对于初学者来说,理解这一定义是学习计算机科学和算法的基础。

        笔记:

        计算机算法定义:

        算法 = 解决问题的明确步骤 + 有限操作 + 明确输入输出

  • 有限运算序列:算法是解决特定问题的一系列明确且有限的步骤。
  • 明确指令:算法的每一步都必须具有明确性和确定性,不能含糊。
  • 输入和输出:算法可能有输入,总会有输出,输出是处理输入的结果。
  • 有效性:算法的操作必须简单且实用,能在合理的时间内完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【周总结】总结下这周的工作、(hashmap)知识巩固等

总结 这周开发任务已经全部结束&#xff0c;主要是在修改一些 jira 问题 需要反思的是&#xff0c;中间改造接口时&#xff0c;数据库表需要新增一个字段&#xff0c;这个 sql 脚本忘记加到 basetable.sql 脚本里面了&#xff0c;这样如果是新建的项目&#xff0c;创建的时候不…

百万级别mysql性能耗时自测

注&#xff1a;实际情况会因建表语句和服务器的配置造成偏差 测试环境 &#xff1a;8核CPU 16G运行内存 建表语句&#xff1a; CREATE TABLE user (id bigint(11) NOT NULL AUTO_INCREMENT,username varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,birthday varchar(255)…

AppWizard的软件开发GUI的使用记录

前言 这个软件是针对于EmWin6.0以上的这个软件在emWin的基础上又封装了一层,也只提供的API函数.基于消息事件为核心&#xff08;个人理解&#xff09;一些组件的之间的交互可以通过软件界面进行配置,比较方便本次是基于模拟器进行测试记录,观察api 按键和文本之间的关联 通过…

软考141-上午题-【软件工程】-杂题+小结

一、杂题 真题1&#xff1a; 真题2&#xff1a; 真题3&#xff1a; 真题4&#xff1a; 真题5&#xff1a; 真题6&#xff1a; 真题7&#xff1a; 真题8&#xff1a; 真题9&#xff1a; 真题10&#xff1a; 真题11&#xff1a; 真题12&#xff1a; 真题13&#xff1a; 真题14&a…

深入剖析Spring框架:循环依赖的解决机制

你好&#xff0c;我是柳岸花开。 什么是循环依赖&#xff1f; 很简单&#xff0c;就是A对象依赖了B对象&#xff0c;B对象依赖了A对象。 在Spring中&#xff0c;一个对象并不是简单new出来了&#xff0c;而是会经过一系列的Bean的生命周期&#xff0c;就是因为Bean的生命周期所…

05集合-CollectionListSet

Collection体系的特点、使用场景总结 如果希望元素可以重复&#xff0c;又有索引&#xff0c;索引查询要快? 用ArrayList集合, 基于数组的。(用的最多) 如果希望元素可以重复&#xff0c;又有索引&#xff0c;增删首尾操作快? 用LinkedList集合, 基于链表的。 如果希望增…

亚马逊测评自养号策略:手机与PC结合的重要性

亚马逊测评的核心关键技术在于精心培养买家账号&#xff0c;之所以称之为核心关键&#xff0c;原因在于测评下单的首要条件是拥有一个活跃的买家账号。买家账号并非一次性使用&#xff0c;因此&#xff0c;养号过程显得至关重要。然而&#xff0c;在养号的过程中&#xff0c;很…

Python基础03-深入探索Python字典操作

在Python中&#xff0c;字典是一种非常强大和灵活的数据结构&#xff0c;可以存储键值对&#xff0c;并提供了许多方法来操作这些键值对。本文将深入探讨Python字典的各种操作&#xff0c;包括如何创建、修改、合并和查找字典中的元素。 1. 创建字典 要创建一个字典&#xff…

【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(三)、功能仿真测试

本次实验&#xff08;一&#xff09;见博客&#xff1a;【数字电路与系统】【北京航空航天大学】实验&#xff1a;时序逻辑设计——三色灯开关&#xff08;一&#xff09;、实验指导书 本次实验&#xff08;二&#xff09;见博客&#xff1a;【数字电路与系统】【北京航空航天…

【gdb调试】在ubuntu环境使用gdb调试一棵四层二叉树的数据结构详解

目录 &#x1f31e;1. 整体思路 &#x1f31e;2. 准备内容 &#x1f33c;2.1 配置.c文件 &#x1f33c;2.2 准备测试程序 &#x1f33c;2.3 GDB调试基础 &#x1f31e;3. GDB调试四层二叉树 &#x1f33c;3.1 测试程序分析 &#x1f33c;3.2 gdb分析 &#x1f33b;1. …

到2031年,5G服务市场预计将超过9194亿美元

根据 Transparency Market Research 最近的一份报告&#xff0c;到 2031 年&#xff0c;全球 5G 服务市场预计将超过 9194 亿美元。 这相当于 30.8% 的复合年增长率 (CAGR)&#xff0c;预计 2022 年市场价值将达到 827 亿美元。 随着 5G 技术的吸引力日益增强&#xff0c;它正在…

真实世界的密码学(四)

原文&#xff1a;annas-archive.org/md5/655c944001312f47533514408a1a919a 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十六章&#xff1a;加密何时何地失败 本章涵盖 使用加密时可能遇到的一般问题 遵循烘烤良好的加密的要点 加密从业者的危险和责任 问候…

UE5、CesiumForUnreal实现建筑白模生成及白模美化功能

1.实现目标 在专栏上篇文章基于GeoJson文件生成城市级白模(本文建筑白模数量12w+)的基础上修改,计算法线和纹理坐标,并基于特定材质进行美化,美化后的白模GIF动图如下所示: 文章目录 1.实现目标2.实现过程2.1 基于Cesium材质美化2.1.1实现原理2.1.2 C++代码2.1.3 蓝图应…

网络基础先导

前言&#xff1a;最好在牢固前面几大件&#xff08;编程语言、数据结构、操作系统&#xff09;&#xff0c;并且您有一个服务器的基础上&#xff08;我使用的是腾讯云中配置最低的服务器&#xff09;再来学习本系列的网络知识。 1.网络发展简要 下面就是简单提及一些概念而已&…

JDK17在Windows安装以及环境变量配置(超详细的教程)

目录 一、JDK17的安装包下载 二、安装JDK17 第一步&#xff1a;运行JDK的EXE文件 第二步&#xff1a;选择下一步 第三步&#xff1a;选择安装目录 第四步&#xff1a;安装完成 三、配置JDK17的环境变量 第一步&#xff1a;打开系统属性界面 第二步&#xff1a;打开高级…

深度学习系列64:数字人openHeygen详解

1. 主流程分析 从inference.py函数进入&#xff0c;主要流程包括&#xff1a; 1&#xff09; 使用cv2获取视频中所有帧的列表&#xff0c;如下&#xff1a; 2&#xff09;定义Croper。核心代码为69行&#xff1a;full_frames_RGB, crop, quad croper.crop(full_frames_RGB)。…

vue3引入element-plus

element-plus 是element-ui为适配vue3而开发element-ui的包。 vue3通过vite创建项目后&#xff0c; npm create vuelatest根据指令输入project信息。 1.完全引入 进入项目根目录执行 npm install element-plus在App.vue文件中引入安装element-plus import ./assets/main.…

服务注册与发现Eureka、Zookeeper、Consul 三个注册中心的异同点(CAP理论)

Eureka Eureka是由Netflix开源的一个服务注册和发现组件&#xff0c;它主要用于构建高可用、分布式系统的基础设施中。Eureka的服务器端被称为Eureka Server&#xff0c;客户端则是那些需要注册的服务。Eureka具有以下特点&#xff1a; 高可用性&#xff1a;Eureka支持多节点…

【代码】Python3|用Python PIL压缩图片至指定大小,并且不自动旋转

代码主体是GPT帮我写的&#xff0c;我觉得这个功能非常实用。 解决自动旋转问题参考&#xff1a;一行代码解决PIL/OpenCV读取图片出现自动旋转的问题&#xff0c;增加一行代码image ImageOps.exif_transpose(image) 即可恢复正常角度。 from PIL import Image, ImageOpsdef …

史上最全的四分之一、半车再到全车7自由度常规悬架建模与仿真之一

一、悬架建模的简化过程 汽车是一个复杂的振动系统&#xff0c;针对不同的需求进行不同的简化。在对悬架振动分析中&#xff0c;把汽车车身看做一个刚体&#xff0c;把驾驶员座椅和驾驶员拿掉&#xff1b;车身以下至车轮之间的橡胶垫&#xff0c;连接杆&#xff0c;弹簧等具有…