当前位置: 首页 > news >正文

Linux:Linux网络总结(附下载链接)

文章目录

  • 下载链接
  • 网络问题
    • 综合问题
      • 访问一个网页的全过程?
      • WebSocket
    • HTTP
      • HTTP基本概念
      • GET与POST
      • HTTP特性
      • HTTP缓存技术
      • HTTP的演变
      • HTTP1.1 优化
    • HTTPS
      • HTTP与HTTPS有哪些区别?
      • HTTPS解决了HTTP的哪些问题?
      • HTTPS如何解决的?
      • HTTPS是如何建立连接的?
      • HTTPS 的应用数据是如何保证完整性的
      • HTTPS 一定安全可靠吗?
    • TCP
      • TCP基本认识
      • TCP连接建立
      • TCP连接断开
      • socket编程
      • 重传机制
      • 滑动窗口
      • 流量控制
      • 拥塞控制
      • TCP缺点
      • 如何基于UDP实现可靠传输?
      • TCP优化
      • 快速复用 TIME_WAIT
      • QUIC
      • 序列号和确认号
    • Mac地址表
      • 一个是设备的 MAC 地址,
      • 另一个是该设备连接在交换机的哪个端口上

下载链接

链接: https://pan.baidu.com/s/1hRTh7rSesikisgRUO2GBpA?pwd=utgp 提取码: utgp

最近总结了Linux网络的内容,总结内容如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

网络问题

综合问题

访问一个网页的全过程?

  • 发过去

    • 应用层

        1. 浏览器地址输入URL
        • 1.1 浏览器查看缓存,强制和协商缓存
        1. 解析URL获取协议,主机,端口,路径
        1. 生成HTTP请求报文
        1. 获取主机IP
        • 4.1 浏览器缓存

        • 4.2 主机缓存

        • 4.3 DNS域名解析

        • 4.4 路由器解析

    • 传输层

        1. 建立TCP连接,三次握手
        1. 给报文添加TCP报头
        1. 向下传输,发送报文
    • 网络层

        1. 通过解析出的IP添加IP报头
        1. 向下传输,发送报文
    • 网卡

      • 转换为电信号
    • 交换机

      • 电信号到达网线接口,交换机里的模块进行接收,接下来交换机里的模块将电信号转换为数字信号

      • 将包存入缓冲区后,接下来需要查询一下这个包的接收方 MAC 地址是否已经在 MAC 地址表中有记录

        • 如果没有匹配,全部转发
    • 路由器(网卡)

      • 检查MAC地址看看是不是给自己的

        • 是,收到缓冲区当中
      • 去掉MAC头部,查询路由表确定端口

      • 发送包

        • 看网关,如果有网关就向这个IP发

          • 利用ARP查询MAC地址

            • 再做一个有MAC的包

              • 通过交换机到达下一个路由器
  • 收回来

      1. 接收HTTP响应
      1. 根据状态码处理情况
  • 这个问题我基于TCP/IP的网络模型来回答,并且暂时不考虑浏览器缓存的情况。

首先看一下应用层:对于应用层,当用户输入一个网址后,此时会进行URL解析,根据URL构建出想要请求的资源路径,使用的协议,具体方法,请求的IP和端口信息。其中IP需要使用DNS域名解析协议来进行获取,基于这些内容,一个初步的报文就在应用层构建完毕了,此时应用层就完成了自己的任务。

现在数据包来到传输层了,Http协议基本都是遵循TCP协议的,因此我们只考虑TCP协议的情况,到达传输层后,建立TCP的三次握手,如果是HTTPS再构建四次TLS握手,最终可以进行收发数据,此时就给报文添加一个TCP的报头,然后继续向下传递

现在数据包来到网络层了,网络层根据解析出的IP地址以及自身的属性,最终构建出一个IP的报头,添加到数据包前,然后继续向下传递

此时数据包来到了网络接口层,数据包在网络中的传输依赖于路由器和交换机的协同工作。路由器根据路由表选择最佳路径,将数据包转发到下一个网络。交换机则根据MAC地址表快速转发帧到目标网络接口。如果MAC地址表中没有目标MAC地址,交换机会将帧广播到所有端口,直到找到正确的接收者

