Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)

2023/02/09 晚

鉴于本篇文章收藏量比较多,那就给大家分享点在实际工作中使用频率最高的工作流命令吧。

场景如下(多人共同开发一个项目):我叫小明,参与了一个名为 chatGPT 的项目,这个 AI 最近很火,就以此作为例子吧。我们组有 4 个同事共同开发这个项目 develop_chatgpt ,这个项目中有一些文件或目录是我们 4 个各自独立负责的,也有几个文件我们 4 个人都需要负责。于是组长新建了一个 git 仓库, 为我们 4 个人各自新建了一个分支,我的分支名称就叫  develop_xiao.ming(个人分支),项目分支名称叫 develop_chatgpt ,现在就开始了我们 4 个人往 develop_chatgpt  这个分支中贡献自己的代码的快乐之旅了。

1. git clone <把仓库地址复制到这儿>

2. git branch -a                 /*先看下当前在哪个分支(一般克隆后都在master分支),顺便复制一下要去的分支*/

3. git checkout <自己要去的分支名称,比如组长分配的分支是 develop_xiao.ming >

4. git branch         /*再确认一下确实已经在自己的分支了*/

5. git pull origin <develop_chatgpt>                /*从项目分支拉取最新的代码到个人分支,然后再进行修改,保证每次修改都是修改的最新代码*/

5. 修改代码

6. git status         /*看看自己修改了哪些文件*/

7. git add <修改了的文件名称>

8. git commit -m "任务号 注释说明"

9. git push origin <组长给分配的分支比如是 develop_xiao.ming>

10. 然后在网页上从 develop_xiao.ming 往 develop_chatgpt 提交一个合并请求。

11. 在开发的群中给组长发消息说,我做了什么修改,并且提交了一个合并请求,请审查,然后代码没有问题,组长就会把修改的代码合并到 develop_chatgpt 分支中去了。

到此一个完整的工作流就结束啦~

为什么提交了合并请求后需要向组长发消息呢,为了让组长尽快合并代码,方便其他同事修改代码的时候可以拉取到最新的代码;因为这个项目是我们 4 个人共同开发的,试想一下 4 个人共同修改一个文件,每个人在修改代码前都需要去 git pull 拉取最新的代码,如果不去拉取最新的代码,那就相当于自己一个人在自己的分支玩儿,别人都已经合并了好几次代码了,你还是在好久之前的代码基础上修改,等你想提交合并请求时,会出现合并冲突问题。这些大家慢慢会有体会的。

最后感谢大家的支持。

一、安装配置Git

1. 注册 GitHub 账号,GitHub:GitHub: Where the world builds software · GitHub。

2. 在 Linux 中安装 git,并生成授信证书。

开发者向 Git 版本库写入最常用到的协议是SSH协议,因为SSH协议使用公钥认证,可以实现无口令访问,而若使用HTTPS协议每次身份认证时都需要提供口令,即要输入GitHub 的账号和密码。

//第一步:安装git
[root@localhost ~]# yum install git//第二步:获取ssh密钥,邮箱是注册github时使用的邮箱。(这里的邮箱跟刚才git官网上注册的一致)
[root@localhost ~]# ssh-keygen -t rsa -C "xxxxxx@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):         //输入保存key的文件名,这个随便写,可以写了keyfilename,不写按回车键它会默认创建在 '/root/.ssh' 下。
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):                     //输入密码,就是你每次提交项目代码时必须要输入密码,不想设置的话,直接按回车到下一步。
Enter same passphrase again:                                     //再次确认密码。
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:07gnUfb1vX9w9XcU6YZf67x+27usXahJossmu4zwdgS xxxxxx@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|                .|
|               o |
|          o   + .|
|    E    = . o +=|
|     .  S . . o.B|
|      .  +    .+*|
|  .  .  o o . +++|
|   o.oo..+ o ooo*|
|   .o.+=+.  o.oOX|
+----[SHA256]-----+
[root@localhost ~]#     //到这里就成功啦~
[root@localhost ~]# git version        //验证一下是否安装成功。
git version 1.8.3.1
[root@localhost ~]# cd /root/.ssh/        
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub
//可以看到生成了一个私钥(id_rsa)和公钥(id_rsa.pub)
[root@localhost .ssh]# vi id_rsa.pub            //打开公钥文件进行复制。

