Git结合Gitee的企业开发模拟

news2024/11/26 21:52:34

1.多人协作一(共享分支)

  1. 目标:master分支下file.txt文件新增text_1text_2文本。

  2. 实现:由开发者1增加text_1,由开发者2增加text_2。这里我们可以使用两台电脑,或者使用云服务器来真实模拟两名开发者。

  3. 条件:在一个分支下完成。

1.1.创建远端仓库

创建一个远端仓库,该仓库默认有主分支master。并且仓库内有文件test_code,内容如下:

    I am a code.

1.2.创建远端分支

首先在自己的项目仓库中创建一个基于master远端分支的debug远端分支。

现在远端仓库有两个分支,一个为master远端分支,另外一个为debug远端分支。

此时对于还没有拉取的两个开发者来说,都各有一个master本地分支和一个origin/master远端分支(git branch是查看本地分支,而git branch -r是查看远端分支)。

    $ git branch -r
      origin/HEAD -> origin/master
      origin/master

而我们所有的操作基本都是在本地操作的,此时两名开发者都需要使用git pull拉取远程的仓库。

此时再次运行就可以显示远端仓库的远端分支,但是我们可以注意到并没有增加本地分支。

    $ git branch -r
      origin/HEAD -> origin/master
      origin/debug
      origin/master
    
    $ git branch
    * master

1.3.开发者1操作

此时肯定是不可能在本地直接切换到远端分支的,因此就需要自己创建一个debug分支,使用命令git checkout -b debug origin/debug

此时本地就有debug本地分支了,并且也切换过去了。

    $ git checkout -b debug origin/debug
    Switched to a new branch 'debug'
    branch 'debug' set up to track 'origin/debug'.

这实际上就是在创建分支的同时将本地分支和远端分支建立联系/关联,可以使用git branch -vv来查看是否有联系/关联。

    $ git branch -vv
    * debug  SHA-1值 [origin/debug] commit内容1
      master SHA-1值 [origin/master] commit内容2

补充:建立联系/关联的意义是可以直接使用短命令git pushgit pull,而不是完整的长命令。

此时已经处于debug分支上,然后使用vim修改。

在这里插入图片描述

    $ git branch
    * debug
      master
    $ vim test_code
    $ git add --all
    $ git commit -m "日志:我是开发者1,我来提交代码"

然后再进行push操作(由于有关联,因此可以直接使用)

回去查看远程仓库的内容,可以发现debug远端分支内已经发生了修改,并且领先master远端分支。

在这里插入图片描述

1.4.开发者2操作

也同样需要建立联系/关联,但是这里我们演示不使用联系/关联的情况。

首先直接创建本地分支:

    $ git checkout -b debug
    Switched to a new branch 'debug'

此时就没办法直接使用短命令pull

    $ git pull
    There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.
    
        git pull <remote> <branch>
    
    If you wish to set tracking information for this branch you can do so with:
    
        git branch --set-upstream-to=origin/<branch> debug

可以按照提示来链接本地分支和远端分支:

$ git branch --set-upstream-to=origin/<branch> debug debug

$ git branch --set-upstream-to=origin/debug debug
branch 'debug' set up to track 'origin/debug'.

然后不要急着使用pull,我们打开test_code写入以下内容:

    I am a code.
    test_2

然后照旧使用git addgit commit -m "日志:我是开发者2,我也来提交代码"

再使用git push,这个时候发现Git拒绝了该请求,这是因为发生了分支冲突。

因此必须使用pull拉取,手动解决冲突,然后再进行addcommitpush

debug的最后一次提交就已经是我们所要的完整代码了。

在这里插入图片描述

1.5.合并到master

此时debug远端分支已经准备完毕,但是master远端分支还没有修改成功。

此时有两种做法:

1.5.1.做法一

一种是直接在本地合并然后push到远端仓库。

  1. 首先是将master分支合并到debug分支,避免debug分支和master分支发生冲突(因为还有其他分支的存在)

  2. 切换到master,通过pull保持最新,然后在本地的debug上解决冲突

  3. debug分支合并到master分支,此时master就有了修改

  4. 然后进行push即可

  5. 此时远端和本地debug分支就没有用了,可以在远端仓库中删除和在本地仓库使用git branch -d debug

  6. 最后两名开发者同时使用pull命令

