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

Git 使用笔记

参考链接:

创建版本库 - Git教程 - 廖雪峰的官方网站

Git使用教程,最详细,最傻瓜,最浅显,真正手把手教 - 知乎

命令使用

cd f:        切换目录到 F 盘

cd gitCxl        切换目录到 gitCxl 文件夹

mkdir gitCxl        创建新文件夹 gitCxl

pwd        打印当前目录

git init        将当前目录设置为git可管理的仓库

git add readme.txt        将 readme.txt 添加到暂存区

git commit -m "提交说明"        把暂存区内的所有文件提交到仓库

常用的 git commit 参数和选项:

  • -m <message> 或 --message=<message>
    • 直接在命令行上指定提交信息(commit message)。这是最常用的参数之一,因为它允许你快速附加一条描述性消息来解释更改。
  • -a 或 --all
    • 自动将所有已跟踪文件的更改(包括那些没有被 git add 明确添加到暂存区的文件)提交。这通常用于快速提交所有更改,但请注意,它不会添加新文件到仓库中。
  • -v 或 --verbose
    • 在提交时显示差异(diff)和提交信息。这有助于在提交前再次确认更改。
  • --amend
    • 修改最近的提交。这允许你更改最近的提交信息或添加更多更改到该提交中,而不是创建一个新的提交。
  • --signoff 或 -s
    • 在提交信息中添加一个签名行(Signed-off-by),这通常用于表示你同意某些开发准则或协议。
  • --no-verify
    • 绕过提交前的钩子(hook)脚本。Git 允许你在提交前运行自定义脚本以检查代码风格、测试等。使用此选项可以跳过这些检查。
  • --allow-empty
    • 允许创建一个空的提交(即没有更改的提交)。这通常用于记录项目状态或触发某些构建/部署流程。
  • --allow-empty-message
    • 允许提交一个空的提交信息(即不附带任何描述)。通常,Git 会阻止这种提交以防止无意义的提交记录。
  • --template=<file>
    • 使用指定的文件作为提交信息的模板。这可以帮助你遵循特定的提交信息格式或包含额外的信息。
  • --author=<author>
    • 指定提交的作者信息。这通常用于修复错误的作者信息或代表其他人提交更改。
  • --date=<date>
    • 指定提交的日期和时间。这可以用于调整提交的时间戳,但通常不建议这样做,因为它可能会混淆项目的历史记录。

git status        查看是否还有文件未提交(状态)

git diff readme.txt        查看readme.txt文件内的改动

git log        查看从近到远的提交日志(历史记录)

git log --pretty=oneline        只查看提交说的注释信息

————

回退到上一个版本:git reset --hard HEAD^

回退到上上个版本:git reset --hard HEAD^^

回退到前100个版本:git reset --hard HEAD~100

注:

--hard会回退到上个版本的已提交状态,

--soft会回退到上个版本的未提交状态,

--mixed会回退到上个版本已添加但未提交的状态。

————

cat readme.txt        查看readme.txt的内容(实验发现是本地文件的内容,不是仓库中文件的内容)

git reflog        获取版本号;

git reset --hard 版本号        回退到版本号对应的那个版本

git diff HEAD -- readme.txt        查看工作区和版本库里面最新版本的区别

git checkout -- readme.txt        丢弃工作区的修改,把readme.txt文件在工作区做的修改全部撤销,有两种情况:(其实就是检出)(也可以把checkout换成resrore)

  1. 若自修改后未放到暂存区,则回退到版本库的状态;
  2. 若修改后已经放入暂存区,则回退到添加暂存区后的状态。
  • 注意:命令git checkout -- readme.txt 中的 -- 很重要,若没有 -- 的话,则命令变成创建分支(切换都另一个分支)。

git reset HEAD <file>        把暂存区的修改撤销掉(unstage),重新放回工作区

git restore <file>        丢弃工作区的更改

git restore --staged <file>        撤销暂存区提交(只会删除暂存区的文件,不会影响工作目录)

rm b.txt        删除工作区的b.txt文件

git rm b.txt        从版本库中删除 b.txt 文件(删除后记得 git commit 提交)

👉初始创建版本库

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。