3. 建立和 GitHub 的联系。将 Git 证书配置到 GitHub上,保证 Linux 服务器和 GitHub 之间可以连通。

打开 id_rsa.pub 文件,将里面的所有字符 全部复制 出来,粘贴到如下图所示的地方。

点击 github 网页右上角的用户头像->settings->SSH and GPG keys->New SSH key 

应用场景:需要注意的是,github允许添加多个SSH Keys,假定我们有自己的笔记本和实验室/办公室的电脑,需要将每台电脑的key添加到github,然后可以使用每台电脑往github推送了。

4. 验证是否配置成功。

在 Linux 中执行此命令:ssh git@github.com

看到 You've successfully authenticated,表示配置成功!

//最后一步验证是否配置成功。[root@localhost .ssh]# ssh git@github.com        //执行此命令
The authenticity of host 'github.com (20.205.243.166)' can't be established.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
PTY allocation request failed on channel 0
Hi Username! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
[root@localhost .ssh]# 

5. 连接成功后,需要绑定用户。

如果让当前电脑的所有git操作均使用同一个git账户,该配置只需要做一次之后Linux主机上所有git管理项目生效::
git config --global user.name "xxxxx"
git config --global user.email "xxx@xxx"

主要注意一个问题,因为git是分布式版本控制系统,所以首次安装的时候都会让机器自报家门,(邮箱+名字)这里的邮箱和名字需要你在github官网(www.github.com)上注册你账号信息,为什么要这样做呢?因为你的代码是要联机上传到github代码托管平台上去的,联机操作下文会详说。(当然,如果你不打算联机操作,那么这个邮箱+名字,你可以随意)。

如果想为每个项目单独配置不同的git用户,在每个项目的主目录下执行:
git config user.name "xxxxx"
git config user.email "xxx@xxx"

[root@localhost git_space]# git config --global user.name "******"
[root@localhost git_space]# git config --global user.email "********@***.com"

ps git config  –global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。

二、使用 Git 提交项目文件

分两小节,内容概要:

1. 从本地新建项目,提交上传至 GitHub 。

  • 如果你有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,那么首先需要进入该项目目录中。将尚未进行版本控制的本地目录转换为 Git 仓库;即执行 git init 初始化命令。
$ git init

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。

2. 从 GitHub 上 Clone一个仓库,修改并上传至原仓库。比如说项目组长已经给你创建好仓库和你的分支了,然后你需要提交代码了,这时候就需要克隆了。

如果你想获得一份已经存在了的 Git 仓库的拷贝,比如说,你想为某个开源项目贡献自己的一份力,这时就要用到 git clone 命令。 如果你对其它的 VCS 系统(比如说 Subversion)很熟悉,请留心一下你所使用的命令是"clone"而不是"checkout"。 这是 Git 区别于其它版本控制系统的一个重要特性,Git 克隆的是该 Git 仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。 当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。 事实上,如果你的服务器的磁盘坏掉了,你通常可以使用任何一个克隆下来的用户端来重建服务器上的仓库 (虽然可能会丢失某些服务器端的钩子(hook)设置,但是所有版本的数据仍在,详见 在服务器上搭建 Git )。

克隆仓库的命令是 git clone <url> 。 比如,要克隆 Git 的链接库 libgit2,可以用下面的命令:

$ git clone https://github.com/libgit2/libgit2

这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹, 从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 libgit2 文件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。

如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以通过额外的参数指定新的目录名:

$ git clone https://github.com/libgit2/libgit2 mylibgit

这会执行与上一条命令相同的操作,但目标目录名变为了 mylibgit

复制自:Git - 获取 Git 仓库 (git-scm.com)

2.1 从本地新建项目,提交上传至 GitHub 。

        (1) 在 Linux 本地中新建一个工作目录,作为远程目录的本地副本。

