git 进阶系列教程-------git使用流程

news2024/11/17 3:06:46

GIT使用流程

前言

初衷

git是一门很容易入门的项目管理工具,但是它是一门很难精通的技术。

git pull/git add ./git commit -m "message"/git push/......

知道以上几个命令,或许再多一点,也许就能说:‘我会git’了。但是在实际工作中,我们需要的git命令不止这些。市面上的大多教程,特别是视频教程,都止步于命令,最多讲一些工作简单流程。
作为一个曾经的小白,我很清楚的知道,即使知道这些命令,在日常使用的时候依旧有一种无从着力的感觉。看着像查询手册一样的技术文档时,我觉得是有什么把我阻挡在了这面技术更深层的外面。明明绝大多数的命令我都用过,知道它们大概能实现什么效果,但是遇到一个实际情形的时候,我依旧需要查阅大量的文档才能知道下一步要如何操作。
我认为这种情况是知识没有成体系所造成的结果,当我查阅了大量文档,知道了这个体系是如何运作的后,我想写一篇这样的文档: 从项目技术leader建立git项目,到项目开发的全部流程。尽可能详细的从应用的角度,讲解git的使用。从场景出发,让后来者相对轻松的入门。

适用人群

对git命令有基础了解的同学、想要体系化重新学习git的同学、想要做项目leader需要对自己的技能有个完善和补充的同学。

开始

阶段一:项目分组(组织:organization)

注意:以下是分组的原因以及必要性,可以跳过不看。
众所周知,git是项目版本管理的工具。而一家公司大概率不止一个项目,而是很多个项目。比如腾讯这家小公司,有游戏相关的项目、有云服务相关的项目、有支付相关的项目。单单游戏相关,肯定又有端游、手游。端游又有蛮多具体的游戏…;扯远了,总之,一家公司根据业务,划分出很多项目组,而项目组又会根据项目划分出不同的项目以及项目团队。
比如:公司做决策时,为了有一些可依赖的、直观的数据而搭建起一套系统(通常就是我们说的大数据)。公司会在团队中找出一些人员,成立一个项目组负责这个事情。而这个项目组很可能拆分出这么一些团队(team):前端团队、后端团队、运维团队。其中前端团队很可能开发两个具体的项目: 项目A—给公司运维人员、分析人员提供的前端页面,主要功能是根据自身权限能查看到一些内部数据,比如日活量、销售额等,页面中规中矩。项目B—给公司领导层提供的前端页面,主要功能是给公司人员分配权限,页面简单。后端团队可能也开发两个具体项目: 项目A----鉴权系统,类似一种中间件或者看门狗,主要功能是拦截没有鉴权的请求,给主服务器减缓压力。项目B—给前端两个项目做支撑的接口服务。
ps: 以上项目分配仅仅是举个例子,有的公司可能会更简单一些,有的会更复杂,有的分配原则和我说的不一样,不过不重要。重要的你要明白即使在一个项目组,很可能依然会分出几个项目团队,每个项目团队依然有可能有多个具体的项目开发任务。
ps: 在项目的托管上,有的公司选择github,有的使用国内的coding,有的使用gitee(呵呵),还有的公司自建gitlab,这里我们采用github来进行托管,流程上都差不多,一通百通。
所以,综上所述,为了应对这种项目组织情况,我们需要创造一个项目组,来组织多个项目和多个团队

接下来就是你身为项目的技术leader应该要做的事情了----创造组织(organization)

ps: 建立自己的账号,创造公钥私钥这种事我就不从这篇文章中介绍了,网上优秀的文档有一堆。

1. 创建一个项目组

