Git安装配置保姆级教程和Git创建仓库的基本原理和常用命令

目录

前言

一、Git简介

1.Git 与 SVN 区别点

2.Git的介绍

3.Git 工作流程

4.Git 工作区、暂存区和版本库

二、Git安装配置

1.Linux 平台上安装

2.Windows 平台上安装

三、Git 创建仓库和下载

1、首先需要注册一个gitee账号 

2.git初始化并提交到远程仓库

3.另一用户下载该仓库文件

四、使用git代码冲突场景和解决方案

五、Git 基本原理和常用命令

1.创建仓库命令

2.提交与修改

提交日志

远程操作

git commit、git push、git pull、 git fetch、git merge 的含义与区别

3.Git 常用命令大全


前言

        在当今的软件开发领域,高效的版本控制系统是确保团队协作顺畅、代码质量可控的关键。Git 作为一个分布式版本控制系统,凭借其强大的分支管理、协作能力和高效的性能,成为了众多开发者首选的工具。本文将深入探讨 Git 的基本概念、与传统版本控制系统的对比、常用命令以及其理论原理,帮助读者全面了解并熟练运用 Git。

一、Git简介

        Git 是由 Linux 之父 Linus Torvalds 设计的分布式版本控制系统,最初是为了管理 Linux 内核开发而创建的。与传统的集中式版本控制系统(如 SVN)不同,Git 让每个开发者都拥有完整的本地仓库,可以独立地进行版本控制和提交。这种分布式的设计使得 Git 具有出色的分支管理能力和协作效率。

1.Git 与 SVN 区别点

  • 1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

  • 2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

  • 3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

  • 4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

  • 5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

2.Git的介绍

Git的基本工作原理和它是如何进行版本控制的

        Git的基本工作原理是通过对文件系统的快照来进行版本控制。当你提交文件时,Git并不会直接保存这些文件的变化,而是对当前的文件状态进行快照,并保存一个指向该快照的索引。这个索引类似于一个指向快照的指针,它记录了文件的状态和变化,并以此构建出文件的版本历史。这样做的好处是,Git能够非常高效地处理大量的文件和项目,同时保证了数据的完整性。

Git的分支管理有哪些特色和优点

        Git的分支管理非常灵活,开发者可以轻松地创建、合并和删除分支,这为并行开发和实验性工作提供了便利。每个分支都可以独立进行开发,而不会干扰其他分支的工作,最后再将不同分支的修改合并为一个新的提交。这种分支管理方式使得团队协作更为高效,同时也降低了出错的风险。

Git在团队协作中如何提高团队的效率和协作能力

        在团队协作中,Git允许每个开发者都有一份完整的本地仓库,可以独立进行版本控制和提交。这种分布式的设计使得团队成员可以在本地独立地进行开发和修改,而不需要依赖网络连接。同时,Git的分支管理功能使得团队能够轻松地进行并行开发和实验性工作,而不会相互干扰。这些特性帮助团队提高了效率和协作能力,使得团队成员可以更加灵活地进行代码管理和协作开发。

3.Git 工作流程

工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

下图展示了 Git 的工作流程:

4.Git 工作区、暂存区和版本库

基本概念:

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

下面该图展示了工作区、版本库中的暂存区和版本库之间的关系:

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。

  • 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

  • 当执行 git rm --cached <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变。

  • 当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

  • 当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

二、Git安装配置

在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。

Git 各平台安装包下载地址为:Git - Downloads

1.Linux 平台上安装

我这里是使用Centos系统安装Git

安装命令

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ yum -y install git-core

$ git --version
git version 2.34.1

我们也可以在官网下载源码包来安装,最新源码包下载地址:Git - Downloads

解压安装下载的源码包:

$ tar -zxf git-2.34.1.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

2.Windows 平台上安装

Git官网如下(注:下载安装2.2以上的版本):

Git下载官网​https://git-scm.com/downloadsicon-default.png?t=N7T8https://git-scm.com/downloads

官网下载: 

安装步骤

三、Git 创建仓库和下载

1、首先需要注册一个gitee账号 

gitee官网icon-default.png?t=N7T8https://gitee.com/

注册登录好之后,接下来我们将创建我们的码云仓库

创建我的仓库

创建成功后一定要保存一下命令信息,因为只会出现一次

2.git初始化并提交到远程仓库

首先在本地新建一个文件夹作为本地仓库用于存储,然后打开Git Bash Here终端

执行全局设置命令