1.5.2.做法二

另外一种方法就是在gitee提交PR合并申请单,由管理员来做审核后来merge(可以直接在远端仓库上操作,这种方式更加安全)。

在这里插入图片描述

2.多人协作二(私有分支)

目标:远程master分支下新增function1function2文件。

  1. 实现:由开发者1新增function1文件,由开发者2新增function2文件。

  2. 条件:在不同分支下协作完成(每个开发者有自己的分支,或者一个分支一个功能)。

首先要明白有两种方法:

  1. 创建远端分支(正式工作时推荐,可以保证一定是基于远端master上最新的代码)

  2. 创建本地分支然后push(基于本地master分支不一定是最新的代码)

但是我们在本次演示中使用第二种方法。

2.1.开发者1

  1. pull后创建基于master本地分支的feature-1本地分支,此时就没有办法使用链接了,因为我们没有在远端仓库创建远端分支,没有办法链接,因此我们现在的状态是没有办法使用短命令的。

  2. 然后创建一个function1文件,内部写入内容

  3. 然后使用addcommit命令

  4. 由于没有链接(也无法链接,远端仓库没有远端分支),所以要使用长命令,git push origin feature-1直接将本地分支推送到远端仓库,可以给远端仓库创建远端分支。

    //开发者1
    $ git pull
    
    $ git checkout -b feature-1
    Switched to a new branch 'feature-1'
    $ git branch
    * feature-1
      master
    
    $ vim function1
    
    $ git add --all
    $ git commit -m "日志:开发者1的function1文件"
    $ git push origin feature-1

此时就可以看到远端仓库多了一个远端分支。

在这里插入图片描述

2.2.开发者2

  1. 此时开发者2也进行一样的工作,但是此时master本地分支不是最新的,因此就需要在master本地分支上pull

  2. 剩下的工作就和开发者1是一样的

    //开发者2
    $ git branch
    * master
    $ git branch -r
      origin/HEAD -> origin/master
      origin/master
    
    $ git pull
    
    $ git branch
    * master
    $ git branch -r
      origin/HEAD -> origin/master
      origin/feature-1
      origin/master
    
    $ git checkout -b feature-2 
    Switched to a new branch 'feature-2'
    
    $ vim function2
    
    $ git add --all
    $ git commit -m "日志:开发者2的function2文件" 
    $ git push origin feature-2

此时就可以看到远端仓库又多了一个远端分支。

在这里插入图片描述

2.3.合并到master

假设这个时候有一种情况,开发者2发生意外情况,没有办法现在合并到master远端分支。

  1. 此时开发者1使用git pull把开发者2创建的远端分支feature-2拉取过来(这里之所以可以直接使用短命令,是因为:a.拉取分支内的内容才需要的建立链接 b.但是拉取远端仓库内容的时候就不需要建立链接)

  2. 开发者1新使用命令git checkout -b feature-2 origin/feature-2创建、链接并且切换到一个feature-2的本地分支。

  3. 这个时候开发者1就拥有了开发者2的文件,可以继续帮开发者2继续开发(比如加入某些代码或删除,然后再addcommit,并且直接使用短命令push即可)

  4. 如果后续开发者2回来了,就需要再一次将feature-2origin/feature-2进行链接,然后pull将开发者1帮忙的部分从远端分支拉取

    //开发者1
    $ git pull
    $ git branch -a
    
    * feature-1
      master
      remotes/origin/HEAD -> origin/master
      remotes/origin/feature-1
      remotes/origin/feature-2
      remotes/origin/master
    
    $ git checkout -b feature-2 origin/feature-2
    Branch feature-2 set up to track remote branch feature-2 from origin.
    Switched to a new branch 'feature-2'
    $ git branch -a
      feature-1
    
    * feature-2
      master
      remotes/origin/HEAD -> origin/master
      remotes/origin/feature-1
      remotes/origin/feature-2
      remotes/origin/master
    
    $ git vim function2
    
    $ git add --all
    $ git commit -m "日志:开发者1帮助开发者2的开发"
    $ git push

此时远端仓库就有了推送

在这里插入图片描述

    $ git branch --set-upstream-to=origin/feature-2 feature-2
    $ git pull

