一、版本控制

1.什么是版本控制?

版本控制用于高效追踪和管理项目开发中的代码、配置及文档变更历史,确保团队成员始终使用正确版本,并支持版本回溯、差异比较和文件恢复。它能带来以下优势:通过历史记录保障数据安全与完整性;多分支开发机制提升团队协作效率;结合CI/CD工具实现自动化流程,简化复杂项目管理能力。

2.什么是版本控制系统?

版本控制工具用于管理代码变更,通过版本号或语义化标签标记不同开发阶段。它能完整记录文件修改历史,支持回退到任意历史版本。该工具允许多开发者协同工作,通过分支机制隔离不同功能开发,最终将所有变更合并至主分支。版本库是版本控制系统的核心。

3.什么是版本库?

版本库是版本控制系统的核心数据库,完整保存了项目文件及其变更历史,包括文件所有版本、元数据以及版本间的依赖关系。其核心特性包括:完整历史记录、分支与合并功能、分布式存储机制。

二、分布式版本控制Git

Git 是一款开源的分布式版本控制系统(DVCS),由 Linux 创始人 Linus Torvalds 在 2005 年开发。该系统能高效管理代码和文件变更历史,支持团队协作与并行开发。其分布式架构特性提供了强大的分支管理功能,可精准追踪每个版本的变化。

1.Git工作流

工作区(Workspace):存放从仓库中提取出来的文件的地方,供用户直接编辑。

暂存区(Index/Stage):文件变更暂存的区域,准备提交的文件信息。

仓库(Local Repository):存储所有版本数据和元信息的地方。

远程仓库(Remote Repository):托管在远程服务器上的共享仓库,供他人浏览、下载代码。

工作流程

2.Git版本库操作
# --local:仓库级(仓库目录下.git/config)
# --global:全局级(~/.gitconfig)
# --system:系统级(/etc/gitconfig)
git config --global user.name 用户名         #设置全局级用户名
git config --global init.defaultBranch 分支名     #设置全局默认分支名称
git config --list               #查看已有的Git配置

初始化版本库

git init 项目目录

查看Git本地仓库状态

git status

将文件信息添加到暂存区

git add 文件名

将暂存区文件提交到本地仓库并附加提交信息

git commit -m "提交信息"

查看本地Git版本库信息

git log                  #详细信息
git log --pretty=oneline         #简略信息
git log --oneline        #极简信息
3.Git指针操作

还原到指定版本

git reset --hard 版本id

获取指针移动轨迹

git reflog
4.Git分支操作

查看分支信息

git branch -v

创建分支

git branch 分支名

切换分支

git checkout 分支名

删除分支

git branch -d 分支名

合并分支到master中

git merge 分支名
5.Git标签管理

查看已有标签

git tag

创建标签

git tag 标签名

删除标签

git tag -d 标签名

三、Git服务器

Git 服务器是用于集中存储和管理 Git 仓库的核心节点,主要负责维护代码版本历史、支持团队协作开发。它通过标准协议与本地仓库进行数据交互,通常部署在独立服务器上,开发者可通过网络远程访问服务器中的代码仓库。常用的Git服务器有GitHub、Gitee码云、GitLab。

1.GitLab

DevOps一体化平台,集成代码托管、CI/CD、项目管理、安全扫描等生命周期工具,支持端到端软件交付,提供多层安全防护、操作审计日志及符合国内法规的数据存储方案。

2.代码托管
git remote add origin GitLub仓库项目地址         #关联远程项目
git push -u origin --all        #推送本地仓库所有分支
git push -u origin --tags       #推送本地仓库所有标签

http方式免密推送

git config --global credential.helper store       #持久保存密码设置

四、CI/CD

在DevOps理念推动下,持续集成(CI)、持续交付(CD)和持续部署(CD)等创新方法应运而生,显著提升了软件发布效率。CI的核心在于开发人员频繁提交代码至共享仓库,借助自动化构建和测试确保代码质量,有效规避集成问题。CD则更进一步,能够将验证通过的代码自动发布到存储库,实现生产环境的一键部署。而最高级别的持续部署则是全自动化流程,所有测试通过的代码将自动部署上线,完全无需人工参与。

1.DevOps流程

计划:项目初期,研讨业务需求,指定研发计划。

