【Git】:企业级开发和多人协作开发啊

目录

多人协作

模拟配置多人协作环境

多人同一分支开发

多人不同分支开发

远程分支删除后的问题

企业级开发模型

系统开发环境

分支设计规范


多人协作

模拟配置多人协作环境

目前,我们所完成的工作如下:
  • 基本完成 Git 的所有本地库的相关操作,git基本操作,分支理解,版本回退,冲突解决等等
  • 申请 gitee/github 账号,将远端信息克隆(clone)到本地,以及推送和拉取

但是这些都是个人的操作,我们如何去实现多人协作开发呢?我们来使用在Linux 系统和Windows系统下的本地仓库来模拟实现多人协作开发

我们来做一个简单的小实验

为了模拟实现多人协作开发,我们需要先做⼀些准备工作:

  1. 我们之前已经将项目仓库克隆(clone)到了Windows系统下,我们再在 Linux 环境下,再克隆(clone) 同⼀个项目仓库,来模拟和我们⼀起协作开发的另⼀名同事

在 Linux 环境下,再克隆(clone) 同一个项目仓库

注意:我们是模拟了两个用户,实际开发中,每个用户都有自己的 gitee/github 账号,如果要多人进行协同开发,必须要将用户添加进开发者,用户才有权限进行代码提交

​​​​​​​

现在相当于有了两个用户,分别在 linux 和 windows 上针对于同项目进行协作开发
目前,我们的仓库中只有⼀个 master 主分支,但在实际的项目开发中,在任何情况下其实都是不允许直接在 master 分支上修改、提交代码的,这是为了保证主分支的稳定。所以在开发新功能时,常常会新建其他分支,供开发时进行迭代使用。
我们先在 Gitee/GitHub 上新建 dev 远程分支供我们使用

创建成功的远程分支是可以通过 Git 拉取到本地来,以实现完成本地开发工作。接下来让我们在 Linux 和 Windows 都将远程仓库进行⼀次拉取操作
Linux:

我们在拉取(pull)后使用 git branch 查看所有分支,但是发现查找不到拉取(pull)下来的分支 dev

其实 git branch 只能查看本地分支,要查看远程分支需要加上 -r 选项。 但前提是要pull⼀下拉取最新的远端仓库,才能看到最新的内容 

git branch    // 只能查看本地分支git branch -r    // 远端git branch -a    // 本地 + 远端

现在我们只是把远程仓库拉取到了到了本地,但是我们本地还没有分支,接下来我们还需要做两个事:

  1. 创建一个本地分支 dev
  2. 并且使用本地分支 dev 和 远程分支 dev 关联

git checkout -b dev origin/devgit checkout -b dev 有啥区别 

  1. git checkout -b dev
    • 创建本地分支 + 切换到该分支 
    • 没有指定远程分支与之关联,新创建的dev分支只是一个独立的本地分支,它的初始内容和创建它时所在分支(如master)的内容相同。如果后续需要和远程仓库的某个分支进行关联和同步,需要额外的配置步骤,比如通过git branch -u origin/dev来设置dev分支跟踪远程仓库的dev分支。
  2. git checkout -b dev origin/dev
    • 创建本地分支 + 切换到该分支 + 连接远程仓库
    • 但是,它会让新创建的dev分支跟踪远程仓库(通常origin代表远程仓库)中的dev分支。也就是说,新分支dev的起点是远程仓库origin中的dev分支的当前状态。
    • 这样在后续开发过程中,你可以方便地使用git pull从远程dev分支拉取更新到本地dev分支,也可以使用git push将本地dev分支的修改推送到远程dev分支,使得本地和远程分支的协作更加方便和紧密,一开始就建立了本地分支和远程分支之间的关联关系。

Windows:

多人同一分支开发

  1. 在Linux系统下,我们在 dev 分支上进行⼀次开发,并推送(push)到远程仓库
  2. 查看 Gitee/GitHub 上远程仓库的状态
  3. 在Windows系统下,也要dev 分支上进行⼀次开发,并试图推送

 在Linux系统下,我们在 dev 分支上进行⼀次开发,并推送(push)到远程仓库

