Git 笔记
- 设置Git的user name和email
$ git config --global user.name "bread"
$ git config --global user.email "1234567890@qq.com"
- 因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
- git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
- 创建版本库
$ cd myproject
$ git init
- clone 仓库到本地
$ git clone https://github.com/bread/myproject.git
- 修改代码并上传代码到远端
$ cd myproject
$ vim README.md
$ git add README.md // 添加新文件或已经被修改过的文件到暂存区
$ git commit -m "项目启动" // 把文件提交到仓库
$ git status // 查看是否还有文件未提交# 位于分支 main# 您的分支领先 'origin/main' 共 1 个提交。# (使用 "git push" 来发布您的本地提交)#无文件要提交,干净的工作区
$ git push -u origin main // 将本地仓库分支main推送到远端仓库# 位于分支 main无文件要提交,干净的工作区
- git add 之后发现 add 错了一个文件 tags
$ git reset HEAD tags
- 本地update远端的最新代码
$ git pull origin main
- 文件/文件夹重命名
$ git mv oldname newname
- 比较更改内容
// 如果在 $ git status 发现了未被提交的更改,则可以通过 $ git diff a.txt 来查看到底修改了什么。$ git diff a.txt // 比较工作区与暂存区(已add但未commit文件)的差异
$ git diff HEAD a.txt // 比较工作区与本地仓库的差异
$ git diff --cached a.txt // 比较暂存区与本地仓库的差异
- 查看历史
$ git log // git log命令显示从最近到最远的显示日志
$ git log --pretty=oneline // 精简显示
- 版本回退
$ git reset --hard HEAD^ // 把当前的版本回退到上一个版本
$ git reset --hard HEAD^^ // 把当前的版本回退到上上一个版本
$ git reset --hard HEAD~100 // 把当前的版本回退到前100个版本// 回退版本到版本A后,可以通过命令cat readme.txt查看回退版本后的文件的内容
$ cat readme.txt
$ git log // 将看不到版本A之后的提交记录// 如果恢复版本A之后的某次提交,则
$ git reflog // 查找对应的版本号
$ git reset --hard 6fcfc89 // 回退到版本6fcfc89
- 工作区和暂存区的区别
- 工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。
- 版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
- 通过 git status 可以看到我们当前在哪个分支。
- 使用Git提交文件到版本库有两步:
- 第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
- 第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
- 撤销修改
$ git checkout -- readme.txt
- 命令 git checkout – readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销。
- 但这里有2种情况,如下:
- readme.txt自动修改后,还没有放到暂存区,使用撤销修改就回到和版本库一模一样的状态。
- 另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
- 注意:命令git checkout – readme.txt 中的 – 很重要,如果没有 – 的话,那么命令变成创建分支了。
- 删除文件
- 一般情况下,可以直接在文件目录中把文件删了,或者使用rm命令:rm b.txt,如果想彻底从版本库中删掉此文件的话,可以再执行commit命令提交。
- 只要没有commit之前,如果想在版本库中恢复此文件可以使用如下命令:
git checkout -- b.txt
- 创建与分并分支
$ git checkout -b dev // 创建并切换分支
$ git branch // 查看当前的分支$ git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令:
git branch dev
git checkout dev
- HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
- git branch查看分支,会列出所有的分支,当前分支前面会添加一个星号。
- 在分支 dev 上的修改不会自动同步到 master 分支,因此需要把dev分支上的内容合并到分支master上,在master分支上使用如下命令 :
$ git merge dev
- git merge命令用于合并指定分支到当前分支上。
- merge命令如果出现Fast-forward信息,这是Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。
- 合并完成后,可以接着删除dev分支了:
$ git branch -d dev
- 总结即:
查看分支:git branch创建分支:git branch name切换分支:git checkout name创建+切换分支:git checkout –b name合并某分支到当前分支:git merge name删除分支:git branch –d name
- 解决冲突
- 如果在 dev 分支和 master 分支上的相同位置改了内容,则 master 分支在合并 dev 分支时,会报冲突。
$ git merge dev ... Automatic merge failed: fix conflicts and then commit the result. ... $ git status // 查看状态 ...both modified: readme.txt ... $ cat readme.txt // 查看 readme.txt 内容 <<<<<<<< HEAD 999999999999 ======== 888888888888 >>>>>>>> dev// 修改后(保留master修改的内容,删除dev分支修改的内容): $ cat readme.txt 999999999999$ git add readme.txt $ git commit -m "conflict fixed"
- Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中 <<<<<<<< < HEAD是指主分支修改的内容,>>>>>>>> dev 是指dev上修改的内容,我们可以修改后保存。
- 如果我想查看分支合并的情况的话,需要使用命令 git log 命令行演示:
$ git log
- 分支管理策略
- 通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,我们可以用带参数 -–no-ff来禁用”Fast forward”模式。
// 合并 dev 分支,--no-ff 表示禁用 Fast forward $ git merge --no-ff -m "merge with no-ff" dev
- 分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
- bug分支
- Git提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作:
$ git stash // 将当前的工作现场隐藏起来 $ git status // 此时查看状态,是干净的// 假设要修复一个404的bug,又假设要在主分支master上来修复,则需要在master分支上创建一个临时分支: $ git checkout -b issue-404 $ cat readme.txt // 修改前看看文件内容 ... $ cat readme.txt // 修改后再看看文件内容 $ git add readme.txt $ git commit -m "fix bug 404" $ git checkout master // 切换回master分支 $ git merge --no-ff -m "merge bug fix 404" issue-404 $ cat readme.txt // 合并分支后查看文件内容,与issue-404内容一致 $ git branch -d issue-404 // 在master分支上删除临时分支issue-404 $ git checkout dev // 最后从master分支切换回dev分支上干活 $ git status // 此时查看状态,是干净的(因为还没恢复现场) $ git stash list // 查看工作现场 $ git stash pop // 恢复现场
- Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:
- git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
- 另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
- 远端仓库
- 当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。
- 要查看远程库的信息 使用 git remote
- 要查看远程库的详细信息 使用 git remote –v
$ git remote origin $ git remote -v origin https://........(fetch) // 抓取 origin https://........(push) // 推送
- 远端仓库之推送分支
- 推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上,使用命令:
$ git push origin master // $ git push origin dev // 也可以推送其他分支,但是一般不这么做
- 一般情况下,那些分支要推送呢?
- master分支是主分支,因此要时刻与远程同步。
- 一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。
- 远端仓库之抓取分支
1. 同事A把dev分支也要推送到远程去
$ git push origin dev2. 同事B clone仓库
$ git clone https://xxxx.git3. 同事B 要在 dev 分支上开发,那就必须把远程的origin的dev分支到本地来
$ git checkout -b dev origin/dev // 创建远程origin的dev分支到本地来4. 同事B开发完,add且commit之后,把现在的dev分支推送到远程去
$ git push origin dev5. 假设同事A也在相同的地方作了修改,也试图推送到远程库时,会报错:
$ git checkout dev
...修改了文件,add且commit之后
$ git push origin dev
error: failed to push some refs to ....6. 此时,需先用 git pull 把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送:
$ git pull
失败,因为没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:如下:
$ git branch --set-upstream dev origin/dev
$ git pull
pull成功了,但是有冲突,需要解决,再push
解决冲突的方式和上面的一致,解决完,add且commit之后
$ git push origin dev
此时成功了!
- 因此,多人协作工作模式一般是这样的:
- 首先,可以试图用git push origin branch-name推送自己的修改.
- 如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
- 如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。
- Git基本常用命令如下:
mkdir XX // 创建一个空目录 XX指目录名pwd // 显示当前目录的路径。git init // 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。git add XX // 把xx文件添加到暂存区去。git commit –m “XX” // 提交文件, –m 后面的是注释。git status // 查看仓库状态git diff XX // 查看XX文件修改了那些内容git log // 查看历史记录git reset --hard HEAD^
或者 git reset --hard HEAD~ 回退到上一个版本// 如果想回退到100个版本,使用git reset –hard HEAD~100cat XX // 查看XX文件内容git reflog // 查看历史记录的版本号idgit checkout -- XX // 把XX文件在工作区的修改全部撤销。git rm XX // 删除XX文件git remote add origin https://github.com/bread/xxx.git // 关联一个远程库git push –u(第一次要用-u 以后不需要) origin master // 把当前master分支推送到远程库git clone https://github.com/bread/xxxxx.git // 从远程库中克隆git checkout –b dev // 创建dev分支并切换到dev分支上git branch // 查看当前所有的分支git checkout master // 切换回master分支git merge dev // 在当前的分支上合并dev分支git branch –d dev // 删除dev分支git branch name // 创建分支git stash // 把当前的工作隐藏起来,等以后恢复现场后继续工作git stash list // 查看所有被隐藏的文件列表git stash apply // 恢复被隐藏的文件,但是内容不删除git stash drop // 删除文件git stash pop // 恢复文件的同时,也删除文件git remote // 查看远程库的信息git remote –v // 查看远程库的详细信息git push origin master // Git会把master分支推送到远程库对应的远程分支上
- 切换tag
$ git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。
$ git checkout v0.4.0 // 注意:不用-b
注意:正在切换到 'v0.4.0'。您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以在切换
回一个分支时,丢弃在此状态下所做的提交而不对分支造成影响。如果您想要通过创建分支来保留在此状态下所做的提交,您可以通过在 switch 命令
中添加参数 -c 来实现(现在或稍后)。例如:git switch -c <新分支名>或者撤销此操作:git switch -通过将配置变量 advice.detachedHead 设置为 false 来关闭此建议HEAD 目前位于 f9130bb Merge branch 'bin-xxx-xxx' into 'master'
$ git branch
* (头指针分离于 v0.4.0)master// 删除 tag 后再重新拉取 tag:
$ git tag -d v0.7.1
$ git pull
$ git checkout v0.7.1
- 修改分支名字
$ git branch -m oldBranchName newBranchName
$ git push --delete origin oldBranchName
$ git push origin newBranchName
$ git branch --set-upstream-to=origin/newBranchName
- 创建分支
$ git clone https://xxx.com/xxxxx.git
$ git checkout -b myBranchName
$ git push --set-upstream origin myBranchName
- 拉取远端分支
$ git branch
* master
$ git pull
$ git checkout -b dev origin/dev
$ git branch
* devmaster
- 回退版本
$ git log
commit d3ad0937cb40f1214fa5adda3a859fce2221675b
Author: xiaohuamao <xiaohuamao@qq.com>
Date: Thu Feb 23 15:54:48 2023 +08001.删除无用json字段commit 1e3f401289b7b6dbcb89059e6658ad094a91f5fa
Author: xiaohuamao <xiaohuamao@qq.com>
Date: Thu Feb 23 15:54:04 2023 +08001.[修改]合并代码的问题。$ git reset --hard 1e3f401289b7b6dbcb89059e6658ad094a91f5fa
- 查看某个文件的历史修改记录和内容
git log -- test.cpp // 仅查看历史修改记录
git -P log --follow -p test.cpp // 不仅有历史修改记录,还有对应的文件内容git show 123444fee8873121d9ada3e67308bfasaa150a4c // 查看某次提交的内容
git show 123444fee8873121d9ada3e67308bfasaa150a4c --stat // 查看某次提交的文件列表
- 记录远程仓库的用户名和密码
$ git config --global credential.helper store
// 设置完成后,再 git pull 一次,然后输入用户名和密码,后面就不用再输入用户名和密码了。
- dev 分支合并 master 分支上的某个提交
git checkout master
git pull
git log // 找到需要合并的提交的 commitid f92829dd57b8bfa84b77d6672474b95d9583beaa
git checkout dev
git pull
git cherry-pick f92829dd57b8bfa84b77d6672474b95d9583beaa
error: 提交 f92829dd57b8bfa84b77d6672474b95d9583beaa 是一个合并提交但未提供 -m 选项。
fatal: 拣选失败
git cherry-pick -m 1 f92829dd57b8bfa84b77d6672474b95d9583beaa
自动合并 src/my_manager.hpp
自动合并 projectx.pro
冲突(内容):合并冲突于 projectx.pro
error: 不能应用 f92829d... Merge branch 'dev' into 'master'
提示:冲突解决完毕后,用 'git add <路径>' 或 'git rm <路径>'
提示:对修正后的文件做标记,然后用 'git commit' 提交
git add .
git commit -m "xxxx"
- git中 rebase 和 merge 的区别是什么?
区别:
- rebase 把当前的 commit 放到公共分支的最后面,merge 把当前的 commit 和公共分支合并在一起;
- 用 merge 命令解决完冲突后会产生一个 commit,而用 rebase 命令解决完冲突后不会产生额外的 commit。
rebase 会把当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像从公共分支又重新拉出来这个分支一样。
举例:如果从 master 拉个 feature 分支出来,然后提交了几个 commit,这个时候刚好有人把他开发的东西合并到 master 了,这个时候 master 就比你拉分支的时候多了几个 commit,如果这个时候你 rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面。而 merge 会把公共分支和你当前的 commit 合并在一起,形成一个新的 commit 提交。
- 查看用户信息
$ git config --list
- 推送本地已有仓库到远端
$ git remote add origin http://bread@xxx.xxx.xxx.xxx:8080/bread/glog-0.6.0.git
$ git remote -v
$ git push -u origin master
- 合并远程分支
$ git status
$ git pull
$ git merge origin/master
- pick其他提交记录
// -x 参数会代码pick记录来源的commitid
$ git cherry-pick -x f92829dd57b8bfa84b77d6672474b95d9583beaa
相关文章:
Git 笔记
设置Git的user name和email $ git config --global user.name "bread" $ git config --global user.email "1234567890qq.com"因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。git config --global 参数,有了这…...
蒟蒻编程日志
ORZ (用于记录你这个“人”是不是真的,也就是说CSDN的流量是否属合适) 2025/4/14 21:25 开坑 前言 2024/10/26:CSP-J 260pts,CSP-S 45pts。 2025/3/1:%你赛 180pts rk34 寄!这就是不认真的…...
深入GoFrame框架:GToken的优势、实践与踩坑经验分享
一、引言 近年来,Go语言凭借其简洁的语法、高并发性能和强大的标准库,在后端开发领域迅速崛起。从微服务到企业级应用,Go的生态圈正在蓬勃发展,吸引了越来越多的开发者投入其中。在这个生态中,框架的选择往往决定了项…...
MODBUS RTU调试助手使用方法详解
一、软件简介 485调试助手是一款常用的串口通信调试工具,专门用于RS-485总线设备的测试、调试和通信监控。它支持多种串口参数设置,提供数据收发功能,是工业现场调试的必备工具之一。 二、软件安装与启动 1. 系统要求 Windows 7/10/11操作…...
【专利信息服务平台-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
我用 Appuploader绕过 Mac,成功把 iOS 应用上线了 App Store
我以前总觉得,iOS 上架是 macOS Xcode 专属的领域。直到最近项目必须要上架 iOS,团队却没人用 Mac,只能临时组建了一套“跨平台上架流程”。 这篇文章记录我这个“非典型 iOS 开发者”是如何绕开传统 Xcode 流程,借助一系列工具…...
Mac上安装运行SynthTIGER
1. 确保已安装 Python 环境 SynthTIGER 需要 Python 3.6。如果你的 Mac 没有安装 Python: 推荐通过 Homebrew 安装: brew install python 或从 Python 官网 下载安装。 验证安装: python3 --version pip3 --version 2. 安装 SynthTIGER…...
从代码学习深度学习 - 实战Kaggle比赛:狗的品种识别(ImageNet Dogs)PyTorch版
文章目录 前言1. 获取和整理数据集1.1 读取标签1.2 整理数据集:划分训练集和验证集1.3 整理测试集1.4 执行数据重组 2. 图像增广3. 读取数据集3.1 创建Dataset实例3.2 创建DataLoader实例 4. 微调预训练模型4.1 定义网络结构4.2 定义损失函数和评估函数 5. 定义训练…...
翼兴消防监控 – 大数据可视化HTML源码
概述 在当今数据驱动的时代,大数据可视化已成为各行各业不可或缺的工具。幽络源今天为大家带来一款基于ECharts的消防监控大屏HTML源码,帮助开发者快速搭建专业级数据展示界面。这款源码设计简洁大方,功能完善,适合各类监控场景使…...
搭建运行若依微服务版本ruoyi-cloud最新教程
搭建运行若依微服务版本ruoyi-cloud 一、环境准备 JDK > 1.8MySQL > 5.7Maven > 3.0Node > 12Redis > 3 二、后端 2.1数据库准备 在navicat上创建数据库ry-seata、ry-config、ry-cloud运行SQL文件ry_20250425.sql、ry_config_20250224.sql、ry_seata_2021012…...
火山引擎AI大模型
火山引擎的AI大模型(如**“云雀”大模型**)作为字节跳动旗下的核心技术产品,在性能、应用场景和技术生态上表现较为突出,尤其在字节自身业务(如抖音、TikTok等)的打磨下,具备较强的实用性和行业…...
isaacgym环境安装
1. 系统环境 操作系统:Ubuntu 18.04.6 LTSGPU:NVIDIA TITAN RTXDriver 版本: 510.108.03CUDA 版本:11.6 2. conda安装以及环境安装 略过(参考内容:https://github.com/unitreerobotics/unitree_rl_gym/blob/main/doc…...
使用Mathematica制作Lorenz吸引子的轨道追踪视频
Lorenz奇异吸引子是混沌理论中最早被发现和研究的吸引子之一,它由Edward Lorenz在1963年研究确定性非周期流时提出。Lorenz吸引子以其独特的"蝴蝶"形状而闻名,是混沌系统和非线性动力学的经典例子。 L NDSolveValue[{x[t] -3 (x[t] - y[t]),…...
基于matlab的D2D 功率控制仿真
基于MATLAB的D2D(Device-to-Device)功率控制仿真示例,包含系统建模、功率控制算法实现和性能分析。该仿真以蜂窝网络为背景,重点关注D2D用户间的干扰管理和功率优化。 1. 系统模型与参数设置 clc; clear; close all;%% 参数配置…...
将three.js场景保存成图片
使用html2canvas或者canvas.toDataURL,直接转会发现场景是空白的 解决方案:在转图片之前先渲染一下场景,就不会导致因为渲染问题的闪白了 1. 获取dom let canvas: any renderer.domElement;2. 转图片并下载 renderer.render(scene,camera…...
Java注解详解:从入门到实战应用篇
1. 引言 Java注解(Annotation)是JDK 5.0引入的一种元数据机制,用于为代码提供附加信息。它广泛应用于框架开发、代码生成、编译检查等领域。本文将从基础到实战,全面解析Java注解的核心概念和使用场景。 2. 注解基础概念 2.1 什…...
在哪一个终端下运行有影响吗?pip install pillow
在哪一个终端下运行有影响吗?pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn,需要切换到主目录吗? 1. 是否需要切换目录? 不需要切换目录 pip install 安装的包会存放…...
Java与C/C++跨平台互操作深度解析:Project Panama技术实战
简介 Project Panama是Java语言历史上最重要的互操作性增强项目之一,它通过Foreign Function & Memory API彻底改变了Java与本地代码交互的方式。相比传统的JNI方法,Panama提供了更安全、更高效、更易用的API,使得Java程序能够直接调用C/C++函数并操作外部内存,而无需…...
亲缘半相合供者
https://health.baidu.com/m/detail/ar_3602431741690417249 骨髓移植:亲缘半相合供者的经历分享 从去年八月开始,我妈妈被诊断为急性髓系白血病M4。经过一系列的准备和手术,昨天上午我终于完成了骨髓采集。现在,我的干细胞已经…...
《解锁数字藏品交易系统的底层密码:区块链架构抉择》
区块链,凭借其去中心化、不可篡改、可追溯等特性,成为数字藏品交易系统的核心支撑技术。不同的区块链底层架构,就像各具特色的建筑材料与蓝图,拥有独特的性能、特点以及应用场景。在搭建数字藏品交易系统时,必须深入剖…...
STM32F407VET6的HAL库使用CRC校验的思路
CRC校验在数据传输快,且量大的时候使用。 步骤实现: CubeMX配置 c // 在CubeMX中启用CRC模块 // AHB总线时钟自动启用 HAL库代码 c // 初始化(main函数中) CRC_HandleTypeDef hcrc; hcrc.Instance CRC; hcrc.Init.Default…...
TDuckX 2.6 正式发布|API 能力开放,核心表单逻辑重构,多项实用功能上线。
大家好,TDuckX 2.6 已正式发布。 本次更新以可集成性提升、数据处理能力增强和交互体验优化为核心,新增了包括 新增OpenAPI 模块、表单数据批量修改、字段导出分列 等多个面向开发者和实际业务落地场景的功能。 我们也重构了部分底层逻辑模块ÿ…...
智慧换热站全流程可视化管理
通过图扑 HT 实现换热站全方位数字孪生。对换热机组、管道阀门等设备精细建模,集成温度、流量、能耗等运行数据。在可视化界面中,设备状态实时呈现,异常即时预警。助力运维人员精准管理,优化调控策略,提升换热站运行效…...
框架的源码理解——V3中的ref和reactive
最近在研究各个框架的源码,从源码角度去理解 vue3 的 reactive 和 ref API,记录下研究的成果 reactive 首先,reactive() 的参数必须是一个对象,返回值是一个 Proxy 对象,具有响应性。如果参数不是对象类型࿰…...
一台入网的电脑有6要素, 机器名,mac,ip,俺码,网关,dns,分别有什么作用
一台入网的电脑需要配置的 六大网络要素(机器名、MAC地址、IP地址、子网掩码、网关、DNS)各自承担不同的关键作用,共同确保设备能正确通信和访问网络资源。以下是它们的详细功能解析: 1. 机器名(主机名) 作…...
LED点阵屏模块
目录 1.LED点阵屏介绍 2.显示原理 3.74HC595 4.C51的sfr、sbit 5.LED点阵屏显示图形代码 第一步: 第二步: 第三步: 第四步: 第五步: 第六步: 最终代码: 模块: main.c …...
服务器性能参数分析基础:磁盘-CPU-内存
在Linux系统中,"挂载"(Mount)是指将物理存储设备(如磁盘分区)或逻辑存储卷(如LVM、网络存储)关联到文件系统目录树的特定路径节点(即挂载点),使得该…...
MoonBit 新特性:Virtual Package 虚拟包机制
Moonbit 最近新增了一项特性:virtual package。通过将一个 package 声明为虚拟包,定义好一套接口(通过 .mbti 文件声明),用户可选择具体使用哪一份实现,如不指定则使用该虚拟包的默认实现。通过这项特性&am…...
[特殊字符][特殊字符]知识库PHP版 | ChatMoneyAI宝塔面板Docker多部署
官方文档💰📚知识库PHP版 | ChatMoneyAI docker-compose2.yml 修改文件名 ports:- "181:80" #【180】为Nginx挂载主机的端口 fastcgi_pass php1:9000; #名称修改php1 container_name: nginx1 #Nginx容器名修改 container_name: php1 #P…...
来一个复古的技术FTP
背景 10年前的老代码,需要升级springboot框架,在升级过程中,测试业务流程里,有FTP的下载业务,不管测试环境如何测试,都没有成功,最后只能自己搭建一个FTP服务器,写一个ftp-demo来测试…...
ShardingSphere:查询报错:Actual table `数据源名称.表名` is not in table rule configuration
目录 简介异常信息排查原因解决 简介 1、使用ShardingSphere框架,版本为5.2.1 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core</artifactId><version>5.2.1</version>…...
内部检测实验室数字化转型新路径 质检LIMS系统如何实现合规、效率、资质三重突破?
在高质量发展成为主旋律的今天,内部检测实验室作为企业质量管控的 “心脏”,正面临着合规标准升级、检测任务激增、设备管理复杂等多重挑战。传统管理模式下,数据追溯难、人员效率低、资质评审周期长等问题,成为制约实验室发展的核…...
PyTorch 的 F.scaled_dot_product_attention 返回Nan
“为什么 PyTorch 的 scaled_dot_product_attention 会输出 NaN?如何正确构造 Attention Mask” 引言:看似正常的 mask,为什么会引发 NaN? 在使用 F.scaled_dot_product_attention 构建跨模态或多源注意力时,我们常通…...
MySQL的触发器
本章了解一下即可,并不是很难,大家加油!!! 触发器实际上是多表关联的一个操作,无需调用,是一个自动的过程,当对数据库表中的数据执行DML操作时自动触发这个SQL片段的执行࿰…...
高可用消息队列实战:AWS SQS 在分布式系统中的核心解决方案
引言:消息队列的“不可替代性” 在微服务架构和分布式系统盛行的今天,消息队列(Message Queue) 已成为解决系统解耦、流量削峰、异步处理等难题的核心组件。然而,传统的自建消息队列(如RabbitMQ、Kafka&am…...
内存泄漏系列专题分析之十六:高通相机CamX内存泄漏内存占用分析--chi-cdk部分ION内存拆解方法
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之十五:高通相机CamX架构chi-cdk部分ION内存管理机制CHI ImageBuffer原理 这一篇我们开始讲: 内存泄漏系列专题分析之十六:高通相机CamX内存泄漏&内存占用分析--chi-cdk部分…...
HANA数据库死锁
死锁是两个或多个事务相互交叉锁定的情况,因此任何事务都无法继续进行。 通常死锁是由应用程序设计缺陷引起的,但在主键约束的上下文中也可能存在更多的技术死锁(这种情况请参考 SAP note 2429521)。 当 HANA 数据库出现死锁时&am…...
Unity雷火UX工具插件中的本地化功能(Unity项目中文字图片多语言功能)
一、插件下载地址如下: 雷火UX工具插件下载 二、本地化功能,也就是多语言功能官方文档地址如下: 雷火UX工具本地化功能官方文档 三、UX Image组件需要注意的事项,也就是官方文档没有提到的地方。 1、UX Image组件所引用的Source Image资...
公路水运安全员B证主要考核内容有哪些
公路水运安全员B证(交安B证)是交通运输行业施工企业主要负责人和项目负责人必备的安全生产考核证书,主要考核以下内容: 一、安全生产法律法规(30%) 国家法律法规:重点考核《安全生产法》《建设…...
电缆故障常见故障及应对方法
一、常见故障类型及原因 1. 机械损伤 原因:安装时的过度牵引或弯曲、外力破坏(如施工挖损、车辆振动)、自然因素(如土地沉降导致电缆拉伸)等。 表现:绝缘层破损、金属护套裂损,可能发展为短…...
Rust 数据结构:String
Rust 数据结构:String Rust 数据结构:String什么是字符串?创建新字符串更新字符串将 push_str 和 push 附加到 String 对象后使用 运算符和 format! 宏 索引到字符串字符串在内存中的表示字节、标量值和字形簇 分割字符串遍历字符串的方法 R…...
算法基础 -- 小根堆构建的两种方式:上浮法与下沉法
小根堆构建的两种方式:上浮法与下沉法 在构建小根堆(Min-Heap)时,通常有两种常见的构建方式: 上浮建堆(逐个插入,上浮调整)下沉建堆(Heapify 自底向上,下沉…...
Sprnig MVC 如何统一异常处理 (Exception Handling)?
主要有以下几种方式来实现统一异常处理,其中 ControllerAdvice (或 RestControllerAdvice) 结合 ExceptionHandler 是最常用的方式。 1. ExceptionHandler 注解 作用: 用于标记一个方法,该方法将处理在同一个 Controller 类中抛出的特定类型…...
03、基础入门-SpringBoot的大时代背景
03、基础入门-SpringBoot的大时代背景 # Spring Boot的大时代背景 Spring Boot的出现和发展,与以下时代背景密切相关: ## 1. 微服务架构的兴起 ### 背景 随着互联网应用的复杂度增加,传统的单体架构在扩展性、维护性和团队协作方面遇到瓶…...
【51单片机中断】
目录 配置流程 1.在IE寄存器中开启总中断通道和需要的某中断通道 2.在TCON寄存器开启所用中断的触发方式 3.使用中断函数完成中断 4.若需要中断嵌套则在IP寄存器中配置 5.若需要使用串口的中断,则配置SCON寄存器 6.代码示例 配置流程 1.在IE寄存器中开启总中…...
英飞凌tle9954 GPIO
9 通用输入输出(GPIO) 9.1 功能概述 通用输入 / 输出(GPIO)由输入 / 输出驱动级和端口控制逻辑组成。GPIO 具备以下功能: 输入 / 输出端口功能(PBx) 输出状态可编程,输入状态可读。输出驱动器可编程为推挽、开漏和三态模式。输出驱动器的驱动强度和转换速率(压摆率)可…...
Linux操作系统--进程间通信(system V共享内存)
目录 1.system V共享内存 2.共享内存数据结构 3.共享内存函数 4.实例代码: 1.system V共享内存 共享内存区是最快的IPC(进程间通信)形式。一旦这样的内存映射到共享它的进程地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再…...
力扣HOT100之二叉树:102. 二叉树的层序遍历
这道题太简单了,相当于基础的模板题,但凡涉及到层序遍历一定会用到队列来实现,其他的倒没啥好说的,用两层while循环来层序遍历,外层while循环用于控制访问二叉树的每一层,而内层while循环则负责收割每一层的…...
分布式锁: Redisson 实现分布式锁的原理与技术细节
在分布式系统中,分布式锁是协调多个节点对共享资源访问的核心机制之一。Redis 作为高性能内存数据库,常被用于实现分布式锁,而 Redisson 是 Java 生态中最成熟、功能最丰富的 Redis 客户端之一,其内置的分布式锁实现被广泛应用于生…...
day22-数据结构之 栈队列
一、栈 1.1 栈的基本概念 栈是限定仅在表尾进行插入和删除操作的线性表 栈的特性:先进后出、后进先出 栈顶:允许操作的一端栈底:不允许操作的一端 栈的使用分为入栈,出栈栈分为顺序栈和链式栈 1.2 栈的基本操作 链栈示意图:最好采取头插和头…...