2024-2025-1 20241401 《计算机基础与程序设计》 第十周学习总结

news/2024/11/29 18:37:10/文章来源:https://www.cnblogs.com/Xseventeen/p/18577349
班级链接 2024计算机基础与程序设计
作业要求 第十周作业
作业目标 ①信息系统 ②数据库与SQL ③人工智能与专家系统 ④人工神经网络 ⑤模拟与离散事件 ⑥排队系统 ⑦天气与地震模型 ⑧图形图像

教材学习内容总结

《计算机科学概论》第12、13、14章

  • 信息系统
  • 信息系统:
    帮助组织和分析数据的软件,主要包括电子制表软件和数据库管理系统。
  • 电子制表软件:
    使用单元格组织数据和计算新值的公式,如Excel。单元格可以通过行列标号引用,公式可以引用其他单元格的值和使用内置函数计算结果。
  • 电子数据表:
    具有多功能性和可扩展性,能够对变化动态地做出响应,自动重新计算相关公式以生成最新结果。
  • 数据库管理系统:
    包括存储数据的物理文件、支持数据访问和修改的软件以及指定数据库逻辑布局的数据库模式。
  • 人工智能
  • 人工智能:
    处理人类思想的建模和应用,包括图灵测试作为衡量机器是否能像人一样思考的方法。
  • 知识表示:
    包括语义网和检索树,语义网是知识的图形化表示,捕捉对象间的关系;检索树是表示对抗性移动的知识的重要方法。
  • 专家系统:
    嵌入人类专家知识,采用规则定义条件以得出结论,适用于多种决策过程,如医疗诊断。
  • 模拟、图形学、游戏和其他应用
  • 模拟:
    计算的一个主要领域,涉及为复杂系统构建计算机模型并用模型进行实验。模型是真实系统的抽象,系统被表示为一组对象或特征以及管理它们行为的规则。
  • 模拟类型:
    包括连续模拟和离散事件模拟。连续模拟中变化由偏微分方程表示,离散事件模拟中行为被表示为实体、属性和事件。
  • 排队系统:
    一种离散事件模拟,分析等待时间,使用随机数字模拟事件的到达和持续。
  • 计算机图形学:
    结合计算机、科学和绘画艺术的领域,依赖数学方程模拟图像中的自然现象,生成接近真实照片的图像。
  • 计算机游戏:
    玩家可以与系统及玩家之间交互的虚拟世界,开发者使用游戏引擎创建游戏虚拟世界。

《C语言程序设计》第9章

  • 变量的内存地址
  • 指针变量的定义和初始化:
    通过*进行指针变量的声明和初始化过程。
  • 间接寻址运算符:
    使用间接寻址运算符来访问指针指向的值。
  • 按值调用与模拟按引用调用:
    解释了函数调用时的按值传递和如何模拟按引用传递。
  • 函数指针及其应用

教材学习中的问题与解决过程

问题1:对于指针的增加和减少操作(如p++)如何影响指针的值?
AI:
在C语言中,指针的增加和减少操作(如 p++)会影响指针的值,具体影响取决于指针指向的数据类型。这些操作实际上是基于指针指向的数据类型的大小来进行的。以下是一些关键点:

  1. 指针的增量操作(p++):
  • 当你对指针 p 执行 p++ 操作时,指针的值会增加。
  • 增加的量是指针指向的数据类型的大小。例如,如果 p 是指向 int 的指针,而 int 通常是4个字节,那么 p++ 会使 p 的值增加4个字节(在32位系统中)或8个字节(在64位系统中)。
  • 这意味着 p 将指向下一个 int 值。
  1. 指针的减量操作(p--):
  • 类似地,p-- 会减少指针的值。
  • 减少的量同样是指针指向的数据类型的大小。
  • 这意味着 p 将指向前一个 int 值。
  1. 指针的算术:
  • 你也可以直接对指针进行加法或减法操作,如 p += 1 或 p -= 1。
  • 这些操作同样是基于指针指向的数据类型的大小来增加或减少指针的值。
  1. 指针类型和大小:
  • 指针增加或减少的具体字节数取决于指针指向的数据类型的大小,这个大小可以通过 sizeof 运算符获得。
  • 对于不同类型的指针(如 char、int、float 等),增加或减少的量会不同。
    5.跨类型操作:
  • 如果你尝试对指向不同数据类型的指针进行增加或减少操作,可能会导致未定义行为,因为不同类型占用的内存大小不同。
    6.指针越界:
  • 增加或减少指针的值时,需要小心不要越界,即不要让指针指向不属于数组或分配的内存区域的地址。
    7.指针和数组:
  • 当指针用于数组时,p++ 会使指针移动到数组的下一个元素。