git config --global user.name "孤留光乩"
git config --global user.email "12839247+superm-ctb-learning@user.noreply.gitee.com"

此时在C盘用户路径下会出现一个.gitconfig文件,用于git的全局配置

创建git仓库,并将这个仓库标记为git所托管的本地仓库

Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。

在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。

mkdir glgj-1        ---创建本地仓库文件夹
cd glgj-1        ---进入文件夹
git init          ---初始化文件夹进行全局配置

 

 将文件交给git管理并上传到本地仓库

touch README.md    ---创建文件
git add README.md        ---提交给git管理
git commit -m "first commit"        ---上传到本地仓库

注: 在 Linux 系统中,commit 信息使用单引号 ',Windows 系统,commit 信息使用双引号 "。

所以在 git bash 中 git commit -m '提交说明' 这样是可以的,在 Windows 命令行中就要使用双引号 git commit -m "提交说明"。

提交到远程仓库并推送

git remote add origin https://gitee.com/superm-ctb-learning/glgj-1.git       ---提交到远程仓库
git push -u origin "master"        ---推送

文件的提交(commit)是将本地修改保存到本地仓库中的一个步骤,而推送(push)则是将本地仓库中的提交同步到远程仓库中的过程。 

第一次需要输入账户密码 

可以看到我们的码云仓库中存在该文件 

3.另一用户下载该仓库文件

新建文件夹模拟他人,进入git终端

下载文件和代码需要先拿到仓库的URL

下载代码或文件

git clone URL        ---根据仓库绑定仓库URL地址进行克隆下载

 

git clone 时,可以所用不同的协议,包括 ssh, git, https 等,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码。各种写法如下:

git clone git@github.com:fsliurujie/test.git         --SSH协议
git clone git:github.com/fsliurujie/test.git          --GIT协议
git clone https:github.com/fsliurujie/test.git      --HTTPS协议

四、使用git代码冲突场景和解决方案

在协作开发中,经常会遇到多人对同一文件进行修改导致的代码冲突。这种情况下,Git 提供了多种解决方案来处理代码冲突。

场景: 假设有两个开发者 A 和 B 在不同的本地分支上修改了同一个文件,并尝试将它们推送到远程仓库时,就可能发生代码冲突。

解决方案: 以下是处理代码冲突的通用步骤:

1.拉取最新代码: 在开始处理冲突之前,首先从远程仓库拉取最新的代码:

git fetch origin git checkout your_branch git merge origin/your_branch

2.查找冲突: 如果在合并操作后出现了冲突,Git 会标记出冲突的部分,你可以使用如下命令来查看冲突的文件:

git status

3.手动解决冲突: 找到包含冲突的文件,手动编辑文件以解决冲突。冲突部分一般被包裹在类似以下的标记中:

<<<<<<< HEAD
// 你的修改
=======
// 别人的修改
>>>>>>> other_branch

4.标记为已解决: 当你解决完所有的冲突后,在命令行中执行以下命令标记这些文件为已解决:

git add <conflicted_file>

5.完成合并: 解决所有的冲突后,执行合并操作:

git commit -m "解决代码冲突"

 6.推送修改: 最后,将解决冲突后的代码推送到远程仓库:

git push origin your_branch

五、Git 基本原理和常用命令

Git 常用的是以下 6 个命令:git clonegit pushgit add 、git commitgit checkoutgit pull,后面我们会详细介绍。

说明:

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库

1.创建仓库命令

下表列出了 git 创建仓库的命令:

命令说明
git init初始化仓库
git clone拷贝一份远程仓库,也就是下载一个项目。

2.提交与修改

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。

下表列出了有关创建与提交你的项目的快照的命令:

命令说明
git add添加文件到暂存区
git status查看仓库当前的状态,显示有变更的文件。
git diff比较文件的不同,即暂存区和工作区的差异。
git commit提交暂存区到本地仓库。
git reset回退版本。
git rm将文件从暂存区和工作区中删除。
git mv移动或重命名工作区文件。
git checkout分支切换。
git switch (Git 2.23 版本引入)更清晰地切换分支。
git restore (Git 2.23 版本引入)恢复或撤销文件的更改。

提交日志

命令说明
git log查看历史提交记录
git blame <file>以列表形式查看指定文件的历史修改记录

远程操作

命令说明
git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并

