免费word模板下载哪个网站/小红书seo排名优化
文章目录
- Git 是什么
- Git 的优点
- Git 安装
- Linux Ubuntu
- Linux CentOs
- Windows
- Git 基本操作
- 1. 创建 Git 本地仓库
- 2. 配置 Git
- 3. Git工作区、暂存区和版本库
- 4. 添加文件
- 5. 查看 .git 文件
- 6. 修改文件
- 7. 版本回退
Git 是什么
Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。它采用分布式方式,避免中心服务器的单点故障,保障系统的高可用性和稳定性。Git可以作为一种过渡方案来替代BitKeeper,帮助管理Linux内核开发等。总之,Git是一种高效、灵活的版本控制系统,适用于各种规模的项目,是开发人员和管理人员的得力工具。
假设我们在公司中,老板让我们完成一个项目的项目规划书,当我们花了三天写出来这个项目规划书之后,我们就将这个规划书给老板看,但是老板看了之后呢,觉得不满意,让你回去做修改。你又花了一天的时间在上次规划书的基础上对项目规划书做出了修改,你又交给了老板,让老板看修改的是否满意,但是老板还是不同意,又让你回去做出修改,于是你又花了一天的时间在上个规划书的基础上做出修改,这次你将修改后的规划书交给老板看,老板觉得还是不满意,并且说:“我觉得你第二次的项目书写的还不错,就使用第二次的为最终的项目规划书吧。”听到这,你脑子一晕,顿时想把这个项目规划书甩到老板的脸上说:“你耍我呢?”。
那么如何避免上面发生的问题呢?其实我们只需要将每次做出的修改的原稿给保存下来,当修改的时候我们不修改原稿,而是重新拿一个稿子,在之前规划书的基础上进行修改,这样就能够保存每次修改之后的规划书,当老板需要哪一份的时候,我们只需要拿出那个版本的原稿就行了。而我们的 Git 的作用就是这样的。
为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。
⽬前最主流的版本控制器就是 Git。Git 可以控制电脑上所有格式的⽂件,例如doc、excel、dwg、dgn、rvt等等。对于我们开发⼈员来说,Git最重要的就是可以帮助我们管理软件开发项⽬中的源代码⽂件。
Git 的优点
- 分布式版本控制系统:Git是一个分布式版本控制系统,与传统的中央仓库版本控制系统不同。每个开发人员都可以在自己的本地仓库中进行版本控制,无需依赖中央仓库。这使得版本控制更加灵活,提高了团队协作的效率。
- 高效的性能:Git在版本控制方面具有高效的性能,能够快速地完成各种操作,如提交、查看历史记录、合并分支等。这使得开发人员能够更加专注于编码工作,而不是频繁地切换到版本控制工具。
- 强大的分支管理:Git提供了强大的分支管理功能,可以方便地创建、切换、合并分支。这使得团队协作更加方便,不同开发人员可以同时处理不同的功能分支,提高了开发效率。
- 回滚和撤销操作:Git提供了回滚和撤销操作功能,可以轻松地恢复到以前的版本或者撤销错误的操作。这使得开发人员能够更加放心地进行代码修改,减少了因为误操作而带来的损失。
- 跨平台支持:Git可以在各种操作系统上运行,包括Windows、Linux和Mac等。这使得开发人员可以在不同的平台上进行协作,提高了团队协作的效率。
- 强大的社区支持:Git是一个开源项目,拥有庞大的社区支持。开发人员可以轻松地找到相关的资料和解决方案,快速解决问题。同时,社区中还有很多开源项目和工具可以使用,进一步提高了开发效率。
注意事项:
还需要再明确⼀点,所有的版本控制系统,Git 也不例外,其实只能跟踪⽂本⽂件的改动,⽐如 TXT ⽂件,⽹⻚,所有的程序代码等等。版本控制系统可以告诉你每次的改动,⽐如在第5⾏加了⼀个单词 “Linux”,在第8⾏删了⼀个单词 “Windows”。
⽽图⽚、视频这些⼆进制⽂件,虽然也能由版本控制系统管理,但没法跟踪⽂件的变化,只能把⼆进制⽂件每次改动串起来,也就是只知道图⽚从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。
Git 安装
Linux Ubuntu
首先使用 git
命令,看是否已经下载 Git。
如果出现的是下面的页面,表示的是已经下载了 Git。
而出现了 Command 'git' not found, but can be installed with:
则表示未安装 Git。这时就需要使用 apt install git
命令来下载 Git。
因为我这里之前下载过了,所以我是用上面的命令并没有真正下载。
当我们下载 Git 了之后,可以使用 git --version
查看自己的 Git 版本。
Linux CentOs
Linux CentOs 的查看和下载其实和 Ubuntu 差不多,只是下载 Git 的时候,CntOs 需要使用 yum 包管理器,所以就需要使用 yum install git
命令来下载。
Windows
Windows 下载的话大家就去看看这个视频。
https://www.bilibili.com/video/BV1hf4y1W7yT/?p=3&vd_source=b57c3f3e8a7507d4af7322c28f05fdbc
Git 基本操作
1. 创建 Git 本地仓库
仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来。
创建一个 Git 本地仓库的命令是 git init
,命令要在文件目录下执行。
先使用 mkdir gitcode
创建一个文件目录,作为我们的 Git 本地仓库。
使用 mkdir
创建一个文件目录之后,创建的只是一个普通的文件目录,那么如何让他成为一个 Git 本地仓库呢?我们需要使用 git init
命令来创建一个 Git 本地仓库。
创建完成 Git 本地仓库之后,可以发现当前文件目录下出现了一个 .git
隐藏文件目录。
.git ⽬录是 Git 来跟踪管理仓库的,不要⼿动修改这个⽬录⾥⾯的⽂件,不然改乱了,就把 Git 仓库给破坏了。
然后我们使用 tree .git
命令,可以查看 .git
文件的目录结构。
这里每个结构是干什么的,我们现在先不管,后面会为大家介绍。
2. 配置 Git
在创建完成 Git 本地仓库之后,我们还需要对这个仓库进行配置,不然后面的操作可能就会出现问题,这点是非常重要的。
在这里我们主要配置的就是 用户名称 和 e-mail地址 。
配置 Git 本地仓库的 用户名称 和 e-mail 地址需要用到 git config user.name "Your Name"
命令和 git config user.email "Your email"
命令。
那么我们如何看到自己修改的配置呢?可以使用 git config -l
查看当前 Git 仓库的配置。
但是如果我们想要删除之前修改的配置该怎么做呢?可以使用 git config --unset user.name
来删除某个配置。
这里我们删除配置了之后,虽然查看配置的时候,前面删除的配置项还可以看到,但是实际上我们不能够使用这些配置了。这是因为:
- 使用git config -l命令。这个命令会列出所有的Git配置项,包括那些已经被删除的配置项。这是因为Git配置是持久化的,即使你删除了某个配置项,它仍然会保留在.git/config文件中,只是不再被Git使用。
使用 git config user.name "Your Name"
命令配置的只是当前的 Git 本地仓库,但是我们本地可以有多个 Git 本地仓库,如果我们想要让设置的配置在本地所有 Git 仓库都生效的话,就需要在命令中添加 --global
选项。
如果我们使用的是 --global
选项修改的 Git 配置的话,在删除该配置的时候,也需要加上 --global
配置,否则就无法删除成功。
并且可以发现:跟不加 --global
配置不同,加上 --global
配置之后,删除配置,我们无法查看到删除的配置了。
3. Git工作区、暂存区和版本库
Git本地仓库包括三个主要区域:工作区、暂存区和版本库。
- 工作区(Working Directory):工作区是平时存放项目代码的地方,也就是你克隆项目到本地后,项目所在的文件夹目录。你在工作区中对代码进行的修改、新增、删除等操作,都需要经过Git的处理才能被记录。
- 暂存区(Stage/Index):暂存区用于临时存放你的改动,事实上只是一个文件,保存即将提交到文件列表信息。当你使用git add .命令时,会将本地所有新增、变更、删除过的文件的情况存入暂存区中。这个区域的存在是为了让你在提交前,能够再次确认和审查你的改动。
- 版本库(Repository):版本库用于安全存放数据的位置,这里面有你提交到所有版本的数据。当你使用git commit –m “本次操作描述”命令时,会将添加到暂存区的修改的文件提交到本地仓库中。在版本库中,HEAD指针会指向最新放入仓库的版本。你可以随时回退到任何一个历史版本,或者比较不同版本之间的差异。
工作区通常在我们 Git 本地仓库除 .git
文件目录之外的其他文件目录和文件;暂存区则是在 .git
文件目录下的 index
文件(.git/index),我们把暂存区也叫做索引(index);我们的 .git
文件目录则是版本库。
在创建 Git 版本库时,Git 会为我们⾃动创建⼀个唯⼀的 master 分⽀,以及指向 master 的⼀个指针叫 HEAD。(分⽀和HEAD的概念后⾯再说)
但是我们使用 tree .git
命令的时候为什么没有看见 index 文件呢?
这是因为这个 Git 本地仓库是我们新创建的,还没有 add 和 commit,所以也就没生成 index 文件。
当对⼯作区修改(或新增)的⽂件执⾏ git add
命令时,暂存区⽬录树的⽂件索引会被更新。
当执⾏提交操作 git commit
时,master 分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中。
通过新建或粘贴进⽬录的⽂件,并不能称之为向仓库中新增⽂件,⽽只是在⼯作区新增了⽂件。必须要通过使⽤ git add 和 git commit 命令才能将⽂件添加到仓库中进⾏管理!!!
4. 添加文件
当我们在工作区完成修改之后,需要使用 git add [file1] [file2]
命令将修改的文件添加进去暂存区中。
git add
后面可以有多个参数,也就是 git add [file1] [file2]...
一次 add 多个文件,git add
不仅可以支持参数为文件,参数也可以是目录;使用 git add .
是将当前目录下所有修改过的文件添加进暂存区中。
git commit
使用的时候需要加上 -m
选项以及此次 commit
的描述,这部分内容是绝对不可以省略的,并要好好描述,因为这是⽤来记录你的提交细节,是给我们⼈看的。如果我们不加 ReadMe
文件名的话,就是使用 git commit -m "描述"
的话,意思就是将暂存区中所有的内容提交到本地仓库中。
commit 之后出现的日志会显示出我们本次提交的描述以及提交了多少个文件,和文件中插入或者减少了多少行内容。
这次我们没在文件中写入数据,所以这里的插入就是0。
使用 git log
可以查看历史提交记录。
git log
显示的内容是时间由据现在由近及远的顺序。
(Head -> master)表示 Head 指针指向的 master 文件中的位置。
如果我们觉得 git log
显示的数据看的不是很方便,我们可以添加 --pretty=oneline
选项,使得显示的数据更加美观。
这里的 3cafdca9e629aec30e2ac997a508c25705966019
是 commit id,它不是由简单的 1、2、3 得来的,而是经过了哈希计算得来的哈希值。
5. 查看 .git 文件
当我们进行了 add 和 commit 操作之后,就会发现,跟之前的 .git 文件不同,这里新出现了 index(暂存区)和 objects 文件/文件夹。
HEAD 就是我们默认指向的 master 分支的指针:
objects 为 Git 的对象库,⾥⾯包含了创建的各种版本库对象及内容。当执⾏ git add 命令时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,就位于 “.git/objects” ⽬录下。
objects 文件夹中的每个 object 文件都是工作区每次修改的文件内容,也就是说,其实实际数据是存放在 object 文件中的,而暂存区(索引)和 master 中存放的只是对应的每个 object 文件的索引。当使用 add 操作将工作区中修改的内容提交到暂存区中的时候,在暂存区中会生成一个 object 文件和对应的索引文件,object 文件中存放的是 add 的文件中的内容,而索引文件中存放的是对应的 object 文件的索引;当使用 commit 操作之后,也是讲暂存区中存在的索引文件提交到 master 文件中而已。
而通过观察 commit id 和 .git/objects 文件可以发现其实 commit id 可以分为两个娃部分:其前2位是⽂件夹名称,后38位是⽂件名称。
3cafdca9e629aec30e2ac997a508c25705966019
找到这个⽂件之后,⼀般不能直接看到⾥⾯是什么,该类⽂件是经过 sha (安全哈希算法)加密过的⽂件,但是我们可以使⽤ git cat-file
命令来查看版本库对象的内容。
使用 git cat-file
需要加上 -p
选项。
查看这个文件之后,会出现我们前面设置的 用户名称 和 用户邮件地址,以及 tree,那么这个 tree 是什么意思呢?我们继续看 tree 中的 commit id。
这个 tree 对象表示提交时的项目状态(即文件和目录的布局)。tree 对象并不包含实际的项目数据,只包含文件和目录的元数据。它基本上就是一个指向实际文件的符号链接。
这个是我们第一次提交的,根据 commit id 观察出来的内容,而通过第二次 commit id 我们可以观察出额外的信息。
parent 部分显示的是该 commit 的父 commit。一个 commit 有多个父 commit 的情况叫做 merge commit。一个标准的提交(不是 merge commit)只有一个父 commit,那就是它前一次的提交。通过跟踪这些父 commit,你可以回溯到历史上的任意提交,这是 Git 版本控制的核心功能之一。
要想将工作区中修改的文件提交到版本库中,需要经过 add 操作和 commit 操作,先将修改的文件添加到暂存区,然后在添加到版本库中才可以,如果少了 add 操作,是无法完成提交的。
这里只有 file4 被添加进了版本库中,而 file5 由于没有 add,所以并没有最终添加到版本库中。
6. 修改文件
当我们对文件做了修改的话,需要重新使用 add 操作和 commit 操作,将修改的文件添加进版本库中。
什么是修改?⽐如你新增了⼀⾏,这就是⼀个修改,删除了⼀⾏,也是⼀个修改,更改了某些字符,也是⼀个修改,删了⼀些⼜加了⼀些,也是⼀个修改,甚⾄创建⼀个新⽂件,也算⼀个修改。
此时,仓库中的 ReadMe 和我们⼯作区的ReadMe是不同的,如何查看当前仓库的状态呢? git status 命令⽤于查看在你上次提交之后是否有对⽂件进⾏再次修改。
使用 git status
显示出来的数据表示 ReadMe 文件被修改,并且当前文件等待被 add。
使用 add 之后再查看仓库状态可以看到 ReadMe 文件被修改,并且这个文件等待被 commit。
当修改文件之后,我们又如何查看我们修改的内容吗?当然可以,虽然我们可以直接查看文件中的内容,然后对比差异,但是如果文件修改的内容较多且间隔时间较长,我们又该如何区别呢?
git diff [file]
命令⽤来显⽰暂存区和⼯作区⽂件的差异,显⽰的格式正是Unix通⽤的diff格式。也可以使⽤ git diff HEAD -- [file]
命令来查看版本库和⼯作区⽂件的区别。
- diff --git a/ReadMe b/ReadMe:这行表示正在查看ReadMe文件在两个不同版本之间的差异。
- index 6b15c4f…7945298 100644:这行提供了有关文件的元数据。index 6b15c4f…7945298表示原始版本的文件内容由SHA-1哈希值6b15c4f标识,而新版本的文件内容由7945298标识。100644是文件的权限模式,表示这是一个普通文件。
- — a/ReadMe:这行表示原始版本的文件是ReadMe,位于a/目录下。
- +++ b/ReadMe:这行表示新版本的文件是ReadMe,位于b/目录下。
- @@ -1,3 +1,4 @@:这行表示差异的开始。-1,3表示原始文件的开始到第3行(不包括第3行),而+1,4表示新文件的开始到第4行(不包括第4行)。
- hello git、hello git、hello world:这些行显示了原始文件的内容。
- +hello world:这行表示在新文件中添加了“hello world”这一行。
7. 版本回退
前面说了 Git 能够管理文件的历史版本,这也是版本控制器的重要能力,就相当于我们前面的项目规划书,就类似前面的项目规划书,因为版本的管理,已经存在了三个版本的规划书,老板说让你在第二个版本的基础上进行修改,那么这时候你只需要拿出第二个版本的规划书的原稿就可以了。
如果只是回退工作区中的文件的话,可以直接用 git checkout [fikeName]
来回退。
那么在 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 上上⼀个版本
-
- 以此类推…
我们先准备下数据:
假设我们现在需要将该文件恢复到第二次提交的情况,那么就需要更改工作区、暂存区和版本库中的数据,那么就需要用到 --hard
选项。
通过观察test1文件中的内容和 git log --pretty=oneline
显示的数据我们可以看到当前 test1 的版本已经回到了第二次的版本了。
如果我们现在又想回到第三个版本的话,该怎么办呢?前面说了 git reset
命令后面的参数可以是 commit id,所以我们就可以将后面的参数改为第三次提交的 commit id。
虽然我们可以使用 commit id 回退到指定的版本,但是如果我们因为工作时间太长,不能够直接从终端找到 commit id 或者 commit id 丢失了之后的话,别着急,我们可以使用 git reflog
补救一下,该命令⽤来记录本地的每⼀次命令。
这里并没有出现前面类似的 commit id ,而是出现了 1bb6079
这样的数字,那么这是什么呢?这其实是 commit id 中的一部分,通过 commit id 的这一部分是可以回到指定的版本的。
值得说的是,Git 的版本回退速度⾮常快,因为 Git 在内部有个指向当前分⽀(此处是master)的 HEAD 指针, refs/heads/master 文件⾥保存当前 master 分⽀的最新 commit id 。当我们在回退版本的时候,Git 仅仅是给 refs/heads/master 中存储⼀个特定的version,可以简单理解成如下⽰意图:
当需要回退的时候,只需要更改 .git/refs/heads/master
中存储的 version 版本就可以了。
使用 git reset 的前提是,在 commit 之后没有使用 push 操作将本地仓库的文件提交到远程仓库中,如果已经 push 将本地仓库的文件提交到远程仓库的话,再使用 git reset 的话,远程仓库的文件是没有修改的,而如果有远程仓库的话,我们最终看的还是远程仓库的文件,所以使用 git reset 的前提是没有将本地仓库的文件 push 到远程仓库之前。
相关文章:

