### 国科大-叶笑春、王展-并行处理-期末复习资料 #### 重要知识点概览 本篇文章将根据题目要求,详细解析给定的并行处理知识点,主要包括负载均衡的方法、Flynn分类法、多核通信方式、系统域点对点通信的基本元素、并行程序的通用模型、并行执行的主要形式、多线程的收益与代价、并行编程模型、局部性的概念、Cache Miss的原因及避免方法、降低通信开销的方法、以及影响应用可扩展性的因素。 ### 负载均衡的方法 **负载均衡**是并行处理中的一个重要概念,目的是确保各处理单元的工作量大致相等,从而最大化整体系统的效率。常见的两种方法是: 1. **任务开始前的负载均衡**:在任务开始之前,根据任务的特点和处理单元的能力预先分配工作量,使得每个处理单元的工作量尽可能均衡。 2. **任务执行过程中的动态负载均衡**:随着任务的执行,动态调整各个处理单元的工作量,以适应实际情况的变化,比如某个处理单元完成得较快,则可以分配更多任务给它。 ### Flynn分类法 **Flynn分类法**是一种用于区分并行处理系统的分类方法,主要依据指令流和数据流的特性来划分,包括以下四种类型: 1. **单指令流单数据流结构(SISD)**:典型的顺序处理计算机,如传统的CPU。 2. **单指令流多数据流结构(SIMD)**:适用于处理大量相似数据的任务,如图形处理器(GPU)中的某些计算单元。 3. **多指令流单数据流结构(MISD)**:较少见,主要用于某些特殊应用场景,如信号处理。 4. **多指令流多数据流结构(MIMD)**:最通用的并行处理架构,每个处理单元可以独立执行不同的指令流。 ### 多核通信方式 在多核处理器环境中,不同核心之间的通信至关重要,主要有以下三种方式: 1. **共享地址空间**:所有核心都可以访问相同的内存空间,通信简单直接,但需要注意同步和一致性问题。 2. **消息传递**:通过发送消息的方式进行通信,适用于分布式系统或多节点集群环境。 3. **数据并行**:针对大规模数据集的处理,将数据分割后分配给不同的核心进行并行处理。 ### 系统域点对点通信的基本元素 系统域内的点对点通信是并行计算中常见的一种通信方式,其基本构成包括: 1. **节点**:可以是集群中的单个计算机或者多处理器系统中的单一处理器。 2. **网络接口**:如高速网络接口卡(NIC),例如万兆以太网卡或InfiniBand HCA(主机通道适配器)。 3. **链路**:包括线缆和接插件,例如光纤连接和相应的光模块。 4. **网络包**:由包头、载荷、包尾三部分组成,是网络传输的基本单位。 ### 从上层应用出发的并行程序通用模型 1. **任务并行**:问题被分解为多个子任务,这些子任务可以在不同的处理单元上并行执行,子任务之间通过显式通信来协调。 2. **数据并行**:对于包含大量数据的问题,数据集被分割并分配给不同的处理单元进行并行处理,每个单元执行相同的操作。 ### 代处理器并行执行的主要形式 1. **超标量**:在同一时钟周期内执行多条指令,利用指令级并行(ILP),由硬件自动发现并行性。 2. **多核**:多个核心协同工作,支持线程级并行性,软件负责调度线程到不同的核心上。 3. **SIMD**:在单个核心内,通过多个ALU同时执行同一条指令的不同实例,实现数据级并行。 ### 多线程的收益与代价 **收益**: - 更好地利用处理器资源。 - 隐藏内存访问延迟。 - 提高并行应用的整体吞吐量。 **代价**: - 需要额外的线程上下文。 - 可能增加单一线程的运行时间。 - 对内存带宽的要求更高。 - Cache空间受限可能导致频繁访问内存。 ### 并行编程模型 1. **共享地址空间**:易于实现但难以确保良好的性能。 2. **消息传递**:结构化良好,有利于实现可扩展的并行程序。 3. **数据并行**:强调数据集的并行处理,限制迭代间的通信量。 ### 局部性的概念 1. **时间局部性**:短期内重复访问相同数据。 2. **空间局部性**:访问附近地址的数据。 3. **Cache利用**:主要利用时间局部性和空间局部性来减少Cache Miss。 ### Cache Miss的原因及避免方法 - **首次访问**:无法避免。 - **缓存容量不足**:增加缓存大小。 - **冲突**:调整缓存关联性或改变数据访问模式。 - **通信引起的Miss**:优化通信设计。 ### 降低通信开销的方法 1. **减少通信次数**。 2. **减少通信延迟**。 3. **减少通信竞争**。 4. **增加通信与计算的重叠**。 ### 影响应用可扩展性的因素 1. **应用本身的串行算法实现**。 2. **关键路径**:优化方法是缩短关键路径上的任务。 3. **处理瓶颈**:使用更高效的通信机制或采用主从计算架构。 ### 结合Roofline模型优化Stencil程序 针对3-D 7点Jacobi Stencil算法,我们可以考虑以下几点优化策略: 1. **减少通信开销**:尽量减少数据交换的需求。 2. **提高计算密集度**:增加每个计算单元的数据处理量。 3. **优化数据布局**:改进数据的存储方式以提高缓存利用率。 4. **利用SIMD指令**:利用向量化指令加速数据处理。 通过以上策略,可以有效提升并行程序的性能和可扩展性。
1
山东大学软件学院的软件工程专业学生在学习数字图像处理课程时,期末复习是一项重要的学习环节。本复习资料由一位认真学习了lxm老师课程的学生整理,涵盖了该课程的各个重要知识点,对于即将参加考试的学生来说,具有很高的参考价值。 数字图像处理是一门利用计算机技术来处理和分析数字图像的学科,它涉及到图像的采集、存储、处理、分析以及理解等各个方面。在软件工程领域,数字图像处理技术被广泛应用于多媒体数据的处理,如在图像识别、医疗成像、卫星遥感、工业检测、智能交通等多个领域发挥着重要作用。 本复习资料主要涉及以下内容: 1. 数字图像处理基础:介绍数字图像的基本概念,包括图像的数字化过程,图像的类型(如灰度图像、二值图像、彩色图像等),以及图像的基本表示方法。 2. 图像变换:包括傅里叶变换、离散余弦变换等,这些变换能够将图像从空间域转换到频域,便于进行图像分析和处理。 3. 图像增强:介绍各种图像增强技术,如直方图均衡化、图像锐化、去噪等,目的是改善图像的视觉效果,或者为后续处理步骤做准备。 4. 图像恢复:讨论图像在采集和传输过程中可能受到的各种失真,如模糊、噪声干扰等,并介绍如何通过各种恢复算法改善图像质量。 5. 图像分割:详细阐述图像分割的原理和技术,图像分割是将图像分割为多个特定的区域或对象的过程,这对于识别和分类等高级图像处理任务至关重要。 6. 图像特征提取与描述:介绍如何从图像中提取关键特征,如形状、纹理、颜色等,并对这些特征进行量化描述。 7. 图像理解和识别:讨论如何利用机器学习和模式识别技术对图像中的对象进行识别和分类。 8. 实际应用案例分析:通过对实际案例的分析,让学生了解数字图像处理技术在现实世界中的应用情况。 lxm老师在课堂上布置的作业对理解上述知识点非常有帮助,因此建议学生在复习时,不仅要阅读教材和笔记,还要认真完成并理解作业内容。期末考试往往是对学生学习成果的一次全面检验,因此这份复习资料对于学生来说,是期末备考的宝贵资源。 这份资料不仅适用于山东大学软件学院软件工程专业的学生,对于其他院校或领域的学生和专业人士,如果需要了解或学习数字图像处理的基础知识和应用,也可以参考这份资料,它能够帮助读者建立坚实的理论基础,并掌握实际操作技能。
1
山东大学软件学院22级软件工程期末复习资料
2025-12-22 16:12:56 85.33MB 山东大学软件学院
1
山东大学软件学院是中国著名的计算机科学技术和软件工程专业高等教育机构,培养了大量的软件工程领域人才。软件工程作为一门综合性强、应用广泛的学科,它涉及到软件开发、维护、管理以及系统分析等多个方面,是现代信息技术的重要组成部分。期末复习是每位学生巩固学习成果、查漏补缺的关键时期,因此,一份详尽的复习资料对于学生来说至关重要。 这份名为“山东大学软件学院软件工程期末复习资料(附往年题)”的资料,显然是为了帮助软件学院的学生更好地进行期末复习而准备的。它不仅包含了软件工程的基础理论知识,还可能涵盖了近年来的考试真题或模拟题。通过这些资料,学生可以系统地回顾课程知识,加深对软件开发流程、软件设计模式、项目管理、质量保证、软件测试、以及软件工程伦理等多个方面的理解和掌握。 软件工程的核心内容包括需求分析、系统设计、编码实现、系统测试和部署维护等几个阶段。在复习时,学生需要关注各个阶段所涉及的关键技术和方法论,例如面向对象分析与设计、敏捷开发、版本控制、持续集成和持续部署等。此外,对于软件的性能优化、安全性保障、用户体验设计等也应有所涉猎,这些都是软件工程师在实际工作中经常会遇到的问题。 通过分析历年的试题,学生可以了解考试的题型和出题规律,从而针对性地进行复习。比如,软件工程考试可能包括选择题、判断题、简答题、计算题、设计题和论述题等类型,覆盖了理论知识和实践应用的方方面面。学生应当通过反复练习,提高解题速度和准确率。 在学习软件工程的过程中,除了理论知识外,实践能力同样重要。因此,复习资料中可能还包括一些实际案例分析、项目实操指导等内容,帮助学生将理论与实践相结合,提升解决实际问题的能力。在此基础上,学生还应积极参与课外实践,如参加开源项目、完成课程设计、参与教师科研项目等,这些都是提升个人综合能力的有效途径。 期末复习对于每个学生来说都是一项艰巨的任务,但通过合理安排复习计划、充分利用复习资料,并结合课堂笔记、课本知识和实际操作,学生可以在有限的时间内高效复习,达到事半功倍的效果。这份资料的出现无疑为山东大学软件学院的学生提供了一条捷径,帮助他们更好地准备期末考试,为即将到来的挑战做好充分的准备。
2025-11-27 21:28:09 4.16MB 期末复习
1
山东大学软件学院编译原理期末复习资料是一个专门为学习编译原理课程的学生准备的复习材料。这本复习资料可能包含编译原理的核心概念、术语解释、理论框架以及实践应用的指导。编译原理是计算机科学与技术领域的重要基础课程,对于软件学院的学生而言,掌握编译原理对于深入理解计算机程序设计语言和编译技术有着不可或缺的作用。 复习资料通常涵盖以下几个方面: 1. 词法分析:介绍如何将源程序的字符序列转换为标记序列。这一部分会涉及正则表达式、有限自动机、词法规则的设计等概念。 2. 语法分析:解释如何根据程序设计语言的语法规则,将标记序列组织成语法结构。涉及的内容可能包括上下文无关文法、推导树、语法分析算法等。 3. 语义分析与中间代码生成:深入探讨如何根据语法规则赋予程序语义,以及如何将高级语言转换成中间代码。这可能包括类型检查、作用域解析、中间代码设计等方面。 4. 优化技术:介绍编译器如何对中间代码进行优化处理以提高程序的运行效率。这可能涉及常量折叠、循环优化、死代码消除等优化策略。 5. 目标代码生成:讲解如何将优化后的中间代码转换成特定机器上的目标代码。这方面的内容可能包括寄存器分配、指令选择、代码调度等。 6. 错误处理:在编译过程中,编译器需要能够识别和处理各种错误,这部分内容可能包括错误诊断、错误恢复等策略。 此外,复习资料还可能包含历年试题解析、模拟题练习、编程实验指导等,帮助学生更好地将理论知识应用于实践中,提高解决实际问题的能力。 这份复习资料是个人收集和整理的,因此,它可能还包括了一些实际编程和调试的技巧,以及编译器设计中可能遇到的一些常见问题及其解决方案。由于资料是为山东大学软件学院的学生准备的,所以它可能还会结合该学院教学大纲和课程要求,突出重要的知识点和难点。 这份复习资料旨在帮助学生系统地回顾整个学期所学的内容,加深对编译原理知识的理解和记忆,提高学生的复习效率和考试成绩。尽管是个人整理,但由于它经过了精心的编排和深入的思考,因此对于需要复习的山东大学软件学院的学生来说,这份资料非常有价值。 无论如何,考虑到编译原理是一门理论与实践结合紧密的课程,这份资料应该会鼓励学生在复习时不仅关注理论知识的记忆,更要注重实际操作技能的培养。通过复习资料中的案例分析、练习题和实验指导,学生可以更加深刻地理解编译原理的实际应用,为将来从事软件开发或研究工作打下坚实的基础。
2025-11-27 21:19:45 21.11MB 学习资料
1
在计算机科学领域,C++是一门广泛使用的编程语言,其设计兼具面向对象的编程方法和高效的系统级编程能力。为了应对山东大学软件学院的C++期末考试,学生们需要深入理解C++的核心概念和编程范式。复习资料通常会涵盖C++的基础语法、面向对象编程、STL标准模板库、内存管理、异常处理、以及C++11新特性等内容。 C++的基础语法是所有程序设计的基础,包括数据类型、变量、运算符、控制语句(if-else、switch-case、循环控制)和函数。理解这些基本概念对于编写有效和高效的C++代码至关重要。在复习资料中,学生应该能找到关于如何声明和定义变量、使用各种运算符、控制程序流程等基础知识点的详细解释和示例代码。 面向对象编程(OOP)是C++的核心特性之一,它通过类和对象的概念来模拟现实世界。复习资料应当包含类的定义、构造函数与析构函数的使用、继承、多态、封装以及如何设计良好的类接口等内容。面向对象设计的原则,如单一职责原则、开闭原则等,也应当被覆盖,帮助学生掌握如何构建可维护和可扩展的软件系统。 标准模板库(STL)是C++中用于数据存储和算法操作的模板集合。复习资料应该详细介绍STL中的容器(如vector、list、map、set等)、迭代器、算法(如排序、搜索等)和函数对象。理解STL可以极大地提高编程效率,学生需要熟悉如何使用STL组件来处理数据集合和执行算法操作。 内存管理是C++中一个复杂的主题,涉及动态内存分配、指针、引用、智能指针等概念。资料应该指导学生如何在堆和栈上分配和释放内存,以及如何避免内存泄漏和指针悬挂等常见问题。智能指针,如unique_ptr和shared_ptr,作为现代C++内存管理的一部分,也在复习范围之内。 异常处理在C++中允许程序在遇到错误时采取更加优雅的处理方式。资料中应当包含如何使用try-catch块来捕获和处理异常,以及如何定义和抛出自定义异常。异常处理机制是构建健壮程序不可或缺的一部分。 C++11是C++语言的一次重大更新,它引入了大量新特性,如auto关键字、lambda表达式、基于范围的for循环、智能指针、移动语义等。这些新特性提高了代码的可读性和效率,对于准备期末考试的学生来说,了解和掌握这些新特性是非常有必要的。 山东大学软件学院的学生在准备C++期末考试时,应当深入复习以上提到的各个方面。通过认真研究和实践这些知识点,他们将能够提高自己的编程技能,并在考试中取得好成绩。
2025-06-27 19:36:27 70.49MB 学习资料
1
### 软件工程知识点解析 #### 一、软件生命周期模型的选择 1. **增量模型的应用** - **背景**:作为中北大学软件工程期末复习资料中的案例,假设你被任命为一家软件公司的项目负责人,负责管理已被广泛应用的字处理软件新版本的开发工作。公司设定了严格的完成期限,并且已经对外公布。 - **模型选择**:在这种情况下,**增量模型**是较为合适的选择。原因如下: - **已有原型**:旧版本的字处理软件可以视为一个现成的原型,可以通过收集用户反馈来明确新版本的需求,无需额外建立原型系统。 - **团队经验丰富**:开发团队对该软件领域有丰富的经验,能够高效地利用增量模型进行开发。 - **未来扩展性**:考虑到软件可能会有后续版本的开发,设计一个开放式的体系结构是必要的,以便于未来的改进和扩展。 2. **瀑布模型的适用场景** - **背景**:另一案例中,需要开发一个简单软件,用于计算浮点数的平方根,结果需要精确到小数点后四位。该软件在完成测试后会被抛弃。 - **模型选择**:在这种情况下,**瀑布模型**是最适合的选择。原因如下: - **需求明确**:软件功能明确,没有太多不确定性,无需通过原型来探索需求。 - **无需维护**:因为该软件在使用后会被废弃,所以无需考虑维护性和扩展性。 - **算法成熟**:开方算法是非常成熟的,无需通过迭代来完善算法设计。 #### 二、数据流图(DFD)的设计 - **案例背景**:需要设计一个数据流图来表示录入统计计算某班学生成绩的过程。 - **数据结构**:包括学号、各科目分数、总分、平均分、不及格门数等字段。 - **功能需求**: - 录入全班学生的考试成绩。 - 检查成绩,修正错误,补充遗漏成绩,删除非法成绩。 - 计算总分和平均分。 - 统计不及格科目数量,并标记升级、补考或留级。 - 打印成绩通知单给家长。 - **DFD设计**: - **外部实体**:学生、教师、教务处。 - **数据流**:学生成绩数据、成绩修正指令、成绩通知单等。 - **处理**:成绩录入、成绩检查、成绩计算、成绩统计、通知单打印。 - **数据存储**:成绩数据库。 #### 三、UML关系类型 - **案例背景**:根据图形描述,识别其中存在的泛化、实现、扩展与依赖关系。 - **关系类型**: - **泛化**:表示一种继承关系,子类继承父类的属性和行为。 - **实现**:表示类与接口之间的关系,类实现了接口规定的操作。 - **扩展**:表示类之间的扩展关系,一个类可以扩展另一个类的行为。 - **依赖**:表示两个元素之间的一种使用关系,其中一个元素的变化可能会影响另一个元素。 #### 四、软件设计中的耦合与内聚 - **案例背景**:在软件的总体设计阶段,要求在软件设计中做到高内聚、低耦合。以图书管理系统为例。 - **耦合定义**:耦合是对一个软件结构内不同模块之间的相互依赖程度的度量。 - **种类**:数据耦合、标记耦合、控制耦合、公共耦合、内容耦合。 - **目标**:追求尽可能松散的耦合,减少模块间的相互依赖。 - **内聚定义**:内聚是一个模块内部各组成成分之间的紧密程度。 - **种类**:功能内聚、顺序内聚、通信内聚、过程内聚、时间耦合、逻辑内聚、偶然内聚。 - **目标**:追求高内聚,增强模块的独立性和可维护性。 #### 五、状态转换图 - **案例背景**:设计一个描述办公室复印机行为的状态转换图。 - **状态转换**: - **闲置状态**:未接到复印命令时的状态。 - **复印状态**:接到复印命令后执行复印任务。 - **缺纸状态**:复印过程中缺纸时的状态。 - **卡纸状态**:复印过程中出现卡纸故障时的状态。 #### 六、Jackson方法绘制软件程序结构图 - **案例背景**:设计一个打印表格的程序,表格包含不同的类别(教师/学生)和相应的状态(工龄/年级)。 #### 七、N-S盒图与流程图转换 - **案例背景**:将给定的N-S盒图转换为流程图。 #### 八、软件测试方法 - **案例背景**:一家工厂的采购部每天需要一张订货报表,报表按照零件编号排序,列出所有需要再次订购的零件的信息。 - **测试方法**: - **数据流图**:绘制数据流图来表示系统的数据流向。 - **软件结构图**:展示系统的整体结构。 - **判定表、判定树**:用来表示复杂的条件组合及其结果。 - **数据字典**:定义数据流图中的数据元素。 - **等价类划分**:将输入域划分为几个等价的类别。 - **边界值分析**:选取刚好等于、略高于或略低于边界的值作为测试用例。 - **白盒测试**:基于代码的测试策略,包括不同的路径覆盖。
2025-05-23 18:24:34 1.1MB 软件工程
1
### 软件测试知识点详解 #### 一、Java语法基础与编程规范 根据题目中的示例代码,我们可以总结出以下关键知识点: 1. **包(Package)声明**: - 包是用来组织类的一种机制,它使得不同类之间不容易产生命名冲突。 - 包声明总是位于Java源文件的第一行(在任何导入语句之前)。 - 示例代码中的第一行`package test;`定义了当前类所在的包名为`test`。 2. **类的定义**: - Java中的类定义格式为:`[修饰符] class 类名 { 类体 }` - 示例中的类`Demo`是一个公共类,使用`public class Demo {...}`来定义。 3. **主方法(main Method)**: - 每个可执行的Java程序都必须包含一个主方法,它是程序的入口点。 - 主方法的签名必须是`public static void main(String[] args)`。 4. **变量声明与初始化**: - 变量声明指明变量的数据类型,并为其命名。 - 示例代码第4行`int sum;`声明了一个整型变量`sum`但未初始化,这会导致编译错误,因为局部变量在使用前必须初始化。 5. **循环结构**: - `for`循环是一种常用的循环控制结构,用于重复执行一段代码直到满足某个条件为止。 - 示例代码第5至7行的`for`循环用于计算1到10的累加和。 6. **异常处理**: - 尽管示例代码中没有涉及异常处理,但在实际编程中,正确处理可能出现的异常非常重要。 - Java提供了`try-catch`等机制来处理运行时可能出现的异常情况。 #### 二、软件测试理论与实践 1. **测试策略**: - 题目中提到了两种不同的测试策略:完全组合测试和两两组合(Pair_wise)测试。 - 完全组合测试考虑所有可能的参数组合,而两两组合测试只考虑每两个参数之间的组合,可以显著减少测试用例的数量,从而提高效率。 2. **PICT工具**: - PICT(Pair-wise Independent Combinatorial Testing)是一种自动化工具,用于生成基于组合的测试用例。 - 使用PICT工具可以快速生成满足特定覆盖标准的测试用例集,特别是对于具有多个输入参数的情况非常有效。 3. **组合测试案例计算**: - 根据题目描述,共有7个因素,每个因素有若干选项。 - 如果进行完全组合测试,则组合数为各因素选项数量的乘积,即\(7 \times 5 \times 4 \times 3 \times 3 \times 5 \times 3 = 8100\)个。 - 若使用两两组合测试,则根据PICT工具的运行结果得出28个测试用例。 4. **JUnit单元测试框架**: - JUnit是Java中最流行的单元测试框架之一,用于验证代码的正确性。 - 在提供的代码示例中,使用了JUnit来编写对`UseCase`类的测试用例,包括测试方法的定义、预期结果的设置以及断言的使用等。 5. **Calculator类及其测试**: - 示例代码中还给出了一个简单的`Calculator`类,实现了基本的加减法运算。 - 对于此类类的测试,通常会关注其各个方法的功能实现是否正确,以及边界条件下的行为是否符合预期。 通过上述分析,我们可以看到题目中涉及的软件测试相关知识点较为全面,包括了Java编程基础、软件测试策略、测试工具的应用以及单元测试框架的实际运用等多个方面。这对于软件测试领域的学习者来说是非常有价值的复习资料。
2025-05-23 18:05:36 74KB 测试工具
1
1. TCP/IP分层网络体系结构、分层原因、作用 TCP/IP分层网络体系结构是一个由四个层次组成的分层体系结构,包括应用层、运输层、网际层和 网络接口层。 这个分层结构的主要目的是为了实现网络功能的模块化设计和分层实现,让不同的网络功能被分配 到不同的层次中,每一层都专注于自己的任务,使得整个网络功能的实现更加简单、可靠、灵活。 具体来说,这个分层结构的作用包括: 1. 模块化设计:将网络功能分解成若干个相互独立的层次,使得每个层次的功能可以单独设计 和实现,这样可以提高网络设计的灵活性和可维护性。 2. 分层实现:每个层次都有自己的协议和规范,这样就可以通过定义不同的协议来实现不同的 网络功能,而且不同的协议可以在不同的层次上实现,这样就可以更加灵活地组合不同的协 议来实现不同的应用需求。 3. 简化设计:将网络功能分解成不同的层次之后,可以更加简化网络功能的设计和实现,从而 提高网络的可靠性和性能。 4. 提高可靠性:通过在不同的层次上定义不同的协议和规范,可以使得网络功能的实现更加可 靠,因为每个层次都有自己的错误检测和纠正机制,这样就可以保证网络的可靠性。 总的来说,TCP
2025-05-22 18:09:17 24.94MB TCP/IP VLAN ICMP协议 NAT
1
博主是软院21级的,授课老师是lyx。 这门课还是很重要的,课程的成绩组成是平时成绩%50+期末考试%50。 平时成绩包括两次随堂测验(开卷),每次测验占%20 一篇论文(%10)。 期末考试相对来说不难,也不简单,也就是中等难度,只要好好复习了,大多数的题都能秒。 复习资料包含以下的内容:1.上课用的课件2.两次随堂测验试题3.期末考试选择题题库4.电子版教材 如有侵权,请联系我删除。
2025-03-28 17:25:42 193.96MB 东北大学 软件学院 计算机网络
1