git:认识git和基本操作(1)

news2024/9/20 14:59:32

目录

一、版本控制器

1.安装git

2.创建git本地仓库

3.配置git

二、git操作(1)

1.工作区、暂存区、版本库

2.添加文件

3.查看.git

4.修改文件


一、版本控制器

        所谓的版本控制器,就是能让你了解到每一个文件的修改历史。相应的,在企业级开发中,用来记录一个工程的每一次改动和管理版本迭代,同时方便多人协作开发。

        git就是一种版本控制器,它还有一种特点,就是分布式。

        需要注意的是,所有的版本控制器,只能跟踪文本文件的改动,比如TXT、网页程序源代码。版本控制器可以告诉你当前文件的每次改动,比如在第5行加入了字符串"Linux",删除了第10行。

        而图片、视频等这些二进制文件,虽然也能由版本控制器管理,但是无法跟踪其变动,只能把文件的每次变化记录下来,比如图片大小从100kb变到了150kb,但是具体图片内容,版本控制器无从得知。

1.安装git

  • centos
sudo yum -y install git

查看安装的git的版本

git --version
  • ubuntu
sudo apt-get install git -y

2.创建git本地仓库

        在你的电脑上,新建一个文件夹,我们要对该目录下的所有文件进行版本控制,那么这个文件目录被称为仓库(本地仓库)。

        进入这个目录后,使用下面这条命令创建git仓库

git init

        创建成功后,该目录下生成一个隐藏目录 .git,该目录是git用来跟踪管理仓库的,切记不要改动该目录下的文件。

3.配置git

git config --global user.name "用户名(自填)"
git config --global user.email "绑定的邮箱"

        其中,--global 是一个选项,使用该选项,表示当前这台机器的所有git仓库都使用这个配置。如果你希望在不同仓库中使用不同的用户名和邮箱,则无需使用--global选项,但是要注意,执行命令时,当前路径必须是仓库路径

  • 查看配置的命令
git config -l
  • 删除配置的命令
git config --global --unset user.name
git config --global --unset user.email

二、git操作(1)

1.工作区、暂存区、版本库

        现在要纠正一下原来对“仓库”的解释,严格来讲,我们所创建的文件目录并不是 git仓库。

        在这个文件目录下,去掉 .git  文件目录,其他文件目录均称为工作区,在工作区创建我们要版本控制的代码文件。

        而.git所在的文件夹称为版本库(repository),即真正意义上的本地仓库

        在 .git 目录下,有一个文件为 index ,这是一个索引文件,该文件内容是一个目录树,这个文件也被称为暂存区(stage)。

        

  • 图中左侧为工作区,右侧为版本库。版本库中存有很多东西,其中最为重要的就是暂存区(stage)
  • 在创建git版本库的同时,git为我们自动创建唯一的一个master分支,以及指向master分指的HEAD指针
  • 工作区的一次修改(包括添加文件、删除文件、修改文件)在执行 git add 命令后,这条记录会被记入到暂存区,暂存区的目录树索引会更新。
  • 当执行提交操作 git commit,master分支作出相应的更新,这才是真正意义上的暂存区的目录树写入到版本库中。
  • 值得一提的是,每一次add记录,都对应着objects目录下的一个新git对象
  • 同时,不难看出来,在工作区新创建的文件,不能称为向版本库中新增文件,而是要经过添加命名git add和提交命令git commit 才能将文件添加到仓库进行管理。

2.添加文件

        在包含.git的目录,即工作区,新增一个文件,使用git add将文件添加到暂存区。

  • 添加一个或多个文件到暂存区:
git add [file1] [file2] ···
  • 添加指定目录到暂存区,包括子目录:
git add [dir]
  • 添加当前目录下的所有改动到暂存区:
git add .

        再执行 git commit 命令将暂存区内容添加到本地仓库:

  • 提交暂存区全部内容到本地仓库:
 git commit -m "提交信息"
  • 提交暂存区的指定文件到本地仓库:
git commit [file1] [file2] ··· -m "提交信息"

        注意,git commit通常都要使用 -m 选项,后面紧跟描述本次提交的信息,该部分绝对不要省略,并且要认真描述,用来记录每一个修改的细节,每一次提交信息外界都可以看到。

        提交成功后,一般会显示本次提交的大致变动,比如有几个文件发生了修改。

        也可以执行多次add 命令后,只执行一次commit命令。

        git log命令可以查看历史提交信息,显示从最近到最远的提交日志,并且可以看到commit时的描述信息。可以加上选项 --pretty=oneline打印得更简洁。

git log --pretty=oneline

3.查看.git

[euto@VM-4-13-centos linux]$ tree .git
.git
|-- branches
|-- COMMIT_EDITMSG
|-- config
|-- description
|-- FETCH_HEAD
|-- 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
|       |   `-- main
|       `-- remotes
|           `-- origin
|               |-- HEAD
|               `-- main
|-- objects
|   |-- 00
|   |   |-- 471d97625e1da7be60c8330d5ee742ae3de972
|   |   `-- 5bd7898161cf689c01f8fe247d5b78bfb170d8
|   |-- 03
|   |   |-- 0966c31fa8a450374183ddcfb3fa15ead743e3
|   |   `-- f787a22c2c0d4ba6a5e82b66854ee120569ec4
|   |-- 04
|   |   `-- 4ce1b1b76cef2bf2807b4365904608f51f49f7
|   |-- 06
|   |   `-- 7ab93d0eb926463be10ff5cf9499e7615795ef
|   |-- 08
|   |   `-- b9dcc5629e232dad9fe08331efc7e9cfb0d586
|   |-- 0c
|   |   |-- 1387f0456c58b21fee9b1bdb41e94e902b2b4f
|   |   `-- 5e13bb4abdfff62f93a30cb236c47ffafa0d6a
|   |-- 0d
|   |   |-- 4c71acbe849b5d4293208ed3236dc5844793fa
|   |   `-- 4fc5e74b204a41129f8d66ea292552e00e877a
|   |-- 12
|   |   `-- e59bd35202d7a58c67b408718b3d53891ac97c
|   |-- 14
|   |   `-- 0e966c5da9e22bc46197b61a10730e97497332
|   |-- 19
|   |   |-- 4bbc0e0736449d86cd61f3cd956080430f7588
|   |   `-- 8b19d2d6f6429981116f7adbad04a205cf672c
|   |-- 1e
|   |   `-- 57d506173ac36614ad84205f0128b7a46c82d9
|   |-- 27
|   |   |-- 43f50a6fb3c0bdcadf2b53473c52266f20f9d9
|   |   `-- d4d181f35233380f9a5b3666bcba845d40e8cc
|   |-- 28
|   |   `-- 39432fa018ac3497ee3d75c547faad10d1f62e
|   |-- 2d
|   |   `-- 2790a8fcac3a9049d0e21e6eb18f115563bbd2
|   |-- 2e
|   |   `-- 2cb3315239d581ac7e8e837569aa4499804799
|   |-- 32
|   |   `-- 9af3ddffc6dfff3dc00347618dba749b2c95ac
|   |-- 33
|   |   |-- 3667bfc55fb2b6656cbf6396cf5c0e7c8949d3
|   |   `-- 8c0b0e4625d4a35890ded04f70326b968f6a99
|   |-- 34
|   |   |-- 479b790db1fcb09030eb989087f82ae2449785
|   |   `-- 80f4138f12da89b1e0d673cf9861c7749e4538
|   |-- 38
|   |   |-- 089b1c1209bf1a57b9b8bf97b1f219ef16a537
|   |   `-- d64333487dd9efacd9eedca1615d9a2e4785ff
|   |-- 3a
|   |   `-- 295da335fee7e73412e794c19528a7a35883ba
|   |-- 42
|   |   |-- aee1c57253456029768871eca1a7a75f8b73cb
|   |   `-- fd4d4cb51e4cd7937de117c7d923fe00a86761
|   |-- 44
|   |   `-- fd6f6a23cf0f61f7f05352b9e654b09acf2733
|   |-- 45
|   |   `-- 1800beac284115f2ba785758c60d8bad47a7ba
|   |-- 46
|   |   `-- d21224ff78a7709b32d47e9a105ca4ad3f17a1
|   |-- 4a
|   |   `-- 13445342dcac63cb4feb454d3d25af32a6238b
|   |-- 54
|   |   `-- 69635c6cb8ff8bbc382b4aff24e75cfc6cbc94
|   |-- 57
|   |   `-- 5ab719d5c4a7cbb1e253c5a84ff6f8d6f52507
|   |-- 5c
|   |   `-- 5322d606be999bcf8ffa8c8d566caf0c623ff8
|   |-- 5e
|   |   |-- 6569d78cd74d9ee7830db323e8d568daa2196a
|   |   `-- d0a69da953585cc58cf03861406e0e8b8d2c4f
|   |-- 5f
|   |   `-- 8a3d11c4c3037246c458f59186df2f3b51e3b1
|   |-- 62
|   |   `-- 24f291a3ab2532f482627ff0c88b7717bcd2b7
|   |-- 63
|   |   `-- ad196b2d3ca300548364d335fafa8d77aee646
|   |-- 64
|   |   |-- 92bf25a504595983ff71585b3d8b9e91f4c6c6
|   |   `-- d337de3a72a723443b1731999d2719b53fb7eb
|   |-- 67
|   |   `-- 5f84131c79508c1edc4375bc4759d29f044d8b
|   |-- 68
|   |   |-- 2ada5f995f3cae515a6d99f97e7a7b145ca733
|   |   `-- 7a85b539e7098e5f11173bb3b0965841524980
|   |-- 6a
|   |   `-- 779fc3e200129fbafacff53b24208d353f0699
|   |-- 71
|   |   `-- 2d21984a4ff70bdb0de2580556a1cfed756b3a
|   |-- 78
|   |   `-- 3e34e5b527b2017d9c9bbf7e809533e3d35027
|   |-- 79
|   |   `-- 4f2ecd521c823dd04c005c6f158628a5832c60
|   |-- 7a
|   |   |-- 3219ce9e17a833d11421c72ce1a72fd2c14fe6
|   |   `-- 519e37d69cc75cf94ca61a7ac3255e71095fd3
|   |-- 82
|   |   `-- 0ee450b3703159778a6928c201e0c194a55f64
|   |-- 96
|   |   `-- aa6b23d2ec9a9c2303a97d692f353dc60eca2b
|   |-- 98
|   |   `-- 52295b804994c7c90ba84fa1ce10de5845e95d
|   |-- 9e
|   |   `-- e1751b21a33449b7c1fe9a2aabd7a2c09e1f11
|   |-- 9f
|   |   `-- 2719e5efdc93384938f0c1903bc50872396f44
|   |-- ad
|   |   |-- 5c4327c85081b62207bf268b687130c9790462
|   |   `-- c4df3f72a3ec3855e4f414e8d3bf6e817dabba
|   |-- ae
|   |   `-- 22998d9a7cdd4183fedd92916238d2b551809b
|   |-- af
|   |   `-- b5f3234eb68146ba559ba2e5294c5074b6ea50
|   |-- b1
|   |   `-- fad596cb8799c5084bb931d7abf4ce54fdee8f
|   |-- b4
|   |   `-- 781363f17c2bfd3e204c5bf93bd189f137bb60
|   |-- b5
|   |   |-- 8b45a92c412792068414b62efd49d66e19b5d8
|   |   `-- fdfc70e3d67e6d3f679eb6a56f405a5dbe03dc
|   |-- b6
|   |   `-- 18cda73c4b96d544ff4d4cfe6761babd044e23
|   |-- bd
|   |   `-- 4471665031022b2e3a050ae784d90cde7152d3
|   |-- c0
|   |   `-- 7feb66aed4a111add1bc612af7f27dc6081231
|   |-- c6
|   |   `-- 127b38c1aa25968a88db3940604d41529e4cf5
|   |-- ce
|   |   `-- 57ef9eee57b3c4608f3faa05584db445194b78
|   |-- cf
|   |   `-- c581216c31e9317914f506432cc75d523a8e4f
|   |-- d1
|   |   `-- 8e080c80870872840e6a5409cf1c6bb52b4fa3
|   |-- d2
|   |   |-- 4660b353635f9c31e2c73ec6644254bd235ee0
|   |   `-- 8085ff8ac79f9c24e2addf140e483bdc5e5f83
|   |-- d7
|   |   `-- ad7836b2ab00963be1504d50929d2b70e90dac
|   |-- d8
|   |   `-- 2599595fd876ed7e2828d370da4167950f7568
|   |-- dd
|   |   `-- 26317dc8be7964e970eec88e1a845808ebbb21
|   |-- e5
|   |   `-- 20b7b9de20f289c5b9d80473f3a77ad6ff2176
|   |-- ea
|   |   `-- 697bb66baaedc922fe5788b88abebb0b7725b0
|   |-- ed
|   |   |-- a86fc6852005ae53e13f2469830c17eb20a051
|   |   `-- f206860392e5bc08d4136634d8710f546b3fd0
|   |-- ee
|   |   `-- ff1409a04ba4ccaf3f8fd119de8ade1eaf8e31
|   |-- f4
|   |   `-- ffd9071d165902fbbdf9c60f9a3b33ae079849
|   |-- f5
|   |   `-- ecb77f858a338b8f67f01c81b9c147a81b12b6
|   |-- fc
|   |   `-- 4be3706059fe7aac8bbe1a449b92a8e81a2792
|   |-- fe
|   |   `-- a0c9178c67c00e9d5fd66538784c1de3fec302
|   |-- info
|   `-- pack
|-- ORIG_HEAD
|-- packed-refs
`-- refs
    |-- heads
    |   `-- main
    |-- remotes
    |   `-- origin
    |       |-- HEAD
    |       `-- main
    `-- tags

