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

git - study

文章目录

    • git - study
    • 概述
    • 可以用 git gui工具来添加快捷命令工具
    • 如果要在提交日志中搜索,可以用gitk的view编辑功能
    • 实验环境
    • 直接用git自带环境进行git操作的好处
    • 查看git所有配置
    • 配置全局数据
    • 配置项目专用的数据
    • 查询配置数据的原始值
    • 配置git使用的文本编辑器
    • 获取某个git命令的帮助
    • git基本操作
    • 需要确认自己要操作的项目的主分支的名称
    • 初始化git项目
    • 克隆仓库
    • 查看项目文件的状态
    • 设置要被git操作忽略的文件
    • 文件变化的比较
    • 图形化比较
    • 提交文件
    • 查看log
    • 远程仓库
    • 推送代码
    • 建立分支
    • 切换到指定的分支
    • 推送分支
    • 查看所有分支
    • 自动add所有后提交
    • 查看分支 - 命令
    • 查看分支还是用gitk方便
    • 切换分支时,如果还没有提交
    • 合并分支
    • 删除分支
    • 远程分支
    • 删除远程分支
    • rebase
    • 远端的git库搭建
    • 打标签
    • 查看标签
    • 推送本地所有标签到远端
    • 查看远端标签
    • 备注
    • 推送所有
    • 用git自带工具的感受
    • END

git - study

概述

progit 这本书是官方的,权威。

以下内容都是对这本书的读书笔记和实验的体会。
这本官方的书,前半部分说git命令具体怎么用,后半部分说github怎么用 + git高级和细节的操作。因为作者就是github的人。
能看完前半部分对自己有用的部分,就可以熟练用git命令来进行日常的git操作了。
对于危险的git操作(e.g. 删除本地分支,删除远程分支,删除tag, rebase, reset), 最好不要做。如果非要做的话,最好找个靠谱的GUI工具来弄。

只记录一些正常git操作中能用得到的,危险/高级的指令不学习。
只保证用git for win自带的工具能进行正常的git库操作就行, 以后只用官方的git工具。
像看日志这种操作用git自带的gitk命令来图形化查看日志。
日常操作也可以用git gui这个命令来用图形化的方式完成。
官方做的这2个工具git命令的封装比较好(一个用来提交,一个用来看日志),工具也比较轻量。

可以用 git gui工具来添加快捷命令工具

在这里插入图片描述
在这里插入图片描述

如果要在提交日志中搜索,可以用gitk的view编辑功能

在这里插入图片描述

实验环境

$ git --version
git version 2.48.1.windows.1

直接用git自带环境进行git操作的好处

git bash + gitk + git gui
每一步都有明确的提示,如果操作一步后,漏了啥操作,可以明确的知道。
现在的git前端gui工具,都只是封装了一部分的git命令,所有还是用原生的git命令操作最直接。
将常用的/或者说全部能用到的git命令记录下来,该进行什么git命令操作,如果忘了,就查一下自己的笔记,很快就能熟练的使用git命令行了。

如果有些操作(e.g. 查看git历史和版本)用命令行不直观,这时就可以用gitk来辅助。

查看git所有配置

git config --list --show-origin

配置全局数据

git config --global xx 向git的全局配置文件中写入内容

$ git config --global user.name "John Doe" 
$ git config --global user.email johndoe@example.com

Git 会使用它找到的每一个变量的最后一个配置, 一般来说,全局git配置数据在前面,项目本身的git配置数据在后面。

配置项目专用的数据

git config xx 向项目本身的配置文件中写入内容

$ git config user.name "John Doe" 
$ git config user.email johndoe@example.com

查询配置数据的原始值

$ git config --show-origin rerere.autoUpdate 
file:/home/johndoe/.gitconfig	false

配置git使用的文本编辑器

git config --global core.editor xx

e.g.

$ git config --global core.editor "'C:\Users\chenx\AppData\Local\Programs\Microsoft VS Code\Code.exe' "

获取某个git命令的帮助

$ git <verb> --help

e.g.

$ git config --help

一般来说,会弹出一个本地网页或者远程网页来显示请求的git 命令的帮助。

git基本操作

需要确认自己要操作的项目的主分支的名称

主分支的名称都是默认的,不是main, 就是master, 和库建立时的选项(主分支默认名称)有关系。

初始化git项目

