diff --git a/docs/.vuepress/navbar.ts b/docs/.vuepress/navbar.ts index 1ea341e..a39cda8 100644 --- a/docs/.vuepress/navbar.ts +++ b/docs/.vuepress/navbar.ts @@ -26,6 +26,19 @@ export default defineNavbarConfig([ }, ], }, + { + text: '运维', + items: [ + { + text: '区块链运维', + link: '/ops/blockchain/', + }, + { + text: 'Linux 运维', + link: '/ops/linux/', + }, + ], + }, { text: '工具', link: '/tools/', diff --git a/docs/.vuepress/notes.ts b/docs/.vuepress/notes.ts index 00ab196..bb7f911 100644 --- a/docs/.vuepress/notes.ts +++ b/docs/.vuepress/notes.ts @@ -39,11 +39,35 @@ const solidity = defineNoteConfig({ } ] }) +const blockchain = defineNoteConfig({ + dir: 'ops', + link: '/ops/blockchain', + sidebar: [ + { text: "区块链运维指南", link: "/ops/blockchain/" }, + { + text: "区块链运维", prefix: "/blockchain", items: [ + { text: "区块链网络部署指南", link: "/ops/blockchain/deployment/" } + ] + } + ] +}) +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/" } + ] + } + ] +}) /** * 导出所有的 note */ export default defineNotesConfig({ dir: 'notes', link: '/', - notes: [LeetCode, cPlusPlus, solidity], + notes: [LeetCode, cPlusPlus, solidity, blockchain, linux], }) diff --git a/docs/notes/ops/blockchain/README.md b/docs/notes/ops/blockchain/README.md new file mode 100644 index 0000000..b50852a --- /dev/null +++ b/docs/notes/ops/blockchain/README.md @@ -0,0 +1,5 @@ +--- +title: 区块链运维指南 +createTime: 2025/09/28 07:54:17 +permalink: /ops/blockchain/ +--- diff --git a/docs/notes/ops/blockchain/blockchain-deployment.md b/docs/notes/ops/blockchain/blockchain-deployment.md new file mode 100644 index 0000000..d0ae577 --- /dev/null +++ b/docs/notes/ops/blockchain/blockchain-deployment.md @@ -0,0 +1,226 @@ +--- +title: 区块链网络部署指南~(≧∇≦)ノ +description: 详细介绍区块链网络的搭建和部署过程 +createTime: 2025/09/28 20:15:00 +permalink: /ops/blockchain/deployment/ +--- + +# 区块链网络部署指南~(≧∇≦)ノ + +嗨~今天我们要一起学习如何搭建和部署一个区块链网络哦!是不是听起来很厉害呢?其实只要按照步骤一步步来,你也可以成为区块链部署小能手的~(๑˘ᴗ˘๑) + +## 准备工作 🏗️ + +在开始部署之前,让我们先准备好所需的环境和工具吧: + +```bash +# 更新系统包 +sudo apt update && sudo apt upgrade -y + +# 安装必要的依赖 +sudo apt install -y git curl wget docker.io docker-compose + +# 启动Docker服务并设置开机自启 +sudo systemctl start docker +sudo systemctl enable docker + +# 添加当前用户到docker组,避免每次使用sudo +# 注意:添加后需要重新登录才能生效哦~ +sudo usermod -aG docker $USER +``` + +## 选择区块链平台 🌈 + +市面上有很多不同的区块链平台,我们可以根据项目需求来选择: + +- **以太坊**:最流行的智能合约平台,适合开发DApp +- **Hyperledger Fabric**:企业级联盟链解决方案 +- **Polygon**:以太坊的Layer 2扩展解决方案 +- **BSC**:币安智能链,高性能的智能合约平台 + +今天我们将以以太坊私有链为例来演示部署过程哦~ + +## 部署以太坊私有链 🔗 + +### 1. 安装Geth客户端 + +Geth是以太坊的官方Go语言客户端,我们需要先安装它: + +```bash +# 下载Geth安装包 +wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.10-7a0c19f6.tar.gz + +# 解压安装包 +tar -xvf geth-linux-amd64-1.13.10-7a0c19f6.tar.gz + +# 移动geth可执行文件到系统路径 +sudo mv geth-linux-amd64-1.13.10-7a0c19f6/geth /usr/local/bin/ + +# 验证安装是否成功 +geth version +``` + +### 2. 创建创世区块配置文件 + +创世区块是区块链的第一个区块,我们需要创建一个配置文件来定义它的参数: + +```bash +# 创建一个名为genesis.json的文件 +nano genesis.json +``` + +将以下内容复制到文件中: + +```json +{ + "config": { + "chainId": 12345, + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "arrowGlacierBlock": 0, + "grayGlacierBlock": 0, + "mergeForkIdTransition": 0, + "terminalTotalDifficulty": 0, + "terminalTotalDifficultyPassed": true, + "shanghaiTime": 0, + "cancunTime": 0 + }, + "difficulty": "0x400", + "gasLimit": "0x1000000", + "alloc": { + "0x71C7656EC7ab88b098defB751B7401B5f6d8976F": { + "balance": "0x100000000000000000000000000000000" + } + } +} +``` + +### 3. 初始化区块链 + +现在我们可以使用创世区块配置文件来初始化我们的私有链了: + +```bash +# 创建一个目录来存储区块链数据 +mkdir -p ~/ethereum-private-chain/data + +# 使用genesis.json初始化区块链 +geth --datadir ~/ethereum-private-chain/data init genesis.json +``` + +### 4. 启动区块链节点 + +初始化完成后,我们可以启动我们的区块链节点了: + +```bash +# 启动区块链节点 +# --networkid 要与创世区块配置中的chainId一致 +# --nodiscover 禁用节点发现机制,只允许手动添加节点 +# --http 启用HTTP-RPC接口 +# --http.addr 设置HTTP-RPC接口监听地址 +# --http.api 启用的API模块 +geth --datadir ~/ethereum-private-chain/data --networkid 12345 --nodiscover --http --http.addr "0.0.0.0" --http.api "eth,net,web3,personal,miner" console +``` + +### 5. 开始挖矿 + +在Geth控制台中,我们可以开始挖矿来生成新区块: + +```javascript +// 设置挖矿账户 +miner.setEtherbase(eth.accounts[0]) + +// 开始挖矿 +miner.start(1) + +// 查看挖矿状态 +eth.blockNumber + +// 查看账户余额 +eth.getBalance(eth.accounts[0]) + +// 停止挖矿 +// miner.stop() +``` + +### 6. 添加其他节点(可选) + +如果需要搭建多节点的区块链网络,我们可以将其他节点连接到我们的主节点: + +```javascript +// 在主节点上获取节点信息 +admin.nodeInfo.enode + +// 在其他节点的Geth控制台中添加主节点 +admin.addPeer("enode://主节点的enode信息@主节点IP:30303") + +// 查看已连接的节点 +admin.peers +``` + +## 部署智能合约 🚀 + +区块链网络搭建完成后,我们可以部署一个简单的智能合约来测试它: + +```javascript +// 在Geth控制台中编写一个简单的智能合约 +var helloWorldContract = eth.contract([ + {"constant":true,"inputs":[],"name":"greeting","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"}, + {"constant":false,"inputs":[{"name":"_greeting","type":"string"}],"name":"setGreeting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}, + {"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"} +]); + +// 编译合约代码 +var helloWorldCompiled = eth.compile.solidity('pragma solidity ^0.8.0; contract HelloWorld { string public greeting; constructor() { greeting = "Hello, Blockchain!"; } function setGreeting(string memory _greeting) public { greeting = _greeting; } }'); + +// 部署合约 +var helloWorld = helloWorldContract.new({ + from: eth.accounts[0], + data: helloWorldCompiled.HelloWorld.code, + gas: 1000000 +}); + +// 查看合约地址 +helloWorld.address + +// 调用合约函数 +helloWorld.greeting.call() +helloWorld.setGreeting("Hello, Ethereum!", {from: eth.accounts[0]}) +helloWorld.greeting.call() +``` + +## 监控与维护 📊 + +区块链网络部署完成后,我们需要定期进行监控和维护: + +- **节点状态监控**:检查节点是否正常运行,区块高度是否在增长 +- **网络连接监控**:监控节点之间的连接状态 +- **资源使用监控**:监控服务器的CPU、内存、磁盘和网络使用情况 +- **日志分析**:定期查看区块链节点的日志,及时发现和解决问题 + +## 安全注意事项 🔒 + +在部署区块链网络时,安全是非常重要的: + +- 不要在生产环境中使用默认的配置参数 +- 定期更新节点软件到最新版本 +- 使用防火墙限制对节点的访问 +- 妥善保管私钥和密码 +- 考虑使用多重签名机制来保护重要操作 + +## 小练习 🏋️‍♀️ + +现在轮到你自己动手实践了!试着按照上面的步骤部署一个以太坊私有链,然后创建一个简单的智能合约并部署到链上吧~相信自己,你一定可以做到的!(๑•̀ㅂ•́)و✧ + +## 写在最后~💌 + +今天我们学习了如何部署一个区块链网络,从准备环境到部署智能合约,每一步都很重要哦~虽然看起来步骤很多,但只要耐心地一步步来,你一定能成功的!如果你在部署过程中遇到了问题,不要灰心,可以查阅相关文档或者向社区寻求帮助。 + +希望这篇指南能对你有所帮助,让我们一起在区块链的世界里快乐地探索吧!(づ ̄ 3 ̄)づ \ No newline at end of file diff --git a/docs/notes/ops/linux/README.md b/docs/notes/ops/linux/README.md new file mode 100644 index 0000000..19c8f3c --- /dev/null +++ b/docs/notes/ops/linux/README.md @@ -0,0 +1,31 @@ +--- +title: Linux 运维笔记 +createTime: 2025/09/28 10:30:00 +permalink: /ops/linux/ +--- + +# Linux 运维笔记 + +你好呀,这里是祀梦的 Linux 运维笔记小天地~ 🌟 + +在这片神奇的天地里,我们将一起探索 Linux 操作系统的奥秘,学习各种实用的运维技巧。无论你是刚开始接触 Linux 的新手,还是已经有一定经验的运维工程师,相信这里都能为你提供一些有用的知识和见解哦~ + +## 为什么选择 Linux? + +Linux 就像是一个宝藏盒子,里面装满了各种强大的工具和功能。它稳定、安全、高效,是服务器领域的佼佼者。而且最重要的是,它是开源的!这意味着我们可以自由地探索它的内部结构,甚至可以根据自己的需求进行定制~ + +## 笔记内容概览 + +这里的笔记将会涵盖以下几个方面: + +- **Linux 基础命令**:从最基本的文件操作到系统管理,一步步带你熟悉 Linux 的常用命令 +- **系统管理**:学习如何管理用户、进程、服务和网络 +- **Shell 脚本编程**:掌握 Shell 脚本的编写技巧,让你的工作更加自动化 +- **系统性能优化**:了解如何监控和优化 Linux 系统的性能 +- **安全防护**:学习 Linux 系统的安全配置和防护措施 + +## 学习建议 + +学习 Linux 最好的方法就是**多实践**!不要害怕犯错,每一次错误都是成长的机会。如果你在学习过程中遇到了问题,记得多查阅文档,多和社区交流~ + +让我们一起开启这段精彩的 Linux 运维之旅吧! 💪 diff --git a/docs/notes/ops/linux/basic-commands.md b/docs/notes/ops/linux/basic-commands.md new file mode 100644 index 0000000..6a1afef --- /dev/null +++ b/docs/notes/ops/linux/basic-commands.md @@ -0,0 +1,210 @@ +--- +title: Linux 基础命令详解 +createTime: 2025/09/28 10:45:00 +permalink: /ops/linux/basic-commands/ +--- + +# Linux 基础命令详解 + +Hello~ 欢迎来到 Linux 命令的奇妙世界!今天,爱莉希雅将带着祀梦一起探索那些最常用、最实用的 Linux 基础命令哦~ 准备好了吗?Let's go!🚀 + +## 文件与目录操作 + +### ls - 查看目录内容 + +`ls` 命令就像是你的眼睛,可以帮你查看当前目录下有哪些文件和文件夹~ + +```bash +# 查看当前目录内容 +ls + +# 查看详细信息(包括权限、大小、修改时间等) +ls -l + +# 显示所有文件(包括隐藏文件) +ls -a + +# 以人类可读的方式显示文件大小 +ls -lh +``` + +### cd - 切换目录 + +`cd` 命令是你的小脚丫,可以带你在不同的目录之间穿梭~ + +```bash +# 进入指定目录 +cd /path/to/directory + +# 回到上一级目录 +cd .. + +# 回到主目录 +cd ~ + +# 回到上一次所在的目录 +cd - +``` + +### pwd - 显示当前路径 + +有时候我们可能会迷路,这时候 `pwd` 命令就像是指南针,可以告诉我们当前所在的位置~ + +```bash +# 显示当前工作目录的绝对路径 +pwd +``` + +### mkdir - 创建目录 + +想要创建新的文件夹?`mkdir` 命令可以帮你实现这个愿望~ + +```bash +# 创建一个新目录 +mkdir new_directory + +# 递归创建多级目录 +mkdir -p parent/child/grandchild +``` + +### rm - 删除文件或目录 + +`rm` 命令可以帮你清理不需要的文件和目录,但要小心使用哦,删除后可是很难恢复的~ + +```bash +# 删除文件 +rm filename.txt + +# 强制删除文件(不提示) +rm -f filename.txt + +# 删除目录 +rm -r directory + +# 强制删除目录(不提示) +rm -rf directory +``` + +## 文件内容查看 + +### cat - 查看文件全部内容 + +`cat` 命令就像是一个快速阅读器,可以帮你一次性查看整个文件的内容~ + +```bash +# 查看文件内容 +cat filename.txt + +# 显示行号 +cat -n filename.txt +``` + +### less - 分页查看长文件 + +如果文件太长,一次性看不完怎么办?`less` 命令可以帮你分页查看~ + +```bash +# 分页查看文件内容 +less filename.txt + +# 在 less 模式下,可以使用方向键上下滚动,按 q 退出 +``` + +### head 和 tail - 查看文件开头和结尾 + +只想看文件的开头或结尾部分?`head` 和 `tail` 命令可以满足你的需求~ + +```bash +# 查看文件前 10 行 +head filename.txt + +# 查看文件前 20 行 +head -20 filename.txt + +# 查看文件最后 10 行 +tail filename.txt + +# 实时查看文件更新(常用于查看日志) +tail -f filename.log +``` + +## 文本搜索 + +### grep - 搜索文本内容 + +`grep` 命令就像是一个侦探,可以帮你在文件中搜索特定的文本~ + +```bash +# 在文件中搜索特定文本 +grep "search_text" filename.txt + +# 忽略大小写搜索 +grep -i "search_text" filename.txt + +# 显示匹配行及前后几行 +grep -A 5 -B 5 "search_text" filename.txt + +# 递归搜索目录下所有文件 +grep -r "search_text" directory/ +``` + +## 系统信息查看 + +### uname - 查看系统信息 + +想要了解你的 Linux 系统是什么版本?`uname` 命令可以告诉你~ + +```bash +# 查看系统内核信息 +uname -a +``` + +### top - 查看进程信息 + +`top` 命令就像是系统的仪表盘,可以实时显示系统的运行状态和进程信息~ + +```bash +# 查看系统进程信息 +top + +# 在 top 模式下,可以按 q 退出 +``` + +## 网络命令 + +### ping - 测试网络连接 + +想知道你的电脑能不能连接到某个网站?`ping` 命令可以帮你测试~ + +```bash +# 测试网络连接 +ping www.example.com +``` + +### ifconfig/ip - 查看网络接口信息 + +想了解你的网络配置?`ifconfig` 或 `ip` 命令可以帮你查看~ + +```bash +# 查看网络接口信息 +ifconfig +# 或者 +ip addr +``` + +## 小练习 + +现在,让我们来做一个小练习吧!尝试使用今天学到的命令完成以下任务: + +1. 在家目录下创建一个名为 `practice` 的文件夹 +2. 进入 `practice` 文件夹,创建一个名为 `notes.txt` 的文件 +3. 使用 `cat` 命令查看该文件(虽然现在它是空的) +4. 返回上一级目录,然后使用 `ls -la` 查看所有文件和目录的详细信息 + +怎么样?你都完成了吗?如果遇到了问题,不要着急,多试几次就会熟悉啦~ 😊 + +## 小结 + +今天我们学习了很多实用的 Linux 基础命令,这些命令就像是 Linux 世界的积木,只要你熟练掌握它们,就可以搭建出各种各样的奇妙作品~ 记得要多多练习哦,实践出真知嘛! + +下次我们将学习更多高级的 Linux 命令和技巧,敬请期待~ 拜拜~ 👋 diff --git a/docs/notes/programming/solidity/README.md b/docs/notes/programming/solidity/README.md index bbfdf64..d1c4a48 100644 --- a/docs/notes/programming/solidity/README.md +++ b/docs/notes/programming/solidity/README.md @@ -1,58 +1,9 @@ --- title: Solidity 学习笔记 description: 记录Solidity智能合约开发的学习心得和基础知识 -createTime: 2025/09/22 10:00:00 +createTime: 2025/09/28 19:39:00 permalink: /programming/solidity/ --- -# Solidity 学习笔记~(๑>◡<๑) +## Solidity 智能合约概述 -欢迎来到 Solidity 的奇妙世界!这里是祀梦记录 Solidity 智能合约开发学习心得的小天地哦~如果你对区块链和智能合约感兴趣的话,那真是太棒啦~让我们一起探索这个充满可能性的领域吧!(✧ω✧) - -## Solidity 是什么呀? 🌟 - -Solidity 是一种为以太坊区块链开发智能合约的高级编程语言哦~它看起来有点像 JavaScript,但却能让你创建可以在区块链上运行的程序呢!想象一下,你写的代码可以在一个去中心化的世界里永久存在,是不是很神奇呀~(≧∇≦)/ - -## 学习路径 - -学习 Solidity 就像探索一个新的魔法世界,让我们一步一步来解锁它的奥秘吧: - -1. **区块链基础** - 了解区块链的基本概念和工作原理 -2. **Solidity 语法** - 掌握 Solidity 的基本语法和编程结构 -3. **智能合约开发** - 学习如何编写和部署简单的智能合约 -4. **高级特性** - 探索继承、接口、库、事件等高级概念 -5. **安全最佳实践** - 了解智能合约开发中的安全注意事项 -6. **实战项目** - 通过实际项目巩固所学知识 - -## 笔记分类 - -### 基础入门 - -- Solidity 语言简介 -- 开发环境搭建 -- 基础语法和数据类型 -- 控制流语句 - -### 合约开发 - -- 智能合约结构 -- 函数和修饰器 -- 状态变量和局部变量 -- 事件和日志 - -### 高级特性 - -- 继承和多态 -- 接口和抽象合约 -- 库的使用 -- 异常处理 - -## 学习资源推荐 - -- [Solidity 官方文档](https://docs.soliditylang.org/) - 最权威的学习资料哦~ -- [以太坊开发者文档](https://ethereum.org/zh/developers/) - 了解以太坊生态系统 -- [CryptoZombies](https://cryptozombies.io/) - 通过游戏化方式学习 Solidity,超有趣的! - -## 写在最后~💖 - -学习 Solidity 可能会遇到一些挑战,但请记住,每一次遇到的问题都是成长的机会哦~不要害怕犯错,勇敢地去尝试和探索吧!我相信,通过不断地学习和实践,你一定能成为一名出色的智能合约开发者~加油呀!(๑•̀ㅂ•́)و✧