Git基本操作(超详细)
文章目录
- 创建Git本地仓库
- 配置Git
- 配置命令
- 查看是否配置成功
- 重置配置
- 工作区、暂存区、版本库
- 添加文件--场景一
- 概述
- 实例操作
- 查看`.git`文件
- 添加文件--场景二
- 修改文件
- 版本回退
- 撤销修改
- 情况⼀:对于工作区的代码,还没有 `add`
- 情况⼆:已经 `add` ,但没有 `commit `
- 情况三:已经 `add` ,并且也 `commit` 了
- 删除文件
创建Git本地仓库
仓库是进⾏版本控制的⼀个⽂件⽬录
我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来。
首先创建一个gitcode
目录来存放git,
创建⼀个Git本地仓库对应的命令为 git init
查看当前目录,发现多了个隐藏文件.git
.git
⽬录是Git来跟踪管理仓库的,不要⼿动修改这个⽬录⾥⾯的⽂件,不然改乱了,就把Git仓库给破坏了
其中包含Git仓库的诸多细节:
配置Git
当安装Git后⾸先要做的事情是设置你的用户名称和e-mail地址,这是⾮常重要的
配置命令
git config [--global] user.name "Your Name"
git config [--global] user.email "email@example.com"
其中 --global
是⼀个可选项。如果使⽤了该选项,表⽰这台机器上所有的Git仓库都会使⽤这个配置。如果你希望在不同仓库中使⽤不同的 name
或e-mail
,可以不要--global
选项,但要注意的是,执⾏命令时必须要在仓库里。
查看是否配置成功
git config -l
重置配置
git config [--global] --unset user.name
git config [--global] --unset user.email
工作区、暂存区、版本库
目前情况下,ReadMe
文件能够被Git管理?
不行!
先来了解以下几个概念:
• ⼯作区:是在电脑上你要写代码或⽂件的⽬录。
• 暂存区:英⽂叫stage或index。⼀般存放在 .git
⽬录下的index⽂件(.git/index)中,我们把暂存区有时也叫作索引(index)。
• 版本库:⼜名仓库,英⽂名 repository 。⼯作区有⼀个隐藏⽬录 .git
,它不算⼯作区,⽽是Git的版本库。这个版本库⾥⾯的所有⽂件都可以被Git管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
下⾯这个图展⽰了⼯作区、暂存区和版本库之间的关系:
当对⼯作区修改(或新增)的⽂件执⾏git add
命令时,暂存区⽬录树的⽂件索引会被更新。
当执⾏提交操作 git commit
时,master分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中。
通过新建或粘贴进⽬录的⽂件,并不能称之为向仓库中新增⽂件,⽽只是
在⼯作区新增了⽂件。必须要通过使⽤git add
和git commit
命令才能将⽂件添加到仓库中进⾏管理!!!
如何进行版本控制??
在版本库中,还有一个对象库,称之为object
,被版本库维护
当我们在add
操作时,新增工作区修改的时候,会将修改的内容写入到一个git
对象中,这个git
对象就会被维护到git
对象库里面,这里就做到了对文件版本的管理。
添加文件–场景一
概述
在包含.git
的⽬录下新建⼀个ReadMe
⽂件,我们可以使⽤ git add
命令可以将⽂件添加到暂存区:
• 添加⼀个或多个⽂件到暂存区: git add [file1] [file2] ...
• 添加指定⽬录到暂存区,包括⼦⽬录: git add [dir]
• 添加当前⽬录下的所有⽂件改动到暂存区: git add .
再使⽤ git commit 命令将暂存区内容添加到本地仓库中:
• 提交暂存区全部内容到本地仓库中:git commit -m "message"
• 提交暂存区的指定⽂件到仓库区: git commit [file1] [file2] ... -m "message"
注意 git commit
后⾯的 -m
选项,要跟上描述本次提交的message
,由⽤⼾⾃⼰完成,这部分内容绝对不能省略,并要好好描述,是⽤来记录你的提交细节,是给我们⼈看的。
实例操作
在ReadMe
文件中输入内容:
add
操作:
git add ReadMe
将ReadMe
文件添加
git add .
将当前目录下的所有文件添加
此时将该文件添加到暂存区
commit
操作:
命令: git commit -m " "
," "
里面的内容是细节,需要详细描述一下
此时将暂存区的文件添加到仓库中
还可以多次add
不同的⽂件,⽽只commit
⼀次便可以提交所有⽂件,是因为需要提交的⽂件是通通被add
到暂存区中,然后⼀次性commit
暂存区的所有修改:
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ touch file1 file2 file3
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git add file1 file2 file3
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git commit -m "add 3files"
[master c98e197] add 3files3 files changed, 0 insertions(+), 0 deletions(-)create mode 100644 file1create mode 100644 file2create mode 100644 file3
截⾄⽬前为⽌,我们已经更够将代码直接提交⾄本地仓库了。我们可以使⽤ git log
命令,来查看下历史提交记录:
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git log
commit c98e19749759f8e8c85373b8d8b643f9b2103f63
Author: gwj <2953778678@qq.com>
Date: Sun Feb 18 16:32:31 2024 +0800add 3filescommit 4a98215b5ada82146bb128e829f356cf546b5514
Author: gwj <2953778678@qq.com>
Date: Sun Feb 18 13:22:41 2024 +0800add first file
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$
上述显示比较复杂,使用命令git log --pretty=oneline
,可以只显示一行:
需要说明的是,我们看到的⼀⼤串类似 23807c5…56eed6 的是每次提交的commit id
(版本号),Git的 commit id
不是1,2,3……递增的数字,⽽是⼀个SHA1
计算出来的⼀个⾮常⼤的数字,⽤⼗六进制表⽰
查看.git
文件
首先打开.git
目录文件:
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ tree .git/
.git/
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│?? ├── applypatch-msg.sample
│?? ├── commit-msg.sample
│?? ├── post-update.sample
│?? ├── pre-applypatch.sample
│?? ├── pre-commit.sample
│?? ├── prepare-commit-msg.sample
│?? ├── pre-push.sample
│?? ├── pre-rebase.sample
│?? └── update.sample
├── index
├── info
│?? └── exclude
├── logs
│?? ├── HEAD
│?? └── refs
│?? └── heads
│?? └── master
├── objects
│?? ├── 36
│?? │?? └── 433addfb1f43c0e073e56442ca97184a317faa
│?? ├── 4a
│?? │?? └── 98215b5ada82146bb128e829f356cf546b5514
│?? ├── 4e
│?? │?? └── 786c2e4531dfd9c8622da069607a5e82716e19
│?? ├── c9
│?? │?? └── 8e19749759f8e8c85373b8d8b643f9b2103f63
│?? ├── e6
│?? │?? ├── 06bfbfa82fd7ffaeccd07c80ce9b10c2c0d485
│?? │?? └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│?? ├── info
│?? └── pack
└── refs├── heads│?? └── master└── tags17 directories, 24 files
-
index
就是我们的暂存区,add
后的内容都是添加到这⾥的。 -
HEAD
就是我们的默认指向master
分⽀的指针:
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ cat .git/HEAD
ref: refs/heads/master
⽽默认的master
分⽀,其实就是:
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ cat .git/refs/heads/master
c98e19749759f8e8c85373b8d8b643f9b2103f63
c98e19749759f8e8c85373b8d8b643f9b2103f63
保存的就是当前最新的 commit id
objects
为Git的对象库,⾥⾯包含了创建的各种版本库对象及内容。当执⾏git add
命令时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,就位于".git/objects"
⽬录下。
查找object
时要将 commit id
分成2部分,其前2位是⽂件夹名称,后38位是⽂件名称
找到这个⽂件之后,⼀般不能直接看到⾥⾯是什么,该类⽂件是经过sha (安全哈希算法)
加密过的⽂件,好在我们可以使⽤git cat-file
命令来查看版本库对象的内容:
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git cat-file -p c98e19749759f8e8c85373b8d8b643f9b2103f63
tree e606bfbfa82fd7ffaeccd07c80ce9b10c2c0d485
parent 4a98215b5ada82146bb128e829f356cf546b5514
author gwj <2953778678@qq.com> 1708245151 +0800
committer gwj <2953778678@qq.com> 1708245151 +0800add 3files
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git cat-file -p e606bfbfa82fd7ffaeccd07c80ce9b10c2c0d485
100644 blob 36433addfb1f43c0e073e56442ca97184a317faa ReadMe
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 file1
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 file2
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 file3
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git cat-file -p 4a98215b5ada82146bb128e829f356cf546b5514
tree 4e786c2e4531dfd9c8622da069607a5e82716e19
author gwj <2953778678@qq.com> 1708233761 +0800
committer gwj <2953778678@qq.com> 1708233761 +0800add first file
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git cat-file -p 36433addfb1f43c0e073e56442ca97184a317faa
hello gwj!!!
总结一下:
• index
:暂存区, git add
后会更新该内容。
• HEAD
:默认指向master
分⽀的⼀个指针。
• refs/heads/master
:文件⾥保存当前master
分⽀的最新 commit id
。
• objects
:包含了创建的各种版本库对象及内容,可以简单理解为放了git
维护的所有修改。
添加文件–场景二
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ touch file4
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git add file4
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ touch file5
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git commit -m "add file"
[master 86d20fb] add file1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 file4
新增file4
文件,将file4
文件添加到暂存区,新增file5
文件,提交修改
提交后发现打印了 1 file changed, 0 insertions(+), 0 deletions(-)
,意思是只
有⼀个⽂件改变了,但是不是新增了两个文件嘛?
回忆一下,git add
是将⽂件添加到暂存区, git commit
是将暂存区的内容添加到本地仓库中。由于我们并没有使⽤ git add file5
,file5
就不在暂存区中维护,所以我们commit
的时候其实只是把已经在暂存区的file4
提交了,⽽遗漏了⼯作区的file5
。如何提交file5
呢?很简单,再次add
, commit
即可。
修改文件
Git
跟踪并管理的是修改,而非文件。
什么是修改?⽐如你新增了⼀行,这就是⼀个修改,删除了⼀行,也是⼀个修改,更改了某些字符,也是⼀个修改,删了⼀些⼜加了⼀些,也是⼀个修改,甚⾄创建⼀个新⽂件,也算⼀个修改。
将ReadMe
⽂件进⾏⼀次修改:
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ vim ReadMe
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ cat ReadMe
hello gwj!!!
hello world!!!
hello HAUE!!!
hello git!!!
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: ReadMe
#
no changes added to commit (use "git add" and/or "git commit -a")
Changes not staged for commit
暂存区目前是干净的,没有要提交的内容
修改是在工作区修改的
git status
可以查看哪些文件被修改,但是修改了什么看不了
git diff [file]
命令⽤来显⽰暂存区和⼯作区⽂件的差异,显⽰的格式正是Unix通⽤的diff
格式。也可以使⽤ git diff HEAD -- [file]
命令来查看版本库和⼯作区⽂件的区别。也可以使⽤ git diff HEAD -- [file]
命令来查看版本库和⼯作区⽂件的区别
例如:
git diff Read
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git diff ReadMe
diff --git a/ReadMe b/ReadMe
index 36433ad..df11e44 100644
--- a/ReadMe
+++ b/ReadMe
@@ -1 +1,4 @@hello gwj!!!
+hello world!!!
+hello HAUE!!!
+hello git!!!
格式解读:
版本回退
Git能够管理⽂件的历史版本,这也是版本控制器重要的能⼒。如果有⼀天你发现之前前的⼯作做的出现了很⼤的问题,需要在某个特定的历史版本重新开始,这个时候就需要版本回退的功能了。
回退版本命令:
git reset
git reset
本质上是回退版本库上的内容
语法格式:
git reset [--soft | --mixed | --hard] [HEAD]
--mixed
为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变--soft
参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本--hard
参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重HEAD
说明:
- 可直接写成
commit id
,表⽰指定退回的版本 HEAD
表⽰当前版本HEAD^
上⼀个版本HEAD^^
上上⼀个版本- 以此类推…
- 可以使⽤
〜数字
表⽰:
HEAD~0
表⽰当前版本HEAD~1
上⼀个版本HEAD^2
上上⼀个版本- 以此类推…
回退到添加ReadMe
文件时:
此时只剩了add first file
,后面的都不见了
此时你又后悔了,想再回到之前的
只需要再次回退即可:
git reflog
⽤来记录本地的每⼀次命令
Git的版本回退速度⾮常快,因为Git在内部有个指向当前分⽀(此处是master)的HEAD
指针, refs/heads/master
⽂件⾥保存当前master
分⽀的最新 commit id
。当我们在回退版本的时候,Git仅仅是给refs/heads/master
中存储⼀个特定的version
,可以简单理解成如下⽰意图:
撤销修改
如果我们在我们的⼯作区写了很⻓时间代码,越写越写不下去,觉得⾃⼰写的实在是垃圾,想恢复到上⼀个版本。
撤销的目的是不影响远程仓库的代码!!!
情况⼀:对于工作区的代码,还没有 add
代码还没有add
,还在工作区中
在工作区中新增了一行代码:add xx code
:
你完全可以vim
进入,然后删除add xx code
但是有时候可能已经过了三四天了,⼀直都没有提交,该怎么删掉呢?你⾃⼰都忘了⾃⼰新增过哪些
可以 git diff xxx
⼀下,看看差别在删啊,那你肯定⼜要花3天时间删代码了,并且很⼤的概率还会改出bug:
可以使⽤ git checkout -- [file]
命令让⼯作区的⽂件回到最近⼀次add
或commit
时的状态。要注意 git checkout -- [file]
命令中的--
很重要,切记不要省略,⼀旦省略,该命令就变为其他意思了,示例:
情况⼆:已经 add
,但没有 commit
新增的代码add xxx code
已经在暂存区
git reset
回退命令,该命令如果使⽤--mixed
参数,可以将暂存区的内容退回为指定的版本内容,但⼯作区⽂件保持不变。那我们就可以回退下暂存区的内容了!!!
Changes not staged for commit
表示暂存区没有内容需要被提交
此时就已经回到情况一了,使用情况一的方法就可以撤销修改
恢复了!!!
情况三:已经 add
,并且也 commit
了
可以 git reset --hard HEAD^
回退到上⼀个版本!不过,这是有条件的,就是你还没有把⾃⼰的本地版本库推送到远程。⼀旦你推送到远程版本库,你就真的惨了……
此时工作区、存储区、版本库中都新增了代码
撤销命令:git reset --hard HEAD
这种方法的前提是: commit
之后没有push
!!!
删除文件
在Git中,删除也是⼀个修改操作,实战一下删除file1
:
命令:rm file1
此时只是把工作区中的file1
删除,对于本地仓库file1
其实没有被删掉
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file1
#
no changes added to commit (use "git add" and/or "git commit -a")
⼀般⾛到这⾥,有两种可能:
1. 确实要从版本库中删除该⽂件
2. 不小心删错了
对第⼆种情况,很明显误删,需要使⽤ git checkout -- file1
来进⾏恢复,很简单,我们刚学过(删除也是修改):
对于第⼀种情况,很明显是没有删完,我们只删除了⼯作区的⽂件。这时就需要使⽤git rm
将⽂件从暂存区和⼯作区中删除,并且commit
:
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git rm file1
rm 'file1'
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: file1
#
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git commit -m "deleted file1"
[master 969e5f4] deleted file11 file changed, 0 insertions(+), 0 deletions(-)delete mode 100644 file1
[gwj@iZf8zhv7mi2thjdxsptkb8Z gitcode]$ git status
# On branch master
nothing to commit, working directory clean
现在,⽂件就从版本库中被删除了
相关文章:

Git基本操作(超详细)
文章目录 创建Git本地仓库配置Git配置命令查看是否配置成功重置配置 工作区、暂存区、版本库添加文件--场景一概述实例操作 查看.git文件添加文件--场景二修改文件版本回退撤销修改情况⼀:对于工作区的代码,还没有 add情况⼆:已经 add &#…...

【AGI视频】Sora的奇幻之旅:未来影视创作的无限可能
在五年后的未来,科技的发展为影视创作带来了翻天覆地的变化。其中,Sora视频生成软件成为了行业的翘楚,引领着全新的创作潮流。Sora基于先进的Transformer架构,将AI与人类的创造力完美结合,为观众带来了前所未有的视听盛…...

Docker部署nginx
搜索镜像 docker search nginx 下载拉取nginx镜像 docker pull nginx 查看镜像 docker images 启动容器 docker run -d --name nginx01 -p 3344:80 nginx 外部端口需要在服务器安全组中设置,使用docker镜像nginx以后台模式启动一个容器,并将容器…...

C++Qt——自定义信号与槽
自定义信号与槽 自定义信号与槽是实现对象间通信的一种机制,比如按钮和窗口间的通信。 一、定义信号 Signal关键字声明的类成员函数。不需要实现,只需要声明。 signals:void mySignals();//定义信号,不用实现二、定义槽 可以使任何普通成员函数&…...