注意:git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。

cd 是 "change directory" 的缩写,意为“切换目录”;

mkdir 是 "make directory" 的缩写,用于创建新目录(文件夹)

pwd 是 "print working directory" 的缩写,意为“打印当前工作目录”,用于显示当前的目录

git init 把当前的这个目录变成 git可以管理的仓库

git add readme.txt 版本库gitCxl目录下记事本文件 readme.txt添加到暂存区里面去(没有任何提示,则说明已经添加成功)。

git commit 告诉Git,把文件提交到仓库 (-m后" "里的内容为本次提交的注释说明)。

git commit命令执行成功后会告诉你:

  • 1 file changed:1个文件被改动(我们新添加的readme.txt文件);
  • 2 insertions:插入了两行内容(readme.txt有两行内容)。

git status查看是否还有文件未提交

  • 黄色:说明没有任何文件未提交;
  • 蓝色:告诉我们 readme.txt 文件已被修改,但是未被提交的修改。

git diff readme.txt 查看readme.txt文件到底改了什么内容,如下:

如上可看到,readme.txt文件内容从二行改成 三行 添加了一行22222222内容。

知道了对readme.txt文件做了什么修改后,我们可以放心的提交到仓库了,提交修改和提交文件一样的2步(第一步是git add 第二步是:git commit)

输入git add readme.txt

报错1:fatal: not a git repository (or any of the parent directories)

原因:Git命令必须在Git仓库目录内执行(git init除外),在仓库目录外执行是没有意义的。

报错2:fatal: pathspec 'readme.txt' did not match any files

原因:添加某个文件时,该文件必须在当前目录下存在,用ls或者dir命令查看当前目录的文件,看看文件是否存在,或者是否写错了文件名。

  • 总结:

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,(可反复多次使用,添加多个文件);
  2. 使用命令git commit -m <message>,完成。

👉版本管理

1、查看提交日志

git log 查看历史记录,显示从最近到最远的提交日志。

文件修改内容:

初始:(版本一)
Git is a version control system.
Git is free software.第一次修改后:(版本二)
Git is a version control system.
Git is free software.
22222222
33333333第二次修改后:(版本三)
Git is a version control system.
Git is free software.
22222222

如果嫌输出的信息太多,则可加上--pretty=oneline参数。

即,使用命令 git log --pretty=oneline 演示:

黄色一大串类似1094adb...的是commit id(版本号)。

和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示。commit id以自己的为准。

commit id需要用这么一大串数字表示是因为:

Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。

每提交一个新版本,实际上Git就会把它们自动串成一条时间线。如果使用可视化工具查看Git历史,就可以更清楚地看到提交历史的时间线。

2、版本回退

若想把当前的版本回退:

回退到上一个版本:git reset --hard HEAD^

回退到上上个版本:git reset --hard HEAD^^

回退到前100个版本:git reset --hard HEAD~100

注:

--hard会回退到上个版本的已提交状态,

--soft会回退到上个版本的未提交状态,

--mixed会回退到上个版本已添加但未提交的状态。

使用示例:(回退到上一个版本,也就是版本二)

cat readme.txt 查看readme.txt的内容

cat 是“concatenate”的缩写,意为“连接”或“串联”。其原意是用来将文件内容连接并输出到标准输出设备(通常是屏幕),被广泛用于查看文件内容

(此时查看文件内容发现,确实已经回退到上一个版本了。)

此时,再用 git log 查看历史记录信息,看下现在版本库的状态:

发现第二次修改的那个 “删除内容333333,只剩222” 看不到了。

若现在想回退到最新的版本(版本三),也就是刚刚看不到的那个版本,则可通过版本号进行回退。

git reflog 获取版本号

git reset --hard 版本号,用于回退到版本号对应的那个版本

(版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,否则Git可能会找到多个版本号,就无法确定是哪一个了。)

到此,已经又回到了最新那个版本(版本三)。

————

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针。

当你回退版本的时候,Git仅仅是把HEAD从指向(版本三),改为指向(版本二)。

然后顺便把工作区的文件更新了。所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。

  • 总结:
  1. HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
  2. 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  3. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本(利用其版本号)。