86 directories, 113 files
[euto@VM-4-13-centos linux]$ 

        这是我的一个git仓库,其中:

  • index就是暂存区,add以后的内容都添加到了这里
  • HEAD就是默认指向master分支的指针
//这里我修改我的默认分支为main
[euto@VM-4-13-centos linux]$ cat .git/HEAD 
ref: refs/heads/main
[euto@VM-4-13-centos linux]$ 

        而默认的master分支,其实就是最新一次提交的commit id

//最新的commit id
[euto@VM-4-13-centos linux]$ cat .git/refs/heads/main 
afb5f3234eb68146ba559ba2e5294c5074b6ea50
[euto@VM-4-13-centos linux]$ 
  • objectsgit的对象库,里面包含着记录每一次修改的git对象。当执行git add命令时,暂存区的目录树被更新,同时工作区的修改内容被写入到对象库中新创建的一个git对象中。
[euto@VM-4-13-centos linux]$ ls .git/objects/
00  06  0d  19  28  32  38  44  4a  5c  62  67  71  7a  98  ad  b1  b6  c6  d1  d8  ea  f4  fe
03  08  12  1e  2d  33  3a  45  54  5e  63  68  78  82  9e  ae  b4  bd  ce  d2  dd  ed  f5  info
04  0c  14  27  2e  34  42  46  57  5f  64  6a  79  96  9f  af  b5  c0  cf  d7  e5  ee  fc  pack

        要查找objects中的git对象时,将每一次提交的commit id分为两部分,前2位是文件夹名称,后38位是文件名称。

        找到该文件后,一般不能直接查看文件内容,该类文件是经过SHA(安全哈希算法)加密过的文件,不过可以使用 git cat-file 命令查看文件内容。

        比如我们查看最新一次提交的commit id的git 对象。

