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

计算机网络 —— HTTPS 协议

前一篇文章:计算机网络 —— HTTP 协议(详解)-CSDN博客

目录

·前言

一、HTTPS 协议简介

二、HTTPS 工作过程

1.对称加密

2.非对称加密

3.中间人攻击

4.引入证书

三、HTTPS 常见问题

1.中间人能否篡改证书?

2.中间人能否调包证书?

3.HTTPS 工作完整流程

·总结


·前言

        前一篇文章中对 HTTP 协议整体做了一个基本介绍,在本篇文章里将介绍一下基于 HTTP 协议创造出来的 HTTPS 协议,关于 HTTPS 协议的重点内容就是它的一个工作过程,它是如何保证我们网络中传输数据的安全性呢?这将是本篇文章的要重点介绍的内容,下面就开始本篇文章的内容介绍。

一、HTTPS 协议简介

        HTTPS 协议与 HTTP 协议一样都是应用层协议,HTTPS 协议是在 HTTP 协议的基础上引入了一个加密层,由于 HTTP 协议的内容都是按照文本的方式明文传输,这就导致在使用 HTTP 协议传输数据的过程中会出现一些数据被篡改的情况,比如:“运营商劫持”。

        什么是 “运营商劫持” 呢?不知道有没有小伙伴在网上搜索某个软件点击下载后发现下的不是要下载的软件而是其他软件,这就是 “运营商劫持”,如下图所示:

图1
图2

        如上图所示,当我们下载一个 “天天动听” 时,图1 未被劫持点击下载按钮是可以弹出正确的天天动听的链接,图2 已被劫持时,点击下载按钮,弹窗的是 QQ浏览器的下载链接,这就是 “运营商劫持”,那么它是如何做到的呢?流程如下图所示:

         当然,不止运营商可以劫持,其他的 “黑客” 也可以用类似的手段来进行劫持,窃取用户的隐私信息,或者篡改内容,所以在互联网上,明文传输是比较危险的事情,HTTPS 就是在 HTTP 的基础上进行了加密,进一步来保证用户的信息安全。

        解决安全问题最核心的要点就是 “加密”,什么是加密呢?加密就是把明文(要传输的真实数据)进行一系列变换,生成密文(针对明文加密之后得到的结果,往往不直观,不易理解),解密就是把密文通过一系列变换,还原成明文,在这个加密与解密的过程中,往往需要一个或者多个中间的数据来辅助完成这个过程,这样的数据就被称为 “密钥”。

二、HTTPS 工作过程

        为了保证数据的安全,HTTPS 就在 HTTP 基础上进行 “加密” 操作,这样网络上传输的数据就不再是直接传输明文了,而是加密之后的 “密文”,加密的方式有很多,但是整体可以分为两大类:“对称加密” 和 “非对称加密”,下面我就来介绍一下 HTTPS 的工作过程,及遇到问题的对应解决方法。

1.对称加密

        对称加密其实就是通过同一个 “密钥”,来把明文加密成密文,并且还可以把密文加密成明文,引入对称加密之后,即使数据被截获,由于黑客不知道密钥是什么,也就无法进行解密进一步去获取我们请求的真实内容了,引入对称加密后,此时数据传输过程如下图所示:

        根据上述介绍可以发现对称加密具有以下特点:

  • 使用对称加密,客户端与服务器需要使用同一个密钥;
  • 不同的客户端需要使用不同的密钥(如果密钥都相同,那么黑客就可以获取密钥)。 

        此时,由于不同客户端使用的密钥都不相同,这就意味着服务器需要维护每个客户端和密钥的关联关系会引入很大的额外开销。

        对称加密除了会引入额外的开销还有一个致命的问题,那就是这种加密并不安全,由于对称密钥是要传输给对方的,就意味着传输密钥的过程是明文传输的,那么此时黑客只要获取到传输的密钥,对称加密的操作就毫无意义了,如下图所示:

         造成上图结果就是因为使用明文传输密钥,黑客就会获取到密钥,后续的加密操作就形同虚设了,所以我们需要对传输的密钥进行加密传输,如果我们对密钥仍进行对称加密的方式进行传输就需要确定一个 “密钥的密钥”,此时面临的问题还是 “密钥的密钥” 是明文,黑客仍然可以拿到密钥,所以对密钥进行加密传输使用对称加密的方式就行不通了,这就需要引入非对称加密。

