基于git的开发规范总结

文章目录

  • 各分支命名规范
  • gitee基本开发流程及定义
    • gitflow工作流
    • gitflow工作流常用分支
    • 主要工作流程
    • 命名规则
    • gitflow工作流程图
  • Git分支开发管理策略
    • 主分支Master
    • 开发分支Develop
      • Git创建Develop分支的命令:
      • 将Develop分支发布到Master分支的命令:
    • 临时性分支
    • 功能分支
      • 创建一个功能分支:
      • 开发完成后,将功能分支合并到develop分支:
      • 删除feature分支:
    • 预发布分支
      • 创建一个预发布分支:
      • 确认没有问题后,合并到master分支:
      • 再合并到develop分支:
      • 最后,删除预发布分支:
    • 修补bug分支
      • 创建一个修补bug分支:
      • 修补结束后,合并到master分支:
      • 再合并到develop分支:
      • 最后,删除"修补bug分支":
  • git开发版本号命名规范
    • 命名原则
    • 示例:
  • git 全局设置用户名、密码、邮箱
    • 查看git配置信息
    • 查看git用户名、密码、邮箱的配置
    • 设置git用户名、密码、邮箱的配置
    • 设置git全局用户名、密码、邮箱的配置(全局配置)
    • 修改git用户名、密码、邮箱的配置(跟设置语法一样,没有用户名就添加,有了用户名就修改)
    • 修改git用户名、密码、邮箱的配置(全局配置)
  • 使用git-flow分支管理模型和Jenkins多分支流水线的应用
    • 目前存在的问题
    • 主分支
    • 临时分支
      • feature - 功能分支
        • 创建订单功能分支:
        • 完成订单功能后,切换到 develop,合并 feature-order:
      • release 预发布分支
      • fixbug 修复 bug 分支
    • git-flow 使用
      • 开发新功能
    • git-flow 在 CI/CD 中的应用


  • 注意
  1. 严禁所有人员在master节点和develop节点修改提交代码
  2. master和develop节点只允许合并
  3. master分支推送必须打上标签,并说明此次详细更改信息

各分支命名规范

  1. hotfix:以当前master版本最后一位加1,开发完成后合并至master和develop分支, master主分支打标签
    如:master版本为V5.0.1,此时的hotfix分支版本为V5.0.2
  2. feature:从develop分支创建,最后的版本号可自由定义,如1.0.0为当前功能的1.0.0版本
    a. 如:feature/wgz_liteflow_1.0.0
    b. 另一个同事开发的功能即为:feature/lnc_ordersBug_1.0.0
    c. 当feature分支合并至develop分支后,从develop分支拉出release分支,要求加版本号
  3. release:当feature分支合并至develop分支后,拉出新的release分支进行测试,如果出现问题可以release分支进行bug修复,进到bug修复完成,经负责人确定上线后进行合并至master和develop节点,如果暂时不上线,可先合并至develop分支。
    a. 命名如:release/wgz_liteflow_V5.1.0

gitee基本开发流程及定义

gitflow工作流

gitflow工作流是一种依赖于Git版本管理工具,按特定规范对项目开发、测试、上线流程进行管理的工作方式。它是一种为实现规范化管理的约定,它明确了各个分支的意义,使整个团队的分工协作更加清晰。

gitflow工作流常用分支

  1. 【master】
    ○ 主分支 , 产品的功能全部实现后 , 最终在master分支对外发布
    ○ 该分支为只读唯一分支 , 只能从其他分支(release/hotfix)合并 , 不能在此分支修改
    ○ 另外所有在master分支的推送应该打标签做记录,方便追溯
    ○ 例如release合并到master , 或hotfix合并到master
  2. 【develop】
    ○ 主开发分支 , 基于master分支克隆
    ○ 包含所有要发布到下一个release的代码
    ○ 该分支为只读唯一分支 , 只能从其他分支合并
    ○ feature功能分支完成 , 合并到develop(不推送)
    ○ develop拉取release分支 , 提测
    ○ release/hotfix 分支上线完毕 , 合并到develop并推送
  3. 【featrue】
    ○ 功能开发分支 , 基于develop分支克隆 , 主要用于新需求新功能的开发
    ○ 功能开发完毕后合到develop分支(未正式上线之前不推送到远程中央仓库!!!)
    ○ feature分支可同时存在多个 , 用于团队中多个功能同时开发 , 属于临时分支 , 功能完成后可选删除
  4. 【release】
    ○ 测试分支 , 基于feature分支合并到develop之后 , 从develop分支克隆
    ○ 主要用于提交给测试人员进行功能测试 , 测试过程中发现的BUG在本分支进行修复 , 修复完成上线后合并到develop/master分支并推送(完成功能) , 打Tag
    ○ 属于临时分支 , 功能上线后可选删除
  5. 【hotfix】
    ○ 补丁分支 , 基于master分支克隆 , 主要用于对线上的版本进行BUG修复
    ○ 修复完毕后合并到develop/master分支并推送 , 打Tag
    ○ 属于临时分支 , 补丁修复上线后可选删除
    ○ 所有hotfix分支的修改会进入到下一个release