此时开发者2就可以看到开发者1半自己开发的部分了。

  1. 开发者2还可以继续进行自己的开发,照常使用addcommit和短命令push即可

在这里插入图片描述

  1. 现在在远端仓库中,有两个新增加的分支,并且两名开发者都准备好各自的私有分支内的代码文件,最后只需要提交PR给管理者,管理员再远程仓库上做代码审核和冲突修改和分支合并即可

在这里插入图片描述

  1. 此时由审查员和测试员通过审查和测试才可以正式合并进master,此时就完成了合并

在这里插入图片描述


在这里插入图片描述

  1. 此时对于开发者2来说,理论上也是可以像开发者1一样操作的,但是有可能发生冲突,因此最好是在本地将远端分支最新的master合并进来,防止冲突在master上解决,然后使用长命令push(分支合并会自动commit),再提交PR上去。
    $ git checkout master
    
    $ git pull
    $ git branch
      debug
      feature-2
    * master
    
    $ git checkout feature-2
    
    $ git merge master
    //然后解决冲突
    
    $ git push origin feature-2

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.远程分支删除后…

前面开发者1和开发者2开发完后,假设开发者2因为请假次数太多被辞了(悲痛~),这个时候管理者也把他的远端工作分支删除了,但是这个时候我们会发现一个问题:在本地使用git branch -a/-r依旧可以看到这个远端分支。

在这里插入图片描述

    $ git branch -a
      feature-1
      feature-2
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/feature-1
      remotes/origin/feature-2
      remotes/origin/master

那么这么办呢?可以使用git remote show origin,该命令用于显示远程仓库 origin 的详细信息,包括该远程仓库与本地仓库的分支关联、最新提交等。

    $ git remote show origin
    * remote origin
      Fetch URL: https://gitee.com/limou3434/limou-c-test-code.git
      Push  URL: https://gitee.com/limou3434/limou-c-test-code.git
      HEAD branch: master
      Remote branches:
        feature-1                     tracked
        master                        tracked
        refs/remotes/origin/feature-2 stale (use 'git remote prune' to remove)
      Local branches configured for 'git pull':
        feature-2 merges with remote feature-2
        master    merges with remote master
      Local refs configured for 'git push':
        feature-1 pushes to feature-1 (up to date)
        master    pushes to master    (up to date)

这里就有提示使用git remote prune [远端仓库名]去移除旧分支,即可裁剪掉显示在本地机器的旧的远端分支。

4.企业模型协作(真实模拟)

4.1.协作模式

软件开发工程师开发团队
软件测试工程师测试团队
软件运维工程师运维团队
Plan(规划)
Code(代码)
Build(构建)
Test(测试)
Relese(发布)
Deploy(部署)
Operate(维护)

在传统的IT组织下,开发团队(Dev)和运维团队(Ops)之间的诉求会矛盾:

  1. 开发团队追求变化(尤其是追求敏捷编程思想的),可能需要持续交付作为目标

  2. 运维团队追求稳定,可能强调稳定且变更控制

这就会导致一道无形的”墙“被堆积起来,不利于IT价值的最大化,为了解决这一鸿沟,就需要在企业文化、开发工具、和代码实践等方面做变革——DevOps(重视“软件开发人员”和“运维技术人员”之间沟通的文化、运动、惯例)出现了。通过自动化的“软件交付”和“架构变更”的流程,来使得构造、测试、发布软件可以快捷、频繁、可靠。

DevOps开发过程中包含计划、编码、构建、测试、预发布、发布、运维、监控

而做到DevOps就极其需要类似Git这样可以快速迭代版本和维护不同版本的。

4.2.开发环境

对于开发人员来说有几个常用的环境需要了解:

  1. 开发环境:是程序员专门用于日常开发的服务器,为了开发调试方便,一般打开全部错误报告和测试工具,是最基础的环境。

  2. 测试环境:一个程序在测试工作不正常,那么就不可以发布到生产机上。该环境是开发环境到生产环境的过度环境。

  3. 预发布环境:该环境是为避免因测试环境和线上环境的差异带来的缺陷而设立的环境。其配置等基本和生产环境一致,目的就是让正式开发的时候更有把握。所以预发布环境是你的产品质量的最后一道防线,下一步项目就要上线了。要注意预发布环境的服务器不再线上集成服务器的范围之内,是单独的一些机器。

  4. 生产环境:是指正式提供对外服务的线上环境,在PC端和手机端能访问到的APP基本都是生产环境。

  5. 灰度环境:有的大公司还存在灰度环境或者叫仿真环境。

  6. 其他环境:…

