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)
从根节点到某 ...
数据结构相关笔记①
W1-W2
数据结构相关笔记①数据结构相关笔记②数据结构相关笔记③数据结构相关笔记④数据结构相关笔记⑤数据结构相关笔记⑥数据结构相关笔记⑦
算法复杂度
算法复杂度描述了算法执行时间或空间随输入规模变化的增长趋势。以下是常见的算法复杂度及其表示方式:
常数 (Constant)
T(n)=Θ(1)T(n) = \Theta(1)
T(n)=Θ(1)
对数 (Logarithmic)
T(n)=Θ(logn)T(n) = \Theta(\log n)
T(n)=Θ(logn)
线性 (Linear)
T(n)=Θ(n)T(n) = \Theta(n)
T(n)=Θ(n)
准线性 (Quasi-linear)
T(n)=Θ(nlogn)T(n) = \Theta(n \log n)
T(n)=Θ(nlogn)
二次 (Quadratic)
T(n)=Θ(n2)T(n) = \Theta(n^2)
T(n)=Θ(n2)
三次 (Cubic)
T(n)=Θ(n3)T(n) = \Theta(n^3)
T(n)=Θ(n3)
指数 (Exponential)
T(n ...
MC联机-ZeroTier
ZeroTier 官网: https://www.zerotier.com/
注册账号然后开始 记下来生成的那一串 NETWORK ID
当然你也可以修改成自己喜欢的网段
安装 ZeroTier: 点这里下载
安装完毕后 在任务栏右下角找到它 右键
输入之前存的那一串 NETWORK ID
再进到 zerotier 的管理页面 往下滑到 members 把勾打上就能连上了
没有设备显示的话 多刷新几次页面就能看到了
MC 的设置
绕正版验证 mod: 点击跳转下载
看说明就行()端口有需求可以自己改
关于 ZeroTier 的 Moon 服务器
curl -s https://install.zerotier.com/ | sudo bash
输入命令加入网络:[network_ID]改成你自己的
zerotier-cli join [network_ID]
去后台打勾
回到 linux 中,输入命令观察是否加入成功:
zerotier-cli listnetworks
配置 moon:
进入 zerotier-one 程序目录:
cd /var/lib/zer ...
INFJ杂谈
在感情里面,INFJ 面对他们喜欢的人和喜欢他们的人跟玩狗一样。INFJ 最烦躁的就是当别人喜欢自己会带给别人情绪和自己喜欢上别人自己的情绪反扑。特别是后者,会让他时刻怀疑自己是不是不够强大,不然怎会有如此的情绪反扑。所以不算是 INFJ 玩狗,只是你永远不知道他是反反复复内耗了多久,然后修炼出关系里的云淡风轻。你根本无法预料你在他们心目中的位置。他们无法把一个人永远放在一个固定位置,永远且持久的观察、考量。也许这段时间你相对重要,(这里的相对是一 INFJ 压根不会有重要的人)过段时间就不是了,但不代表会有别人。
其实 INFJ 相当有洁癖,所以不允许自己有重要的人。这是他们骨子里的质疑一切,包括所有人,他们当然知道关系里的瞬息万变。他们致力于能随时放弃掉一切而开展一些关系,他们在一些时刻会故意释放愚蠢的缺点(为了以后斩断关系的妙用)或者洞察身边人的缺点。他们想洞察一切,他们时刻劝说自己不要将心沉到某一个人、某些群体、某些关系中。当然你压根毫无察觉。因为态度还是一如既往的,甚至他们会让你觉得你们正在感情上升。转眼你就是冷宫了。
看不起许多的刻意。但凡带点人为的都天生抵触。所向往寻找的 ...
关于INFJ的千层面具
最外层:心怀大爱的白日梦想家「核心:热」
以行动和 se 体现自已对于世界的热爱。热爱世界,热爱生命,热爱万物。但这并非 INFJ 自发的热爱,而是一种期望式的追求。是一种对 ENFP 人格的 fi 的吸纳和模仿。INFJ 内心深处的自卑和阴郁会让他们极力的想摆脱这样的标签,他们渴望自己能够活成 ENFP 的模样,还能够将自己的爱和温暖传递给别人。而这样的人格也很容易吸引到其他人,然而这只是 INFJ 最外层的表象。
第二层:行走人世间的空心人「核心:冷」
对世间的一切没有太多情绪的波动。大多数的情绪不过是从他人和外界的表现中习得的,只是觉得什么场合应该有什么样的情绪,有一种强制性的表演成分。这主要源于 Fi 的空心。比如:如果有同学身上发生了些不幸的事,INFJ 为了不想内心毫无情绪的违和以及难堪,会故意配合氛围表演情绪,来强制自己和同学共情并给予对方相应的安慰和鼓励。而一旦脱离人群,脸上的表情则会快速消失,恢复平静。虽然 INFJ 会发自内心的对同学的遭遇表示遗憾和失落,但他就是很难由此产生相应的情绪,只是觉得应该如此。因为这些情绪并不是自发的,而不是一种代入式的理解。
前两层 ...
红烧肉
1.切块焯水
放葱姜蒜
料酒
撇清浮沫
煮到肉变色
捞起来洗干净
2.煸炒出油
em 这里不用放油了
因为猪油炒炒就出来了 用大火
再把肉捞起来 准备炒糖色
3.炒糖色
三勺白砂糖 量 自己看着办
先大火 炒到黄色 转小火
炒到 红褐色 就可以把肉再倒进去了
4.加佐料
稍微炒一下 看到上色了之后
加一勺料酒 两勺生抽 一勺老抽 一勺蚝油
继续炒
5.煮煮煮
加水 把肉没过的量就 ok
大火把水烧开
转小火 慢炖 50 分钟
6.完工
大火收汁
撒芝麻
五种沟通模式
五种沟通模式
沟通是人际交往中至关重要的技能。不同的沟通模式会对人际关系产生不同的影响。以下介绍五种常见的沟通模式:
1. 讨好型
讨好型沟通者以迎合和让步为主要特点。他们倾向于顺从他人,满足他人的情感需求,而忽视自己的感受和需求。他们经常使用“好的”、“没问题”、“我会改进”等措辞,往往在讨好别人的同时牺牲自己的利益。
2. 指责型
指责型沟通者经常使用斥责和责备的沟通方式。他们倾向于指责别人的错误,认为自己受到不公平对待。他们有时会表现得非常暴躁,甚至会失去控制。他们经常使用“你怎么能这样”、“你永远都不会理解”等方式来表达自己的感受和情感需求。
3. 超理智型
超理智型沟通者以理性分析和忽略感情为主要特点。他们倾向于隐藏自己的感受,掩饰自己的情感需求,表现得非常冷漠和理智。他们专注于分析问题,找到问题的根源,而不是关注情感上的需求。他们经常使用“但是”、“如果”等词语,对问题进行逻辑分析和推断,甚至刻意回避自己的感受。
4. 打岔型
打岔型沟通者经常使用幽默或转移话题的方式来缓和紧张气氛。他们在交流中用幽默来化解尴尬,以获得他人接纳。打岔型沟通者通常很难在人际交往中保持真实性,他 ...
B站24小时直播
准备
最好使用 24 小时不关机的机器,安装 ubuntu
安装 ffmpeg
sudo apt install ffmpeg
准备直播的视频
推流脚本
新建一个.sh 文件
复制粘贴就行
#!/bin/bashfolder="/home/xt/zb/" #这里改成你的文件夹地址read -p "请输入您的直播推流地址(形式为rtmp地址): " rtmpwhile truedo cd $folder for video in $(ls *.mp4) do echo '正在播放: ${video}' echo $(date +%F%N%T) ffmpeg -re -i "$video" -vcodec copy -acodec copy -f flv ${rtmp} donedone
推流地址
点这个链接打开: blibilli
点开始直播 推流码是这两个拼接
开启直播
...
tmux的用法
Tmux 是一个终端复用器,它允许用户在单个终端窗口中访问多个终端会话,并且能够将会话从一个终端分离出来,然后在另一个终端重新连接。这对于远程工作和需要保持长时间运行程序的场景非常有用。以下是一些基本的 tmux 命令和用法:
在大多数 Linux 发行版中,可以通过包管理器安装:
sudo apt-get install tmux # Debian/Ubuntusudo yum install tmux # CentOS/RHEL
基本命令
启动新会话:
tmux new -s 会话名称
附加到现有会话:
tmux attach -t 会话名称
数据库相关笔记④
数据库相关笔记①数据库相关笔记②数据库相关笔记③数据库相关笔记④
闭包 Closure
例如,假设我们有以下函数依赖性:
A -> B
B -> C
那么,属性集合 {A} 的闭包就是 {A, B, C},因为 A 可以决定 B,B 可以决定 C。
闭包的概念在数据库设计(特别是在进行范式分解)中非常重要,因为它可以帮助我们理解和使用函数依赖性。
范式
1NF (第一范式)
第一范式要求数据库表的每一列都是不可分割的原子数据项。换句话说,每一列都应该是最小的数据单位,不能再被分割。
例如,一个违反第一范式的表可能如下:
ID
Name
1
张三, 李四
在这个例子中,“Name” 列包含了两个名字,违反了第一范式。应该将其分割为两行:
ID
Name
1
张三
2
李四
2NF (第二范式)
第二范式要求数据库表满足第一范式的基础上,非主键列完全依赖于主键(如果主键是组合键,则必须完全依赖于整个组合键)。
例如,一个违反第二范式的表可能如下:
ID
Course
Teacher
1
Math
张三
1
E ...
数据库相关笔记③
数据库相关笔记①数据库相关笔记②数据库相关笔记③数据库相关笔记④
Integrity Constraints (ICs) 完整性约束
完整性约束是数据库中的一种机制,用于确保数据的准确性和一致性。这些约束可以在创建表或之后的任何时间定义。主要有以下几种类型的完整性约束:
主键约束(Primary Key Constraint):确保列(或列组合)具有唯一的值,并且每个表中的每一行都有一个主键值。
唯一约束(Unique Constraint):确保列(或列组合)的所有值都是唯一的。
外键约束(Foreign Key Constraint):确保引用另一个表的数据的完整性。
非空约束(Not Null Constraint):确保列不能有 NULL 值。
检查约束(Check Constraint):确保列中的值满足指定的条件。
优点
数据一致性:完整性约束确保了数据库中的数据满足预定义的规则,从而保证了数据的一致性。
数据准确性:通过防止无效数据输入到数据库,完整性约束提高了数据的准确性。
避免冗余:主键和唯一约束避免了数据的冗余,提高了数据的效率。
引用完整性:外键约束保证 ...
数据库相关笔记②
数据库相关笔记①数据库相关笔记②数据库相关笔记③数据库相关笔记④
SQL
Introduction to SQL
SQL is a declarative language which means that you use it to describe what data you are interested in, but not how it should be retrieved. The database system uses a variety of algorithms internally to produce the query result. With declarative languages such as SQL, you do not need to worry about these implementation details.
Query
Your task is to write an SQL query. Your query must output the name and age of all students in the Studen ...
数据库相关笔记①
数据库相关笔记①数据库相关笔记②数据库相关笔记③数据库相关笔记④
Relational Algebra(RA)关系代数
关系代数(Relational Algebra,RA)是一种用于查询和操作关系数据库的理论语言。它主要包括一组操作符,如选择(Selection),投影(Projection),并集(Union),交集(Intersection),差集(Difference),笛卡尔积(Cartesian Product),重命名(Rename)等,这些操作符可以用于操作数据库中的表(也称为关系)。
关系代数是关系数据库理论的基础,SQL 等查询语言的设计就是基于关系代数的理论。
关系代数的主要优点是它提供了一种形式化的方法来表示数据库操作,这对于理解和优化查询非常有用。
投影(Projection,π)操作
投影操作用于从表中提取我们需要的列。
投影操作会删除不在投影列表(projectionlist)中的列,并且移除结果中的重复行。
投影操作完成后,结果集的属性(attribute)将与投影列表中的属性一致。
假设我们有一个学生表,其结构如下:
学生 ID
姓名
年龄
...
计组相关笔记④
什么计组学到最后变成计网了!??
计组相关笔记①计组相关笔记②计组相关笔记③计组相关笔记④
计算机与网络组织
互联网
互联网的定义
互联网是连接了数百万台计算设备的网络,这些设备包括:
主机:运行网络应用程序的终端系统
通信链路:光纤、铜线、无线电、卫星,其传输速率(比特/秒)定义了带宽
分组交换机:转发数据包(数据块),例如路由器和交换机
互联网的组成
互联网可以被视为“网络的网络”,由互连的 ISP 组成。互联网中的所有通信活动都由协议管理,例如 TCP,IP,HTTP,Skype,802.11 等。这些协议控制消息的发送和接收。
互联网的标准
互联网的标准通常以 RFC(请求评论)的形式发布,并由 IETF(互联网工程任务组)进行维护。
互联网作为服务的基础设施
互联网提供了各种服务的基础设施,包括网络、VoIP、电子邮件、游戏、电子商务、社交网络等。它还提供了应用程序的编程接口,使应用程序能够通过连接到互联网来发送和接收消息。
协议
什么是协议?
协议定义了网络实体之间发送和接收消息的格式、顺序以及消息传输和接收时采取的操作。这不仅包括人类协议,如“现在几 ...
计组相关笔记③
W7-W9 的内容
计组相关笔记①计组相关笔记②计组相关笔记③计组相关笔记④
Memory
ROM (只读存储器)
ROM,全称为只读存储器(Read-Only Memory),是一种非易失性的存储设备,这意味着即使在断电的情况下,ROM 中的数据也不会丢失。ROM 中的数据在制造时就被写入,并且在使用过程中不能被修改。ROM 常用于存储固定的程序,如计算机的 BIOS。
RAM (随机存取存储器)
RAM,全称为随机存取存储器(Random Access Memory),是一种易失性的存储设备,这意味着在断电的情况下,RAM 中的数据会丢失。与 ROM 不同,RAM 中的数据可以在任何时候被读取和写入。RAM 是计算机的主要工作区域,用于存储操作系统、应用程序和当前工作的数据。
SRAM (静态随机存取存储器)
SRAM,全称为静态随机存取存储器(Static Random Access Memory),也是 RAM 的一种类型。与 DRAM 不同,SRAM 的每个存储单元由六个晶体管组成,不需要定期刷新。因此,SRAM 的速度比 DRAM 快,但是成本更高,容量更小。SR ...
计组相关笔记②
W5-W6 指令
计组相关笔记①计组相关笔记②计组相关笔记③计组相关笔记④
VSC 微指令
Binary
Instruction
Meaning
RTL
0000
Jns X
store the PC at address X and jump to X + 1
MBR ← PCMAR ← XM[MAR] ← MBRMBR ← XAC ← 1AC ← AC + MBRPC ← AC
0001
Load X
Load contents of address X into AC.
MAR ← XMBR ← M[MAR]AC ← MBR
0010
Store X
Store the contents of AC at address X.
MAR ← XMBR ← ACM[MAR] ← MBR
0011
Add X
Add the contents of address X to AC.
MAR ← XMBR ← M[MAR] AC ← AC + MBR
0100
Subt X
Subtract the contents of address X from ...
计组相关笔记①
W1-W5
计组相关笔记①计组相关笔记②计组相关笔记③计组相关笔记④
进制转换
各种各样的进制互相转化啦
repeated subtraction
division remainder
注意除余法是倒着来
原码反码补码
第一位是符号位 正数 0 负数 1
正数的原码反码补码都一样!
正数的原码反码补码都一样!
正数的原码反码补码都一样!
signed magnitude 原码:转化成二进制
one’s complement 反码:正数的反码和原码一样 负数的反码是原码除了第一位以外 所有的位反转
two’s complement 补码:正数的补码和原码一样 负数的补码是在反码的基础上+1
浮点表示法
在作业中,我们通常使用 14 位来表示浮点数,记住 158 就可以了。
如果你看到"with a bias of 16",这是指我们在表示指数时使用了偏移量。偏移量是一个大约在可表示的指数范围中间的数。我们从指数中减去偏移量来确定其真实值。在我们的例子中,我们有一个 5 位的指数,我们使用 16 作为我们的偏移量。这被称为超过 16 的表示法。
也就 ...