当前位置: 首页 > news >正文

Git使用【上】

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:那个传说中的man的主页
🏠个人专栏:题目解析
🌎推荐文章:题目大解析3

在这里插入图片描述


前言
先前有些git命令我在我的其它文章里面已经写过,若要查看可参考【Linux】环境基础开发工具使用,这篇文章不再概述其中的一些命令


目录

  • 👉🏻git 命令
    • git config
    • git diff
    • git log
      • SHA-1 校验和
  • 👉🏻git怎么进行分布式管理?
    • 🌈认识工作区、暂存区和版本库
  • 👉🏻版本回退
    • 概念
    • 当前版本HEAD指的是版本库中的当前版本,还是工作区或暂存区的当前版本?
    • git reset命令
    • git reflog 在版本回退中的作用
    • git版本回退为什么那么快?
  • 👉🏻撤销修改
    • 对于⼯作区的代码,还没有 add
    • 已经 add ,但没有 commit
    • 已经 add ,并且也 commit 了
  • 👉🏻删除文件
  • 👉🏻分支管理

👉🏻git 命令

git config

当你使用Git进行版本控制时,git config是一个用于配置Git的命令。它允许你设置和查看与Git相关的配置选项,包括全局配置、仓库配置和用户配置等。

以下是git config命令的一些常见用法及其作用:

  1. 配置全局用户名和邮箱:
   git config --global user.name "Your Name"git config --global user.email "yourname@example.com"

这些配置用于标识你在Git中提交代码时的身份信息。

  1. 查看和修改配置:

    git config --list            // 列出当前所有的Git配置选项
    git config --global --edit   // 编辑全局配置文件
    git config --local --edit    // 编辑当前仓库的配置文件
    git config <key>             // 查看指定配置项的值
    git config <key> <value>     // 设置指定配置项的值
    

    --list选项用于列出所有配置选项及其值。--global选项表示对全局配置进行操作,--local选项表示对当前仓库的配置进行操作。你可以使用--edit选项来通过文本编辑器修改配置文件。

  2. 配置其他选项:

    git config --global core.editor "nano"   // 设置全局文本编辑器(默认为Vi)
    git config --global color.ui true        // 启用全局颜色输出
    

    除了用户名和邮箱外,你可以配置其他的Git选项来满足个人偏好和工作流程要求。上述示例中,我们设置了全局文本编辑器为nano,并启用了颜色输出。

需要注意的是,git config命令的配置选项有多个层级,优先级从高到低依次为:命令行参数(Command-line options) > 仓库级别配置文件(Repository-level configuration file) > 用户级别配置文件(User-level configuration file) > 系统级配置文件(System-level configuration file)。因此,如果针对同一个选项有多个配置设置,Git将使用优先级最高的那个。

4.取消配置

git config --unset 命令用于取消 Git 配置选项的设置,即从配置文件中移除指定的键值对。使用该命令需要提供相应配置选项的名称,例如 user.email

以下是一些常见的 git config --unset 命令的示例:

  • 取消全局 Git 配置文件中的用户名设置:

    git config --global --unset user.name
    
  • 取消当前 Git 仓库的配置文件中的用户名和邮箱地址设置:

    git config --unset user.name
    git config --unset user.email
    

需要注意的是,git config --unset 命令只会移除特定配置选项的键值对,而不会删除整个配置选项。如果需要删除某个配置选项,可以手动编辑配置文件,或者使用 --unset-all 参数来删除所有匹配选项。

git diff

git diff 是一个用于比较文件差异的 Git 命令。它可以用来查看工作区与暂存区之间或者暂存区与最新提交(HEAD)之间的文件差异。

下面是 git diff 命令的常见用法:

  1. 比较工作区与暂存区的差异:

    git diff
    

    这会显示工作区中未添加到暂存区的文件修改内容。

  2. 比较暂存区与最新提交(HEAD)的差异:

    git diff --cached
    

    这会显示已添加到暂存区但尚未提交的修改内容。

  3. 比较工作区与最新提交(HEAD)的差异:

    git diff HEAD
    

    这会显示自上次提交以来对文件所做的所有更改。

  4. 比较两个提交之间的差异:

    git diff <commit1> <commit2>
    

    这会显示两个提交之间所有文件的差异。

git diff 的输出中,以 - 表示被移除的行,以 + 表示新增的行。

