Git和GitHub

文章目录

  • 1.Git介绍
  • 2. 常用命令
  • 3. Git分支操作
  • 4. Git团队协作机制
  • 5. GitHub操作
  • 6. IDEA集成Git
  • 7.IDEA操作GitHub
  • 8. Gitee

1.Git介绍

Git免费的开源的分布式版本控制系统,可以快速高效从小到大的各种项目

Git易于学习,占地面积小,性能快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。

什么是版本控制? 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

为什么需要版本控制? 个人开发过渡到团队协作。

版本控制工具

  • 集中式版本控制工具

    CVS,SVN…,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。优点:方便管理权限,维护方便 缺点:中央服务器的单点故障。

    本库是集中的存放于中央服务器的。干活的时候,先要去中央服务器里领取最新的版本,然后在开始干活。干完活在将自己的版本上传到中央服务器。

  • 分布式版本控制工具

    Git,Mercurial…,客户端提取是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。

    服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的),每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

分布式每个人的电脑上都可以直接拷贝完整的代码版本。而集中式只能拷贝自己需要的。

分布式的服务器挂掉之后,不会影响工作。而集中式的服务器挂掉之后,根本就没法进行工作。

Git和代码托管中心(远程库):

  1. 局域网 GitLab
  2. 互联网 GitHub,Gitee

流程:工作区(写代码) --git add–> 暂存区(临时存储) – git commit–> 本地库(历史版本) --git push–> 远程库(GitHub)

Git安装:

  1. 高速下载:https://npm.taobao.org/mirrors/git-for-windows/

  2. next -> 选择安装目录 -> 选项配置(默认) next -> next -> 为git选择一个默认编辑器,一般选择Vim(默认)

    -> Let Git decide(默认) -> 是否修改环境变量,选第一个Use Git from Git Bash only

    -> 选择后台客户端连接协议Use the OpenSSL Library(默认) -> 配置行末换行符Checkout Win…(默认)

    -> 选择Git终端类型Use MinTTY(默认) -> 选择pull合并的模式Default(默认)

    -> 选择凭据管理器Git Credential…(默认) -> 其他配置(默认都勾选) -> 实验室功能(不勾选,不成熟) -> install


2. 常用命令

命令作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户签名
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m “日志信息” 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭
  1. 首次安装,要设置一下签名(区分不同操作者),否则提交代码报错,这个和登录GiHub没有任何关系。

    C:\Users\[user]\.gitconfig 文件里可以看到配置的

  2. 初始化本地库

    进入D:\Learning\Git-Space\git-demo项目文件夹,执行git init,会生成一个.git隐藏的文件夹

  3. 查看本地库状态git status

    • 没有任何东西:On branch master,在master分支中。No commits yet,没有提交过任何东西。nothing to commit,没有什么东西需要提交。

    • 新增hello.txt文件:多了一行 Untracked files…hello.txt(红色的),未被追踪的文件,只是存在于工作区。

  4. 添加到暂存区(Git追踪文件的过程)

    git add hello.txt 有个警告,Git帮我们转换了末尾换行符

    再次查看本地库状态,Changes to be committed…new file: hello.txt(绿色的),git追踪到了这个文件,文件只是存在于暂存区(可以删掉git rm --cached hello.txt,只是暂存区删掉,工作区还是有的)

  5. 提交到本地库,将暂存区的文件提交到本地库,形成自己的一个历史版本

    git commit -m "first commit" hello.text

    [master (root-commit) 20eda81] first commit ,20eda81就是版本号,后面是描述。
    1 file changed, 5 insertions(+),一个文件被改变,5行内容被插入。create mode 100644 hello.txt。

    再次查看本地库状态,No commits yet没有了,只有On branch master,nothing to commit, working tree clean 没有东西需要再次提交,工作区是干净的

  6. 查看版本信息

    git reflog 20eda81 (HEAD -> master) HEAD@{0}: commit (initial): first commit

    git log 更详细点,可以看作者,提交时间等,完整版的版本号。

  7. 修改文件,在文件第一行加了几个2

    • 再次查看本地库状态,Changes not staged for commit…modified:hello.txt(红色的) ,文件被修改了,而且还没有被添加到暂存区

    • 添加暂存区git add hello.txt,再次查看本地库状态,Changes to be committed:modified:hello.txt(绿色的)

    • 提交本地库git commit -m "second commit" hello.txt,[master b205e79] second commit, b205e79第二次提交的版本号。1 file changed, 1 insertion(+),1 deletion(-)。 一个文件被改变,一行内容被插入,一行内容被删除。(Git是以行为单位维护的,先删除原先的行再插入新的!!),再次查看本地库状态,On branch master,nothing to commit, working tree clean和第一次提交的显示一样,又是干净的了。

    • 查看版本信息git reflog 就会有两个版本信息了

      b205e79 (HEAD -> master) HEAD@{0}: commit: second commit,head当前指针指向第二个版本,cat hello.txt查看文件是有修改后的。20eda81 HEAD@{1}: commit (initial): first commit。

  8. 历史版本⭐

    git reflog git log

    • 查看日志

      b205e79 (HEAD -> master) HEAD@{0}: commit: second commit 当前指针在第二个版本

      20eda81 HEAD@{1}: commit (initial): first commit

    • 版本穿越(例如我感觉文件里面添加的2不太好,要回到一号版本去),git reset --hard 20eda81

      HEAD is now at 20eda81 first commit

    • 查看日志

      20eda81 (HEAD -> master) HEAD@{0}: reset: moving to 20eda81 这里也生成了一个日志

      b205e79 HEAD@{1}: commit: second commit

      20eda81 (HEAD -> master) HEAD@{2}: commit (initial): first commit 当前指针在第一个版本

    • 查看文件cat hello.ext

      文件中第二次在第一行添加的2不见了,回到了第一次的版本,即工作区的文件回到了第一次版本的内容!

    底层不是复制保存了很多副本,而是在本地库中保持了很多日志信息版本信息,调用HEAD指针指向不用的版本


