有什么方法学习计算机体系结构吗?听不懂😭

快学期结束了还是听不懂老师上课讲的内容,有什么方法可以更好的理解计算机体系结构这门课的主要内容是讲什么吗?

实践,这门课的很多内容都可以动手实践。

为了考试的话,可以去B站、MOOC、YouTube之类的网站看视频。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7804792
  • 这篇博客你也可以参考下:【面试经典题之字符串】实现一个算法,确定一个字符串的所有字符是否全都不同。假设不允许使用额外的数据结构
  • 除此之外, 这篇博客: 【大厂算法系列】学数据结构与算法有用吗?时间与空间复杂度的定义与计算中的 为什么要学习数据结构与算法,学完到底有没有用? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    • 我们学习的很多东西,究根结底在底层都用到了很多的数据结构与算法。
    • 这些东西经过层层封装。我们在使用的时候就可以不用去关注那些低层的东西了,而是直接调用实现好的即可。
    • 学习数据结构与算法是非常有用的,它能帮助我们更有效地解决问题,提高程序的性能。数据结构与算法能够帮助我们更好地理解计算机系统的内部原理,提供编程思想,更好地分析和解决问题,从而提高编程能力。

    举例说明:

    • B+树结构 能够帮mysql高效的获取数据
    • 数据库的索引数据结构: 二叉树 红黑树 Hash表 B-Tree 。这些索引数据结构可以增加数据的查找搜索效率

    所以说,掌握数据结构与算法可以让你在计算机的路上走的更远,甚至可以说数据结构可以决定一个程序员的上限。

    现在的互联网大厂往往对数据结构与算法有着较高的要求。扎实的数据结构算法基础往往是大厂的敲门砖。

  • 您还可以看一下 刘建萍老师的人工智能系列课程零基础讲解知识点和实例应用线性回归梯度下降逻辑回归课程中的 讲解机器学中会涉及到的有关数学方面的知识储备有哪些小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    针对学习计算机体系结构的问题,以下是一些有效的学习方法:

    1. 充分准备课前知识:在课程开始之前,先了解一些相关的预备知识,以便更好的理解老师上课讲的内容。可以通过查阅教材、网上资料、参考书籍等方式进行学习。

    2. 多听课、多思考:在听课的过程中,要认真听老师讲解的每一个知识点,并且积极思考。可以在课堂上随时提问、回答老师的问题,同时也可以结合自己的实际情况举一些例子进行思考。

    3. 多做习题、实验:在课下花费更多的时间进行习题和实验练习。可以根据老师讲解的知识点进行切实的动手练习,从而更好地理解计算机体系结构的知识。

    4. 加入课外学习小组:可以加入一些计算机体系结构的学习小组、论坛、社群等,与其他同学或行业人士进行交流和讨论,从而更好地掌握学习方法和知识点。

    5. 了解相关实际应用:计算机体系结构作为一门理论课程,与实际应用息息相关。可以了解一些计算机硬件、操作系统、网络等相关的实际应用,从而更好的理解计算机体系结构的知识。

    针对NTT-based Karatsuba算法,以下是具体的解决方案:

    1. 将多项式分别转换为NTT域上的向量:可以使用python的numpy库中的fft函数来进行NTT操作,将多项式分别转化为NTT域上的向量。
    import numpy as np
    
    def ntt(x):
        # x: 多项式系数向量
        n = len(x)
        w = np.zeros(n, dtype=complex)
        for i in range(n):
            theta = 2 * np.pi * i / n
            w[i] = np.cos(theta) + np.sin(theta) * 1j
        return np.fft.fft(x * w)
    
    A = [1, 2, 3, 0, 0, 0]
    B = [4, 5, 6, 0, 0, 0]
    a = ntt(A)
    b = ntt(B)
    
    1. 在NTT域上进行点乘操作:可以使用numpy库中的multiply函数对两个NTT域上的向量进行点乘操作。
    c = np.multiply(a, b)
    
    1. 通过逆NTT操作将结果转换回多项式形式:可以使用numpy库中的ifft函数进行逆NTT操作,将NTT域上的向量转换回多项式形式。
    def inverse_ntt(x):
        # x: NTT函数值向量
        n = len(x)
        w = np.zeros(n, dtype=complex)
        for i in range(n):
            theta = 2 * np.pi * i / n
            w[i] = np.cos(theta) - np.sin(theta) * 1j
        y = np.fft.ifft(x)
        return y * w / n
    
    C = inverse_ntt(c)
    
    1. 进行具体的计算:根据NTT-based Karatsuba算法中的公式,计算多项式乘积的具体结果。以下是具体的python代码示例:
    def karatsuba_ntt(A, B):
        n = len(A)
        if n == 1:
            return [A[0] * B[0]]
        else:
            m = n // 2
            A1, A2 = A[:m], A[m:]
            B1, B2 = B[:m], B[m:]
            C1 = karatsuba_ntt(A1, B1)
            C3 = karatsuba_ntt(A2, B2)
            A1_A2 = [A1[i] + A2[i] for i in range(m)]
            B1_B2 = [B1[i] + B2[i] for i in range(m)]
            C2 = karatsuba_ntt(A1_A2, B1_B2)
            C2 = [C2[i] - C1[i] - C3[i] for i in range(n)]
            C1 = C1 + [0] * n
            C2 = ntt(C2) + [0] * m
            C3 = ntt(C3)
            return inverse_ntt(C1 + C2 + C3)
    
    A = [1, 2, 3, 0, 0, 0]
    B = [4, 5, 6, 0, 0, 0]
    C = karatsuba_ntt(A, B)
    

    以上是NTT-based Karatsuba算法的具体实现方法,可以尝试通过调用相关函数进行多项式乘法运算。如果在实际应用过程中遇到了问题,可以参考相关资料或者交流讨论解决。如果涉及到更加复杂的计算问题,可以考虑使用一些高性能的数值计算库或者使用GPU进行并行加速计算。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^