3、工作区和暂存区

工作区:就是在电脑上能看到的目录。比如:

  1. 目录下gitCxl里的文件(.git隐藏目录版本库除外)。
  2. 以后需要再新建的目录文件等等都属于工作区范畴。

版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,而是Git的版本库。

  • 其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

我们前面说过使用Git提交文件到版本库有两步:

  • 第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
  • 第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

因为创建Git版本库时,Git自动为我们创建了唯一一个master分支,

所以现在,git commit就是往master分支上提交更改。

可以简单理解为,需要提交的文件修改通通放到暂存区,然后一次性提交暂存区的所有修改。

  • demo演示如下:

修改 readme.txt 的内容,新增加 addnew.txt 文件。

1、先用命令 git status来查看下状态:

Git非常清楚地告诉我们:

  1. readme.txt被修改了;
  2. test.txt还从来没有被添加过,所以它的状态是Untracked

2、使用git add 命令把2个文件都添加到暂存区中,再使用git status来查看下状态:

add之后,此时两个文件皆处于暂存区中。

所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),

然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

3、执行git commit就可以一次性把暂存区的所有修改提交到分支:

一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的,如上。

4、管理修改

Git跟踪并管理的是修改,而非文件。

  • 举个例子:

1、修改内容后使用 git add 添加到暂存区中;

2、在暂存区中 的前提下,再修改内容;

3、使用 git commit 提交到仓库。

也就是说,过程是【第一次修改 -> git add -> 第二次修改 -> git commit】 。

提交后会发现,第二次的修改并没有被提交。

  • 因为:

Git管理的是修改。

当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交

但是,在工作区的第二次修改并没有放入暂存区

所以,git commit只负责把暂存区的修改提交了

也就是第一次的修改被提交了,第二次的修改不会被提交。

————

提交后,

git diff HEAD -- readme.txt 可以查看工作区和版本库里面最新版本的区别,如上。

若提交第二次修改,可以:

【第一次修改 -> git add -> 第二次修改 -> git add -> git commit】

即可把第二次修改提交。

所以,每次修改,若不用git add到暂存区,则不会加入到commit中。

5、撤销修改

git checkout -- readme.txt 丢弃工作区的修改,把readme.txt文件在工作区做的修改全部撤销,有两种情况:(其实就是检出)(也可以把checkout换成resrore)

  1. 若自修改后未放到暂存区,则回退到版本库的状态;
  2. 若修改后已经放入暂存区,则回退到添加暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

————

撤销修改还有另外两种方法:

  1. 若知道要删掉哪些内容,可直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。
  2. 可以按以前的方法直接恢复到上一个版本。使用 git reset --hard HEAD^

使用示例:

1、在readme.txt文件里面增加一行内容为5555,通过cat命令查看文件内容,并用git statue查看下当前的状态如下:

2、用git checkout -- readme.txt 丢弃工作区的修改,把readme.txt文件在工作区做的修改全部撤销,并用cat查看文件内容,如下:

会发现工作区的修改 “增加的一行5555” 没了,也就是文件在工作区的修改已被撤销。(情况一)

再测试下情况二:

会发现撤销后,文件内容是回退到了暂存区中的状态,也就是情况二。

注意:命令git checkout -- readme.txt 中的 -- 很重要,若没有 -- 的话,则命令变成创建分支(切换都另一个分支)。

————

git reset HEAD readme.txt暂存区的修改撤销掉(unstage),重新放回工作区

git reset 命令既可回退版本,也可把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

  • 总结:
  1. 场景1:当改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
  2. 场景2:当改乱了工作区某个文件的内容,且添加到了暂存区时,想丢弃修改,分两步:
    1. 第一步用命令git reset HEAD <file>,就回到了场景1,
    2. 第二步按场景1操作。
  3. 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节(回退到上一个版本:git reset --hard HEAD^),不过前提是没有推送到远程库。

6、删除文件

假如我现在版本库testgit目录添加一个文件b.txt,然后提交。如下:

直接在文件目录中把文件删了,或者使用如上rm命令:rm b.txt,此时工作区的b.txt文件已被删除

这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了,如下:

此时有两个选择:

  1. 一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
  2. 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本
  • 情况一:将版本库中的对应也删除

git rm b.txt 从版本库中删除 b.txt 文件,然后 git commit 提交,如下图:

注:

‘删除’也是一种‘修改’操作,先手动删除文件,然后使用 git add <file> 或者使用 git rm<file> 效果都是一样的。

  • 情况二:删错了,需从版本库中将对应文件恢复

git checkout -- b.txt 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

👉远程仓库

1、添加远程库

拓展

git的命名窗口关闭之后,继续使用之前创建的仓库

无需重新创建。

在你创建仓库文件夹内鼠标右键有个 Git Bash Here打开就好,

或者按住shift加鼠标右键有个 `在此处打开Powershell窗口`,都可以直接 使用git命令。

相关文章:

Git 使用笔记

参考链接&#xff1a; 创建版本库 - Git教程 - 廖雪峰的官方网站 Git使用教程,最详细&#xff0c;最傻瓜&#xff0c;最浅显&#xff0c;真正手把手教 - 知乎 命令使用 cd f: 切换目录到 F 盘 cd gitCxl 切换目录到 gitCxl 文件夹 mkdir gitCxl 创建新文件…...

C#:深入理解Thread.Sleep与Task.Delay

1.核心区别概述 特性Thread.SleepTask.Delay阻塞类型同步阻塞当前线程异步非阻塞&#xff0c;释放线程适用场景同步代码中的简单延时异步编程中的非阻塞等待资源消耗占用线程资源&#xff08;线程挂起&#xff09;不占用线程&#xff08;通过计时器回调&#xff09;精度依赖操…...

基于Redis实现共享token登录

文章目录 1.集群下session共享存在的问题2.基于Redis实现共享session存储业务流程图3.具体登录的代码实现3.1 引入redis数据库3.2 发送验证码到前端3.2 登录注册功能实现3.2刷新token有效期(LoginIntereceptor)3.3 MvcConfig配置4.拦截器优化4.1增加RefreshTokenInterceptor 4.…...

【Linux我做主】浅谈Shell及其原理

浅谈Linux中的Shell及其原理 Linux中Shell的运行原理github地址前言一、Linux内核与Shell的关系1.1 操作系统核心1.2 用户与内核的隔离 二、Shell的演进与核心机制2.1 发展历程2.2 核心功能解析2.3 shell的工作流程1. 用户输入命令2. 解析器拆分指令3. 扩展器处理动态内容变量替…...

vulhub/Billu_b0x靶机----练习攻略

1.Billu_b0x靶场下载链接&#xff1a; https://download.vulnhub.com/billu/Billu_b0x.zip 2.下载后&#xff0c;解压出ova文件&#xff0c;直接拖至VMware中&#xff0c;重命名和选择存储位置&#xff0c;点击导入&#xff0c;报错点击重试即可。修改网卡为NAT模式。 打开靶…...

【华为OD-E卷 -121 消消乐游戏 100分(python、java、c++、js、c)】

【华为OD-E卷 - 消消乐游戏 100分(python、java、c++、js、c)】 题目 游戏规则:输入一个只包含英文字母的字符串,字符串中的两个字母如果相邻且相同,就可以消除。 在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。 输出最终得到的字符串长度 输入描…...

Qt之自定义界面组件 一

通过qt中的painter绘图事件绘制一个电池电量图的变化。效果如下图 创建一个基于界面widget工程&#xff0c;在wdiget界面添加一个widget界面,将添加的widget界面的类提升为Tbattery.在Tbattery类中重写painEvent电池电量代码 文件目录结构 主要部分代码 //Tbattery.cpp #inc…...

破解验证码新利器:基于百度OCR与captcha-killer-modified插件的免费调用教程

破解验证码新利器&#xff1a;基于百度OCR与captcha-killer-modified插件的免费调用教程 引言 免责声明&#xff1a; 本文提供的信息仅供参考&#xff0c;不承担因操作产生的任何损失。读者需自行判断内容适用性&#xff0c;并遵守法律法规。作者不鼓励非法行为&#xff0c;保…...

1-1 MATLAB深度极限学习机