除了上述常见用法外,git diff 命令还支持其他选项和参数,例如限制显示的文件范围、忽略空白字符等。你可以通过 git diff --help 查看详细的帮助信息。
在这里插入图片描述

git log

git log 是 Git 中一个常用的命令,可以显示当前分支的提交历史。它可以列出每个提交的 SHA-1 校验和作者日期提交信息等。

git log 命令的基础语法如下:

git log

该命令会按照提交时间的倒序列出当前分支的所有提交。

git log 命令还支持多种有用的选项。以下是一些常用的选项:

  • -n: 显示最近的 n 个提交(例如 git log -3 将显示最近的三个提交)。
  • --oneline: 用一行显示提交信息(包括 SHA-1 校验和和提交信息)。
  • --graph: 显示提交历史的 ASCII 图形化表示。
  • --all: 显示所有分支的提交历史。
  • --decorate: 显示分支和标签的名称。

除此之外,还有许多其他的选项和参数可以用于 git log 命令。你可以通过 git log --help 查看完整的帮助文档。

git log 命令对于查看提交历史非常有用。它可以让你了解每个提交的详细信息,方便你回溯版本、合并分支等操作。

git log --pretty=oneline 是 Git 中常用的一个命令,表示只显示每条提交记录的 SHA-1 校验和和提交信息,每条记录占用一行。在终端中使用该命令输出即将换行的时候,会将当前行显示为更简洁的形式。

请注意,在 --pretty 选项后面的等号和 oneline 之间不应有空格。

以下是一个示例:

$ git log --pretty=oneline
65246b8d9a6d7d865771d5e08a413d6c3a9ef2d8 Add new feature to the project
f69ad5fcff56a4eeccbc4dbdcfb37a1d22c7317d Fix a bug in the login feature
b6e4737df58135e56cdf9dbb16a87d81b40b0109 Initial commit

通过这个命令,你可以快速查看提交历史,快速了解每个提交的信息和变更内容,对于代码审核、版本回退等操作都非常方便。

SHA-1 校验和

SHA-1(Secure Hash Algorithm 1)是一种密码散列函数,用于产生数据的唯一标识。它可以将任意长度的数据转换为一个固定长度的哈希值,通常以40个十六进制字符(160位)表示。

SHA-1 校验和是通过对数据应用 SHA-1 算法得到的结果。它具有以下特点:

  1. 唯一性:不同的数据很难产生相同的 SHA-1 校验和。即使数据的微小变化也会导致完全不同的校验和。
  2. 不可逆性:从 SHA-1 校验和无法还原出原始数据。换句话说,无法通过校验和推导出原始的数据内容。
  3. 固定长度:SHA-1 校验和的长度固定为40个字符,不管原始数据的大小。

在版本控制系统(如 Git)中,SHA-1 校验和被广泛应用于唯一标识提交对象、文件快照等。通过校验和,可以准确地区分不同的提交或文件,并且可以检查数据的完整性。如果对数据进行了任何修改,SHA-1 校验和也会发生变化

需要注意的是,由于 SHA-1 已经存在安全漏洞,因此在某些安全敏感的场景中,已经不建议使用 SHA-1。较新的散列算法,如 SHA-256,提供更高的安全性。

👉🏻git怎么进行分布式管理?

🌈认识工作区、暂存区和版本库

当使用 Git 进行版本控制时,工作区、暂存区和版本库是三个重要的概念。

  1. 工作区(Working Directory):

    工作区是你的项目目录,是你编辑、修改文件的地方。在工作区中可以新增、删除、编辑文件,但这些变化不会直接记录到 Git 中。你可以将工作区比喻为普通的文件夹。

  2. 暂存区(Staging Area):

    暂存区是位于 Git 仓库中的一个特殊区域,它充当了一个缓冲区或者提前准备提交的区域,我们把暂存区有时也叫作索引(index)。在暂存区中,你可以选择要提交的文件、对文件进行部分修改,并通过 git add 命令将这些修改记录到暂存区。一旦文件被添加到暂存区,Git 就会跟踪这些修改。

  3. 版本库(Repository):

    版本库是 Git 的核心部分,其中记录了项目的完整历史信息。它保存着每个提交(commit),包括文件的更改、作者、时间等元数据。版本库通常位于项目目录的 .git 文件夹下,它包含了暂存区、分支、标签等信息,是 Git 来管理和维护项目历史的地方。

