当前位置: 首页 > news >正文

Git结合Gitee的企业开发模拟

本系列有两篇文章:

  1. 一是另外一篇《快速使用Git完整开发》,主要说明了关于Git工具的基础使用,包含三板斧(git addgit commitgit push)、Git基本配置、版本回退、分支管理、公钥与私钥、远端仓库和远端分支、忽略文件、命令别名、标签等内容。
  2. 二是本篇,本文主要说明了Gitgitee开发协作的实践操作,会带领您从0开始演示企业中的项目开发过程(简略)。

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 -rorigin/HEAD -> origin/masterorigin/master

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

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

    $ git branch -rorigin/HEAD -> origin/masterorigin/debugorigin/master$ git branch* master

1.3.开发者1操作

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

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

    $ git checkout -b debug origin/debugSwitched 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内容1master SHA-1值 [origin/master] commit内容2

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

1.4.开发者2操作

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

首先直接创建本地分支:

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

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

    $ git pullThere 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-1Switched to a new branch 'feature-1'$ git branch* feature-1master$ 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 -rorigin/HEAD -> origin/masterorigin/master$ git pull$ git branch* master$ git branch -rorigin/HEAD -> origin/masterorigin/feature-1origin/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-1masterremotes/origin/HEAD -> origin/masterremotes/origin/feature-1remotes/origin/feature-2remotes/origin/master$ git checkout -b feature-2 origin/feature-2Branch feature-2 set up to track remote branch feature-2 from origin.Switched to a new branch 'feature-2'$ git branch -afeature-1* feature-2masterremotes/origin/HEAD -> origin/masterremotes/origin/feature-1remotes/origin/feature-2remotes/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 branchdebugfeature-2* master$ git checkout feature-2$ git merge master//然后解决冲突$ git push origin feature-2

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.远程分支删除后…

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

在这里插入图片描述

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

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

    $ git remote show origin* remote originFetch URL: https://gitee.com/limou3434/limou-c-test-code.gitPush  URL: https://gitee.com/limou3434/limou-c-test-code.gitHEAD branch: masterRemote branches:feature-1                     trackedmaster                        trackedrefs/remotes/origin/feature-2 stale (use 'git remote prune' to remove)Local branches configured for 'git pull':feature-2 merges with remote feature-2master    merges with remote masterLocal 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的文档。

相关文章:

Git结合Gitee的企业开发模拟

本系列有两篇文章&#xff1a; 一是另外一篇《快速使用Git完整开发》&#xff0c;主要说明了关于Git工具的基础使用&#xff0c;包含三板斧&#xff08;git add、git commit、git push&#xff09;、Git基本配置、版本回退、分支管理、公钥与私钥、远端仓库和远端分支、忽略文…...

WEBGL(2):绘制单个点

代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…...

C# task多线程创建,暂停,继续,结束使用

1、多线程任务创建 private void button1_Click(object sender, EventArgs e) //创建线程{CancellationToken cancellationToken tokensource.Token;Task.Run(() > //模拟耗时任务{for (int i 0; i < 100; i){if (cancellationToken.IsCancellationRequested){return;…...

界面控件DevExpress WinForms(v23.2)下半年发展路线图

本文主要概述了官方在下半年&#xff08;v23.2&#xff09;中一些与DevExpress WinForms相关的开发计划&#xff0c;重点关注的领域将是可访问性支持和支持.NET 8。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。同时能…...

vue实现按需加载的多种方式

1.import动态导入 const Home () > import( /* webpackChunkName: "Home" */ /views/Home.vue); 2.使用vue异步组件resolve 这种方式没有成功 //const 组件名 resolve > require([‘组件路径’],resolve) //&#xff08;这种情况下一个组件生成一个js文件…...

el-switch组件在分页情况下的使用

1.需求: 系统使用者在点击发布状态的开关后,可以对应的发布或者取消发布试卷 2.前端代码: html代码(这里不贴其他表单项的代码了,直接贴el-Switch组件的代码): <!-- qwy: 使用Switch组件,设置发布状态,业务逻辑:在页面初始渲染的时候应该查询发布状态,以根据状…...

【100天精通python】Day49:python web编程_web框架,Flask的使用

目录 1 Web 框架 2 python 中常用的web框架 3 Flask 框架的使用 3.1 Flask框架安装 3.2 第一个Flask程序 3.3 路由 3.3.1 基本路由 3.3.2 动态路由 3.3.3 HTTP 方法 3.3.4 多个路由绑定到一个视图函数 3.3.5 访问URL 参数的路由 3.3.6 带默认值的动态路由 3.3.7 带…...

sql 查重以及删除重复

查重 select count(1),content from t_mall_longping group by content having count(1)>1 稳重删除重复&#xff08;技术来源于 百度文心一言&#xff0c;好屌呀&#xff09; CREATE TABLE tmp_duplicates ( hxid INT PRIMARY KEY );INSERT INTO tmp_duplicates SEL…...

