github学习笔记

news2024/11/24 14:53:36

目录

github简介

唯一版本库是什么意思

hub的含义什么?

github功能介绍

登录、注册

GitHub 术语解释

Git 初体验及其常用命令介绍

git中的两个分支是否有冲突是什么意思,这是因为什么导致的

利用 SSH 完成 Git 与 GitHub 的绑定

通过 Git 将代码提交到 GitHub

git push origin master解读这条命令

git remote -v 解释这条命令

$ git branch --set-upstream-to=origin/master master fatal: branch 'master' does not exist 为什么会出现这种报错

解决github链接不稳定,访问慢的问题

github简介

GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。

唯一版本库是什么意思

唯一版本库通常指的是仅有一个主版本库(Main Repository)所有开发人员都从该主版本库中进行代码的拉取、修改和推送,从而保证代码的唯一性和一致性

hub的含义什么?

"Hub"是英文单词,表示“中心”、“枢纽”的意思。在计算机领域中,它经常被用来描述一个中央集中的平台或系统,它可以作为多个其他系统的连接点和交互点,用于协调和管理它们之间的数据和通信。在软件开发中,例如GitHub、Docker Hub等,它们都可以被看作是代码或应用程序的中央存储库或交换平台,可以让开发者和用户轻松地共享和协作。

github功能介绍

在团队协作中,使用唯一版本库可以避免代码冲突、版本管理混乱等问题。同时,唯一版本库也可以提高代码的可追溯性和质量,方便项目的管理和维护。常见的唯一版本库工具包括Git、SVN等。

目前,其托管版本数量非常之多,而且其中不乏知名开源项目,例如 Ruby on Rails、jQuery、python 等。

Github 拥有超过千万的开发者用户。随着越来越多的应用程序转移到了云上,Github 已经成为了管理软件开发以及发现已有代码的首选方法。

如前所述,作为一个分布式的版本控制系统,在 Git 中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。

GitHub 项目本身自然而然的也在 GitHub 上进行托管,只不过在一个私有的,公共视图不可见的库中。开源项目可以免费托管,但私有库则并非如此。在 GitHub,用户可以通过Explore轻而易举地找到海量的开源代码。因此,称之为程序员的 圣地 也不过吧?

登录、注册

这很简单,看得懂一点英文和懂一些登录流程就可以了。

GitHub 术语解释

为了大家进一步了解和使用 GitHub,我们一起来看看 GitHub 的常用术语,也可以说是基本概念:

Repository:简称Repo,可以理解为“仓库”,我们的项目就存放在仓库之中。也就是说,如果我们想要建立项目,就得先建立仓库;有多个项目,就建立多个仓库。

Issues:可以理解为“问题”,举一个简单的例子,如果我们开源一个项目,如果别人看了我们的项目,并且发现了bug,或者感觉那个地方有待改进,他就可以给我们提出Issue,等我们把Issues解决之后,就可以把这些Issues关闭;反之,我们也可以给他人提出Issue。

Star:可以理解为“点赞”,当我们感觉某一个项目做的比较好之后,就可以为这个项目点赞,而且我们点赞过的项目,都会保存到我们的Star之中,方便我们随时查看。在 GitHub 之中,如果一个项目的点星数能够超百,那么说明这个项目已经很不错了。

Fork:可以理解为“拉分支”,如果我们对某一个项目比较感兴趣,并且想在此基础之上开发新的功能,这时我们就可以Fork这个项目,这表示复制一个完成相同的项目到我们的 GitHub 账号之中,而且独立于原项目。之后,我们就可以在自己复制的项目中进行开发了。

Pull Request:可以理解为“提交请求”,此功能是建立在Fork之上的,如果我们Fork了一个项目,对其进行了修改,而且感觉修改的还不错,我们就可以对原项目的拥有者提出一个Pull请求,等其对我们的请求审核,并且通过审核之后,就可以把我们修改过的内容合并到原项目之中,这时我们就成了该项目的贡献者。

Merge:可以理解为“合并”,如果别人Fork了我们的项目,对其进行了修改,并且提出了Pull请求,这时我们就可以对这个Pull请求进行审核。如果这个Pull请求的内容满足我们的要求,并且跟我们原有的项目没有冲突的话,就可以将其合并到我们的项目之中。当然,是否进行合并,由我们决定。

