当前位置: 首页 > news >正文

K8S - GitOps 入门实战 - 自动发布与秒级回滚

引言

传统运维依赖手动执行 kubectl apply或脚本推送应用,存在环境差异、操作记录缺失、回滚缓慢等痛点。

GitOps以 Git 为唯一可信源,通过声明式配置和版本化回滚,重构 Kubernetes 交付流程,带来以下优势:

• 环境一致性:多环境配置集中托管于 Git,消除人工干预风险。

• 审计追溯:所有变更通过 Git 提交记录追踪,天然合规。

• 秒级回滚:基于 Git 历史版本快速恢复集群状态,故障恢复效率提升 90%+。

一、GitOps 核心原理

1.1 GitOps 三大支柱
在这里插入图片描述

关键说明:

1.声明式配置

• 唯一可信源:所有变更通过 Git 提交,禁止人工直接操作集群。

• 版本化追踪:Git 提交历史天然记录操作人、时间及变更内容。

2.状态同步

• 强制一致性:集群配置偏离 Git 定义时,自动触发修复(如误删 Deployment 自动重建)。

• 差异可视化:UI 直接对比镜像版本、环境变量等关键字段差异。

3.自动化恢复

• 快速回退:直接回滚 Git 提交 → 触发同步 → 集群秒级还原。

• 安全防护:同步前自动校验 YAML 合法性,拦截非法配置。

1.2 Argo CD 简介

Argo CD 是一个用于 Kubernetes 的声明式 GitOps 持续交付工具,用于 Kubernetes 应用的管理与部署。

Argo CD 核心组件:

组件职责
API Server提供Web UI、CLI和API接口
Repo Server拉取并解析Git仓库中的资源配置文件
Application Controller同步配置到集群,并持续监控状态一致性

二、GitOps 自动化发布与回滚实战

2.1 目标与工作流程

1.目标

通过 Argo CD实现以下核心能力:

• 自动发布:提交 Git 代码后,自动同步到 Kubernetes 集群。

• 秒级回滚:当配置错误时,一键回退到历史版本。

2.gitops 工作流程

gitops 工作流程图

A[修改代码] --> B[构建镜像并推送]
B --> C[更新 Deployment 镜像版本]
C --> D[提交到 Git 仓库]
D --> E[Argo CD 检测 Git 变更]
E --> F[自动同步到集群]
F --> G[应用新版本]
G --> H{运行正常?}
H -->|| I[流程结束]
H -->|| J[Git 回滚到历史版本]
J --> E 

流程解析

1.自动发布流程

• 修改代码:开发者更新代码。

• 构建并推送镜像:打包代码为镜像,推送到仓库。

• 更新 Deployment 镜像版本:更新 deployment.yaml,指向新镜像。

• 提交到 Git:推送代码和配置更新至 Git。

• Argo CD 检测变更:Argo CD 监控 Git 仓库。

• 自动同步到集群:Argo CD 自动同步配置到集群。

• 应用新版本:K8s 替换旧版本的 Pod。

2.秒级回滚流程

• 检测运行状态:发现异常(如 Pod 崩溃)。

• Git 回滚:回退到历史版本。

• Argo CD 重新同步:Argo CD 自动同步恢复集群状态。

实战部分

2.2 环境搭建

1.安装必要工具

确保已安装并配置好以下环境:

Kubernetes 集群(可使用 Minikube 或 Kind 进行本地测试)

kubectl命令行工具

Docker(用于构建镜像)

Argo CD CLI (管理 Argo CD)

安装 Argo CD

安装工具 (Mac 安装为例)
# 1. 安装 Kind(创建本地 Kubernetes 集群)
brew install kind
# 2. 安装 Argo CD CLI(管理 Argo CD)
brew install argocd
# 3. 安装 Docker(构建镜像)
brew install docker

2.创建本地 Kubernetes 集群

kind create cluster --name gitops-demo

3.安装 Argo CD

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml# 等待 Argo CD Pod 就绪(约1分钟)
kubectl wait --for=condition=Ready pods --all -n argocd --timeout=300s# 端口转发访问 Web UI
kubectl port-forward svc/argocd-server -n argocd 8080:443 &# 获取初始密码
echo "Argo CD 初始密码:" $(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d)