Git 的工作流程如下:

  1. 在工作区中对文件进行修改。
  2. 使用 git add 将修改的文件添加到暂存区。
  3. 使用 git commit 将暂存区的文件提交到版本库,形成一个新的提交记录。

通过将更改逐步从工作区移动到暂存区,再移动到版本库中,Git 可以准确地记录文件的变化历史,并允许用户灵活地管理和回溯项目的不同版本。

下面这张图展示了它们之间的关系:👇🏻👇🏻
在这里插入图片描述
在创建 Git 版本库时,Git 会为我们⾃动创建⼀个唯⼀的 master 分⽀,以及指向 master 的⼀个指针叫 HEAD。

当对⼯作区修改(或新增)的⽂件执⾏ git add 命令时,暂存区⽬录树的⽂件索引会被更新。

💫💫
add修改的工作区内容进入暂存库时,实际上,此时会有一个对象库生成一个新的git对象,专门指向刚才add提交在暂存库的内容的索引。

当执⾏提交操作git commit时,master 分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中

我们用linux命令也可以查看当前git仓库下的目录👇🏻👇🏻
在这里插入图片描述

⭐️总结一下

通过新建或粘贴进⽬录的⽂件,并不能称之为向仓库中新增⽂件,⽽只是在⼯作区新增了⽂件。必须要通过使⽤ git add 和 git commit 命令才能将⽂件添加到本地仓库中进⾏管理

👉🏻版本回退

概念

Git 版本回退的原理主要涉及 Git 的分支、提交和引用的管理机制。

在 Git 中,每次提交都会生成一个唯一的提交对象(commit object),包含了当前文件状态的快照作者时间戳等信息。提交对象会以有向无环图(DAG)的形式组织起来,形成提交历史。

Git 使用分支(branch)来表示不同的开发路径,每个分支都指向一个提交对象。而 HEAD 则是当前分支的引用,指向最新的提交。通过移动 HEAD 和分支引用,可以实现版本回退

当执行 git reset 命令时,根据命令选项的不同,Git 会调整分支引用和 HEAD 的位置

  1. --soft 选项:
    参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。

  2. --mixed 选项:
    为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变。

  3. --hard 选项:
    参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重。
    在这里插入图片描述

🌟HEAD说明

  • 可直接写成 commit id,表⽰指定退回的版本
  • HEAD 表示当前版本
  • HEAD^ 上⼀个版本
  • HEAD^^ 上上⼀个版本
  • 以此类推…

🌟可以使⽤ 〜数字表⽰

  • HEAD~0 表⽰当前版本
  • HEAD~1 上⼀个版本
  • HEAD^2 上上⼀个版本
  • 以此类推

总结起来,Git 版本回退的原理就是通过移动分支引用和 HEAD 来改变当前所处的提交位置,并相应地调整工作区和暂存区的状态。

需要注意的是,回退操作会修改提交历史,因此在团队协作或者远程仓库存在的情况下,谨慎使用版本回退功能。

当前版本HEAD指的是版本库中的当前版本,还是工作区或暂存区的当前版本?

HEAD 是 Git 中的一个指针,指向当前所在的分支或提交。它可以理解为对当前版本的引用。

具体来说,HEAD 指向的是当前所在分支的最新提交(即版本库中的当前版本)。当你进行提交操作时,HEAD 将会移动到新的提交上。

与 HEAD 相关的有两个概念需要注意:

  1. 工作区:工作区是你在电脑上看到和修改的项目目录。当你在工作区修改文件后,这些修改并没有被提交到版本库中。

  2. 暂存区:暂存区也称为索引(index),是位于工作区和版本库之间的一个中间区域。它用于暂存你想要提交的文件改动。

当你执行 git add 命令将文件添加到暂存区后,HEAD 的指向不会发生变化,仍然指向当前分支的最新提交。只有在执行 git commit 命令后,HEAD 才会移动到新的提交上,并且该提交成为当前分支的最新提交。

总结起来,HEAD 指向的是版本库中当前分支的最新提交,而不是工作区或暂存区的当前版本。工作区和暂存区的当前版本没有直接的指针,它们的状态是相对于最新提交来描述的。

git reset命令

git reset 是 Git 中一个重要的命令,用于移动 HEAD 和分支引用来撤销提交或将分支重置到不同的提交上。它有多种用法和选项,常用的包括 --soft--mixed--hard