[euto@VM-4-13-centos linux]$ git cat-file -p  afb5f3234eb68146ba559ba2e5294c5074b6ea50
tree d18e080c80870872840e6a5409cf1c6bb52b4fa3
parent 2e2cb3315239d581ac7e8e837569aa4499804799
parent d7ad7836b2ab00963be1504d50929d2b70e90dac
author Euto <xydbws@163.com> 1710509194 +0800
committer Euto <xydbws@163.com> 1710509194 +0800

main
[euto@VM-4-13-centos linux]$ 
//"main"是最新一次提交的描述

        其中,还有一行

tree d18e080c80870872840e6a5409cf1c6bb52b4fa3

        也使用同样方法打印

[euto@VM-4-13-centos linux]$ git cat-file -p  d18e080c80870872840e6a5409cf1c6bb52b4fa3
100644 blob c6127b38c1aa25968a88db3940604d41529e4cf5	.gitignore
040000 tree 0d4c71acbe849b5d4293208ed3236dc5844793fa	1121
040000 tree 675f84131c79508c1edc4375bc4759d29f044d8b	1123
040000 tree bd4471665031022b2e3a050ae784d90cde7152d3	27
040000 tree 338c0b0e4625d4a35890ded04f70326b968f6a99	313
040000 tree 08b9dcc5629e232dad9fe08331efc7e9cfb0d586	315
100644 blob b5fdfc70e3d67e6d3f679eb6a56f405a5dbe03dc	README.en.md
100644 blob 64d337de3a72a723443b1731999d2719b53fb7eb	README.md
[euto@VM-4-13-centos linux]$ 
//

        打印目录 315