【Git】Git基本操作
文章目录 Git 是什么Git 的优点Git 安装Linux UbuntuLinux CentOsWindows Git 基本操作1. 创建 Git 本地仓库2. 配置 Git3. Git工作区、暂存区和版本库4. 添加文件5. 查看 .git 文件6. 修改文件7. 版本回退 Git 是什么 Git是一个免费的、开源的分布式版本控制系统,…...

JavaSE学习笔记 Day20
JavaSE学习笔记 Day20 个人整理非商业用途,欢迎探讨与指正!! 上一篇 文章目录 JavaSE学习笔记 Day20十七、数据结构与算法17.1算法17.1.1冒泡排序17.1.2选择排序17.1.3插入排序17.1.4三个排序的区别 17.2顺序表17.2.1顺序表代码实现17.2.2顺…...

【蓝桥杯选拔赛真题52】python空调模式 第十四届青少年组蓝桥杯python 选拔赛比赛真题解析
目录 python空调模式 一、题目要求 1、编程实现 2、输入输出...

Android Studio: 解决Gradle sync failed 错误
文章目录 1. 前言2. 错误情况3. 解决办法3.1 获取gradle下载地址3.2 获取gradle存放目录3.3 替换并删除临时文件3.4 触发Try Again 4. 执行成功 1. 前言 今天调试项目,发现新装的AS,在下载gradle的过程中,一直显示连接失败,Gradl…...