2.非对称加密

        使用非对称加密主要目的就是为了对 “对称加密” 的密钥进行加密,来确保对称密钥的安全性,在非对称加密中要用到两个密钥:“公钥” 与 “私钥”,公钥和私钥是配对的(公钥对明文加密变成密文,密文只能使用配对的私钥来进行解密),它们最大的缺点就是加密与解密的运算速度非常慢(消耗 CPU 资源),所以不能完全使用非对称加密来对传输的数据进行加密,而只是对“对称加密”的密钥进行加密。

        引入非对称加密之后,就可以由服务器生成公钥和私钥,公钥可以公开给每个客服端,私钥只有自己知道,这样客户端就可以使用公钥对对称密钥进行加密然后传输给服务器,服务器获取到密文使用私钥解密获取到对称密钥,后面就可以继续使用对称加密来进行数据传输了,具体过程如下图所示:

        下面我来对上述过程做一个梳理:

  1.  客户端在本地生成对称密钥,通过公钥加密,发送给服务器;
  2. 由于黑客没有私钥所以无法对截取的数据进行解密进而无法获取对称密钥;
  3. 服务器使用私钥解密,获取对称密钥,使用对称密钥加密给客户端返回的响应;
  4. 后续客户端与服务器的通信使用对称加密即可,由于该密钥只有客户端与服务器两个主机知道,所以黑客截获数据也无法进行解密。

        上述过程虽然看起来安全,但是还有漏洞,由于公钥是需要客户端从服务器这边获取,那么就存在一个问题:获取的公钥是不是黑客伪造的?这就涉及到中间人攻击了。 

3.中间人攻击

        黑客通过中间人攻击就可以获取到对称密钥,由于非对称加密算法是公开的,所以黑客也可以使用非对称加密算法来得到自己的公钥私钥,此时就可以在客户端向服务器发送获取公钥的请求时进行中间人攻击,具体过程如下图所示:

         下面我来对上述过程做一个梳理:

  1. 服务器使用非对称加密算法生成公钥:pub1,私钥:pri1;
  2. 黑客使用非对称加密算法生成公钥:pub2,私钥:pri2;
  3. 客户端生成对称密钥:key;
  4. 客户端向服务器发送请求询问公钥是什么?
  5. 服务器明文传输公钥 pub1 给客户端;
  6. 黑客截取数据,提取公钥 pub1 并保存,然后将数据中的公钥 pub1 替换成自己的公钥 pub2,并将伪造的数据发给客户端;
  7. 客户端收到数据,提取公钥 pub2(并不清楚公钥已经被换),用公钥 pub2 加密对称密钥 key,形成报文发送给服务器;
  8. 黑客截取数据,直接使用自己的私钥 pri2 进行解密,获取到对称密钥 key,再使用保存的服务端公钥 pub1 加密后,将报文发送给服务器;
  9. 服务器拿到报文后,使用私钥 pri1 进行解密,获取对称密钥 key;
  10. 后续服务器与客户端都使用 key 进行对称加密,进行通信,此时黑客就可以使用对称密钥 key 劫持数据对数据进行窃听或者修改。

        那么如何解决中间人攻击这样的问题呢?最关键的一点就在于客户端拿到公钥的时候要有办法验证这个公钥是真的而不是黑客伪造的,这就需要服务器提供一个 “证书”。 