命令行用 git bash

cd ./my_project
git init

这个目录现在就可以作为一个git仓库了。

增加一个test1.c, LICENSE
在这里插入图片描述
向git项目添加文件

git add *.c
git add LICENSE

提交

git commit -m 'initial project version'

克隆仓库

在一个非git项目的目录(该目录没有.git目录), 可以克隆远程仓库

git clone <远程仓库的url> [迁出到本地的目录名称]
git clone https://github.com/libgit2/libgit2 mylibgit

查看项目文件的状态

git status

如果项目提交后,未变动,就显示未工作树是干净的
在这里插入图片描述
如果项目中新增了文件,就会显示出该文件,不用我们自己去找哪个文件该被添加。
在这里插入图片描述
如果项目中的文件被修改了,也会显示出来。
在这里插入图片描述
如果工作目录中的文件被删掉了,也会被列出来。
在这里插入图片描述
如果嫌弃列出的文件信息太复杂,可以用短格式。

git status -s

段格式的标记含义如下

  • ’ ’ = unmodified
  • M = modified
  • T = file type changed (regular file, symbolic link or submodule)
  • A = added
  • D = deleted
  • R = renamed
  • C = copied (if config option status.renames is set to “copies”)
  • U = updated but unmerged
X          Y     Meaning
-------------------------------------------------[AMD]   not updated
M        [ MTD]  updated in index
T        [ MTD]  type changed in index
A        [ MTD]  added to index
D                deleted from index
R        [ MTD]  renamed in index
C        [ MTD]  copied in index
[MTARC]          index and work tree matches
[ MTARC]    M    work tree changed since index
[ MTARC]    T    type changed in work tree since index
[ MTARC]    D    deleted in work treeR    renamed in work treeC    copied in work tree
-------------------------------------------------
D           D    unmerged, both deleted
A           U    unmerged, added by us
U           D    unmerged, deleted by them
U           A    unmerged, added by them
D           U    unmerged, deleted by us
A           A    unmerged, both added
U           U    unmerged, both modified
-------------------------------------------------
?           ?    untracked
!           !    ignored
-------------------------------------------------

设置要被git操作忽略的文件

直接新建或编辑 .gitignore 文件,一般就是根目录下有一个.gitignore文件。但是项目中的每个目录都可以有.gitignore.

.gitignore的例子 : https://github.com/github/gitignore , 这个例子中有各种语言的.gitignore。

这些 .gitignore的例子很详细(e.g c, c++, VS), 需要时可以参考。

文件变化的比较

git diff

图形化比较

git difftool --tool-help

默认是用 vimdiff 来比较,通过帮助,可以看到,居然支持bc4.

先设置git的difftool
git config --global diff.tool bc4
git config --global difftool.prompt  false
git config --global difftool.bc4.path  "C:\Program Files\Beyond Compare 5\BCompare.exe" 

在这里插入图片描述

提交文件

git add test1.c
git commit -m 'test commit modify file'
# 如果提交时,不加 -m 'xx', 就会弹出VSCODE, 让填写提交信息

如果提交信息只有一行,用 -m比较方便。
如果有多行提交信息,在弹出的VSCODE中编辑多行信息,保存这个文件后,git就会自动提交。关掉保存的VSCODE就行了。

如果用 git status 看到的文件都是自己想要的文件,而不是垃圾文件或者不需要提交的文件。就可以全部自动add然后提交
如果用git status 看到了不该提交的文件,就先设置忽略文件,或者自己将不需要提交文件从资源管理器中删除,再提交

// 这个不好使,那一个一个添加也行
git commit -a -m "v2"git add LICENSE file1.txt test1.c

查看log

git log

用git log 只能简单看一下,工程大了不现实。

gitk

用gitk这个git自带的工具看,很方便清晰

远程仓库

如果有要迁出的远程仓库,就迁出到本地。
如果自己要做一个本地的仓库做实验,参考(git,gitea - tool - creat Gitea Empty Rep Dir).
现在自己做了一个实验仓库rep_my_git_study用于远程仓库的实验。
然后迁出到本地

git clone http://localhost:3000/name/my_git_study.git my_git_study_gitea

现在就可以做远程git库的实验了。

查看当前迁出工程的远程库

$ git remote -v
origin  http://localhost:3000/name/my_git_study.git (fetch)
origin  http://localhost:3000/name/my_git_study.git (push)