2.3 准备应用镜像和 k8s 清单

项目结构

gitops-demo/
│── .git/                # Git 版本控制数据(隐藏目录)  
│── .gitignore            
│── app/                 # Flask 应用代码  
│   ├── Dockerfile       # 构建 Docker 镜像  
│   ├── app.py           # 应用主文件  
│   ├── requirements.txt  
│── k8s/                 # Kubernetes 部署配置  
│   ├── deployment.yaml  # 部署配置文件  
│   ├── service.yaml     # 服务配置文件  
│── README.md           

注:下文提到的

• your-username请替换为 你自己的 GitHub 仓库地址。

• your-dockerhub-username请替换为 你自己的 Docker Hub 账号。

1.准备应用代码与镜像

步骤1:创建极简 Flask 应用

app/app.py

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():return "GitOps Demo v1"
if __name__ == "__main__":app.run(host="0.0.0.0", port=5000)

app/requirements.txt

Flask==2.2.2

步骤2:编写 Dockerfile

FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]

步骤3:构建并推送镜像到 Docker Hub

# 替换 your-dockerhub-username 为你的账号
docker build -t your-dockerhub-username/gitops-demo-app:v1 ./app
# 登录 Docker Hub
docker login
# 推送镜像
docker push your-dockerhub-username/gitops-demo-app:v1
  1. Kubernetes 清单(manifest )并推送 git 仓库

步骤1:初始化本地 Git 仓库

mkdir gitops-demo && cd gitops-demo  # 创建项目目录并进入该目录
git init  # 初始化 Git 仓库
mkdir -p k8s  # 创建存放 Kubernetes 配置文件的目录

步骤2:编写k8s 清单 :Deployment 和 Service

# k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: gitops-demo-app
spec:replicas: 2selector:matchLabels:app: gitops-demo-apptemplate:metadata:labels:app: gitops-demo-appspec:containers:- name: appimage: your-dockerhub-username/gitops-demo-app:v1  # 替换为你的镜像ports:- containerPort: 5000
# k8s/service.yaml
apiVersion: v1
kind: Service
metadata:name: gitops-demo-app
spec:selector:app: gitops-demo-appports:- port: 80targetPort: 5000type: ClusterIP

步骤3:提交k8s 清单 到 Git 仓库

# 查看 k8s 目录下的文件
ls k8s
# 输出结果:
# deployment.yaml
# service.yaml# 添加 k8s 目录下的所有文件到git暂存区
git add k8s# 提交
git commit -m "Add Kubernetes deployment and service files"# 关联远程仓库(如果未关联过)
git remote add origin https://github.com/your-username/gitops-demo.git  # 替换为你的 Git 仓库# 推送代码到远程仓库,并设置main 分支为默认上游分支
git push -u origin main

2.4 配置 Argo CD (实现自动部署)

1.配置Argo CD

步骤1:登录 Argo CD Web UI
• 访问 https://localhost:8080
• 用户名:admin
• 密码:使用上面获取的初始密码

步骤2:创建应用部署策略
• 应用名:gitops-demo
• 仓库 URL:https://github.com/your-username/gitops-demo.git
• 路径:k8s
• 目标集群:https://kubernetes.default.svc
• 同步策略:勾选 Automated(自动同步)和 Prune(清理无用资源)

2.验证集群部署结果

kubectl get pods -l app=gitops-demo-app
# 预期输出:2Pod 状态为 Running

到这里我们已经完成gitops 自动部署的准备工作,下面可以演示自动发布和自动回滚了。

2.5 自动发布演示

1.更新应用代码 -> 构建新镜像 ->推送镜像仓库

# 修改 app/app.py 的返回内容
return "GitOps Demo v2"
# 构建并推送新镜像
docker build -t your-dockerhub-username/gitops-demo-app:v2 ./app
docker push your-dockerhub-username/gitops-demo-app:v2

2.更新 Deployment 镜像版本 -> 推送 git仓库

sed -i '' 's/v1/v2/g' k8s/deployment.yaml
git add . && git commit -m "Update to v2" && git push origin main