编码:开发团队基于项目需求编写业务代码,使用Git等工具进行版本控制。

构建:通过Maven,Docker等工具打包代码为可上线的产品。

测试:对产品进行自动化测试(如Jmeter)验证其功能和性能。

发布:生成通过测试后的稳定版本,准备进行部署。

部署:使用Ansible、Kubernetes等工具将产品自动发布到生产环境。

运营:运维团队监控产品在生产环境下的工作中状态,处理异常。

监控:使用Prometheus进行日志与指标的收集,反馈信息到计划阶段优化迭代。

2.Jenkins

Jenkins 是一款开源的 ‌持续集成/持续交付(CI/CD)‌ 自动化工具,基于 Java 开发,广泛应用于软件构建、测试和部署流程。支持Maven、Gradle等构建工具,能实现自定化编译与测试,监控Git的变更,触发预设的构建流程,快速测试代码质量,通过流水线(Pipeline)将构建好的产品部署到测试或生产环境。

五、Elasticsearch

Elasticsearch 是一个基于 ‌Lucene‌ 构建的开源分布式搜索引擎,专为‌全文检索、日志分析、复杂查询‌等高性能场景设计‌。具备分布式存储与计算的功能,实现数据自动分片并支持副本,提升可靠性与查询并行度,通过粉刺、标准化的词项映射,实现高效率全文检索,数据写入之后秒级可查,适用于日志监控等实时性要求较高的场景。

1.Elasticsearch服务配置
# vim /etc/elasticsearch/elasticsearch.yml 
node.name: Services                 #23行,ES节点名称
path.data: /var/lib/elasticsearch   #33行,ES数据存储路径
path.logs: /var/log/elasticsearch   #37行,ES日志存储路径
network.host: 0.0.0.0               #55行,监听地址
http.port: 9200                     #59行,HTTP端口
http.cors.enabled: true             #60行,开启HTTP跨域访问支持
http.cors.allow-origin: "*"         #61行,允许跨域的访问范围
启动Elasticsearch服务,设置服务开机自启动
systemctl enable elasticsearch --now
2.测试Ik分词器
curl -H "Content-Type: application/json" -XPOST http://localhost:9200/_analyze?pretty -d '
{"analyzer": "standard","text": "需要分析的文本内容"
}'
3.HEAD插件

导入ES-HEAD插件

podman load -i Elasticsearch/elasticsearch-head.tar

启动HEAD容器

podman run -d --name es-head --hostname es-head -p 9100:9100 localhost/elasticsearch-head:latest            

配置ES-HEAD跨域

#sed -n '59,61p' /etc/elasticsearch/elasticsearch.yml
http.port: 9200
http.cors.enabled: true            #开启http跨域支持
http.cors.allow-origin: "*"        #允许跨域的访问范围

六、消息队列

消息队列是一种进程之间通信机制,用于在不同进程或服务之间以异步、解藕的方式传递数据。其核心思想是将消息暂存与队列当中,由生产者和消费者按需处理,广泛应用于分布式系统和高并发场景‌。

1.消息队列特点

异步处理:生产者发送消息后无需等待消费者处理,提升系统响应速度‌。

应用解藕:生产者和消费者通过队列交互,降低模块间直接依赖‌。

流量削峰:缓存突发请求,避免系统因瞬间高并发崩溃。

2.RabbitMQ

RabbitMQ 是一款基于 AMQP(高级消息队列协议)的开源消息中间件,专为分布式系统设计,可实现高效可靠的消息传递。它支持多语言客户端接入,提供直观的可视化管理界面,并具备灵活的消息分发机制,同时支持集群部署和持久化存储。

3.工作模式

简单模式(Simple):生产者直接发送消息到对列,消费者从队列中消费,一对一通信。

工作队列模式(Work Queues):多个消费者共享一个队列,消息通过轮询或者权重分配。

发布/订阅模式(Fanout):交换机将消息广播到所有绑定的队列,无路由键匹配。

路由模式(Direct):交换机根据Routing Key精确匹配队列的Binding Key,实现点对点通信。

主题模式(Topic):通过通配符实现模糊匹配。

4.RabbitMQ部署

安装Erlang

dnf -y install erlang-25.2-1.el8.x86_64.rpm

安装RabbitMQ