点击添加,点击New noganization按钮。你看,这并不难
在这里插入图片描述
如果不出意外你会看到这样的页面,这个你大概看一下就懂,掏钱的有更好的托管服务,不掏钱版本在使用上有一些限制,具体用什么版本看你公司,当然这是细枝末节,不重要,这里点击免费的版本。
在这里插入图片描述
然后呢,你就填写你要创建的组织的相关信息,也不多,主要就三条,组织名、组织邮箱、组织所属公司。然后验证一下,证明你是真人,点击next即可。
在这里插入图片描述
然后你就会跳转至这个页面。主要是让你添加一下你要让谁进入你的组织,一同开发,邀请谁就把谁的邮箱放上去即可。暂时我们谁都不邀请。点击compele setup按钮即可
在这里插入图片描述
然后进入到这个页面,这个不是我预期的,可能是因为我登录github时间有点久,所以要求我重新输入密码。很可能你不会出现这个页面哈。出现也不怕,输入一下你的github的密码即可。
在这里插入图片描述
然后就到了这里,我绷不住了,怎么搞定和我是刚注册的一样呢。这里但凡你英语不是工地学的,应该都能看懂。主要就是说你的项目组的建立是为了做什么,和你新建github账号时的偏好设置差不多,看情况填填就行了,完全不会影响你的正常使用的。
在这里插入图片描述
最终,如果你看到了这个页面,说明你的项目已经建立成功了。
在这里插入图片描述

2. 创建一个team

创建组织之后,你可以在组织下创建n个项目,你也可以创建多个team。这个没啥先后顺序可言,看你心情。目的是为了让组织中的多个项目和多个team匹配协同嘛。这里我们先创建一个team吧。
在这里插入图片描述
填写团队信息
在这里插入图片描述
然后你就进入到了下面这个页面,也标示着你的team已经成功创建一个了。
在这里插入图片描述
看右上角,这个team目前只有你一个人。你可以点击add a member按钮来添加新的成员进入这个组织,并直接进入这个team。ps: 如果你是这个项目的普通成员之一,你很有可能是这么进入这个项目的。
在这里插入图片描述
然后你可以输入成员的一些关键信息(比如他的邮箱),选择添加即可。这里我新创建了一个小号为了给你们演示一下多人开发的场景。然后github就会给该账号绑定的邮箱发送一个邀请邮件。
在这里插入图片描述
下面就是邮箱收到的邮件
在这里插入图片描述
进入邮件,点击接受邀请
在这里插入图片描述
然后你会跳转到github这个网站上,上面是join xxx。确定加入到这个团队。
在这里插入图片描述
如果你点击了jion,那你就进入到这个组织的这个team了。
在这里插入图片描述

3. 创建一个仓库

在组织中可以有多个仓库,其性质和你的个人仓库差不多,区别在于,这个仓库是方便多个人,多个team一同开发。那我们首先创造一个仓库。
在这里插入图片描述
然后就是填写一些仓库信息,我填写了一点信息,仓库名、仓库描述、仓库是共有的,只是没在截图里面。ps:里面有错别字,共有->公有;生命->声明。
在这里插入图片描述
然后你就到这么个页面了。这就是仓库的初始化的样子,和你的个人仓库初始化特别像,你会看起来很熟悉,无非是些提示信息。只是在上面多了一个按钮:add teams and collaborators ,意思是给这个仓库增加teams和协作者。也就是说,让组织中的谁来给你开发项目来。
在这里插入图片描述
点击之后,其实你会跳转到项目的设置中来。无非就是添加人,添加团队。接下来我给大家说一个概念:有关组织中的人和team。你在组织中可以是独立的人存在着,也可以是team中的一个成员存在着。我是实在没有账号了,就不演示了。相信我你上手就会,这都无关技术,明白概念之后你大胆操作就行了。tips:添加人的时候,可以不是组织下现有的成员。人和team是多对多的关系,所以也有人加入team、退出team,也会有人员的增加、删除,team的增加、删除,我就不一一截图告诉你们了,意义不大,你们自己看看就会的。
在这里插入图片描述

4. 将开发人员添加到仓库中

这里我点击add teams按钮,然后会弹出这么个输入框,让你选择team,然后这个team就会关联到这个仓库,team中的成员也就加入到了这个仓库所托管的项目的开发中来了。
在这里插入图片描述
球都麻袋,在选择team时(选人员时同样会),会弹出这么个选择的列表。大家一看就知道,无非是给这team在这个仓库下的一些权限。
read:读权限,也就是你能拉取这个项目的代码,而且你能给这个项目提出一些问题和参与一些评论(Issue )。
write:写权限,其实这也包括读权限,毕竟没读权限怎么写代码。有这个权限你就能push代码了。一般的开发团队只给到这个权限就够了。
Triage:比读权限高一点,能够管理评论信息。一般给产品经理、测试这个权限大部分情况是够的。
Maintain:比写权限高一点,除了读写代码还能管理一下仓库的信息设置之类的。一般给小组长啥的,方便在项目经理不在的时候处理一些问题。
admin:管理员,项目权限都有。要是你足够放心,你才能给你的组员。