查看 Gitee/GitHub 上远程仓库的状态

 在Windows系统下,也要dev 分支上进行⼀次开发,并试图推送,这时推送失败

因为在Windows系统下的 最新提交 和 在Linux系统下先前推送的提交有冲突,我们如何去解决呢?
  1. 拉取( git pull) 把最新的提交从 origin/dev 抓下来
  2. 在Windows系统下本地进行合并,并解决冲突,再推送

我们发现文件内提示了冲突 

 我们去解决冲突,重新推送(push)

查看远端仓库的 Gitee/GitHub 已经能看到我们的新提交了! 

现在我们在Linux 和 Windows 已经可以开始可以进行协同开发了:
  1. 拉取(git pull)
  2. 推送(add/commit/push) ,遇到了冲突,就解决掉冲突
  3. 要想看到别人的代码,只需要拉取(git pull)⼀下即可
虽然我们是在 dev分支上进行多人协作开发,但最终的目的是要将开发后的代码合并到主分支(master)上去,让我们的项目运行最新的代码,接下来我们就需要合并分支了:
  1. 在Linux系统下,切换到  master分支, 拉取(git pull) ⼀下,保证本地的主分支(master) 是最新内容
  2. 切换到 dev 分支 , 并且 合并 master 分支,这么做是因为如果有冲突,可以在dev 分支上进行处理,而不是在主分支(master)上解决冲突
  3. 切换回到 master 分支 合并 dev 分支
  4. master 分支推送到远端仓库
切换到  master分支, 拉取(git pull) ⼀下,保证本地的主分支(master) 是最新内容
切换到 dev 分支 , 并且 合并 master 分支,这么做是因为如果有冲突,可以在dev 分支上进行处理,而不是在主分支(master)上解决冲突
切换回到 master 分支 合并 dev 分支

将 master 分支推送到远端仓库

查看 Gitee/GitHub 远端仓库,master已经是最新代码了 

此时,dev 分支对于我们来说就没用了, 那么 dev 分支就可以被删除掉。我们可以直接在远程仓库中将dev分支删除掉