dnf -y install rabbitmq-server-3.11.5-1.el8.noarch.rpm

启动网页管理插件

rabbitmq-plugins enable rabbitmq_management

创建用户

rabbitmqctl add_user 用户名

列出已有用户

rabbitmqctl list_users

为用户添加标签

abbitmqctl set_user_tags 用户名 标签
#超级管理员(administrator) 监控者(monitoring) 策略制定者(policymaker) 普通管理者(management) 其他(guest)

列出已有虚拟主机

rabbitmqctl list_vhosts 

创建虚拟机

 rabbitmqctl add_vhost /虚拟机名

设置用户对虚拟主机的所有权限

 rabbitmqctl set_permissions -p /主机名 用户名

查看用户权限

rabbitmqctl list_user_permissions 用户名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920777.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920777.shtml
英文地址,请注明出处:http://en.pswp.cn/news/920777.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型——利用RAG构建智能问答平台实战

利用RAG构建智能问答平台实战 目前公司的智能问答平台利用RAG技术构建,现给大家分享下通RAG技术构建智能问平台的具体流程和原理。 一、什么是RAG RAG是检索增强生成技术(Retrieval-Augmented Generation),目前是构建智能问答的重要技术。RAG相比传统的检索可以可以减少…

flume事务机制详解:保障数据可靠性的核心逻辑

flume事务机制详解:保障数据可靠性的核心逻辑 在数据采集过程中,“不丢数据、不重数据” 是核心需求。Flume 之所以能在分布式环境下保证数据可靠性,关键在于其内置的事务机制。Flume 通过在 “Source → Channel” 和 “Channel → Sink” …

第四十九天(springboot模版注入ThymeleafFreemarkerVelocity)

开发框架-SpringBoot 参考:Spring Boot 中文文档 新建一个spring Boot 项目,修改服务器url为 aliyun.com 不然没有与jdk8版本对应的java 选择一个spring web 库,点击创建即可 来到这个页面点击运行 启动的是8080端口,用127.0.0.1…

Spring MVC 九大组件源码深度剖析(六):HandlerExceptionResolver - 异常处理的艺术

文章目录一、异常处理的核心价值二、核心接口设计三、四大内置实现类源码解析1. ExceptionHandlerExceptionResolver(现代异常处理核心)2. ResponseStatusExceptionResolver(HTTP状态码处理)3. DefaultHandlerExceptionResolver&a…

MCP(Model Context Protocol,模型上下文协议)介绍

1. 背景 随着大语言模型(LLM, Large Language Model)的应用越来越广泛,一个核心问题逐渐凸显: 模型在对话或推理时,往往只能依赖有限上下文窗口。外部工具、知识库、应用接口如何统一接入模型,缺乏标准协议…

synchronized的锁对象 和 wait,notify的调用者之间的关系

谁调用了wait和notify方法,会决定这两个方法的控制范围吗?你的问题非常深入,涉及到 wait() 和 notify() 方法的控制范围和作用域。让我们详细分析一下:✅ 核心概念:控制范围由“锁对象”决定wait() 和 notify() 的控制…

【技术教程】如何将文档编辑器集成到用 .Net 编写的网络应用程序中

在现代网络应用中,​富文本编辑能力已成为内容管理系统的核心需求。对于 .NET 开发者而言,选择适合的编辑器并高效集成,是构建企业级应用的关键一步,可让项目管理、 CRM 或定制化系统具备原生办公能力,消除频繁切换应用…

【大模型记忆-Mem0详解-1】概述

目的和能力 Mem0 通过提供以下功能将无状态 AI 应用程序转换为有状态、支持内存的系统: 持久记忆 :跨会话长期保留用户偏好、对话历史记录和上下文信息多级内存 :支持具有自适应个性化的用户级、会话级和代理级内存智能提取 :基于…

2024年山东省信息学小学组(CSP-X)第一轮题解

2024年山东省信息学小学组(CSP-X)第一轮题解 原题下载 单项选择题 阅读程序 阅读程序 #1 判断题 阅读程序 #2 判断题 单选题 阅读程序 #3 判断题 单选题 完善程序 消灭怪兽 位运算操作 原题下载 CSP-X2024小学组(山东)第一轮试题以及答案 单项选择题 共 15 题,每题 2 分…