Watch:可以理解为“观察”,如果我们Watch了一个项目,之后,如果这个项目有了任何更新,我们都会在第一时候收到该项目的更新通知。

Gist:如果我们没有项目可以开源或者只是单纯的想分享一些代码片段的话,我们就可以选择Gist。不过说心里话,如果不翻墙的话,Gist并不好用。

Git 初体验及其常用命令介绍

git init其作用就是初始一个 Git 仓库。

此外,在这里还要强调一点,那就是:在我们进行任何的git操作之前,我们都得先切换到 Git 的仓库目录。

换言之,我们得到先进入到(我们定义的)Git 仓库的最顶层文件目录下,然后从此目录中进入 Git Bash,这样之后的操作才能顺利进行。

第 1 个命令:git status

 

第 2 个命令:git init

在我们初始化仓库之后,demo目录已经成为一个 Git 仓库了,并且默认进入 Git 仓库的master分支,即主分支。在这里,我们需要注意的是Untracked fies提示,它表示demo仓库中有文件没有被追踪,并提示了具体没有被追踪的文件为hit.txt,还提示了我们可以使用git add命令操作这个文件,简直不要太好。

 

 

第 3 个命令:git add

在命令行窗口的光标处,输入git add hit.txt命令,将hit.txt文件添加到 Git 仓库

 

第 4 个命令:git commit

在命令行窗口的光标处,输入git commit -m "text commit"命令,将hit.txt文件提交到 Git 仓库

我们成功将文件hit.txt提交到了 Git 仓库,其中commit表示提交,-m表示提交信息,提交信息写在双引号""内。接下来,再输入git status命令查看仓库状态:

第 5 个命令:git log

在命令行窗口的光标处,输入git log"命令,打印 Git 仓库提交日志

如上图所示,显示了我们的提交记录,提交记录的内容包括Author提交作者、Date提交日期和提交信息。

通过以上的操作,我们会发现一个现象,那就是:在每个git操作之后,我们基本都会输入git status命令,查看仓库状态。

这也从侧面说明了git status命令使用的频率之高,也建议大家在操作 Git 仓库的时候多使用git status命令,这能帮助我们实时了解仓库的状态,显然非常有用。

第 6 个命令:git branch

在命令行窗口的光标处,输入git branch命令,查看 Git 仓库的分支情况:

显示了仓库demo中的分支情况,现在仅有一个master分支,其中master分支前的*号表示“当前所在的分支”,例如* master就意味着我们所在的位置为demo仓库的主分支。输入命令git branch a,再输入命令git branch,结果如下图所示:

如上图所示,我们创建了一个名为a的分支,并且当前的位置仍然为主分支。

 

(分支是很容易被创建的)

第 7 个命令:git checkout

就像我这里可好,项目里只有一个分支叫main,但是自己一直因为是master

 

 

在命令行窗口的光标处,输入git checkout a命令,切换到a分支:

如上图所示,我们已经切换到a分支啦!也可以通过命令git branch查看分支情况:

在这里,我们还有一个更简单的方法来查看当前的分支,即通过观察上图中用红色框圈起来的部分。此外,我们也可以在创建分支的同时,直接切换到新分支,命令为git checkout -b,例如输入git checkout -b b命令:

如上图所示,我们在a分支下创建b分支(b为a的分支),并直接切换到b分支。

第 8 个命令:git merge

切换到master分支,然后输入git merge a命令,将a分支合并到master分支:

(合并过程就是先切换一下当前分支,之后使用Git merge a(就是自己想要合并的分支,自己选))

我们已经将a分支合并到主分支啦!此外,在这里需要注意一点,那就是:在合并分支的时候,要考虑到两个分支是否有冲突,如果有冲突,则不能直接合并,需要先解决冲突;反之,则可以直接合并。

git中的两个分支是否有冲突是什么意思,这是因为什么导致的

在 Git 中,如果两个分支都修改了同一个文件的同一部分,并且尝试将它们合并在一起,就会发生冲突。这种情况下,Git 无法自动决定应该保留哪个更改,因此需要手动解决冲突。

解决冲突通常需要打开包含冲突的文件,并手动编辑它们,以删除冲突并选择要保留的更改。然后,可以将文件标记为已解决冲突,并将更改提交到 Git 中,以表示解决了冲突。