提高项目的性能和响应速度的方法
目录 引言 一、代码优化 二、数据库优化 三、缓存技术: 四、异步处理 1. 将耗时的操作改为异步处理 1.1 文件上传 1.2 邮件发送 2. 使用消息队列实现异步处理 2.1 配置消息队列 2.2 发送消息 2.3 接收消息并处理 五、负载均衡和集群 1. 负载均衡 1.1 …...

QT学习事件
一、事件处理过程 众所周知 Qt 是一个基于 C 的框架,主要用来开发带窗口的应用程序(不带窗口的也行,但不是主流)。 我们使用的基于窗口的应用程序都是基于事件,其目的主要是用来实现回调(因为只有这样程序…...

第13章 网络 Page818 UDP(和TCP的比较)
TCP核心类 asio::ip::tcp::socket;//网络套接字 asio::ip::tcp::endpoint;//边接端地址 asio::ip::tcp::resolver;//地址解析器 asio::ip::tcp::acceptor;//连接接受器 UPD核心类 asio::ip::udp::socket;//网络套接字 asio::ip::udp::endpoint;//边接端地址 asio::ip::udp::…...

EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持
EMQX Enterprise 5.4.0 版本已正式发布! 新版本提供 OpenTelemetry 分布式追踪与日志集成功能,新增了开放充电协议 OCPP 协议接入能力,并为数据集成添加了 Confluent 支持。此外,新版本还进行了多项改进以及 BUG 修复,…...

记录 | C++ cout.setf(ios::fixed)
cout.setf(ios::fixed); 是在 C 中使用的一个标准库函数,用于将流的输出格式设置为"fixed" "fixed"格式指定输出浮点数时,小数点后的位数是固定的。这意味着,无论输出的数字有多少位小数,小数点后都会保留相…...

Eclipse 创建 Hello World 工程
Eclipse 创建 Hello World 工程 1. Hello WorldReferences Download and install the Eclipse IDE. 1. Hello World Eclipse -> double click -> Launch 单击蓝色方框 (右上角) 最大化 IDE File -> New -> C Project -> Finish Project name:工程名…...

【前端工程化面试题】vite热更新原理
vite 在开发阶段,运行 vite 命令,会启动一个开发服务器,vite 在开发阶段是一个服务器 依赖 esm: vite 在开发阶段使用 esm 作为开发时的模块系统。esm 具有动态导入的能力,这使得在代码中引入模块时可以动态地加载新的…...

【leetcode】判断二叉树是否完全二叉树
递归方式判断二叉树是否完全二叉树 bool TreeComplete(TreeNode* root) {if (root ! NULL) {if (root->left NULL && root->right ! NULL) {return false; // 左子树空}else if (root->left NULL && root->right NULL) {return true; // 左右子…...

Java多线程系列——内存模型JMM
目录 核心思想 关键概念 1. 可见性 2. 原子性 3. 有序性 工作原理 并发工具类 对并发编程的影响 同步策略 JMM的实践意义 结语 Java内存模型(Java Memory Model, JMM)是Java并发编程中的核心概念,其定义了Java虚拟机(JV…...

深入理解 Vue3 中的 setup 函数
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...

【QT+QGIS跨平台编译】之三十六:【RasterLite2+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、RasterLite2介绍二、文件下载三、文件分析四、pro文件五、编译实践一、RasterLite2介绍 RasterLite2是一个开源的轻量级栅格数据库,可以用于存储和管理各种类型的栅格数据,包括卫星遥感图像、数字高程模型等。 与传统的GIS数据存储方式不同,RasterLite2采用基…...

java面试题:分布式和微服务的区别
1 分布式和微服务概念不同 微服务架构是架构设计方式,是设计层面的东西,一般考虑如何将系统从逻辑上进行拆分,也就是垂直拆分。 分布式系统是部署层面的东西,即强调物理层面的组成,即系统的各子系统部署在不同计算机…...

GO语言的变量与常量
1.变量 go是一个静态语言 变量必须先定义后使用变量必须要有类型 定义变量的方式: var 名称 类型 var 名称 值 名称 :值 例如: var num int 这样就存了一个num类型为int的变量 var num 1 上面使用简化的定义通过num自动判断后面的类型为int并…...

java面试多线程篇
文章说明 在文章中对所有的面试题都进行了难易程度和出现频率的等级说明 星数越多代表权重越大,最多五颗星(☆☆☆☆☆) 最少一颗星(☆) 1.线程的基础知识 1.1 线程和进程的区别? 难易程度:☆☆…...

Anaconda + VS Code 的安装与使用
目录 一. Anaconda 是什么二. Anaconda 的安装1. 下载安装包2. 安装3. 检查 三. Anaconda 的使用1. 创建虚拟环境2. 激活虚拟环境3. 包管理4. 列举虚拟环境5. 退出虚拟环境6. 删除虚拟环境 四. VS Code 开发1. 安装插件2. 打开工作区3. 选择解释器 五. VS Code 个性化设置1. 切…...

Python爬虫html网址实战笔记
仅供学习参考 一、获取文本和链接 import requests from lxml import htmlbase_url "https://abcdef自己的网址要改" response requests.get(base_url) response.encoding utf-8 # 指定正确的编码方式tree html.fromstring(response.content, parserhtml.HTML…...

C++ 调用js 脚本
需求: 使用Qt/C 调用js 脚本。Qt 调用lua 脚本性能应该是最快的,但是需要引入第三方库,虽然也不是特别麻烦,但是调用js脚本,确实内置的功能(C 调用lua 脚本-CSDN博客) 步骤: 1&…...

Vscode python pyside6 制作视频播放器
一、界面如下 包含控件 qcombox、qtablewidget、qpushbotton、qverticalslider 二、运行代码 media_player.py import sysfrom PySide6 import QtWidgets from PySide6.QtWidgets import * from PySide6.QtMultimedia import * from PySide6.QtMultimediaWidgets import QVi…...

纯前端低代码平台demo,vue框架,nodejs,简单的pm2纯前端部署实践
文章目录 目录结构说明本地运行项目启动后的页面demo前端部署打包pm2nginx 后话 前段时间开发了一个纯前端的低代码平台demo,vue框架,nodejs,pm2纯前端部署实践。为此记录一下开发过程以及各方面遇到的问题,并作说明。 表单用了若…...

致创新者:聚焦目标,而非问题
传统的企业创新管理方式常常导致组织内部策略不协调、流程低效、创新失败率高等问题。而创新运营作为企业管理创新的新模式,通过整合文化、实践、人员和工具,提高组织创新能力。已经采用创新运营的公司报告了一系列积极的结果,如市场推出速度…...

javaSE和javaEE区别
javaSE Java SE(Java Platform,Standard Edition) Java SE 以前称为 J2SE。 它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。 Java SE 包含了支持 Java Web服务开发的类,并为 Java Platform&#…...

安装VMware+安装Linux
以上就是VMware在安装时的每一步操作,基本上就是点击 "下一步" 一直进行安装 安装Linux VMware虚拟机安装完毕之后,我们就可以打开VMware,并在上面来安装Linux操作系统。具体步骤如下: 1). 选择创建新的虚拟机 2). 选…...

session和cookie理解
目录 1、理解无状态 2、Session和Cookie理论 3、使用session存储数据 前言,理解session与cookie对于我们做web测试、接口测试、性能测试都是非常有帮助的。 cookie是一些数据信息,存储在浏览器端。 session是存储于服务器端的特殊对象,服务器…...

Springboot医院信息管理系统源码 带电子病历和LIS Saas应用+前后端分离+B/S架构
目录 系统特点 技术架构 系统功能 1、 标准数据维护 2、 收费(门诊/住院)系统 3、 药剂管理系统 4、 医生工作站系统 5、 护士工作站系统 6、电子病历系统 系统优点 云HIS系统简介 云HIS系统功能模块 门急诊挂号管理 门诊收费管理 门诊医…...

LeetCode.589. N 叉树的前序遍历
题目 589. N 叉树的前序遍历 分析 我们之前有做过LeetCode的 144. 二叉树的前序遍历,其实对于 N 插树来说和二叉树的思路是一模一样的。 二叉树的前序遍历是【根 左 右】 N叉树的前序遍历顺序是【根 孩子】,你可以把二叉树的【根 左 右】想象成【根 孩…...

C++ Webserver从零开始:配置环境(九)——下载github的项目进行测试
前言 大家好,我又来更新Webserver的博客了。上一次更新这个专栏时2024.2.5号,离现在已经13天了。非常抱歉,中间隔了那么久。一方面是基础知识学完之后,就要开始自己写代码了。看基础知识和写代码是两回事,理论和实践的…...