如果设置错了别担心,可以改的。
在这里插入图片描述

以上就基本完成了阶段一的任务了,接下来你要考虑到项目层面上的事情了。

阶段二:项目配置

在阶段一,我们基本解决了人员的组织架构(都有哪些人开发哪些项目,以及权限的分配)。接下了我们考虑更细致一点的事情:我们的某一个项目要划分几个分支,每个分支都是做什么的,基于分支的权限是什么样的(总不能一个组员能随意merge自己的代码到生产环境吧)?所以你也能看出来,在阶段二,依旧是项目经理或者说项目leader应该考虑的事情

1. 初始化仓库

目前我们创建了仓库,但是仓库里一行代码都没有呢。我们总归是要基于一个分支去做开发的,所以我们需要先创建一个分支,在这个分支上有些代码,我们才能谈论怎么基于这个分支做后续开发。这个过程也就是仓库的初始化。

一般情况下,都是项目经理或者项目组中相对有实力的人去做这件事。以前端vue项目为例,在项目初始化的时候一般都会考虑到项目的路由搭建、全局状态管理、网络请求模块的封装、ui框架的选择等等。那我呢就简单的使用vue-cli创建一个vue2.x的项目就当我把这些都考虑完了。ps:就算你一点都不懂vue也不会对git的使用造成困扰。

1. 初始化项目