数据包在进行传输的过程中,网络中的每一个设备都可以对这个包进行接受,接受到包之后,根据MAC地址来判断是不是给自己的,如果是给自己的就留下来,收到缓冲区中,去掉这个没有用的MAC头部,然后到自己的路由表中进行查询,如果此时网关列中没有信息,那么就说明这个数据包已经传输到了指定的服务器,如果网关列中有数据,那么就根据网关中的这个IP,利用ARP协议来获取IP对应的MAC地址,然后插入到这个包前,然后继续进行发送,通过交换机到达下一个路由器,直到到达指定的服务器

到达指定的服务器后,服务器就会对于包进行层层解析,一直解析到应用层的数据,之后构建一个Http响应,再发回去即可

WebSocket

  • 借助HTTP协议进行升级

  • 101状态码 -> 协议切换

  • 完美继承全双工

  • 用报头+有效载荷解决粘包问题

HTTP

HTTP基本概念

  • HTTP是什么?

  • HTTP常见的状态码有哪些?

  • HTTP常见字段有哪些?

GET与POST

  • 有什么区别?

  • 是安全和幂等的吗?

HTTP特性

  • HTTP/1.1 优点有哪些?

    • 简单

    • 跨平台

    • 扩展

      • 报头随意补充

      • 下层随意变化

  • HTTP/1.1 缺点有哪些?

    • 无状态

    • 明文传输

    • 不安全

  • HTTP/1.1 性能如何?

    • 长连接

      • 对比1.0和1.1
    • 管道

      • 请求和响应的队头阻塞

HTTP缓存技术

  • HTTP缓存有哪些实现方式?

    • 强制和协商
  • 什么是强制缓存?

  • 什么是协商缓存?

HTTP的演变

  • HTTP1.1 相比 HTTP/1.0 提高了什么性能?

    • 问题

      • 报头不压缩

      • 冗余头部

      • 响应对头阻塞

      • 无请求优先级

      • 无全双工

  • HTTP/2 做了什么优化?

    • 头部压缩

    • 二进制格式

    • 并发传输

    • 服务器主动推送资源

  • HTTP/3 做了什么优化?

    • 解决TCP队头阻塞

    • 无队头阻塞

      • 只阻塞当前流,其他流不影响
    • 更快的连接建立

      • 1 个 RTT 就可以完成建立连接与密钥协商
    • 连接迁移

      • TCP换连接成本很高

HTTP1.1 优化

  • 如何避免发送HTTP请求?

    • 缓存
  • 如何减少HTTP请求次数?

    • 减少重定向次数

    • 合并请求

    • 延迟发送

      • 一个网页里面的内容慢慢加载
  • 如何减少HTTP响应数据大小?

    • 无损压缩

    • 有损压缩

HTTPS

HTTP与HTTPS有哪些区别?

  • HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程

HTTPS解决了HTTP的哪些问题?

  • 窃听风险

    • 篡改风险

      • 冒充风险
  • 信息加密

    • 校验机制

      • 身份证书

HTTPS如何解决的?

  • 混合加密(不窃听)

    • 非对称加密用于密钥交换

      • 客户端发给服务端一个会话密钥(CA),服务端用私钥解开,双方就获得了一个通信的密钥对
    • 对称加密用于数据传输

      • HTTPS使用对称加密的会话密钥来加密和解密数据
  • 摘要算法+数字签名

    • 通过哈希算法可以确保内容不会被篡改

      • 通过数字签名(私钥解密)确保哈希值不被替换
  • 数字证书

    • 防止又换私钥又换公钥

      • 进行一个注册(个人信息 + 公钥 + 数字签名)
  • 公钥加密,私钥解密

    • 保证内容传输的安全
  • 私钥加密,公钥解密

    • 保证消息不会被冒充

HTTPS是如何建立连接的?

  • SSL/TLS 协议基本流程

    • 客户端向服务器索要并验证服务器的公钥

    • 双方协商生产「会话秘钥」

    • 双方采用「会话秘钥」进行加密通信

  • TLS 握手

    • ClientHello

    • SeverHello

    • 客户端回应

      • 确认数字证书,取出公钥
    • 服务器的最后回应

      • 计算出本次通信的「会话秘钥」