总结

  1. 在dev 分支下,可以试图推送自己的修改 (git push origin 分支名
  2. 如果推送失败,则因为远程dev分支比你的本地更新,需要先拉取(git pull)试图合并
  3. 如果合并有冲突,则解决冲突,并在本地提交
  4. 没有冲突或者解决掉冲突后,再推送自己的修改(git push origin 分支名
  5. 功能开发完毕,将dev分支 merge 进 master,最后删除dev分支

多人不同分支开发

  • ⼀般情况下,如果有多需求需要多人同时进行开发,是不会在⼀个分支上进行多人开发,而是⼀个需求或⼀个功能点就要创建⼀个 feature 分支
  • 现在同时有两个需求需要我们在Linux 和 Window下开发,那么你们俩便可以各自创建⼀个分支来完成自己的工作。
  • 我们可以从 Gitee/GitHub 上直接创建远程分支,其实在本地创建的分支也可以通过推送的方法发送到远端仓库

 在 Linux 环境下

  1. 新增本地分支 feature-1 并切换
  2. 新增需求内容,创建 function1文件​​​​​​​​​​​​​​
  3. feature-1 分支 推送到远端

查看远程仓库

在 Windows 环境下 

  1. 新增本地分支 feature-2 并切换
  2. 新增需求内容,创建 function2文件​​​​​​​​​​​​​​
  3. feature-2 分支 推送到远端

查看远程仓库

 此时,在本地,Linux 环境 看不见Windows 环境 新建的文档,Windows 环境 看不见 Linux 环境 新建的文档。并且推送各自的分支时,并没有任何冲突,互不影响,用起来起来很舒服

正常情况下,我们就可以在自己的分支上进行专业的开发了!
但天有不测风云, Windows 环境下开发的 突然⽣病了,但需求还没开发完,需要你帮他继续开发,于是他便把 feature-2 分支名告诉你了。这时你就需要在自己的机器上切换到 feature-2 分支帮忙继续开发,要做的操作如下
  1. Linux 环境 下,先拉取(git pull)远端仓库内容,可以看到远程已经有了feature-2
  2. 切换到  feature-2 分支 上,可以和远程的feature-2 分支关联起来,(否则将来推送(git push)内容会失败)
  3. 此时便可以 继续开发了

 此时我们便可以继续开发了

查看远程仓库

Windows 环境下开发的生病好了,那我们如何在window系统下继续开发或者查看

拉取(pull)无效的原因是在Windows系统下 没有指定本地 feature-2 分支与远程 origin/feature-2 分支的链接,根据提示,设置 feature-2和origin/feature-2 的链接即可
git branch --set-upstream-to=origin/feature-2 feature-2

各自功能(function1 和 function2)开发完毕后,我们需要将代码合并到 主分支(master)中才算真正意义上的开发完毕 

在Windows系统下进行合并到远程仓库的主分支(master):

  1. 切换到  master分支, 拉取(git pull) ⼀下,保证本地的主分支(master) 是最新内容
  2. 切换到 feature-2 分支 , 并且 合并 master 分支,这么做是因为如果有冲突,可以在 feature-2 分支上进行处理,而不是在主分支(master)上解决冲突
  3. 切换回到 master 分支 合并 feature-2 分支
  4. master 分支推送到远端仓库

查看远程仓库

当我们在Windows系统下,将其代码合并( merge)  到远程仓库的主分支( master) 后,这个时候Linux系统下也开发完成了,也需要将其代码合并( merge)  到远程仓库的主分支( master),我们应该如何去做呢?

 在 Linux 系统下进行合并到远程仓库的主分支(master):

  1. 切换到 master分支, 拉取(git pull)⼀下,保证本地的主分支(master)是最新内容
  2. 切换到 feature-1 分支, 并且合并 master 分支,这么做是因为如果有冲突,可以在feature-1 分支上进行处理,而不是在主分支(master)上解决冲突
  3. 由于feature-1 分支已经合并(merge)进来了新内容,如果合并(merge)出现冲突,不要忘记需要 commit 才可以 push,为了保证远程 feature-1分支最新,所以最好推送(push)⼀下​​​​​​​​​​​​​​
  4. 要推送(push)的另⼀个原因是因为在实际的开发中,master的合并(merge)操作⼀般不是由我们自己在本地进行的,其他人员或某些平台merge时,操作的肯定是远程分支,所以就要保证远程分支的最新。
  5. 切换回到 master 分支合并feature-1 分支
  6. master 分支推送到远端仓库

查看 Gitee/GitHub 远程仓库

此时, feature-1 feature-2 分支对于我们来说就没用了, 那么我们可以直接在远程仓库中将feature-1 feature-2 分支删除掉 !

远程分支删除后的问题

当我们已经删除了远程的dev、function-1、function-2 分支,使用  git branch -a 命令依然可以查看所有本地分支和远程分支,但发现很多在远程仓库已经删除的分支在本地依然可以看到
查看remote地址、远程分支,还有本地分支与远程分支相对应关系等信息
git remote show origin

清理本地仓库中那些已经在远程仓库中不存在了的远程分支引用

git remote prune origin

这样就删除了那些远程仓库不存在的分支 !

企业级开发模型

⼀个软件从零开始到最终交付,大概包括以下七个阶段:规划、编码、构建、测试、发布、部署和维护
最初,程序比较简单,工作量不大,程序员一个人可以完成所有阶段的工作。但随着软件产业的日益发展壮大,软件的规模也在逐渐变得庞大。软件的复杂度不断攀升,一个人已经管理不住了,就开始出现了精细化分工。如下图:

但在传统的 IT 组织下,开发团队(Dev) 运维团队(Ops) 之间诉求不同:
  • 开发团队(尤其是敏捷团队)追求变化
  • 运维团队追求稳定
开发团队(Dev) 运维团队(Ops) 双方 往往存在利益的冲突。比如,精益和敏捷的团队把持续交付作为目标,而运维团队则为了线上的稳定而强调变更控制。部门墙由此建立起来,这当然不利于 IT 价值的最大化。
为了弥合开发团队(Dev) 运维团队(Ops) 之间的鸿沟,需要在文化、工具和实践方面的系列变革,于是便出现了DevOps  正式登上舞台 。
DevOps(Development和Operations的组合词):
  • DevOps 概念最早在 2009 年左右被提出,当时软件开发行业面临着诸多挑战,比如开发团队与运维团队之间的沟通不畅、软件交付周期长、上线后故障频发等问题。为了应对这些情况,人们开始探索一种能将开发和运维紧密结合起来的理念和实践方式,DevOps 应运而生。
DevOps 是⼀种重视开发团队(Dev) 运维团队(Ops)之间沟通合作的文化。通过自动化 软件交付 和 架构变更 的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。在DevOps的软件开发过程包含计划、编码、构建、测试、预发布、发布、运维、监控,由此可见 DevOps 的强大。
⼀个软件的迭代,在我们开发⼈员看来,说白了就是对代码进行迭代,那么就需要对代码进行管理。如何管理我们的代码呢,那不就是 Git(分布式版本控制系统) !

系统开发环境

系统开发过程中最常⽤的四个环境
  1. 开发环境:开发环境是程序猿们专门用于日常开发的服务器。为了开发调试方便,⼀般打开全部错误报告和测试工具,是最基础的环境。
  2. 测试环境:⼀个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。该环境是开发环境到生产环境的过渡环境。
  3. 预发布环境:该环境是为避免因 测试环境和线上环境 的差异等带来的缺陷漏测而设立的⼀套环境。 其配置等基本和生产环境⼀致,目的是能让我们发正式环境时更有把握!所以预发布环境是你的产品质量最后⼀道防线,因为下⼀步你的项目就要上线了。要注意预发布环境服务器不在线上集成服务器范围之内,是单独的⼀些机器。
  4. 生产环境:是指正式提供对外服务的线上环境,例如我目前前在移动端或PC端能访问到的APP都是生产环境。
这四个环境也可以说是系统开发的三个重要阶段:开发->测试->上线,如图:
 
对于规模稍微大点的公司来说,可不止这么四个环境,比如项目正式上线前还存在 仿真/灰度环境,再比如还存在多套测试环境,以满足不同版本上线前测试的需要。

分支设计规范

环境有了概念后,那么对于开发人员来说,⼀般会针对不同的环境来设计分支
分支
名称适用环境
master主分支生产环境
release
预发布分支
预发布/测试环境
develop
开发分支开发环境
feature
需求开发分支本地
hotfix
紧急修复分支本地
注:以上表格中的分支和环境的搭配仅是常用的⼀种,可视情况而定不同的策略。
master 分支
  1. master 为主分支,该分支为只读且唯⼀分支。用于部署到正式发布环境,一般由合并 release 分支得到。
  2. 主分支作为稳定的唯⼀代码库,任何情况下不允许直接在 master 分支上修改代码。
  3. 产品的功能全部实现后,最终在master分支对外发布,另外所有在master分支的推送应该打标签(tag)做记录,方便追溯。
  4. master 分支不可删除。
release 分支
  1. release 为预发布分支,基于本次上线所有的 feature 分支合并到 develop 分支之后,基develop 分支创建。可以部署到测试或预发布集群。
  2. 命名以 release/ 开头,建议的命名规则: release/version_publishtime(版本+发布时间) 
  3. release 分支主要用于提交给测试人员进行功能测试。发布提测阶段,会以 release 分支代码 为基准进行提测。
  4. 如果在 release 分支测试出问题,需要回归验证 develop 分支看否存在此问题。
  5. release 分支属于临时分支,产品上线后可选删除。
develop 分支
  1. develop 为开发分支,基于master分支创建的只读且唯⼀分支,始终保持最新完成以及 bug 修复后的代码。可部署到开发环境对应集群。
  2. 可根据需求大小程度确定是由 feature 分支合并,还是直接在上面开发(不建议)。

feature 分支

  1. feature 分支通常为新功能或新特性开发分支,以 develop 分支为基础创建 feature 分支。以 feature/ 开头,建议的命名规则: feature/user_createtime_feature (用户+创建时间+功能)
  2. 新特性或新功能开发完成后,开发人员需合到 develop 分支
  3. ⼀旦该需求发布上线,便将其删除。
hotfix 分支
  1. hotfix 分支为线上 bug 修复分支或叫补丁分支,主要用于对线上的版本进行 bug 修复。当线上出现紧急问题需要马上修复时,需要基于 master 分支创建 hotfix 分支
  2. 命名以 hotfix/ 开头,建议的命名规则: hotfix/user_createtime_hotfix(用户+创建时间+补丁)
  3. 当问题修复完成后,需要合并到 master 分支develop 分支并推送远程。⼀旦修复上线,便将其删除。

总结 

  1. 其实,以上跟大家讲解的是企业级常用的⼀种 Git 分支设计规范:Git Flow 模型
  2. 但要说的是,该模型并不是适用于所有的团队、所有的环境和所有的文化。如果你采用了持续交付,你会想要⼀些能够尽可能简化交付过程的东西。
  3. 有些人喜欢基于主干的开发模式,喜欢使用特性标志。然而,从测试的角度来看,这些反而会把他吓⼀跳。
  4. 关键在于站在我们的团队或项目的角度思考:
    1. 这种分支模型可以帮助你们解决哪些问题?
    2. 它会带来哪些问题?这种模式为哪种开发提供更好的支持?
    3. 我们想要鼓励这种行为吗?
    4. 我们选择的分支模型最终都是为了让⼈们更容易地进行软件协作开发。因此,分支模型需要考虑到使用者的需求,而不是盲目听信某些所谓的“成功的分支模型”。
  5. 所以对于不同公司,规范是会有些许差异,但万变不离其宗,是为了效率与稳定。

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

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

相关文章

【TypeScript】Vue: Property finally does not exist on type Promise<void>.

【TypeScript】Vue: Property finally does not exist on type Promise&#xff1c;void&#xff1e;. 问题描述 Vue: Property finally does not exist on type Promise<void>. Do you need to change your target library? Try changing the lib compiler option to…

【CSS in Depth 2 精译_079】第 13 章:渐变、阴影与混合模式概述 + 13.1:CSS 渐变效果(一)——使用多个颜色节点

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 13 章 渐变、阴影与混合模式】 ✔️ 13.1 渐变 ✔️ 13.1.1 使用多个颜色节点&#xff08;一&#xff09; ✔️13.1.2 颜色插值13.1.3 径向渐变13.1.4 锥形渐变 文…

043_Tcpip Instruments in Matlab中连接和调试采用TCP/IP协议的仪器

A:师兄&#xff0c;Matlab可以做什么&#xff1f; B:除了生孩子&#xff0c;什么都会。&#xff08;这下你懂师兄的意思了吧&#xff09; A:【星星眼】哦&#xff0c;那我还是可以帮兰陵王生孩子&#xff01; B:【倒】先来一点跟Matlab无关的内容&#xff0c;现在很多仪器做得非…

Vue组件相关记录

Vue组件开发 非单文件组件 创建组件api Vue.extend({}) const student Vue.extend({template: <div>{{studentName}} - {{age}}</div>,data() {return {studentName: jjking,age: 12}}})new Vue({el: #app,//局部注册components: {student: student}})不能使用e…

EfficientNet与复合缩放理论(Compound Scaling Theory) 详解(MATLAB)

1.EfficientNet网络与模型复合缩放 1.1 EfficientNet网络简介 1.1.1 提出背景、动机与过程 EfficientNet是一种高效的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;由Google的研究团队Tan等人在2019年提出。EfficientNet的设计目标是提高网络的性能&#xff0c;同时减…

Three.js案例-360° VR看房

在 360 看房功能中&#xff0c;我们需要在浏览器中创建一个类似虚拟现实的场景&#xff0c;使得用户能够查看环境的每一个角落。这一功能的实现本质上是利用 球体映射技术&#xff0c;即通过将全景图作为纹理贴图映射到一个反向的球体上&#xff0c;用户可以通过旋转视角来“环…

如何制作一款电子桌宠小狗(硬件部分)开源

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 在科技与创意的交融中&#xff0c;我开启了一段用 STM32 单片机制作电子桌宠小狗的有趣之旅。在这个项目中&#xff0c;我们将看到各种硬件组件的巧妙结合&#xff0c;共同打造出一个可爱又灵动的小宠物。 一、STM32…

期末速成C++【初识C++】

目录 1.英文单词 2.C的特点 3.C对C语言的补充 3.1命名空间和域操作符 &#x1f387;3.2控制台输入输出 3.3类型增强 3.3.1const常变量 3.3.2const与指针 3.3.3布尔类型与枚举类型 3.4默认参数 &#x1f387;3.5函数重载 &#x1f387;引用 3.6.1引用做函数参数 …

《数据结构》(408代码题)

2009 单链表&#xff08;双指针&#xff09; 分析&#xff1a;首先呢&#xff0c;给我们的数据结构是一个带有表头结点的单链表&#xff0c;也不允许我们改变链表的结构。链表的长度不是直接给出的啊&#xff0c;所以这个倒数也很棘手。那我们该如何解决这个“k”呢&#xff0c…

在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c

在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c 1. Installing the extension (在 Visual Studio Code 中安装插件)1.1. Extensions for Visual Studio Code1.2. C/C1.2.1. Pre-requisites 1.3. Makefile Tools 2. Configuring your project (配置项目)2.1.…

ur机器人ros-urdf

新建工作空间 mkdir -p ~/catkin_ws/src cd catkin_ws_ur5/src git clone -b melodic-devel https://github.com/ros-industrial/universal_robot.git cd .. rosdep update rosdep install --rosdistro melodic --ignore-src --from-paths src catkin_make source ~/catkin_ws…

Leonardo.Ai丨一键生成图片(AI绘图)

随着人工智能技术的迅速发展,AI在各个领域的应用越来越广泛,特别是在图像生成方面。AI艺术创作的崛起,不仅让艺术创作变得更加便捷和创新,也为设计师、艺术家及普通用户提供了全新的工具。Leonardo.Ai作为一款基于人工智能的图像生成工具,通过简洁的操作和强大的功能,成功…

【前端开发】HTML+CSS网页,可以拿来当作业(免费开源)

HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content_lizhongyu"widthdevice-width, initial-scale1.0"><title>小兔鲜儿-新鲜、惠民、快捷<…

AI学习记录 - 依据 minimind 项目入门

想学习AI&#xff0c;还是需要从头到尾跑一边流程&#xff0c;最近看到这个项目 minimind, 我也记录下学习到的东西&#xff0c;需要结合项目的readme看。 1、github链接 https://github.com/jingyaogong/minimind?tabreadme-ov-file 2、硬件环境&#xff1a;英伟达4070ti …

【STM32】RTT-Studio中HAL库开发教程九:FLASH中的OPT

文章目录 一、概要二、内部FLASH排布三、内部FLASH主要特色四、OTP函数介绍五、测试验证 一、概要 STM32系列是一款强大而灵活的微控制器&#xff0c;它的片内Flash存储器可以用来存储有关代码和数据&#xff0c;在实际应用中&#xff0c;我们也需要对这个存储器进行读写操作。…

长安大学《2024年812自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《长安大学812自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题

说说你对java lambda表达式的理解?

大家好&#xff0c;我是锋哥。今天分享关于【说说你对java lambda表达式的理解?】面试题。希望对大家有帮助&#xff1b; 说说你对java lambda表达式的理解? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Java Lambda 表达式是 Java 8 引入的一项重要特性&#…

【PostgreSQL使用】最新功能逻辑复制槽的failover,大数据下高可用再添利器

逻辑复制的failover ​专栏内容&#xff1a; postgresql入门到进阶手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. ✅ &#x1f52…

【leetcode100】环形链表Ⅱ

1、题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

决策曲线分析(DCA)中平均净收益用于评价模型算法(R自定义函数)

决策曲线分析&#xff08;DCA&#xff09;中平均净收益用于评价模型算法 DCA分析虽然不强调用来评价模型算法或者变量组合的优劣&#xff0c;但是实际应用过程中感觉DCA曲线的走势和模型的效能具有良好的一致性&#xff0c;其实这种一致性也可以找到内在的联系&#xff0c;比如…