3. Git分支操作

分支⭐:在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是 一个单独的副本。(分支底层其实也是指针的引用)

好处:

  • 同时并行推进多个功能开发,提高开发效率。
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

分支的命令:

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上
git branch -d 分支名删除分支
  1. 查看分支 git branch -v

    *master(绿色) 20eda81 first commit

  2. 创建分支,例如 git branch hot-fix 增加热修分支

    再次查看分支:hot-fix 20eda81 first commit,*master(绿色) 20eda81 first commit 两个了!

  3. 切换分支 git checkout hot-fix (输入命令的上一行最后面master变成了hot-fix)

    再次查看分支:*hot-fix(绿色) 20eda81 first commit,master 20eda81 first commit

    在hot-fix分支下修改文件,在第二行加几个3,修改后一样要进行git add hello.txtgit commit -m "hot-fix first commit" hello.txt 。查看版本信息 :af41acb (HEAD -> hot-fix) HEAD@{0}: commit: hot-fix first commit

    如果再切换到master分支,则在hot-fix分支修改的内容,在master分支工作区是看不到的。

  4. 合并分支⭐

    • 正常合并

      切换到master分支,执行git merge hot-fix 把指定的分支合并到当前分支上!!

      Updating 20eda81…af41acb Fast-forward

      hello.txt | 2 ± 1 file changed, 1 insertion(+), 1 deletion(-),一行插入,一行删除,则修改了一行。

      这时master分支的工作区文件能看到在hot-fix分支在第二行添加的3的信息了!!

    • 冲突合并

      • 冲突的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。

      • 模拟冲突:在master分支hello.txt第三行添加4 add commit,在hot-fix分支hello.txt第三行添加5 add commit

      • 切回master分支合并:执行git merge hot-fix,就会冲突了,看下面的日志:

        Auto-merging hello.txt CONFLICT (content): Merge conflict in hello.txt (合并冲突在hello.txt文件中)

        Automatic merge failed; fix conflicts and then commit the result. (自动合并失败)

        输入命令的上一行最后面master变成了master|MERGING,查看状态 both modified: hello.txt (红色)

      • 需要我们手动合并,打开hello.txt文件

        hello git sutong
        hello git sutong 33333
        <<<<<<< HEAD  (HEAD到等号之间是当前分支的代码)
        hello git sutong 44444
        =======       (等号到hot-fix之间是要合并的代码!!)
        hello git sutong 55555
        >>>>>>> hot-fix
        hello git sutong
        hello git sutong
        

        手动合并(例如我们想要hot-fix分支里面的,合并完要add,commit提交的时候不能带文件名!!):

        hello git sutong
        hello git sutong 33333
        hello git sutong 55555
        hello git sutong
        hello git sutong
        

        合并只会修改master分支hello.txt文件内容,hot-fix不会变。(最后解决冲突的时候在我们的分支里面解决)

        master、hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由 HEAD 决定的。所以创建分支的本质就是多创建一个指针。 HEAD 如果指向 master,那么我们现在就在 master 分支上。 HEAD 如果指向hot-fix,那么我们现在就在 hot-fix 分支上。所以切换分支的本质就是移动 HEAD 指针。

        HEAD指针指向的是当前分支,分支指针指向的是当前分支在的具体版本。