HTTPS 的应用数据是如何保证完整性的

  • 握手协议

    • TLS 四次握手的过程负责协商加密算法和生成对称密钥
  • 记录协议

    • 保护应用程序数据并验证其完整性和来源,对 HTTP 数据加密
  • 数据加密过程

    • 消息被分割和压缩

    • 加上消息认证码MAC 值

    • 压缩的片段和消息认证码一起进行加密

    • 带上报头,组成报文

HTTPS 一定安全可靠吗?

  • https本身一定是没问题的,一定是客户端本身有问题

    • 电脑中病毒,证书被换了

      • 提醒证书可能被劫持,执意访问
  • HTTPS双向认证,如果服务端觉得客户端不值得信任,就不通信

TCP

TCP基本认识

  • TCP报头?

  • 为什么需要TCP?工作在哪?

  • 什么是TCP?

    • 面向连接可靠字节流
  • 什么是TCP连接?

    • 需要客户端与服务端达成上述三个信息的共识

      • socket

        • ip+端口
      • 序列号

      • 窗口大小

  • 如何确定TCP连接?

    • 四元组

      • 这个很重要,当判断TCP连接建立,就要看这个四元组
  • TCP和UDP的区别和应用场景?

    • 连接

    • 可靠性

    • 传输方式

    • 服务对象

      • 一对一…
    • 拥塞和流量控制

    • 首部开销

    • 分片不同

  • 为什么TCP有首部长度而UDP没有?

  • 为什么UDP有包长度而TCP没有?

    • 历史问题

TCP连接建立

  • TCP三次握手过程和状态变迁?

    • 第三次握手是可以携带数据的,前两次握手是不可以携带数据的
  • 如何查看TCP状态?

  • 为什么是三次,不是两次四次?

    • 验证收发能力

      • 历史连接

        • 同步序列号

          • 资源浪费
    • 「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;

    • 「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

  • 为什么初始化序列号都不一样?

    • 为了防止历史报文被下一个相同四元组的连接接收

    • 为了安全性,防止黑客伪造的相同序列号的 TCP 报文被对方接收

  • 序列号是如何随机产生的?

    • 随机数是会基于时钟计时器递增的,基本不可能会随机成一样的初始化序列号
  • TCP层为什么需要MSS?

    • 如果一个 IP 分片丢失,整个 IP 报文的所有分片都得重传
  • 第一次握手丢失会怎么样?

  • 第二次握手丢失会怎么样?

    • 都发
  • 第三次握手丢失会怎么样?

  • 什么是SYN攻击?如何避免?

    • 占满服务端的半连接队列

    • 调大 netdev_max_backlog

      • 增大 TCP 半连接队列

        • 开启 tcp_syncookies

          • 减少 SYN+ACK 重传次数

TCP连接断开

  • TCP四次挥手过程和状态变迁?

  • 为什么需要四次挥手?

    • close和shutdown的区别
  • 第一次挥手丢失了会怎么样?

  • 第二次挥手丢失了会怎么样?

  • 第三次挥手丢失了会怎么样?

  • 第四次挥手丢失了会怎么样?

  • 为什么TIME_WAIT时间是2MSL?

    • 2个报文最大生存时间
  • 为什么需要TIME_WAIT?

    • 防止历史数据

    • 优雅的关闭

  • TIME_WAIT太多会怎么样?

    • 系统+端口
  • 如何优化TIME_WAIT?

  • 如果建立连接后,客户端故障怎么办?

    • TCPkeepalive

      • 失活报文看看活不活
  • 如果建立连接后,服务端进程崩溃怎么办?

socket编程

  • TCP的socket编程?

  • listen参数的意义?

    • accept队列大小
  • accept是在哪一步?

  • 客户端close后的流程?

  • 没有accept还能连接吗?

    • accept只是从队列取元素
  • 没有listen还能连接吗?

    • 自连接,哈希表

重传机制

  • 超时重传?

    • 数据包丢失

      • 确认应答丢失
  • 快速重传?

    • 优化,但不保底
  • SACK是什么?

    • 标识已收到的报文
  • D-SACK是什么?

    • 标识重复收到的报文

滑动窗口

  • 发送窗口?

  • 接收窗口?

流量控制

  • 缓冲区和滑动窗口的关系?

    • 不能又收缩又少缓存
  • 窗口关闭?

    • 打满了,不再收数据

    • 问题?解决?

  • 什么是糊涂窗口综合征?

    • 每次发送数据很小,效率低