主要工作流程

  1. 初始化项目为gitflow , 默认创建master分支 , 然后从master拉取第一个develop分支
  2. 从develop拉取feature分支进行编码开发(多个开发人员拉取多个feature同时进行并行开发 , 互不影响)
  3. feature分支完成后 , 合并到develop(不推送 , feature功能完成还未提测 , 推送后会影响其他功能分支的开发),【合并feature到develop , 可以选择删除当前feature , 也可以不删除 . 但当前feature就不可更改了 , 必须从release分支继续编码修改】
  4. 从develop拉取release分支进行提测 , 提测过程中在release分支上修改BUG
  5. release分支上线后 , 合并release分支到develop/master并推送,合并之后 , 可选删除当前release分支 , 若不删除 , 则当前release不可修改 . 线上有问题也必须从master拉取hotfix分支进行修改
  6. 上线之后若发现线上BUG , 从master拉取hotfix进行BUG修改
  7. hotfix通过测试上线后 , 合并hotfix分支到develop/master并推送,合并之后 , 可选删除当前hostfix , 若不删除 , 则当前hotfix不可修改 , 若补丁未修复 , 需要从master拉取新的hotfix继续修改
  8. 当进行一个feature时 , 若develop分支有变动 , 如其他开发人员完成功能并上线 , 则需要将完成的功能合并到自己分支上【即合并develop到当前feature分支】
  9. 当进行一个release分支时 , 若develop分支有变动 , 如其他开发人员完成功能并上线 , 则需要将完成的功能合并到自己分支上, 即合并develop到当前release分支 (!!! 因为当前release分支通过测试后会发布到线上 , 如果不合并最新的develop分支 , 就会发生丢代码的情况)

命名规则

● master分支由项目架构、技术leader合并操作,任何人不可在此主分支开发。hotfix分支从master分支拉取
● develop分支由项目架构、技术leader、指定开发组长操作,只读,任何人不在此分支上开发。
● feature分支,由开发人员创建,多个分支,命名规则: feature/姓名_版本号_功能名称,开发人员每日都要从develop合并代码到自己的feature分支,开发完成后,再合并到develop。
● release待提测分支,从develop拉取release版本分支,命名规范:release/版本号,在此分支进行测试,bug修复,完成后打待上线tag,合并代码至develop,----->>>发布上线版本时再合并至master,打tag:规则为:版本号_上线日期_主要需求
● hotfix线上修复版本:从master拉取hotfix分支、命名规则: hotfix/版本号,修复完成,合并到develop和master
注:>>> 开发分支一旦合并至develop分支,即删除当前分支。

gitflow工作流程图

在这里插入图片描述
在这里插入图片描述


Git分支开发管理策略

主分支Master

首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。
在这里插入图片描述
Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。

开发分支Develop

主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop。
在这里插入图片描述
这个分支可以用来生成代码的最新隔夜版本(nightly)。如果想正式对外发布,就在Master分支上,对Develop分支进行"合并"(merge)。

Git创建Develop分支的命令:

git checkout -b develop master

将Develop分支发布到Master分支的命令:

# 切换到Master分支  
git checkout master  
# 对Develop分支进行合并  
git merge --no-ff develop

这里稍微解释一下,上一条命令的--no-ff参数是什么意思。默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。
在这里插入图片描述
使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。
在这里插入图片描述

临时性分支

  • 前面讲到版本库的两条主要分支:Master和Develop。前者用于正式发布,后者用于日常开发。其实,常设分支只需要这两条就够了,不需要其他了。
    但是,除了常设分支以外,还有一些临时性分支,用于应对一些特定目的的版本开发。临时性分支主要有三种:
  • 功能(feature)分支
  • 预发布(release)分支
  • 修补bug(fixbug)分支