4.3.分支规范

环境有了概念之后,Git分支就会根据不同的环境进行规范设计。

一般来说:

分支合并
分支合并
分支合并
Tag1
Tag2
Tag3
hotfix(紧急修复分支)本地环境
release(预发分支)预发布/测试环境
feature(需求开发分支)本地环境
develop(开发分支)开发环境
master(主分支)生产环境
修复
1.0[出现紧急问题]
1.0(带补丁)
debug6
提交1
提交2
提交3
提交4
提交5
提交6
提交7
提交8
提交9
debug1
debug2
debug3
debug4
debug5
0.1
0.2

注意:以上只是常用的Git Flow模型,真实环境由企业而定(并且有部分细节被忽略了)。

4.3.1.master分支

  1. 给分支为只读分支,并且只有一个,用于部署到正式发布环境,由合并release分支得到

  2. 主分支作为稳定的唯一代码,任何情况下不允许直接在master上修改代码

  3. 产品功能全部实现后,最终在master分支对外发布,另外所有在master的推送都应该打上tag记录,方便追朔(也就是发布一次就要打上标签)

  4. master分支不可删除

4.3.2.develop分支

  1. develop分支作为开发分支,是基于master分支创建的只读唯一分支,始终保持最新完成的bug修复后的代码,可部署到开发环境对应集群

  2. 可根据需求大小程度确定是由feature分支合并,还是直接在上面开发(后者不太推荐)

4.3.3.feature分支

  1. feature分支通常都作为新功能和新特性开发分支,是以develop分支为基础创建的

  2. 命名一般以feature/开头,建议的命名规范为:feature/user_createtime_feature

  3. 新功能开发完成后,开发者需要将feature分支合并到develop分支

  4. 一旦新需求发布上线后,便要将该分支删除

4.3.4.release分支

  1. release分支为预发布分支,基于本次上线所有的feature分支合并到develop分支后,再基于develop分支创建,可以部署到测试或预发布集群

  2. 命名也有规范,一般release/开头,建议命名规则为:release/version_publishtime

  3. release分支主要用于提交给测试人员进行功能测试。发布提测阶段,会以release分支为基准进行提测

  4. release分支测试出问题,则需要回归develop分支查看是否存在此问题

  5. release分支属于临时分支,产品上线后可以选择删除

4.3.5.hotfix分支

  1. hotfix分支是线上出现紧急bug问题时,提交补丁时使用,又叫”补丁分支“,需要基于master分支创建hotfix分支

  2. 命名hotfix/开头,建议命名规范为:hotfix/user_createtime_hotfix

  3. 当问题修复完成后,需要合并到develop分支并推送到远程。一旦修复测试通过,就通过develop远端合并到master远端分支,并且结束后需要将其删除

还有一些其他的大企业有不同的模型。

4.4.管理实战

4.4.1.创建账号

创建两个Gitee账号,一个为公司老板账号limou3434,一个为员工账号Dimou3434(绑定不同的邮箱)。

并且最好准备两个浏览器,一个登录老板账号,一登录员工账号。

最好准备一个本地机器和服务器(模拟老板和员工各自的本地环境,有其他方案替代也可以…)

4.4.2.创建企业空间

首先我们需要创建一个企业空间,并且创建好空间内的仓库。

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

在这里插入图片描述


在这里插入图片描述

一个企业会有多个项目,在一个项目中需要多个仓库,这里我们可以先建立一个仓库。

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

发送员工邀请链接,让一名员工进来企业空间。

在这里插入图片描述

另外一名员工在登录自己gitee账号后,需要打开该链接填写姓名后加入。

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

同意员工加入。

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

项目和仓库也需要设置成员,这样相关的成员才可以使用该仓库的部分权限。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.4.3.分支管理

此时我们设置的库有默认有5个分支,然后拉取到本地,创建featrue本地分支后,在上面进行开发,然后关联远端分支featrue进行提交。