下面是 git reset 命令的常见用法:

  1. 撤销最新的提交并保留修改:

    git reset --soft HEAD^
    

    这会将 HEAD(当前分支的引用)移动到上一个提交,同时保留修改的文件在暂存区中。这样你可以重新提交这些修改。

  2. 撤销最新的提交并取消暂存的修改:

    git reset --mixed HEAD^
    

    这会将 HEAD 移动到上一个提交,并取消暂存区的修改。工作区中的文件保持不变,你可以对这些文件进行新的提交或修改。

  3. 撤销最新的提交并丢弃修改:

    git reset --hard HEAD^
    

    这会完全移除最后一次提交及其修改。工作区、暂存区和版本库都将回退到上一个提交的状态。注意:此操作会丢失未提交的文件修改,慎用!

HEAD^ 表示上一个提交,可以使用 HEAD~n 来表示前 n 个提交。例如,HEAD~2 表示上两个提交。

除了上述常见用法外,git reset 命令还支持其他选项和参数,例如通过提交 ID 进行重置,指定分支名等。你可以通过 git reset --help 查看详细的帮助信息。

在使用 git reset 时,请务必小心操作。如果你不确定操作的影响,请备份后再执行。

git reflog 在版本回退中的作用

git reflog 是 Git 中一个非常有用的命令,用于查看本地仓库中的引用日志(reference log)。它记录了分支、标签或 HEAD 移动的历史,包括提交、合并、重置等操作。

在版本回退中,git reflog 的作用非常重要。当你使用 git resetgit revert 等命令回退版本时,可能会希望回到之前的某个状态。而此时,如果没有记录每次操作的信息,就很难恢复到之前的状态。

git reflog 可以显示你在本地仓库中执行的所有操作,并提供了每个操作的 HEAD 的位置和提交校验和(commit hash)。通过查看这些记录,你可以找到之前的提交状态,并进行版本回退。

以下是一个示例:

$ git reflog
65246b8 (HEAD -> master) HEAD@{0}: reset: going back to commit 65246b8
f69ad5f HEAD@{1}: commit: Add new feature to the project
b6e4737 HEAD@{2}: commit: Initial commit

在上面的示例中,你可以看到 HEAD@{0} 表示最近一次操作,即回退到的目标 commit。你可以根据需要选择特定的提交进行版本回退。

需要注意的是,git reflog 记录的是本地仓库的操作历史,而不是远程仓库的历史。如果你想查看远程仓库的历史记录,可以使用 git log 命令。

git版本回退为什么那么快?

Git 的版本回退速度⾮常快,因为 Git 在内部有个指向当前分⽀(此处是master)的HEAD 指针, refs/heads/master ⽂件⾥保存当前 master 分⽀最新 commit id 。当我们在回退版本的时候,Git 仅仅是给 refs/heads/master 中存储⼀个特定的version,可以简单理解成如下⽰意图:
在这里插入图片描述

👉🏻撤销修改

当我们写代码时,觉得当前写的代码太差劲,还不如上一版本时,我们怎么回到上一版本呢?
这里分三种情况。

对于⼯作区的代码,还没有 add

法一:先用git diff查看代码差别在哪,然后手动删除代码,但不推荐,如果我们写了很多代码了,再手动去删效率太慢。
法二
使用命令

git checkout --<filename>//回退到该文件上一次add的状态

已经 add ,但没有 commit

这里我们可以使用git reset -- mixed/hard.

  • git reset -- hard:可以一步完成,因为此时版本库中还没有我们刚刚add在暂存区中的代码,所以用hard版本回退,直接让工作区和暂存区的版本回退到版本库的当前版本(即没有该代码文件的时候),这样就实现了工作区的撤销代码效果
  • git reset -- mixed:这个要分两步完成,第一步git reset – mixed只是让暂存区回退到版本库的当前版本,但是此时我们仔细观察,现在情况变成了情况1——对于⼯作区的代码,还没有 add,所以此时我们再用git checkout --< filename>命令就可以撤销代码了

下面是指令实现:
在这里插入图片描述

已经 add ,并且也 commit 了

既然此时版本库的版本已经更新,那么只有回退到上一个版本才能解决问题。
所以这里我们就要用git reset --hard < filename>将版本库、暂存区、工作区的代码都回退到上一个版本的状态。
命令实现如下
在这里插入图片描述
注意:前提是commit之后没有push到远程仓库