3.观察 Argo CD 自动同步

• 在 Argo CD UI中查看应用状态变为 Synced。

4.验证新版本镜像已同步到集群

  执行命令验证pod 镜像版本# 获取所有标签为 app=gitops-demo-app 的 Pod 的第一个容器镜像名称
kubectl get pods -l app=gitops-demo-app -o jsonpath="{.items[*].spec.containers[0].image}"# 输出:your-dockerhub-username/gitops-demo-app:v2

2.6 秒级回滚演示

1.提交错误配置到 deployment文件 -> 推送Git仓库

# 故意写入无效镜像版本
sed -i '' 's/v2/invalid/g' k8s/deployment.yaml
git add . && git commit -m "Break the app" && git push origin main

2.观察 Argo CD 同步失败

• Argo CD 状态变为 Degraded,Pod 状态为 ImagePullBackOff。

3.通过 Git 回滚 K8S 清单

git revert HEAD
git push origin main

4.验证恢复状态

• Argo CD 自动同步到上一版本,Pod 恢复为 v2运行。

三、总结

3.1 核心总结

GitOps 的核心价值:

• 零手动干预:从代码提交到集群发布全链路自动化。

• 版本即状态:Git 提交历史记录集群状态变迁,支持分钟级回滚。

• 企业级可观测:Argo CD开箱即用,通过 其 Web UI 配置管理及实时监控资源健康状态。

相关文章:

K8S - GitOps 入门实战 - 自动发布与秒级回滚

引言 传统运维依赖手动执行 kubectl apply或脚本推送应用,存在环境差异、操作记录缺失、回滚缓慢等痛点。 GitOps以 Git 为唯一可信源,通过声明式配置和版本化回滚,重构 Kubernetes 交付流程,带来以下优势: • 环境…...

第六章 流量特征分析-常见攻击事件 tomcat wp

1、在web服务器上发现的可疑活动,流量分析会显示很多请求,这表明存在恶意的扫描行为,通过分析扫描的行为后提交攻击者IP flag格式:flag{ip},如:flag{127.0.0.1} 可看见有大量的IP为:14.0.0.120的ip攻击10.0.0.112。 2、找到攻击者…...

Axure RP 快速上手指南:安装配置与实战技巧

以下是Axure RP的中文安装与使用指南: 1. 下载Axure RP Axure RP提供下载地址:https://pan.quark.cn/s/cc957c429c1c 2. 安装Axure RP Windows系统: 双击下载的 .exe 文件。 按提示完成安装(接受协议、选择安装路径等&#xff…...

【Dockerfile】Dockerfile打包Tomcat及TongWeb应用镜像(工作实践踩坑教学)

文章目录 前言准备工作目录结构准备基础镜像准备dockerfile开发(TongWeb)dockerfile开发(Tomcat)dockerfile镜像命令(排查问题基本够用) 更多相关内容可查看 前言 本文仅应用于完成此项工作,后…...

第16届蓝桥STEMA真题剖析-2025年1月12日Scratch初/中级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥真题解析系列教程第223讲。 第16届第4次蓝桥STEMA已于2025年1月12日正式落下帷幕,比赛仍然采取线上形式。这是Scratch…...

文件读取操作

如果需要从文件读入数据,并把输出数据保存为文件,需要使用文件读取。 freopen为file reopen,意为文件重新打开,实现重定向标准输入输出第一个参数为文件名可以修改,输入文件为.in,输出文件为.out第二个参数…...

服务容错治理框架resilience4jsentinel基础应用---微服务的限流/熔断/降级解决方案

写在前文:hystrix停止维护,不做总结; 本文主要总结sentinel和resilience4j这两个框架;另外额外补充面试可能会问到的限流算法; 目录 限流算法 漏桶算法 计数器算法 令牌桶算法 resilience4j与sentinel resilie…...

信创系统图形界面开发指南:技术选择与实践详解

信创系统图形界面开发指南:技术选择与实践详解 🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书&…...

六、UI自动化测试06--PO设计模式