问题2:当未知存入数据大小时,如何操作才能避免缓冲区溢出问题?
AI:

  1. 使用安全的函数:替代不安全的函数,如使用 strncpy()、strncat()、snprintf() 等函数代替 strcpy()、strcat()、sprintf() 等,这些函数允许指定最大操作长度,从而有效防止缓冲区溢出
  2. 边界检查:在对数组进行访问时,务必确保索引值在数组的有效范围内。在编写代码时,加入明确的边界检查逻辑,防止数组下标越界导致缓冲区溢出
  3. 内存操作边界检查:对于动态分配内存的操作,如使用 malloc()、calloc() 等函数分配内存后,在使用该内存区域时要进行边界检查,确保不会超出所分配内存的范围
  4. 初始化变量:初始化所有变量,特别是用作数组索引的变量,以避免未定义行为
  5. 避免使用不安全的函数:避免使用像 gets() 这样已知不安全的函数,这个函数不检查目标缓冲区的大小,容易造成溢出
  6. 使用高级语言特性或库:考虑使用C++中的 std::string 和 std::vector 等容器,它们自动管理内存,减少了缓冲区溢出的风险
  7. 编译器和工具的使用:使用编译器的警告和错误检查功能,例如GCC的 -Wall -Wextra 选项,可以帮助发现潜在的缓冲区溢出问题。使用静态代码分析工具,如 Clang Static Analyzer,来检测代码中的缓冲区溢出漏洞
  8. 代码审查和测试:定期进行代码审查,特别关注那些处理外部输入或进行大量内存操作的代码段。编写和执行针对缓冲区溢出的单元测试,确保代码在边缘条件下也能正常工作
  9. 地址空间布局随机化:操作系统可以通过随机化内存分配来增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的
  10. 栈保护:开启栈保护机制,如使用 -fstack-protector-strong 编译器选项,可以帮助检测缓冲区溢出攻击,并在程序运行时进行防御

基于AI的学习


学习进度条

计划学习时间:25h
实际学习时间:25h

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构查找

语雀链接:https://www.yuque.com/g/wushi-ls7km/ga9rkw/kl8h357ofcgocddz/collaborator/join?token=AwLuhwfJL8wLO2FH&source=doc_collaborator# 《数据结构查找》

ARM Trusted Firmware-A RISC-V OpenSBI 汇总

Trusted Firmware-A如图为 ARM TrustedFirmware (可信固件) 开源项目集合,它为带有 Exception Level 3 (EL3) Secure Monitor 的 ARM 架构 (Armv8-A、Armv9-A 和 Armv8-M 等) 提供了安全软件的实施参考实现。 1. TF-A 概述 Trusted Firmware-A (TF-A) project 是 ARM 可信固件…

使用 Keil 新建 Arm Visual Hardware(AVH) 项目

1 新建并配置项目 1.1 新建项目 我这里想模拟 Cortex-M55 核心,因此选择 SSE-300-MPS3由于是简单教程,我只想输出一个最简单的 Hello World,因此仅勾选串口相关的组件这里还需要特殊勾选一下以下选项1.2 配置Target Software Model 处选择 TrustZone disabledRead/Write Mem…

Java面试之多线程并发篇(9)

前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!引用类型有哪些?有什么区别?说说你对JMM内存模型的理解?为什么需要JMM?多线程有什么用?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘 *** 12万字的java面试题整理 *** *** java核心面试知识整…

记录---前端如何优雅通知用户刷新页面?

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣前言 老板:新的需求不是上线了嘛,怎么用户看到的还是老的页面呀 窝囊废:让用户刷新一下页面,或者清一下缓存 老板:那我得告诉用户,刷新一下页面,或者清一下缓存,才能看到新的页面呀,感觉用户体验不好啊,不能直接…

一文多发小工具

一个一文多发的发布小工具 一个一文多发的发布小工具,作为练手的项目。 概述: 如果有将文章分享到多个平台的需求,可以借助程序来简化这一过程,节省时间并提高效率。 实现思路: 大多数平台支持markdown格式的文本内容,将.md文件作为入口文件读取,发布到各个平台;由于ma…

为 TVM 添加对 Paddle 量化模型的支持

1 简介 随着深度学习应用的广泛使用,量化模型作为一种有效的模型压缩技术,能够在保持模型精度的同时减少模型的计算和存储开销。本文将介绍如何在 TVM 上为 Paddle 深度学习框架中的量化模型提供解析支持。 2 量化方法 目前主流的的量化方法主要分为 QOperator 和 QDQ(Quanti…

tp6 url 规则

http://tp.cc/index.php/index/test return view( index, [info => $info, sj=>$sj] );

拥抱 OpenTelemetry:阿里云 Java Agent 演进实践

我们用了接近一年的时间完成了基于 OTel Java Agent 的升级重构,并于今年 5 月份发布了 4.x 探针的第一个版本 4.1.0,经过接近半年时间的验证、回归、优化,目前最新的稳定版本 4.1.12[11]已经正式发布,欢迎大家了解使用。作者:陈承 背景 在 2018 年的 2 月,ARMS Java Age…

BIM技术:数字孪生城区建设的加速器

在智慧城市建设的浪潮中,BIM(建筑信息模型)技术以其独特的优势,成为推动数字孪生城区建设的重要技术力量。本文将探讨BIM技术如何成为数字孪生城区建设的加速器,以及其在建设过程中的关键作用。BIM技术与数字孪生城区的融合数字孪生城区是指在数字空间构建一个与实体城市相…

ADF - [01] 概述

题记部分 001 || 简介Azure Data Factory (ADF) 是微软 Azure 云平台提供的一种数据集成服务,它允许用户创建、安排和管理数据管道,以实现从不同来源抽取数据、转换数据并加载到目标存储的过程。这个过程通常被称为 ETL(Extract, Transform, Load)。002 || 适用场景 【1】…

使用Powershell运行脚本报错的处理方法

最近在一台办公电脑上运行powershell脚本时报错如下: 系统上禁止运行脚本。有关详细信息,请参阅 https :/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + .\CreateFolders.ps1 + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : S…