实验题目:授权及收回授权、约束、触发器
一、实验环境
实验使用普通PC机一台,MySQL数据库版本8.0.36,使用Navicat Premium 16提供图形化界面。
二、实验内容
1、数据库的账号、用户的建立、删除以及授权机制
2、数据库中数据完整性约束控制技术
3、触发器
三、具体完成情况(提供截图和文字说明)
1、数据库的账号、用户的建立、删除以及授权机制
1)对于系统中的每一个用户,MySQL 都为其建立特定的用户账号。用户账号管理是 MySQL 实现安全性的核心。本实验要求实践以下内容:创建用户、修改用户的设置及口令、锁定和解锁用户、删除用户。
A、创建用户语法:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
B、修改用户的设置及口令、锁定和解锁用户
SET PASSWORD FOR '用户名'@'localhost' = '新密码';
ALTER USER '用户名'@'localhost' ACCOUNT LOCK;
ALTER USER '用户名'@'localhost' ACCOUNT UNLOCK;
C、删除用户
DROP USER '用户名'@'localhost';
注:受篇幅限制,下述步骤仅供参考,完整操作截图的word版本可见上方本博文免费资源绑定。
2)MySQL 定义了一整套丰富、完整的权限,通过授予或撤销用户适当的权限,实现了安全的数据库访问控制。在 MySQL 数据库中,有两类权限,即对象权限和系统权限。对象级别权限是由用户赋予的访问或操作数据库对象的权限。
A、系统权限不是控制对指定数据库对象的访问,而是用来许可对各种特性的访问,或许可 MySQL 数据库中的特定任务。
授予用户系统权限的基本语法格式如下:
-- 授权用户访问权限
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'localhost' WITH GRANT OPTION;
B、对象权限可以用来控制对指定数据库对象的访问。
授予用户对象权限的语法格式如下:
GRANT object_privilege ON object_name TO 'username'@'host' [WITH GRANT OPTION];
3)为了简化权限管理并提高效率,可以使用角色,角色是具有名称的一组系统权限和对象权限的集合。
创建数据库角色的基本语法格式如下:
CREATE ROLE 'role01';
GRANT ALL PRIVILEGES ON database_name.* TO 'role01';
GRANT 'role01' TO 'user01'@'localhost';
4)收回用户所拥有的权限
REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'host';
2、数据库中数据完整性约束控制技术
1)创建一个学生信息表,要求学生学号为主码(primary key),学生姓名不能取空值,并要求学生姓名取值唯一,性别只能取“男”、“女”,默认值为“男”,年龄在 15 到 40 岁之间。
CREATE TABLE student(
sno VARCHAR(10) PRIMARY KEY,
sname VARCHAR(30) UNIQUE NOT NULL,
ssex ENUM('男', '女') DEFAULT '男',
sage INT CHECK(sage BETWEEN 15 AND 40),
sdept VARCHAR(30)
);
2)创建一个课程信息表,要求课程号为主码,课程名不能为空,取值唯一,前修课为外键,参照课程表的课程号。
CREATE TABLE course(
cno VARCHAR(10) PRIMARY KEY,
cname VARCHAR(30) UNIQUE NOT NULL,
cpno VARCHAR(10),
ccredit DECIMAL(4,2),
FOREIGN KEY(cpno) REFERENCES course(cno) ON DELETE CASCADE
);
3、触发器
是否对数据库进行了安全性控制和完整性控制,用户就可以自由地对数据进行操作而不受任何限制了?
举例 1:修改记录只能在正常工作时间段内(非星期六和星期日的 8 点到 18 点)。
举例 2:在签订一份订单时,货物的库存量应减少。怎么办?
使用触发器可以解决上述问题。
1)定义触发器的语法如下:
DELIMITER //
CREATE TRIGGER `<触发器名>`
{BEFORE|AFTER|INSTEAD OF} <触发事件> ON `<表名>`
FOR EACH ROW
BEGIN
-- 可选的触发条件
IF <触发条件> THEN
-- 触发动作体
<触发动作体>
END IF;
END; //
DELIMITER ;
2)定义一个 BEFORE 行级触发器,为学生表 student 定义完整性规则“如果学生为女生,则学生的年龄不得低于 15 岁,如果低于 15 岁,自动改为 15 岁”。
CREATE TRIGGER Insert_Or_Update_sage
BEFORE INSERT OR UPDATE ON student
FOR EACH ROW
BEGIN
IF NEW.ssex = '女' AND NEW.sage < 15 THEN
SET NEW.sage = 15;
END IF;
END;
3)定义一个 BEFORE 语句级触发器,为学生表 student 定义以下限制:不能在周末或非工作时间修改数据 (非星期六和星期日的 8 点到 18 点)。
CREATE TRIGGER operate_student
BEFORE INSERT OR UPDATE OR DELETE ON student
FOR EACH ROW
BEGIN
IF DAYOFWEEK(NOW()) IN (1, 7) OR HOUR(NOW()) NOT BETWEEN 8 AND 18 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '不能在非工作日或工作时间外修改数据库';
END IF;
END;
4)删除触发器。
DROP TRIGGER trigger_name;
5)练习以下内容:
1、定义 AFTER 行级触发器,当学生表 Student 的年龄发生变化后就自动在年龄变化表sage_log 中增加一条相应记录
DELIMITER //
CREATE TRIGGER after_age_change
AFTER UPDATE ON Student
FOR EACH ROW
BEGIN
IF OLD.age != NEW.age THEN
INSERT INTO sage_log (student_id, old_age, new_age, change_time)
VALUES (OLD.id, OLD.age, NEW.age, NOW());
END IF;
END;
//
DELIMITER ;
2、定义 AFTER 行级触发器,当删除学生表 Student 的一个学生信息后,同时删除学生选课表中该学生的所有选课记录
DELIMITER //
CREATE TRIGGER delete_student_trigger
AFTER DELETE ON Student
FOR EACH ROW
BEGIN
DELETE FROM student_courses WHERE student_id = OLD.id; -- 假设Student表的主键是id
END;
//
DELIMITER ;
3、需要对在表上进行 DML 操作的用户进行安全检查,看是否具有合适的特权
SELECT *
FROM information_schema.TABLE_PRIVILEGES
WHERE GRANTEE = 'actual_user_name'@'actual_host'
AND TABLE_SCHEMA = 'actual_database_name'
AND TABLE_NAME = 'actual_table_name';
四、出现的问题
在构造SQL查询时,我们最初没有正确地将占位符(如user_name、host、your_database_name和your_table_name)替换为实际的值,导致查询无法正确执行。这提醒我们在编写查询时需要仔细核对并替换所有的占位符。
五、解决方案
在编写SQL查询时,我们仔细检查了所有的占位符,并确保每一个都被正确地替换为了实际的值。为了避免遗漏或错误,我们使用了文本编辑器的查找和替换功能,逐一检查并替换了user_name、host、your_database_name和your_table_name等占位符。
六、实验总结
在本次MySQL实验中,我深入学习了数据库用户管理、权限分配、数据完整性控制以及触发器的应用。通过实际操作,更加熟悉了MySQL数据库的基本操作,并掌握了如何创建、修改和删除用户,以及如何为用户分配适当的权限,从而确保数据库的安全性。此外,还学习了如何通过设置数据完整性约束来保证数据的准确性和一致性,这在实际应用中至关重要。触发器的使用则让我了解到如何在特定数据库事件发生时自动执行某些操作,这大大提升了数据库管理的自动化程度。总的来说,这次实验不仅提升了我的数据库操作技能,还加深了我对数据库安全性和完整性的理解。
相关文章:
实验题目:授权及收回授权、约束、触发器
一、实验环境 实验使用普通PC机一台,MySQL数据库版本8.0.36,使用Navicat Premium 16提供图形化界面。 二、实验内容 1、数据库的账号、用户的建立、删除以及授权机制 2、数据库中数据完整性约束控制技术 3、触发器 三、具体完成情况(提…...
Spark(8)配置Hadoop集群环境-使用脚本命令实现集群文件同步
一.hadoop的运行模式 二.scp命令————基本使用 三.scp命令———拓展使用 四.rsync远程同步 五.xsync脚本集群之间的同步 一.hadoop的运行模式 hadoop一共有如下三种运行方式: 1. 本地运行。数据存储在linux本地,测试偶尔用一下。我们上一节课使用…...
c#中使用时间戳转换器
在C#中,时间戳转换器通常用于将时间戳(通常是一个表示自某一特定时间点(如1970年1月1日UTC)以来的毫秒数的长整型值)转换为DateTime对象,或者将DateTime对象转换回时间戳。以下是几种实现这一功能的方法: 1. 使用DateTime的构造函数 将时间戳转换为DateTime long tim…...
LLM中的transformer结构学习(二 完结 Multi-Head Attention、Encoder、Decoder)
文章目录 LLM中的transformer结构学习(二 完结 Multi-Head Attention、Encoder、Decoder)Self-Attention (自注意力机制)结构多头注意力 EncoderAdd & Norm 层Feed Forward 层 EncoderDecoder的第一个Multi-Head AttentionMas…...
FreeSWITCH 之 chat
要把 FreeSWITCH 之 chat 完全研究清楚,似乎不容易 发送,路由,接收 跟哪些模块有关 等等 咱一边查资料,一边整理,不着急 先看看 Kamalio 怎么发 MESSAGE loadmodule "uac.so"route[uac_send_message] {…...
本地fake server,
C# 制作的系统级tcp 重定向,整个系统只要有访问指定url,返回自定义内容到访问端。不局限在浏览器单一方面。 再者请理解这个图的含金量,服务器down机都可以模拟。 用途那就太多了,当然很多用途都不正当。嘿嘿 如果你很想要源代…...
用Deepseek写一个 HTML 和 JavaScript 实现一个简单的飞机游戏
大家好!今天我将分享如何使用 HTML 和 JavaScript 编写一个简单的飞机游戏。这个游戏的核心功能包括:控制飞机移动、发射子弹、敌机生成、碰撞检测和得分统计。代码简洁易懂,适合初学者学习和实践。 游戏功能概述 玩家控制:使用键…...
解析 SQL,就用 sqlparse!
文章目录 解析 SQL,就用 sqlparse!一、背景:为什么你需要 sqlparse?二、什么是 sqlparse?三、如何安装 sqlparse?四、简单易用的库函数1\. parse(sql)2\. format(sql, **options)3\. split(sql)4\. get_typ…...
Flask 全栈学习指南
一、Flask 基础核心 1. 核心概念与启动流程 WSGI 与 Werkzeug Flask 基于 Werkzeug 实现 WSGI 协议,处理 HTTP 请求到响应的全流程。手动实现 WSGI 应用示例:def simple_app(environ, start_response):status 200 OKheaders [(Content-type, text/pla…...
git的使用
1、git的安装(windows10) 网址:Git - Downloading Package全部默认安装就好。在任意文件夹中右击,列表中出现git即为安装成功。 2、git的基本配置 右击打开git bash设置用户信息 git config --global user.name "username…...
MQTT协议下温度数据上报观测云最佳实践
MQTT 介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的、基于发布/订阅模式的消息传输协议,专为低带宽、高延迟或不可靠的网络环境设计,广泛应用于物联网(IoT…...
什么是Flask
Flask是Python中一个简单、灵活和易用的Web框架,适合初学者使用。它提供了丰富的功能和扩展性,可以帮助开发者快速构建功能完善的Web应用程序。 以下是Python Flask框架的一些特点和功能: Flask 是一个使用 Python 编写的轻量级 WSGI 微 Web…...
数字投屏叫号器-发射端python窗口定制
窗口 本系列前章介绍,叫号器的显示端,完成了视频音频的形成和传输的介绍。本章节开始定制小窗口。 最终实现,处于桌面最前端,发送指令,集合前篇即可完成: 处理本地text.txt更新,随之被rtsp采集…...
文本转语音-音画适时推送rtsp并播放
文本语音 rtsp适时播放叫号系统的底层逻辑 发布Linux, unix socket 和window win32做为音频源的 python10下的(ffmpeg version 7.1) 可运行版本. 这两天在弄这个,前2篇是通过虚拟声卡,达到了最简单的一个逻辑,播放文本就从声卡发声࿰…...
clickhouse修改和删除数据
标题:ClickHouse中修改和删除数据的简易指南 在大数据时代,数据库技术的发展日新月异。作为一款专为实时分析设计的列式数据库管理系统,ClickHouse因其高效的查询性能而受到欢迎。照这么推测的话,对于那些习惯于传统SQL操作&…...
2025CSP-J 冲刺训练(1):二分
2025CSP-J 冲刺训练 1 一、二分查找函数1. 头文件2. 前提条件3. 功能函数3.1 lower_bound3.2 upper_bound 二、二分答案模板1. 前提条件2. 模板 三、典型例题1. 寻找固定的和1.1 审题1.2 分析1.3 参考答案 2. Snuke Festival2.1 审题2.2 分析2.3 参考答案 四、拓展例题1. 晒衣服…...
无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战
文章目录 前言1. Windows 开启远程桌面2. Linux安装rdesktop工具3. Win安装Cpolar工具4. 配置远程桌面地址5. 远程桌面连接测试6. 设置固定远程地址7. 固定地址连接测试 前言 如今远程办公已经从一种选择变成了许多企业和个人的必修课,而如何在Linux系统上高效地访…...
Win10 访问 Ubuntu 18 硬盘
目录 方案一:使用Samba共享服务Ubuntu 18 端配置Windows 10 端访问 方案二:使用 SSHFS(需在 Windows 上安装 SSH 客户端)Ubuntu 18 端配置Windows 10 端配置 方案三:使用 FTP 服务Ubuntu 18 端配置Windows 10 端访问 方…...
算法.习题篇
算法 — 地大复试 模拟 while循环和MOD循环计数 1.约瑟夫问题 http://bailian.openjudge.cn/practice/3254 using namespace std;bool isNoPeople(vector<bool> c)//判断当前数组是否一个小孩都没有了 {bool nopeople true;for (bool ival : c){if ( ival true)nop…...
upload-labs文件上传
第一关 上传一个1.jpg的文件,在里面写好一句webshell 保留一个数据包,将其中截获的1.jpg改为1.php后重新发送 可以看到,已经成功上传 第二关 写一个webshell如图,为2.php 第二关在过滤tpye的属性,在上传2.php后使用b…...
一二三应用开发平台——能力扩展:多数据源支持
背景 随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源应运而生。 技术选型 MyBatis-Plus 的官网提供了两种多数据源扩展插件:开源生态的 <font style"color:rgb(53, 56, 65);">dynamic-datasource</fon…...
【Python】整数除法不正确,少1的问题,以及有关浮点数转换的精度问题
1. 问题 今天在做leetcode 不同路径 的时候发现了个问题 对于m53 n4class Solution:def uniquePaths(self, m: int, n: int) -> int:rlt 1for i in range(0, m-1):rlt * (m n - 2 - i)for i in range(0, m-1):rlt / (i 1)return int(rlt)为什么这个结果是 26234class S…...
【贪心算法】简介
1.贪心算法 贪心策略:解决问题的策略,局部最优----》全局最优 (1)把解决问题的过程分成若干步 (2)解决每一步的时候,都选择当前看起来的“最优”的算法 (3)“希望”得…...
狮子座大数据分析(python爬虫版)
十二星座爱情性格 - 星座屋 首先找到一个星座网站,作为基础内容,来获取信息 网页爬取与信息提取 我们首先利用爬虫技术(如 Python 中的 requests 与 BeautifulSoup 库)获取页面内容。该页面(xzw.com/astro/leo/&…...
【商城实战(20)】商品管理功能深化实战
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
YC 孵化项目 Pinch:实时语音翻译视频会议平台;Mistral OCR:能处理多语言多模态复杂文档丨日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 …...
数据库原理6
1.数据是信息的载体 2.数据库应用程序人员的主要职责:编写应用系统的程序模块 3.关系规范化理论主要属于数据库理论的研究范畴 4.数据库主要有检索和修改(包括插入,删除,更新)两大操作 5.概念模型又称为语义模型。…...
深度学习与大模型基础-向量
大家好!今天我们来聊聊向量(Vector)。别被这个词吓到,其实向量在我们的生活中无处不在,只是我们没注意罢了。 1. 向量是什么? 简单来说,向量就是有大小和方向的量。比如你从家走到学校&#x…...
OpenManus:3小时复刻 Manus(OpenManus安装指南)
项目地址:GitHub - mannaandpoem/OpenManus: No fortress, purely open ground. OpenManus is Coming. 安装指南 我们提供两种安装方式。推荐使用方式二(uv),因为它能提供更快的安装速度和更好的依赖管理。 方式一:使…...
2025年渗透测试面试题总结-快某手-安全实习生(一面、二面)(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 快某手-安全实习生 一面 一、Linux操作:查看进程PID的5种方法 二、Elasticsearch&#x…...
【微信小程序】uniapp开发微信小程序
uniapp开发微信小程序 1、上拉加载 下拉刷新 import { onReachBottom, onPullDownRefresh } from dcloudio/uni-app;配置允许下拉刷新: {"path" : "pages/pet/pet","style" : {"navigationBarTitleText" : ""…...
动态规划_最大子数组和
53. 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例 1:输入:nums [-2,1,-3,4,-1,2,1,-5,4] …...
从零开始的python学习(五)P71+P72+P73+P74
本文章记录观看B站python教程学习笔记和实践感悟,视频链接:【花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…...
Vue3实战学习(Element-Plus常用组件的使用(输入框、下拉框、单选框多选框、el-image图片))(上)(5)
目录 一、Vue3工程环境配置、项目基础脚手架搭建、Vue3基础语法、Vue3集成Element-Plus的详细教程。(博客链接如下) 二、Element-Plus常用组件使用。 (1)el-input。(input输入框) <1>正常状态的el-input。 <2>el-input的disable状态。 <3…...
HarmonyOS学习第18天:多媒体功能全解析
一、开篇引入 在当今数字化时代,多媒体已经深度融入我们的日常生活。无论是在工作中通过视频会议进行沟通协作,还是在学习时借助在线课程的音频讲解加深理解,亦或是在休闲时光用手机播放音乐放松身心、观看视频打发时间,多媒体功…...
多模态融合的分类、跨模态对齐的方法
两者的主要区别 维度扩模态对齐扩模态融合目标对齐模态间的表示,使其语义一致融合模态间的信息,生成联合表示关注点模态间的相似性和语义一致性模态间的互补性和信息整合空间映射到共享的公共语义空间生成新的联合特征空间方法对比学习、共享空间、注意…...
软件高级架构师 - 软件工程
补充中 测试 测试类型 静态测试 动态测试 测试阶段 单元测试中,包含性能测试,如下: 集成测试中,包含以下: 维护 遗留系统处置 高水平低价值:采取集成 对于这类系统,采取 集成 的方式&…...
Uniapp项目运行到微信小程序、H5、APP等多个平台教程
摘要:Uniapp作为一款基于Vue.js的跨平台开发框架,支持“一次开发,多端部署”。本文将手把手教你如何将Uniapp项目运行到微信小程序、H5、APP等多个平台,并解析常见问题。 一、环境准备 在开始前,请确保已安装以下工具…...
【JavaWeb12】数据交换与异步请求:JSON与Ajax的绝妙搭配是否塑造了Web的交互革命?
文章目录 🌍一. 数据交换--JSON❄️1. JSON介绍❄️2. JSON 快速入门❄️3. JSON 对象和字符串对象转换❄️4. JSON 在 java 中使用❄️5. 代码演示 🌍二. 异步请求--Ajax❄️1. 基本介绍❄️2. JavaScript 原生 Ajax 请求❄️3. JQuery 的 Ajax 请求 &a…...
2025-03-10 吴恩达机器学习1——机器学习概述
文章目录 1 监督学习1.1 回归1.2 分类 2 无监督学习2.1 聚类2.2 异常检测2.3 降维 3 使用 Jupyter Notebook 1959 年,Arthur Samuel 将机器学习定义如下: Field of study that gives computers the ability to learn without being explicitly pro…...
Spring Boot整合WebSocket
目录 ?引言 1.WebSocket 基础知识 ?1.1 什么是 WebSocket? ?1.2 WebSocket 的应用场景 ?2.Spring Boot WebSocket 整合步骤 2.1 创建 Spring Boot 项目 2.2 添加 Maven 依赖 2.3 配置 WebSocket 2.4 创建 WebSocket 控制器 2.5 创建前端页面 引言 在…...
PostgreSQL - Windows PostgreSQL 下载与安装
Windows PostgreSQL 下载与安装 1、PostgreSQL 下载 下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 2、PostgreSQL 安装 启动安装程序 -> 点击 【Next】 指定安装路径 -> 点击 【Next】 默认勾选 -> 点击 【Next】 指…...
【Java面试题汇总】Java面试100道最新合集!
1.说说你对面向对象的理解 得分点 封装,继承,多态、概念、实现方式和优缺点 面向对象的三大基本特征是:封装、继承、多态。 封装:将对象的状态和行为包装在一个类中并对外界隐藏实现的细节,可以通过访问修饰符控制成员的访问权限,…...
【LLM】kimi 1.5模型架构和训练流程
note 推出两个多模态模型,深度思考模型 long-CoT 对标 o1,通用模型 short-CoT 模型对标 gpt-4o。 文章目录 note一、kimi 1.5模型训练流程预训练SFT训练long-CoT SFTRL训练long2short 小结Reference 一、kimi 1.5模型训练流程 推出两个多模态模型&…...
Android Studio 配置国内镜像源
Android Studio版本号:2022.1.1 Patch 2 1、配置gradle国内镜像,用腾讯云 镜像源地址:https\://mirrors.cloud.tencent.com/gradle 2、配置Android SDK国内镜像 地址:Index of /AndroidSDK/...
永洪科技深度分析实战,零售企业的销量预测
随着人工智能技术的不断发展,智能预测已经成为各个领域的重要应用之一。现在,智能预测技术已经广泛应用于金融、零售、医疗、能源等领域,为企业和个人提供决策支持。 智能预测技术通过分析大量的数据,利用机器学习和深度学习算法…...
Pytorch实现之利用CGAN鉴别真假图像
简介 简介:利用生成对抗网络来鉴别是真图像还是假图像。 论文题目:Detection and Identification of Fake Images Using Conditional Generative Adversarial Networks (CGANs) (基于条件生成对抗网络(CGAN)的假图像检测与识别) 会议:16th IEEE International Confer…...
开源模型时代的 AI 开发革命:Dify 技术深度解析
开源模型时代的AI开发革命:Dify技术深度解析 引言:AI开发的开源新纪元 在生成式AI技术突飞猛进的2025年,开源模型正成为推动行业创新的核心力量。据统计,全球超过80%的AI开发者正在使用开源模型构建应用,这一趋势不仅…...
网络DNS怎么更改?
访问速度慢或某些网站无法打开?改变网络DNS设置可能会帮助解决这些问题。本文将详细介绍如何更改网络DNS,包括更改的原因、具体步骤。 一、为什么要更改DNS? 更改DNS的原因有很多,以下是一些主要的考虑因素:某些公共DNS服务器的响应速度比…...
计算机网络篇:基础知识总结与基于长期主义的内容更新
基础知识总结 和 MySQL 类似,我同样花了一周左右的时间根据 csview 对计算机网络部分的八股文进行了整理,主要的内容包括:概述、TCP 与 UDP、IP、HTTP,其中我个人认为最重要的是 TCP 这部分的内容。 在此做一篇目录索引…...