【手写数据库】从零开始手写数据库内核,行列混合存储模型,学习大纲成型了
目录 专栏内容: 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对故障容灾的支持。 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以…...

机器学习中的一些经典理论定理
PAC学习理论 当使用机器学习方法来解决某个特定问题时,通常靠经验或者多次试验来选择合适的模型、训练样本数量以及学习算法收敛的速度等。但是经验判断或多次试验往往成本比较高,也不太可靠,因此希望有一套理论能够分析问题难度、计算模型能…...

c语言:成本100元,40%的利润怎么计算|练习题
一、利润的计算公式: 利润售价-成本 售价成本/(1-利润率) 二、用c语言代码表示为: 如图: 三、计算源代码【带注释】 #include <stdio.h> int main() { float cost;//成本变量 int prof_rate;//利润率变量 float price;//…...

【Python必做100题】之第二十二题(复制列表)
题目:将一个列表的数据复制到另一个列表中 重点:确保复制到位要导入copy方法进行深度复制 代码如下: #将一个列表的数据复制到另一个列表中 import copy list [1,2,3,4] print(list) list1 copy.copy(list) list[0] 30 print(list) pri…...

Java 数据结构篇-实现堆的核心方法与堆的应用(实现 TOP-K 问题:最小 k 个数)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 堆的说明 2.0 堆的成员变量及其构造方法 3.0 实现堆的核心方法 3.1 实现堆的核心方法 - 获取堆顶元素 peek() 3.2 实现堆的核心方法 - 下潜 down(int i) 3.3 实…...