👉🏻删除文件

在这里插入图片描述

👉🏻分支管理

相关文章:

Git使用【上】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析3 前言 先前有些git命令我在我的其它文章里面已经写过&#xff0c;若要查看可参考【Linu…...

flink的序列化基准测试

背景&#xff1a; flink提供了在本地环境使用jmh测试不同序列化方法的性能差异&#xff0c;本文就是基于这个https://github.com/apache/flink-benchmarks这个性能测试&#xff0c;总结几个结论&#xff0c;以便后面使用时避免掉坑 基准测试 我们本次运行的是SerializationF…...

Error: node: unknown or unsupported macOS version: :dunno 错误解决

一、原因 今天安装 brew install node报错了&#xff0c;错误信息如下&#xff1a; 二、解决方案 1&#xff09;查找homebrew-cask安装位置 echo $(brew --repo homebrew/homebrew-cask) // 输出 /opt/homebrew/Library/Taps/homebrew/homebrew-cask2&#xff09;使用 gi…...

嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理②

嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理② 第十八章 Linux系统对中断的处理 ②18.3 Linux中断系统中的重要数据结构18.3.1 irq_desc数组18.3.2 irqaction结构体18.3.3 irq_data结构体18.3.4 irq_domain结构体18.3.5 irq_chip结构体 18.4 在设备树中指定中断_在…...

Kolmogorov-Smirnov正态性检验

Kolmogorov-Smirnov正态性检验是一种统计方法&#xff0c;用于检验数据集是否服从正态分布。其基本原理和用途如下&#xff1a; 基本原理&#xff1a; 假设检验&#xff1a;Kolmogorov-Smirnov检验基于一个假设&#xff0c;即待检验的数据集服从特定的理论正态分布。计算累积…...

BI神器Power Query(25)-- 使用PQ实现表格多列转换(1/3)

实例需求&#xff1a;原始表格包含多列属性数据,现在需要将不同属性分列展示在不同的行中&#xff0c;att1、att3、att5为一组&#xff0c;att2、att3、att6为另一组&#xff0c;数据如下所示。 更新表格数据 原始数据表&#xff1a; Col1Col2Att1Att2Att3Att4Att5Att6AAADD…...

windows系统一键开启和关闭虚拟化

说明 跟虚拟化相关的三个程序 一键开启脚本 REM 开启 Hyper-V 服务 pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txtfor /f %%i in (findstr /i . hyper-v.txt 2^>nul) do dism /online /norestart /add-package:"%Sy…...

NSSCTF做题(5)