SW - 用装配图的方式组合多个子零件然后转换成为零件,可维护性好

文章目录SW - 用装配图的方式组合多个子零件然后转换成为零件,可维护性好概述笔记例子将装配图另存为零件将零件图中的多个实体组合为一个实体的特征备注ENDSW - 用装配图的方式组合多个子零件然后转换成为零件,可维护性好 概述 以前画机械零件&#x…

PhotoshopImageGenerator:基于Photoshop的自动化图像数据集生成工具

整体逻辑与设计思路 PhotoshopImageGenerator是一个基于Python和Win32COM的自动化工具,通过控制Adobe Photoshop CC 2019创建多样化的图像数据集。其核心设计思路是通过程序化调用Photoshop的图像编辑能力,为基础图像添加随机元素(图片、文本、形状)和效果,快速生成大量变…

macos自动安装emsdk4.0.13脚本

1.替换文件 emsdk #!/bin/sh # Copyright 2019 The Emscripten Authors. All rights reserved. # Emscripten is available under two separate licenses, the MIT license and the # University of Illinois/NCSA Open Source License. Both these licenses can be # foun…

c++ Effective c++ 条款5

class MyClass { public:MyClass(int& ref, const int c_val) : myRef(ref), myConstVal(c_val) {}// 明确删除拷贝操作MyClass(const MyClass&) delete;MyClass& operator(const MyClass&) delete;private:int& myRef; // 引用成员const int myCo…

如何使用 Xshell 8 连接到一台 CentOS 7 电脑(服务器)

什么是 Xshell? Xshell 是一款功能强大的、适用于 Windows 平台的终端模拟器。它支持 SSH (Secure Shell)、SFTP、TELNET、RLOGIN 和 SERIAL 等多种网络协议,让用户能够安全地连接和管理远程服务器。 对于开发者、系统管理员和网络工程师来说&#xff…

CSS scale函数详解

目录 基本语法 核心特性 常用场景示例 1. 等比例缩放(X 轴和 Y 轴相同) 2. 非等比例缩放(X 轴和 Y 轴不同) 3. 翻转并缩放 4. 配合过渡动画实现交互效果 5. 图片悬停缩放效果 6. 缩放原点调整 与其他变换组合使用 注意…

【MATLAB代码】基于EKF的二维组合导航仿真代码,状态量为位置、速度、航向角与IMU偏置,观测量为XY轴的位置和速度,附完整代码

8维状态量(2维位置、2维速度、航向角、航向角偏置、2维加速度计偏置)+4维观测量(2维位置、2维速度)。 订阅专栏后,可直接查看源代码,粘贴到MATLAB空脚本中即可直接运行、得到结果 文章目录 运行结果 MATLAB源代码 程序详解 📘 程序概述 状态预测(状态转移函数) 状态雅…

OpenCV 图像轮廓检测

目录 一、轮廓检测基础概念 二、核心 API 详解:cv2.findContours () 参数说明: 返回值说明: 三、轮廓检测实战步骤 1. 图像预处理(灰度化与二值化) 2. 查找轮廓 3. 绘制轮廓 四、轮廓的常用属性与操作 1. 轮…

【图论】 Graph.jl 概览

文章目录安装基础使用基本操作全局图的指标顶点性质边性质读写图按照 .lgz 格式存储图数据(压缩格式)按照 .lg 格式存储图数据(非压缩格式)图的绘制TikzGraphs.jl Latex 论文风格GraphPlot.jl 通常与 Compose.jl 一起使用SGtSNEpi…

[java] 控制三个线程按顺序交替输出数字123123…

控制三个线程按顺序交替输出数字123123… synchronized(配合专用锁对象) 通过共享锁和 volatile 变量控制执行顺序,每个线程按指定顺序打印指定内容,确保输出序列如 “123123…”。使用 synchronized 和 wait/notifyAll 实现线程间…

[C#]winform基于yolov8-seg实现的指甲分割实现源码

【测试环境】 vs2019 net framework4.7.2 onnxruntime1.16.3 opencvsharp 注意源码运行在CPU上不支持GPU运行,由于net framework限制GPU会很慢因此没有GPU版本提供。 【运行步骤】 打开sln项目 选择x64 debug运行即可 如需要再x64 release运行可以将x64 debu…