本博客来源于CSDN机器鱼&#xff0c;未同意任何人转载。 更多内容&#xff0c;欢迎点击本专栏目录&#xff0c;查看更多内容。 参考[1]魏洁.深度极限学习机的研究与应用[D].太原理工大学[2023-10-14].DOI:CNKI:CDMD:2.1016.714596. 目录 0.引言 1.ELM-AE实现 2.DE…...

函数的介绍

1.函数的概念 在C语言中也有函数的概念&#xff0c;有些翻译为&#xff1a;子程序&#xff0c;这种翻译更为准确。C语言的函数就是一个完成某项特定的任务的一小段代码。这段代码是有特殊的写法和调用方法的。 C语言的程序其实是有无数个小的函数组合而成的&#xff0c;也可以…...

4.3--入门知识扫盲,IPv4的头部报文解析,数据报分片,地址分类(包你看一遍全部记住)

IPv4协议&#xff1a;网络世界的快递包裹指南&#xff08;附拆箱说明书&#xff09; “IPv4就像一张明信片&#xff0c;既要写清楚地址&#xff0c;又要控制大小别超重” —— 某网络工程师的桌面铭牌 一、IPv4报头&#xff1a;快递面单的终极艺术 1.1 报头结构图&#xff08;…...

Linux生成自签名证书

一、安装OpenSSL 首先确保机器已安装OpenSSL工具OpenSSL的安装可参考&#xff1a;源码编译OpenSSL 二、生成私钥​​​​​​ openssl genpkey -algorithm RSA -out server.key 三、创建证书签署请求(CSR) openssl req -new -key server.key -out server.csr 四、生成自签…...

烽火HG680-KA_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明

之前发布过这个固件包&#xff0c;关于烽火HG680-KA&#xff0f;HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包详细说明一下&#xff0c;汇总总结一些常遇到的情况&#xff0c;这次固件会分开发布&#xff0c;以免混淆。 上一个帖子地址&#xff1a;https://blog.csdn.net/…...

Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析

Vue3 核心特性解析&#xff1a;Suspense 与 Teleport 原理深度剖析 一、Teleport&#xff1a;突破组件层级的时空传送 1.1 实现原理图解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…...

Linux Vim 寄存器 | 从基础分类到高级应用

注&#xff1a;本文为 “vim 寄存器” 相关文章合辑。 英文引文&#xff0c;机翻未校。 中文引文&#xff0c;略作重排。 未整理去重&#xff0c;如有内容异常&#xff0c;请看原文。 Registers 寄存器 Learning Vim registers is like learning algebra for the first ti…...

为什么TCP需要三次握手?一次不行吗?

文章目录 1. 三次握手的过程2. 为什么需要三次握手&#xff1f;3. 握手过程中每一步的具体作用4. 简单比喻5. 为什么是三次握手&#xff0c;而不是两次或四次&#xff1f;6. 三次握手中的序列号有什么作用&#xff1f;7. 总结 1. 三次握手的过程 三次握手是建立 TCP 连接的过程…...

OpenGL ES 入门指南:从基础到实战

引言&#xff1a;为什么需要 OpenGL ES&#xff1f; 在当今的嵌入式设备&#xff08;如智能手机、汽车仪表盘、智能家居中控屏&#xff09;中&#xff0c;流畅的图形渲染能力是用户体验的核心。OpenGL ES&#xff08;OpenGL for Embedded Systems&#xff09; 作为行业标准&am…...

台达PLC转太网转换的教程案例(台达DVP系列)

产品介绍 台达DVP-PLC自投身工业自动化市场以来&#xff0c;始终致力于创新发展&#xff0c;不断推陈出新。其产品紧密贴合市场需求与行业工艺&#xff0c;凭借卓越性能与丰富功能&#xff0c;深受用户青睐。不仅推出了高效的程序与编辑工具&#xff0c;显著提升了主机执行速度…...

Ubuntu24.10编译Android12源码并运行于模拟器中