//步骤
[root@localhost ~]# mkdir git_space
[root@localhost ~]# cd git_space/
[root@localhost git_space]# git init                     //把这个目录变成 Git可以管理的仓库
Initialized empty Git repository in /root/git_space/.git/
[root@localhost git_space]# cp ../workspace/callback_example_2/ ./ -r        //将自己写的项目文件复制到本地 git 副本目录下。
[root@localhost git_space]# ls
callback_example_2
[root@localhost git_space]# git add callback_example_2        //git add 后可以跟单个文件、目录。
[root@localhost git_space]# git status                    //查看当前工作区的状态(需提交的变更文件)。
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   callback_example_2/bin/Makefile
#	new file:   callback_example_2/bin/Makefile_bak
#	new file:   callback_example_2/bin/main.c
#	new file:   callback_example_2/bin/notice_wake_app.1.0.0.1
#	new file:   callback_example_2/include/libnotice_wake.h
#	new file:   callback_example_2/lib/libnotice_wake.so
#	new file:   callback_example_2/src/Makefile
#	new file:   callback_example_2/src/libnotice_wake.c
#	new file:   callback_example_2/src/libnotice_wake.h
#//提交到本地git仓库
[root@localhost git_space]# git commit -m "新建项目"
[master (root-commit) d5cddc1] 新建项目Committer: root <root@localhost.localdomain>9 files changed, 221 insertions(+)create mode 100644 callback_example_2/bin/Makefilecreate mode 100644 callback_example_2/bin/Makefile_bakcreate mode 100644 callback_example_2/bin/main.ccreate mode 100755 callback_example_2/bin/notice_wake_app.1.0.0.1create mode 100644 callback_example_2/include/libnotice_wake.hcreate mode 100755 callback_example_2/lib/libnotice_wake.socreate mode 100644 callback_example_2/src/Makefilecreate mode 100644 callback_example_2/src/libnotice_wake.ccreate mode 100644 callback_example_2/src/libnotice_wake.h
[root@localhost git_space]#

       (2) 在 GitHub 中创建远程仓库。

首先新建一个仓库。

仓库地址使用 SSH 协议,如果用https地址每次push/pull都要输入github账号密码。

创建远程仓库成功后界面如下:

将上图的命令复制下执行。

关联到远程仓库。

//关联远程仓库
[root@localhost git_space]# git remote add origin git@github.com:******/studyspace.git  
//将本地库内容推送到远程仓库
[root@localhost git_space]# git push -u origin master
Counting objects: 15, done.
Delta compression using up to 3 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (15/15), 10.57 KiB | 0 bytes/s, done.
Total 15 (delta 0), reused 0 (delta 0)
To git@github.com:******/studyspace.git* [new branch]      master -> master
Branch master set up to track remote branch master from origin.
[root@localhost git_space]# 

使用 SSH 协议,我在 push 过程中就没有输任何账号和密码。 

此时 你在刷新你github上的项目就可以看到文件已经上传了。

至此,从零完成了从本地新建项目提交至 GitHub。

为啥添加过程不能用一条git commit命令来完成呢,这儿涉及一个工作区和暂存区的概念。工作区是电脑能看到的目录,比如learngit文件夹是一个工作区(如下图左所示)。在learngit文件夹有个隐藏目录.git,不属于工作区,而是git的版本库,版本库中重要的两部分是暂存区(下图中),和创建的第一个分区master(下图右)。

2.2  从 github 上 clone一个仓库,修改并上传至原仓库。

如果从零开发,最好的方式是先创建远程库(和前面创建远程库的操作一样),然后从远程库克隆。

第一步我们在 Linux 本地创建一个目录,比叫目录名叫 “git_study”。

  • 从 github上 clone 代码

我们在 git_study 目录下执行:git clone git@github.com:用户名/项目名.git 命令。

可能会报如下错误:意思是说你克隆了一个空的仓库。

[root@localhost git_study]# git clone git@github.com:用户名/项目名.git
Cloning into 'packet_process'...
warning: You appear to have cloned an empty repository.
[root@localhost git_study]# ls
项目名
[root@localhost git_study]# 

需要说明的是,我们先创建远程库(该远程库是空的,没有任何文件),然后直接在 Linux 上克隆该远程库后,不需要再执行该工作区目录的初始化命令 git init  和 关联远程库的命令的:git remote add origin git@github.com:******/studyspace.git ,然后我们就可以直接执行git add,git commit,git push 等命令了。 