4. Git团队协作机制

如果想要团队协作机制,则需要遇到代码托管中心了,即GitHub

  1. 团队内协作
    在这里插入图片描述

  2. 跨团队协作
    在这里插入图片描述


5. GitHub操作

  1. 创建远程库

    登录Github-> 右上角加号点击New Repository -> 填写远程库名字(一般和本地库名称一样)选择公有库/私有库 填写描述

    -> create repository -> 有两个连接 https/SSH

  2. 远程仓库操作命令

命令名称作用
git remote -v查看当前所有远程地址别名
git remote add 别名 远程地址起别名
git push 别名 分支推送本地分支上的内容到远程仓库
git clone 远程库地址将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名将远程仓库对于分支最新内容拉下来后与 当前本地分支直接合并

使用命令:

  1. 起别名,远程库链接太长了起个别名代替(别名一般和库名一致)

    git remote add git-demo https://github.com/Mrzhugq/git-demo.git

  2. 查看当前所有远程地址别名 git remote -v

    git-demo https://github.com/Mrzhugq/git-demo.git (fetch) push,clone,pull都可以用这个别名

    git-demo https://github.com/Mrzhugq/git-demo.git (push)

  3. 推送到远程库,最小单位的分支 ,git push git-demo master (慢)

    第一次的话会弹出一个窗口,登录GitHub,选择右边的Token,要使用token登录(怎么创建token百度),根据提示输入用户名密码,最后显示几个100%就成功了,可能很慢多试几次!
    在这里插入图片描述

  4. 拉取远程库

    如果我们在GitHub上直接修改了文件,比如在hello.txt文件最后一行加了几个6。

    这样这时远程库和本地库不是同步的了,怎么更新本地库代码呢(即如果有他人push,则需要获取最新版本)

    执行命令git pull git-demo master 也是分支位单位,也是很慢。最后会显示几个文件被改变,改变了几行。在工作区打开hello.txt就能看到在远程库修改的了!

  5. 克隆远程库到本地库

    新建个目录,D:\Learning\Git-Space\git-clone ,执行git clone https://github.com/Mrzhugq/git-demo.git,克隆不需要登录账号。git-clone目录下就会创建git-demo文件夹,里面会有.git文件,还有hello.txt。

    小结:clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名(默认别名的origin)

  6. 团队协作⭐

    clone只需要链接,pull需要加入团队(需要创建库的人进行授权)

    团队内协作,需要授权:进入库 -> 库右边的setting -> collaborators -> add people,输入用户名/邮箱都能搜到 -> 复制pending invite即邀请函通过短信发给要授权的人 -> 授权的人登录他的账号接受邀请就行了 -> 被授权的人就能看到对应的远程库了,就能push了(如果被授权的人push了,我们就需要pull拉取下来,更新我们的本地库!!)

    跨团队协作:只需要把本团队远程库的对应链接发给第三方团队(或者直接搜),第三方团队在浏览器输入连接打开远程库 -> 点库右上角的fork -> 第三方的团队的账号上就有了对应的远程库 -> 就可以对这个远程库进行修改了 -> clone -> 修改 -> push -> 点击库上面的Pull Requests - new pull request - create pull request -> 可以编写commit描述,也写一段话write -> 点右下角创建即可

    登录本团队的账号刷新,则在库的上面Pull Requests会有一个请求 -> 点开查看 -> 还可以给第三方团队写一段话write(两个团队可以随时聊天) -> 审核代码 -> 点下面的Merge pull request 合并申请 -> confirm merge确定合并 -> 在本团队的远程库中就能看到第三方团队修改的代码了!(有冲突手动解决)

  7. SSH免密登录

    C:\Users\[user]\ 下执行 ssh-keygen -t rsa -C 2081140153@qq.com 按三次回车,则会生成.ssh文件夹,打开公钥id_rsa.pub文件复制,登录GitHub -> settings -> SSH and GPG keys -> new SSH key -> 起个名字,复制到下面就行了add

    这样本台电脑就绑定这个GitHub账号了,下次使用库对应的SSH链接 git@github.com:Mrzhugq/git-demo.git,pull,push就不需要登录了。