效果如下&#xff1a; 初始化环境&#xff1a; 运行lunch弹出对应目标 生成模拟器版本镜像 镜像生成成功 生成模拟器启动镜像 编译注意事项: 24.10版本&#xff1a; sudo apt install curl curl -sSL https://gerrit-googlesource.proxy.ustclug.org/git-repo//master/r…...

Java面试易忽略知识点

1. CompletableFuture中thenApply()与thenCompose()的区别 考察点&#xff1a;组合式异步编程 解析&#xff1a; ​**thenApply()**&#xff1a;接收前序任务结果&#xff0c;返回普通对象&#xff08;同步转换&#xff09;&#xff0c;适用简单数据处理。​**thenCompose()*…...

C#通过SignalR直接返回流式响应内容

1、背景 实现流式响应基本上分为两大技术方案&#xff1a;&#xff08;1&#xff09;基于HTTP的Stream处理&#xff1b;&#xff08;2&#xff09;基于socket的连接。前者的实现方式有&#xff1a;《C#通过API接口返回流式响应内容—SSE方式》和《C#通过API接口返回流式响应内…...

【排序算法对比】快速排序、归并排序、堆排序

排序算法对比&#xff1a;快速排序、归并排序、堆排序 1. 快速排序&#xff08;Quick Sort&#xff09; 原理 快速排序采用 分治法&#xff08;Divide and Conquer&#xff09;&#xff0c;通过选取基准值&#xff08;pivot&#xff09;&#xff0c;将数组划分为 小于基准值…...

YOLO11改进-模块-引入空间带状注意力机制(Spatial Strip Attention,SSA)增强模型对空间信息处理能力的重要模块

在图像相关任务中&#xff0c;传统卷积神经网络&#xff08;CNN&#xff09;在处理空间信息时&#xff0c;卷积核的感受野有限&#xff0c;难以有效捕捉长距离的空间依赖关系。而自注意力机制虽然能建模长距离依赖&#xff0c;但计算复杂度较高。为了在高效计算的同时更好地捕捉…...

C++内存分配方式

文章目录 1、静态内存分配2、栈内存分配3、堆内存分配4、内存池分配5、placement new语法工作原理示例 placement new应用场景 在C 中&#xff0c;内存分配主要有以下几种方式&#xff1a; 1、静态内存分配 特点&#xff1a;在编译时就确定了内存的分配和释放&#xff0c;内存…...

【经验】Orin系列Ubuntu远程桌面:VNC、NoMachine、URDC

1、VNC 1.1 Ubuntu端 1)安装VNC服务器 sudo apt install tigervnc-standalone-server2)安装xfce4 桌面 xfce4 用资源较GNOME ,KDE较少。适合老机器,轻量级桌面。与windows界面环境类似。 sudo apt install xfce4 xfce4-goodies也可以使用其它的桌面系统,可以使用如下命…...

【RabbitMQ】RabbitMQ消息的重复消费问题如何解决?

可以从消息队列和消费者两方面入手&#xff0c;确保消息处理的幂等性和可靠性。 1.消息重复消费的原因 1.1消息队列的机制 消息确认失败&#xff1a; 消费者处理完消息后&#xff0c;未正确发送确认(ACK)给RabbitMQ&#xff0c;导致消息被重新投递。消息重试机制&#xff1a…...

Python、MATLAB和PPT完成数学建模竞赛中的地图绘制

参加数学建模比赛时&#xff0c;很多题目——诸如统计类、数据挖掘类、环保类、建议类的题目总会涉及到地理相关的情景&#xff0c;往往要求我们制作与地图相关的可视化内容。如下图&#xff0c;这是21年亚太赛的那道塞罕坝的题目&#xff0c;期间涉及到温度、降水和森林覆盖率…...

Git 分支删除操作指南(含本地与远程)

&#x1f680; Git 分支删除操作指南&#xff08;含本地与远程&#xff09; 在多人协作的开发过程中&#xff0c;定期清理已合并的临时分支&#xff08;如 feature/*、bugfix/*、hotfix/* 等&#xff09;可以保持仓库整洁&#xff0c;避免混乱。 &#x1f4cc; 分支命名规范回…...

视频推拉流EasyDSS点播平台云端录像播放异常的问题排查与解决