首先我们准备好一个初始化好的项目(假装我们考虑了项目搭建了几个要素),然后就是熟悉的git命令
1、git init初始化仓库
2、配置.gitignore文件
3和4、增加一次提交。
![在这里插入图片描述](https://img-blog.csdnimg.cn/c9155028db29467cb1ac03cf3f2cd717.png
5、git remote add 添加远程的源并起名叫origin
6、推送本地master分支到远程master分支
在这里插入图片描述

注意:如果你因为没有鉴权导致无法推送代码,就添加远程分支即可
在这里插入图片描述

2.切出分支

我们开发、测试、生产、问题修复等场景不可能都在一个分支上操作,这样就太乱了,所以一般我们都会切几个分支对应几个不同的场景。通常会有以下几类分支
生产分支:这个分支是在生成环境运行的,就是说你们公司提供给用户或者自己的服务就是这个分支的最新提交的代码跑起来的结果,一般也会叫线上分支,通常这个分支的命名都是master(主分支),online(线上分支),produce(生产分支)。不同的公司命名可能不一样,但是意义都是一致的。注意,这个分支上的代码都是从别的分支合并来的,程序员不会在这个分支进行代码的开发
测试分支:这个分支通常是上线前的测试分支,因此我们也叫它预发布分支。功能很明显,就是在上线前,我们要讲代码合并到这个分支,然后交给测试同学、开发同事等,总归我们要对它进行相对严格的测试(越重要的项目,越要重视这一步,这是你们代码面世前的最后一道屏障)。一般我们会给这个分支起名为test、release等名称。
修复分支:这个分支就是万一我们发现线上系统有问题,我们需要对这个问题进行紧急修复,我们就会基于线上分支创造出这么一个分支,进行代码的变动后再合并到测试分支去。这个分支的名称不固定,因为这个分支是个临时分支,修复完了这分支留不留都不一定,通常我们叫这个分支xxx-hotfix或者hotfix-xxx。
开发分支:这个分支应该是你们以后接触最多的分支了。它是其他所有分支的基础,大部分情况我们都是基于此分支切出其它分支,然后进行开发,且开发之后一定会合并回此分支。

3.配置开发人员权限

坦白讲,我对这里不是特别熟悉。但是我尽可能清晰的讲解,有不同意见欢迎讨论。
权限的管理是必须的,设想一下,刚入职的小员工,要是有权限操作所有分支的代码,直接给你公司主分支代码做了改动,没有经过任何人审核,那是一件多么可怕的事。
权限管理一般分三种
一种宏观上的权限分配,针对的是组织
首先进入设置(注意,是组织的设置,不是仓库的)
在这里插入图片描述
然后选择成员权限的配置,如你所见,就是宏观上,组织内的成员能做些什么,下面还有一些,我就不打开了,一般都不怎么改动。
在这里插入图片描述
第二种是针对仓库的权限设置
选择你要管理的仓库,选择个人或团队的设置项。
你会发现最上面有三个选项卡,其实就是组件管理的软链接,不用怎么在意。下面的manage access才是第二种,针对仓库权限管理的重点。至于它能做什么,在阶段一,菜单4:将开发人员添加到仓库中,在添加之后,会弹出一个弹窗,有五个权限的选项给你选择,你还记得不,我说过,选错了没事,后面能改。那就是在这里改。具体操作你自己随便点点就会了。
在这里插入图片描述
第三种,针对分支的权限控制
这种权限控制才是你平时接触最多的权限控制,如果你熟悉你私人仓库的权限控制,你会发现,两者没啥区别。
进入正题首先我们先进入页面
点击设置,点击分支,然后你就能看到这个页面了。这个页面目前看有两个重要的功能,一个是更改默认分支,或者叫主分支。另一个则是添加分支规则。
在这里插入图片描述
修改默认主分支,这个不掩饰了,我相信你们的能力。我们主要看对分支的限制。
我们点击add branch pretection rule,就会看到下面的页面。首先你要输入你要管理的分支的名称,然后在下面选择你要添加的规则。

在这里插入图片描述
这里我选择master分支做演示,然后选择的简单的合并前需要拉取请求,然后选择第一项,需要审批。
我在做进一步解释,合并前拉取请求(Require a pull request before merging),选中后,你就不能在这个分支上做提交了(push),这个分支上的代码的更新全靠合并(merge),怎么样,是不是很符合生产环境分支的要求。
在拉取合并的子选项中,我选择的第一项,需要批准(审核)。即使我们要求生产环境的分支不允许直接push,那别依旧可以自己写完代码然后直接合并,所以这个选择就会对此进行限制。想要合并代码,你得让别人review你的代码,别人同意了你才能被允许合并。你看我设置的需要审批的数量是2。这样,一是能减少出错概率,二是能清楚划分责任。麻烦是麻烦了点,但请你相信,这是必要的。一个人固然能走的更快,但是一个团队能走得更远。
下面还有一些子选择,比如,作用也有,不过不是最重要的,可以作为了解。因为你不可能只看我这一篇文章就会git的所有操作,我的这篇文章是帮你梳理有关git的工作流程,你一定需要更细分的知识去补充你的框架。
子选项比如:在你请求合并时,你过时的请求合并要取消掉,也就是同一时间你只能有一个请求。比如,你可以要求项目的拥有者、创建者必须参与合并请求的审核工作。允许某人或者某个team不需要代码审核。等等。
在一级规则中,你还能指定合并分支前,被合并分支必须是最新提交。可以要求你必须处理掉分支上的问题(issues),你可以要求合并的分支必要打上标签,是否允许强制推送,是否允许删除分支等等。
如果你作为项目leader,这些事你要补充的知识。
在这里插入图片描述
如果你保存了更改你就看到这个页面了,说明这个分支的运作必须符合你设定的规则。
Require a pull request before merging

阶段三:实际项目开发

前言:这个阶段是你们最熟悉,但也可能比较迷茫的阶段。刚刚进入行业,我在这里也是稀里糊涂的使用着。这里的每种常规操作,我都清楚,但是我总是觉得,我对这个流程有些陌生。现在我整理了一下我的理解,希望对你能有所帮助。

git flow

不清楚大家对git flow这个概念是否了解,我大概介绍一下。git flow 不是一项技术,而是一种共识,一种标准。说的是git在工作中应有的流程是什么样的。
git flow不是唯一的标准。拿吃饭做例子,大家吃饭的共识是拿筷子吃。但是就是有刀叉吃西餐的存在,而且也是合理的。就算你手抓饭和菜,你也能吃饱嘛不是,只是不规范,会让别人觉得你有点大病。比如一家小公司,就4/5个开发,你还弄这么系统的git flow,那就是纯粹自己给自己找罪受。那时候你应该追求快而敏捷,快速实现,快速试错。当然也不是没有规则,只是规则要相应简略一点。

下面是我在网上找的一张git flow的工作流程图。我将依托这个图片来说明git flow(git工作流)。
在这里插入图片描述
在阶段二中的切出分支那小节中,我对上面的分支有了一些介绍,下面我还会再详细介绍一遍会和上面章节中的内容有重复的部分。

master这个分支是生产环境的分支,是你公司在服务器上跑的项目的代码就是这个分支上的,或者说,这个分支上的代码能随时准备上线了。是稳定,可靠,经过测试了的。当然,你的公司的生产环境分支不一定叫这个名,有可能叫online,有可能是prod或produce。值得注意的是,没有人会在这个分支上做开发,也不会有人基于此分支而开出新的分支来进行开发(我说的是开发,不包括修复)。这个分支上的所有代码都是由其它分支合并过来的。如你在上图所见,只有release和hotfix两个分支能合并到master上。此分支,有且仅有一条。ps:这里说的不能合并,不能开发,不是说技术上实现不了,而是不合规矩。再者说了,上面不是介绍了分支权限的设置了么。
develop不知道你有没有看出来,大部分分支都是基于这个分支做的开发。这是开发分支,在一定程度上他标识了这个产品的所有进程。在开发新功能时,你会从这个分支上拉取代码,然后checkout -b出你自己的本地分支进行开发。在开发完成之后,你会将你开发的分支push到远程仓库。注意,我说的是你会将你开发的分支,是你自己的分支推送到远程,不是你们公司的develop这个分支。然后你需要做的是,提交一条合并申请,申请你的分支合并到开发分支上,然后你的同事会大体看看你的代码,一般叫review或者check,最后在线上合并代码。该分支和master一样,都有且只有一条。
feature功能分支。如果你公司下来新需求了,或者对原有业务进行改动,这个时候你的leader(或者你就是leader)就会切出这么一条分支。比如叫feature-auth-connet,这个分支主要要完成统一登陆的鉴权功能。具体什么功能不重要,总之这个分支只有这么一个使命。在该功能开发完成后,这个分支就会将内容合并到develop分支上,然后这个分支就会被销毁。而这个功能分支的开发流程是leader切出来一个分支后,你从远程拉取这个分支,然后checkout -b出你自己的本地分支,开发后push你的分支到远程,然后申请合并。如果你有一些疑惑,开发不是拉取develop分支然后到本地,再切自己分支/上传吗?怎么这次多了一个feature分支呢。那我觉得你的思维是敏锐的。我解释一下,上面说过,不同公司的git工作流程是不一定的。如果要严格一点,那develop上直接拉取到本地然后开发是不规范的做法,以feature分支上开发为准。注意,这个分支严格来说不是一个分支,而是一类分支。功能分支可以同时存在多条的,毕竟咱们开发又不是单线程,可以几个功能一起推进。每一个分支相比整个项目来说生命周期都相对较短。
release预发布分支。这个分支和feature有点像的地方是,这个也是个临时分支。当我们认为develop分支上的代码足够成熟了,可以尝试将代码合并到master或者可以尝试上线了。就会在develop分支上切出一条release分支。这个分支一般就是给测试用,然后大家都会对这个分支有个基本的评审,或者有个人负责这件事。如果测试通过,那皆大欢喜,直接合并到master分支上,然后这个分支就会被销毁。所以你也会有可能见到有两条release类型的分支。如果测试没有通过,那么就从这个分支上再切一个本地开发分支,然后push,在线上合并。注意哈,但凡你在这个分支上有过代码改动,一定要求你做一件事,就是把这个分支再合并回develop分支上。这么做是为了避免develop上的问题在下次merge时再次出现。同时,master分支上的合并操作基本都是fast forward,所以我们应当避免master上出现develop上的领先分支或者说分歧。合并之后,依然是销毁该分支。有的公司也会叫这个分支为preprod,test之类的。
hotfix热修复分支。该分支一般出现在线上代码出问题时,临时开辟出来的分支。比如线上显示的文字排版出错,或者线上环境配置出问题,或者bug出现等情况。这时候有可能还挺紧急的,会有团队中相对更专业的人来切出这个分支,然后你们线上的代码应该会回滚到上一个版本。然后依旧是在本地开出一个分支,修复,push,线上合并。注意,和release的情况一致很像的一点是,一定要将代码同时合并到master和develop上,当然,这么说有点绝对了。develop上的代码可以稍稍慢一点合并,因为可能在开发新的需求,但是一定要合并的。

如果你看完了以上的git flow,相信你对git工具的使用流程有了最基本的认知。事无绝对,上面的流程不过是大多数大型企业经过实践后得出的一种最佳实践(之一)。在工作中,你可以相对灵活的增加或改变其中的流程。

结语

1,很感谢您能看到这里。
2,整篇文章我很少用到git命令,仅是对流程做了概述,后续我计划写一系列在具体场景下我们对项目的处理,以及使用的一些命令。
3,后续我还像写一些有关git设计原理的一些文章,敬请期待。
4,发现文章中任何错误,或者有不同看法,请随时联系我或者留言,我十分欢迎您的指导。
5,我期望寻找在工作之余,依然热爱编程的小伙伴,不分语言,不分平台。如果您有一样的想法,以下是我的邮箱,欢迎您与我交流。
g_morty@qq.com
6,祝您工作顺利。

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

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

相关文章

IDEA画UML类图

第一步(IDEA下载画图插件) PlantUML Integration 插件可以支持画图 第二步(创建类图文件) 点击之后会让选择 选择class即可 类图的语法 在画类图的时候分为五种 1. 依赖 依赖分为好多种, 作为成员变量,作为方法的入参和出参,在类中使用…

【JSP菜鸟教程】

简介 JSP是一种Java servlet&#xff0c;主要用于实现Java web应用程序的用户界面部分。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。 Scriptlet脚本小程序 如果你想在HTML中写Java代码&#xff0c;就需要将Java代码写入Scriptlet中&#xff0…

数据库实验一:数据定义与操作语言实验

实验一 数据定义与操作语言实验 实验 1.1 数据库定义实验 1.实验目的 理解和掌握数据库DDL语言&#xff0c;能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。 2.实验内容和要求 理解和掌握SQL DDL语句的语法&#xff0c;特别是各种参数的具体含义和使用方…

第十七届D2大会(I)

一、Web Compass-端内Web App解决方案揭秘 增强传统web端内方案&#xff0c;提供更好、更收敛的工程体验 二、自渲染跨端框架在字节跳动的实践与展望 基于Flutter Engine的二次开发 三、Qking&#xff1a;跨端JS引擎的深度探索与突破 常见js引擎&#xff0c;如&#xff1a;v8…

CSC7268

CSC7268概述: CSC7268是一款内置高压MOS的高性能、多工作模式的PWM控制芯片&#xff0c;内置多种保护机制。当系统为空载和轻载时&#xff0c;CSC7268采用Burst和Green控制模式可有效地减少了空载和轻载时的损耗。当系统为中载和重载时&#xff0c;芯片采用QR模式和CCM模式可有…

python基础: filter, lambda 函数表达式

filter(function or None, sequence)&#xff0c;其中sequence 可以是list ,tuple,string。这个函数的功能是过滤出sequence 中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回. filter只能接受两个参(function,sequence) &#xff0c;其…

Biotin-PEG-SH,Biotin-PEG-Thiol,生物素PEG巯基PEG衍生物供应

英文名称&#xff1a;Biotin-PEG-Thiol&#xff0c;Biotin-PEG-SH 中文名称&#xff1a;生物素-聚乙二醇-巯基 生物素-PEG-SH通过与链霉亲和素或抗生物素结合进行聚乙二醇化&#xff0c;具有高亲和力和特异性。生物素通过稳定的酰胺连接物与线性PEG结合。它具有与马来酰亚胺选…

java 瑞吉外卖day3 公共字段自动填充 新增分类

公共字段自动填充 代码实现 1. TableField(fill FieldFill.INSERT)//插入时填充字段 private LocalDateTime createTime;TableField(fill FieldFill.INSERT_UPDATE)//插入和更新时填充字段 private LocalDateTime updateTime;TableField(fill FieldFill.INSERT) private Lo…

数据库实验六:存储过程实验

实验六 存储过程实验 实验6.1 存储过程实验 1.实验目的 ​ 掌握数据库PL/SQL编程语言&#xff0c;以及数据库存储过程的设计和使用方法。 2.实验内容和要求 ​ 存储过程定义&#xff0c;存储过程运行&#xff0c;存储过程更名&#xff0c;存储过程删除&#xff0c;存储过程…

[附源码]Python计算机毕业设计Django少儿节目智能推荐系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Oracle数据的备份和恢复

Oracle数据的备份和恢复 ​ 当我们使用一个数据库时,总希望数据是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故…

logistic回归的标准化回归系数 计算方式

创建于&#xff1a;2022.12.17 修改于&#xff1a;2022.12.17 文章目录1、未标准化回归系数2、标准化回归系数3、两者的区别4、手动计算5、计算样例6、参考资料1、未标准化回归系数 通常我们在构建多因素回归模型时&#xff0c;方程中呈现的是未标准化回归系数&#xff0c;它是…

【财务】财务分析---管理报告体系搭建

财务分析体系搭建的是一个系统化的功能&#xff0c;涉及的业务面非常广&#xff0c;财务分析也能表现出清晰的数据&#xff0c;以此进行改善&#xff1b;本文作者详细分析了财务分析中的管理报告体系的搭建&#xff0c;我们一起来看一下。 一、理清核算、财报、管报、预算关系 …

java设计模式(下)

文章目录第六章 行为型模式(11种)6.1 观察者模式6.1.1 观察者模式介绍6.1.2 观察者模式原理6.1.3 观察者模式实现6.1.4 观察者模式应用实例6.1.5 观察者模式总结6.2 模板方法模式6.2.1 模板方法模式介绍6.2.2 模板方法模式原理6.2.3 模板方法模式实现6.2.4 模板方法模式应用实例…

计算机网络——PPP协议与HDLC协议

广域网 广域网通常跨接很大的1物理范围&#xff0c;所覆盖的范围从几十公里到几千公里&#xff0c;他能链接多个城市或者国家&#xff0c;并且横跨几个州并能提供远距离通信。 广域网的通信子网使用的分组交换技术&#xff0c;广域网的通信子网可以利用公用分局交换网&#xf…

我也“阳”了

大家好&#xff0c;我是哪吒&#xff0c;我也“阳”了&#xff0c;现在是北京时间2022年12月17日 18:36&#xff0c;这篇文章简单说一下我“阳”了的经历和感受。 昨天下午&#xff0c;发现嗓子疼&#xff0c;不舒服&#xff0c;喝了很多茶水&#xff0c;喝了一瓶蓝芩口服液&a…

【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)