6. IDEA集成Git

我的IDEA版本的2020.1

  1. 设置忽略文件(一次就行),例如IDEA中的.idea文件夹,.iml文件等,这些与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。

    • 创建忽略文件 git.ignore,建议放到用户的家目录下,即C:\Users\[user]\

      (但我的用户名有的中文,所以我放到安装目录下了)

      # Compiled class file
      *.class# Log file
      *.log# BlueJ files
      *.ctxt# Mobile Tools for Java (J2ME)
      .mtj.tmp/# Package Files #
      *.jar
      *.war
      *.nar
      *.ear
      *.zip
      *.tar.gz
      *.rar# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
      hs_err_pid*.classpath
      .project
      .settings
      target
      .idea
      *.iml
      
    • .gitconfig 文件中引用忽略配置文件(也在家目录中)

      [user]name = sutongemail = 2081140153@qq.com
      [core]excludesfile = D:/Program Files/MyGit/git.ignore
      

      使用正斜线/,不要使用 \ 反斜线

  2. 定位Git程序(一次就行)

    setting -> version control -> git -> path to Git… (配置到bin下的git.exe)

  3. Git初始化

    菜单栏VCS -> inport into Version Control -> Create Git Repository ->默认选择的就是项目的根目录,直接点ok(在目录下就会产生.git文件夹了!) -> 这时文件都变红了,表示未被追踪

  4. 添加暂存区

    单个文件右键Git -> Add (文件变绿了)

    还可以选择当前项目右键Git -> Add 把整个项目中文件都添加暂存区(除了上面所排除的)

  5. 提交本地库

    当前项目右键Git -> Commit Driectory -> 可以看到要提交的文件,下面可以写commit message -> 提交完文件就变成了原来正常的颜色了

  6. 切换版本

    先修改文件,产生多个版本,则文件变成蓝色了,然后add commit,commit的时候可以点看文件看修改前后的对比。

    点右下角的Git -> Log 可以看到版本信息 -> 左侧的黄色指针代表分支信息,中间的的绿色的指针代表版本信息
    在这里插入图片描述

    想要切换版本只需要在中间,选择要切换版的版本,右键 -> Reset Current Branch to Here… -> 根据需要选择对应的回退形式

    (或者:VCS -> Git -> Reset HEAD… -> Reset Type: 选择回退形式,To Commit: 填写要回退到的具体版本号 -> Reset)
    在这里插入图片描述

  7. 创建分支

    当前项目右键Git -> Repository -> Branches… -> New Branch

    或者,在IDEA右下角点击当前分支 -> New Branch

    需要切换分支点IDEA右下角的当前分支 -> 选择要切换的分支 -> Checkout

  8. 合并分支

    • 正常合并

      点IDEA右下角的当前分支 -> 选择要合并的分支 -> Merge into Current

    • 冲突合并

      合并时冲突,则会弹出一个Conflicts窗口,显示冲突的文件,选中点右边的Merger…,进入手动合并的窗口,左侧是master分支的代码,右侧是hor-fix的代码,中间是没有冲突的代码!如果想要master的代码则需要点,然后直接点apply即可,自动add commit提交到本地库。


7.IDEA操作GitHub

  1. 设置GitHub账号(Gitee则需要下载插件)

    Settings -> Version Control -> GitHub -> 右上角加号 -> 使用token登录

  2. push到远程库(IDEA帮我们在绑定的账号下创建对应的远程库)

    VCS -> Import Version Control -> Share Project on Github -> Repository name: 输入远程库的名字(一般和本地库一样),Remote:创建别名(也叫本地库名),Description: 描述信息(可以不填)

    会帮我们先创建远程库,再把代码push

  3. 修改完代码要重新,add commit push

    push:项目右键 -> Git -> Repository -> Push… -> 默认使用https链接的别名,建议使用SSH链接(免密登录) -> Push
    在这里插入图片描述

  4. 拉取远程库,pull

    push:项目右键 -> Git -> Repository -> Pull… :
    在这里插入图片描述

    注意:push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致, push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程 库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!

  5. 克隆远程库代码到本地,clone

    打开IDEA -> Get from Versio Control -> 选择Git,输入URL(Https/SSH)都行 -> clone (只clone你当时push的分支)