目录 一、PO 设计模式1. v1 版本1.1 v1.11.2 v1.2 2. v2 版本3. ⽅法封装套路4. v3 版本4.1 浏览器对象管理类的实现4.2 浏览器对象管理类的优化4.3 浏览器对象管理类的使⽤4.4 获取弹窗信息⽅法的封装 5. PO 设计模式6. v4 版本6.1 PO⻚⾯元素封装步骤6.2 测试⽤例的最终代码样…...

电子病历高质量语料库构建方法与架构项目(智能数据目录篇)

电子病历高质量语料库的构建是医疗人工智能发展的基础性工作,而智能数据目录作为数据治理的核心组件,能够有效管理这些语料资源。本文将系统阐述电子病历高质量语料库的构建方法与架构,特别聚焦于智能数据目录的设计与实现,包括数据目录的功能定位、元数据管理、构建步骤以…...

DeepSeek最新大模型发布-DeepSeek-Prover-V2-671B

2025 年 4 月 30 日,DeepSeek 开源了新模型 DeepSeek-Prover-V2-671B,该模型聚焦数学定理证明任务,基于混合专家架构,使用 Lean 4 框架进行形式化推理训练,参数规模达 6710 亿,结合强化学习与大规模合成数据…...

论文公式根据章节自动编号教程

目录 一、操作前提二、具体操作步骤 插入公式编号添加括号(如需) 问答 摘要: 在撰写论文等文档时,让公式根据章节自动编号能大幅提升排版效率。 一、操作前提 先将每一章标题设置为多级标题。可点击Word“多级列表” - “定义…...

「Mac畅玩AIGC与多模态10」开发篇06 - 使用自定义翻译插件开发智能体应用

一、概述 本篇介绍如何在 macOS 环境下,通过编写自定义 OpenAPI Schema,将无需认证的翻译服务接入 Dify 平台,并开发基于实时翻译的智能体应用。本案例培养单提参数 API 调用技巧,实现智能体的实时转换能力。 二、环境准备 1. 确认本地开发环境 macOS 系统Dify 平台已成…...

大连理工大学选修课——机器学习笔记(8):Boosting及提升树

Boosting及提升树 Boosting概述 Bootstrap强调的是抽样方法 不同的数据集彼此独立,可并行操作 Boosting注重数据集改造 数据集之间存在强依赖关系,只能串行实现 处理的结果都是带来了训练集改变,从而得到不同的学习模型 Boosting基本思…...

OpenHarmony - 小型系统内核(LiteOS-A)(十七)标准库

OpenHarmony - 小型系统内核(LiteOS-A)(十七) 二十一、标准库 OpenHarmony内核使用musl libc库,支持标准POSIX接口,开发者可基于POSIX标准接口开发内核之上的组件及应用。 标准库接口框架 图1 POSIX接口…...

vscode详细配置Go语言相关插件

文章目录 vscode详细配置Go语言1.插件介绍1.1 BetterCommments1.2GitGraph1.3Go1.4GoComment1.5goctl1.6Lowlight Go Errors1.7Markdown1.8Material Icon Theme1.9Preetier2.0Project Manager其它插件 2.settings.json文件 vscode详细配置Go语言 1.插件介绍 1.1 BetterCommme…...

如何解决服务器文件丢失或损坏的问题

当服务器文件丢失或损坏时,需采取系统化的恢复和预防措施。以下是分步骤解决方案: --- ### **一、紧急恢复措施** #### 1. **检查文件系统完整性** bash # 对未挂载的分区进行检查(需先umount) fsck -y /dev/sdX # 针对ext4文…...

【C++11】包装器:function 和 bind

📝前言: 这篇文章我们来讲讲C11——包装器:function和bind,对于每个包装器主要讲解: 原型基本语法使用示例 🎬个人简介:努力学习ing 📋个人专栏:C学习笔记 &#x1f380…...

芯知识|小体积语音芯片方案WTV/WT2003H声音播放ic应用解析

在智能硬件设备趋向微型化的背景下,语音芯片方案厂家针对小体积设备开发了多款超小型语音芯片方案,其中WTV系列和WT2003H系列凭借其QFN封装设计、高性能与高集成度,成为微型设备语音方案的理想选择。以下从封装特性、功能优势及典型应用场景三…...