一、RDD的概念 RDD&#xff08;Resilient Distributed Dataset&#xff09;&#xff0c;即弹性分布式数据集&#xff0c;是一个容错的、并行的数据结构&#xff0c;可以让用户显式地将数据存储到磁盘和内存中&#xff0c;并且还能控制数据的分区。不同RDD之间可以通过转换操作…

SLAM 几何基础

SLAM 几何基础1. 向量运算及其几何意义1.1 内积1.1.1 内积定义1.1.2 内积几何意义1.1.3 内积微分性质1.2 外积1.2.1 外积定义1.2.2 外积几何意义1.2.3 外积微分性质2. 线面特征运算2.1 点到直线距离2.2 点到平面距离Reference:深蓝学院-多传感器融合 1. 向量运算及其几何意义 …

QT系列第4节 QT包含模块以及常用的数据类型和容器

QT中包含很多模块&#xff0c;这些模块都是建立在常用数据类型和容器基础之上的。本篇简单介绍一下常用模块&#xff0c;常用数据类型&#xff0c;常用容器类。 目录 1.QT模块分类 2.QT基本数据类型 3.QString和QByteArray区别 4.QT中的容器 1.QT模块分类 &#xff08;1&…

jdk11新特性——更简化的编译运行程序

目录一、概述二、注意事项三、注意事项1——代码示例3.1、示例13.2、示例23.3、示例3四、注意事项2——代码示例4.1、示例14.2、示例2一、概述 JEP 330 : 增强java启动器支持运行单个java源代码文件的程序。 在我们的认知里面&#xff0c;要运行一个 Java 源代码必须先编译&am…