git commit、git push、git pull、 git fetch、git merge 的含义与区别

  •  git commit:是将本地修改过的文件提交到本地库中;
  •  git push:是将本地库中的最新信息发送给远程库;
  •  git pull:是从远程获取最新版本到本地,并自动merge;
  •  git fetch:是从远程获取最新版本到本地,不会自动merge;
  •  git merge:是用于从指定的commit(s)合并到当前分支,用来合并两个分支;
$ git merge -b  // 指将 b 分支合并到当前分支

git pull 相当于 git fetch + git merge。

3.Git 常用命令大全

git 常用命令:

git init                                                  # 初始化本地git仓库(创建新仓库)
git config --global user.name "xxx"                       # 配置用户名
git config --global user.email "xxx@xxx.com"              # 配置邮件
git config --global color.ui true                         # git status等命令自动着色
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
git config --global --unset http.proxy                    # remove  proxy configuration on git
git clone git+ssh://git@192.168.53.168/VT.git             # clone远程仓库
git status                                                # 查看当前版本状态(是否修改)
git add xyz                                               # 添加xyz文件至index
git add .                                                 # 增加当前子目录下所有更改过的文件至index
git commit -m 'xxx'                                       # 提交
git commit --amend -m 'xxx'                               # 合并上一次提交(用于反复修改)
git commit -am 'xxx'                                      # 将add和commit合为一步
git rm xxx                                                # 删除index中的文件
git rm -r *                                               # 递归删除
git log                                                   # 显示提交日志
git log -1                                                # 显示1行日志 -n为n行
git log -5
git log --stat                                            # 显示提交日志及相关变动文件
git log -p -m
git show dfb02e6e4f2f7b573337763e5c0013802e392818         # 显示某个提交的详细内容
git show dfb02                                            # 可只用commitid的前几位
git show HEAD                                             # 显示HEAD提交日志
git show HEAD^                                            # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本
git tag                                                   # 显示已存在的tag
git tag -a v2.0 -m 'xxx'                                  # 增加v2.0的tag
git show v2.0                                             # 显示v2.0的日志及详细内容
git log v2.0                                              # 显示v2.0的日志
git diff                                                  # 显示所有未添加至index的变更
git diff --cached                                         # 显示所有已添加index但还未commit的变更
git diff HEAD^                                            # 比较与上一个版本的差异
git diff HEAD -- ./lib                                    # 比较与HEAD版本lib目录的差异
git diff origin/master..master                            # 比较远程分支master上有本地分支master上没有的
git diff origin/master..master --stat                     # 只显示差异的文件,不显示具体内容
git remote add origin git+ssh://git@192.168.53.168/VT.git # 增加远程定义(用于push/pull/fetch)
git branch                                                # 显示本地分支
git branch --contains 50089                               # 显示包含提交50089的分支
git branch -a                                             # 显示所有分支
git branch -r                                             # 显示所有原创分支
git branch --merged                                       # 显示所有已合并到当前分支的分支
git branch --no-merged                                    # 显示所有未合并到当前分支的分支
git branch -m master master_copy                          # 本地分支改名
git checkout -b master_copy                               # 从当前分支创建新分支master_copy并检出
git checkout -b master master_copy                        # 上面的完整版
git checkout features/performance                         # 检出已存在的features/performance分支
git checkout --track hotfixes/BJVEP933                    # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支
git checkout v2.0                                         # 检出版本v2.0
git checkout -b devel origin/develop                      # 从远程分支develop创建新本地分支devel并检出
git checkout -- README                                    # 检出head版本的README文件(可用于修改错误回退)
git merge origin/master                                   # 合并远程master分支至当前分支
git cherry-pick ff44785404a8e                             # 合并提交ff44785404a8e的修改
git push origin master                                    # 将当前分支push到远程master分支
git push origin :hotfixes/BJVEP933                        # 删除远程仓库的hotfixes/BJVEP933分支
git push --tags                                           # 把所有tag推送到远程仓库
git fetch                                                 # 获取所有远程分支(不更新本地分支,另需merge)
git fetch --prune                                         # 获取所有原创分支并清除服务器上已删掉的分支
git pull origin master                                    # 获取远程分支master并merge到当前分支
git mv README README2                                     # 重命名文件README为README2
git reset --hard HEAD                                     # 将当前版本重置为HEAD(通常用于merge失败回退)
git rebase
git branch -d hotfixes/BJVEP933                           # 删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)
git branch -D hotfixes/BJVEP933                           # 强制删除分支hotfixes/BJVEP933
git ls-files                                              # 列出git index包含的文件
git show-branch                                           # 图示当前分支历史
git show-branch --all                                     # 图示所有分支历史
git whatchanged                                           # 显示提交历史对应的文件修改
git revert dfb02e6e4f2f7b573337763e5c0013802e392818       # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818
git ls-tree HEAD                                          # 内部命令:显示某个git对象
git rev-parse v2.0                                        # 内部命令:显示某个ref对于的SHA1 HASH
git reflog                                                # 显示所有提交,包括孤立节点
git show HEAD@{5}
git show master@{yesterday}                               # 显示master分支昨天的状态
git log --pretty=format:'%h %s' --graph                   # 图示提交日志
git show HEAD~3
git show -s --pretty=raw 2be7fcb476
git stash                                                 # 暂存当前修改,将所有至为HEAD状态
git stash list                                            # 查看所有暂存
git stash show -p stash@{0}                               # 参考第一次暂存
git stash apply stash@{0}                                 # 应用第一次暂存
git grep "delete from"                                    # 文件中搜索文本“delete from”
git grep -e '#define' --and -e SORT_DIRENT
git gc
git fsck

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯每日一题2023.11.9