[NSSCTF 2022 Spring Recruit]babyphp 代码审计 if(isset($_POST[a])&&!preg_match(/[0-9]/,$_POST[a])&&intval($_POST[a])){ if(isset($_POST[b1])&&$_POST[b2]){ if($_POST[b1]!$_POST[b2]&&md5($_POST[b1])md5($_POST[b2])){…...

java基础题——二维数组的基本应用

1.设计程序按照各个学生的 Java 成绩进行排序 ( 降序 ) 2.设计程序&#xff0c;根据学生总成绩进行排序(降序排列)&#xff0c;并输出学生姓名、每门课程的名称和该学生的成绩、该学生的总成绩 public static void main(String[] args) {String[] names {"安琪拉",…...

Leetcode 2119.反转两次的数字

反转 一个整数意味着倒置它的所有位。 例如&#xff0c;反转 2021 得到 1202 。反转 12300 得到 321 &#xff0c;不保留前导零 。 给你一个整数 num &#xff0c;反转 num 得到 reversed1 &#xff0c;接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num &#x…...

BI神器Power Query(27)-- 使用PQ实现表格多列转换(3/3)

实例需求&#xff1a;原始表格包含多列属性数据,现在需要将不同属性分列展示在不同的行中&#xff0c;att1、att3、att5为一组&#xff0c;att2、att3、att6为另一组&#xff0c;数据如下所示。 更新表格数据 原始数据表&#xff1a; Col1Col2Att1Att2Att3Att4Att5Att6AAADD…...

VUE3照本宣科——认识VUE3

VUE3照本宣科——认识VUE3 前言一、命令创建项目1.中文官网2.菜鸟教程 二、VUE3项目目录结构1.public2.src&#xff08;1&#xff09;assets&#xff08;2&#xff09;components 3. .eslintrc.cjs4. .gitignore5. .prettierrc.json6.index.html7.package.json8.README.md9.vit…...

《计算机视觉中的多视图几何》笔记(12)

12 Structure Computation 本章讲述如何在已知基本矩阵 F F F和两幅图像中若干对对应点 x ↔ x ′ x \leftrightarrow x x↔x′的情况下计算三维空间点 X X X的位置。 文章目录 12 Structure Computation12.1 Problem statement12.2 Linear triangulation methods12.3 Geomet…...

TFT LCD刷新原理及LCD时序参数总结(LCD时序,写的挺好)

cd工作原理目前不了解&#xff0c;日后会在博客中添加这一部分的内容。 1.LCD工作原理[1] 我对LCD的工作原理也仅仅处在了解的地步&#xff0c;下面基于NXP公司对LCD工作原理介绍的ppt来学习一下。 LCD(liquid crystal display,液晶显示屏) 是由液晶段阵列组成&#xff0c;当…...

基于Java的电影院购票系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

Linux基础指令(六)

目录 前言1. man 指令2. date 指令3. cal 指令4. bc 指令5. uname 指令结语&#xff1a; 前言 欢迎各位伙伴来到学习 Linux 指令的 第六天&#xff01;&#xff01;&#xff01; 在上一篇文章 Linux基本指令(五) 中&#xff0c;我们通过一段故事线&#xff0c;带大家感性的了…...

Anderson-Darling正态性检验【重要统计工具】

Anderson-Darling正态性检验是一种用于确定数据集是否服从正态分布&#xff08;也称为高斯分布或钟形曲线分布&#xff09;的统计方法。它基于Anderson和Darling于1954年提出的检验统计量。该检验的基本原理和用途如下&#xff1a; 基本原理&#xff1a; 零假设&#xff08;Nu…...

Ubuntu基于Docker快速配置GDAL的Python、C++环境

本文介绍在Linux的Ubuntu操作系统中&#xff0c;基于Docker快速配置Python、C等不同编程语言均可用的地理数据处理库GDAL的方法。 首先&#xff0c;我们访问GDAL库的Docker镜像官方网站&#xff08;https://github.com/OSGeo/gdal/tree/master/docker&#xff09;。其中&#x…...

<C++> 哈希表模拟实现STL_unordered_set/map

哈希表模板参数的控制 首先需要明确的是&#xff0c;unordered_set是K模型的容器&#xff0c;而unordered_map是KV模型的容器。 要想只用一份哈希表代码同时封装出K模型和KV模型的容器&#xff0c;我们必定要对哈希表的模板参数进行控制。 为了与原哈希表的模板参数进行区分…...

【数据结构与算法】通过双向链表和HashMap实现LRU缓存 详解

这个双向链表采用的是有伪头节点和伪尾节点的 与上一篇文章中单链表的实现不同&#xff0c;区别于在实例化这个链表时就初始化了的伪头节点和伪尾节点&#xff0c;并相互指向&#xff0c;在第一次添加节点时&#xff0c;不需要再考虑空指针指向问题了。 /*** 通过链表与HashMa…...

MySQL的内置函数

文章目录 1. 聚合函数2. group by子句的使用3. 日期函数4. 字符串函5. 数学函数6. 其它函数 1. 聚合函数 COUNT([DISTINCT] expr) 返回查询到的数据的数量 用SELECT COUNT(*) FROM students或者SELECT COUNT(1) FROM students也能查询总个数。 统计本次考试的数学成绩分数去…...

数据结构与算法-(7)---栈的应用-(3)表达式转换

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

Lilliefors正态性检验(一种非参数统计方法)

Lilliefors检验&#xff08;也称为Kolmogorov-Smirnov-Lilliefors检验&#xff09;是一种用于检验数据是否符合正态分布的统计检验方法&#xff0c;它是Kolmogorov-Smirnov检验的一种变体&#xff0c;专门用于小样本情况。与K-S检验不同&#xff0c;Lilliefors检验不需要假定数…...

【云原生】配置Kubernetes CronJob自动备份MySQL数据库(单机版)

文章目录 每天自动备份数据库MySQL【云原生】配置Kubernetes CronJob自动备份Clickhouse数据库 每天自动备份数据库 MySQL 引用镜像:databack/mysql-backup,使用文档:https://hub.docker.com/r/databack/mysql-backup 测试、开发环境:每天0点40分执行全库备份操作,备份文…...

基于PSO算法的功率角摆动曲线优化研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

数论知识点总结(一)

文章目录 目录 文章目录 前言 一、数论有哪些 二、题法混讲 1.素数判断,质数,筛法 2.最大公约数和最小公倍数 3.快速幂 4.约数 前言 现在针对CSP-J/S组的第一题主要都是数论,换句话说,持数论之剑,可行天下矣! 一、数论有哪些 数论 原根,素数判断,质数,筛法最大公约数…...

知识分享 钡铼网关功能介绍:使用SSLTLS 加密,保证MQTT通信安全

背景 为了使不同的设备或系统能够相互通信&#xff0c;让旧有系统和新的系统可以集成&#xff0c;通信更加灵活和可靠。以及将数据从不同的来源收集并传输到不同的目的地&#xff0c;实现数据的集中管理和分发。 通信网关完美克服了这一难题&#xff0c;485或者网口的设备能通过…...

asp.net core mvc区域路由

ASP.NET Core 区域路由&#xff08;Area Routing&#xff09;是一种将应用程序中的路由划分为多个区域的方式&#xff0c;类似于 MVC 的控制器和视图的区域划分。区域路由可以帮助开发人员更好地组织应用程序的代码和路由&#xff0c;并使其更易于维护。 要使用区域路由&#…...

KNN(下):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…...

Servlet开发-session和cookie理解案例-登录页面

项目展示 进入登录页面&#xff0c;输入正确的用户名和密码以后会自动跳到主页 登录成功以后打印用户名以及上次登录的时间&#xff0c;如果浏览器和客户端都保存有上次登录的信息&#xff0c;则不需要登录就可以进入主页 编码思路 1.首先提供一个登录的前端页面&…...

还有哪些媲美wordpress框架/百度推广入口登录

前言 昨天XY讲课&#xff01;讲到这题&#xff01;还是IOI的题&#xff01;不过据说00年的时候DP还不流行。 题面 http://poj.org/problem?id1160 分析 1 中位数 首先我们考虑&#xff0c;若有x1 < x2 < ... < xn&#xff0c;则当∑abs(x - xi)最小时&#xff0c;x为…...

灵台教育局网站师资队伍建设/外链优化

如果想要在 短信、H5页面、超链接、其他APP跳转到你的APP&#xff0c;或者是你跳转到别的APP之后的左上角的返回自己的APP。都需要用到 URL Scheme。 首先我们需要有一个项目 依次 targets-->Info-->URL Types-->-->输入自己的URL Schemes(这里是toolClass) 在手机…...

北京公司网站制作/合肥seo外包平台

Spring MVC 学习笔记10 —— 实现简单的用户管理&#xff08;4.3&#xff09;用户登录显示全局异常信息 </pre>Spring MVC 学习笔记10 —— 实现简单的用户管理&#xff08;4.3&#xff09;用户登录--显示全局异常信息<p></p><p></p><h3 styl…...

帝国cms小说阅读网站模板/电商线上推广

3.7、线程属性1.线程属性函数有哪些2.线程函数介绍①pthread_attr_init②pthread_attr_destroy③pthread_attr_setdetachstate④pthread_attr_getdetachstate⑤pthread_attr_getstacksize3.一些线程属性函数的使用1.线程属性函数有哪些 使用命令 man pthread_attr_ <tab&g…...

手机端app开发/搜索引擎优化课程总结

今天遇到一个比较头疼的问题&#xff0c;就是在一个标签上右键&#xff0c;弹出的菜单div被标签内的Office控件Object挡住了下半部分&#xff0c;始终无法显示。查了好多解决方案&#xff0c;最终都不能解决问题&#xff0c;几乎都要放弃了。中午吃饭的时候&#xff0c;脑海中又…...

棋牌游戏网站怎么做的/网站推广和网络推广

文章目录解压后图像大小为0解决方法解压后图像大小为0 在训练过程中&#xff0c;在读取这个图像文件时遇到报错&#xff0c;因此来查看该图像是否存在问题&#xff0c;果然大小为0。 解决方法 定位问题图像在哪个数据集的压缩包中 首先我们需要在所有数据集压缩包中找到该…...