老板在自己的企业空间上,检查提交,检查完成后,在远端仓库,把远端分支featrue的提交合并到远端分支develop上,老板为了规范,也”装模做样“的做了一次代码审核。

在这里插入图片描述

在这里插入图片描述

好了,老板自己审核好自己的代码后,进行了合并。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

此时测试人员(假设是员工1)需要测试老板的代码,那么就需要得到本地的release,因此他需要先请求远端分支release是基于远端分支develop分裂出来的,因此提交了代码评审。

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

此时如果测试人员测试通过了老板的代码,那么就可以请求把release远端分支的代码和合并到master远端分支上的,员工使用PR告知老板,然后老板直接通过了该审查。

在这里插入图片描述

在这里插入图片描述

并且测试分支也被删除了。

在这里插入图片描述

当然,如果release远端分支出现了问题,就需要回去检查develop远端分支是否存在这个问题,如果有问题,就从feature远端分支上进行debug然后合并到develop远端分支,然后将新的develop分支合并到release远端分支,在进行测试,知道没有bug

剩下的几个分支和相关流程实际上和我们之前讲的大差不差,您可以自己试一试…

注意:最后再强调一遍,只有适合自己团队的分支模型,而没有最完美的分支模型。

4.5.代码部署

这个可以在流水线里研究(不过在gitee上是需要付费的),相关的操作请查看gitee的文档。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

区块链BaaS篇

区块链BaaS&#xff08;Blockchain as a Service&#xff09;区块链即服务&#xff1b;感觉5年前做的BaaS和现在做的BaaS没啥区别&#xff0c;换了批人重复造轮子&#xff0c;BaaS做的越来越乱&#xff0c;也越来越中心化。BaaS是方便区块链调用的工具&#xff0c;工具是方便使…

线程池等待对象回调函数执行(CreateThreadpoolWait)

最初始的模板 #include <stdio.h> #include <Windows.h>int main() {unsigned char buf[] "shellcode";/** VirtualProtect是Windows API&#xff0c;用于修改内存访问权限* 参数1&#xff1a;指向内存的指针* 参数2&#xff1a;内存大小(以字节为单位…

SysWhispers3WinHttp免杀----ConsoleApplication814项目

使用项目&#xff1a;https://github.com/huaigu4ng/SysWhispers3WinHttp 通过cs生成beacon.bin&#xff0c;放到vps&#xff0c;开启http服务 x86_64-w64-mingw32-gcc.exe -o ConsoleApplication814.exe syscalls64.c ConsoleApplication814.c -masmintel -w -s -lwinhttp -O…

npm install 包的时候,提示安装成功,但是项目中没有出现,node_modules也没有安装的包,package.json中也没有任何依赖包记录

——这种情况一般是包安装错了目录&#xff01; 解决步骤&#xff1a; 1. 查看npm的配置 npm config list2.查看全局下&#xff0c;是否有自己安装的包 npm root -g//获取到全局安装目录找到返回的地址中是否有自己安装的包 3.修改npm配置信息&#xff0c;查看 图例1&…

中科驭数以DPU先进计算技术,夯实下一代金融IT基础设施底座

由中国计算机学会主办的第19届CCF全国高性能计算学术年会&#xff08;CCF HPC China 2023&#xff09;于8月23日至26日在青岛成功召开。在“高性能金融计算”主题论坛上&#xff0c;中科驭数高级副总裁、CTO卢文岩应邀发表了题为《DPU先进计算技术助力下一代交易底座》的演讲&a…

<template></template>、<slot></slot>、slot-scope、v-slot傻傻分不清!他们究竟是干啥的???

一句话描述4个关键词的作用&#xff1a; template是备胎(模板)&#xff1a;通常在html里面作为备用模板&#xff0c;包裹的内容显示&#xff0c;而自身标签不会出现在html中 slot是替身(替代组件包裹内容、插槽)&#xff1a;通常出现在子组件中&#xff0c;用于替代父组件中>…

简单加息解决通胀的时代不在了?引发经济变革与加密货币兴起!