冲突通常发生在多个人在同一个代码库中工作,并对相同的文件或代码进行更改时。如果没有正确的协调和通信,就会导致冲突。因此,在使用 Git 进行协作开发时,需要密切关注其他人的更改,并努力避免同时更改相同的代码。

第 9 个命令:git branch -d & git branch -D

在命令行窗口的光标处,输入git branch -d a命令,删除a分支:

 

我们已经将分支a删除啦!不过有的时候,通过git branch -d命令可以出现删除不了现象,例如分支a的代码没有合并到主分支等,这时如果我们一定要删除该分支,那么我们可以通过命令git branch -D进行强制删除。

第 10 个命令:git tag

在命令行窗口的光标处,输入git tag v1.0命令,为当前分支添加标签:

如上图所示,我们为当前所在的a分支添加了一个v1.0标签。通过命令git tag即可查看标签记录:

 

 

如上图所示,显示了我们添加标签的记录。通过命令git checkout v1.0即可切换到该标签下的代码状态:

利用 SSH 完成 Git 与 GitHub 的绑定

现在,我们已经对 GitHub 有了一定的了解,包括创建仓库、拉分支,或者通过Clone or download克隆或者下载代码;我们也下载并安装了 Git,也了解了其常用的命令。

But,无论是 GitHub,还是 Git,我们都是单独或者说是独立操作的,并没有将两者绑定啊!也就是说,我们现在只能通过 GitHub 下载代码,并不能通过 Git 向 GitHub 提交代码。

体验通过 Git 向 GitHub 提交代码的能力。不过在这之前,我们需要先了解 SSh(安全外壳协议),因为在 GitHub 上,一般都是通过 SSH 来授权的,而且大多数 Git 服务器也会选择使用 SSH 公钥来进行授权,所以想要向 GitHub 提交代码,首先就得在 GitHub 上添加 SSH key配置。

第 1 步:生成 SSH key

我们要想生成SSH key,首先就得先安装 SSH,对于 Linux 和 Mac 系统,其默认是安装 SSH 的,而对于 Windows 系统,其默认是不安装 SSH 的,不过由于我们安装了 Git Bash,其也应该自带了 SSH. 可以通过在 Git Bash 中输入ssh命令,查看本机是否安装 SSH:

 如上图所示,此结果表示我们已经安装 SSH 啦!接下来,输入ssh-keygen -t rsa命令,表示我们指定 RSA 算法生成密钥,然后敲三次回车键,期间不需要输入密码,之后就就会生成两个文件,分别为id_rsa和id_rsa.pub,即密钥id_rsa和公钥id_rsa.pub. 对于这两个文件,其都为隐藏文件,默认生成在以下目录:

Linux 系统:~/.ssh

Mac 系统:~/.ssh

Windows 系统:C:\Documents and Settings\username\\.ssh

Windows 10 ThinkPad:C:\Users\think\.ssh

密钥和公钥生成之后,我们要做的事情就是把公钥id_rsa.pub的内容添加到 GitHub,这样我们本地的密钥id_rsa和 GitHub 上的公钥id_rsa.pub才可以进行匹配,授权成功后,就可以向 GitHub 提交代码啦!

第 2 步:添加 SSH key

如上图所示,进入我们的 GitHub 主页,先点击右上角所示的倒三角▽图标,然后再点击Settins,进行设置页面;点击我们的头像亦可直接进入设置页面:

 如上图所示,进入我们的 GitHub 主页,先点击右上角所示的倒三角▽图标,然后再点击Settins,进行设置页面;点击我们的头像亦可直接进入设置页面:

 如上图所示,进入Settings页面后,再点击SSH and GPG Keys进入此子界面,然后点击New SSH key按钮:

 如上图所示,我们只需要将公钥id_rsa.pub的内容粘贴到Key处的位置(Titles的内容不填写也没事),然后点击Add SSH key 即可。

 如上图所示,我们只需要将公钥id_rsa.pub的内容粘贴到Key处的位置(Titles的内容不填写也没事),然后点击Add SSH key 即可。

第 3 步:验证绑定是否成功

在我们添加完SSH key之后,也没有明确的通知告诉我们绑定成功啊!不过我们可以通过在 Git Bash 中输入ssh -T git@github.com进行测试:

如上图所示,此结果即为Git 与 GitHub 绑定成功的标志。 

通过 Git 将代码提交到 GitHub

到这一步我们已经完成了本地 Git 与远程 GitHub 的绑定,这意味着我们已经可以通过 Git 向 GitHub 提交代码啦!

但是在进行演示之前,我们需要先了解两个命令,也是我们在将来需要经常用到的两个命令,分别为 push 和 pull 。

push:该单词直译过来就是“推”的意思,如果我们本地的代码有了更新,为了保持本地与远程的代码同步,我们就需要把本地的代码推到远程的仓库,代码示例:

push:该单词直译过来就是“推”的意思,如果我们本地的代码有了更新,为了保持本地与远程的代码同步,我们就需要把本地的代码推到远程的仓库,代码示例:

git push origin master

其实就是把你的本地仓库中的内容提交到中央仓库

pull:该单词直译过来就是“拉”的意思,如果我们远程仓库的代码有了更新,同样为了保持本地与远程的代码同步,我们就需要把远程的代码拉到本地,代码示例:

git pull origin master

此外,在之前我们讲到过pull request,在这里,估计大家就能更好的理解了,它表示:如果我们fork了别人的项目(或者说代码),并对其进行了修改,想要把我们的代码合并到原始项目(或者说原始代码)中,我们就需要提交一个pull request,让原作者把我们的代码拉到 ta 的项目中,至少对于 ta 来说,我们都是属于远程端的。

一般情况下,我们在push操作之前都会先进行pull操作,这样不容易造成冲突。

提交代码

对于向远处仓库(GitHub)提交代码,我们可以细分为两种情况:

第一种:本地没有 Git 仓库,这时我们就可以直接将远程仓库clone到本地。通过clone命令创建的本地仓库,其本身就是一个 Git 仓库了,不用我们再进行init初始化操作啦,而且自动关联远程仓库。我们只需要在这个仓库进行修改或者添加等操作,然后commit即可

首先,进入 GitHub 个人主页:

进入mybatis-tutorial项目后,点击Clone or download,复制上图所示的地址链接。然后,进入我们准备存储 Git 仓库的目录,例如下面我们新建的GitRepo目录, 从此目录进入 Git Bash:

接下来,输入

git clone https://github.com/guobinhit/mybatis-tutorial.git 

命令,其中clone后面所接的链接为我们刚刚复制的远程仓库的地址:

我们已经把远程的mybatis-tutorial仓库clone到本地啦!下面,我们看看clone到本地的仓库内容与远程仓库的内容,是否完全一致:

如上图所示,显示我们已经把远程仓库mybatis-tutorial的内容都clone到本地啦!接下来,为了方便演示,我们直接把之前重构的「史上最简单的 MyBatis 教程」里面的mybatis-demo项目的代码复制过来:

我们已经把mybatis-demo项目里面的主要内容src目录和web目录复制过来啦!接下来,从此目录进入 Git Bash,然后输入git status命令查看仓库状态:

如上图所示,mybatis-tutorial已经是一个 Git 仓库了,而且在输入git status命令后显示有两个文件未被追踪,也就是我们刚刚复制过来的两个文件没有提交。通过「Git 初体验及其常用命令介绍」,我们已经知道了在真正提交代码之前,需要先进行git add操作:

我们已经将src目录add并commit到mybatis-tutorial仓库啦!接下来,我们将web目录提交到仓库,然后输入git log命令查看仓库日志:

再输入git status命令查看仓库状态:

如上图所示,我们已经将mybatis-tutorial仓库里面新添加的两个目录都提交啦!下面,我们将本地仓库的内容push到远程仓库,输入git push origin master命令:

如上图所示,在第一次向远程仓库提交代码的时候,需要输入账号及密码进行验证,验证成功后,显示如下结果:

git push origin master解读这条命令

这条命令是 Git 版本控制系统中的命令,用于将本地的 Git 仓库的 master 分支提交到名为 "origin" 的远程 Git 仓库。

  • git push:将本地的提交推送到远程仓库。
  • origin:远程 Git 仓库的别名,通常是一个 URL 地址。
  • master:本地仓库中的主分支名称,也是要推送到远程仓库的分支名称。