startUML6.0.1破解方法
startUML6.0.1破解方法 文章目录 startUML6.0.1破解方法1.startUML6.0.1快速破解2.概述3.安装Nodejs4.安装asar5.修改app.asar中的源码6.将修改后的源码重新压缩7.覆盖官方的asar文件8.重启startUML9.参考文档 1.startUML6.0.1快速破解 后绪步骤可以不看,直接下载我…...

Python实现多种图像分割方法:基于阈值分割和基于区域分割
Python实现多种图像分割方法:基于阈值分割和基于区域分割 图像分割是图像分析的第一步,是计算机视觉的基础,但也是图像处理中最困难的问题之一。经典的计算机视觉任务,如目标检测、图像识别等都和图像分割相关,图像分…...

SQL学习笔记+MySQL+SQLyog工具教程
文章目录 1、前言2、SQL基本语言及其操作2.1、CREATE TABLE – 创建表2.2、DROP TABLE – 删除表2.3、INSERT – 插入数据2.4、SELECT – 查询数据2.5、SELECTDISTINCT – 去除重复值后查询数据2.6、SELECTWHERE – 条件过滤2.7、AND & OR – 运算符2.8、ORDER BY – 排序2…...

SpringBoot的日志管理
🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…...

leetcode---76. 最小覆盖子串 [C++/滑动窗口+哈希表]
原题:76. 最小覆盖子串 - 力扣(LeetCode) 题目解析: 此题在这道题的基础上进行理解会更简单 leetcode --- 30. 串联所有单词的子串[C 滑动窗口/双指针]-CSDN博客 本题要求在s字符串中找到含有t字符串所有字符的最短子串。 也就是…...