以前还特意去看当前目录的属性,看tortoisegit的git属性页,才知道这个库的git url是啥。
现在用 remote命令就可以很方便的知道当前库的git url.
现在对tortoisegit不感冒了,已经将tortoisegit卸载了。

推送代码

git push origin <分支名称>
// origin 就是remote是看到的远程分支?
// 如果不指定分支名称,就是当前分支

如果是第一次克隆的库,如果项目的名字不在gitea远端的用户名列表内,至少要设置项目的git用户名称
否则认证失败。

git config global user.name "name" 

建立分支

git branch <新分支名称>
# 从当前的Head上, 建立一个新分支

切换到指定的分支

# 建立分支后,并不会自动切换到那个新分支
# 如果向切到指定的分支,必须手工切换
git checkout <已经存在的分支名称>
git switch <已经存在的分支名称>
# 优先使用 git checkout

改变HEAD的方法,只有切换到指定分支,才能够改变HEAD的指向。

推送分支

在本地开分支后,推送后,并不会自动推送到远端url.
需要显势推送分支到远端

git push <remote> <branch>

远端一般是origin,可以用下列命令查看远端的符号
如果分支已经推送过了,再重复推送,只是更新了状态,并不会有其他不良后果。

git remote -v
# 确定远端url符号是 origin

列出本地分支名称

git branch -v
git push origin <branch>

查看远端的分支信息

git branch -r -v
git remote show origin

查看所有分支

git branch -a -v

如果远端没有本地的分支,就要将本地分支推到远端, 如果认证失败,需要配置项目的用户名称和email
用户名和email是远端配置好的,要配套。
如果是第一次推送,需要将远端网页开着

git config user.name "name" 
git config user.email "me@x.com"
git push origin br-1

再查看远端的分支信息,就有本地建立的分支了。
推送的时候,如果不指定分支,那就是推送到当前分支。

自动add所有后提交

# 如果用git status 看到的文件都是自己想要的,可以用下列命令自己添加全部文件后提交
git commit -a -m 'v3 - made a change'

查看分支 - 命令

git log --oneline --decorate --graph --all

查看分支还是用gitk方便

向看分支情况时,还是切到gitk, 然后选中所有分支选项。
在这里插入图片描述
在这里插入图片描述

切换分支时,如果还没有提交

$ git checkout br-1
error: Your local changes to the following files would be overwritten by checkou
t:file1.txt
Please commit your changes or stash them before you switch branches.
Aborting

如果切换分支时,本地分支还没提交,会有提示。不会意外丢失文件修改内容。
用git命令操作还是很安全和透明的。

合并分支

# 先切回主分支(要接受其他分支内容合并的分支)
git checkout master# 在合并之前,比较一下2个版本有啥区别?
git diff br-1
git difftool br-1# 在主分支中,指定要合并过来的分支
git merge hotfix# 合并分支后,合并的内容并不会自动出现在当前分支,需要重新迁出当前分支
git checkout master

如果合并出现冲突,可以使用图形化的工具来合并

# 设置合并工具为 Beyond Compare
git config --global merge.tool bc4
git config --global mergetool.extMerge.cmd 'bc4 "$BASE" "$LOCAL" "$REMOTE" "$MERGED"'
git config --global mergetool.extMerge.trustExitCode false
git config --global diff.external extDiff
git mergetool <要合并的分支名称>
# 试过了不好使,提示没有东西要合并
# 那么就用git merge br-xx 来合并好了
# 果真不好使,还是用命令行来合并...
## 估计BC4不可以作为合并工具

删除分支

如果确定一个分支没用了(e.g. 只是一个实验分支,且实验结果已经合并到了主分支, 且这个实验分支以后再也没有人去用,留着也没有参考价值)

# 先回到主分支
git checkout main# 再删除不要的其他分支
# 如果删除其他分支时有报错,请将每个分支的内容都提交
git branch -d <要删除的分支名称>
# 删除了本地分支后,远程还有这个分支
# 如果该分支还没有合并到主分支,会提示还未合并,无法删除
# 如果确认这个分支的工作都是白搭的,用下列命令强制删除
git branch -D <要删除的分支名称>
# 删除分支这样的操作,还是挺危险的,如果不是刚需,还是留着分支。
# 当然,开分支的时候,就要想清楚,是否真的要开分支# 用git branch -a -v 查看分支
# 看到远端还有这个分支,只是本地已经没有这个分支了