然后,刷新 GitHub 中mybatis-tutorial仓库:

 如上图所示,我们已经将项目(仓库)中新添加的内容提交到了远程仓库。接下来,返回 GitHub 个人主页:

 观察上图,我们会发现一个现象,那就是:mybatis-tutorial仓库的概要中新增了一个Java语言的标记。对于这个仓库语言的标记,其来源有两个,一是在我们创建仓库时就指定语言;二是在我们提交或者新建代码后由 GitHub 自动识别该语言。

以上介绍了向 GitHub 提交代码时的第一种情况,即:

第一种:本地没有 Git 仓库,这时我们可以直接将远程仓库clone到本地。通过clone命令创建的本地仓库,其本身就是一个 Git 仓库了,不用我们再进行init初始化操作啦,而且自动关联远程仓库。我们只需要在这个仓库进行修改或者添加等操作,然后commit即可。

接下来,我们继续介绍向 GitHub 提交代码时可能遇到的第二种情况,即:

第二种:本地有 Git 仓库,并且我们已经进行了多次commit操作

仍然以博主的开源项目为例,不过这次换成springmvc-tutorial项目进行演示。首先,建立一个本地仓库,命名为springmvc-tutorial:

 如上图所示,进入该仓库,进入init初始化操作:

然后,输入

git remote add origin https://github.com/guobinhit/springmvc-tutorial.git

命令,关联远程仓库(在此,默认大家都知道如何获取远程仓库的地址),其中origin为远程仓库的名字:

git remote -v 解释这条命令

git remote -v 是一个 Git 命令,用于显示当前 Git 仓库配置的远程仓库信息。

具体来说,这个命令会列出 Git 仓库中所有的远程仓库,以及它们的 URL 地址,其中 -v 选项表示显示详细信息。例如,输出可能会像这样:

origin  https://github.com/user/repo.git (fetch)
origin  https://github.com/user/repo.git (push)

上面的输出中,origin 是远程仓库的名称,https://github.com/user/repo.git 是远程仓库的 URL 地址。其中 (fetch)(push) 表示这个远程仓库可以被用于拉取数据或者推送数据到远程仓库。

如果想要查看更详细的远程仓库信息,可以尝试使用 git remote show <remote-name> 命令,其中 <remote-name> 是远程仓库的名称。

输入git pull origin main命令,同步远程仓库和本地仓库:  

 再回到本地springmvc-tutorial仓库,看看我们是否已经把远程仓库的内容同步到了本地:

 

如上图所示,显然我们已经把远程springmvc-tutorial仓库里面仅有的README.md文件同步到了本地仓库。接下来,在本地仓库新建一个名为test.txt的测试文件:

输入git add和git commit命令,将文件test.txt添加并提交到springmvc-tutorial仓库:

 

$ git branch --set-upstream-to=origin/master master fatal: branch 'master' does not exist 为什么会出现这种报错

这种报错通常是因为当前本地仓库中不存在 master 分支导致的。这个命令的作用是将本地仓库的 master 分支与远程仓库的 origin/master 分支建立关联,但是如果本地仓库中没有 master 分支,就会出现上述错误。需要先通过 git branch 命令查看本地仓库中有哪些分支,确认是否存在 master 分支,如果不存在,需要通过 git checkout -b master 命令创建一个新的 master 分支再进行关联。

 

解决github链接不稳定,访问慢的问题

方法一:(感觉最稳的,还是建立ssh的连接,这个应该是最稳的)

方法请看上面

方法二:(但是感觉有一个bug,就是下载虽说是快了,但是提交呢?这个没有试过,不敢保证)

gitclone.com

这是我用过最爽最实用功能最全面的一个方式了。gitclone.com是一个提供下载缓存的代码下载网站,使用方法十分简单,只需要在仓库地址前面加上 gitclone.com,就可以使速度提升几倍。

例如要克隆github上仓库地址​​https://github.com/killer-p/ctool.git​​ 只需将地址改为​​https://gitclone.com/github.com/killer-p/ctool.git​​,在命令行中执行​​git clone https://gitclone.com/github.com/killer-p/ctool.git​​,速度直接起飞!芜湖!