视频推拉流EasyDSS视频直播点播平台可提供一站式的视频转码、点播、直播、视频推拉流、播放H.265视频等服务&#xff0c;搭配RTMP高清摄像头使用&#xff0c;可将无人机设备的实时流推送到平台上&#xff0c;实现无人机视频推流直播、巡检等应用。 有用户反馈&#xff0c;项目现…...

v-model+computed实现父子组件数据传递和同步

v-modelcomputed实现父子组件数据传递和同步 1. 父组件2. 子组件说明总结 1. 父组件 <template><div><span>父子组件传值&#xff1a;{{countRef}}<my-counter v-modelcount></my-counter></span></div> </template> <scr…...

一键秒连WiFi智能设备,uni-app全栈式物联开发指南。

如何使用 uni-app 框架实现通过 WiFi 连接设备并进行命令交互的硬件开发。为了方便理解和实践&#xff0c;我们将提供相应的源代码示例&#xff0c;帮助开发者快速上手。 1. 硬件准备 在开始之前&#xff0c;请确保你已经准备好以下硬件设备&#xff1a; 支持 WiFi 连接的设备…...

关于Docker是否被淘汰虚拟机实现连接虚拟专用网络Ubuntu 22.04 LTS部署Harbor仓库全流程

1.今天的第一个主题&#xff1a; 第一个主题是关于Docker是否真的被K8S弃用&#xff0c;还是可以继续兼容&#xff0c;因为我们知道在去年的时候&#xff0c;由于不可控的原因&#xff0c;docker的所有国内镜像源都被Ban了&#xff0c;再加上K8S自从V1.20之后&#xff0c;宣布…...

【C++】动态规划从入门到精通

一、动态规划基础概念详解 什么是动态规划 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是一种通过将复杂问题分解为重叠子问题&#xff0c;并存储子问题解以避免重复计算的优化算法。它适用于具有以下两个关键性质的问题&#xff1a; 最优子结构&…...

【专栏预告】《VR 360°全景视频开发:从GoPro到Unity VR眼镜应用实战》

【专栏预告】每周天12:00更新&#xff0c;欢迎指导与交流。 专栏地址&#xff1a;《VR 360全景视频开发&#xff1a;从GoPro到Unity VR眼镜应用实战》 前言 随着VR技术的不断发展&#xff0c;360全景视频的需求也在逐年增长。尤其是在VR眼镜端&#xff0c;360全景视频带来了…...

【leetcode100】搜索插入位置

1、题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2…...

Java面试黄金宝典3

1. 什么是 NIO 原理 缓冲区&#xff08;Buffer&#xff09;&#xff1a; 它是一个线性的、有限的基本数据元素序列&#xff0c;本质上是一块内存区域&#xff0c;被包装成了一个对象&#xff0c;以便于进行高效的数据读写操作。不同类型的基本数据都有对应的Buffer子类&#xf…...

vue3 报错 Could not find a declaration file for module ‘/App.vue‘

vue3 报错 Could not find a declaration file for module /App.vue.app.vue路径.js implicitly has an any type 问题描述原因分析&#xff1a;解决方案&#xff1a; 问题描述 Could not find a declaration file for module /App.vue.app.vue路径.js implicitly has an any …...

linux对串口设备文件进行重命名(删除、重建)

0.前言 最近在弄3562的自制板&#xff0c;有很多串口&#xff0c;然后发现设备文件名编号有些跳跃&#xff0c;不方便用户使用&#xff0c;因此&#xff0c;需要对这些设备文件进行重命名 1.查看设备号 我们需要知道目标设备文件的设备号&#xff0c;通过ls -l /dev/tty*查看…...

Linux内核传输层UDP源码分析

一、用户数据包协议&#xff08;UDP&#xff09; 1.UDP数据报头 UDP 提供面向消息的不可靠传输&#xff0c;但没有拥塞控制功能。很多协议都使用 UDP&#xff0c;如用于 IP 网络传输音频和视频的实时传输协议 (Real-time Transport Protocol&#xff0c;RTP)&#xff0c;此类型…...

GitHub 超火的开源终端工具——Warp