8. Gitee

中文网站,使用方式和GitHub一样

使用Gitee服务器再国内,可以使用https的链接。

Idea默认不带Gitee插件,需要自己安装Gitee插件。

  1. 绑定Gitee

    Settings -> Version Control -> Gitee -> 右上角加号 -> 可以使邮箱密码登录!

  2. add commit 和GitHub一样

  3. push

    • 帮我们创建远程库

      VCS -> Import Version Control -> Share Project on Gitee -> Repository name,Remote,Description

    • push到已有的库

      项目右键 -> Git -> Repository -> Push… -> 点默认的别名,Define Remote新建别名,输入Gitee库链接 -> Push

  4. pull

    项目右键 -> Git -> Repository -> Pull… -> Remote 套选择上面新建的Gitee的别名 -> Pull

  5. clone

    和GitHub一样

  6. Gitee导入GitHub项目⭐⭐

    右上角加号新建仓库 -> 右上角导入已有仓库 -> 输入再GitHub上库的Https的链接,默认会填充远程库名 -> 导入

    如果GitHUb中远程库发送修改,Gitee也可以强转刷新进行同步 -> 点击远程库标题右边的圆圈,强转同步

    同步到Gitee的话进行,再用这个链接进clone就比GitHub快多了!!!


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

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

相关文章

企业权限管理(七)-权限操作

1. 数据库与表结构 1.1 用户表 1.1.1 用户表信息描述 users 1.1.2 sql语句 CREATE TABLE users( id varchar2(32) default SYS_GUID() PRIMARY KEY, email VARCHAR2(50) UNIQUE NOT NULL, username VARCHAR2(50), PASSWORD VARCHAR2(50), phoneNum VARCHAR2(20), STATUS INT )…

SolidWorks二次开发系列入门100篇之98、99-分割、保存零件中的实体

从这四张图&#xff0c;看了来这个保存实体和分割图标是一样的&#xff0c;可能只是选项不一样&#xff0c;所以这里一起写了&#xff0c;不浪费时间。 经过了几个小时的研究&#xff0c;没搞定。大哭 CreateSaveBodyFeature这个没有api例子&#xff0c;2021上有例子&#xff…

使用Java根据表名导出与导入Sql

前言 很粗糙啊&#xff0c;有很多可以优化的地方&#xff0c;而且也不安全&#xff0c;但是临时用还是OK的&#xff0c;我这个是公司里面的单机软件&#xff0c;不联网。 嗨&#xff01;我是一名社交媒体增长黑客&#xff0c;很高兴能帮助您优化和丰富关于批量作业导出和导入…

nginx文件共享、服务状态和location模块的配置介绍

一.文件共享功能 1.清空html目录下文件并新建你要共享的文件 2.修改nginx.conf文件&#xff0c;开启autoindex功能 3.测试 二.状态模块 1.修改nginx.conf文件 2.测试 &#xff08;1&#xff09;使用刚才定义的IP/nginx_status进行访问 &#xff08;2&#xff09;status参…

贝锐蒲公英:快速搭建连锁门店监控体系,赋能企业高效管理

随着国民生活水平的提高和零售场景的变革&#xff0c;消费者对于餐饮类目的消费支出不断增加&#xff0c;线下社区生鲜商超作为下沉市场最主要的消费场景之一&#xff0c;蕴藏着巨大价值机会。 对于线下连锁生鲜超市而言&#xff0c;连锁门店多、员工多&#xff0c;门店管理时会…

FreeRTOS( 任务与中断优先级,临界保护)

资料来源于硬件家园&#xff1a;资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、中断优先级 1、NVIC基础知识 2、FreeRTOS配置NVIC 3、SVC、PendSV、Systick中断 4、不受FreeRTOS管理的中断 5、STM32CubeMX配置 二、任务优先级 1、任务优先级说明 2、任务…

数据结构笔记--链表经典高频题

目录 前言 1--反转单向链表 2--反转单向链表-II 3--反转双向链表 4--打印两个有序链表的公共部分 5--回文链表 6--链表调整 7--复制含有随机指针结点的链表 8--两个单链表相交问题 前言 面经&#xff1a; 针对链表的题目&#xff0c;对于笔试可以不太在乎空间复杂度&a…