Flux语言 -- InfluxDB笔记二

1. 基础概念理解 1.1 语序和MySQL不一样&#xff0c;像净水一样通过管道一层层过滤 1.2 不同版本FluxDB的语法也不太一样 2. 基本表达式 import "array" s 10 * 3 // 浮点型只能与浮点型进行运算 s1 9.0 / 3.0 s2 10.0 % 3.0 // 等于 1 s3 10.0 ^ 3.0 // 等于…...

18.Oauth2-微服务认证

1.Oauth2 OAuth 2.0授权框架支持第三方支持访问有限的HTTP服务&#xff0c;通过在资源所有者和HTTP服务之间进行一个批准交互来代表资源者去访问这些资源&#xff0c;或者通过允许第三方应用程序以自己的名义获取访问权限。 为了方便理解&#xff0c;可以想象OAuth2.0就是在用…...

vue和node使用websocket实现数据推送,实时聊天

需求&#xff1a;node做后端根据websocket&#xff0c;连接数据库&#xff0c;数据库的字段改变后&#xff0c;前端不用刷新页面也能更新到数据&#xff0c;前端也可以发送消息给后端&#xff0c;后端接受后把前端消息做处理再推送给前端展示 1.初始化node&#xff0c;生成pac…...

汽车电子笔记之:基于AUTOSAR的多核监控机制

目录 1、概述 2、系统监控的目标 2.1、任务的状态机 2.2、任务服务函数 2.3、任务周期性事件 2.4、时间监控的指标 2.5、时间监控的原理 2.6、CPU负载率监控原理 2.6.1、设计思路 2.6.2、监控方法的评价 3、基于WDGM模块热舞时序监控方法 3.1、活跃监督 3.2、截至时…...

GDB 源码分析 -- 断点源码解析

文章目录 一、断点简介1.1 硬件断点1.2 软件断点 二、断点源码分析2.1 断点相关结构体2.1.1 struct breakpoint2.1.2 struct bp_location 2.2 断点源码简介2.3 break设置断点2.4 enable break2.5 disable breakpoint2.6 delete breakpoint2.7 info break 命令源码解析 三、Linu…...

SpringMVC概述与简单使用

1.SpringMVC简介 SpringMVC也叫做Spring web mvc,是 Spring 框架的一部分&#xff0c;是在 Spring3.0 后发布的。 2.SpringMVC优点 1.基于 MVC 架构 基于 MVC 架构&#xff0c;功能分工明确。解耦合&#xff0c; 2.容易理解&#xff0c;上手快&#xff1b;使用简单。 就可以…...

传输层—UDP原理详解

目录 前言 1.netstat 2.pidof 3.UDP协议格式 4.UDP的特点 5.面向数据报 6.UDP的缓冲区 7.UDP使用注意事项 8.基于UDP的应用层协议 总结 前言 在之前的文章中为大家介绍了关于网络协议栈第一层就是应用层&#xff0c;包含套接字的使用&#xff0c;在应用层编码实现服务…...

CK-GW06-E03与汇川PLC的EtherNet/IP通信

准备阶段&#xff1a; CK-GWO6-E03网关POE交换机网线汇川PLC编程软件汇川AC801-0221-U0R0型号PLC 1.打开汇川PLC编程软件lnoProShop(V1.6.2)SP2 新建工程&#xff0c;选择对应的PLC型号&#xff0c;编程语言选择为“结构化文本&#xff08;ST&#xff09;语言”&#xff0c;然…...

UI界面自动化BagePage

常用basepage模块代码 # -*- coding: utf-8 -*- # Desc: UI自动化测试的一些基础浏览器操作方法# 第三方库导入 import time from logging import config import randomimport allure from selenium.webdriver.common.alert import Alert from selenium.webdriver.remote.webe…...

北京开发APP的费用明细

开发APP项目时&#xff0c;在功能确定后需要知道有哪些可能的费用&#xff0c;安排项目预算。北京开发APP的费用明细可能会包括以下几个部分&#xff0c;每个部分都会产生一些费用。今天和大家分享APP费用明细有哪些&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&…...

2023年MySQL核心技术第一篇

目录 一 . 存储&#xff1a;一个完整的数据存储过程是怎样的&#xff1f; 1.1 数据存储过程 1.1.1 创建MySQl 数据库 1.1.1.1 为什么我们要先创建一个数据库&#xff0c;而不是直接创建数据表&#xff1f; 1.1.1.2基本操作部分 1.2 选择索引问题 二 . 字段&#xff1a;这么多的…...

通讯协议056——全网独有的OPC HDA知识一之接口(十一)IOPCHDA_Playback

本文简单介绍OPC HDA规范的IOPCHDA_Playback&#xff08;可选&#xff09;接口方法&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui.com)。 此接口支持历史服务器的播放功能。这提供了从历史服务器获得初始数据集的能力&#xff0c;然后获得历史数据的持续更新。这与异…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...