拥塞控制

  • 慢启动

  • 拥塞避免

  • 拥塞发生

  • 快速恢复

TCP缺点

  • 升级困难 改内核

  • 队头阻塞

  • 建立连接延迟

  • 网络迁移

如何基于UDP实现可靠传输?

  • 序列号

  • 确认应答

  • 超时重传

  • 流量控制

  • 拥塞控制

  • 优化TCP连接建立

  • 网络迁移

TCP优化

  • 绕过三次握手

    • cookie

快速复用 TIME_WAIT

  • 历史 RST 报文可能会终止后面相同四元组的连接,因为 PAWS 检查到即使 RST 是过期的,也不会丢弃

  • 处于新连接建立可能收到旧的FIN+ACK,回RST
    如果第四次挥手的 ACK 报文丢失了,有可能被动关闭连接的一方不能被正常的关闭

QUIC

  • 可靠传输

    • Packet Number 单调递增
      配合 Stream ID 与 Offset

      • 可以更加精确计算 RTT,没有 TCP 重传的歧义性问题;

      • 可以支持乱序确认,因为丢包重传将当前窗口阻塞在原地,而 TCP 必须是顺序确认的,丢包时会导致窗口不滑动

  • 队头阻塞

    • 每一个stream分配一个独立的滑动窗口
  • 流量控制

    • window_update 帧告诉对端自己可以接收的字节数

    • BlockFrame 告诉对端由于流量控制被阻塞了

    • 基于Stream和Connection的控制

  • 拥塞控制

    • 在应用层可以随便改算法,主流使用TCP的
  • 连接建立

    • 321RTT -> 210RTT
  • 网络迁移

    • 基于客户端服务端连接 ID,无需重新建立

序列号和确认号

  • 序列号 = 上一次发送的序列号 + len

  • 确认号 = 上一次收到的报文中的序列号 + len

Mac地址表

一个是设备的 MAC 地址,

另一个是该设备连接在交换机的哪个端口上

相关文章:

Linux:Linux网络总结(附下载链接)

文章目录 下载链接网络问题综合问题访问一个网页的全过程?WebSocket HTTPHTTP基本概念GET与POSTHTTP特性HTTP缓存技术HTTP的演变HTTP1.1 优化 HTTPSHTTP与HTTPS有哪些区别?HTTPS解决了HTTP的哪些问题?HTTPS如何解决的?HTTPS是如何…...

Cxx Primer-CP-2

开篇第一句话足见作者的高屋建瓴:类型决定程序中数据和操作的意义。随后列举了简单语句i i j;的意义取决于i和j的类型。若它们都是整形,则为通常的算术意义。若它们都为字符串型,则为进行拼接操作。若为用户自定义的class类型,则…...