gitclone的工作机理是:当开发者第一次经gitclone.com代理clone项目时,gitclone.com异步镜像项目,以后有开发者clone该项目时,就会利用上gitclone.com的本地镜像,而不是从github.com上clone。gitclone.com会在每天夜间与github.com同步。为了解决不断增长的镜像对硬盘资源的需求,gitclone.com采用区块链集群方式扩展,每次的镜像操作都会广播到集群中所有服务器,各服务器可选择生成镜像并登记以便以响应后续的clone请求。同时,gitclone.com还对stackoverflow.com和go get等的加速访问进行了说明,做到“为开发者服务”。
 

参考博客:
https://blog.51cto.com/u_15284525/4746991

还不会使用 GitHub ? GitHub 教程来了!万字图文详解 - 知乎

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

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

相关文章

[ Azure 云计算从业者 | AZ-900 ] Chapter 06 | 认识与了解 Azure 中相关的计算服务

本章节主要内容进行讲解&#xff1a;计算服务中的虚拟机 VM、虚拟机规模集 VMSS、Azure 容器&#xff08;ACI&#xff09;、Azure Kubernetes Service (AKS) 与Azure Functions 本系列已经更新文章列表&#xff08;已更新&#xff09;&#xff1a; [ Azure 云计算从业者 | AZ…

Java 基础进阶篇(十一)—— 泛型与可变参数

文章目录 一、泛型概述二、泛型的定义2.1 泛型类2.2 泛型方法2.3 泛型接口 三、泛型深入3.1 泛型通配符3.2 泛型上下限3.3 案例&#xff1a;定义一个 “所有车量进行比赛” 的方法 四、可变参数 一、泛型概述 泛型是 JDK5 中引入的特性&#xff0c;可以在编译阶段约束操作的数…

从源码全面解析Java 线程池的来龙去脉

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;阿里云专家博主&#x1f4d5;系列专栏&#xff1a;Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码…

二叉树专题

⭐️前言⭐️ 本文主要总结一些常见的二叉树题目&#xff0c;希望读者能够通过这篇文章&#xff0c;来对二叉树有一个更深一步的了解。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&…

【移动端网页布局】flex 弹性布局 ⑥ ( 设置侧轴多行子元素排列方式 | align-content 样式说明 | 代码示例 )

文章目录 一、设置侧轴多行子元素排列方式 : align-content 样式说明1、align-content 样式引入2、align-content 样式属性值 二、代码示例1、代码示例 - 侧轴多行元素从上到下排列2、代码示例 - 侧轴多行元素垂直居中3、代码示例 - 侧轴多行元素平分剩余空间4、代码示例 - 侧轴…

1960-2014年各国二氧化碳排放量(人均公吨数)

1960&#xff0d;2014年各国二氧化碳排放量&#xff08;人均公吨数&#xff09;&#xff08;世界发展指标, 2019年12月更新&#xff09; 1、来源&#xff1a;世界发展指标 2、时间&#xff1a;1960&#xff0d;2014年 3、范围&#xff1a;世界各国 4、指标&#xff1a; 二氧…

C++ STL:set和map的结构及接口使用

目录 一. set和map的简介 1.1 set的简介 1.2 map的简介 二. set的主要接口函数及使用方法 2.1 构造及赋值相关接口函数 2.2 通过迭代器遍历set 2.3 结构修改相关接口函数 2.4 其他主要接口函数 三. map的主要接口函数及使用方法 3.1 构造和赋值相关接口函数 3.2 通…

Midjourney放大招,什么好看唯美高清,统统都是我的

你知道吗&#xff1f;超过99%的人都没有足够出色的肖像照来展现自己的魅力&#xff0c;除非你是那种在网上拥有成千上万张自己肖像照的大明星。但是&#xff0c;好消息来了&#xff01;现在有一个InsightFaceSwap Discord bot&#xff0c;可以帮助你实现这个“不可能完成”的想…

【JavaEE初阶】多线程进阶(五)常见锁策略 CAS synchronized优化原理

文章目录 常见锁策略乐观锁 & 悲观锁轻量级锁 & 重量级锁自旋锁 & 挂起等待锁互斥锁 & 读写锁公平锁 & 非公平锁可重入锁 & 不可重入锁synchronized对应以上的锁策略锁策略中的面试题&#xff1a; CASCAS的介绍CAS如何实现CAS的应用场景CAS的典型问题&…