实际上,git clone 命令在执行时,已经将该项目目录和 GitHub 上的远程仓库建立了关联。

现在我们要在 Linux 本地写代码了,写完了,我们要提交到 GitHub 的仓库上。

  • 先将我们新写的代码文件添加到本地暂存区。

git add 文件名         #表示将文件加入本地暂存区

git add . #表示将当前文件夹下所有文件添加至暂存区

  • 确认提交更改。

git commit -m "提交的更改说明"

  • 将本地库内容推送到远程仓库github。输入下述命令,输入命令之后,按照提示输入github的用户名和密码即可。

git push origion "分支用户名"                //将本地主分支推到支远程主分。

如果想撤回add或commit,参考链接1 参考链接2

假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并覆盖本地文件:
git fetch origin
git reset --hard origin/master

常见场景:

准备工作:我们先创建一个文件 main.c。

[root@localhost packet_process]# ls
main.c  README
[root@localhost packet_process]# cat main.c 
#include <stdio.h>int main()
{printf("hello word! \n");return 0;
}
[root@localhost packet_process]# 

0 . 如果想要删除某个文件
        git rm filename (同时会删除本地文件)

1. 从暂存区撤离将要提交的文件

给定一个这样的场景,你讲一个文件修改完毕后,将它添加到暂存区,以便将来提交,但是你突然觉得还有东西没有改好,那只能把文件从暂存区撤回。

git reset HEAD 文件名                         //将暂存区的文件撤回

-----------------------------------------------------------详细说明-------------------------------------------------------------

1. git add 添加 多余文件
这样的错误是由于, 有的时候 可能

git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件

git add 如果添加了错误的文件的话

撤销操作

git status 先看一下add 中的文件
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.c 就是对某个文件进行撤销了

实践环节 :

[root@localhost packet_process]# git status        //先看下有啥变更,说有一个未追踪的文件main.c。需要使用 git add 去追踪它。
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	main.c
nothing added to commit but untracked files present (use "git add" to track)
[root@localhost packet_process]# 
[root@localhost packet_process]# git add main.c    //git add 将 main.c 添加到暂存区。 
[root@localhost packet_process]# git status        //再看一下状态有啥变化,提示有一个新文件。
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	new file:   main.c
#
[root@localhost packet_process]# git reset HEAD main.c        //从暂存区中撤销出来。
[root@localhost packet_process]# git status                    //再看下状态,和未添加到暂存区时的状态一样了。
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	main.c
nothing added to commit but untracked files present (use "git add" to track)
[root@localhost packet_process]# 

2. git commit 错误,没有 push 时。

如果不小心 弄错了 git add后 , 又 git commit 了。
先使用
git log 查看节点
commit xxxxxxxxxxxxxxxxxxxxxxxxxx
Merge:
Author:
Date:

然后 git reset commit_id (回退到上一个 提交的节点 代码还是原来你修改了的)。

直接查看该链接,讲的很好:git如何撤销commit的方法(未push)_相关技巧_脚本之家 (jb51.net)

说明:还没有 push 的时候

  • git reset commit_id (回退到上一个 提交的节点 代码还是原来你修改的)。
  • git reset –hard commit_id (回退到上一个commit节点, 代码也发生了改变,变成上一次的)。
  • git reset 命令分为两种: git reset –-soft 与 git reset –-hard ,区别是:

       前者表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。后者直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。--soft选项的意思是,保留当前工作区,以便于我们修改完之后重新提交。如果采用--hard,那么会还原到对应的版本,我们就不能达成“撤销提交,修改一点点之后重新提交并推送”的目的了。

3.如果要是 提交了以后,可以使用 git revert

当然,我们一般的使用时,如果已经push了,使用revert,如果没有,就是用reset。(25条消息) git reset 和 revert 的区别_Ardor-Zhang的博客-CSDN博客_git reset revert区别

还原已经提交的修改
此次操作之前和之后的 commit 和 history 都会保留,并且把这次撤销作为一次最新的提交。