4.引入证书

       证书是一个结构化的数据,其中包含很多的信息,如:证书发布机构、证书有效期、公钥、证书所有者、签名……,服务器在使用 HTTPS 之前需要向第三方公正机构申请一份数字证书,然后服务器把证书传给浏览器,浏览器从证书中获取公钥就可以了,证书就相当于身份证,证明当前公钥的正确性。

        在证书中,用来验证证书真伪的信息就是 “签名”,对于签名要详细介绍一下,这是通过证书解决中间人攻击问题的关键,签名的形成也是基于非对称加密算法的,当服务端申请证书的时候,公正机构就会对服务端进行审核,并专门为该网站形成数字签名,过程如下:

  1. 公正机构拥有非对称加密的公钥:A 和私钥:A*;
  2. 公正机构对服务端申请的证书明文数据进行 hash,形成数据摘要;
  3. 公正机构再对数据摘要用私钥 A* 加密,得到签名 S。

        此时,服务端申请的证书明文与签名 S 就共同形成了证书,这样的证书就颁布给了服务端。这样就可以解决中间人攻击问题,此时数据传输的过程如下图所示:

        图中客户端获取到证书对证书进行校验的过程如下:

  1. 判定证书有效期是否过期;
  2. 判定证书的发布机构是否受信任(操作系统中已经内置了受信任的证书发布机构);
  3. 验证证书是否被篡改:从操作系统中获取证书发布机构的公钥,对签名进行解密,得到 hash 值(数据摘要)设为 hash1,然后计算整个证书的 hash 值设为 hash2,对比 hash1 和 hash2 是否相等,如果相等就说明证书没有被篡改过。 

三、HTTPS 常见问题

1.中间人能否篡改证书?

        中间人无法篡改证书,理由如下:

  • 中间人篡改了证书的明文,由于他没有公正机构的私钥,所以无法在 hash 之后使用私钥形成签名,那么就无法对篡改后的证书形成匹配的签名;
  • 如果中间人强行篡改,客户端收到证书后在验证时就会发现证书明文的 hash 值与签名解密后得到的 hash 值不一样,就会发现证书被篡改,从而终止向服务器传输信息。 

2.中间人能否调包证书?

        中间人无法调包整个证书,理由如下:

  • 中间人没有公正机构的私钥,所以无法制作假的证书;
  • 中间人只能向公正机构申请真证书,然后使用自己申请的证书进行掉包;
  • 但是证书中明文包含了域名等服务端认证信息,所以整体调包客户端依旧可以识别。

        我们要知道,中间人没有公正机构的私钥对任何证书都无法进行合法修改,包括自己的。 

3.HTTPS 工作完整流程

        左侧是客户端要做的事,右侧是服务器要做的事,完整流程如下图所示:

·总结

        文章到此就要结束了,本篇文章重点介绍了 HTTPS 的工作过程,在这里涉及到的密钥一共有三组,如下所示:

  • 第一组(非对称加密):用于校验证书是否被篡改,服务器持有私钥(私钥在注册证书时获得),客户端持有公钥(操作系统包含了可信任的认证机构有哪些,同时持有对应的公钥),服务器使⽤这个私钥对证书的签名进行加密,客户端通过这个公钥解密获取到证书的签名,从⽽校验证书内容是否是篡改过;
  • 第二组(非对称加密):用于协商⽣成对称加密的密钥,服务器生成这组 私钥-公钥 对,然后通过证书把公钥传递给客户端,然后客户端用这个公钥给⽣成的对称加密的密钥加密,传输给服务器,服务器通过私钥解密获取到对称加密的密钥;
  • 第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密。

        ⼀切的关键都是围绕这个对称加密的密钥,其他的机制都是辅助这个密钥⼯作的,第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器,第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥,如果你认为读了本篇文章您有所收获,希望给本篇文章点个赞,收藏走一波,后面我会继续与大家分享计算机网络的相关知识,关注博主不迷路~~~您的支持就是我创作最大的动力,我们下一篇文章再见~~~

相关文章:

计算机网络 —— HTTPS 协议

前一篇文章:计算机网络 —— HTTP 协议(详解)-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书? 2.中间人能否调…...

React第十七章(useRef)

useRef 当你在React中需要处理DOM元素或需要在组件渲染之间保持持久性数据时,便可以使用useRef。 import { useRef } from react; const refValue useRef(initialValue) refValue.current // 访问ref的值 类似于vue的ref,Vue的ref是.value,其次就是vu…...

React第十五节useReducer使用详解差异

useReducer() 的用法注意事项 1、 概述: useReducer() 常用于管理复杂的状态更新逻辑,特别是在状态更新依赖于多个条件或动作时,useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...