[euto@VM-4-13-centos linux]$ git cat-file -p 08b9dcc5629e232dad9fe08331efc7e9cfb0d586
100644 blob 5e6569d78cd74d9ee7830db323e8d568daa2196a	test.cpp
[euto@VM-4-13-centos linux]$ 

        为了便于对比,此处的test.cpp文件新增一行修改

E>  1 t
    2 
E>  3 dev cp
    4 
    5 //这一行是新增的
    6 "新增一行用于测试"

        完成addcommit后,按照之前的步骤找到最新一次提交的git对象。对比不同git对象同一个文件的记录:

[euto@VM-4-13-centos linux]$ git cat-file -p 8a476b2cdc47f29ec32b951dca2d035dc6103778
t

dev cp


"新增一行用于测试"
[euto@VM-4-13-centos linux]$ git cat-file -p  5e6569d78cd74d9ee7830db323e8d568daa2196a
t

dev cp
[euto@VM-4-13-centos linux]$ 

        总结:

        在add阶段,所有的add操作变动都被记录下来到一个git对象中,而git对象又是树状管理目录,这样发生修改的每一次add都被有条不紊的记录下来。

        在完成commit提交操作后,只生成一个commit id一个commit id对应一个git对象。一次提交会记录add操作后的所有文件内容,此时有的文件发生了修改,有的文件没有发生修改。

        无论如何,本次提交都把当前状态的所有的文件保存下来,即git控制的一个版本。

4.修改文件

        git比其他版本控制器设计给更优秀,是因为git跟踪并管理的,并非是文件,而是修改

        在工作区,对README文件作一些修改。

[euto@VM-4-13-centos linux]$ cat README.md 
//新增一行修改
"========="
[euto@VM-4-13-centos linux]$ 

        此时,本地仓库中README工作区的README是不同的,可以使用git status查看当前仓库在上次提交后是否有文件被修改。

[euto@VM-4-13-centos linux]$ git status 
# On branch main
# Your branch is ahead of 'origin/main' by 16 commits.
#   (use "git push" to publish your local commits)
#
# 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.md
#
no changes added to commit (use "git add" and/or "git commit -a")
[euto@VM-4-13-centos linux]$ 

        上面的结果显示,有哪些文件被修改了,需要添加和提交。但是如何知道修改的具体内容呢?可以使用 git diff [文件] 命令显示暂存区和工作区文件的差异,显示的格式正是Unix通用的diff格式,也可以使用git diff HEAD -- [file]查看版本库和工作区的差异。

