Devops⑧
Devops①Devops②Devops③Devops④Devops⑤Devops⑥Devops⑦Devops⑧Devops⑨
第 8 节 · 云平台实战 —— AWS 上构建 DevOps 一体化工作流
☁️ 为什么选择 AWS?
AWS 是目前全球最主流的云平台,提供丰富的 DevOps 支持服务:
✅ 支持 IaC(Terraform / CloudFormation)
✅ 支持 Serverless(Lambda、API Gateway)
✅ CI/CD(CodePipeline、CodeBuild、GitHub Actions 集成)
✅ 监控(CloudWatch、X-Ray)
🧭 DevOps 全流程在 AWS 上的实现路径
🔧 常见 AWS 服务一览(DevOps 视角)
分类
服务
用途
计算
EC2 / Lambda / ECS / EKS
承载服务或函数
存储
S3 / EFS
文件或静态资源存储
网络
VPC / Subnet / Load Balancer
网络隔离与负载均衡
DevOps 工具
CodePipe ...
Devops⑦
Devops①Devops②Devops③Devops④Devops⑤Devops⑥Devops⑦Devops⑧Devops⑨
第 7 节 · Monitoring & Observability —— 监控与可观测性实战指南
📊 为什么监控与可观测性重要?
“系统跑起来不是终点,稳定运行才是。”
在 DevOps 实践中,监控(Monitoring) 和 可观测性(Observability) 让你能:
🧠 快速发现系统异常
🔍 快速定位问题根源
📈 持续优化性能体验
🧠 监控(Monitoring) VS 可观测性(Observability)
项目
Monitoring
Observability
定义
观察系统是否健康
解释系统为什么出问题
数据类型
主要是指标(Metrics)
包括指标、日志、追踪(三大支柱)
触发方式
基于规则报警
支持探索式分析
目标
提前报警
快速定位问题源头
🔍 可观测性的三大支柱
Metrics(指标) 📈
如 CPU、内存、请求延迟、错误率
Logs(日志) � ...
Devops⑥
Devops①Devops②Devops③Devops④Devops⑤Devops⑥Devops⑦Devops⑧Devops⑨
第 6 节 · Ansible 与 Packer —— 配置管理与镜像构建实战
🧠 什么是配置管理(Configuration Management)?
配置管理是指通过代码或脚本来管理服务器的状态,比如软件安装、服务启动、配置文件变更等。
目标是:
自动化系统配置
多台机器保持一致状态
替代 SSH 手动操作
🧰 Ansible 是什么?
Ansible 是一款开源自动化运维工具,专注于“配置管理 + 应用部署 + 自动化运维”。
特点:
✅ 无 Agent:只需目标机开启 SSH 即可
✅ YAML 配置,易读易写
✅ 可批量控制多台主机
📄 Ansible 示例:安装 nginx
- name: 安装 nginx hosts: web become: true tasks: - name: 更新 apt 缓存 apt: update_cache: yes - name: 安装 ngi ...
Devops⑤
Devops①Devops②Devops③Devops④Devops⑤Devops⑥Devops⑦Devops⑧Devops⑨
第 5 节 · 基础设施即代码(IaC)与 Terraform 入门
💡 什么是基础设施即代码(Infrastructure as Code, IaC)?
IaC = 用代码来定义和管理服务器、数据库、网络等基础设施。
它的目标是:
✅ 自动化部署基础架构(不用手点控制台)
✅ 保持环境一致性(dev/test/prod 都一样)
✅ 支持版本控制、回滚(像代码一样被管理)
🧰 Terraform 是什么?
Terraform 是 HashiCorp 出品的开源工具,是目前最主流的 IaC 实现方式。
特点:
🌍 多云平台支持(AWS、Azure、GCP、K8s…)
🧱 声明式语法(你说“要什么”,它决定“怎么做”)
💾 状态文件(State)记录当前资源状况
📦 Terraform 核心概念
概念
说明
Provider
云服务提供商(如 AWS)
Resource
要创建的资源(如 EC2、S3)
...
Devops④
Devops①Devops②Devops③Devops④Devops⑤Devops⑥Devops⑦Devops⑧Devops⑨
第 4 节 · 使用 Kubernetes 管理容器应用(含 Serverless 简介)
☸️ 什么是 Kubernetes(K8s)?
Kubernetes 是一个开源的容器编排平台,用于自动化容器应用的部署、扩容、负载均衡和管理。
它就像“容器集群的大脑”,可以帮你在成百上千台服务器之间调度容器。
🧠 为什么需要 K8s?
场景问题
Kubernetes 能解决什么
容器多、管理难
自动调度和管理容器运行状态
服务不可用
Pod 异常自动重启、自动迁移
流量暴增
自动扩容 Replica 数量
更新上线容易中断
滚动更新 + 回滚机制
🛠 Kubernetes 核心概念
概念
解释
Pod
最小的调度单元,包含一个或多个容器
Node
集群中的一台主机,可以运行 Pod
Deployment
控制 Pod 数量和滚动更新策略
Service
提供统一访问入口,实现负载均衡
...
Devops③
Devops①Devops②Devops③Devops④Devops⑤Devops⑥Devops⑦Devops⑧Devops⑨
第 3 节 · CI/CD 实践指南
🚀 什么是 CI/CD?
CI/CD 指的是:
CI(Continuous Integration)持续集成:每次代码变更后,自动化执行构建、测试等流程,确保新代码能和主干稳定集成。
CD(Continuous Delivery / Deployment)持续交付 / 持续部署:代码通过测试后,自动部署到测试或生产环境。
🧠 CI/CD 为什么重要?
传统流程里:
上线靠手动部署,容易出错
测试靠人工点击,流程慢又不稳定
一个 bug 可能要几小时甚至几天才能回滚
CI/CD 带来的改变:
目标
CI/CD 带来的好处
快速上线
自动构建 + 自动测试 + 自动部署
降低风险
小步快跑 + 每次变更可回退
团队协作
每人提交后就能自动验证是否会出问题
⚙️ 持续集成(CI)流程
常见步骤如下:
开发者 push 代码到 Git 仓库
CI 工具监听到变更(如 Gi ...
Devops②
Devops①Devops②Devops③Devops④Devops⑤Devops⑥Devops⑦Devops⑧Devops⑨
第 2 节 · 容器化与 Docker 入门
📦 什么是容器化(Containerization)?
容器化是一种将应用程序与它的运行时环境(依赖、配置、库)打包在一起运行的方式。
就像“打包快餐”:不管你在哪儿吃,都一样的味道 🍱
容器技术让“开发环境”和“生产环境”一致,解决了:
“我电脑上能跑,线上挂了” 这类经典问题。
🐳 Docker 是什么?
Docker 是最流行的容器化平台,它能让你:
构建:通过 Dockerfile 构建镜像
打包:将应用与依赖一起封装成镜像
运行:用镜像快速启动多个隔离的容器
分发:上传镜像到 Docker Hub 分享使用
🚀 Docker 工作流程
🧱 Dockerfile 示例
# 使用官方 Python 镜像作为基础FROM python:3.10# 设置工作目录WORKDIR /app# 复制代码到容器COPY . /app# 安装依赖RUN pip install -r ...
Devops①
Devops①Devops②Devops③Devops④Devops⑤Devops⑥Devops⑦Devops⑧Devops⑨
第 1 节 · DevOps 基础理解
🌱 什么是 DevOps?
DevOps = Development(开发) + Operations(运维)
它不是一门语言、也不是一套工具,而是一种文化理念和工程实践:
目标是打通开发和运维之间的壁垒,提升软件交付速度与质量。
🎯 DevOps 想解决什么问题?
问题
传统方式(没 DevOps)
DevOps 做法
开发上线慢
要等运维手动部署
自动化 CI/CD 部署流程
开发与运维脱节
“代码写完不管了”
开发也负责上线后的运行健康
出现 bug 难定位
日志杂乱、权限不清
可观测性 + 自动追踪机制
系统不稳定
手动操作易出错
自动化测试 + 自动回滚机制
🧠 DevOps 的核心理念(5 大关键词)
自动化(Automation)
从构建、测试、部署到监控,尽可能自动化
持续集成 / 持续交付(CI/CD)
自动化测试 + 自动上线,快速发 ...
Jenkins CICD 教程总结
培训目标 Training Objectives
掌握 Jenkins 的基础安装、配置、管理
学习 CI/CD 基础、Jenkins 合作 GitHub 实现进程自动化
了解 Jenkins Pipeline 的语法和应用
学习 Jenkins 多节点 (multi-node) 配置和运行
虚拟机 VM 配置 Virtual Machine Setup
建议使用 Google Cloud (GCP),提供 $300 免费 credit,可使用 3 个月
建议选择 Ubuntu 22 或 24 版,配置至少 2 CPU + 8GB RAM
打开网络端口 22 (SSH),80 (HTTP),443 (HTTPS),8080 (Jenkins 默认端口)
建议使用 Docker 进行 Jenkins 快速部署
Jenkins 基础安装 Jenkins Basic Installation
使用 Docker 部署 Jenkins,配合 -p 给肉端口映射
eg: -p 8080:8080 -p 50000:50000
Jenkins 目录映射: /var/jenki ...
GitHub Actions CICD
一、基本概念 Basic Concepts
本次课程是 GitHub Actions 的继续课程,添加了对 CI/CD 线程的深入讲解。
This session is a continuation of GitHub Actions, going deeper into CI/CD workflows.
主要基于 Next.js 项目进行 Hands-on 实操。
Mainly involves hands-on practice with a Next.js project.
通过 GitHub Action 实现以下流程: build -> test -> publish.
Workflow: build -> test -> publish using GitHub Actions.
二、GitHub Actions 框架说明 Structure of GitHub Actions
Workflow: 一个 workflow 和 repo 关联,可包含多个 jobs
A workflow is tied to a repo an ...
蚂蚁上树
1.泡粉丝
开水泡泡得了
2.炒肉
起锅烧油
葱姜蒜
肉沫炒熟
炒出来多的水分倒掉
加豆瓣酱炒香
3.放调料
2 生抽 1 老抽
1 蚝油 1 糖
1 淀粉 1 孜然粉
半碗水搅匀
倒入肉翻炒
加入粉丝翻炒
4.出锅
大火收汁
撒葱花
云计算相关
CDN
CDN(Content Delivery Network)即内容分发网络,是一种通过网络来分发内容的技术。CDN 的基本原理是将内容分发到离用户最近的服务器上,这样用户可以更快地访问内容。CDN 可以提高网站的访问速度,减少服务器的负载,提高网站的稳定性。
CDN 的工作原理如下:
用户访问网站时,会先访问 CDN 的 DNS 服务器。
CDN 的 DNS 服务器会根据用户的 IP 地址,选择离用户最近的服务器。
用户访问 CDN 的服务器,获取网站的内容。
CDN 的服务器会缓存网站的内容,提高访问速度。
DNS
DNS(Domain Name System)即域名系统,是一种用来将域名转换为 IP 地址的系统。DNS 的基本原理是将域名映射到 IP 地址,这样用户可以通过域名来访问网站。
DNS 的工作原理如下:
用户输入域名,浏览器会向 DNS 服务器发送请求。
DNS 服务器会查询域名对应的 IP 地址。
DNS 服务器将 IP 地址返回给浏览器。
浏览器根据 IP 地址,访问网站的服务器。
负载均衡
负载均衡是一种通过分配任务到多个服务器上来提高系统性能 ...
一些常见的git命令
配置
git config --global user.name "name"git config --global user.email "email"
什么时候是用--global,什么时候不用呢?如果你只想在当前项目中使用这个配置,就不用--global
reset 和 revert
reset和revert都是用来撤销之前的提交,但是有一些区别。
reset是直接删除之前的提交,而revert是创建一个新的提交,这个提交是之前提交的反向操作。
merge 和 rebase
merge和rebase都是用来合并分支的,但是有一些区别。
merge是将两个分支的提交合并到一起,形成一个新的提交。rebase是将两个分支的提交按照时间顺序重新排序,然后合并到一起。
其他内容参考这里
海龟汤系列
红汤:有人死亡
清汤:无人死亡
黑汤:全员死亡
胡辣汤:有人受伤
鸳鸯汤:有人快要死亡
本格:现实生活中会发生的事
变格:现实生活中不会发生的事
汤面:根据汤面去猜汤底
汤底:有的汤面有隐喻
海龟汤
火车
汤面:这是一辆行驶的火车,我刚上车不久,坐上了最后一节车厢,车厢里流了很多血,我知道我快要活不长了
查看汤底
人体蜈蚣
数据结构相关笔记⑦
W9
数据结构相关笔记①数据结构相关笔记②数据结构相关笔记③数据结构相关笔记④数据结构相关笔记⑤数据结构相关笔记⑥数据结构相关笔记⑦
贪心算法(Greedy Algorithm)
定义:贪心算法是一类算法,解决问题时每一步都选择当前状态下的局部最优解,希望通过这样的选择可以找到全局最优解。
特点:贪心算法的每一步都选择当前状态下的局部最优解,而不考虑全局最优解,因此贪心算法通常比较简单,容易实现。
1.贪心算法的通用形式
def generic_greedy(input):# 初始化 initialize result# 这里可以对输入进行排序,以确定考虑输入的顺序 determine order in which to consider input# 迭代选择贪心解 for each element i of the input (in above order) do# 如果元素 i 改进了结果,则更新结果 if element i improves result then update result with element i return re ...
数据结构相关笔记⑥
W7-W8
数据结构相关笔记①数据结构相关笔记②数据结构相关笔记③数据结构相关笔记④数据结构相关笔记⑤数据结构相关笔记⑥数据结构相关笔记⑦
1.图的基本概念(Graph Basics)
1.1 图的定义
图(Graph)是由顶点(Vertices)和边(Edges)组成的一种数据结构。图是一种非线性数据结构,它是由顶点的有穷非空集合和顶点之间边的集合组成的。
1.2 边的类型(Edge Types)
有向边(Directed Edge):有向边是一个有序对,它连接两个顶点,其中一个是起始顶点,另一个是终止顶点,有一个箭头指向。
无向边(Undirected Edge):无向边是一个无序对,它连接两个顶点,没有起始顶点和终止顶点之分。
1.3 应用场景(Applications)
电子电路: 印刷电路板、集成电路。
交通网络: 公路网、航线网络。
计算机网络: 互联网、网页。
建模: 实体关系图、甘特图中的优先关系。
2.图的概念和术语 (Graph Concepts and Terminology)
2.1 路径(Path)
定义:路径是图中的一个顶 ...
MC开服
安装 Java
建议使用 Azul 的 Zulu JDK,它是一个免费的 JDK,可以在这里下载。
MCSManager 面板 :
介绍
MCSManager 是一个开源的 Minecraft 服务器管理面板,支持多种服务器类型,包括 Spigot、Paper、BungeeCord、Waterfall、Velocity、Vanilla、Forge、Fabric 等。附上官网链接和文档链接
一键安装
sudo su -c "wget -qO- https://script.mcsmanager.com/setup_cn.sh | bash"
启动方式
# 启动面板命令systemctl start mcsm-daemon.servicesystemctl start mcsm-web.service
# 重启面板命令systemctl restart mcsm-daemon.servicesystemctl restart mcsm-web.service
# 停止面板命令systemctl stop mcsm-web.servicesystemc ...
数据结构相关笔记⑤
W6
数据结构相关笔记①数据结构相关笔记②数据结构相关笔记③数据结构相关笔记④数据结构相关笔记⑤数据结构相关笔记⑥数据结构相关笔记⑦
映射 (Map)
Map(映射)是一种数据结构,它将键(key)和值(value)成对存储。每个键最多储存一个元素,可以通过键快速找到对应的值。
常见实现方式
链表(Linked List-Based Map):每个节点存储一个键值对。可以处理任何类型的键。
适用场景:小型数据集,且不需要频繁查找时使用。
数组(Array-Based Map):键(key)直接作为数组的索引。这种实现方式需要键的范围是已知且受限的。
适用场景:键的范围较小且密集,空间不成为问题时使用。
哈希表(HashTable):使用哈希函数将键映射到存储位置,适合快速查找和插入。需要处理哈希冲突。
适用场景:大多数实际应用场景,如字典(Dictionary)、集合(Set)等。
树(如红黑树):使用平衡二叉搜索树存储键值对,保持顺序,适合需要有序数据的场合。
适用场景:需要有序性且支持范围查询的场景,如数据库中的索引。
哈希表 (Hash ...
python相关①
python相关①python相关⓪
print函数
print函数的基本用法:
print函数用于在屏幕上显示信息。
基本语法:print(arg1, arg2, arg3, ...)
示例:输出字符串 "Hello, World!":print("Hello, World!")
打印多个信息:
可以通过逗号分隔多个数据来打印:print("Temperature:", 23)
打印变量:
也可以显示变量的值:temp = 23print("Temperature is", temp, "C")
格式化字符串(Formatted Strings):
Python 提供了格式化字符串语法,可以直接在字符串中嵌入变量名。格式化字符串以 f 开头,并使用花括号 {} 包围变量名:
print(f"Centigrade: {C}")print(f"Centigrade: { ...
python相关⓪
python相关①python相关⓪
一些符号的英文名
符号中文名
符号
符号英文名
星号
*
star
冒号
:
colon
逗号
,
comma
问号
?
question mark
感叹
!
exclamation mark
圆括号
()
parentheses / round brackets
方括号
[]
brackets / square brackets
花括号
{}
braces / curly brackets
尖括号
<>
angle brackets / chevrons
数据结构相关笔记④
W5
数据结构相关笔记①数据结构相关笔记②数据结构相关笔记③数据结构相关笔记④数据结构相关笔记⑤数据结构相关笔记⑥数据结构相关笔记⑦
优先队列 (Priority Queue)
定义:优先队列是一种抽象数据类型,支持插入元素和删除最大(最小)元素的操作。优先队列的元素具有优先级,每次删除操作都会删除优先级最高的元素。
操作方法:
insert(k, v):插入键为 k,值为 v 的项。
remove_min():删除并返回具有最小键的项。
min():返回具有最小键的项但不删除。
size():返回队列中存储的项数。
is_empty():检查队列是否为空。
优先队列的实现方法
基于无序序列的优先队列 (Unsorted List Implementation)
插入操作 (insert):时间复杂度为 O(1),可以将项插入序列的开头或结尾。
删除最小项和查找最小项 (remove_min and min):时间复杂度为 O(n),因为必须遍历整个列表以找到最小的键。
基于有序序列的优先队列 (Sorted List Implementation)
插 ...
数据结构相关笔记③
W4
数据结构相关笔记①数据结构相关笔记②数据结构相关笔记③数据结构相关笔记④数据结构相关笔记⑤数据结构相关笔记⑥数据结构相关笔记⑦
二叉搜索树(Binary Search Tree)
定义:二叉搜索树(Binary Search Tree,BST)是一种二叉树,存储键或键值对,满足以下性质:
对于每个节点 v,其左子树中的所有节点的键值都小于 v 的键值。
其右子树中的所有节点的键值都大于 v 的键值。
中序遍历 (Inorder Traversal) 二叉搜索树将会以递增顺序访问键值。
特点:任意节点 v 的左子树节点值均小于 v,右子树节点值均大于 v。搜索、插入、删除操作的时间复杂度与树的高度相关。
二叉搜索树的操作
1. 搜索(Search)
从根节点开始,沿着树向下遍历,依次比较要查找的键 k 与当前节点的键值:
如果 k 小于当前节点的键值,继续递归搜索左子树。
如果 k 大于当前节点的键值,继续递归搜索右子树。
如果找到外部节点(空节点),则说明树中没有该键。
def search(k, v): if v.isExternal(): ...
数据结构相关笔记②
W3
数据结构相关笔记①数据结构相关笔记②数据结构相关笔记③数据结构相关笔记④数据结构相关笔记⑤数据结构相关笔记⑥数据结构相关笔记⑦
树 (Tree)
在计算机科学中,树是一种抽象的层次结构模型。树结构由节点组成,并且这些节点之间具有父子关系。以下是一些常见的树的术语及其解释:
根节点 (Root)
没有父节点的节点。例如,节点 A 是根节点。
内部节点 (Internal Node)
至少有一个子节点的节点。例如,节点 A、B、C 和 F 都是内部节点。
外部节点/叶子节点 (External Node / Leaf Node)
没有子节点的节点。例如,节点 E、I、J、K、G、H 和 D 都是叶子节点。
祖先节点 (Ancestors)
包括父节点、祖父节点、曾祖父节点等。例如,节点 F 的祖先是 A 和 B。
后代节点 (Descendants)
包括子节点、孙节点、曾孙节点等。例如,节点 B 的后代包括 E、F、I、J 和 K。
兄弟节点 (Siblings)
具有相同父节点的两个节点。例如,节点 B 和 D 是兄弟节点。
深度 (Depth)
从根节点到某 ...