第三部分:特征提取与目标检测

像边缘、角点、特定的纹理模式等都是图像的特征。提取这些特征是许多计算机视觉任务的关键第一步,例如图像匹配、对象识别、图像拼接等。目标检测则是在图像中找到特定对象(如人脸、汽车等)的位置。 本部分将涵盖以下关键主题: …...

MySQL bin目录下的可执行文件

文章目录 MySQL bin目录下的可执行文件1.mysqldump2.mysqladmin3.mysqlcheck4.mysqlimport5.mysqlshow6.mysqlbinlog7.常用可执行文件 MySQL bin目录下的可执行文件 1.mysqldump mysqldump 是 MySQL 的数据库备份工具。对数据备份、迁移或恢复非常重要。 备份整个数据库&…...

第四部分:赋予网页健壮的灵魂 —— TypeScript(中)

目录 4 类与面向对象:构建复杂的组件4.1 类的定义与成员4.2 继承 (Inheritance)4.3 接口实现 (Implements)4.4 抽象类 (Abstract Class)4.5 静态成员 (Static Members) 5 更高级的类型:让类型系统更灵活5.1 联合类型 (|)5.2 交叉类型 (&)5.3 字面量类…...

Learning vtkjs之ImageMarchingCubes

体积 等值面处理 介绍 vtkImageMarchingCubes - 对体积进行等值面处理 给定一个指定的等值,使用Marching Cubes算法生成一个等值面。 效果 新建了一个球,对比一下原始的(透明的)和ISO的效果 核心代码 参数部分 const updat…...

【“星睿O6”AI PC开发套件评测】+ tensorflow 初探

因为本次我的项目计划使用 tensorflow,所以这篇文章主要想做一个引子,介绍如何在“星睿O6”上搭建 tensorflow 的开发环境和验证测试。本文主要分为几个部分: 在“星睿O6”上编译安装 tensorflow基于 MNIST 数据集的模型训练和评估 tensorf…...

通义灵码全面接入Qwen3:AI编程进入智能体时代,PAI云上部署实战解析

引言:AI编程的范式革命 2025年4月30日,阿里云通义灵码宣布全面支持新一代大模型Qwen3,并同步推出编程智能体功能,标志着AI辅助开发从“工具助手”向“自主决策智能体”的跃迁。与此同时,阿里云PAI平台上线Qwen3全系列…...

如何禁止AutoCAD这类软件联网

推荐二、三方法,对其他软件影响最小 一、修改Hosts文件 Hosts文件是一个存储域名与IP地址映射关系的文本文件,通过修改Hosts文件可以将AutoCAD的域名指向本地回环地址(127.0.0.1),从而实现禁止联网的目的。具体步骤如…...

音视频项目在微服务领域的趋势场景题深度解析

音视频项目在微服务领域的趋势场景题深度解析 在互联网大厂Java求职者的面试中,经常会被问到关于音视频项目在微服务领域的应用场景的相关问题。本文通过一个故事场景来展示这些问题的实际解决方案。 第一轮提问 面试官:马架构,欢迎来到我…...

100 个 NumPy 练习

本文翻译整理自:https://github.com/rougier/numpy-100 文章目录 关于 100 个 NumPy 练习相关链接资源关键功能特性 100 个 NumPy 练习题1、导入 NumPy 包并命名为 np (★☆☆)2、打印 NumPy 版本和配置信息 (★☆☆)3、创建一个大小为 10 的空向量 (★☆☆)4、如何…...

在Carla中构建自动驾驶:使用PID控制和ROS2进行路径跟踪

机器人软件开发什么是 P、PI 和 PID 控制器?比例 (P) 控制器比例积分 (PI) 控制器比例-积分-微分 (PID) 控制器横向控制简介CARLA ROS2 集成纵向控制横向控制关键要点结论引用 机器人软件开发 …...

Windows和 macOS 上安装 `nvm` 和 Node.js 16.16.0 的详细教程。

Windows和 macOS 上安装 nvm 和 Node.js 16.16.0 的详细教程。 --- ### 1. 安装 nvm(Node Version Manager) nvm 是一个 Node.js 版本管理工具,可以轻松安装和切换不同版本的 Node.js。 #### Windows 安装 nvm 1. **下载 nvm 安装包**&#x…...