git revert HEAD                 //撤销前一次 commit
git revert HEAD^                  //撤销前前一次 commit,^代表上一个的意思,HEAD^^代表上两个;HEAD~100代表上100个版本,
git revert commit-id                 //(撤销指定的版本,撤销也会作为一次提交进行保存)
git revert 是提交一个新的版本,将需要 revert 的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。

复制来源:(25条消息) git add , git commit 添加错文件 撤销_空白的泡的博客-CSDN博客_git撤销add的文件

1. 以下载 cJSON 开源项目为例。

复制下图红色方框的内容: git@github.com:DaveGamble/cJSON.git 

[root@localhost git_space]# git clone git@github.com:DaveGamble/cJSON.git
Cloning into 'cJSON'...
remote: Enumerating objects: 4545, done.
remote: Counting objects: 100% (59/59), done.
remote: Compressing objects: 100% (45/45), done.
remote: Total 4545 (delta 29), reused 30 (delta 14), pack-reused 4486
Receiving objects: 100% (4545/4545), 2.50 MiB | 886.00 KiB/s, done.
Resolving deltas: 100% (3014/3014), done.
[root@localhost git_space]# ls
callback_example_2  cJSON
[root@localhost git_space]# cd c
callback_example_2/ cJSON/              
[root@localhost git_space]# cd cJSON/
[root@localhost cJSON]# ls
appveyor.yml  cJSON.c  cJSON_Utils.c  CMakeLists.txt   fuzzing         LICENSE   README.md  tests
CHANGELOG.md  cJSON.h  cJSON_Utils.h  CONTRIBUTORS.md  library_config  Makefile  test.c     valgrind.supp
[root@localhost cJSON]# 

问题:

如果没有配置 git 的用户信息,直接去 commit 会有如下提示信息,此时我们用下列两个命令配置就好了。

git config --global user.name "Your Name"
git config --global user.email you@example.com

[root@localhost git_space]# git commit -m "新建项目"
[master (root-commit) d5cddc1] 新建项目Committer: root <root@localhost.localdomain>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:git config --global user.name "Your Name"git config --global user.email you@example.comAfter doing this, you may fix the identity used for this commit with:git commit --amend --reset-author//以上内容的翻译:
提交者:root <root@localhost.localdomain>
您的姓名和电子邮件地址是根据自动配置的
在您的用户名和主机名上。 请检查它们是否准确。
您可以通过明确地设置来确定此信息:git config --global user.name "你的名字"git config --global user.email you@example.com完成此操作后,您可以通过以下方式修复用于此提交的身份:git commit --amend --reset-author

参考资料:

1. (23条消息) Linux下使用Git教程(一)_大道之简的博客-CSDN博客_linux下使用githttps://blog.csdn.net/HcJsJqJSSM/article/details/82941340

*2. 超全,有例子演示,强烈推荐,有常用的命令。(23条消息) Linux 下git的使用总结(详解)_weixin_41521306的博客-CSDN博客_linux下git的使用https://blog.csdn.net/weixin_41521306/article/details/98513985?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6.pc_relevant_paycolumn_v3&utm_relevant_index=13

 3. Git 中文手册。Git Community Book 中文版http://gitbook.liuhui998.com

4. 基本命令,可查。Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)https://www.liaoxuefeng.com/wiki/896043488029600 5. git命令,可查。Github 简明教程 | 菜鸟教程 (runoob.com)https://www.runoob.com/w3cnote/git-guide.html

6. git 指南,可查手册。Git - 获取 Git 仓库 (git-scm.com)https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7%E5%8F%96-Git-%E4%BB%93%E5%BA%93

7. 清晰(25条消息) [使用教程] 在linux中使用git_ok_kakaka的博客-CSDN博客_linux使用githttps://gamma.blog.csdn.net/article/details/84242557?spm=1001.2101.3001.6650.18&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-18.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-18.pc_relevant_paycolumn_v3&utm_relevant_index=25

8. 简明(25条消息) linux使用git上传项目到github_疯跑蜗牛的博客-CSDN博客_linux上传githttps://blog.csdn.net/hxf0663/article/details/79527453?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_aa&utm_relevant_index=1