这三种分支都属于临时性需要,使用完以后,应该删除,使得代码库的常设分支始终只有Master和Develop。

功能分支

  • 接下来,一个个来看这三种"临时性分支"。
    第一种是功能分支,它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop。

    在这里插入图片描述
    功能分支的名字,可以采用feature/开发人员名称_功能名_版本号的形式命名。如:feature/wgz_dictionary_1.1

创建一个功能分支:

git checkout -b feature/wgz_dictionary_1.1 develop

开发完成后,将功能分支合并到develop分支:

git checkout develop  
git merge --no-ff feature/wgz_dictionary_1.1

删除feature分支:

git branch -d feature/wgz_dictionary_1.1

预发布分支

  • 第二种是预发布分支,它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。
    预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release/开发人员名称_功能名称_版本号称的形式。如:release/wgz_add-user_1.2

创建一个预发布分支:

git checkout -b release/wgz_add-user_1.2 develop

确认没有问题后,合并到master分支:

git checkout master  
git merge --no-ff release/wgz_add-user_1.2 
# 对合并生成的新节点,做一个标签  
git tag -a 1.2

再合并到develop分支:

git checkout develop  
git merge --no-ff release/wgz_add-user_1.2

最后,删除预发布分支:

git branch -d release/wgz_add-user_1.2

修补bug分支

  • 最后一种是修补bug分支。软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。
    修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug/开发人员名称_bug_版本名称名称的形式。如:fixbug/wgz_add-user_1.1

    在这里插入图片描述

创建一个修补bug分支:

git checkout -b fixbug/wgz_add-user_1.1 master

修补结束后,合并到master分支:

git checkout master  
git merge --no-ff fixbug/wgz_add-user_1.1  
git tag -a 0.1.1

再合并到develop分支:

git checkout develop  
git merge --no-ff fixbug/wgz_add-user_1.1

最后,删除"修补bug分支":

git branch -d fixbug/wgz_add-user_v1.1

git开发版本号命名规范

命名原则

  1. 项目初版本时,版本号可以为 0.1.0;
  2. 当项目在进行了局部修改或 bug 修正时,主版本号和子版本号都不变,修正版本号加 1;
  3. 当项目在原有的基础上增加了部分功能时,主版本号不变,子版本号加 1,修正版本号复位为 0;
  4. 当项目在进行了重大修改或局部修正累积较多,而导致项目整体发生全局变化时,主版本号加 1;

示例:

  1. 主版本号改动:一期项目用0.1.0;二期项目用1.1.0;三期项目用2.1.0;
  2. 子版本号改动:增加了权限管理功能模块,版本号由0.1.3改为0.2.0;
  3. 修正版本号改动:修正了一个页面显示字符串,版本号由0.1.3改为0.1.4

git 全局设置用户名、密码、邮箱

  • git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

查看git配置信息

git config --list

查看git用户名、密码、邮箱的配置

git config user.name
git config user.password

设置git用户名、密码、邮箱的配置

git config user.name “wugz”
git config user.password “123456”
git config user.email “1053295500@qq.com”

设置git全局用户名、密码、邮箱的配置(全局配置)

# git config --global user.name 用户命
git config --global user.name wugz
# git config --global user.password 密码
git config --global user.password abc0506abc
# git config --global user.password 邮箱
git config --global user.email “1053295500@qq.com”

修改git用户名、密码、邮箱的配置(跟设置语法一样,没有用户名就添加,有了用户名就修改)

git config user.name “wugz”

修改git用户名、密码、邮箱的配置(全局配置)

git config --global user.name “wugz” 

使用git-flow分支管理模型和Jenkins多分支流水线的应用

目前存在的问题

  • 在开发过程中,团队中不同成员经常会同步开发不同的功能,可能会出现以下问题:

● 它们提交测试和部署到线上的时间往往不一样,如何清晰所属分支的职责?
● 不同功能可能会有相互依赖的代码,假设分属于不同的分支,如果其中一方想提交测试,必须先和另外一方合并,但另外一方还没到提交测试的时候,如果没有一个好的分支管理策略,就容易造成分支管理的混乱。
● 不同分支是否应该对应不同的环境,应该如何对应,jenkins 应该如何实现。

主分支

● master
● develop

  • master 对应着生产环境的代码。
    develop 为开发分支,当 develop 的代码达到稳定点并准备发布时,需将其合并至 master,然后使用版本号标记该次合并。