包子凑数 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 对于此题是一个简单DP的翻版问题&#xff0c;若能凑出当前的包子数&#xff0c;则凑出之前一定为dp[i - a[j]]&#xff0c;若表示出的dp[i]不是0则说明是一定存在数可以被凑出的&#xff0c;由题意&#xff1a;若凑不出的…

汽车工业生产线数字孪生可视化管理平台,赋予工厂车间数字化智慧化管理

在工业4.0 的时代背景下&#xff0c;随着企业数字化进程的推进&#xff0c;数字孪生可视化技术逐渐在汽车行业得到广泛应用&#xff0c;数字孪生智慧工厂的建设也成为了汽车行业数字化转型的趋势之一。汽车制造业属于典型的离散制造行业&#xff0c;汽车生产包含冲压、焊接、涂…

微机原理3

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。 1. 在机器数中&#xff0c;零的表示形式唯一的编码是() A. 原码 B. 补码 C.移码 D. 反码 2,用于定义常数、变量的内存空间分配和定位的是()。 A. 伪指令 B.机器指令…

【Python】数据分析案例:世界杯数据可视化

文章目录 前期数据准备导入数据 分析&#xff1a;世界杯中各队赢得的比赛数分析&#xff1a;先打或后打的比赛获胜次数分析&#xff1a;世界杯中的抛硬币决策分析&#xff1a;2022年T20世界杯的最高得分者分析&#xff1a;世界杯比赛最佳球员奖分析&#xff1a;最适合先击球或追…

VM17虚拟机设置网络,本地使用工具连接虚拟机

VM17虚拟机设置网络&#xff0c;本地使用工具连接虚拟机 下载及安装虚拟机不再说明&#xff0c;网络一堆教程。此处只对VM17设置网路及本地使用工具连接虚拟机操作&#xff0c;进行说明。 我下载的是VM17&#xff0c;网上有说VM16是较稳定的版本。想尝尝鲜&#xff0c;结果耗…

debian 已安装命令找不到 解决方法

前言&#xff1a;安装了debian系统&#xff0c;更新完软件包安装软件之后发现很多命令找不到&#xff0c;查找命令路径发现命令已经安装了&#xff0c;但是没办法直接使用 更新软件包 &#xff08;第一次安装的系统一定要执行&#xff0c;不然可能无法安装软件&#xff09; apt…

leetcode:762. 二进制表示中质数个计算置位(python3解法)

难度&#xff1a;简单 给你两个整数 left 和 right &#xff0c;在闭区间 [left, right] 范围内&#xff0c;统计并返回 计算置位位数为质数 的整数个数。 计算置位位数 就是二进制表示中 1 的个数。 例如&#xff0c; 21 的二进制表示 10101 有 3 个计算置位。 示例 1&#xf…

简单好看个人引导页毛玻璃页面 HTML 源码

毛玻璃个人引导页源码&#xff0c;界面简洁&#xff0c;已测可完美搭建&#xff0c;UI非常不错的&#xff0c;有兴趣的自行去安装体验吧&#xff0c;其它就没什么好介绍的了。 学习资料源代码&#xff1a;百度网盘 请输入提取码&#xff1a;ig8c

微信小程序将后端返回的图片文件流解析显示到页面