Git 优秀教程推荐
1.git - the simple guide - no deep shit! (rogerdudler.github.io)          [图形化模式,简单易懂]
2.图解Git (marklodato.github.io)                 [一样是图形化教程]
4.521xueweihan/git-tips: Git的奇技淫巧 (github.com)       [制作的思维导图非常棒]

5.一个小时学会Git - 张果 - 博客园 (cnblogs.com)


优秀教程参考:Git 详细安装教程(详解 Git 安装过程的每一个步骤)_mukes的博客-CSDN博客_git安装

 END......

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

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

相关文章

慕课前端售1299元的面试题【第二阶段】汇总 day05

上一篇链接 如果有看不懂的&#xff0c;别硬看&#xff0c;直接chatgpt&#xff0c;让它回答。 - 我的博客需要缩宽页面观看&#xff0c;图片无法均放&#xff0c;很抱歉。 1. 请说明 Ajax Fetch Axios 三者的区别&#xff1f; 1. 用 XMLHttpRequest 实现 Ajax function aja…

Javaweb复习之HTTPTomcatServelet

1.Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网&#xff0c;也称为万维网(www)&#xff0c;能够通过浏览器访问的网站。 JavaWeb就是用Java技术来解决相关web互联网领域的技术栈 1.2 JavaWeb技术栈 B/S 架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器 架构模…

DDD领域驱动设计实战-DDD微服务代码结构

更多内容关注微信公众号&#xff1a;fullstack888 DDD并没有给出标准的代码模型&#xff0c;不同的人可能会有不同理解。按DDD分层架构的分层职责定义&#xff0c;在代码模型里分别为用户接口层、应用层、领域层和基础层&#xff0c;建立了 interfaces、application、domain 和…

windows10环境下安装docker、Ubuntu、gitlab、wsl2

一、概述 By星年 文章参考 常用命令参考&#xff1a;(为了方便复制命令都做了换行处理&#xff0c;可直接双击复制。) 进docker terminal&#xff1a; docker exec -it gitlab /bin/bash 查看容器列表&#xff1a; docker ps -a 查看镜像列表&#xff1a; docker images git…

AIGC的发展史:从模仿到创造,AI的创造性探索

在 AI时代&#xff0c;人工智能不再是简单的机器&#xff0c;而是一个具有无限创造力的创造者。AIGC的诞生是人工智能从模仿到创造的一种进步&#xff0c;也是对人类创造力的一种新探索。 而这种由AI生成的内容究竟是如何发展而来的呢&#xff1f;在本文中&#xff0c;我们将探…

如何解决微信支付回调:支付成功及支付失败都不进行任何操作(支付坑)

这几天都在用微信支付这块功能&#xff0c;不得不吐槽一下微信支付的小坑 关于微信提供JSAPI文档&#xff0c;本来想着他们写的开发文档&#xff0c;肯定是没有任何问题。 结果在开发测试中&#xff0c;支付完成后或者支付失败都没任何效果。 我已经在JS里面做了跳转&#xff0…

android微信支付返回-1,支付失败总结!

解决办法1&#xff1a;看看二次生成sign的参数顺序是否跟我发的一致&#xff01;很坑爹&#xff0c;必须一样才行&#xff01; 解决办法2&#xff1a;请求得到prepayid参数的url必须是图中的Url

微信支付下载对账单400Bad Request问题解决方式

今天在做项目时, 需要用到微信支付的对账接口, 看了好多人的反馈, 加上自己的测试, 在用API V3生成了Sign后,对download_url进行Get请求访问时, 依然会出现问题, 就是Nginx报错400 Bad Request 看了好多人的文章, 基本上都是用的调用sdk生成的httpClient再次进行调用, 如下图 …

微信支付异常(“应答的微信支付签名验证失败“)记录

原因是&#xff1a; 配置错了“微信支付平台证书”&#xff1b; 如何解决&#xff1a; 1.下载 微信支付平台证书下载工具(Certificate Downloader)https://github.com/wechatpay-apiv3/CertificateDownloader 得到 CertificateDownloader-1.1.jar 2.执行命令 java -jar Cer…

postman-模拟上传图片