NanoLog起步笔记-5-客户端简要描述

nonolog起步笔记-5-客户端简要描述 客户端的简要的设计图路notify模式服务端最好分两个核 NanoLog::setLogLevel(NOTICE);从 NANO_LOG 开始NANO_LOGcompiling time的语句getNumNibblesNeeded:得到prompt中,number的数量countFmtParams:得到所…...

Flink:入门介绍

目录 一、Flink简介 2.1 Flink 架构 2.2 Flink 应用程序 运行模式 二、Flink 集群 部署 2.1 本地集群模式 2.1.1 安装JDK​编辑 2.1.2 下载、解压 Flink 2.1.3 启动集群 2.1.4 停止集群 2.2 Standalone 模式 2.2.0 集群规划 2.2.1 安装JDK 2.2.2 设置免密登录 2…...

目标跟踪领域经典论文解析

亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...

网络编程 | TCP套接字通信及编程实现经验教程

1、TCP基础铺垫 TCP/IP协议簇中包含了如TCP、UDP、IP、ICMP、ARP、HTTP等通信协议。TCP协议是TCP/IP协议簇中最为常见且重要的通信方式之一,它为互联网上的数据传输提供了可靠性和连接管理。 TCP(Transmission Control Protocol,传输控制协议…...

SAP导出表结构并保存到Excel 源码程序

SAP导出表结构并保存到Excel,方便写代码时复制粘贴 经常做接口,需要copy表结构,找到了这样一个程程,特别有用。 01. 先看结果...

Linux下redis环境的搭建

1.redis的下载 redis官网下载redis的linux压缩包,官网地址:Redis下载 网盘链接: 通过网盘分享的文件:redis-5.0.4.tar.gz 链接: https://pan.baidu.com/s/1cz3ifYrDcHWZXmT1fNzBrQ?pwdehgj 提取码: ehgj 2.redis安装与配置 将包上传到 /…...

REDMI瞄准游戏赛道,推出小屏平板

近日,REDMI推出了一款8.8英寸的小屏平板,引发市场关注。该平板采用LCD屏幕,搭载天玑9400处理器,定位游戏市场,意在开拓小屏平板的新领域‌。 ‌小屏平板新尝试‌ 这款REDMI平板未追随大屏潮流,而是选择了8…...

springai结合ollama

目录 ollama 介绍 使用 下载: 安装: 点击这个玩意next就行了。 运行 spring ai使用ollama调用本地部署的大模型 加依赖 配置yml 写代码 ollama 介绍 官网:Ollama Ollama是一个用于部署和运行各种开源大模型的工具; …...

React第十三节开发中常见问题之(视图更新、事件处理)

一、视图更新有哪些方案&#xff1f; useState用法介绍 1、对于数据变量 正常的增删改查&#xff0c;只会让数据更新&#xff0c;但是不会触发 React 视图的更新&#xff1b; 如&#xff1a; <script lang"jsx">const baseTable [{name:Andy, age: 18, id…...

【Appium报错】安装uiautomator2失败

目录 1、通过nmp安装uiautomator2&#xff1a;失败 2、通过 Appium 的平台直接安装驱动程序 3、通过pip 来安装 uiautomator2 1、通过nmp安装uiautomator2&#xff1a;失败 我先是通过npm安装的uiautomator2&#xff0c;也显示已经安装成功了&#xff1a; npm install -g …...

DataSophon集成CMAK KafkaManager

本次集成基于DDP1.2.1 集成CMAK-3.0.0.6 设计的json和tar包我放网盘了. 通过网盘分享的文件&#xff1a;DDP集成CMAK 链接: https://pan.baidu.com/s/1BR70Ajj9FxvjBlsOX4Ivhw?pwdcpmc 提取码: cpmc CMAK github上提供了zip压缩包.将压缩包解压之后 在根目录下加入启动脚本…...

Ubuntu22.04深度学习环境安装【显卡驱动安装】

前言 使用Windows配置环境失败&#xff0c;其中有一个包只有Linux版本&#xff0c;Windows版本的只有python3.10的&#xff0c;所以直接选用Linux来配置环境&#xff0c;显卡安装比较麻烦&#xff0c;单独出一期。 显卡驱动安装 方法一&#xff1a;在线安装&#xff08;操作…...

21届秋/校招面经

开篇先说一下我自身情况&#xff0c;东南大学本科计算机科学与技术专业毕业&#xff0c;gpa3.2/4.8。零零散散搞过一年多ACM&#xff0c;去年&#xff08;2019&#xff09;在icpc上海站拿了铜之后增加了信心&#xff08;因为当时训练总时间半年不到&#xff09;&#xff0c;于是…...

相机动态/在线标定

图1 图2 基本原理 【原理1】平行线在射影变换后会交于一点。如图所示,A为相机光心,蓝色矩形框为归一化平面,O为平面中心。地面四条黄色直线为平行且等距的车道线。HI交其中两条车道线于H、I, 过G作HI的平行线GM交车道线于M。HI、GM在归一化平面上的投影分别为JK、PN,二者会…...

MySQL 8.0 新特性汇总

文章目录 前言1. 运维管理 1.1 可持久化变量1.2 管理员端口1.3 资源组1.4 数据库粒度只读1.5 show processlist 实现方式1.6 加速索引创建速度1.7 控制连接的内存使用量1.8 克隆插件1.9 mysqldump 新增参数1.10 慢日志增强1.11 快速加列1.12 InnoDB 隐藏主键1.13 Redo 配置1.14…...

Resnet C ++ 部署 tensort 部署(四)

Resnet C 部署 pytorch功能测试&#xff08;一&#xff09; Resnet C 部署 模型训练&#xff08;二&#xff09; Resnet C 部署 模型测试&转 onnx&#xff08;三&#xff09; Resnet C 部署 tensort 部署&#xff08;四&#xff09; 之后&#xff0c;开始onnx 转trt 部…...

《Java核心技术I》对并发散列映射的批操作

对并发散列映射的批操作 Java API提供了批处理&#xff0c;计时其他线程处理映射&#xff0c;这些操作也能安全的执行。 3种不同操作&#xff1a; search(搜索)&#xff0c;为每个键或值应用一个函数&#xff0c;直到函数生成一个非null的结果&#xff0c;然后搜索终止&…...

记录一次使用git无权限的问题排查

正常的配置了公私钥之后&#xff0c;在gitlab中也存储了配对的公钥&#xff0c;但当使用git clone 时&#xff0c;总是报无权限 由于在这台机器中添加了多个公私钥&#xff0c;有点复杂&#xff0c;我们可以使用命令 ssh -vvvT 调试一下 ssh -vvvT yourGitlabAddr...

appium学习之二:adb命令

1、查看设备 adb devices 2、连接 adb connect IP:端口 3、安装 adb install xxx.apk 4、卸载 adb uninstall 【包名】 5、把对应目录下的1.txt文件传到手机sdcard下 adb push 1.txt /sdcard 6、进入对应的设备里 adb shell 7、切入sdcard目录 cd /sdcard 8、ls 查…...

Linux Vi/Vim使用 ⑥

掌握 CentOS 7 下的 Vi/Vim 编辑器&#xff1a;从安装到精通 在 CentOS 7 系统的日常运维、编程开发以及各类文本处理场景中&#xff0c;Vi/Vim 编辑器都是不可或缺的得力工具。它以轻量、高效、功能强大著称&#xff0c;虽然初次上手有一定学习门槛&#xff0c;但掌握之后便能…...

JCR一区牛顿-拉夫逊优化算法+分解对比!VMD-NRBO-Transformer-BiLSTM多变量时序光伏功率预测

JCR一区牛顿-拉夫逊优化算法分解对比&#xff01;VMD-NRBO-Transformer-BiLSTM多变量时序光伏功率预测 目录 JCR一区牛顿-拉夫逊优化算法分解对比&#xff01;VMD-NRBO-Transformer-BiLSTM多变量时序光伏功率预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.中科院…...

easyExcel实现表头批注

背景&#xff1a; 网上大部分都不能直接使用&#xff0c;为此总结一个方便入手且可用的工具&#xff0c;用自定义注解实现 依赖包&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>…...

Pytest测试用例使用小结

基础使用 Pytest 测试用例实现代码 import pytest from server.service import Servicepytest.fixture def service():return Service(logger)class TestService:classmethoddef setup_class(cls):"""初始化设置一次:return:"""logger.info(&q…...

LeetCode题练习与总结:132 模式--456

一、题目描述 给你一个整数数组 nums &#xff0c;数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成&#xff0c;并同时满足&#xff1a;i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 &a…...

IdentityServer4框架、ASP.NET core Identity

OAuth2.0 IdentityServer4 官网 中文官网 ASP.NET Core Identity提供了一个用来管理和存储用户账户的框架. IdentityServer4是基于ASP.NET Core实现的认证和授权框架&#xff0c;是对OpenID Connect和OAuth 2.0协议的实现。 IdentityServer是一个中间件,它可以添加符合OpenID…...

【分子材料发现】——GAP:催化过程中吸附构型的多模态语言和图学习(数据集处理详解)(二)

Multimodal Language and Graph Learning of Adsorption Configuration in Catalysis https://arxiv.org/abs/2401.07408Paper Data: https://doi.org/10.6084/m9.figshare.27208356.v2 1 Dataset CatBERTa训练的文本字符串输入来源于Open Catalyst 2020 &#xff08;OC20…...

SpringBoot开发过程中经常遇到问题解决方案分享

目录 1. Spring Boot应用启动缓慢 2. 数据库连接池配置问题 3. Spring Boot应用无法连接外部服务 4. 配置文件读取不生效 5. Spring Boot应用的日志输出不完整 6. Spring Boot中的Transactional事务管理问题 1. Spring Boot应用启动缓慢 问题原因&#xff1a; Spring Boo…...

这样建立自己的网站/网站推广基本方法是

本文实例介绍了Android实现ImageView图片双击放大及缩小的相关技巧&#xff0c;分享给大家供大家参考&#xff0c;具体内容如下public class DoubleScaleImageView extends ImageView implements OnTouchListener, OnGlobalLayoutListener {private boolean isFirst false;pri…...

网站设计制作报告/百度推广账号怎么注册

本节向大家讲解一下SVN提交更新的一些准则&#xff0c;上一节我们学习了SVN提交时遇到的一些问题及解决方法&#xff0c;这里和大家分享一下SVN提交更新的一些准则&#xff0c;欢迎大家一起来学习SVN提交更新问题。 记得有一次提交SVN更新&#xff0c;将Eclipse自动生成的文件也…...

宁波做网站公司/网络营销常用的方法有哪些

2016全新计算机应用基础试题及答案一、填空题(每空1分&#xff0c;共30分)1、计算计的软件系统通常分成______软件和______软件。2、字长是计算机______次能处理的______进制位数。3、1KB______B;1MB______KB。4、计算机中&#xff0c;中央处理器CPU由______和______两部分组成…...

帝国cms做中英文网站/口碑营销的概念是什么

今日内容:注意: selenium驱动的浏览器是干净的&#xff0c;没有任何缓存。 1、selenium剩余用法 2、selenium万能登录破解 3、selenium爬取京东商品信息 4、破解极验滑动验证码 Xpath语法: 今日作业: 1、总结课堂知识点&#xff0c;写博客 2、爬取京东商品信息 3、滑动验证&…...

企业网站需要在电信做哪些备案/百度在西安有分公司吗

HDInsight-Hadoop实战&#xff08;一&#xff09;站点日志分析简单介绍 在此演示样例中。你将使用分析站点日志文件的 HDInsight 查询来深入了解客户使用站点的方式。借助此分析。你可查看外部站点一天内对该站点的訪问频率以及用户体验的站点错误总结。 在此教程中&#xff0c…...

网上购物哪个平台最好货真价实/优化网站seo

上文提到python可以干很多事&#xff0c;很多时候生活中的很多问题都可以用代码解决&#xff0c;尤其是那些反复重复的事。今天就拿读研的时候的一个例子给大家说说&#xff0c;如何用代码解决生活中的问题。问题&#xff1a;导师带了3个班的图形学(100多号人)&#xff0c;期末…...