[euto@VM-4-13-centos linux]$ git diff README.md
diff --git a/README.md b/README.md
index 64d337d..69b6c49 100644
--- a/README.md
+++ b/README.md
@@ -1,36 +1,2 @@
-# linux
-
-#### 介绍
-这个轮子用来学习linux
-
-#### 软件架构
-软件架构说明
-
-
-#### 安装教程
-
-1.  xxxx
-2.  xxxx
-3.  xxxx
-
-#### 使用说明
-
-1.  xxxx
-2.  xxxx
-3.  xxxx
-
-#### 参与贡献
-
-1.  Fork 本仓库
-2.  新建 Feat_xxx 分支
-3.  提交代码
-4.  新建 Pull Request
-
-
-#### 特技
-
-1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
-2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
-3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
-4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
-5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gite
+//新增一行修改
+"========="
(END)
 git diff HEAD -- README.md

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

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

相关文章

Maven的安装

一、安装 压缩包解压完的目录如下所示&#xff08;此处为绿色免安装版&#xff09;&#xff1a; &#xff08;其余三个文件是针对Maven版本&#xff0c;第三方软件等简要介绍&#xff09; 二、环境变量 前提&#xff1a; jdk最低版本为JAVA7&#xff08;即jdk17&#xff09…

R语言统计分析——重复测量方差分析

参考资料&#xff1a;R语言实战【第2版】 所谓重复测量方差分析&#xff0c;即受试者被测量不止一次。本例使用数据集市co2数据集&#xff1a;因变量是二氧化碳吸收量&#xff08;uptake&#xff09;&#xff0c;自变量是植物类型&#xff08;Type&#xff09;和七种水平的二氧…

Gitness 基础安装

文章目录 Docker 安装注册账户创建项目导入已有仓库配置 Github Token同步源代码仓库 官方链接 Gitness was the next step in the evolution of Drone, from continuous integration to source code hosting, bringing code management and pipelines closer together. Gitnes…

自动化表格处理的革命:智能文档系统技术解析

在当今数据驱动的商业环境中&#xff0c;表格数据的自动化处理成为了企业提高效率、降低成本的关键。企业智能文档系统在智能表格识别方面展现出卓越的性能&#xff0c;通过精准识别和处理各种通用表格&#xff0c;显著提升了企业文档管理的智能化水平。本文将深入探讨该系统在…

STM32的使用方法一

注:我采用的是STM32F103RC芯片、相应的电路图和STM32CubeIDE软件这是在STM32CubeIDE软件定义芯片后&#xff0c;所给的必要的代码逻辑&#xff0c;加上了注释 #include "main.h"/* Private variables ---------------------------------------------------------*//…

Java数据结构(八)——插入排序、希尔排序

文章目录 插入排序算法介绍代码实现复杂度和稳定性 希尔排序算法介绍代码实现复杂度和稳定性 将这两种排序放在一起的原因是它们都属于 “插入”(式)排序。 还有很多排序思想&#xff0c;这里不放在一篇文章介绍是因为会导致篇幅过长&#xff0c;我们会按分类多次介绍不同的排序…

[数据集][目标检测]智慧农业草莓叶子病虫害检测数据集VOC+YOLO格式4040张9类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4040 标注数量(xml文件个数)&#xff1a;4040 标注数量(txt文件个数)&#xff1a;4040 标注…

HTTP协议 HTTPS协议 MQTT协议介绍

目录 一&#xff0e;HTTP协议 1. HTTP 协议介绍 基本介绍&#xff1a; 协议&#xff1a; 注意&#xff1a; 2. HTTP 协议的工作过程 基础术语&#xff1a; 客户端&#xff1a; 主动发起网络请求的一端 服务器&#xff1a; 被动接收网络请求的一端 请求&#xff1a; …

基于MinerU的PDF解析API

基于MinerU的PDF解析API - MinerU的GPU镜像构建 - 基于FastAPI的PDF解析接口支持一键启动&#xff0c;已经打包到镜像中&#xff0c;自带模型权重&#xff0c;支持GPU推理加速&#xff0c;GPU速度相比CPU每页解析要快几十倍不等 主要功能 删除页眉、页脚、脚注、页码等元素&…