远程分支

从远端库拉取变化

git fetch origin

删除远程分支

删除远程分支是十分危险的操作, 万一有权连上远程库的人干坏事咋弄?

git push origin --delete <远程分支名称>
git push origin --delete br-1
# 直接被删掉了,挺危险的...
# 为了安全,不管是本地分支,还是远程分支,最好不要删除
# 另外,远程库的备份看来是十分必要的
# reflog的保存时限默认是90天, 万一管理员没有注意到误操作,只能从备份恢复
# 虽然可以用本地reflog恢复,但是还是挺危险的,还是不要删除分支!!!。
# 因为git操作是针对开源工程的,每个人都有权限做所有事,为了安全,备份确实是必要的。

rebase

rebase比较危险,容易造成提交历史的混乱(弄丢提交者和细节提交的文件变化)和开发流程的混乱。
用merge可以完成所有的功能。
不要使用rebase(对于一般的git用户), 有分支合并的任务时,都用merge来做。
只有库的拥有者为了合并主线(版本)方便(众多贡献者协作完成了一个稳定的版本),才有可能用rebase来进行合并的偷懒。

远端的git库搭建

就用gitea命令行就行
如果自己要做一个本地的仓库做实验,参考(git,gitea - tool - creat Gitea Empty Rep Dir).

打标签

用gitk查看提交记录,找到自己要打标签的点的提交ID 9282cccb8a99591b3f1053819bfeb37cde29ff45

git tag -a v0.9.0 9282cccb8a99591b3f1053819bfeb37cde29ff45 -m “v0.9.0”

查看标签

git tag

推送本地所有标签到远端

git push origin --tags
# 推送时,要将gitea的远端管理网页打开,否则失败

查看远端标签

git ls-remote --tags origin

备注

如果只是初步的来用git命令行来干活,看官方书籍的前半部分就行。
有需要再在官方的书中找。
一次都看完,也消化不了,因为书中git操作的深度和广度都挺大的。有些场景,git新手用不到。
在官方书籍的最后,将大类的命令列出来,有快捷方式可以导航到大类命令去仔细看。

推送所有

时间久了,一个工程如果忘记了是否遗漏了要推送的内容,可以尝试全部推送一次。
推送前,先确认一下工程的用户名和email是否正确, 如果不正确,改过来。

chenx@ls3561 MINGW64 /d/my_dev/my_git_study_gitea (main)
$ git config user.name
namechenx@ls3561 MINGW64 /d/my_dev/my_git_study_gitea (main)
$ git config user.name my_namechenx@ls3561 MINGW64 /d/my_dev/my_git_study_gitea (main)
$ git config user.email
me@x.comchenx@ls3561 MINGW64 /d/my_dev/my_git_study_gitea (main)
$ git config user.email my_email@x.comchenx@ls3561 MINGW64 /d/my_dev/my_git_study_gitea (main)
$

查看要推送的url是否正确?如果不正确,改过来(适用于从第三方的git url克隆的库,但是想推送到自己的git库进行后续私有维护)

# 查看要推送的库
git remote -v
origin  http://localhost:3000/name/my_git_study.git (fetch)
origin  http://localhost:3000/name/my_git_study.git (push)# 修改要推送的git url
git remote set-url origin <新仓库地址.git>
git remote set-url origin http://localhost:3000/lostspeed/my_git_study.git

需要打开git服务端的网页
再确认一下服务端的用户名和口令是否正确。
执行 b1_list_rep_user.bat
如果用户名不是自己要的,用a2_create_rep_user_pwd.bat改为自己中意的名字和email
如果用户名是自己要的,但是口令需要改一下,用b2_modify_rep_user_pwd.bat来改。

确认客户端要推送上来的库是否存在,如果不存在,需要自己新建的一个同名的库(适合于从第三方迁出,但是想推送到自己的私有库)。


# 如果第一次推送认证失败,再推送一次,在git服务端弹出的认证允许页面,点击允许,就可以推送成功了
# 如果已经推送成功,再执行推送命令,也不会有不良影响,只是显示所有都更新了日期
git push --all origin && git push --tags origin