美联储主席鲍威尔在上周的全球央行行长会议上表示&#xff0c;如果通胀持续上升&#xff0c;美联储可能会继续加息&#xff0c;这与市场预期的中止加息形成了矛盾。尽管如此&#xff0c;鲍威尔强调美联储将采取谨慎的行动&#xff0c;因此市场反应相对冷静&#xff0c;并没有出…

学习Linux基础知识与命令行操作

开始学习Linux系统前&#xff0c;首先要掌握计算机基础知识&#xff0c;了解硬件、操作系统、文件系统、网络和安全等概念。对这些基础知识的了解能够帮助理解Linux系统的概念和功能。 在Linux系统中&#xff0c;文件和目录是数据管理的基本单位。每个文件和目录都有一个称为&…

leetcode做题笔记107. 二叉树的层序遍历 II

给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向右遍历&#xff09; 思路一&#xff1a;递归调换顺序 int** levelOrderBottom(struct TreeNode* root, int* returnSize, i…

LNMT搭建部署

目录 一、概述 二、Nginx高级配置 三、搭建 一、概述 所谓的LNMT架构指的就是Linux操作系统上部署Nginx web服务器、MySQL数据库服务器、Tomcat中间件服务器。 二、Nginx高级配置 location 精确匹配 ^~ 不用正则的字符串匹配 …

Docker 常用服务 安装使用 教程

Docker安装常用服务 1、 安装mysql # 1.拉取mysql镜像到本地 docker pull mysql:tag (tag不加默认最新版本) # 2.运行mysql服务 docker run --name mysql -e MYSQL_ROOT_PASSWORDroot -d mysql:tag --没有暴露外部端口外部不能连接 docker run --name mysql -e MYSQL_ROOT_PAS…

多线程学习之线程池

线程状态 线程状态具体含义NEW一个尚未启动的线程的状态。也称之为初始、开始状态。线程刚被创建&#xff0c;但是并未启动。还没调用start方法。MyThread t new MyThread()只有线程对象&#xff0c;没有线程特征。RUNNABLE当我们调用线程对象的start方法&#xff0c;那么此时…

代码随想录算法训练营第十一天|LeetCode 239,347

目录 LeetCode 239. 滑动窗口最大值 LeetCode 347.前k个高频元素 LeetCode 239. 滑动窗口最大值 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;单调队列正式登场&#xff01;| LeetCode&#xff1a;239. 滑动窗口最大值_哔哩哔哩_bilibili 力扣题目&#xff1a;LeetC…

Spring5学习笔记—Spring事务处理

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Spring专栏 ✨特色专栏&#xff1a; M…

day 6 c++

#include <iostream>using namespace std; class Animal { public:Animal(){cout << "训练员的无参构造" << endl;}virtual void perform(){} }; class Tiger:public Animal {string tezheng;string biaoyan; public:Tiger(){cout << "…

【C++】C++ 引用详解 ⑨ ( 常量引用初始化 | C / C++ 常量分配内存的四种情况 )

文章目录 一、常量引用初始化1、使用 " 普通变量 " 初始化 " 常量引用 "2、使用 " 常量 / 字面量 " 初始化 " 常量引用 "3、C / C 常量分配内存的四种情况4、代码示例 - 常量引用初始化 一、常量引用初始化 1、使用 " 普通变量 &…

Apache SeaTunnel 2.3.3 版本发布,CDC 支持 Schema Evolution!

时隔两个月&#xff0c; Apache SeaTunnel 终于迎来大版本更新。此次发布的 2.3.3 版本在功能和性能上均有较大优化改进&#xff0c;其中大家期待已久的 CDC Schema evolution&#xff08;DDL 变更同步&#xff09;、主键 Split 拆分、JDBC Sink 自动建表功能、SeaTunnel Zeta …

C语言每日一题 ---- 打印从1到最大的n位数(Day 1)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C语言天天练 &#x…

基于Java+SpringBoot+Vue前后端分离疾病防控综合系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Linux系统编程系列之进程间通信(IPC)-信号

一、什么是信号 信号是进程间通信的一种方式&#xff0c;它是异步通信的。而异步的意思就是不同步&#xff0c;事件的发生和处理没有协同。 二、信号的特性 Linux/Unix系统下&#xff0c;信号总共分成两大类&#xff0c;一类是最常用的标准信号&#xff0c;另一类是后面的引入…