实验记录 | 点云处理 | K-NN算法3种实现的性能比较

引言 K近邻&#xff08;K-Nearest Neighbors, KNN&#xff09;算法作为一种经典的无监督学习算法&#xff0c;在点云处理中的应用尤为广泛。它通过计算点与点之间的距离来寻找数据点的邻居&#xff0c;从而有效进行点云分类、聚类和特征提取。本菜在复现点云文章过程&#xff…

【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)

1 图像的算术运算 1.1 图像的加法运算 1.2 图像的减法运算 1.3 图像的融合 2 OpenCV的位运算 2.1 非操作 2.2 与运算 2.3 或和异或 1 图像的算术运算 1.1 图像的加法运算 add opencv使用add来执行图像的加法运算 图片就是矩阵, 图片的加法运算就是矩阵的加法运算, 这就要求加…

notepad下载安装教程

一、强大高效的代码编辑器 Notepad 是一款功能强大的代码编辑器&#xff0c;专为程序员和开发人员设计。无论是编写代码、处理文本文件&#xff0c;还是进行快速编辑&#xff0c;Notepad 都能提供卓越的性能和便利的功能&#xff0c;极大提升您的工作效率。 二、安装详细教程…

双指针(5)_单调性_有效三角形的个数

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 双指针(5)_单调性_有效三角形的个数 收录于专栏【经典算法练习】 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录…

c++stack和list 介绍

stack介绍 堆栈是一种容器适配器&#xff0c;专门设计用于在 LIFO 上下文&#xff08;后进先出&#xff09;中运行&#xff0c;其中元素仅从容器的一端插入和提取。 堆栈作为容器适配器实现&#xff0c;容器适配器是使用特定容器类的封装对象作为其基础容器 的类&#xff0c;提…

mysql可重复读不能解决幻读吗?

1、可重复读和幻读的概念 1.1、可重复读 可重复读是数据库的四个隔离级别之一,可重复读可以保证在一个事物之内读取到的数据永远是相同的(通过mvcc表快照实现的),哪怕这期间有其它事务对数据做了修改,也不会影响当前事务的查询。 1.2、幻读 网上有不少博客说:幻读是一个事物内…

正规表达式例题

解析&#xff1a;从题意可知&#xff0c;a可以有零个或多个&#xff0c;b有1个或多个 选项A&#xff1a;这里a至少有1个&#xff0c;不符合题意 选项B&#xff1a;a^*bb^*&#xff0c;a是0个或多个&#xff0c;b可以是1个或多个&#xff0c;符合题意 选项C和选项D&#xff0…

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1&#xff1a;安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件&#xff0c;完成后可能需要重启 Jenkins。 步骤 2&#xff1a;配置…

尚品汇-支付宝下单接口显示二维码实现(四十六)

目录&#xff1a; &#xff08;1&#xff09;支付功能实现 &#xff08;2&#xff09;保存支付信息 &#xff08;3&#xff09;编写支付宝支付接口 &#xff08;1&#xff09;支付功能实现 支付宝有了同步通知为什么还需要异步通知&#xff1f; 同步回调两个作用 第一是从支付…

密保管家-随机密码本地生成

下载 简介 安全无忧:采用先进的加密算法,确保您的密码安全不外泄。 随机性强:每次生成的密码都是完全随机的,避免模式化,增加破解难度。 易于管理:简洁的界面设计让您轻松管理所有账号的密码。 独立运行:无需网络连接,所有数据本地存储,保护隐私的同时提供便捷的密…

【MATLAB】模拟退火算法

模拟退火算法的MATLAB实现 模拟退火算法简介模拟退火算法应用实例关于计算结果 模拟退火算法简介 1982年&#xff0c;Kirkpatrick 将退火思想引入组合优化领域&#xff0c;提出了一种能够有效解决大规模组合优化问题的算法&#xff0c;尤其对 NP 完全问题表现出显著优势。模拟…