一、Chrome打开layui : 图片上传 右键打开检查&#xff0c;选择network&#xff0c;上传图片查看到&#xff1a; 二、postman测试 打开postman先设置post&#xff0c;并将url填好 : https://httpbin.org/post 选择form-data&#xff1a;添加key/value : key为与后台约定字段(一…

【苹果群发iMessage推送位置推】软件安装将会按照 Developer Program License Agreement

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

风辞远的科技茶屋:可怖的AI

大家好&#xff0c;我是脑极体的风辞远。一直以来我们都在写大块文章&#xff0c;很少有机会跟大家聊天。时间长了&#xff0c;总觉得这种方式有一点冷漠感&#xff0c;不够轻松&#xff0c;加上往往每篇文章只聚焦一个话题&#xff0c;而我们产能有限&#xff0c;就会有很多值…

千万别再乱点黄色APP了!

上一篇&#xff1a;文心一言员工跳槽工资翻倍&#xff0c;猎头&#xff1a;百万年薪很正常 网络诈骗千千万&#xff0c;涉黄APP占一半。 小伙来自山东菏泽&#xff0c;失手在手机上下载了非法的涉黄APP&#xff0c;当他准备观看视频时发现&#xff0c;需要充值成为会员或完成任…

如何分析系统平均负载过高?

文章目录 前言uptime命令平均负载平均负载到底是多少才合理平均负载和CPU的关系CPU与进程1比1&#xff0c;CPU使用率高导致负载变高I/O高&#xff0c;导致负载高进程数超过CPU数&#xff0c;导致负载高 前言 我相信你应该用过uptime命令查询系统负载的情况&#xff0c;或者在各…

线上负载过高排查(top/vmstat/ifstat/free/df)

目录 一、五大命令 二、故障排查步骤 1、top命令找出CPU占比最高的 2、ps -ef 或者 jps -l进一步定位 3、ps -mp位到具体线程或者代码 4、jstack精准定位到错误的地方 本文通过学习&#xff1a;周阳老师-尚硅谷Java大厂面试题第二季 总结的LinuxJDK命令操作相关的笔记 一…

解决Linux 负载过高问题过程记录

解决问题的思路 1.top命令查看该机器的负载状况 2.cd /proc/pid 查看对应高占用程序的位置 3.进入对应程序中查看日志&#xff0c;根据CPU和内存这两个因素分析 4.ps -ajxf 查看进程及其之下的线程&#xff0c;通过stat查看是否存在D僵尸进程 1.什么是负载过高 1.1load A…

假如ChatGPT 去面试前端工程师,结果会怎么样?

近日&#xff0c;有个叫 ChatGPT 的同学来我司面试前端&#xff0c;考考他面试八股文。先来问问闭包。 第一问&#xff0c;说说 JS 闭包 追问&#xff0c;详细讲讲闭包 由于篇幅太长&#xff0c;转成文字&#xff0c;以下皆为 ChatGPT 回答 闭包是一个非常重要的 JavaScript 概…

青椒肉丝饭

今天第一次来华德吃饭&#xff0c;为了吃这顿饭跑遍了半个上海。 先是去长乐路上的大铁门排挡吃自助&#xff0c;结果人家收摊了&#xff0c;估计都回家过年了吧。 然后又去新华路上的粮仓饭湘&#xff0c;结果人满为患&#xff0c;连个站的地方都没有。 最后回到北新泾这里…

五花青椒包菜

[猪头]每次做完菜&#xff0c;第一口一定要找块好肉尝尝。肉好吃&#x1f60b;&#xff0c;这道菜就差不了&#xff0c;下饭。 ​[调皮]肉不好吃的菜&#xff0c;没有灵魂。 ​[愉快]今天的菜&#xff0c;五花肉青椒土豆包菜。

青椒肉丝

青椒肉丝 材料 15元的肉丝 一根葱 两个辣椒 生粉&#xff0c;盐&#xff0c;油 步骤 1.开煤气&#xff0c;将锅烧热&#xff0c;小火炖下肥肉得到猪油&#xff0c;将残渣捞出 2.切好的肉丝撒上生粉&#xff0c;摔摔肉&#xff0c;弄匀 3.倒入油&#xff08;满锅底&#xff…