Kafka 分级存储在腾讯云的实践与演进
导语 腾讯云消息队列 Kafka 内核负责人鲁仕林为大家带来了《Kafka 分级存储在腾讯云的实践与演进》的精彩分享,从 Kafka 架构遇到的问题与挑战、Kafka 弹性架构方案类比、Kafka 分级存储架构及原理以及腾讯云的落地与实践四个方面详细分享了 Kafka 分级存储在腾讯云…...

域架构下的功能安全思考
来源:联合电子 随着整车电子电气架构的发展,功能域控架构向整车集中式区域控制演进。新的区域控制架构下,车身控制模块(BCM),整车控制单元(VCU),热管理系统(TMS)和动力底…...

python多线程介绍
每个库或模块都有其特定的用途和优势,选择哪一个取决于具体的任务需求、计算资源。一般可以将任务分成两类: I/O 密集型任务:这些任务的瓶颈主要在于等待外部操作,如磁盘读写或网络通信。在这些等待期间,CPU 大部分时间…...

征文榜单 | 腾讯云向量数据库获奖名单公布
为了帮助开发者更快、更便捷地构建应用程序,有效提高开发人员生产力,腾讯云推出了AI原生向量数据库。它能提供全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据,是国内首个从接入层、计算层、到存储层提供…...