OpenCV距离变换函数distanceTransform的使用

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 功能描述 distanceTransform是OpenCV库中的一个非常有用的函数,主要用于计算图像中每个像素到最近的背景(通常是非零像素到零像素&…...

Service Mesh 是一种用于处理服务间通信的基础设施层

Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。Service Mesh 的一个流行实现是 Istio,它基于 Envoy 代理和 Kubernetes。 然而&#xff0…...

QML界面控件加载与显示顺序

一、QML界面控件加载顺序 QML在界面加载时的顺序和我们认知的有很大的不同,有时候会对我们获取参数以及界面实现造成很大的困扰 1、加载顺序 import QtQuick 2.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.VirtualKeyboard 2.4Window {id: …...

C++从入门到起飞之——缺省参数/函数重载/引用全方位剖析!

目录 1.缺省参数 2. 函数重载 3.引⽤ 3.1 引⽤的概念和定义 3.2 引⽤的特性 3.3 引⽤的使⽤ 3.4 const引⽤ 3.5 指针和引⽤的关系 4.完结散花 个人主页:秋风起,再归来~ C从入门到起飞 个人格言:悟已往之不谏…...

tkinter-TinUI-xml实战(12)pip可视化管理器

引言 pip命令行工具在平常使用方面确实足够简单,本项目只是作为TinUI多界面开发的示例。 当然,总有人想用GUI版pip,实际上也有。不过现在,我们就来手搓一个基于python和TinUI(tkinter)的pip可视化管理器。…...

Java中标识符和关键字

1.标识符 public class HelloWorld{public static void main(String[] args){System.out.println("Hello,world");} }上述代码中在public class 后面的HelloWorld称为类名,main称为方法名,也可以将其称为标识符,即:在程…...

电子版pdf格式标书怎么加盖公章?

电子版PDF格式标书加盖公章的方法有多种,以下是一些常用的步骤和技巧: 一、手动插入图片法 打开PDF文档:首先,确保你已经安装了支持PDF编辑的软件,如Adobe Acrobat Reader DC、Foxit PDF Editor等。选择插入图片&…...

【开放集目标检测】Grounding DINO

一、引言 论文: Grounding DINO: Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection 作者: IDEA 代码: Grounding DINO 注意: 该算法是在Swin Transformer、Deformable DETR、DINO基础上…...

东莞酷得 PMS134应广8位OTP单片机

1、特性 通用 OTP 系列 不建议使用于 AC 阻容降压供电或有高 EFT 要求的应用。应广不对使用于此类应用而不达安规要求负责 工作温度范围:-20C~70C 1.2.系统特性 一个硬件 16位计数器 两个8位硬件 PWM生成器 三个11 位硬件 PWM生成器(PWMG0,PWMG1…...

[终端安全]-7 后量子密码算法

本文参考资料来源:NSA Releases Future Quantum-Resistant (QR) Algorithm Requirements for National Security Systems > National Security Agency/Central Security Service > Article Commercial National Security Algorithm Suite 2.0” (CNSA 2.0) C…...

uniapp 支付宝小程序 芝麻免押 免押金

orderStr参数如下: my.tradePay({orderStr:res, // 完整的支付参数拼接成的字符串,从 alipay.fund.auth.order.app.freeze 接口获取success: (res) > {console.log(免押成功);console.log(JSON.stringify(res),不是JOSN);console.log(JSON.stringify…...

Python爬虫教程第一篇

一、爬虫基础概念 1. 什么是爬虫 爬虫(Spider,又称网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。从技术层面来说,爬虫通过程序模拟浏览器请求站点的行为,把站点返…...

AI时代:探索个人潜能的新视角

文章目录 Al时代的个人发展1 AI的高速发展意味着什么1.1 生产力大幅提升1.2 生产关系的改变1.3 产品范式1.4 产业革命1.5 Al的局限性1.5.1局限一:大模型的幻觉 1.5.2 局限二:Token 2 个体如何应对这种改变?2.1 职场人2.2 K12家长2.3 大学生2.4 创业者 3 人工智能发…...

【Python学习笔记】Optuna + Transformer B站视频实践

【Python学习笔记】Optuna Transformer 实践 背景前摇(省流可不看): 之前以泰坦尼克号数据集为案例,学习了Optuna的基本操作,为了进一步巩固知识和便于包装简历,决定找个唬人一点的项目练练手。 ————…...

【自动驾驶/机器人面试C++八股精选】专栏介绍

目录 一、自动驾驶和机器人技术发展前景二、C在自动驾驶和机器人领域的地位三、专栏介绍四、订阅需知 一、自动驾驶和机器人技术发展前景 随着人工智能、机器学习、传感器技术和计算能力的进步,自动驾驶和机器人的技术水平不断提升,使得它们更加智能、可…...

Unity中一键生成具有身体感知的虚拟人物动作

在虚拟现实(VR)和增强现实(AR)的浪潮中,如何让虚拟人物的动作更加自然、真实,已经成为一个重要课题。AI4Animation项目,一个由 Sebastian Starke 主导的开源框架,为Unity开发者提供了强大的工具集,以实现这一目标。本文…...

谷粒商城实战-25-分布式组件-SpringCloud Alibaba-Nacos配置中心-加载多配置集

文章目录 一,拆分配置集二,配置文件中配置多配置集1,引用多配置集2,验证 三,多配置集总结1,使用场景2,优先级 这一节介绍如何加载多个配置集。 大多数情况下,我们把配置全部放在一个…...

UART编程

Q:为什么使用串口前要先在电脑上安装CH340驱动? 中断的作用? 环形buffer的作用? static和valitate的作用 三种编程方式简介 也可以通过DMA方式减小CPU资源的消耗 直接把数据在SRAM内存和UART模块进行传输 ,流程: …...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...