说明 由于请求接口后端返回的图片格式不是一个完整的url,也不是其他直接能显示的图片格式&#xff0c;是一张图片 后端根据模板与二维码生成图片,返回二进制数据 返回为文件流的格式,用wx.request请求的时候&#xff0c;就自动解码成为了下面这样的数据数据格式,这样的数据没…

Window环境NFS服务务器搭建及连接

1.NFS服务端搭建&#xff0c; 下载haneWIN NFS 服务端软件&#xff08;工具下载路径&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1HXeQ8nIY4RHVltd0uAvFaw 提取码&#xff1a;w18j &#xff09; 2.安装haneWIN NFS 服务端软件比较简单&#xff0c;直接点下一步即可…

怎么将pdf转换成word?

怎么将pdf转换成word&#xff1f;将pdf文件转换成word是一件非常重要的转换技能&#xff0c;将pdf转换成word可以解决非常多的问题&#xff0c;总结起来主要有以下这些&#xff1a;编辑文本&#xff1a;① PDF文件通常是不可编辑的&#xff0c;而将其转换为Word格式后&#xff…

c#数据类型

常量 /*常量是固定的量&#xff0c;在运行过程中不可以改变的量 const 来修饰不能改变的量*/ // public private protected internal 是访问修饰符using System.Security.Cryptography.X509Certificates;namespace ConsoleApp1 {internal class Program{public const int a 1…

Semantic-Guided Zero-Shot Learning for Low-Light ImageVideo Enhancement

论文阅读之无监督低光照图像增强 Semantic-Guided Zero-Shot Learning for Low-Light Image/Video Enhancement 代码&#xff1a; https://github.com/ShenZheng2000/SemantiGuided-Low-Light-Image-Enhancement 在低光条件下增加亮度的一个可行方法是使用更高的ISO或更长时间…

qt-C++笔记之Qt中的时间与定时器

qt-C笔记之Qt中的时间与定时器 code review! 文章目录 qt-C笔记之Qt中的时间与定时器一.Qt中的日期时间数据1.1.QTime&#xff1a;获取当前时间1.2.QDate&#xff1a;获取当前日期1.3.QDateTime&#xff1a;获取当前日期和时间1.4.QTime类详解1.5.QDate类详解1.6..QDateTime类…

IP可视对讲实时录制系统

介绍 软件架构 技术支持 CallRecored介绍 IP可视对讲实时录制系统设计了数据库表&#xff0c;并完成了数据库建模&#xff0c;采用了视频编解码技术&#xff0c;高效网络传输&#xff0c;磁盘高效读写技术&#xff0c;以及提供开放接口。 系统客户端采用扁平化UI&#xff0c;…

如何设计vue项目的权限管理?

权限管理的重要性及必要性 数据安全&#xff1a;权限管理可以确保只有具有相应权限的用户能够访问和操作特定的数据。这可以保护敏感数据不被未授权的用户访问&#xff0c;从而提高数据的安全性。功能控制&#xff1a;权限管理可以根据用户的角色和权限设置&#xff0c;控制用户…

【java:牛客每日三十题总结-3】

java:牛客每日三十题总结 总结如下 总结如下 集合相关知识点 Collection主要的子接口: List:可以存放重复内容 Set:不能存放重复内容,所有重复的内容靠hashCode()和equals()两个方法区分 Queue:队列接口 SortedSet:可以对集合中的数据进行排序 Map没有继承Collection接口&…

vue项目js原生属性IntersectionObserver实现图片懒加载

vue项目js原生属性IntersectionObserver实现图片懒加载 IntersectionObserver 使用js原生属性IntersectionObserver实现观察img元素是否处于游览器视口中 懒加载原理&#xff1a;给img设置一个默认url图片&#xff0c;观察图片处于视口内以后&#xff0c;动态改变img的url为自己…

在Three.js中动画 简单案例

在Three.js中&#xff0c;动画是指在场景中创建和控制对象的运动和变化。模型是指通过Three.js加载的3D对象&#xff0c;可以是几何体、网格或复杂的模型文件&#xff08;如.obj或.gltf&#xff09;。动画可以存在于模型中&#xff0c;也可以单独定义。 编辑关键帧&#xff1a;…

数据结构与算法C语言版学习笔记(5)-串,匹配算法、KMP算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、串的定义二、串的存储结构1.顺序结构2.链式结构 三、串的朴素的模式匹配算法&#xff08;暴力匹配算法&#xff09;1.背景2.假设我们要从下面的主串 S"…