SD-MTSP:蜘蛛蜂优化算法SWO求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&#xff0c;具有搜索速度快&#xff0c;求解精度高的优势。蜘蛛蜂优化算…

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台

背景&#xff1a;新项目准备用SSO来整合之前多个项目的登录和权限&#xff0c;同时引入网关来做后续的服务限流之类的操作&#xff0c;所以搭建了下面这个系统雏形。 关键词&#xff1a;Spring Gateway, Spring Security, JWT, OAuth2, Nacos, Redis, Danymic datasource, Jav…

竞赛项目 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景&#x1f6a9; 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率&#xff08;Accuracy&#xff09;3.2 精确率(Precision)和召回率(Recall)3.3 平均精…

ASP.NET Core中间件记录管道图和内置中间件

管道记录 下图显示了 ASP.NET Core MVC 和 Razor Pages 应用程序的完整请求处理管道 中间件组件在文件中添加的顺序Program.cs定义了请求时调用中间件组件的顺序以及响应的相反顺序。该顺序对于安全性、性能和功能至关重要。 内置中间件记录 内置中间件原文翻译MiddlewareDe…

【容器化】Oceanbase镜像构建及使用

通过该篇文章可以在国产X86-64或ARM架构上构建商业版oceanbase&#xff0c;只需要替换pkg安装包即可。下面截图主要以国产X86-64安装为例&#xff0c;作为操作截图&#xff1a; 镜像构建目录说明 pkg:用来存放安装包及脚本&#xff0c;抛出rpm其他是脚步&#xff0c;这些rpm包…

直接在html中引入Vue.js的cdn来实现Vue3的组合式API

Vue3的组合式API是使用setup函数来编写组件逻辑的。setup函数是Vue3中用于替代Vue2的选项API&#xff08;如data、methods等&#xff09;的一种方式。在setup函数中&#xff0c;你可以访问到一些特殊的响应式对象&#xff0c;并且可以返回一些可以在模板中使用的数据、方法等。…

Python编程——谈谈函数的定义、调用与传入参数

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;Python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 目录 一、理解函数 二、函数的定义 1、语法 2、定义一个…

【Linux】内核宏定义解释postcore_initcall,arch_initcall,subsys_initcall

postcore_initcall postcore_initcall(pcibus_class_init) 是一个宏&#xff0c;用于在Linux内核初始化过程中注册一个后期初始化函数。 这个宏的含义如下&#xff1a; postcore_initcall 是一个宏定义&#xff0c;用于指定注册的函数在内核初始化的哪个阶段执行。 pcibus_cl…

deleteDatabase失败处理

准备清理环境时发现deleteDatabase告警&#xff0c;如下图 SYSorcl> startup; ORACLE instance started. Total System Global Area 1.6106E10 bytes Fixed Size 8639712 bytes Variable Size 2449476384 bytes Datab…

CentOS-6.3安装MySQL集群

安装要求 安装环境&#xff1a;CentOS-6.3 安装方式&#xff1a;源码编译安装 软件名称&#xff1a;mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz 下载地址&#xff1a;http://mysql.mirror.kangaroot.net/Downloads/ 软件安装位置&#xff1a;/usr/local/mysql 数据存放位…

HTTP代理授权方式介绍

在网络爬虫过程中&#xff0c;我们经常需要使用HTTP代理来实现IP隐藏、突破限制或提高抓取效率。而为了确保代理的正常使用&#xff0c;并避免被滥用&#xff0c;代理服务商通常会采用授权方式。在本文中&#xff0c;我们将介绍几种常见的HTTP代理授权方式&#xff0c;以帮助你…

Tomcat部署及优化

Tomcat概述 Tomcat 是 Java 语言开发的&#xff0c;Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器&#xff0c;是 Apache 软件基金会的 Jakarta 项目中的一个 核心项目&#xff0c;由 Apache、Sun 和其他一些公司及个人共同开发而成。在中小型系统和并发访问用户不是…

自建hexo博客并将原有的文章发布其上

1、保存粘贴到memo9中的博客文章&#xff0c;并将txt转换成word文档 varPowerShellPath, CommandLine: string; // , ScriptPath begin//save to txtMemo9.Lines.SaveToFile(test.txt);memo10.Lines.SaveToFile(txt2word.ps1);//save as docxPowerShellPath : powershell.exe…