day11 python超参数调整

模型组成:模型 算法 实例化设置的外参(超参数) 训练得到的内参调参评估:调参通常需要进行两次评估。若不使用交叉验证,需手动划分验证集和测试集;但许多调参方法自带交叉验证功能,实际中可省略…...

Linux C++ xercesc xml 怎么判断路径下有没有对应的节点

在Linux环境下使用Xerces-C库处理XML文件时&#xff0c;判断路径下是否存在对应的节点可以通过以下几个步骤实现&#xff1a; 加载XML文档 首先&#xff0c;你需要加载XML文档。这可以通过创建一个xercesc::DOMParser对象并使用它的parse方法来实现。 #include <xercesc/…...

罗技K580蓝牙键盘连接mac pro

罗技K580蓝牙键盘&#xff0c;满足了我们的使用需求。最棒的是&#xff0c;它能够同时连接两个设备&#xff0c;通过按F11和F12键进行切换&#xff0c;简直不要太方便&#xff01; 连接电脑 &#x1f4bb; USB连接 1、打开键盘&#xff1a;双手按住凹槽两边向前推&#xff0…...

Socket-UDP

Socket&#xff08;套接字 &#xff09;是计算机网络中用于实现进程间通信的重要编程接口&#xff0c;是对 TCP/IP 协议的封装 &#xff0c;可看作是不同主机上应用进程之间双向通信端点的抽象。以下是详细介绍&#xff1a; 作用与地位 作为应用层与传输层、网络层协议间的中…...

【游戏ai】从强化学习开始自学游戏ai-2 使用IPPO自博弈对抗pongv3环境

文章目录 前言一、环境设计二、动作设计三、状态设计四、神经网路设计五、效果展示其他问题总结 前言 本学期的大作业&#xff0c;要求完成多智能体PPO的乒乓球对抗环境&#xff0c;这里我使用IPPO的方法来实现。 正好之前做过这个单个PPO与pong环境内置的ai对抗的训练&#…...

LeRobot 项目部署运行逻辑(三)——机器人及舵机配置

Lerobot 目前的机器人硬件以舵机类型为主&#xff0c;并未配置机器人正逆运动学及运动学&#xff0c;遥操作映射以舵机关节角度为主 因此&#xff0c;需要在使用前需要对舵机各项参数及初始位置进行配置 目录 1 Mobile ALOHA 配置 2 Dynamixel 配置 2.1 配置软件 2.2 SDK …...

Ubuntu20.04安装NVIDIA Warp

Ubuntu20.04安装NVIDIA Warp 安装测试 Warp的gitee网址 Warp的github网址 写在前面&#xff1a;建议安装前先参考readme文件自检系统驱动和cuda是否支持&#xff0c;个人实测建议是python3.9&#xff0c;但python3.8.20也可以使用。 写在前面&#xff1a;后续本人可能会使用这…...

电子病历高质量语料库构建方法与架构项目(临床情景理解模块篇)

引言 随着人工智能技术在医疗健康领域的广泛应用,电子病历(Electronic Medical Records,EMR)作为临床医疗数据的重要载体,已成为医学研究和临床决策支持的关键资源。电子病历高质量语料库的构建为医疗人工智能模型的训练和应用提供了基础支撑,其中临床情境理解模块是连接…...

WPF性能优化举例

WPF性能优化集锦 一、UI渲染性能优化 1. 虚拟化技术 ​​ListView/GridView虚拟化​​: <ListView VirtualizingStackPanel.IsVirtualizing="True"VirtualizingStackPanel.VirtualizationMode="Recycling"ScrollViewer.IsDeferredScrollingEnabled=…...

【CUDA pytorch】

ev win10 3050ti 联想笔记本 nvcc --version 得到 PS C:\Users\25515> nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Tue_May__3_19:00:59_Pacific_Daylight_Time_2022 Cuda compilation tools, release …...

mac下载homebrew 安装和使用git

