From a5fd8545f4861908b99319da21ad81dd7d17bcbc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A5=80=E6=A2=A6?= <3501646051@qq.com>
Date: Fri, 9 Jan 2026 10:03:40 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20v1.0.0=20=E7=A5=80=E6=A2=A6=E7=AC=94?=
=?UTF-8?q?=E8=AE=B0=EF=BC=9A=E4=BB=8E=200=20=E5=88=B0=201=20=E7=9A=84?=
=?UTF-8?q?=E6=95=B0=E5=AD=97=E5=8C=96=E8=8A=B1=E5=9B=AD=E5=BB=BA=E8=AE=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitattributes | 14 +
.gitignore | 18 +
README.md | 89 +
README.zh-CN.md | 57 +
docs/.vuepress/client.ts | 8 +
docs/.vuepress/config.ts | 110 +
docs/.vuepress/navbar.ts | 80 +
docs/.vuepress/notes.ts | 194 +
docs/.vuepress/plume.config.ts | 25 +
docs/.vuepress/public/docs/.gitkeep | 0
docs/.vuepress/public/images/.gitkeep | 0
docs/.vuepress/public/images/elysia/1.jpg | Bin 0 -> 1082228 bytes
docs/.vuepress/public/images/elysia/2.png | Bin 0 -> 955177 bytes
docs/.vuepress/public/images/elysia/3.jpg | Bin 0 -> 614011 bytes
docs/.vuepress/public/images/elysia/4.jpg | Bin 0 -> 629085 bytes
docs/.vuepress/public/images/elysia/5.jpg | Bin 0 -> 521347 bytes
docs/.vuepress/public/images/elysia/6.jpg | Bin 0 -> 504032 bytes
docs/.vuepress/public/plume.svg | 1 +
docs/.vuepress/public/videos/.gitkeep | 0
docs/.vuepress/theme/components/RImg.vue | 27 +
docs/.vuepress/theme/shim.d.ts | 6 +
docs/.vuepress/theme/styles/custom.css | 50 +
docs/README.md | 18 +
docs/about.md | 65 +
docs/blog/collect/free_model_pai.md | 255 +
docs/blog/elysia/elysia_quotation.md | 298 +
.../Deploying_WSL2_on_Windows_10.md | 149 +
docs/blog/technology/Operate_WSL2.md | 120 +
.../signed-binary-representations.md | 118 +
docs/blog/website/EdgeOne_Pages_Images.md | 27 +
docs/friends.md | 30 +
docs/notes/ops/blockchain/README.md | 28 +
.../blockchain/practice/basic-deployment.md | 70 +
.../blockchain/practice/console-operator.md | 59 +
.../blockchain/practice/node-deployment.md | 122 +
.../ops/blockchain/theory/basic-principles.md | 6 +
.../blockchain/theory/fisco-bcos-node-type.md | 342 +
docs/notes/ops/docker/ETLCloud.md | 78 +
docs/notes/ops/docker/Postgres.md | 69 +
docs/notes/ops/docker/README.md | 39 +
docs/notes/ops/docker/mongodb.md | 69 +
docs/notes/ops/linux/README.md | 31 +
docs/notes/ops/linux/basic-commands.md | 210 +
docs/notes/ops/linux/other.md | 12 +
docs/notes/programming/c++/README.md | 49 +
docs/notes/programming/c++/basis.md | 10 +
docs/notes/programming/leetcode/README.md | 40 +
docs/notes/programming/leetcode/beginner.md | 13 +
docs/notes/programming/solidity/README.md | 21 +
.../programming/solidity/basic-syntax.md | 88 +
.../programming/solidity/case-analysis.md | 922 ++
.../programming/solidity/other/hardhat.md | 56 +
.../solidity/other/miscellaneous.md | 88 +
docs/notes/programming/web/README.md | 90 +
.../web/basic-syntax/html-css-js.md | 535 ++
.../html-lists-and-semantic-layout.md | 468 +
.../web/basic-syntax/html-tags-attributes.md | 424 +
.../web/basic-syntax/javascript-basics.md | 606 ++
docs/notes/subject/english/README.md | 22 +
docs/notes/subject/english/basis/README.md | 15 +
docs/notes/subject/english/exam/cet-4.md | 42 +
docs/notes/subject/english/grammar/README.md | 84 +
.../english/listening-speaking/README.md | 89 +
.../subject/english/reading-writing/README.md | 11 +
.../subject/english/vocabulary/README.md | 12 +
.../english/writing-translation/README.md | 11 +
docs/notes/theory/cryptography/README.md | 193 +
.../permutation-encryption.md | 107 +
.../substitution-ciphers.md | 170 +
docs/tools.md | 48 +
package-lock.json | 8232 +++++++++++++++++
package.json | 31 +
script/build-and-publish.bat | 153 +
script/start.bat | 3 +
script/start.sh | 2 +
75 files changed, 15529 insertions(+)
create mode 100644 .gitattributes
create mode 100644 .gitignore
create mode 100644 README.md
create mode 100644 README.zh-CN.md
create mode 100644 docs/.vuepress/client.ts
create mode 100644 docs/.vuepress/config.ts
create mode 100644 docs/.vuepress/navbar.ts
create mode 100644 docs/.vuepress/notes.ts
create mode 100644 docs/.vuepress/plume.config.ts
create mode 100644 docs/.vuepress/public/docs/.gitkeep
create mode 100644 docs/.vuepress/public/images/.gitkeep
create mode 100644 docs/.vuepress/public/images/elysia/1.jpg
create mode 100644 docs/.vuepress/public/images/elysia/2.png
create mode 100644 docs/.vuepress/public/images/elysia/3.jpg
create mode 100644 docs/.vuepress/public/images/elysia/4.jpg
create mode 100644 docs/.vuepress/public/images/elysia/5.jpg
create mode 100644 docs/.vuepress/public/images/elysia/6.jpg
create mode 100644 docs/.vuepress/public/plume.svg
create mode 100644 docs/.vuepress/public/videos/.gitkeep
create mode 100644 docs/.vuepress/theme/components/RImg.vue
create mode 100644 docs/.vuepress/theme/shim.d.ts
create mode 100644 docs/.vuepress/theme/styles/custom.css
create mode 100644 docs/README.md
create mode 100644 docs/about.md
create mode 100644 docs/blog/collect/free_model_pai.md
create mode 100644 docs/blog/elysia/elysia_quotation.md
create mode 100644 docs/blog/technology/Deploying_WSL2_on_Windows_10.md
create mode 100644 docs/blog/technology/Operate_WSL2.md
create mode 100644 docs/blog/technology/signed-binary-representations.md
create mode 100644 docs/blog/website/EdgeOne_Pages_Images.md
create mode 100644 docs/friends.md
create mode 100644 docs/notes/ops/blockchain/README.md
create mode 100644 docs/notes/ops/blockchain/practice/basic-deployment.md
create mode 100644 docs/notes/ops/blockchain/practice/console-operator.md
create mode 100644 docs/notes/ops/blockchain/practice/node-deployment.md
create mode 100644 docs/notes/ops/blockchain/theory/basic-principles.md
create mode 100644 docs/notes/ops/blockchain/theory/fisco-bcos-node-type.md
create mode 100644 docs/notes/ops/docker/ETLCloud.md
create mode 100644 docs/notes/ops/docker/Postgres.md
create mode 100644 docs/notes/ops/docker/README.md
create mode 100644 docs/notes/ops/docker/mongodb.md
create mode 100644 docs/notes/ops/linux/README.md
create mode 100644 docs/notes/ops/linux/basic-commands.md
create mode 100644 docs/notes/ops/linux/other.md
create mode 100644 docs/notes/programming/c++/README.md
create mode 100644 docs/notes/programming/c++/basis.md
create mode 100644 docs/notes/programming/leetcode/README.md
create mode 100644 docs/notes/programming/leetcode/beginner.md
create mode 100644 docs/notes/programming/solidity/README.md
create mode 100644 docs/notes/programming/solidity/basic-syntax.md
create mode 100644 docs/notes/programming/solidity/case-analysis.md
create mode 100644 docs/notes/programming/solidity/other/hardhat.md
create mode 100644 docs/notes/programming/solidity/other/miscellaneous.md
create mode 100644 docs/notes/programming/web/README.md
create mode 100644 docs/notes/programming/web/basic-syntax/html-css-js.md
create mode 100644 docs/notes/programming/web/basic-syntax/html-lists-and-semantic-layout.md
create mode 100644 docs/notes/programming/web/basic-syntax/html-tags-attributes.md
create mode 100644 docs/notes/programming/web/basic-syntax/javascript-basics.md
create mode 100644 docs/notes/subject/english/README.md
create mode 100644 docs/notes/subject/english/basis/README.md
create mode 100644 docs/notes/subject/english/exam/cet-4.md
create mode 100644 docs/notes/subject/english/grammar/README.md
create mode 100644 docs/notes/subject/english/listening-speaking/README.md
create mode 100644 docs/notes/subject/english/reading-writing/README.md
create mode 100644 docs/notes/subject/english/vocabulary/README.md
create mode 100644 docs/notes/subject/english/writing-translation/README.md
create mode 100644 docs/notes/theory/cryptography/README.md
create mode 100644 docs/notes/theory/cryptography/classical-encryption/permutation-encryption.md
create mode 100644 docs/notes/theory/cryptography/classical-encryption/substitution-ciphers.md
create mode 100644 docs/tools.md
create mode 100644 package-lock.json
create mode 100644 package.json
create mode 100644 script/build-and-publish.bat
create mode 100644 script/start.bat
create mode 100644 script/start.sh
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..78bb66a
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,14 @@
+* text eol=lf
+*.txt text eol=crlf
+
+*.png binary
+*.jpg binary
+*.jpeg binary
+*.ico binary
+*.gif binary
+*.tff binary
+*.woff binary
+*.woff2 binary
+*.mp4 binary
+*.webm binary
+*.mov binary
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6ac00d6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,18 @@
+**/node_modules
+
+docs/.vuepress/.cache
+docs/.vuepress/.temp
+docs/.vuepress/dist
+
+.trae/
+.DS_Store
+*.log
+
+# Build and Publish output
+_publish/
+
+# Local resources storage (not uploaded)
+resources/
+
+# Ensure .gitkeep files are always tracked
+!**/.gitkeep
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..90304b1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,89 @@
+# 祀梦的笔记网站
+
+[](https://opensource.org/licenses/MIT)
+
+一个基于 VuePress 的个人学习笔记和博客网站,记录编程学习、算法练习和日常生活的点滴。
+
+## 项目简介
+
+这个网站是我(祀梦)记录学习和生活的个人空间,主要包含以下内容:
+
+- **编程笔记**:记录C++、LeetCode算法等编程相关的学习笔记
+- **博客**:分享日常生活和学习心得
+- **工具推荐**:记录实用的开发工具和资源
+- **友情链接**:展示朋友的个人网站
+
+## 技术栈
+
+- [VuePress](https://vuepress.vuejs.org/) - 静态网站生成器
+- [VuePress Theme Plume](https://theme-plume.vuejs.press/) - 美观的博客主题
+- [Vue 3](https://vuejs.org/) - 前端框架
+- [Vite](https://vitejs.dev/) - 构建工具
+
+## 安装
+
+- 环境要求:
+ - Node.js:`^20.6.0` 或 `>=22.0.0`(推荐使用当前 LTS 或稳定版)
+ - npm:`>=10`
+
+- 安装步骤:
+ 1. 在项目根目录执行依赖安装:
+ ```sh
+ npm install
+ ```
+ 2. 启动开发服务器(任选其一):
+ - 常规方式:
+ ```sh
+ npm run docs:dev
+ ```
+ - Windows 快捷方式(尝试监听 `0.0.0.0` 以便局域网访问):
+ ```bat
+ .\start.bat
+ ```
+ - 若端口或权限受限,使用备用命令(绑定到本机并更换端口):
+ ```sh
+ npx vuepress@2.0.0-rc.24 dev docs --port 5173 --host localhost
+ ```
+ 3. 打开浏览器访问:
+ - `http://localhost:4567/`(默认)或
+ - `http://localhost:5173/`(如果使用备用命令)
+
+- 常见问题与排查:
+ - “`vuepress` 不是内部或外部命令”:通常为依赖未安装或安装失败,执行 `npm install` 后重试。
+ - “listen EACCES: permission denied 0.0.0.0:4567”:端口或绑定权限受限,改用 `--host localhost` 或更换端口(如 `--port 5173`)。
+ - 需要清理缓存后重试:
+ ```sh
+ npm run docs:dev-clean
+ ```
+ - 更换端口示例(以 8080 为例):
+ ```sh
+ npx vuepress dev docs --port 8080 --host localhost
+ ```
+
+## 使用
+
+```sh
+# 启动开发服务器(带热重载)
+npm run docs:dev
+
+# 清除缓存并启动开发服务器
+npm run docs:dev-clean
+
+# 构建生产版本
+npm run docs:build
+
+# 本地预览生产版本
+npm run docs:preview
+
+# 更新 VuePress 和主题
+npm run vp-update
+```
+
+## 文档链接
+
+- [VuePress 官方文档](https://vuepress.vuejs.org/)
+- [VuePress Theme Plume 文档](https://theme-plume.vuejs.press/)
+
+## License
+
+This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
diff --git a/README.zh-CN.md b/README.zh-CN.md
new file mode 100644
index 0000000..8dd3c8e
--- /dev/null
+++ b/README.zh-CN.md
@@ -0,0 +1,57 @@
+# 祀梦的笔记网站
+
+[](https://opensource.org/licenses/MIT)
+
+一个基于 VuePress 的个人学习笔记和博客网站,记录编程学习、算法练习和日常生活的点滴。
+
+## 项目简介
+
+这个网站是我(祀梦)记录学习和生活的个人空间,主要包含以下内容:
+
+- **编程笔记**:记录C++、LeetCode算法等编程相关的学习笔记
+- **博客**:分享日常生活和学习心得
+- **工具推荐**:记录实用的开发工具和资源
+- **友情链接**:展示朋友的个人网站
+
+## 技术栈
+
+- [VuePress](https://vuepress.vuejs.org/) - 静态网站生成器
+- [VuePress Theme Plume](https://theme-plume.vuejs.press/) - 美观的博客主题
+- [Vue 3](https://vuejs.org/) - 前端框架
+- [Vite](https://vitejs.dev/) - 构建工具
+
+## 安装
+
+确保您的 Node.js 版本符合要求(^20.6.0 || >=22.0.0),然后执行以下命令:
+
+```sh
+npm i
+```
+
+## 使用
+
+```sh
+# 启动开发服务器(带热重载)
+npm run docs:dev
+
+# 清除缓存并启动开发服务器
+npm run docs:dev-clean
+
+# 构建生产版本
+npm run docs:build
+
+# 本地预览生产版本
+npm run docs:preview
+
+# 更新 VuePress 和主题
+npm run vp-update
+```
+
+## 文档链接
+
+- [VuePress 官方文档](https://vuepress.vuejs.org/)
+- [VuePress Theme Plume 文档](https://theme-plume.vuejs.press/)
+
+## 许可证
+
+本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。
diff --git a/docs/.vuepress/client.ts b/docs/.vuepress/client.ts
new file mode 100644
index 0000000..aa1c369
--- /dev/null
+++ b/docs/.vuepress/client.ts
@@ -0,0 +1,8 @@
+import { defineClientConfig } from 'vuepress/client'
+import RImg from './theme/components/RImg.vue'
+
+export default defineClientConfig({
+ enhance({ app }) {
+ app.component('RImg', RImg)
+ },
+})
diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts
new file mode 100644
index 0000000..f76a28d
--- /dev/null
+++ b/docs/.vuepress/config.ts
@@ -0,0 +1,110 @@
+import { defineUserConfig } from 'vuepress'
+import { plumeTheme } from 'vuepress-theme-plume'
+import { viteBundler } from '@vuepress/bundler-vite'
+import { commentPlugin } from '@vuepress/plugin-comment'
+import { umamiAnalyticsPlugin } from '@vuepress/plugin-umami-analytics'
+import path from 'node:path'
+import { fileURLToPath } from 'node:url'
+
+const __filename = fileURLToPath(import.meta.url)
+const __dirname = path.dirname(__filename)
+
+export default defineUserConfig({
+ base: '/',
+ lang: 'zh-CN',
+ title: '仲夏夜之梦',
+ description: '爱与回忆的小世界,记录生活中的每一份温暖与感动',
+
+ head: [
+ ['link', { rel: 'icon', type: 'image/png', href: 'https://theme-plume.vuejs.press/favicon-32x32.png' }],
+ ],
+
+ bundler: viteBundler({
+ viteOptions: {
+ resolve: {
+ alias: {
+ },
+ },
+ },
+ }),
+ shouldPrefetch: false,
+
+ theme: plumeTheme({
+ /* 站点域名,启动 SEO 优化 */
+ hostname: 'https://www.simengweb.com',
+ /* 博客文章页面链接前缀 */
+ article: '/article/',
+
+ /* 启用数学公式支持和Mermaid图表 */
+ markdown: {
+ math: {
+ type: 'katex',
+ },
+ mermaid: true,
+ demo: true,
+ },
+ /**
+ * 编译缓存,加快编译速度
+ */
+ cache: 'filesystem',
+
+ /* 本地搜索, 默认启用 */
+ search: { provider: 'local' },
+ footer: {
+ message: '愿每一份温柔都被世界珍藏 ✨',
+ copyright: '沪ICP备2023010022号-1©2025祀梦的个人博客'
+ },
+ /**
+ * 博客相关配置
+ */
+ blog: {
+ postCover: {
+ layout: 'left',
+ width: 300,
+ compact: true
+ }
+ },
+
+ /**
+ * 文章贡献者配置
+ */
+ contributors: {
+ mode: 'inline',
+ info: [
+ {
+ username: 'si-meng-spec',
+ name: 'si-meng-spec',
+ alias: ['si-meng-spec'],
+ }
+ ]
+ },
+
+ /**
+ * Git插件配置
+ * 设置为true以在开发环境也启用
+ */
+ plugins: {
+ git: true
+ },
+
+ codeHighlighter: {
+ lineNumbers: true,
+ }
+
+ }),
+
+ plugins: [
+ commentPlugin({
+ provider: 'Waline',
+ serverURL: 'https://vercel.simengweb.com',
+ meta: ['nick'],
+ requiredMeta: ['nick']
+ }),
+ umamiAnalyticsPlugin({
+ id: '2114ab32-5543-4be1-b5e8-c4f2c9269d0d',
+ link: 'https://umami.simengweb.com/script.js',
+ domains: ['www.simengweb.com'],
+ cache: true
+ }),
+ ],
+})
diff --git a/docs/.vuepress/navbar.ts b/docs/.vuepress/navbar.ts
new file mode 100644
index 0000000..435271a
--- /dev/null
+++ b/docs/.vuepress/navbar.ts
@@ -0,0 +1,80 @@
+import { defineNavbarConfig } from 'vuepress-theme-plume'
+
+export default defineNavbarConfig([
+ {
+ text: '首页',
+ link: '/',
+ },
+ {
+ text: '博客',
+ link: '/blog/',
+ },
+ {
+ text: '学科知识',
+ items: [
+ {
+ text: '英语学习笔记',
+ link: '/subject/english/',
+ },
+ ],
+ },
+ {
+ text: '编程笔记',
+ items: [
+ {
+ text: 'LeetCode',
+ link: '/programming/leetcode/',
+ },
+ {
+ text: 'C++',
+ link: '/programming/cplusplus/',
+ },
+ {
+ text: 'Solidity',
+ link: '/programming/solidity/',
+ },
+ {
+ text: 'Web 开发',
+ link: '/programming/web/',
+ }
+ ],
+ },
+ {
+ text:"技术理论",
+ items:[
+ {
+ text: '密码学基础',
+ link: '/theory/cryptography/',
+ },
+ ]
+ },
+ {
+ text: '运维',
+ items: [
+ {
+ text: '区块链运维',
+ link: '/ops/blockchain/',
+ },
+ {
+ text: 'Linux 运维',
+ link: '/ops/linux/',
+ },
+ {
+ text: 'Docker 运维',
+ link: '/ops/docker/',
+ },
+ ],
+ },
+ {
+ text: '工具',
+ link: '/tools/',
+ },
+ {
+ text: '关于',
+ link: '/about/',
+ },
+ {
+ text: '友情链接',
+ link: '/friends/',
+ },
+])
diff --git a/docs/.vuepress/notes.ts b/docs/.vuepress/notes.ts
new file mode 100644
index 0000000..915dea5
--- /dev/null
+++ b/docs/.vuepress/notes.ts
@@ -0,0 +1,194 @@
+import { defineNoteConfig, defineNotesConfig } from 'vuepress-theme-plume'
+
+/**
+ * 配置编程笔记
+ */
+const LeetCode = defineNoteConfig({
+ dir: 'programming',
+ link: '/programming/leetcode/',
+ sidebar: [
+ { text: "LeetCode 指南", link: "/programming/leetcode/" },
+ {
+ text: "刷题题单", prefix: "/question_sheet", items: [
+ { text: "LeetCode 入门题单~(≧∇≦)ノ", link: "/programming/leetcode/question_sheet/beginner/" }
+ ]
+ }
+ ]
+})
+const cPlusPlus = defineNoteConfig({
+ dir: 'programming',
+ link: '/programming/cplusplus/',
+ sidebar: [
+ { text: "C++ 学习笔记", link: "/programming/cplusplus/" },
+ {
+ text: "基础配置与开发工具", prefix: "/basis", items: [
+ { text: "C++ 环境配置", link: "/programming/cplusplus/basis/" }
+ ]
+ }
+ ]
+})
+const english = defineNoteConfig({
+ dir: 'subject',
+ link: '/subject/english/',
+ sidebar: [
+ { text: "英语学习笔记", link: "/subject/english/" },
+ {
+ text: "学习环境与工具", prefix: "/basis", items: [
+ { text: "英语环境配置", link: "/subject/english/basis/" }
+ ]
+ },
+ {
+ text: "词汇与记忆", prefix: "/vocabulary", items: [
+ { text: "词汇学习与记忆法", link: "/subject/english/vocabulary/" }
+ ]
+ },
+ {
+ text: "语法与句法", prefix: "/grammar", items: [
+ { text: "核心语法与句型", link: "/subject/english/grammar/" }
+ ]
+ },
+ {
+ text: "听力与口语", prefix: "/listening-speaking", items: [
+ { text: "听力口语训练", link: "/subject/english/listening-speaking/" }
+ ]
+ },
+ {
+ text: "阅读与写作", prefix: "/reading-writing", items: [
+ { text: "阅读提升", link: "/subject/english/reading-writing/" }
+ ]
+ },
+ {
+ text: "写译", prefix: "/writing-translation", items: [
+ { text: "写作与翻译指南", link: "/subject/english/writing-translation/" }
+ ]
+ },
+ {
+ text: "考试与备考", prefix: "/exam", items: [
+ { text: "英语四级 (CET-4) 备考指南", link: "/subject/english/exam/cet-4/" }
+ ]
+ },
+ {
+ text: "资源与工具", prefix: "/resources", items: [
+ { text: "学习资源与工具", link: "/subject/english/resources/" }
+ ]
+ }
+ ]
+})
+const solidity = defineNoteConfig({
+ dir: 'programming',
+ link: '/programming/solidity/',
+ sidebar: [
+ { text: "Solidity 学习笔记", link: "/programming/solidity/" },
+ {
+ text: "基础语法", prefix: "/basic-syntax", items: [
+ { text: "Solidity 基础语法与数据类型", link: "/programming/solidity/basic-syntax/" }
+ ],
+ },
+ {
+ text: "项目实例", prefix: "/basic-syntax", items: [
+ { text: "Solidity 代码实例", link: "/programming/solidity/analysis/case-analysis/" }
+ ],
+ },
+ {
+ text: "杂项", prefix: "/other", items: [
+ { text: "Hardhat 相关知识", link: "/programming/solidity/other/hardhat/" },
+ { text: "一些没分类的小知识", link: "/programming/solidity/other/miscellaneous/" }
+ ],
+ }
+ ]
+})
+const cryptography = defineNoteConfig({
+ dir: 'theory',
+ link: '/theory/cryptography/',
+ sidebar: [
+ { text: "密码学基础", link: "/theory/cryptography/" },
+ {
+ text: "古典加密算法", prefix: "/theory", items: [
+ { text: "替换密码", link: "/theory/cryptography/substitution-ciphers/" },
+ { text: "置换密码", link: "/theory/cryptography/permutation-encryption/" },
+ ]
+ },
+ ]
+})
+const blockchain = defineNoteConfig({
+ dir: 'ops',
+ link: '/ops/blockchain',
+ sidebar: [
+ { text: "区块链运维指南", link: "/ops/blockchain/" },
+ {
+ text: "区块链理论基础", prefix: "/theory", items: [
+ { text: "区块链的基本原理", link: "/ops/blockchain/theory/basic-principles/" },
+ { text: "FISCO-BCOS 节点类型", link: "/ops/blockchain/theory/fisco-bcos-node-type/" }
+ ]
+ },
+ {
+ text: "区块链运维", items: [
+ { text: "区块链产品设计和基本部署", link: "/ops/blockchain/practice/basic-deployment/" },
+ { text: "区块链网络部署与管理", link: "/ops/blockchain/practice/node-deployment/" },
+ { text: "Console 控制台操作", link: "/ops/blockchain/practice/console-operator/" }
+ ]
+ }
+ ]
+})
+const linux = defineNoteConfig({
+ dir: 'ops',
+ link: '/ops/',
+ sidebar: [
+ { text: "Linux 运维笔记", link: "/ops/linux/" },
+ {
+ text: "Linux 基础", prefix: "/linux", items: [
+ { text: "Linux 基础命令详解", link: "/ops/linux/basic-commands/" }
+ ]
+ },
+ {
+ text: "其他", prefix: "/linux", items: [
+ { text: "一些零散的命令", link: "/ops/linux/other/" }
+ ]
+ }
+ ]
+})
+const docker = defineNoteConfig({
+ dir: 'ops',
+ link: '/ops/docker/',
+ sidebar: [
+ { text: "Docker 运维笔记", link: "/ops/docker/" },
+ {
+ text: "数据库相关",
+ prefix: "/ops/docker/db/",
+ items: [
+ { text: "MongoDB 部署", link: "/ops/docker/db/mongodb/" },
+ { text: "Postgres 部署", link: "/ops/docker/db/postgres/" },
+ ]
+ },
+ {
+ text: "其他服务",
+ prefix: "/ops/docker/other/",
+ items: [
+ { text: "ETLCloud 部署", link: "/ops/docker/other/ETLCloud/" },
+ ]
+ },
+ ]
+})
+const web = defineNoteConfig({
+ dir: 'programming',
+ link: '/programming/web/',
+ sidebar: [
+ { text: "Web 开发学习笔记", link: "/programming/web/" },
+ {
+ text: "基础知识", prefix: "/basic-syntax", items: [
+ { text: "Web 前端基础讲解", link: "/programming/web/basic-syntax/html-css-js/" },
+ { text: "HTML 常用标签与属性", link: "/programming/web/basic-syntax/html-tags-attributes/" },
+ { text: "HTML 列表与语义布局", link: "/programming/web/basic-syntax/html-lists-and-semantic-layout/" },
+ { text: "JavaScript 基础知识", link: "/programming/web/basic-syntax/javascript-basics/" },
+ ],
+ },
+ ]
+})
+/**
+ * 导出所有的 note
+ */
+export default defineNotesConfig({
+ dir: 'notes',
+ link: '/',
+ notes: [LeetCode, english, cPlusPlus, solidity, blockchain, linux, docker, cryptography, web],
+})
diff --git a/docs/.vuepress/plume.config.ts b/docs/.vuepress/plume.config.ts
new file mode 100644
index 0000000..17f5500
--- /dev/null
+++ b/docs/.vuepress/plume.config.ts
@@ -0,0 +1,25 @@
+import { defineThemeConfig } from 'vuepress-theme-plume'
+import navbar from './navbar'
+import notes from './notes'
+
+export default defineThemeConfig({
+ logo: '/plume.svg',
+
+ appearance: true, // 深色模式
+
+ social: [
+ { icon: 'github', link: '/' },
+ ],
+
+ /**
+ * @see https://theme-plume.vuejs.press/config/basic/#profile
+ */
+ profile: {
+ avatar: 'https://image.simengweb.com/elysia/header.jpg',
+ name: 'SiMengWebSite Notes',
+ description: '祀梦的笔记网站',
+ },
+
+ navbar,
+ notes,
+})
diff --git a/docs/.vuepress/public/docs/.gitkeep b/docs/.vuepress/public/docs/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/docs/.vuepress/public/images/.gitkeep b/docs/.vuepress/public/images/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/docs/.vuepress/public/images/elysia/1.jpg b/docs/.vuepress/public/images/elysia/1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fe5522c8a80d5f8ea40b213820b32469683fd3c9
GIT binary patch
literal 1082228
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