从版本控制到协同开发:深度解析 Git、SVN 及现代工具链
前言:在当今软件开发的浪潮中,版本控制与协同开发无疑扮演着举足轻重的角色。从最初的单兵作战到如今大规模团队的高效协作,一套成熟且得力的版本控制系统以及围绕其构建的现代工具链,已然成为推动软件项目稳步前行的关键引擎。今天,就让我们一同踏上这场从版本控制到协同开发的深度探索之旅,去剖析 Git、SVN 这些为人熟知却又内蕴深厚的版本控制工具,领略它们背后的发展脉络、功能特点以及适用场景,再携手步入现代工具链的世界,诸如功能多元的 Gerrit、GitLab、GitHub,探秘它们是如何助力团队协作开发高效流转、释放代码价值,同时也不忘聚焦 Nexus 仓库在配置管理中的关键担当,以及详述 Git 常用命令与常见报错的应对之策,力求为各位开发者送上一份全面且实用的指南,助力大家在软件开发的征程中更为顺遂地驾驭这些强大工具,迈向项目成功。
一、版本控制系统的演进:Git 与 SVN 的历史与对比
1.1 SVN:集中式时代的标杆
Subversion(SVN)诞生于2000年,作为集中式版本控制系统的代表,它解决了早期 CVS 的诸多痛点。SVN 将所有代码存储在中央服务器上,开发者必须通过网络连接服务器进行代码提交和更新。这种模式在企业级开发中曾广泛应用,但其依赖网络、分支创建成本高(需服务器操作)、权限控制复杂等问题逐渐显现。例如,当网络不稳定时,开发者无法提交本地修改,且大规模项目的分支管理效率低下。
1.2 Git:分布式革命的开启
2005年,Linus Torvalds为了管理Linux内核开发,开发了Git。Git采用分布式架构,每个开发者拥有完整的代码仓库,支持离线操作和本地提交。其核心特性包括:
- 高效分支管理:分支创建和切换几乎瞬间完成,适合频繁的功能开发和并行协作。
- 合并追踪能力:通过哈希算法精确追踪代码变更,支持复杂的合并场景。
- 性能优化:2025年发布的 Git 2.48 版本进一步优化了 SHA-1 计算,克隆操作性能提升 10%-13%。
1.3 核心差异对比
维度 | SVN | Git |
---|---|---|
架构 | 集中式(依赖中央服务器) | 分布式(本地完整仓库) |
分支成本 | 高(需服务器操作) | 极低(本地完成) |
协作方式 | 提交需联网,依赖中央服务器 | 支持离线开发,本地提交后同步至远程 |
历史记录 | 基于文件级变更 | 基于提交级变更,支持全局版本回溯 |
二、现代代码协作平台:Gerrit、GitLab、GitHub 的功能解析
2.1 Gerrit:代码审查的守护者
Gerrit 是基于 Git 的代码审查工具,强制要求代码变更经过审核才能合并。其核心功能包括:
- 严格的审查流程:每个提交(Change)需通过指定评审者的批准,支持多轮迭代审查。
- 轻量级工作流:通过 Change ID 追踪变更,允许对单个提交反复审查,适合需要高代码质量的项目(如 Android 开发)。
- 权限控制:基于角色的访问控制,限制代码库的可见范围,保障企业敏感代码安全。
2.2 GitLab:一站式 DevOps 平台
GitLab 提供从代码托管到 CI/CD 的全流程工具链:
- 代码托管与协作:支持 Merge Request 审查,集成 Issue 跟踪、Wiki 文档等功能,适合团队协作。
- 企业级能力:2025年推出的 GitLab 17.9 支持自托管 AI 平台,允许企业在私有环境中运行大语言模型,增强代码生成和安全检测能力。
- CI/CD 流水线:内置自动化测试、部署功能,可无缝集成第三方工具(如 Jenkins)。
2.3 GitHub:开源社区的核心枢纽
GitHub 以社交化协作著称,成为全球开发者的首选:
- 开源生态:托管了超过 1 亿个代码仓库,提供 Pull Request、讨论区等功能,促进开源项目贡献。
- AI 驱动开发:GitHub Copilot 深度集成,支持代码自动生成、漏洞检测,开发效率提升 55%。
- Teams 集成:2025年与微软 Teams 打通,可在聊天窗口直接处理代码审查、构建警报,响应速度提升 6 倍。
三、Nexus 仓库:配置管理的中枢神经系统
3.1 角色定位与功能
Nexus 是仓库管理系统,在配置管理中扮演三重角色:
- proxy 代理仓库:比如代理到maven中央仓库。
- hosted 宿主仓库:即自己的私人仓库。
- group 仓库组:由多个仓库组成,当要下载依赖时会遍历每个仓库去找。
其中,hosted 宿主仓库又分为:releases和shapshots,分别表示依赖的版本的发行版、快照版。快照版依赖不能上传到发行仓库,反之亦然。
3.2 实操:Nexus 与 Maven 集成
步骤 1:安装与初始化
- 下载 Nexus OSS 版本,启动后访问
http://localhost:8081
。 - 使用管理员账户登录(默认密码:admin123),创建代理仓库(Proxy)、宿主仓库(Hosted)和仓库组(Group)。
步骤 2:配置 Maven 客户端
在 ~/.m2/settings.xml
中添加:
<mirrors><mirror><id>nexus</id><url>http://nexus:8081/repository/maven-public/</url><mirrorOf>central</mirrorOf></mirror>
</mirrors>
<servers><server><id>nexus-snapshots</id><username>deploy</username><password>your-password</password></server>
</servers>
步骤 3:部署构件
在项目 pom.xml
中配置:
<distributionManagement><snapshotRepository><id>nexus-snapshots</id><url>http://nexus:8081/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>
执行 mvn clean deploy
即可将构件上传至 Nexus。
四、Git 常用命令与错误处理实战
4.1 核心操作命令
4.1 核心操作命令
一、仓库初始化与克隆
- 初始化本地仓库:
git init
:在当前目录创建新的Git仓库。git init <path>
:在指定路径创建新仓库。
- 克隆远程仓库:
git clone <url>
:克隆远程仓库到本地(默认主分支)。git clone -b <branch> <url>
:克隆指定分支到本地。git clone --depth 1 <url>
:浅克隆(仅获取最新提交,节省空间)。
二、文件操作(暂存、提交、撤销)
- 文件状态查看:
git status
:查看工作区和暂存区状态(红色未暂存,绿色已暂存)。git diff
:查看工作区与暂存区的差异。git diff --staged
:查看暂存区与最新提交的差异。git diff <commit>
:查看指定提交与当前代码的差异。
- 暂存与提交:
git add .
:暂存所有变更文件。git add <file1> <file2>
:暂存指定文件。git add --ignore-removal
:暂存新增/修改文件(忽略已删除文件)。git commit -m "message"
:提交暂存区变更(需先git add
)。git commit -a -m "message"
:直接提交所有变更(自动暂存已跟踪文件)。
- 撤销与还原:
git reset HEAD <file>
:撤销暂存区文件(还原为未暂存状态)。git reset --soft HEAD^
:撤销最后一次提交(保留暂存区和工作区变更)。git checkout -- <file>
:丢弃工作区修改(谨慎!不可恢复)。git clean -fdx
:删除未跟踪的文件和目录(危险操作!)。git reset --soft <commit>
:仅回退版本,保留暂存区和工作区变更。git reset --mixed <commit>
:回退版本并撤销暂存区(默认模式)。git reset --hard <commit>
:彻底回退版本(删除暂存区和工作区变更)。
三、分支管理
- 基础操作:
git branch
:列出所有本地分支(当前分支前有*
标记)。git branch <name>
:创建新分支。git branch -d <name>
:删除本地分支(需先切换到其他分支)。git branch -D <name>
:强制删除未合并的分支。
- 切换与合并:
git switch <branch>
:切换分支(推荐新命令)。git switch -c <name>
:创建并切换到新分支。git merge <branch>
:合并指定分支到当前分支(快进合并)。git merge --no -ff <branch>
:强制创建新提交合并(保留分支历史)。
- 远程分支操作:
git branch -r
:列出所有远程分支。git branch -a
:列出所有本地和远程分支。git checkout -b <local - branch> origin/<remote - branch>
:基于远程分支创建本地分支。git push --set - upstream origin <branch>
:关联本地分支与远程分支。
四、远程仓库操作
- 远程仓库管理:
git remote
:查看配置的远程仓库。git remote -v
:查看远程仓库详细信息(含URL)。git remote add origin <url>
:添加远程仓库(命名为origin)。git remote rename old - name new - name
:重命名远程仓库。git remote set - url origin <new - url>
:修改远程仓库URL。git remote remove origin
:删除远程仓库。
- 代码推拉:
git pull
:拉取并合并远程分支到当前分支(等同于git fetch + git merge
)。git pull --rebase
:拉取并变基(保持线性提交历史)。git fetch
:仅拉取远程更新(不自动合并)。git push origin main
:推送当前分支到远程仓库的main分支(需先关联)。git push - - force
:强制推送(覆盖远程仓库的历史)。git push - - delete origin <branch>
:删除远程分支。
五、标签管理(版本标记)
git tag
:列出所有标签(无备注)。git tag -a <tag - name> -m "message"
:创建带注释的标签。git tag -d <tag - name>
:删除本地标签。git push origin <tag - name>
:推送标签到远程仓库。git push origin - - delete <tag - name>
:删除远程标签。git checkout <tag - name>
:切换到标签版本(需创建临时分支:git checkout -b br <tag - name>
)。
六、高级技巧与实用场景
- Stash管理(保存现场):
git stash save "message"
:保存当前工作区变更(未暂存的修改)。git stash list
:查看所有stash记录。git stash apply
:恢复最新的stash变更(不删除记录)。git stash pop
:恢复并删除最新的stash记录。git stash drop
:删除最新的stash记录。
- 解决合并冲突:
git merge <branch>
:合并时若发生冲突,手动修改冲突文件。git status
:查看冲突文件(标记为both modified
)。- 手动编辑文件,删除冲突标记
(<<<<<<<、=======、>>>>>>>)
,保留正确代码 git add <conflict - file>
:暂存冲突解决后的文件。git commit
:提交合并结果。
- 误合并到错误分支:
- 取消合并:
git merge --abort
- 回滚到合并前状态:
git reset --hard HEAD~1
- 取消合并:
- 远程分支变更导致 Fast-Forward 失败:
- 先同步远程:
git fetch origin
- 合并远程分支:
git merge origin/main
或git pull --rebase
- 先同步远程:
- 子模块(Submodule):
git submodule add <url> <path>
:在项目中添加子模块。git submodule init
:初始化子模块(首次克隆后)。git submodule update
:更新子模块到最新版本。
- 别名设置(简化命令):
git config - - global alias.co checkout
:设置别名git co
代替git checkout
。git config - - global alias.br branch
:设置别名git br
代替git branch
。git config - - global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'"
:美观的日志查看别名。
七、日志与历史查看
git log
:查看提交历史(按时间倒序)。git log -p
:显示每次提交的详细变更。git log --oneline
:以单行形式显示提交。git log --graph
:以图形化显示分支合并历史。git log <file>
:查看指定文件的提交历史。git blame <file>
:逐行显示文件的修改记录(谁在何时修改了哪一行)。
八、其他实用命令
git clean -df
:删除未跟踪文件(自动暂存)。git archive main -o main.zip
:打包当前主分支代码为ZIP文件。
注意事项:
- 谨慎使用
git reset --hard
和git clean -fdx
,会永久删除未提交的变更,无法恢复! - 分支管理推荐使用
git switch
替代旧命令git checkout
。 - 开发前先在主分支
pull
,避免本地代码与远程差异过大。
五、工具链选型与最佳实践
- 开源项目:GitHub + Nexus,利用 Copilot 加速开发,Nexus 管理依赖。
- 企业级开发:GitLab + Gerrit,通过 GitLab CI/CD 实现全流程自动化,Gerrit 保障代码质量。
- 高安全要求场景:GitLab 自托管 AI 平台 + Nexus 权限控制,确保数据隐私和合规性。
通过合理组合这些工具,开发者可以构建高效、安全的开发流程,从版本控制到协作审查,再到持续集成与部署,实现全链路的无缝衔接。无论是个人开发者还是大型团队,选择适合的工具链都能显著提升生产力,推动项目成功落地。
相关文章:
从版本控制到协同开发:深度解析 Git、SVN 及现代工具链
前言:在当今软件开发的浪潮中,版本控制与协同开发无疑扮演着举足轻重的角色。从最初的单兵作战到如今大规模团队的高效协作,一套成熟且得力的版本控制系统以及围绕其构建的现代工具链,已然成为推动软件项目稳步前行的关键引擎。今…...
十一、xlib绘制编辑框-续
系列文章目录 本系列文章记录在Linux操作系统下,如何在不依赖QT、GTK等开源GUI库的情况下,基于x11窗口系统(xlib)图形界面应用程序开发。之所以使用x11进行窗口开发,是在开发一个基于duilib跨平台的界面库项目&#x…...
PyTorch进阶实战指南:02分布式训练深度优化
PyTorch进阶实战指南:02分布式训练深度优化 前言 在大模型时代,分布式训练已成为突破单机算力瓶颈的核心技术。本文深入解析PyTorch分布式训练的技术实现,从单机多卡并行到万卡集群协同,系统揭示现代深度学习规模化训练的核心机制…...
使用Vite创建一个动态网页的前端项目
1. 引言 虽然现在的前端更新换代的速度很快,IDE和工具一批批的换,但是我们始终要理解一点基本的程序构建的思维,这些环境和工具都是为了帮助我们更快的发布程序。笔者还记得以前写前端代码的时候,只使用文本编辑器,然…...
常见的LLM
常见的 LLM(大语言模型,Large Language Models)可以按照开源/闭源、机构/公司、用途等维度分类。以下是一些主流和常见的 LLM 及其简介: 一、开源 LLM Meta(Facebook) 名称参数量特点LLaMA 1 / 2 / 37B /…...
助力 FPGA 国产化,ALINX 携多款方案亮相深圳、广州“紫光同创 FPGA 技术研讨会”
5 月中旬,一年一度的紫光同创技术研讨会系列活动正式拉开帷幕,相继在深圳、广州带来 FPGA 技术交流盛宴。 ALINX 作为紫光同创官方合作伙伴,长期助力推动 FPGA 国产化应用发展,此次携多款基于 Kosmo-2 系列产品开发的方案 demo 亮…...
深入浅出IIC协议 - 从总线原理到FPGA实战开发 --第四篇:I2C工业级优化实践
第四篇:I2C工业级优化实践 副标题 :从实验室到产线——I2C控制器的高可靠设计秘籍 1. 时序收敛技巧 1.1 关键路径识别与优化 Vivado时序报告解析 : Slack (MET): 0.152ns (要求≥0) Data Path Delay: 3.821ns (逻辑布线) Cell Delay: i…...
【leetcode】70. 爬楼梯
文章目录 1. 数组2. 优化空间 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶 1…...
【web全栈】若依框架B站学习视频
文章目录 基础篇-01 AI若依导学视频基础篇02 若依搭建基础篇03 入门案例基础篇04 功能详解-权限控制 基础篇-01 AI若依导学视频 基础篇02 若依搭建 基础篇03 入门案例 基础篇04 功能详解-权限控制...
MFC 捕捉桌面存成jpg案例代码
下面是关于截屏并保存成jpg文件的代码。由主函数OnCapScreenJpg()、DDBToDIB()、JpegFromDib()、DibToSamps()以及QuadFromWord()函数组成。这些函数的功能包括截取屏幕、将截取的屏幕转成设备无关bmp、再进一步压缩成jpeg格式。这些代码是从网上得到的,得到的代码没…...
2.4.4-死锁的处理策略-检测和解除
知识总览 死锁的检测 用资源分配图这种数据结构来检测是否产生了死锁,资源分配图上有2种节点,进程节点用圆圈表示,一个圆圈代表一个进程,还有资源节点,一个矩形代表一类资源,用矩形中的圆圈表示当前类型的…...
豪越智能仓储:为消防应急物资管理“上锁”
在城市的繁华街角,一场突如其来的大火无情地肆虐着一栋商业大楼。火焰在楼内疯狂蔓延,滚滚浓烟迅速弥漫,人们的生命财产安全受到了严重威胁。消防警报声骤然响起,消防队员们迅速出动,争分夺秒赶赴火灾现场。然而&#…...
(06)数字化转型之质量管理:遵循PDCA规范的全流程避险指南
在全球化竞争和消费升级的双重驱动下,质量管理已从单纯的产品检验演变为企业核心竞争力的重要组成部分。一个完善的质量管理体系不仅能降低质量成本、提升客户满意度,更能成为品牌差异化的战略武器。本文将系统性地介绍现代企业质量管理的完整框架&#…...
图论算法精解(Java 实现):从基础到高频面试题
一、图的基础表示方法 1.1 邻接矩阵(Adjacency Matrix) 邻接矩阵是表示图的一种直观方式,它使用一个二维数组来存储节点之间的连接关系。对于一个有 n 个节点的图,邻接矩阵是一个 nn 的矩阵,其中 matrix [i][j] 表示…...
[Linux] Linux信号量深度解析与实践(代码示例)
Linux信号量深度解析与实践 文章目录 Linux信号量深度解析与实践一、什么是信号量1. 信号量的核心概念2. 信号量的分类3. 信号量的操作机制 二、怎么用信号量1. 信号量API的深度解析(1)无名信号量API(2)有名信号量API(…...
Switch最新 模拟器 Eden(伊甸)正式发布 替代Yuzu模拟器
Switch最新 模拟器 Eden(伊甸)正式发布 替代Yuzu模拟器 100 帧跑满《塞尔达传说:旷野之息》 这款模拟器基于 Yuzu 框架开发,但团队强调它并非…...
[cg] [ds]深度缓冲z与线性z推导
4. GLSL 代码实现 在着色器中,将深度缓冲值转换为线性深度: float LinearizeDepth(float depth, float near, float far) {// OpenGL 的 NDC 深度范围是 [-1, 1],需转换float z_ndc 2.0 * depth - 1.0;// 计算线性深度return (2.0 * near …...
clock的时钟频率check代码
在芯片验证中,经常遇到需要check时钟频率的场景,由于时钟数量有很多,手动写代码得到后年马月,所以我这边写了一个宏define,可以通过输入参数的形式验证需要check的时钟频率,大大提升了验证效率和准确率&…...
企业数字化转型是否已由信息化+自动化向智能化迈进?
DeepSeek引发的AI热潮迅速蔓延到了各个行业,目前接入DeepSeek的企业,涵盖了科技互联网、云服务、电信、金融、能源、汽车、手机等热门领域,甚至全国各地政府机构也纷纷引入。 在 DeepSeek 等国产 AI 技术的推动下,众多企业已经敏锐…...
PT5F2307触摸A/D型8-Bit MCU
1. 产品概述 ● PT5F2307是一款51内核的触控A/D型8位MCU,内置16K*8bit FLASH、内部256*8bit SRAM、外部512*8bit SRAM、触控检测、12位高精度ADC、RTC、PWM等功能,抗干扰能力强,适用于滑条遥控器、智能门锁、消费类电子产品等电子应用领域。 …...
嵌入式STM32学习——串口USART 2.0(printf重定义及串口发送)
printf重定义: C语言里面的printf函数默认输出设备是显示器,如果要实现printf函数输出正在串口或者LCD显示屏上,必须要重定义标准库函数里调用的与输出设备相关的函数,比如printf输出到串口,需要将fputc里面的输出指向…...
进程信号(上)【Linux操作系统】
文章目录 进程信号信号引入进程要如何识别信号?进程接收到信号的时候,不一定马上处理信号进程处理信号的情况 信号相关概念信号产生键盘产生通过指令向进程发送信号系统调用向进程发送信号软件条件异常错误 操作系统如何知道进程出现了异常错误ÿ…...
全方位详解微服务架构中的Service Mesh(服务网格)
一、引言 随着微服务架构的广泛应用,微服务之间的通信管理、流量控制、安全保障等问题变得日益复杂。服务网格(Service Mesh)作为一种新兴的技术,为解决这些问题提供了有效的方案。它将服务间通信的管理从微服务代码中分离出来&a…...
bi工具是什么意思?bi工具的主要功能有哪些?
目录 一、BI 工具是什么意思? 1. 基本概念 2. 发展历程 编辑二、BI 工具的主要功能 1. 数据连接与整合 2. 数据存储与管理 3. 数据分析与挖掘 4. 可视化呈现 5. 报表生成与分享 6. 实时监控与预警 三、BI 工具的应用场景 1. 销售与营销 2. 财务与会计…...
cocos creator使用jenkins打包微信小游戏,自动上传资源到cdn,windows版运行jenkins
cocos 版本2.4.11 在windows上jenkins的具体配置和部署,可参考上一篇文章cocos creator使用jenkins打包流程,打包webmobile_jenkins打包,发布,部署cocoscreator-CSDN博客 特别注意,windows上运行jenkins需要关闭windows自己的jenkins服务&a…...
PaddleOCR的Pytorch推理模块
概述 在项目中,遇到文字识别OCR的使用场景。 然而,目前效果最好的PaddleOCR只能用百度的PaddlePaddle框架运行。 常见项目中,往往使用更普遍的Pytorch框架,单独安装PaddlePaddle不仅会让项目过于臃肿,而且可能存在冲…...
操作系统期末复习(一)
一、选择 1.从用户的观点看,操作系统是() A.用户与计算机之间的接口 B.控制和管理计算机资源的软件 C.合理地组织计算机工作流程的软件 由若干层次的程序按一定的结构组成的有机体 答案:A 2.操作系统在计算机系统中位于&#x…...
今日行情明日机会——20250521
上证指数缩量收阳线,个股跌多涨少,整体处于日线上涨末端,注意风险。 深证指数,出现60分钟的顶分型,需要观察方向的选择。 2025年5月21日涨停股主要行业方向分析 并购重组 涨停家数:9家。 代表标的&am…...
传统Spring MVC + RESTful 与 Vue3 结合 JWT Token 验证的示例
以下是针对非Spring Boot项目(传统Spring MVC)的示例 一、项目结构 src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ ├── config/ # 配置类目录 │ │ │ ├─…...
使用Redis的Bitmap实现了签到功能
思路分析 我们可以把 年和月 作为BitMap的key,然后保存到一个BitMap中,每次签到就到对应的位上把数字从0 变为1,只要是1,就代表是这一天签到了,反之咋没有签到。 关键问题 问题一: 什么叫做连续签到天数…...
Unity-编辑器扩展-其二
今天我们来基于之前提到的编辑器扩展的内容来做一些有实际用处的内容: 检查丢失的组件 首先是一个比较实际的内容:当我们在做项目时,经常会涉及到预设体在不同项目或者不同文件路径下的转移,这个时候很容易在某个具体的prefab对…...
项目中Warmup耗时高该如何操作处理
1)项目中Warmup耗时高该如何操作处理 2)如何在卸载资源后Untracked和Other的内存都回收 3)总Triangles的值是否包含了通过GPU Instancing画的三角形 4)有没有用Lua来修复虚幻引擎中对C代码进行插桩Hook的方案 这是第432篇UWA技术知…...
php://filter的trick
php://filter流最常见的用法就是文件包含读取文件,但是它不止可以用来读取文件,还可以和RCE,XXE,反序列化等进行组合利用 filter协议介绍 php://filter是php独有的一种协议,它是一种过滤器,可以作为一个中…...
STM32 I2C硬件读写
一、I2C外设简介 STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担支持多主机模型(固定多主机、可变多主机)支持7位/10位地址模式支持不同的通讯速度&a…...
Qt+线段拖曳示例代码
Qt线段拖曳示例代码,功能见下图。 代码如下: canvaswidget.h #ifndef CANVASWIDGET_H #define CANVASWIDGET_H#include <QWidget> #include <QPainter> #include <QMouseEvent> #include <QVector>class CanvasWidget : publi…...
计算机网络相关面试题
一、HTTP1.1和HTTP2的区别 HTTP/1(主要指 HTTP/1.1)和 HTTP/2 是 Web 协议发展中的两个重要版本,二者在性能、协议机制和功能特性上有显著差异。以下从多个维度对比分析,并结合具体案例说明: 一、连接与请求处理方式 1…...
docker中部署Universal Media Server (UMS)
Universal Media Server (UMS) 本身主要是作为桌面服务程序开发的(主要面向 Java GUI DLNA 播放),但确实可以通过 Docker 进行部署。虽然官方没有提供 Docker 镜像,但社区有一些可用的方式可以在 Docker 中运行它。 下面是一个可…...
WordPress Elementor零基础教程
一、WordPress Elementor 是什么?—— 可视化网站搭建 “积木工具箱” 基础定义 Elementor 是 WordPress 的一款可视化页面构建插件,就如同网站搭建领域的 “PPT 编辑器”。它能让你无需编写代码,仅通过拖放模块(像图片、文本、…...
鸿蒙UI开发——实现一个上拉抽屉效果
1、概 述 在项目开发中,我们可能会遇到临时交互的场景(即:弹出一个临时交互框,交互完毕后继续用户的主流程),效果如下: 在ArkUI中,此类弹出窗被称为“半模态页面”,ArkU…...
详细介绍Qwen3技术报告中提到的模型架构技术
详细介绍Qwen3技术报告中提到的一些主流模型架构技术,并为核心流程配上相关的LaTeX公式。 这些技术都是当前大型语言模型(LLM)领域为了提升模型性能、训练效率、推理速度或稳定性而采用的关键组件。 1. Grouped Query Attention (GQA) - 分组…...
docker面试题(3)
如何临时退出一个正在交互的容器的终端,而不终止它 按ctrlp,后按ctrlq ,如果按ctrlc会使容器内的应用进程终止,进而会使容器终止 很多应用容器都默认是后台运行的,怎么查看它们输出的日志信息 使用docker logs &#…...
2025年二级等保实施全攻略:传统架构与云等保方案深度解析
2025年,随着《网络安全法》的深化落实和等保2.0标准的全面推行,二级等保已成为中小企业及非核心业务系统的合规基线。如何在高效满足监管要求的同时,兼顾成本与安全效能?本文将结合最新政策与实战经验,从传统架构到云等…...
技术点对比
数据库 数据库程序在线访问与ORM访问的对比 数据库程序在线ORM访问优点性能好性能差可以处理复杂sql缺点 性能: 复杂sql支持: 开发成本: 架构风格 管道-过滤器风格与数据仓库风格对比 管道-过滤器风格数据仓储风格备注交互方式顺序结构…...
自监督学习与监督学习
🔍 一、监督学习 vs 自监督学习:核心区别 维度监督学习(Supervised Learning)自监督学习(Self-Supervised Learning)是否需要人工标注的标签✅ 需要,如分类标签、边界框等❌ 不需要,…...
Java操作数据库,JDBC
package myjdbc; import com.mysql.jdbc.Driver; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /*** 练习JDBC,完成一些简单的操作。*/ public class jdbc01 {public static void main(Str…...
UML 活动图 (Activity Diagram) 使用案例
UML 活动图使用案例 UML 活动图 (Activity Diagram) 使用案例活动图的主要元素典型使用案例1. 用户登录流程2. 在线购物流程3. 订单处理系统4. 文件审批流程 活动图的优势何时使用活动图 UML 活动图 (Activity Diagram) 使用案例 活动图是UML中用于描述业务流程或系统工作流程…...
回溯法求解N皇后问题
目录 前言 一、回溯法是什么? 二、N皇后问题描述 分析解题思路 三、算法设计 1、递归法 2、非递归法 总结 前言 本文将从递归形式和非递归形式两种方法来介绍求解N皇后问题的回溯法,后续也会更新更多有关算法分析这方面的问题欢迎大家关注~🤩…...
网络流量分析工具ntopng的安装与基本使用
网络流量分析工具ntopng的安装与基本使用 一、ntopng基本介绍1.1 ntopng简介1.2 主要特点1.3 使用场景 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、安装ntopng工具3.1 官网地址3.2 配置软件源3.3 添加软件源3.4 安装ntopng 四、ntopng的基本配置4.1 修改配置文件4.…...
新导游入行规范与职业发展指导
随着旅游行业的蓬勃发展,导游作为旅游服务的重要环节,其职业素养和专业能力备受关注。对于新入行的导游而言,了解行业规范,明确职业发展方向,是开启职业生涯的重要一步。 一、严格遵守行业规范 持证上岗…...
数据结构与算法——堆
堆 树树的概念与结构树的相关术语树的表示树形结构实际运用场景 二叉树概念与结构特殊的二叉树满二叉树完全二叉树 二叉树存储结构顺序结构链式结构 实现顺序结构二叉树堆的概念与结构堆的实现向上调整算法(插入数据)向下调整算法 堆的应用堆排序(建堆)向…...