推送所有完成后,及时将git库管理网页, 客户端git bash窗口,gitea服务端的命令行都关掉。防止自己从其他小库操作时出意外。
因为每个小库的git url的端口都是3000.

用git自带工具的感受

还是官方出的工具NB, 简洁,方便,直观。
以前都在用第三方的git前端工具(e.g. tortoisegit), 如果对于git 新手,用第三方的git 前端,可以免去学习git命令,方便。
但是看git官方的书,里面开篇就提到“这将花费你生命中的几小时来学习git”, 说的很有道理,就几个小时的学习,就能掌握80%的git操作内容,已经足够日常使用git的场景了。如果遇到git操作的细节问题,再来看官方这本书。

现在用官方的git bash 命令行 + git gui + gitk的全家桶,感觉很好,再也不想去用第三方的git 前端的工具了。
如果不想输入命令行,可以自己做一些脚本,来执行自己常用的git命令。
git gui 本身也可以添加一些菜单命令,可以将自己常用的git命令添加为菜单,点击就能执行。
最后,如果真不想输入git命令,那么自己写个程序,封装git命令来干活,也行.

END

相关文章:

git - study

文章目录 git - study概述可以用 git gui工具来添加快捷命令工具如果要在提交日志中搜索&#xff0c;可以用gitk的view编辑功能实验环境直接用git自带环境进行git操作的好处查看git所有配置配置全局数据配置项目专用的数据查询配置数据的原始值配置git使用的文本编辑器获取某个…...

编写一个程序,输出1到100的所有质数(Python版)

编写一个程序&#xff0c;输出1到100的所有质数 以下是一个用 Python 编写的程序&#xff0c;用于输出 1 到 100 的所有质数&#xff1a; def is_prime(n):# 检查 n 是否为质数if n < 1: # 如果 n 小于等于 1&#xff0c;则不是质数return False# 遍历从 2 到 n 的平方根的…...

wifi5和wifi6,WiFi 2.4G、5G,五类网线和六类网线,4G和5G的区别

wifi5和wifi6的区别 是Wi-Fi 5和Wi-Fi 6的选择与路由器密切相关。路由器是创建和管理无线网络的设备,它决定了网络的类型和性能。具体来说: 路由器的标准支持:路由器可以支持不同的Wi-Fi标准,如Wi-Fi 5(802.11ac)和Wi-Fi 6(802.11ax)。支持Wi-Fi 6的路由器能够提供更高…...

FPGA之硬件设计笔记-持续更新中

目录 1、说在前面2、FPGA硬件设计总计说明3、 原理图详解 - ARITX - 7 系列3.1 顶层框图介绍3.2 FPGA 电源sheet介绍&#xff1a;3.2.1 bank 14 和 bank 15的供电3.2.2 bank 0的供电3.2.3 Bank34 35 的供电 3.3 核电压和RAM电压以及辅助电压 4 原理图详解-- Ultrascale ARTIX4.…...

Python--内置模块和开发规范(上)

1. 内置模块 1.1 JSON 模块 核心功能 序列化&#xff1a;Python 数据类型 → JSON 字符串 import json data [{"id": 1, "name": "武沛齐"}, {"id": 2, "name": "Alex"}] json_str json.dumps(data, ensure_a…...

步步为营:用 torch.arange 快速生成数字序列

前言 在 PyTorch 中,torch.arange 就像一个神奇的小精灵,悄然无声地帮助你生成一系列数值,简直是深度学习模型的“数字魔法师”。你只需简单的几个参数,它就能为你呈现完美的数值序列,从而让数据准备工作变得轻松愉快。你可能会问,这个小精灵到底是怎么做到的?它怎么能…...

使用Spring Data Redis操作Redis

使用Spring Data Redis操作Redis 文章目录 使用Spring Data Redis操作Redis1. 添加依赖2. 配置Redis连接3. 创建Redis配置类4. 编写Redis操作类5. 操作各种数据类型操作字符串&#xff08;String&#xff09;操作列表&#xff08;List&#xff09;操作集合&#xff08;Set&…...

嵌入式开发:傅里叶变换(5):STM32和Matlab联调验证FFT

目录 1. MATLAB获取 STM32 的原始数据 2. 将数据上传到电脑 3. MATLAB 接收数据并验证 STM32进行傅里叶代码 结果分析 STM32 和 MATLAB 联调是嵌入式开发中常见的工作流程&#xff0c;通常目的是将 STM32 采集的数据或控制信号传输到 MATLAB 中进行实时处理、分析和可视化…...