Warp 作为近年来 GitHub 上备受瞩目的开源终端工具&#xff0c;以其智能化、高性能和协作能力重新定义了命令行操作体验。以下从多个维度深入解析其核心特性、技术架构、用户评价及生态影响力&#xff1a; 一、背景与核心团队 Warp 由前 GitHub CTO Jason Warner 和 Google 前…...

【Java基础巩固系列】异常

业务背景 业务开发中&#xff0c;总会遇到代码出现异常的情况&#xff0c;不合理的异常处理或不处理异常除了影响业务功能和中断业务功能外&#xff0c;还会增加排查问题的难度。所以我们要学会正确的使用异常处理。合理的异常处理能减少很多潜在的问题&#xff0c;是提高代码…...

sass介绍

1、Sass简介 Sass 是一种 CSS 的预编译语言。它提供了 变量&#xff08;variables&#xff09;、嵌套&#xff08;nested rules&#xff09;、 混合&#xff08;mixins&#xff09;、 函数&#xff08;functions&#xff09;等功能&#xff0c;并且完全兼容 CSS 语法。Sass 能…...

第1章:云原生时代:容器技术的发展历程与核心价值

第1章:云原生时代:容器技术的发展历程与核心价值 作者:DogDog_Shuai 阅读时间:约15分钟 难度:入门级 目录 1. 引言2. 容器技术的发展历程3. 容器技术的核心价值4. 云原生时代的机遇与挑战5. 总结1. 引言...

软考程序员考试知识点汇总

软考程序员考试&#xff08;初级资格&#xff09;主要考察计算机基础理论、编程能力及软件开发相关知识。以下是核心知识点总结及备考建议&#xff1a; 一、计算机基础 数制与编码 二进制、八进制、十进制、十六进制转换原码、反码、补码表示&#xff08;整数与浮点数&#xf…...

JVM OOM问题如何排查和解决

在 Java 开发中&#xff0c;JVM OOM&#xff08;OutOfMemoryError&#xff09;问题通常是指程序运行时&#xff0c;JVM 无法为对象分配足够的内存空间&#xff0c;导致发生内存溢出的错误。这个问题往往和内存的配置、内存泄漏、或者资源过度使用等因素有关。 1. OOM 错误类型…...

折叠树报表

折叠树报表中包含了三种信息: 1.树组织信息-可展开、收拢 2.节点的统计信息(汇总求和) 3.每个节点对应的数据信息 一、准备数据 mysql8 数据库中存在两张表 org和store表。 org表和部分数据如下,其中orgname是组织的名称,codepath是完整的组织代码,seq是每个节点的顺序,可…...

python 数据可视化matplotib库安装与使用

要使用 matplotlib 库进行数据可视化&#xff0c;首先你需要确保已经安装了该库。如果你还没有安装&#xff0c;可以通过 Python 的包管理器 pip 来安装它。在你的命令行工具中运行以下命令来安装 matplotlib&#xff1a; pip install matplotlib安装完成后&#xff0c;你就可以…...

Springdoc配置参数详解

文章目录 **1. 基础配置****API 文档路径-springdoc.api-docs.path****Swagger UI 路径-springdoc.swagger-ui.path****是否启用 API 文档-springdoc.api-docs.enabled****是否启用 Swagger UI-springdoc.swagger-ui.enabled** **2. 全局元信息-info****应用标题-springdoc.inf…...

抖音视频数据获取实战:从API调用到热门内容挖掘

在短视频流量为王的时代&#xff0c;掌握抖音热门视频数据已成为内容运营、竞品分析及营销决策的关键。本文将手把手教你通过抖音开放平台API获取视频详情数据&#xff0c;并提供完整的代码实现及商业化应用思路。 一、抖音API权限申请与核心接口 抖音API需企业资质认证&…...

【数学建模】灰色关联分析模型详解与应用

灰色关联分析模型详解与应用 文章目录 灰色关联分析模型详解与应用引言灰色系统理论简介灰色关联分析基本原理灰色关联分析计算步骤1. 确定分析序列2. 数据无量纲化处理3. 计算关联系数4. 计算关联度 灰色关联分析应用实例实例&#xff1a;某企业生产效率影响因素分析 灰色关联…...