临时分支

  • 不同于主要分支,临时分支的生命周期有限,当使用完后需将其删除,临时分支可分为:

● feature
● release
● fixbug

  • 这些分支中的每一个都有特定的用途,并受严格的规则约束,即哪些分支可能是其原始分支,哪些分支必须是其合并目标。

feature - 功能分支

  • 从 develop 检出,必须合并回 develop。
    当开发某一功能时,从 develop 中检出 feature 分支,feature 分支在开发未完成时一直存在,直到开发完后合并到 develop,然后删除该分支。

创建订单功能分支:

git checkout -b feature/wgz_order_1.1 develop

完成订单功能后,切换到 develop,合并 feature-order:

# 切换到 develop
git checkout develop
# 合并
git merge --no-ff feature/wgz_order_1.1.0
# 删除 feature/wgz_order_1.1.0
git branch -d feature/wgz_order_1.1.0
# 推送 develop
git push origin develop
  • 该–no-ff 标志使合并始终创建一个新的提交对象,即使合并可以通过快进来执行。这样可以避免丢失有关要素分支历史存在的信息,并将所有添加了要素的提交分组在一起。

release 预发布分支

  • 从 develop 检出,必须合并到 develop 和 master。
    预发布分支通常用于在发布到测试环境的代码,出现问题直接在此版修复,待测试完成后,合并到 develop 和 master。
    创建 release 分支。从 develop 分支创建 release 分支。如当前 master 上的代码版本为 1.1.0,即将发布一个大版本,develop 已经准备就绪,创建一个带版本号的 release 分支:
# 创建 release/wgz_order_2.0.0 分支
git checkout -b release/wgz_order_2.0.0 develop
  • release/wgz_order_2.0.0 分支会存在一段时间,直到它可以发布时。不能在此分支上面开发新的功能,要开发新的功能,应该在 develop 分支上检出新的 featrue 分支,或者在 feature/* 主功能分支上检出。
    可以发布时,将release/wgz_order_2.0.0 合并到 master,并标记该次提交,另外还需要将其合并到 develop,以同步在 release/wgz_order_2.0.0 上作的修改:
# 切换到 master
git checkout master
# 合并 release/wgz_order_2.0.0
git merge --no-ff release/wgz_order_2.0.0
# 标记版本号
git tag -a 2.0.0
# 切换到 develop
git checkout develop
# 合并
git merge --no-ff release/wgz_order_2.0.0
# 删除 release/wgz_order_2.0.0
git branch -d release/wgz_order_2.0.0

fixbug 修复 bug 分支

  • 从 master检出,必须合并回 master、develop。
    如果在生产环境发现重大 bug,需要立即解决,可以创建 fixbug/wgz_order_2.0.1 分支,然后开始解决问题:
# 检出 fixbug/wgz_order_2.0.1
git checkout -b fixbug/wgz_order_2.0.1 master
  • 完成修复后合并分支:
# 合并 master
git checkout master
git merge --no-ff fixbug/wgz_order_2.0.1
git tag -a 2.0.1
# 合并 develop
git checkout develop
git merge --no-ff fixbug/wgz_order_2.0.1
# 删除 hotfix-2.0.1
git branch -d fixbug/wgz_order_2.0.1

git-flow 使用

  • 上面功能介绍的是如何使用 git-flow,发现操作过程还是有些繁琐的,其实业内存在一个库 gitflow,它是 git-flow 模型的具体实践。
    在它的 github README 中根据文档安装好 git-flow 和集成进 shell。- 查看 Installing git-flow & integration with your shell 小节
    安装好后执行 git flow init [-d] 初始化,然后将刚创建的本地分支都推送到远程 git push origin --all。

开发新功能

  • 如要同步开发账单、订单等功能,先创建一个主功能分支,再创建副功能分支:
git flow feature start feature/wgz_1.0
git flow feature start feature/wgz_order_1.0
git flow feature start feature/wgz_bill_1.0
  • 列出/开始/结束 feature 分支:
git flow feature
git flow feature start feature/wgz_1.0
git flow feature finish feature/wgz_1.0
  • 开发完成后:
git flow feature finish feature/wgz_1.0

其它类型的分支类似。

git-flow 在 CI/CD 中的应用

  • 假设接下来要开发版本为 v1.0.2,功能包含订单和财务模块,当前默认的分支只有 develop 和 master,首先创建 feature/wgz_order_1.0.2 和 feature/wgz_finance_1.0.2:
git flow feature start feature/wgz_order_1.0.2
git flow feature start feature/wgz_finance_1.0.2

# 推送到相应的 feature 分支
git flow feature publish feature/wgz_order_1.0.2
# 拉取相应的 feature 分支
git flow feature pull feature/wgz_order_1.0.2
  • 当订单先开发完成,想先部署到测试环境给到测试人员,需执行以下步骤:
# 完成订单功能开发,自动合并到 develop 并删除 feature-order
git flow feature finish feature/wgz_order_1.0.2
# develop 中的订单功能准备就绪,检出预发布分支,推送时会触发 jenkins 的构建任务,
# 自动部署到测试环境
git flow release start release/wgz_order_1.0.2
  • 在测试的过程中,需要修复问题,可以直接在 release/wgz_order_1.0.2 上修改,修改后提交会自动触发构建任务。当测试完没有问题时,这时候就需要部署到线上了,执行以下步骤:
# 合并到 master,删除 release/wgz_order_1.0.2
git flow release finish release/wgz_order_1.0.2
  • 部署到线上环境后,遇到需要紧急修复的 bug 时,在 master 上检出 fixbug 分支,用于修复 bug:
# 检出 hotfix/wgz_order_1.0.2
git flow hotfix start fixbug/wgz_order_1.0.2
# 合并到 master
git flow hotfix finish fixbug/wgz_order_1.0.2

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

潍坊这一城市商业综合体有奖征名

云创金谷项目商业购物中心名称及IP形象征集开始啦!!你有什么好想法?快来参与吧!! 云创金谷,是奎文区重点打造的城市更新代表力作,位于文化路以东、新华路以西,北宫街以北、卧龙东街以…

前端开发代码规范工具

规范化是前端工程化的一个重要部分。现在,有许多工具能够辅助我们实行代码的规范化,比如你一定知道的 ESLint 和 Prettier。 今天,来聊聊这些工具的工作原理和基本使用,了解它们是如何发挥作用的,以及如何更好地利用这些工具去规…

Nginx介绍

文章目录 Nginx介绍与apahche区别联系反向代理负载均衡动静分离 Docker安装nginx拉取镜像配置nginx测试nginxNginx配置详解 Nginx介绍 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并…

Linux权限划分的原则

考察的不仅是一个具体的指令,还考察对技术层面的认知。 如果对 Linux 权限有较深的认知和理解,那么完全可以通过查资料去完成具体指令的执行。更重要的是,认知清晰的程序员可以把 Linux 权限管理的知识迁移到其他的系统设计中。 权限抽象 一…

LeetCode之回溯算法

文章目录 思想&框架1.组合/子集和排列问题2.组合应用问题 组合/子集问题1. lc77 组合2. lc216 组合总和III3. lc39 组合总和4. lc40 组合总和II5. lc78 子集6. lc90 子集II 排列1. 全排列I2. 全排列II 组合问题的应用1.lc17 电话号码的字母组合2.lc131 分割回文串3. lc19 复…

《编程思维与实践》1070.复数幂

《编程思维与实践》1070.复数幂 题目 思路 思路比较简单,就是细节比较繁琐: ( a b i ) ( c d i ) ( a c − b d ) ( a d b c ) i (abi)(cdi)(ac-bd)(adbc)i (abi)(cdi)(ac−bd)(adbc)i , 利用该公式分实部和虚部进行计算结果即可. 由于涉及加减和正负号,所以在大整数结构…

致力于中小企业JavaEE企业级快速开发平台、后台框架平台

一、开源项目简介 J2eeFAST 是一个 Java EE 企业级快速开发平台, 致力于打造中小企业最好用的开源免费的后台框架平台 。系统基于(Spring Boot、Spring MVC、Apache Shiro、MyBatis-Plus、Freemarker、Bootstrap、AdminLTE)经典技术开发&…

亲测好用|甲方、专家和领导,用三维模型汇报方案如何投其所好?

身为设计方的你,有没有这样的经历: ➤ 一个非常优秀的方案未能被甲方采纳,反而甲方选择了一个不如自己的方案,造成了很大的遗憾; ➤ 在讲述自己的设计方案的时候,经常越说越散,甚至到了最后自…

应用在虚机和容器场景下如何优雅上下线

在生产场景中部署的服务提供者常因业务升级或其他场景需要下线和上线的部署操作,本文总结了应用在上下线过程中会遇到的典型问题,并思考在虚机和容器场景该如何处理这些问题,规避该过程中可能出现的服务消费者的请求失败,实现应用…

springboot文件上传

1.新建文件上传页面 在static目录中新建upload-test.html&#xff0c;上传页面代码如下所示&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>springboot文件上传测试</title> <…

mysql数据库的库操作 --2

目录 库操作 2.1&#xff1a;数据库的查看与创建与使用 2.2&#xff1a;字符集和效验规则 2.3&#xff1a;修改和删除数据库 2.4&#xff1a;数据库的备份和恢复 2.5&#xff1a;查看连接情况 库操作 2.1&#xff1a;数据库的查看与创建与使用 2.1.1&#xff1a;数据库…

Redis 持久化

文章目录 1. Redis 持久化2. RDB2.1 自动触发2.2 手动触发2.3 RDB 优点2.4 RDB 缺点2.5 RDB 文件修复2.6 总结 3. AOF3.1 AOF持久化工作流程3.2 AOF 缓冲区三种写回策略3.3 AOF 优点3.4 AOF 缺点3.5 AOF 重写机制3.6 AOF 重写原理3.7 总结 4. 混合持久化5. 纯缓存模式 1. Redis…

系统移植——linux内核移植——分析内核编译过程

uImage镜像文件 1.进入linux内核源码目录 ubuntuubuntu:~$ cd FSMP1A/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61/ 打开Makefile文件 vi Makefile 搜索include 因为 $(SRCARCH)->arm 所以上述指令为 arch/arm/Makefile 2.进入linux内核源码目录下,arch/arm目录下…

计网笔记 数据链路层 (1-2) 封装成帧、差错控制、流量控制与可靠传输、停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)

文章目录 前言在这里插入图片描述 零、数据链路层基本概念一、功能0、数据链路层功能概述1、封装成帧和透明传输1.1封装成帧1.2 透明传输1.3组帧方法 2、数据链路层的差错控制2.0差错从何而来2.1位错&#xff08;比特错&#xff0c;1变成0&#xff0c;0变成1&#xff09;2.2帧错…

复习一周,面了京东和百度,不小心都拿了Offer...

我个人情况是5年软件测试经验&#xff0c;在家复习了一周&#xff0c;面了京东和百度&#xff0c;都顺利拿下offer&#xff0c;下面是我的面试经历分享&#xff0c;希望能带来一些不一样的启发和帮助。 两家公司最常问的就是下面这些问题&#xff1a; 请介绍一下你之前做过哪些…

String类

目录 一.认识 String 类 二.常用方法 1.字符串构造&#xff08;定义&#xff09; 2.字符串指为空和null 3.String对象的比较 &#xff08;1&#xff09;equals和的区别 &#xff08;2&#xff09;compareTo比较 4.字符串查找 5.字符串转化 &#xff08;1&#xff09;…

前几天面了个32岁的测试员,年薪50w问题基本都能回答上,应该刷了不少八股文···

互联网行业竞争是一年比一年严峻&#xff0c;作为测试工程师的我们唯有不停地学习&#xff0c;不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里、字节、美团、腾讯等大厂.....&#xff09; 所以&#xff0c;大家就迎来了…

centerpoint论文和代码解读

目录 一、序论 二、论文结构 三、代码 论文地址&#xff1a; https://arxiv.org/pdf/2006.11275.pdf 代码地址&#xff1a;tianweiy/CenterPoint (github.com) 一、序论 centorpoint是一种anchor-free的方法&#xff0c;直接预测物体的中心点&#xff0c;然后直接回归其wh…

【C++】unordered_map与unordered_set(系列关联式容器)

文章目录 1.unordered系列关联式容器2. unordered_map3.unordered_set 1.unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;如map和set&#xff0c;它们在查询时效率可达logN&#xff0c;即最差情况下需要比较红黑树的高度…

将 Segment Anything 扩展到医学图像领域

文章目录 前言技术交流SAM 拆解分析从医学角度理解 SAM 的效用MedSAM实验总结 前言 SAM 是一种在自然图像分割方面取得成功的模型&#xff0c;但在医学图像分割方面表现不佳。MedSAM 首次尝试将 SAM 的成功扩展到医学图像&#xff0c;并成为用于分割各种医学图像的通用工具。为…