【无人机三维路径规划】基于豪猪算法CPO、蜣螂算法DBO、人工兔ARO实现复杂山地模型下无人机路径规划附Matlab代码

无人机三维路径规划 一、引言 1.1、研究背景与意义 无人机技术在近年来得到了快速发展&#xff0c;其在军事侦察、民用测绘、物流配送和灾难救援等领域的应用日益广泛。路径规划作为无人机技术中的核心问题之一&#xff0c;直接影响到无人机的飞行效率和安全性。在复杂多变的…...

Cursor AI编程-详细教程

一点准备工作 Cursor方法论&#xff1a;简单到没有方法 Cursor能做什么 Cursor官网&#xff1a;https://www.cursor.com/ja Cursor文档&#xff1a;Cursor – Welcome to Cursor Cursor论坛&#xff1a;Weekly - Cursor - Community Forum 写程序代码 举例&#xff1a; 设…...

AI关于SHAP分析与列线图(算法)解释线性模型矛盾之处的解释

AI关于SHAP分析与列线图&#xff08;算法&#xff09;解释线性模型矛盾之处的解释 两种解释方法在个案的局部解释方面&#xff0c;有矛盾之处&#xff0c;其背后的原理已经超出了我的知识范畴&#xff0c;以下是询问AI的几个问题&#xff0c;希望能从中梳理出一个合理的解释。…...

上海市计算机学会竞赛平台2024年5月月赛丙组城市距离之和

城市距离之和 内存限制: 256 Mb时间限制: 1000 ms 题目描述 设 (x,y)(x,y) 与 (x′,y′)(x′,y′) 是平面上的两个点的坐标&#xff0c;它们之间的城市距离定义为 ∣x−x′∣∣y−y′∣∣x−x′∣∣y−y′∣ 给定 nn 个点&#xff0c;请计算所有点对之间的城市距离之和。 …...

处理DeepSeek返回的markdown文本

处理DeepSeek返回的markdown文本 markdown预览组件&#xff0c;支持公式显示&#xff0c;支持uniapp。 相关依赖 markdown-itmarkdown-it-mathjaxmarkdown-it-katexmarkdown-it-latexkatexgithub-markdown-css 组件源码 <!--* Description: markdown显示组件* Author: wa…...

《今日AI-人工智能-编程日报》整理于——头条新闻、豆包日报

技术突破 OpenAI 发布 GPT-4.5&#xff1a;OpenAI 正式推出新一代大模型 GPT -4.5&#xff0c;语言理解、情商及逻辑推理能力显著增强&#xff0c;幻觉问题大幅减少&#xff0c;计算效率较 GPT-4 提升超 10 倍&#xff0c;已逐步向用户开放试用。国产模型 Kimi 发布 k1.6 版本&…...

JavaEE [特殊字符] TCP协议:三次握手四次挥手全图解

&#x1f31f; 一、TCP核心特性&#xff1a;可靠传输的秘密 1️⃣ 有连接 & 全双工 双向通道&#xff1a;建立连接后&#xff0c;客户端↔服务器可同时收发数据可靠传输三板斧&#xff1a; 确认应答&#xff08;ACK&#xff09; 接收方返回ACK接收序号数据长度示例&#…...

解决 Ubuntu 24.04 虚拟机内无法ping 通 Hostname 的问题

问题背景 在 VMware 或 VirtualBox 中安装 Ubuntu 24.04 虚拟机时&#xff0c;遇到无法通过主机名&#xff08;Hostname&#xff09;进行网络通信的问题。例如&#xff0c;将虚拟机的主机名设置为 001&#xff0c;执行 ping 001 时返回 ping 0.0.0.1 并超时。此问题通常由 主机…...

wzl-django学习

####################################################总的urls.py from django.contrib import admin from django.urls import path,include, re_path from django.views.static import serve from django.conf import settings from drf_yasg import openapi from drf_yas…...

(十 三)趣学设计模式 之 模版方法模式!

目录 一、 啥是模板方法模式&#xff1f;二、 为什么要用模板方法模式&#xff1f;三、 模板方法模式的实现方式四、 模板方法模式的优缺点五、 模板方法模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&a…...

