git使用详解
一、git介绍
1、git简介
Git 是一个开源的分布式版本控制系统(最先进的,没有之一),用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion(SVN) 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
2、集中式(SVN)VS分布式(git)
集中式版本控制系统:版本库是集中存放在中央服务器的,工作时要先从中央服务器取得最新的版本,完成工作后,再把自己的文件推送给中央服务器。集中式版本控制系统在工作时需要联网。
分布式版本控制系统:没有“中央服务器”,每个人的电脑上都是一个完整的版本库,不需要联网。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,每个人电脑里都有完整的版本库,某一个人的电脑坏掉了,从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
实际使用分布式版本控制系统的时候,很少在两人之间的电脑上推送版本库的修改,因为可能俩人不在同一局域网内,两台电脑互相访问不了,也可能另一台电脑没有开机。所以分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理。
二、git下载安装与名词解释
1、下载
Linux安装:
apt-get git install git
官网:Git - Downloads
我下好的windows:https://pan.baidu.com/s/1RCB01vaF8ayo7KXYjn5pfA?pwd=1473
2、安装
! !!可以一直点下一步
2.1、使用许可声明
2.2、选择安装目录
2.3、选择安装组件
2.4、选择开始菜单文件
2.5、选择Git默认编辑器
2.6、决定初始化新项目(仓库)的主干名字
2.7、调整Git的环境变量
2.8、选择 SSH 执行文件
2.9、选择HTTPS后端传输
2.10、配置行尾符号转换
2.11、配置终端模拟器以与 Git Bash 一起使用
2.12、“git pull” 默认行为
2.13、选择一个凭证帮助程序
2.14、配置额外的选项
2.15、配置实验性选项
2.16、安装中
2.17、安装完成
“Launch Git Bash”:启动 Git Bash 终端。
“View Release Notes”:查看版本说明。
3、功能简介
3.1、Git Bash(同2.17 Launch Git Bash)
Git Bash 是一个命令行工具,提供了类似于 Linux Shell 的环境,使用户能够在 Windows 系统上使用类Unix命令。
通过 Git Bash,用户可以使用 Git 的命令行功能,执行版本控制任务,例如克隆仓库、提交更改等。
3.2、Git CMD
Git CMD 是一个在 Windows 命令提示符中运行的命令行工具。与 Git Bash 不同,Git CMD 更接近于 Windows 命令行环境。
类似于 Git Bash,Git CMD 也允许用户在命令行中执行 Git 命令,进行版本控制操作。
3.3、Git FAQs(Frequently Asked Questions)
Git FAQs(Frequently Asked Questions)包含常见问题和解答,是一份常见问题的集合,为用户提供了解决常见问题的参考资料。
用户可以在 Git FAQs 中查找关于 Git 的常见问题的答案,以解决遇到的问题。
3.4、Git GUI
Git GUI 是 Git 的图形用户界面工具,提供了一个可视化的界面,使用户能够执行版本控制操作而无需使用命令行。
通过 Git GUI,用户可以更直观地查看仓库状态、提交更改、查看历史记录等,适用于那些不太习惯使用命令行的用户。
3.5、Git Release Note(同2.17View Release Notes)
Git Release Note 包含了每个 Git 版本的发布说明,记录了每个版本的新功能、改进和修复的问题等信息。
用户可以通过查阅 Git Release Note 了解每个 Git 版本的更新内容,以了解新功能、改进和潜在的问题。
4、基本的名词和概念
- 仓库(Repository):
一个 Git 仓库是项目的存储空间,包含项目文件和版本历史记录。可以是本地仓库(Local Repository)或远程仓库(Remote Repository)。 - 工作区(Working Directory):
工作区是你在电脑上能看到的项目目录,包含项目文件和子文件夹。 - 暂存区(Staging Area):
暂存区是一个中间区域,用于存放将要提交的修改。在提交前,你需要将修改先添加到暂存区。 - 提交(Commit):
提交是对工作区和暂存区的修改进行保存的操作。每次提交都有一个唯一的标识符(哈希值),并包含了修改的描述信息。 - 分支(Branch):
分支是项目的一个工作线,可以创建新的分支用于开发新功能或修复 bug,然后将其合并回主分支。 - 主分支(Main/Branch):
主分支是项目的默认分支,通常被称为 master 或 main,是项目的主要开发线。 - 远程仓库(Remote Repository):
远程仓库是托管在网络上的项目副本,可以在 GitHub、GitLab、Bitbucket 等平台上进行多人协作。 - 克隆(Clone):
克隆是从远程仓库复制整个项目到本地,创建一个本地仓库的副本。 - 拉取(Pull):
拉取是从远程仓库获取最新修改,将远程仓库的变化更新到本地。 - 推送(Push):
推送是将本地的修改上传到远程仓库,使得远程仓库也包含最新的工作。 - 合并(Merge):
合并是将不同分支的修改合并到一起,通常用于将新功能或修复的代码合并回主分支。 - 冲突(Conflict):
冲突发生在合并分支时,表示有两处或多处修改互相冲突,需要手动解决。
三、git基本使用
1、配置用户信息:
安装完,后第一件事就是设置自己的用户名和邮箱地址,这样才可以知道哪些人提交了什么代码。
进入【git Bash】,设置全局用户名和邮箱:
# 设置全局用户名和邮箱地址(只设置当前项目的,去掉“--global”)
git config [--global] user.name "用户名"
git config [--global] user.email "邮箱地址"eg:
git config [--global] user.name "zqx"
git config [--global] user.email "zqx1473@163.com"# 查看全局用户名和邮箱地址
git config [--global] user.name
git config [--global] user.email
通过 以上命令配置的用户名和邮箱地址,会被写入到 C:/Users/用户名文件夹/.gitconfig 文件中。这个文件是 Git 的全局配置文件,配置一次即可永久生效。
如果只想本次项目中使用这个用户名和邮箱地址,把【--global】去掉即可
# 设置本项目用户名和邮箱地址
git config user.name "用户名"
git config user.email "邮箱地址"# 查看本项目用户名和邮箱地址
git config user.name
git config user.email
保存在当前项目的 .git/config 文件里。
2、提交到本地仓库基本流程
1.创建仓库:
新建仓库:git init
git init [项目路径]
克隆仓库:git clone
git clone <远程仓库地址> [本地目录]# eg:
git clone https://github.com/zqx1473/gitTest.git
2.---编码
3.添加新文件到暂存区:git add
git add [filename]
4.提交版本到本地仓库:git commit
git commit [-m "代码提交信息"]
2.1、新建仓库
----新建项目文件夹(原有项目可跳过)
进入项目文件夹
右键,选择【Open Git Bash here】,
初始化仓库:git init
# 当前目录作为仓库
git init
# or
git init .
# or
git init ./# 指定目录作为仓库
git init [projectpath]
命令行执行命令后【.git】文件夹出现
生成的【.git】目录如下
2.2、编码
好了该你自由发挥了,这里就简单用txt举个例。
2.3、添加新文件到暂存区:git add
# 添加单独文件
git add <filename># 添加多个文件
git add <filename1> [filename2]
# or
git add <filename1>
git add <filename2># 添加当前目录全部文件(不包括忽略文件)----建议使用
# or
git add . 等价于下面的命令
# or
git add ./# 添加当前目录全部文件(忽略文件给出提示,【.】开头的文件不添加)
git add *
这个命令只是将文件信息添加到暂存区,
执行完这一步后仓库是没有变化的
2.4、提交版本到本地仓库:git commit -m "代码提交信息"
git commit [-m "代码提交信息"]# 不使用【-m】,会出现编辑器来让你写自己的注释信息
git commit# 当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改,我们可以使用【-a】标识。
git commit [-a] [-m "代码提交信息"]
# !!!千万注意,-a不会造成新文件被提交,只能修改。
执行这行命令后,才会正式提交到本地仓库
可以看到【.git】明显变化
同时提交文件,图标左下角多了个【√】
一般【git add】多次使用,最后【git commit -m " "】进行一次提交
使用【git commit】提交,进入编辑器效果如下:(编辑器用法,可了解vi编辑器)
3、查看相关信息
3.1、查看文件状态
git中暂存区文件有四种状态
没有被托管的文件
1、未跟踪(untracked) test.txt -- 新创建的文件
已被托管(曾经add、commit过)
2、已暂存(changes to be committed) new file: test.txt -- add后
3、已提交(nothing to commit) <nothing> -- commit后
4、已修改(modified) modified: test.txt -- commit后又进行了文件修改
3.5、修改后已暂存(和3为同样状态) modified: test.txt --修改后又commot
4.5、已删除(deleted) deleted: test.txt --已删除
# 查看状态
git status# 查看简略状态
git status -s
这里在新建一个文件
3.2、查看日志信息
我们修改文件重新提交
# 查看详细日志信息
git log# 查看简略日志信息
git log --oneline# 版本号显示完全的简略日志信息(每个提交的信息只显示一行)
git log --pretty=oneline
# 系统设置
git config format.pretty oneline# 查看你所有的提交的记录
git reflog
最上面显示的最新的版本
3.3、比较不同状态下的文件差异
git diff [options] [source1] [source2] [filename]# 尚未缓存的改动
git diff# 查看已缓存的改动
git diff --cached# 查看已缓存的与未缓存的所有改动
git diff HEAD# 显示摘要而非整个 diff
git diff --stat
如:查看版本库里最新版本与工作区的区别
git diff HEAD -- test.txt
# -- 表示当前工作目录,后面接的是路径,以避免歧义
4、版本控制
# 修改完之后查看工作区和版本库里面最新版本的区别
git diff HEAD -- test.txt
4.1、从工作区恢复
改动了代码,想放弃修改(没有add)
git checkout -- test.txt
4.2、从暂存区恢复
改动了代码,也add了,想放弃(没有commit)
git reset HEAD test.txtgit checkout -- test.txt
【git reset HEAD test.txt】只是回到了【add】之前,代码文件不会发生改变,也就是回到了上一个情况(5.2)
然后在进行【git checkout -- test.txt】
4.3、版本回滚(版本回退):已经提交到版本库,想撤回本次提交
git reset --hard 版本号
使用命令之后就会发现,代码水灵灵的变回了原来的模样
5、分支与合并
5.1、创建和切换分支
# 创建分支
git branch <分支名># 切换分支
git checkout <分支名># 创建并切换分支
git checkout -b <分支名>
5.2、查看分支
# 查看所有分支
git branch# 查看远程分支
git branch -r# 查看所有本地和远程分支
git branch -a
5.3、合并分支
git merge <被合并的分支名>
5.4、删除分支
git branch -d <分支名>
5.6、查看分支差异
# 查看版本库里面最新版本和工作区的区别
git diff <source_branch> <target_branch># 比较两个分支之间特定目录的差异
git diff HEAD -- test.txt
6、对远程仓库的使用
克隆仓库:git clone
git clone <远程仓库地址># eg:
git clone https://github.com/zqx1473/gitTest.git
推送
git push [-u] origin main
# -u,记录远端分支默认值,下次还要向这个分支push时,可以将命令简化为【git push】
拉取
git pull origin <分支名>
6.1、创建远程仓库
常见远程仓库:
github:GitHub: Let’s build from here · GitHub
码云(gitee):Gitee - 基于 Git 的代码托管和研发协作平台
gitlab:The most-comprehensive AI-powered DevSecOps platform | GitLab
Bitbucket:Bitbucket | Git solution for teams using Jira
codeup(阿里云):阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
coding(腾讯云):代码托管 | 极速 Git 代码仓库服务-CODING-腾讯云
gitcode:GitCode - 全球开发者的开源社区,开源代码托管平台
以github为例
可以填完仓库名字,直接点创建
看github已经贴心的把建库和推送方法都告诉我们了
# 从命令行上创建一个新的仓库
echo "# git_project" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/zqx1473/git_project.git
git push -u origin main# 从命令行推送一个现有的仓库
git remote add origin https://github.com/zqx1473/git_project.git
git branch -M main
git push -u origin main
6.2、克隆(检出仓库):git clone
克隆是将整个远程仓库克隆到本地(将整个远程仓库文件夹copy到你的本地,一般只会在项目开始
的时候执行一次
)
git clone <仓库地址> [你想创建的本地项目名]# eg:远程
git clone https://github.com/zqx1473/git_project.git# eg 也可以克隆本地的
git clone git_project
6.3、推送:git push
设定远程仓库地址
# 关联远程仓库
git remote add origin <远程仓库地址># eg
git remote add origin https://github.com/zqx1473/git_project.git# 查看远程仓库地址
git remote -v
# or
git config --get remote.origin.url
将【master】】分重命名为【main】
(为了避免使用具有带有潜在不适宜历史意义的术语,”master”一词在过去用于指代奴隶制度中的主人,因此有一些人认为这个术语带有种族主义和剥削的历史背景。)
git branch -M main
推送到远程仓库
git push [-u] origin main
# -u,记录远端分支默认值,下次还要向这个分支push时,可以将命令简化为【git push】git push
6.4、拉取:git pull
用于多人开发。比如别人写的代码文件提交到远程仓库,通过这个命令就可以将远程仓库代码拉取到本地.
这个命令不会拉取所有代码,只是拉取远程上面新增的代码(把别人写的代码合并到你的本地).
git pull [远程仓库命名:默认“origin”] [分支名]# 远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin master
我们在远程仓库中创建一个【README】文件,模拟其他人对项目进行修改,
然后进行pull
可能会报错
fatal: unable to access 'https://github.com/zqx1473/git_project.git/': Failed to connect to github.com port 443 after 21128 ms: Couldn't connect to server
解决:
step1:cmd输入以下命令:清除缓存后再重新进行 git 操作即可
ipconfig/flushdns
step2:取消代理
// 取消http的代理
git config --global --unset http.proxy// 取消https的代理
git config --global --unset https.proxy
然后执行【git pull】即可
发现【README】出现
四、git详细理解
1、基本理解
1.1、 git的三个区
-
工作区: 处理工作的区域 ----------------------------------- 你的项目文件夹(项目目录)
-
暂存区(stage/index,索引): 临时存放的区域 ---- 在.git文件夹内的index中 (二进制记录)
-
版本库(本地git仓库): 最终的存放区域 ------------- 指的整个.git文件夹 (也认为是版本库)
HEAD表示当前分支,
-
当对工作区修改的文件执行 【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 reset HEAD 】 +【git checkout -- <file>】
1.2、基本用法图解
绿色的5位字符表示提交的ID,分别指向父节点。分支用橘色显示,分别指向特定的提交。当前分支由附在其上的HEAD标识。 这张图片里显示最后5次提交,ed489是最新提交。 main分支指向此次提交,另一个stable分支指向祖父提交节点。
1.2.1、diff
查看两次提交之间的变动
1.2.2、commit
提交时,git用暂存区域的文件创建一个新的提交,并把此时的节点设为父节点。然后把当前分支指向新的提交节点。下图中,当前分支是main。 在运行命令之前,main指向ed489,提交后,main指向新的节点f0cec并以ed489作为父节点。
即便当前分支是某次提交的祖父节点,git会同样操作。下图中,在main分支的祖父节点stable分支进行一次提交,生成了1800b。 这样,stable分支就不再是main分支的祖父节点。此时,合并是必须的。
如果想更改一次提交,使用 git commit --amend
。git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消。
1.2.3、Checkout
checkout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支。
git会从指定的提交中拷贝文件到暂存区域和工作目录。比如,git checkout HEAD~ foo.c
会将提交节点HEAD~中的foo.c
复制到工作目录并且加到暂存区域中。(如果命令中没有指定提交节点,则会从暂存区域中拷贝内容。)注意当前分支不会发生变化。
当不指定文件名,而是给出一个(本地)分支时,那么HEAD标识会移动到那个分支(也就是说,我们“切换”到那个分支了),然后暂存区域和工作目录中的内容会和HEAD对应的提交节点一致。新提交节点(下图中的a47c3)中的所有文件都会被复制(到暂存区域和工作目录中);只存在于老的提交节点(ed489)中的文件会被删除;不属于上述两者的文件会被忽略,不受影响v
如果既没有指定文件名,也没有指定分支名,而是一个标签、远程分支、SHA-1值或者是像main~3类似的东西,就得到一个匿名分支,称作detached HEAD(被分离的HEAD标识)。这样可以很方便地在历史版本之间互相切换。比如说你想要编译1.6.6.1版本的git,你可以运行git checkout v1.6.6.1
(这是一个标签,而非分支名),编译,安装,然后切换回另一个分支,比如说git checkout main
。然而,当提交操作涉及到“分离的HEAD”时,其行为会略有不同,
1.2.4、HEAD标识处于分离状态时的提交操作
当HEAD处于分离状态(不依附于任一分支)时,提交操作可以正常进行,但是不会更新任何已命名的分支。
一旦此后你切换到别的分支,比如说main,那么这个提交节点(可能)再也不会被引用到,然后就会被丢弃掉了。注意这个命令之后就不会有东西引用2eecb。
但是,如果你想保存这个状态,可以用命令git checkout -b name
来创建一个新的分支。
1.2.5、reset
reset命令把当前分支指向另一个位置,并且有选择的变动工作目录和索引。也用来在从历史仓库中复制文件到索引,而不动工作目录。
如果不给选项,那么当前分支指向到那个提交。如果用--hard
选项,那么工作目录也更新,如果用--soft
选项,那么都不变。
如果没有给出提交点的版本号,那么默认用HEAD。这样,分支指向不变,但是索引会回滚到最后一次提交,如果用--hard
选项,工作目录也同样。
如果给了文件名(或者 -p
选项), 那么工作效果和带文件名的checkout差不多,除了索引被更新。
1.2.6、merge
merge 命令把不同分支合并起来。合并前,索引必须和当前提交相同。如果另一个分支是当前提交的祖父节点,那么合并命令将什么也不做。 另一种情况是如果当前提交是另一个分支的祖父节点,就导致fast-forward合并。指向只是简单的移动,并生成一个新的提交。
否则就是一次真正的合并。默认把当前提交(ed489 如下所示)和另一个提交(33104)以及他们的共同祖父节点(b325c)进行一次三方合并。结果是先保存当前目录和索引,然后和父节点33104一起做一次新提交。
2、分支管理
一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。(Git 分支实际上是指向更改快照的指针。)
2.1、创建和切换分支
# 创建分支
git branch <分支名># 切换分支
git checkout <分支名># 创建并切换分支
git checkout -b <分支名>
克隆并创建分支(将克隆的添加到另一个分支)
git clone <远程仓库地址> -b <分支名>
2.2、标签
2.2.1、创建标签
git tag [-a] <标签名> [-m "标签描述"] [提交ID]# 填上【-a】为其创建一个带注解的标签,默认打开编辑器,【-m】后可以在命令行输入
#提交ID,默认当前分支即HEAD
2.2.2、查看标签和标签信息
# 查看标签
git tag# 查看标签信息
git show <标签名># 查看远程标签
git ls-remote --tag <远程仓库名:默认:origin>
2.2.3、推送标签到远程仓库:
git push origin <标签名>
# 推送所有标签
git push origin --tags
2.2.4、删除标签
# 删除本地标签
git tag -d <标签名># 删除远程标签
git push origin --delete <标签名>
3、远程
3.1、查看远程仓库git remote
# 列出所有远程仓库
git remote# 显示所有远程地址
git remote -v# 显示某个远程仓库的信息
git remote show <远程仓库名:默认:origin>
3.2、关联远程
# 关联远程仓库
git remote add <远程仓库名:一般用origin> <远程仓库地址># eg
git remote add origin https://github.com/zqx1473/git_project.git# 删除远程仓库关联
git remote rm <远程仓库名># 关联关系重命名
git remote rename <原名字> <新名字>
3.3、远程仓库的推送删除和重命名:git push
git push 命令用于从将本地的分支版本上传到远程并合并。
# 推送
git push <远程主机名> <本地分支名>:<远程分支名># 本地分支名与远程分支名相同,则可以省略冒号
git push <远程主机名> <本地分支名># 强制推送
# 本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数
git push --force <远程主机名> <本地分支名>:<远程分支名># or
git push -f <远程主机名> <本地分支名>:<远程分支名>
# 删除远程分支
git push <远程主机名> --delete <远程分支名># eg
git push origin --delete master# 重命名远程分支
git push origin --delete <远程分支名>
git push origin <本地分支名>:<远程分支名>
4、拓展功能
4.1、git忽略文件
有的时候, 我们某些文件/文件夹, 不想让git进行跟踪管理
需要在【.git】文件夹旁边来个叫【.gitignore】(固定的名字)的忽略文件夹并写入忽略规则。
(.gitignore文件本身应该提交给git管理)
.gitignore 只能忽略那些没有被追踪的文件,所以先纳入版本管理后写入.gitignore是无效
当然,可以先清除本地缓存之后再加入
git rm -r --cached
git add .
git status
4.1.1、编写规则
# “#”表示注释# 忽略指定文件
ignore.txt # 忽略文件夹
foldername# 忽略文件夹下某个文件
foldername/filename# 忽略某类文件
*.txt# 排除(如指定了*.txt忽略,不想让其中的【ignore】忽略,可使用)
!ignore.txt
4.1.2、检查信息
检查是否忽略
git check-ignore <文件名>
查看具体信息
git check-ignore -v [文件名]
4.2、配置别名
偷懒福音
$ git config --global alias.st status$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
咯,还是在这个文件里面
————————————————
参考:
Git - Reference
Git 教程 | 菜鸟教程
图解Git
Git的基本使用方法教程(入门级)_git用法-CSDN博客
【git篇】git的使用_git使用-CSDN博客
Git安装教程(超详细)-CSDN博客
相关文章:
git使用详解
一、git介绍 1、git简介 Git 是一个开源的分布式版本控制系统(最先进的,没有之一),用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用…...
ros2学习日记_241124_ros相关链接
前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…...
【SQL】【数据库】语句翻译例题
SQL自然语言到SQL翻译知识点 以下是将自然语言转化为SQL语句的所有相关知识点,分门别类详细列出,并结合技巧说明。 1. 数据库操作 创建数据库 自然语言:创建一个名为“TestDB”的数据库。 CREATE DATABASE TestDB;技巧:识别**“创…...
图书管理系统(源码+数据库+报告)
基于SpringBoot的图书管理系统,系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。 前台: - 首页:展示系统推荐、热门图书等信息。 - 论坛:提供用户交流讨论的平台。 - 公告信息&a…...
python中lxml 库之 etree 使用详解
目录 一、 etree 介绍二、xpath 解析 html/xml1、第一步就是使用 etree 连接 html/xml 代码/文件。2、 xpath 表达式定位① xpath结合属性定位② xpath文本定位及获取③ xpath层级定位④ xpath索引定位⑤ xpath模糊匹配 一、 etree 介绍 lxml 库是 Python 中一个强大的 XML 处…...
vue3(十九)-基础入门之vue-nuxt反向代理
一、反向代理 1、下载 nuxtjs/proxy 使用 npm npm install nuxtjs/proxy 或使用 yarn yarn add nuxtjs/proxy 2、配置 nuxt.config.js 文件 export default {modules: [nuxtjs/axios,nuxtjs/proxy],axios: {baseURL: /,proxy: true},proxy: {/api/: {target: https://i.maoya…...
Unity3D 截图
使用 Unity3D 自带的截图接口,制作截图工具。 截图 有时候我们想对 Unity 的窗口进行截图,如果直接使用一些截图工具,很难截取到一张完整分辨率的图片(例如,我们想要截取一张 1920 * 1080 的图片)。 其实…...
【机器学习】近似分布的熵到底是p(x)lnq(x)还是q(x)lnq(x)?
【1】通信的定义 信息量(Information Content)是信息论中的一个核心概念,用于定量描述一个事件发生时所提供的“信息”的多少。它通常用随机变量 𝑥的概率分布来定义。事件 𝑥发生所携带的信息量由公式给出࿱…...
C语言:深入理解指针
一.内存和地址 我们知道计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是 8GB/16GB/32GB 等,那这些内存空间…...
Vue实训---4-使用Pinia实现menu菜单展示/隐藏
0.menu菜单展示/隐藏实现方法 Menu 菜单 | Element Plus中,当:collapse"isCollapse"其中isCollapse的值为true时菜单栏隐藏,当isCollapse的值为false时菜单栏显示。接下来使用pinia实现CommonAside.vue和CommonHeader.vue组件之间数据的共享&…...
Fakelocation Server服务器/专业版 Centos7
前言:需要Centos7系统 Fakelocation开源文件系统需求 Centos7 | Fakelocation | 任务一 更新Centos7 (安装下载不再赘述) sudo yum makecache fastsudo yum update -ysudo yum install -y kernelsudo reboot//如果遇到错误提示为 Another app is curre…...
网络安全,文明上网(4)掌握网络安全技术
前言 在数字化时代,个人信息和企业数据的安全变得尤为重要。为了有效保护这些宝贵资产,掌握一系列网络安全技术是关键。 核心技术及实施方式 1. 网络监控与过滤系统: 这些系统构成了网络防御体系的基石,它们负责监控网络通信&…...
Ettus USRP X410
总线连接器: 以太网 RF频率范围: 1 MHz 至 7.2 GHz GPSDO: 是 输出通道数量: 4 RF收发仪瞬时带宽: 400 MHz 输入通道数量: 4 FPGA: Zynq US RFSoC (ZU28DR) 1 MHz to 7.2 GHz,400 MHz带宽,GPS驯服OCXO,USRP软件无线电设备 Ettus USRP X410集…...
在SQLyog中导入和导出数据库
导入 假如我要导入一个xxx.sql,我就先创建一个叫做xxx的数据库。 然后右键点击导入、执行SQL脚本 选择要导入的数据库文件的位置,点击执行即可 注意: 导入之后记得刷新一下导出 选择你要导出的数据库 右键选择:备份/导出、…...
一文了解Spring提供的几种扩展能力
基于 spring bean 的扩展 1. BeanPostProcessor spring 提供的针对 bean 的初始化过程时提供的扩展能力,从方法名也很容易看出,提供的两个方法分别是为 bean 对象提供了初始化之前以及初始化之后的扩展能力。 package com.wyl.conf;import org.spring…...
VXLAN说明
1. 什么是 VXLAN ? VXLAN(Virtual Extensible LAN,虚拟扩展局域网)是一种网络虚拟化技术,旨在通过在现有的物理网络上实现虚拟网络扩展,从而克服传统 VLAN 的一些限制。 VXLAN 主要用于数据中心、云计算环…...
MyBatis基本使用
一、向SQL语句传参: 1.MyBatis日志输出配置: mybatis配置文件设计标签和顶层结构如下: 可以在mybatis的配置文件使用settings标签设置,输出运过程SQL日志,通过查看日志,可以判定#{}和${}的输出效果 settings设置项: logImpl指定 MyBatis 所用日志的具…...
Linux笔记---进程:进程切换与O(1)调度算法
1. 补充概念 1.1 并行与并发 竞争性:系统进程数目众多,而CPU资源只有少量,甚至只有1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。独立性:多进程运…...
Flink学习连载第二篇-使用flink编写WordCount(多种情况演示)
使用Flink编写代码,步骤非常固定,大概分为以下几步,只要牢牢抓住步骤,基本轻松拿下: 1. env-准备环境 2. source-加载数据 3. transformation-数据处理转换 4. sink-数据输出 5. execute-执行 DataStream API开发 //n…...
[AutoSar]BSW_Diagnostic_007 BootLoader 跳转及APP OR boot response 实现
目录 关键词平台说明背景一、Process Jump to Bootloader二、相关函数和配置2.1 Dcm_GetProgConditions()2.2 Dcm_SetProgConditions() 三、如何实现在APP 还是BOOT 中对10 02服务响应3.1 配置3.2 code 四、报文五、小结 关键词 嵌入式、C语言、autosar、OS、BSW、UDS、diagno…...
用 Python 写了一个天天酷跑(附源码)
Hello,大家好,给大家说一下,我要开始装逼了 这期写个天天酷跑玩一下叭! 制作一个完整的“天天酷跑”游戏涉及很多方面,包括图形渲染、物理引擎、用户输入处理、游戏逻辑等。由于Python是一种高级编程语言,…...
WebGL进阶(九)光线
理论基础: 点光源 符合向量定义,末减初。 平行光 环境光 效果: 点光源 平行光 环境光 源码: 点光源 // 顶点着色器程序let vertexstring attribute vec4 a_position; // 顶点位置属性uniform mat4 u_formMatrix; // 用于变换…...
Lucene(2):Springboot整合全文检索引擎TermInSetQuery应用实例附源码
前言 本章代码已分享至Gitee: https://gitee.com/lengcz/springbootlucene01 接上文。Lucene(1):Springboot整合全文检索引擎Lucene常规入门附源码 如何在指定范围内查询。从lucene 7 开始,filter 被弃用,导致无法进行调节过滤。 TermInSetQuery 指定…...
HarmonyOS(57) UI性能优化
性能优化是APP开发绕不过的话题,那么在HarmonyOS开发过程中怎么进行性能优化呢?今天就来总结下相关知识点。 UI性能优化 1、避免在组件的生命周期内执行高耗时操作2、合理使用ResourceManager3、优先使用Builder方法代替自定义组件4、参考资料 1、避免在…...
机器学习周志华学习笔记-第5章<神经网络>
机器学习周志华学习笔记-第5章<神经网络> 卷王,请看目录 5模型的评估与选择5.1 神经元模型5.2 感知机与多层网络5.3 BP(误逆差)神经网络算法 5.4常见的神经网络5.4.1 RBF网络(Radial Basis Function Network,径向基函数网络࿰…...
SQL进阶技巧:如何进行数字范围统计?| 货场剩余货位的统计查询方法
目录 0 场景描述 1 剩余空位区间和剩余空位编号统计分析 2 查找已用货位区间 3 小结 0 场景描述 这是在做一个大型货场租赁系统时遇到的问题,在计算货场剩余存储空间时,不仅仅需要知道哪些货位是空闲的,还要能够判断出哪些货位之间是连续的。因为在新货物入场时,可…...
Xilinx IP核(3)XADC IP核
文章目录 1. XADC介绍2.输入要求3.输出4.XADC IP核使用5.传送门 1. XADC介绍 xadc在 所有的7系列器件上都有支持,通过将高质量模拟模块与可编程逻辑的灵活性相结合,可以为各种应用打造定制的模拟接口,XADC 包括双 12 位、每秒 1 兆样本 (MSP…...
现代大数据架构设计与实践:从数据存储到处理的全面解读
1. 引言 随着信息技术的不断发展,数据已经成为企业和组织最宝贵的资产之一。大数据的应用已经渗透到各个行业,无论是电商、金融,还是医疗、物流,如何有效管理、存储和处理海量的数据已经成为企业成功的关键之一。本文将深入探讨现代大数据架构的设计理念与技术实践,从数据…...
详细教程-Linux上安装单机版的Hadoop
1、上传Hadoop安装包至linux并解压 tar -zxvf hadoop-2.6.0-cdh5.15.2.tar.gz 安装包: 链接:https://pan.baidu.com/s/1u59OLTJctKmm9YVWr_F-Cg 提取码:0pfj 2、配置免密码登录 生成秘钥: ssh-keygen -t rsa -P 将秘钥写入认…...
前端项目支持tailwindcss写样式
安装 npm install -D tailwindcss npx tailwindcss init配置 tailwind.config.js //根据个人需求填写,比如vue简单配置 /** type {import(tailwindcss).Config} */ module.exports {darkMode: "class",corePlugins: {preflight: false},content: [&quo…...
工程师 - 智能家居方案介绍
1. 智能家居硬件方案概述 智能家居硬件方案是实现家庭自动化的重要组件,通过集成各种设备来提升生活的便利性、安全性和效率。这些方案通常结合了物联网技术,为用户提供智能化、自动化的生活体验。硬件方案的选择直接影响到智能家居系统的性能、兼容性、…...
H.264/H.265播放器EasyPlayer.js网页全终端安防视频流媒体播放器关于iOS不能系统全屏
在数字化时代,流媒体播放器已成为信息传播和娱乐消遣的主流载体。随着技术的进步,流媒体播放器的核心技术和发展趋势不断演变,影响着整个行业的发展方向。 EasyPlayer播放器属于一款高效、精炼、稳定且免费的流媒体播放器,可支持…...
2.langchain中的prompt模板 (FewShotPromptTemplate)
本教程将介绍如何使用 LangChain 库中的 PromptTemplate 和 FewShotPromptTemplate 来构建和运行提示(prompt),并通过示例数据展示其应用。 安装依赖 首先,确保你已经安装了 langchain 和相关依赖: pip install lan…...
TCP/IP
1、浏览器输入网址后发生了什么 1)应用层:浏览器解析ULR,生成发送给web服务器的请求信息,HTTP请求报文生成,委托给操作系统将消息发送给web服务器,发送之前需要查询服务器域名对应的IP地址(需要…...
详细探索xinput1_3.dll:功能、问题与xinput1_3.dll丢失的解决方案
本文旨在深入探讨xinput1_3.dll这一动态链接库文件。首先介绍其在计算机系统中的功能和作用,特别是在游戏和输入设备交互方面的重要性。然后分析在使用过程中可能出现的诸如文件丢失、版本不兼容等问题,并提出相应的解决方案,包括重新安装相关…...
Spring:AOP切入点表达式
对于AOP中切入点表达式,我们总共会学习三个内容,分别是语法格式、通配符和书写技巧。 语法格式 首先我们先要明确两个概念: 切入点:要进行增强的方法切入点表达式:要进行增强的方法的描述方式 对于切入点的描述,我们其实是有两中方式的&a…...
STM32的中断(什么是外部中断和其他中断以及中断号是什么)
一、什么是EXTI 和NVIC EXTI(External Interrupt/Event Controller)EXTI 是外部中断/事件控制器,它负责处理外部信号变化,并将信号传递给中断控制器(如 NVIC)。主要负责以下功能: 外部事件检测…...
MySQL底层概述—1.InnoDB内存结构
大纲 1.InnoDB引擎架构 2.Buffer Pool 3.Page管理机制之Page页分类 4.Page管理机制之Page页管理 5.Change Buffer 6.Log Buffer 1.InnoDB引擎架构 (1)InnoDB引擎架构图 (2)InnoDB内存结构 (1)InnoDB引擎架构图 下面是InnoDB引擎架构图,主要分为内存结构和磁…...
Linux 下进程基本概念与状态
文章目录 一、进程的定义二、 描述进程-PCBtask_ struct内容分类 三、 进程状态 一、进程的定义 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定…...
Go语言链接Redis数据库
1.使用go get命令安装go-redis/v8库: 我这里使用的vscode工具安装: go get github.com/go-redis/redis/v82.创建Redis客户端实例 使用以下Go代码连接到Redis服务器并执行命令: package mainimport ("context""fmt"&q…...
SQL 分页查询详解
在处理大型数据集时,分页查询是一种常见的技术,用于将数据分成多个小块,以便逐步加载和显示。这不仅可以提高应用的性能,还可以提升用户体验,避免一次性加载过多数据导致页面加载缓慢或资源消耗过大。本文将详细介绍 S…...
ACP科普:风险价值矩阵
风险价值矩阵(Risk-Value Matrix)是一种常用的工具,用于在项目管理中帮助团队识别、评估和优先处理风险。它通过将风险和价值两个因素进行结合,帮助决策者明确哪些风险需要优先关注和处理,从而有效地管理项目的不确定性…...
计算机网络socket编程(2)_UDP网络编程实现网络字典
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(2)_UDP网络编程实现网络字典 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨…...
(Keil)MDK-ARM各种优化选项详细说明、实际应用及拓展内容
参考 MDK-ARM各种优化选项详细说明、实际应用及拓展内容 本文围绕MDK-ARM优化选项,以及相关拓展知识(微库、实际应用、调试)进行讲述,希望对你今后开发项目有所帮助。 1 总述 我们所指的优化,主要两方面: 1.代码大小(Size) 2.代码性能(运行时间) 在MDK-ARM中,优…...
mac2024 安装node和vue
以下是使用 Node.js 官方 .pkg 安装包 安装 Node.js 和 Vue CLI 的完整流程,包括如何重新设置 npm 的环境,以避免权限问题。 安装 Node.js 步骤 1.1:下载 Node.js 安装包 1. 打开 Node.js 官网。 2. 下载 LTS(长期支持…...
在win10环境部署opengauss数据库(包含各种可能遇到的问题解决)
适用于windows环境下通过docker desktop实现opengauss部署,请审题。 文章目录 前言一、部署适合deskdocker的环境二、安装opengauss数据库1.配置docker镜像源2.拉取镜像源 总结 前言 注意事项:后面docker拉取镜像源最好电脑有科学上网工具如果没有科学上…...
Docker1:认识docker、在Linux中安装docker
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
鸿蒙开发-音视频
Media Kit 特点 一般场合的音视频处理,可以直接使用系统集成的Video组件,不过外观和功能自定义程度低Media kit:轻量媒体引擎,系统资源占用低支持音视频播放/录制,pipeline灵活拼装,插件化扩展source/demu…...
Vue3学习笔记
目录 Vue3Vue3优势Vue3组合式API & Vue2选项式APIcreate-vue使用create-vue创建项目 项目目录和关键文件组合式API-setup选项组合式API-reactive和ref函数reactive()ref() 组合式API-computed组合式API-watch基础使用immdiate和deep配置精确侦听对象的某个属性 组合式API-生…...
node + Redis + svg-captcha 实现验证码
目录 前提说明 Redis链接与封装 svg-captcha使用步骤 封装中间件验证 前端接收 扩展【svg API】 svgCaptcha.create(options) svgCaptcha.createMathExpr(options) svgCaptcha.loadFont(url) svgCaptcha.options svgCaptcha.randomText([size|options]) svgCaptcha(…...