Excel公式:将日期转换为月份年

Excel公式&#xff1a;将日期转换为月份年 在Excel中&#xff0c;您可以将日期单元格格式化为多种类型的日期格式&#xff0c;但是在某些情况下&#xff0c;您希望将日期转换为文本格式&#xff0c;仅转换为月&#xff0c;年&#xff0c;日或月年&#xff0c;日月或年日。 在本…

Java全栈学习路线总结,科班程序员搬砖逆袭

&#x1f307;文章目录 前言一、前置知识二、 Web前端基础示例&#xff1a;1.文本域2.密码字段 三、后端基础一. Java基础二. 数据库技术三. Web开发技术四. 框架技术五. 服务器部署 四、其他技术五、全栈开发六、综合实践七、学习教程一、前端开发二、后端开发三、数据库开发四…

VUE 学习笔记(三) Vue 渲染流程详解

在 Vue 里渲染一块内容&#xff0c;会有以下步骤及流程&#xff1a; 第一步&#xff0c;解析语法&#xff0c;生成AST 第二步&#xff0c;根据AST结果&#xff0c;完成data数据初始化 第三步&#xff0c;根据AST结果和DATA数据绑定情况&#xff0c;生成虚拟DOM 第四步&…

ESP32设备驱动-Si1145红外接近-紫外 (UV) 指数和环境光传感器驱动

Si1145红外接近-紫外 (UV) 指数和环境光传感器驱动 文章目录 Si1145红外接近-紫外 (UV) 指数和环境光传感器驱动1、Si1145介绍2、硬件准备3、软件准备4、驱动实现1、Si1145介绍 Si1145/46/47 是一款低功耗、基于反射的红外接近、紫外 (UV) 指数和环境光传感器,具有 I2C 数字接…

电脑百度网盘打不开怎么办 电脑百度网盘双击没反应处理方法

有时候我们想要在电脑浏览器上下载一些文件时&#xff0c;打开的文件下载链接有些需要通过百度网盘来存储下载&#xff0c;然而当用户在电脑中安装完百度网盘工具之后&#xff0c;双击想要打开时却总是没反应&#xff0c;对此电脑百度网盘打不开怎么办呢&#xff1f;接下来小编…

Java反射和动态代理

反射 反射允许对封装类的成员变量、成员方法和构造方法的信息进行编程访问 成员变量&#xff1a;修饰符、名字、类型、get/set值 构造方法&#xff1a;修饰符、名字、形参、创建对象 成员方法&#xff1a;修饰符、名字、形参、返回值、抛出的异常、获取注解、运行方法 获取…

【云原生进阶之PaaS中间件】第一章Redis-1.1简介

1 Redis概述 1.1 Redis 简介 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API&#xff0c;可用作数据库&#…

高质量毕业答辩PPT模板+PPT网站

文章目录 前言一、iSlide二、office plus三、优品PPT总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 又是一年毕业季&#xff0c;又到了快要答辩的时候&#xff0c;最近有一些小伙伴找我要毕业答辩PPT模板&#xff0c;本着这不能拒绝啊的心态&…

20230507使用python3批量转换DOCX文档为TXT

20230507使用python3批量转换DOCX文档为TXT 2023/5/7 20:22 WIN10使用python3.11 # – coding: gbk – import os from pdf2docx import Converter from win32com import client as wc """这里需要安转包pywin32com""" # 读取pdf文件文本内容 …

探秘二分查找中的数学奇迹:如何手动求解整数x的平方根

本篇博客会讲解力扣“69. x 的平方根”这道题的解题思路。这是题目链接。 大家先来审下题&#xff1a; 以及示例&#xff1a; 还有提示&#xff1a; 本题常规的思路有&#xff1a;暴力查找、转换成指数和对数、二分查找、牛顿迭代。 转换成指数和对数的方法非常简单&#…

接口自动化测试框架9项必备功能有哪些?你一定不知道

当你准备使用一个接口测试框架或者自造轮子的时候&#xff0c;或许你需要先了解下一个接口自动化测试框架必须具备什么功能。 一、校验   这个很好了解&#xff0c;如果没有校验&#xff0c;单纯的执行接口的话&#xff0c;那就谈不上测试了。所以支持对返回值校验是一个必须…