泛型编程、函数模板、类模板

目录 一、泛型编程 1.泛型编程提出背景 1.1.代码复用案例解析 案例1&#xff1a;实现一个交换函数&#xff0c;并对不同类型参数进行函数重载 (1)调试 (2)代码解析 ①代码复用问题 ②泛型编程的解决方案 ③上面泛型Swap函数模版的优点 1.2.泛型编程提出背景 2.泛型编…...

【Vue3】浅谈setup语法糖

Vue3 的 setup 语法糖是通过 <script setup> 标签启用的特性&#xff0c;它是对 Composition API 的进一步封装&#xff0c;旨在简化组件的声明式写法&#xff0c;同时保留 Composition API 的逻辑组织能力。以下是其核心概念和原理分析&#xff1a; 一、<script setu…...

经验总结:使用vue3测试后端接口的模板

为了方便在开发中途&#xff0c;比较即时地&#xff0c;测试自己写的接口&#xff0c;是否有BUG&#xff0c;所以整理了这个测试模板。 效果就是可以通过自己编码&#xff0c;比较灵活&#xff0c;比较快得触发接口调用。 下边这个是最核心的模板&#xff0c;然后还有一个写axi…...

Vosk语音识别包

Vosk介绍 Vosk作为一款开源的离线语音识别工具包&#xff0c;其核心特点可归纳为以下五个方面&#xff0c;结合多篇技术文档的实践与分析 一、离线高效识别 完全脱离网络依赖&#xff1a;所有语音处理均在本地完成&#xff0c;无需云端数据传输&#xff0c;既保障隐私安全又…...

【欢迎来到Git世界】Github入门

241227 241227 241227 Hello World 参考&#xff1a;Hello World - GitHub 文档. 1.创建存储库 r e p o s i t o r y repository repository&#xff08;含README.md&#xff09; 仓库名需与用户名一致。 选择公共。 选择使用Readme初始化此仓库。 2.何时用分支&#xf…...

简洁的个人地址发布页HTML源码

源码介绍 简洁的个人地址发布页HTML源码,源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果 效果预览 源码获取 简洁的个人地址发布页HTML源码...

【VSCode】VSCode下载安装与配置极简描述

VSCode 参考网址&#xff1a;[Visual Studio Code Guide | GZTime’s Blog]. 下载安装 下载地址&#xff1a;Download Visual Studio Code - Mac, Linux, Windows. 注&#xff1a;推荐不更改安装位置&#xff0c;并且在附加任务中“其他”中的四项全部勾选&#xff0c;即将用…...

wav格式的音频压缩,WAV 转 MP3 VBR 体积缩减比为 13.5%、多个 MP3 格式音频合并为一个、文件夹存在则删除重建,不存在则直接建立

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 问题一&#xff1a;wav格式的音频压缩为哪些格式&#xff0c;网络传输给用户播放…...

Linux权限 -- 开发工具(一)

文章目录 包管理器yumyum具体操作 Linux编辑器 - vim的使用vimvim的多模式 包管理器yum Linux中安装软件&#xff1a; 1.源码安装 2. 软件包安装 – rpm 3. 包管理器yum(centos) apt/apt-get(ubuntu) 为什么有包管理器&#xff1f; 包管理器会自动帮我们解决包依赖的问题 2. 什…...

leetcode_动态规划/递归 279**. 完全平方数

279. 完全平方数 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 …...

【leetcode】二分查找专题

文章目录 1.二分查找1.题目2.解题思路3. 解题代码 2.在排序数组中查找元素的第一个和最后一个位置1.题目2.算法原理3. 代码 3.x的平方根1.题目2.代码 4.搜索插入位置1.题目2.解题思路3.解题代码 5.山脉数组的索引1.题目2.解题思路3. 代码 6.寻找峰值1.题目2.解题思路3.代码 7. …...

腾讯混元文生图大模型(Hunyuan-DiT)与Stable Diffusion(SD)对比分析

腾讯混元文生图大模型&#xff08;Hunyuan-DiT&#xff09;与Stable Diffusion&#xff08;SD&#xff09;对比分析 腾讯混元文生图大模型&#xff08;Hunyuan-DiT&#xff09;与Stable Diffusion&#xff08;SD&#xff09;作为当前文生图领域的两大代表模型&#xff0c;各自…...