mac下载homebrew 安装和使用git 本人最近从windows换成mac&#xff0c;记录一下用homebrew安装git的过程 打开终端 command 空格&#xff0c;搜索终端 安装homebrew 在终端中输入下面命令&#xff0c;来安装homebrew /bin/bash -c "$(curl -fsSL https://raw.githu…...

Elasticsearch入门速通01:核心概念与选型指南

一、Elasticsearch 是什么&#xff1f; 一句话定义&#xff1a; 开源分布式搜索引擎&#xff0c;擅长处理海量数据的实时存储、搜索与分析&#xff0c;是ELK技术栈&#xff08;ElasticsearchKibanaBeatsLogstash&#xff09;的核心组件。 核心能力&#xff1a; 近实时搜索&…...

应对过度处方挑战:为药物推荐任务微调大语言模型(Xiangnan He)

Abstract 药物推荐系统因其有潜力根据患者的临床数据提供个性化且有效的药物组合&#xff0c;在医疗保健领域备受关注。然而&#xff0c;现有方法在适应不同的电子健康记录&#xff08;EHR&#xff09;系统以及有效利用非结构化数据方面面临挑战&#xff0c;导致其泛化能力有限…...

41 python http之requests 库

Python 的requests库就像你的 "接口助手",用几行代码就能发送 HTTP 请求,自动处理复杂的网络交互,让你告别手动拼接 URL 和解析响应的痛苦! 一、快速入门:3 步搞定基本请求 1.1 安装库:一键开启助手功能 pip install requests 1.2 发送 GET 请求 import r…...

百度网盘golang实习面经

goroutine内存泄漏的情况&#xff1f;如何避免&#xff1f; goroutine内存泄漏基本上是因为异常导致阻塞, 可以导致阻塞的情况 1 死锁, goroutine 等待的锁发生了死锁情况 2 chan没有正常被关闭,导致读取读chan的goroutine阻塞 如何避免 1 避免死锁 2 正常关闭 3 使用context管…...

super_small_toy_tpu

super_small_toy_tpu 小狼http://blog.csdn.net/xiaolangyangyang 1、基础框图 2、源码下载&#xff1a; GitHub - dldldlfma/super_small_toy_tpu 3、安装iverilog、vvp、gtkwave windows安装&#xff1a;https://bleyer.org/icarus/ ubuntu安装&#xff1a;sudo ap…...

Redis缓存穿透、缓存击穿与缓存雪崩:如何在.NET Core中解决

在高并发的互联网系统中&#xff0c;缓存技术作为优化系统性能的重要手段&#xff0c;已被广泛应用。然而&#xff0c;缓存系统本身也存在一些常见的问题&#xff0c;尤其是 缓存穿透、缓存击穿 和 缓存雪崩。这些问题如果处理不当&#xff0c;可能导致系统性能严重下降&#x…...

驱动车辆诊断测试创新 | 支持诊断测试的模拟器及数据文件转换生成

一 背景和挑战 | 背景&#xff1a; 随着汽车功能的日益丰富&#xff0c;ECU和域控制器的复杂性大大增加&#xff0c;导致测试需求大幅上升&#xff0c;尤其是在ECU的故障诊断和性能验证方面。然而&#xff0c;传统的实车测试方法难以满足高频率迭代和验证需求&#xff0c;不仅…...

VS Code技巧2:识别FreeCAD对象

在使用VS Code阅读FreeCAD代码或者FreeCAD的工作台代码时&#xff0c;VS Code无法识别FreeCAD对象&#xff0c;会提示Import “FreeCAD” could not be resolved&#xff1a; 问题解决如下几步即可。 第一步&#xff1a;确认 FreeCAD 的 Python 环境路径 在FreeCAD的Python控制…...

泰迪杯特等奖案例学习资料:基于多模态融合与边缘计算的智能温室环境调控系统

(第十二届泰迪杯数据挖掘挑战赛特等奖案例解析) 一、案例背景与核心挑战 1.1 应用场景与行业痛点 在现代设施农业中,温室环境调控直接影响作物产量与品质。传统温室管理存在以下问题: 环境参数耦合性高:温度、湿度、光照、CO₂浓度等参数相互影响,人工调控易顾此失彼。…...