如何预防[[MyFile@waifu.club]].wis [[backup@waifu.club]].wis勒索病毒感染您的计算机?
导言: 近期,一种新兴的威胁[[MyFilewaifu.club]].wis [[backupwaifu.club]].wis勒索病毒,引起了广泛关注。这种恶意软件通过其高度复杂的加密算法,威胁着用户和组织的数据安全。本文将深入介绍[[MyFilewaifu.club]].wis [[backup…...

中国风春节倒计时【实时倒计时】
<head><meta charset="UTF-8"><meta name="apple-mobile-web-app-title...

基于RBAC的k8s集群权限管控案例
在日常的kubernetes集群维护过程中,常常涉及多团队协作,不同的团队有不同的操作和权限需求。比如,运维团队需要有node的所有操作权限,以便对集群进行节点的扩缩容等日常维护工作,但资产运营团队通常只需要node的查看权…...

【华为数据之道学习笔记】5-11 算法模型设计
算法是指训练、学习模型的具体计算方法,也就是如何求解全局最优解,并使得这个过程高效且准确,其本质上是求数学问题的最优化解,即算法是利用样本数据生成模型的方法。算法模型是根据业务需求,运用数学方法对数据进行建…...

Flink系列之:SELECT WHERE clause
Flink系列之:SELECT & WHERE clause 一、SELECT & WHERE clause二、SELECT DISTINCT 适用于流、批 一、SELECT & WHERE clause SELECT 语句的一般语法是: SELECT select_list FROM table_expression [ WHERE boolean_expression ]table_e…...

C#基础——委托、Action和Func的使用
1、委托 委托(Delegate)是一种类型,可以用来表示对一个或多个方法的引用。委托提供了一种方便的方式来将方法作为参数传递给其他方法,或将方法存储在数据结构中以供以后调用。 不带参数且没返回值的委托 delegate void HDLDelega…...

不止业务缓存,分布式系统中还有哪些缓存?
缓存是分布式系统开发中的常见技术,在分布式系统中的缓存,不止 Redis、Memcached 等后端存储;在前端页面、浏览器、网络 CDN 中也都有缓存的身影。 缓存有哪些分类 如果你是做业务开发的话,提起缓存首先想到的应该是应用 Redis&…...

Java 基础学习(十三)集合框架、List集合
1 集合框架 1.1 Collection 1.1.1 集合框架概述 Java 集合框架是一组实现了常见数据结构(如列表、树集和哈希表等)的类和接口,用于存储一组数据。 开发者在使用Java的集合类时,不必考虑数据结构和算法的具体实现细节ÿ…...

el-select二次封装实现可分页加载数据
使用el-select时一次性渲染几百条数据时会造成页面克顿, 可以通过分页来实现, 这里我用的方式为默认获取全部数据, 然后一次性截取10条进行展示, 滚动条触底后会累加, 大家也可以优化为滚动条触底后发送请求去加载数据 创建自定义指令customizeFocus用户懒加载 在utils文件夹(…...

css实现0.5px宽度/高度显——属性: transform: scale
在大多数设备上,实际上无法直接使用 CSS 来精确地创建 0.5 像素的边框。因为大多数屏幕的最小渲染单位是一个物理像素,所以通常只能以整数像素单位渲染边框。但是,有一些技巧可以模拟出看起来像是 0.5 像素的边框。 这里介绍使用:…...

html懒人加载实现
在HTML中,懒加载(Lazy Load)是一种延迟加载图片或其他资源的技术,它可以提高页面的加载速度和性能。下面是一种实现懒加载的方法: 设置默认占位图片:在HTML中,为要延迟加载的图片设置一个默认的…...

Axure情形动作篇(ERP登录效验)
目录 一、ERP系统用户登录效验 1.1 完成步骤 1.2 最终效果 二、省市区联动 三、ERP菜单栏页面跳转 四、下拉加载效果实现 4.1 加载动画实现步骤 4.2 下划界面加载实现 4.3 最终效果 一、ERP系统用户登录效验 1.1 完成步骤 首先搭建ERP系统的登录界面(输入…...