diff --git a/.vitepress/config.js b/.vitepress/config.js index d78b1a8..3708412 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -1,9 +1,14 @@ // import { defineConfig } from 'vitepress' import { withMermaid } from "vitepress-plugin-mermaid"; import mathjax3 from 'markdown-it-mathjax3'; -import { main_sidebar, chapter2, chapter3, chapter4, chapter5, chapter6, chapter7, chapter8 } from './sidebar.js'; +import { main_sidebar, chapter2, chapter3, chapter4, chapter5, chapter6, chapter7, chapter8, chapter9 } from './sidebar.js'; import { nav } from './nav.js'; import PanguPlugin from 'markdown-it-pangu' +import { createWriteStream } from 'node:fs' +import { resolve } from 'node:path' +import { SitemapStream } from 'sitemap' + +const links = [] const customElements = [ 'mjx-container', @@ -115,6 +120,7 @@ export default withMermaid({ '/6.计算机安全/': chapter6(), '/7.网络应用开发/': chapter7(), '/8.基础学科/': chapter8(), + '/9.计算机网络/': chapter9(), }, outline: [2, 6], socialLinks: [ @@ -151,5 +157,23 @@ export default withMermaid({ }, }, }, + transformHtml: (_, id, { pageData }) => { + if (!/[\\/]404\.html$/.test(id)) + links.push({ + // you might need to change this if not using clean urls mode + url: pageData.relativePath.replace(/((^|\/)index)?\.md$/, '$2'), + lastmod: pageData.lastUpdated + }) + }, + buildEnd: async ({ outDir }) => { + const sitemap = new SitemapStream({ + hostname: 'https://hdu-cs.wiki/' + }) + const writeStream = createWriteStream(resolve(outDir, 'sitemap.xml')) + sitemap.pipe(writeStream) + links.forEach((link) => sitemap.write(link)) + sitemap.end() + await new Promise((r) => writeStream.on('finish', r)) + }, }) diff --git a/.vitepress/sidebar.js b/.vitepress/sidebar.js index b412eea..607f7f2 100644 --- a/.vitepress/sidebar.js +++ b/.vitepress/sidebar.js @@ -67,6 +67,11 @@ export function main_sidebar() { collapsed: true, items: [{ text: "8.基础学科", link: "/8.基础学科/8.基础学科" }] }, + { + text: "9.计算机网络", + collapsed: true, + items: [{ text: "9.计算机网络", link: "/9.计算机网络/9.计算机网络" }] + }, { text: 'Contributors', link: '/contributors' @@ -636,4 +641,17 @@ export function chapter8() { ] } ] +} + +export function chapter9() { + return [ + { text: '返回上一层', link: '/简介' }, + { + text: '9.计算机网络', + collapsed: false, + items: [ + { text: '9.计算机网络', link: '/9.计算机网络/9.计算机网络' }, + ] + } + ] } \ No newline at end of file diff --git a/3.编程思维体系构建/3.4.2用什么写 C 语言.md b/3.编程思维体系构建/3.4.2用什么写 C 语言.md index 7296b69..ca9cac3 100644 --- a/3.编程思维体系构建/3.4.2用什么写 C 语言.md +++ b/3.编程思维体系构建/3.4.2用什么写 C 语言.md @@ -12,7 +12,7 @@ Visual Studio (以下简称 VS )是 Windows 下最完美的 C/C++ 等语言 什么是 IDE,什么是代码编辑器,什么是编译器等等细碎问题参考文档 [3.1 该使用哪个编辑器???](3.1%E8%AF%A5%E4%BD%BF%E7%94%A8%E5%93%AA%E4%B8%AA%E7%BC%96%E8%BE%91%E5%99%A8%EF%BC%9F%EF%BC%9F%EF%BC%9F.md) 看不懂的话直接无脑装 -## 下载 +### 下载 [https://visualstudio.microsoft.com/zh-hans/downloads/](https://visualstudio.microsoft.com/zh-hans/downloads/) @@ -22,7 +22,7 @@ Visual Studio (以下简称 VS )是 Windows 下最完美的 C/C++ 等语言 社区版和专业版等的区别:社区版免费,功能上几乎无差别 -## 安装 +### VS安装 选择 C++ 桌面开发,其他不用选,有需要了再说。另外,Python 开发不好使,不要像我一样选 Python 开发。 @@ -34,7 +34,7 @@ Visual Studio (以下简称 VS )是 Windows 下最完美的 C/C++ 等语言 首次打开应该会让你选择开发环境和主题,建议开发环境选择 C++ ,主题根据个人喜好选择。 -## 创建项目 +### 创建项目 VS 是项目制,你需要创建一个项目才能开始编写代码并运行。 @@ -62,7 +62,7 @@ VS 是项目制,你需要创建一个项目才能开始编写代码并运行 注意控制台项目初始源文件后缀为.cpp 为 C++ 文件,如果编写 C 语言建议将后缀改为.c。.cpp 存在隐患:如果不小心使用了 C++ 的语法而非 C 存在的语法,编译器并不会报错,且 C 与 C++ 在某些特性存在区别。 -## “运行”你的 C 语言代码 +### “运行”你的 C 语言代码 C 语言是编译型语言,因此说“运行”代码其实并不是十分合适,不过我们初学,不用过分抠字眼,知道什么意思即可。 @@ -72,7 +72,7 @@ C 语言是编译型语言,因此说“运行”代码其实并不是十分合 你可能会发现在“本地 Windows 调试器”右侧还有一个绿色三角形,并且单击这个也可以“运行”,这两个的区别在于“本地 Windows 调试器”是调试运行,右侧那个是不调试直接运行。 -## scanf 报错 +### scanf 报错 如果你的代码被 VS 提示“This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.” @@ -82,19 +82,19 @@ C 语言是编译型语言,因此说“运行”代码其实并不是十分合 ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcniHhCIUQY0oB3ALlxqgciLd.png) -## 调试 +### 调试 IDE 相比于代码编辑器,最强大的一点莫过于成熟的调试系统。通过调试,可以快速定位代码中没有被编译器检查出来的逻辑错误。如果需要调试,则可以在这个位置单击,打下断点,并且运行程序,程序运行时,就会在此处暂停下来,暂停时就可以查看各个变量的值了。 ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnydHyaNPqUEVVWmbdGofX0d.png) -## 深色主题 +### 深色主题 需要深色主题请在工具-主题里更改为深色 -## Tips +### Tips -### 仔细查看报错 +#### 仔细查看报错 ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnC6TAAdtS0P5HzebFgFn2lc.png) @@ -102,43 +102,46 @@ IDE 相比于代码编辑器,最强大的一点莫过于成熟的调试系统 ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn7zL0QFakVTpYBdpOmmWOvc.png) -### 善用提示 +#### 善用提示 ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn2ouk043lNQEUkVkIS7bSSd.png) 当你打一些函数名或者关键字时,VS 会给出你语法提示,如果这个提示正确,按下 Tab 键即可将这个提示补全到你的代码里;或者你也可以跟着这个提示打一遍,防止打错关键字。 -## VS 的缺点 +### VS 的缺点 过于庞大,很多功能对于初学者来说用不上,对电脑的性能也有略微的要求,但瑕不掩瑜,他的开箱即用的使用体验还是很不错的。 -# Windows-Visual Studio Code +## Windows-Visual Studio Code Visual Studio Code(以下简称 vscode) 和 Visual Studio 都是微软开发的软件,区别在于 Visual Studio Code 是一个比较轻量的代码编辑器,在没有经过配置的情况下一般只能编写和查看代码,而不能运行,并且 Visual Studio Code 跨平台,在安装了丰富的插件后体验不输于一众 IDE。 + > NX 的留言: > 鄙人认为 C 的初学者应该使用 VSCode 更佳,环境准备可见鄙人博客 [『C/C++』VScode 环境配置](https://nickxu.me/2021/12/31/cc-vscode-huan-jing-pei-zhi/) -## 安装 -### 安装软件本体 +### vscode安装 + + +#### 安装软件本体 [https://code.visualstudio.com/](https://code.visualstudio.com/) 在该网站进行下载,并安装,安装完成并打开后可以根据右下角的提示来修改显示语言等 -### 安装编译器 +#### 安装编译器 如果你电脑上下载有 VS,那么安装编译器这一环节可以省略。如果电脑上没有 VS,则需要安装 VS,或者下载其他 C 语言编译器,如 gcc,clang,icc 等 -## 创建“项目” +### 创建“项目” vscode 的项目和 VS 不同,vscode 的项目比较松散,并没有 VS 那样是一套非常完善的项目系统。 首先需要一个空文件夹,并在 vscode 里打开这个文件夹。然后点击文件-新建文本文件,并选择语言为 C 语言。此时如果你是第一次创建 C 语言文件,那么右下角会弹出提示,提示你安装 C/C++ 插件,安装即可。 -## 编写代码并运行 +### 编写代码并运行 编写完代码后,保存文件,并点击运行-启动调试 @@ -148,7 +151,7 @@ vscode 的项目和 VS 不同,vscode 的项目比较松散,并没有 VS 那 至此就已经完成了编程和调试的基本功能。如果你想要更丰富的功能,比如多文件编译等等,可以自行去网上搜索相关的配置教程。vscode 配置好了是非常好用的,但缺点就在于配置比较麻烦。 -# Windows-CLion +## Windows-CLion CLion 是 jetbrains 家族的 C 语言 IDE @@ -156,20 +159,21 @@ CLion 是 jetbrains 家族的 C 语言 IDE 收费软件,但可以从 GitHub 学生包里白嫖,喜欢折腾或者喜欢 jetbrains 家族软件风格的可以自己去折腾折腾。 -# Mac OS-Visual Studio Code +## Mac OS-Visual Studio Code 用法和 Windows 的差不多,但由于 Mac OS 自带 clang 编译器,所以无需额外安装编译器。 + > NX 的留言: > 使用自带的 clang 的确没问题,但是如果你想在 macOS 上使用 gcc/g++ ,[可参考鄙人的博客 在 Mac 的 VSC 中使用 g++ 编译器](https://nickxu.me/2023/04/04/%E5%9C%A8Mac%E7%9A%84VSCode%E4%B8%AD%E4%BD%BF%E7%94%A8g-%E7%BC%96%E8%AF%91%E5%99%A8) -# Mac OS-CLion +## Mac OS-CLion 同样和 Windows 的差不多。 -# Mac OS-Xcode +## Mac OS-Xcode XCode 是 mac 官方的 IDE,能编写所有 mac 家族设备的软件。但缺点是没有中文。 @@ -193,8 +197,7 @@ next 后选择项目保存的位置,之后即可到达以下界面: ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnmRygjmZfwFzODP2N6bVoEh.png) -# Linux - -## 你都用 Linux 了你还来问我?一边玩去! +## Linux +### 你都用 Linux 了你还来问我?一边玩去 diff --git a/3.编程思维体系构建/3.4.4C语言前置概念学习.md b/3.编程思维体系构建/3.4.4C语言前置概念学习.md index 538ae48..246cd8e 100644 --- a/3.编程思维体系构建/3.4.4C语言前置概念学习.md +++ b/3.编程思维体系构建/3.4.4C语言前置概念学习.md @@ -4,9 +4,7 @@ 以下方式难度由易到难,但并不意味着收获由小到大: -1.Video:[B 站翁恺的 C 语言课程](https://www.bilibili.com/video/BV19W411B7w1)(非常基础,缺点是只看视频学的过浅) - - +1.B 站翁恺的 C 语言课程(非常基础,缺点是只看视频学的过浅) 2.MOOC:[翁凯 C 课程的 MOOC 慕课](https://www.icourse163.org/course/ZJU-9001)(同上,慕课的习题和 Projects 性价比不高,几乎没有差别) diff --git a/9.计算机网络/9.计算机网络..md b/9.计算机网络/9.计算机网络..md deleted file mode 100644 index 4042650..0000000 --- a/9.计算机网络/9.计算机网络..md +++ /dev/null @@ -1,6 +0,0 @@ -# 9.计算机网络 -计算机网络的定义: - - 利用通信线路和通信设备,将地理位置不同的、功能独立的多台计算机互连起来,以功能完善的网络软件来实现资源共享和信息传递,就构成了计算机网络系统。 - -而我们学习计算机网络本质上可以理解为学习这个网络系统中的各种网络协议。 \ No newline at end of file diff --git a/9.计算机网络/9.计算机网络.md b/9.计算机网络/9.计算机网络.md new file mode 100644 index 0000000..df0e56c --- /dev/null +++ b/9.计算机网络/9.计算机网络.md @@ -0,0 +1,48 @@ +# 9.计算机网络 +计算机网络的定义: + + 利用通信线路和通信设备,将地理位置不同的、功能独立的多台计算机互连起来,以功能完善的网络软件来实现资源共享和信息传递,就构成了计算机网络系统。 + +而我们学习计算机网络本质上可以理解为学习这个网络系统中的各种网络协议。 + +## 我们可能会在本章讲这些东西 + +```mermaid + graph LR + 计算机网络 --> 计算机网络基础 + 计算机网络 --> 路由与交换 + 计算机网络 --> 隧道与代理 + 计算机网络 --> 路由佬入门指南 + 计算机网络基础 ---> 物理层 + 计算机网络基础 ---> 链路层 + 计算机网络基础 ---> 网络层 + 计算机网络基础 ---> 传输层 + 计算机网络基础 ---> DNS与应用层概述 + 路由与交换 ---> 路由设备 + 路由与交换 ---> 路由协议 + 路由与交换 ---> NAT + 路由与交换 ---> 真实互联网概述 + 隧道与代理 ---> GRE + 隧道与代理 ---> WireGuard + 隧道与代理 ---> L2TP/IPSec + 隧道与代理 ---> 正向代理 + 隧道与代理 ---> 反向代理 + 路由佬入门指南 ---> openwrt/bird/ikuai/ros/vyos + 路由佬入门指南 ---> 异地组网 + 路由佬入门指南 ---> 走得更深入... + 链路层 ---> 数据帧/MAC/CRC + 链路层 ---> ARP + 网络层 ---> IP地址 + 网络层 ---> 子网/掩码/CIDR + 网络层 ---> IPv6概述 + 传输层 ---> 端口 + 传输层 ---> UDP + 传输层 ---> TCP概述 + 传输层 ---> TCP握手挥手 + 传输层 ---> TCP滑动窗口 + 传输层 ---> TCP拥塞控制 + 路由协议 ---> RIP + 路由协议 ---> OSPF + 路由协议 ---> 自治域与BGP概述 + +``` \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 40643ff..9c5bbec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,8 @@ "@jupyterlab/theme-light-extension": "^4.0.3", "@vueuse/core": "^10.2.1", "markdown-it": "^13.0.1", - "markdown-it-pangu": "^1.0.2" + "markdown-it-pangu": "^1.0.2", + "sitemap": "^7.1.1" }, "devDependencies": { "@mermaid-js/mermaid-mindmap": "^9.3.0", @@ -1377,6 +1378,11 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", "dev": true }, + "node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -1392,6 +1398,14 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@types/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/scheduler": { "version": "0.16.3", "resolved": "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.3.tgz", @@ -1742,6 +1756,11 @@ "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", "dev": true }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", @@ -3516,6 +3535,11 @@ "postcss": "^8.3.11" } }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.0.tgz", @@ -3567,6 +3591,24 @@ "vscode-textmate": "^8.0.0" } }, + "node_modules/sitemap": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/sitemap/-/sitemap-7.1.1.tgz", + "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, "node_modules/slick": { "version": "1.12.2", "resolved": "https://registry.npmmirror.com/slick/-/slick-1.12.2.tgz", @@ -5568,6 +5610,11 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", "dev": true }, + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, "@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -5583,6 +5630,14 @@ "csstype": "^3.0.2" } }, + "@types/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@types/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", + "requires": { + "@types/node": "*" + } + }, "@types/scheduler": { "version": "0.16.3", "resolved": "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.3.tgz", @@ -5816,6 +5871,11 @@ "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", "dev": true }, + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", @@ -7293,6 +7353,11 @@ "postcss": "^8.3.11" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "scheduler": { "version": "0.23.0", "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.0.tgz", @@ -7335,6 +7400,17 @@ "vscode-textmate": "^8.0.0" } }, + "sitemap": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/sitemap/-/sitemap-7.1.1.tgz", + "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "requires": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + } + }, "slick": { "version": "1.12.2", "resolved": "https://registry.npmmirror.com/slick/-/slick-1.12.2.tgz", diff --git a/package.json b/package.json index c996506..7448d20 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "@jupyterlab/theme-light-extension": "^4.0.3", "@vueuse/core": "^10.2.1", "markdown-it": "^13.0.1", - "markdown-it-pangu": "^1.0.2" + "markdown-it-pangu": "^1.0.2", + "sitemap": "^7.1.1" }, "devDependencies": { "@mermaid-js/mermaid-mindmap": "^9.3.0",