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

git:指令集

以下是对这些 Git 新特性和命令的更详细解读和实际用例分析,帮助更好地理解它们的作用及适用场景:


1. git switchgit restore

背景:

  • 传统上,git checkout 是一个多功能命令,用于切换分支、检出文件、创建分支等,但其用途过于复杂,容易导致混淆。

新命令:

  • git switch:专注于切换分支。

    • 用法
      git switch branch-name  # 切换到指定分支
      git switch -c new-branch-name  # 创建并切换到新分支
      
    • 优点:避免因误用 git checkout 导致的文件检出错误。
  • git restore:专注于还原文件的修改。

    • 用法
      git restore file.txt  # 恢复工作目录中的指定文件
      git restore --staged file.txt  # 从暂存区移除文件的更改
      
    • 优点:明确分工,降低误操作的风险。

2. git worktree

背景:

  • 需要在一个仓库中同时处理多个分支时,频繁切换分支效率低,且可能导致未提交修改的丢失。

功能:

  • 允许在同一仓库中创建多个工作目录,每个目录可以检出不同的分支或提交。

用法

git worktree add ../path-to-new-worktree branch-name  # 创建新工作目录并检出分支
git worktree list  # 列出所有工作目录
git worktree remove ../path-to-new-worktree  # 删除指定的工作目录

场景:

  • 同时开发多个功能或修复多个问题,避免频繁切换分支或克隆多个仓库。

3. git sparse-checkout

背景:

  • 在处理大型代码仓库时,检出所有文件可能导致资源浪费或加载缓慢。

功能:

  • 支持稀疏检出,仅检出特定的文件或目录。

用法

git sparse-checkout init  # 初始化稀疏检出模式
git sparse-checkout set path/to/folder  # 设置稀疏检出的目录
git sparse-checkout add another/folder  # 添加更多目录到稀疏检出范围

场景:

  • 大型单体仓库(monorepo)开发中,仅需特定模块代码时。

4. git range-diff

背景:

  • 在变基或合并多个提交后,理解提交的差异和变化会变得复杂。

功能:

  • 对比两个提交范围的差异,帮助理解提交在变基或历史改写后的具体变化。

用法

git range-diff upstream..HEAD feature-branch  # 比较两个范围的差异

场景:

  • 代码审查过程中,分析变基后提交历史的变化。

5. git maintenance

背景:

  • 长期使用的仓库可能会出现性能问题,需要定期维护。

功能:

  • 提供自动化的维护任务,如压缩对象、优化文件等。

用法

git maintenance run  # 立即运行维护任务
git maintenance start  # 启用后台维护
git maintenance stop  # 停止后台维护

场景:

  • 在持续集成环境中,保持仓库高效性能。

6. git log --remerge-diff

背景:

  • 在调试复杂的合并历史时,需要了解某次合并引入的确切更改。

功能:

  • 重建合并提交,显示其引入的差异。

用法

git log --remerge-diff

场景:

  • 代码审查中,详细分析复杂合并带来的具体更改。

这些新命令和特性各自解决了开发流程中的实际痛点,大幅提升了 Git 的易用性和效率。在日常使用中,以下是常见组合:

  • 使用 git switchgit restore 替代 git checkout
  • 在大型项目中,结合 git worktreegit sparse-checkout 提高开发效率。
  • 使用 git maintenancegit log --remerge-diff 优化仓库性能和代码审查。

是 Git 的核心操作,用于处理分支切换、回退、更改历史记录以及查看操作记录等功能。以下是它们的作用和具体使用场景:


7. git checkout (切换分支或检出文件)

场景 1:切换分支

# 切换到现有分支 "feature-branch"
git checkout feature-branch

场景 2:创建并切换到新分支

# 创建新分支 "new-feature" 并切换到该分支
git checkout -b new-feature

场景 3:恢复文件

# 恢复文件 "app.js" 到上一次提交的状态
git checkout HEAD app.js# 从其他分支检出某个文件
git checkout dev -- app.js

注意:

  • git checkout 功能繁多,可能导致误用,因此从 Git 2.23 开始,切换分支和检出文件的功能被拆分为 git switchgit restore

8. git reset (回退到指定提交)

作用:

  • 主要用于撤销提交或重置文件的状态。

三种模式:

  1. --soft:保留工作区和暂存区的更改,仅回退提交记录。

    git reset --soft HEAD~1  # 回退到上一个提交
    
  2. --mixed(默认):保留工作区的更改,但清空暂存区。

    git reset HEAD~1
    
  3. --hard:彻底回退,包括清空工作区的更改,无法恢复!

    git reset --hard HEAD~1
    

常用操作:

  • 回退到指定提交:
    git reset --hard commit-hash**仅从暂存区移除文件**
    git reset file.txt
    

注意:

  • reset 会修改提交历史,可能导致数据丢失,不适合已推送的分支。

9. git revert (撤销特定提交)

作用:

  • 创建一个新的提交来反向应用某次提交的更改。

reset 的区别:

  • revert 是安全操作,不会修改提交历史,适合已推送的分支。

用法:

  1. 撤销指定提交:

    git revert commit-hash
    
  2. 批量撤销多个提交:

    git revert commitA..commitB
    
  3. 自动跳过冲突提示:

    git revert commit-hash --no-edit
    

场景:

  • 修复已推送的错误提交。
  • 撤销特定功能或 Bug 修复。

10. git reflog (查看历史操作记录)

场景 1:查看所有操作记录

git reflog
  • 输出示例:
    abc1234 (HEAD -> main) HEAD@{0}: reset: moving to HEAD~1
    def5678 HEAD@{1}: commit: Fix a bug
    ghi9012 HEAD@{2}: checkout: moving from feature to main
    

场景 2:恢复误删分支

# 假设分支被删除,找到分支最后一次操作的 commit-hash
git reflog# 创建分支恢复到误删位置
git branch recovered-branch abc1234

场景 3:恢复误用 reset --hard 丢失的提交

# 找到丢失的提交的 commit-hash
git reflog# 回退到该提交
git reset --hard commit-hash

完整操作案例

案例 1:修复提交历史
  1. 假设你误提交了错误内容:
    git commit -m "Wrong changes"
    
  2. 使用 reset 回退到暂存区:
    git reset HEAD~1
    
  3. 修改文件后重新提交:
    git add file.txt
    git commit -m "Correct changes"
    

案例 2:撤销错误的合并
  1. 假设最近一次合并出现问题:
    git merge feature-branch
    
  2. 使用 revert 撤销合并:
    git revert -m 1 commit-hash
    

案例 3:恢复误删的分支
  1. 假设你意外删除了分支:
    git branch -d feature-branch
    
  2. 查找分支的最后一次操作记录:
    git reflog
    
  3. 恢复分支:
    git branch feature-branch commit-hash
    

案例 4:稀里糊涂丢了提交,如何恢复
  1. 假设你执行了以下命令丢失了更改:
    git reset --hard HEAD~2
    
  2. 查找丢失的提交:
    git reflog
    
  3. 恢复到丢失的提交:
    git reset --hard commit-hash
    
命令适用场景
checkout切换分支、恢复文件、查看特定提交的文件内容。
reset回退到某个提交,修改提交历史(慎用在已推送分支)。
revert撤销特定提交的更改,生成新的提交(安全撤销)。
reflog查看本地分支的所有操作记录,恢复被误删除或回退的提交。

HEAD 的作用

HEAD 是 Git 中的一个特殊的指针,它始终指向当前活动分支的最新提交。可以理解为 Git 用来追踪“当前工作位置”的标记。通过操作 HEAD,我们可以切换分支、回退提交、检出历史版本等。


HEAD 的主要特性

  1. 指向当前分支的最新提交:

    • 在分支上工作时,HEAD 通常指向该分支的名称,例如 maindev 等。
    • 例如:
      HEAD -> main
      
    • 这表示当前 HEAD 绑定到 main 分支,而 main 分支指向它的最新提交。
  2. 可临时指向特定提交:

    • 如果使用 git checkout 检出一个历史提交,HEAD 会处于“分离状态”(detached HEAD),直接指向该提交的哈希值,而不再绑定到某个分支。

HEAD 的作用和常见场景

1. 检出分支
  • 当切换到某个分支时,HEAD 更新为指向该分支的最新提交。
git checkout main
  • 此时,HEAD -> main,表示当前工作目录的内容基于 main 分支。

2. 回退提交
  • 使用 git reset 时,HEAD 可以移动到历史的某个提交。
git reset --hard HEAD~1
  • 此操作将 HEAD 指针向回移动一位,同时更新当前分支。

3. 查看历史提交
  • 通过 HEAD 指向的提交哈希值,可以检出历史版本。
git checkout HEAD~2  # 检出当前分支的前两次提交
  • 此时,HEAD 处于分离状态。

4. 分离 HEAD 状态(Detached HEAD)
  • 如果 HEAD 不再指向分支,而是直接指向某个提交哈希值,就进入了分离状态:
git checkout commit-hash
  • 此时的 HEAD
    HEAD detached at commit-hash
    
  • 分离状态常用于查看历史版本或基于某次提交新建分支。

5. 临时恢复文件
  • 使用 HEAD 恢复工作区文件到最新提交状态:
git checkout HEAD -- file.txt
  • 该命令会将 file.txt 恢复到当前提交时的状态。

6. 参考点操作

HEAD 作为当前分支的参考点,可用于多种操作:

命令描述
HEAD~1当前提交的父提交。
HEAD~2当前提交的祖父提交。
HEAD^当前提交的第一个父提交(等价于 HEAD~1)。
HEAD^2当前提交的第二个父提交(用于合并提交)。
HEAD@{n}当前分支的 reflog 中第 n 次变更位置。

HEAD 的常见使用示例

场景 1:快速回到最新提交
  • 如果你临时查看了历史提交,想返回最新的提交:
git checkout main
场景 2:撤销最近一次提交,但保留工作区更改
git reset HEAD~1
场景 3:回退到分支的某个历史状态
git reset --hard HEAD~3
场景 4:对比当前工作区和最新提交的差异
git diff HEAD
场景 5:恢复文件到上次提交的状态
git checkout HEAD -- file.txt
场景 6:创建分支基于特定提交
  • 假设当前 HEAD 在分离状态,想基于它创建新分支:
git checkout -b new-branch

注意事项

  1. 分离状态的风险:

    • 在分离状态中,如果你没有创建新分支,做的所有提交都可能丢失。
    • 建议在需要继续工作的场景下,创建新分支:
      git checkout -b temp-branch
      
  2. HEAD 相关的误操作:

    • 使用 git reset --hard 修改 HEAD 时,要谨慎操作,避免丢失工作区的更改。

什么是分离状态(Detached HEAD)?

通常情况下,HEAD 是指向一个分支的,比如 mainfeature-branch。当你在某个分支上工作时,HEAD 会跟踪该分支的最新提交。

但是,当你检出(checkout)一个具体的提交哈希值,而不是分支名时,HEAD 就直接指向该提交,而不是分支。这就是所谓的“分离状态”。


为什么叫分离状态?

在分离状态下:

  1. HEAD 不再跟踪任何分支,而是直接指向某个具体的提交。
  2. 你可以查看或修改代码,但这些更改不会被关联到任何分支上,除非你创建一个新的分支。

如何进入分离状态?

分离状态通常发生在以下情况下:

1. 检出一个具体的提交
git checkout commit-hash
  • 这会让 HEAD 指向指定的提交,而不是当前分支的最新提交。
2. 检出一个标签(Tag)
git checkout v1.0.0
  • 标签通常指向一个具体的提交,检出标签也会导致 HEAD 分离。
3. 检出远程分支未合并的提交
git checkout origin/feature-branch
  • 如果本地没有该分支,直接检出远程分支的提交也会导致分离状态。

分离状态下会发生什么?

  1. 查看代码是安全的:

    • 你可以安全地查看指定提交的代码,不会对其他分支造成影响。
  2. 提交的更改可能丢失:

    • 如果你在分离状态下修改代码并提交:
      git commit -m "Work in detached HEAD"
      
      这些更改不会自动关联到任何分支,可能导致提交变得“孤立”。
  3. 你需要创建新分支保存工作:

    • 如果不想丢失提交,需要创建一个新分支:
      git checkout -b new-branch
      

分离状态的工作流程

例子:检出历史提交

假设当前分支是 main,它的提交历史如下:

A -> B -> C -> D (HEAD, main)

你运行以下命令:

git checkout B

此时:

  1. HEAD 会直接指向提交 B
  2. main 分支仍然指向提交 D
  3. 工作区的代码被恢复为提交 B 的状态。

结果:

A -> B (HEAD) -> C -> D (main)

如果你在这个状态下修改文件并提交:

git commit -m "New commit"

提交历史会变成这样:

A -> B -> E (HEAD) -> C -> D (main)

注意: 提交 E 不属于任何分支,是孤立的。

解决孤立提交:
  1. 如果你想保留提交 E,需要创建一个新分支:

    git checkout -b temp-branch
    

    新分支 temp-branch 会指向提交 E,保留你的工作。

  2. 如果你直接切换到其他分支而没有保存,提交 E 会被垃圾回收机制清理掉。


如何离开分离状态?

如果你不打算保留分离状态下的任何修改,可以直接切换回分支:

git checkout main

分离状态的注意事项

  • 分离状态适合以下场景:

    • 检查代码在特定历史版本中的状态。
    • 调试某个历史提交。
    • 基于某个历史提交开始新的开发。
  • 不适合长期工作:

    • 因为分离状态的更改不被分支记录,很容易导致工作丢失。

总结

当你在分离状态下,HEAD 不再绑定到某个分支,而是直接指向某个提交。虽然你可以修改和提交代码,但这些提交是孤立的,必须创建新分支来保存。分离状态通常用于查看或临时操作历史版本,但需要注意保存工作,以免丢失更改。

相关文章:

git:指令集

以下是对这些 Git 新特性和命令的更详细解读和实际用例分析,帮助更好地理解它们的作用及适用场景: 1. git switch 和 git restore 背景: 传统上,git checkout 是一个多功能命令,用于切换分支、检出文件、创建分支等&…...

【Vue学习】Vue 组件实例的生命周期(四个阶段,八个钩子)

一、为什么要理解生命周期? 理解生命周期就像是知道了一部电影的剧情走向,能让你在适当的时机做出反应。Vue 生命周期的钩子让你可以在不同的阶段插入你的逻辑,像是提前准备、后期清理或者在数据更新时做点事情。这种“精确控制”的能力会让你…...

第27周:文献阅读及机器学习

目录 摘要 Abstract 一、文献阅读 发现问题 研究方法 CNN-LSTM DT SVR 创新点 案例分析 数据准备 模型性能 预测模型的实现 仿真实验及分析 二、LSTM 1、基本结构 2、具体步骤 3、举例说明 4、原理理解 总结 摘要 本周阅读文献《Short-term water qua…...

Tailwind CSS 实战:动画效果设计与实现

在现代网页设计中,动画效果就像是一位优秀的舞者,通过流畅的动作为用户带来愉悦的视觉体验。记得在一个产品展示网站项目中,我们通过添加精心设计的动画效果,让用户的平均停留时间提升了 35%。今天,我想和大家分享如何使用 Tailwind CSS 打造优雅的动画效果。 设计理念 设计动…...

在K8S中,Pod请求另一个Pod偶尔出现超时或延迟,如何排查?

在Kubernetes中,当Pod请求另一个Pod时偶尔出现超时或延迟,可能是由于多种原因造成的。以下是一些建立的排查步骤: 1. 检查网络配置和插件: 确认你的kubernetes集群使用了合适的网络插件(如Calico、Flannel等&#xf…...

C# 设计模式(结构型模式):外观模式

C# 设计模式(结构型模式):外观模式 (Facade Pattern) 在复杂系统中,往往会涉及到多个子系统、模块和类。这些子系统的接口和功能可能会让使用者感到困惑和复杂。在这种情况下,我们可以使用外观模式(Facade…...

LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 教程 (4)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144881432 大模型的 HTTP 服务,通过网络接口,提供 AI 模型功能的服务,允许通过发送 HTTP 请求,交互大模型,通常基于云计算架构,无需在本地部署复杂的模型和硬件,…...

MCGS学习记录

软件包 用户窗口 主窗口 元件:工具箱->输入框上面 数据对象 在工作台的实时数据库可以新增数据对象 理解为中间变量,控件改变其值,控件监测其值做出变化 基本属性 设定变量名和初始值 指针化? 变化时自动保存初始值&#x…...

Swift Protocols(协议)、Extensions(扩展)、Error Handling(错误处理)、Generics(泛型)

最近在学习 Swift,总结相关知识 1. Protocols(协议) 1.1 协议的定义和实现 协议(protocol) 是一种定义方法和属性的蓝图,任何类、结构体或枚举都可以遵循协议。遵循协议后,需要实现协议中定义…...

axios和fetch的实现原理以及区别,与XMLHttpRequest的关系,并结合react封装统一请求示例

Axios 和 Fetch 对比及统一请求封装 1. Axios 基础用法 1.1 安装和引入 // 安装 npm install axios// 引入 import axios from axios;1.2 基本请求方法 // GET 请求 axios.get(/api/users).then(response > console.log(response.data)).catch(error > console.error…...

2024年阅读书单

《高效能人士的7个习惯》 史蒂芬.柯维 精进 《高效能人士的7个习惯》在读了一遍之后,记住非常深刻的就是积极主动和以终为始。 《软件架构》 Simon Brown 架构、技术 《软件架构》这本书比较抽象,若是工作时间比较少的人来读,可能觉得作者没写…...

Eclipse 内容辅助

Eclipse的内容辅助(Content Assist)功能是一项核心特性,它通过提供代码提示和自动完成建议来提高开发效率。这个功能能够在用户编写代码时自动显示可能的代码补全选项,如变量名、方法名、类名和关键字等。它还能根据用户的输入和上…...

【数学建模笔记】评价模型-基于熵权法的TOPSIS模型

视频课地址:https://www.bilibili.com/video/BV1eRyVYUEhg 本系列文章和课程一样,只使用Python实现,好久没玩数学建模了 国赛中不能再用TOPSIS,可以做辅助算法。 1. 算法原理 熵权TOPSIS方法是一种结合熵权法和TOPSIS的决策分析…...

小程序发版后,强制更新为最新版本

为什么要强制更新为最新版本? 在小程序的开发和运营过程中,强制用户更新到最新版本是一项重要的策略,能够有效提升用户体验并保障系统的稳定性与安全性。以下是一些主要原因: 1. 功能兼容 新功能或服务通常需要最新版本的支持&…...

数据分析思维(七):分析方法——群组分析方法

数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python,更重要的是数据分析思维。没有数据分析思维和业务知识,就算拿到一堆数据,也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》,本文内容就是提取…...

SAP 01-初识AMDP(ABAP-Managed Database Procedure)

1. 什么是AMDP(ABAP-Managed Database Procedure) 1.)AMDP - ABAP管理数据库程序,是一种程序,我们可以使用SQLSCRIPT在AMDP内部编写代码,SQLSCRIPT是一种与SQL脚本相同的数据库语言,这种语言易于理解和编码。 将AM…...

.net core 线程锁,互斥锁,自旋锁,混合锁

线程锁、互斥锁、自旋锁和混合锁是多线程编程中的重要概念,它们用于控制对共享资源的访问,避免数据竞争和不一致性。每种锁有其特定的适用场景和特点。我们来逐一解释它们,并进行比较。 1. 线程锁(Thread Lock) 线程…...

大数据系列之:深入理解学习使用腾讯COS和COS Ranger权限体系解决方案,从hdfs同步数据到cos

大数据系列之:深入理解学习使用腾讯COS和COS Ranger权限体系解决方案,从hdfs同步数据到cos 对象存储COS对象存储基本概念COS Ranger权限体系解决方案部署组件COS Ranger Plugin部署COS-Ranger-Service部署COS Ranger Client部署 COSN 从hdfs同步数据到co…...

Uniapp Android 本地离线打包(详细流程)

一、简介 App 离线 SDK 暂时不支持 Kotlin,未来不清楚。 uniapp 提供了 云打包 与 本地打包 两种方案,云打包 需要排队且还有次数限制,本地打包 则就没有这些限制,而且会 本地打包 对开发 原生插件 有很大的帮助。 细节&#x…...

单片机常用外设开发流程(1)(IMX6ULL为例)

1.通过GPIO引脚控制led灯和key按钮 (1)设置多路复用的引脚(SW_MUX_CTL)也可以说是选择让引脚以哪种工作模式工作 (2)设置电器属性(SW_PAD_CTL)上拉、等等... (3)设置GPIO的方向&am…...

机器学习 学习知识点

机器学习 学习知识点 什么是消融实验(Ablation experiment)?num_step与batch_size的区别python glob.glob()函数认识python的条件判断之is not、is not None、is Nonetqdm介绍及常用方法softmax 激活函数。type_as(tesnor)Python OpenCV cv2.…...

深入了解PINN:物理信息神经网络(Physics-Informed Neural Networks)

1. 什么是PINN(物理信息神经网络)? 物理信息神经网络(PINN,Physics-Informed Neural Networks)是一类通过结合神经网络和物理方程的深度学习方法。其主要特点是将物理系统的约束条件(如偏微分方…...

人工智能知识分享第八天-机器学习_泰坦尼克生存预估线性回归和决策树回归对比案例

泰坦尼克生存预估案例 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import classification_report import matplotlib.pyplot as plt from sklearn.tree import plot_t…...

封装/前线修饰符/Idea项目结构/package/impore

目录 1. 封装的情景引入 2. 封装的体现 3. 权限修饰符 4. Idea 项目结构 5. package 关键字 6. import 关键字 7. 练习 程序设计:高内聚,低耦合; 高内聚:将类的内部操作“隐藏”起来,不需要外界干涉&#xff1b…...

python中的装饰器

装饰器(Decorator)是 Python 中的一种语法糖,它允许你修改或增强函数或类的行为。下面详细解释: 基本概念 装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数: def my_decor…...

HTMLElement、customElements及元素拓展

文章目录 HTMLElement 与 customElementscustomElements.define() 方法说明HTML 元素方法拓展 HTMLElement 与 customElements HTMLElement 概述 HTMLElement是一个接口&#xff0c;它表示所有HTML元素。几乎所有的HTML标签&#xff08;如<div>、<p>、<a>等…...

字玩FontPlayer开发笔记3 性能优化 大量canvas渲染卡顿问题

字玩FontPlayer开发笔记3 性能优化 大量canvas渲染卡顿问题 字玩FontPlayer是笔者开源的一款字体设计工具&#xff0c;使用Vue3 ElementUI开发&#xff0c;源代码&#xff1a; github: https://github.com/HiToysMaker/fontplayer gitee: https://gitee.com/toysmaker/fontpl…...

PyTorch 中 coalesce() 函数详解与应用示例

PyTorch 中 coalesce() 函数详解与应用示例 coalesce&#xff1a; 美 [ˌkoʊəˈlɛs] 合并&#xff1b;凝聚&#xff1b;联结&#xff0c;注意发音 引言 在 PyTorch 中&#xff0c;稀疏张量&#xff08;Sparse Tensor&#xff09;是一种高效存储和操作稀疏数据的方式。稀疏…...

计算机网络(第8版)第3章课后习题--透明传输

【3-11】 试分别讨论以下各种情况在什么条件下是透明传输&#xff0c;在什么条件下不是透明传 输。(提示&#xff1a;请弄清什么是“透明传输”,然后考虑能否满足其条件。) (1)普通的电话通信。 (2)互联网提供的电子邮件服务。 解 答 &#xff1a; 透明传输是指在数据传输…...

JavaScript 日期格式

在 JavaScript 中,日期格式可以通过 Date 对象进行操作和格式化。下面是一些常见的 JavaScript 日期格式及其示例: 1. ISO 8601 格式 ISO 8601 是一种标准的日期和时间表示方法,格式为 YYYY-MM-DDTHH:mm:ss.sssZ,例如: let date = new Date(); console.log(date.toISOS…...

云打印之拼多多打印组件交互协议

拼多多打印组件交互协议相关介绍如下&#xff1a; 1、打印组件下载地址 http://meta.pinduoduo.com/api/one/app/v1/lateststable?appIdcom.xunmeng.pddprint&platformwindows&subTypemain 2、socket连接端口 如果是http的话&#xff0c;端口是5000 socket new …...

Oracle数据库如何找到 Top Hard Parsing SQL 语句?

有一个数据库应用程序存在过多的解析问题&#xff0c;因此需要找到产生大量硬解析的主要语句。 什么是硬解析 Oracle数据库中的硬解析&#xff08;Hard Parse&#xff09;是指在执行SQL语句时&#xff0c;数据库需要重新解析该SQL语句&#xff0c;并创建新的执行计划的过程。这…...

浅谈棋牌游戏开发流程二:后端技术选型与基础环境搭建

一、前言&#xff1a;客户端只是台前&#xff0c;后端才是幕后“指挥中心” 在上一篇“客户端技术”中&#xff0c;我们聊到玩家看到的一切动作、动画、界面逻辑&#xff0c;都靠客户端去渲染和交互。但若没有后端的支撑&#xff0c;玩家点了“出牌”可能就像一拳打在空气里—…...

使用qiankun搭建微前端应用及踩坑

线上演示地址&#xff1a;React App 源码地址&#xff1a;https://github.com/Jiang-K-J/micro-app?tabreadme-ov-file &#xff08;帮忙点个小星星&#xff09; 主应用&#xff1a;react 18 子应用&#xff1a;vite vue3 子应用&#xff1a;react 18 安装 主应用 $ y…...

Windows 环境配置 HTTPS 服务实战

一、 环境准备 win10以上操作系统安装 Certbot申请阿里云\腾讯云域名安装 nginx 1.3以上版本 二、Certbot 安装及 SSL 证书生成 Certbot 是一个免费、开源工具&#xff0c;用于自动化在Web服务器上获取和更新SSL/TLS证书。它可以通过Let’s Encrypt服务获取免费的SSL/TLS证书…...

小程序租赁系统开发的优势与应用前景分析

内容概要 小程序租赁系统是一种新兴的数字化解决方案&#xff0c;旨在为用户提供更加便捷与高效的租赁服务。它通常包括一系列功能&#xff0c;如在线浏览、即时预定、支付功能以及用户反馈机制。这些系统在使用上极为友好&#xff0c;让用户能够轻松选择所需的商品或服务&…...

Redis(基础篇 + 实践篇 )

01 | 基本架构&#xff1a;一个键值数据库包含什么&#xff1f; Redis 作为一个内存数据存储系统&#xff0c;它的架构设计非常简洁&#xff0c;但功能非常强大。理解其核心架构对高效使用 Redis 至关重要。 客户端与服务器架构&#xff1a; 客户端通过 TCP 协议连接到 Redis …...

单片机-独立按键矩阵按键实验

1、按键介绍 按键管脚两端距离长的表示默认是导通状态&#xff0c;距离短的默认是断开状态&#xff0c; 如果按键按下&#xff0c;初始导通状态变为断开&#xff0c;初始断开状态变为导通 我们开发板是采用软件消抖&#xff0c;一般来说一个简单的按键消抖就是先读取按键的状…...

我用AI学Android Jetpack Compose之入门篇(1)

这篇我们先来跑通第一个Android Jetpack Compose工程&#xff0c;现在新版本的Android Studio&#xff0c;新建工程选择Empty Activity默认就会开启Jetpack Compose的支持&#xff0c;再次声明&#xff0c;答案来自 通义千问Ai 文章目录 1.用Android Jetpack Compose需要安装什…...

简单的生产数据库重连策略优化

简单的druid生产数据库重连策略优化 1. 需求 我们生产环境有一次在大量请求拥堵后&#xff0c;好多数据库操作都超时了&#xff0c;在此之后数据库的连接池不能正常的获取数据库连接了&#xff0c;我们确认了数据库服务是没有问题的&#xff0c;那么就是连接池的配置有问题&a…...

STM32-笔记37-吸烟室管控系统项目

一、项目需求 1. 使用 mq-2 获取环境烟雾值&#xff0c;并显示在 LCD1602 上&#xff1b; 2. 按键修改阈值&#xff0c;并显示在 LCD1602 上&#xff1b; 3. 烟雾值超过阈值时&#xff0c;蜂鸣器长响&#xff0c;风扇打开&#xff1b;烟雾值小于阈值时&#xff0c;蜂鸣器不响…...

2025-01-04 Unity插件 YodaSheet1 —— 插件介绍

文章目录 1 介绍2 工作原理2.1 ScriptableObject -> YadeSheetData2.2 YadeDatabase 存储多个 YadeSheetData 3 用途4 缺点5 推荐 1 介绍 ​ Yade 提供类似于 Excel 或者 Google Sheets 的表格编辑器&#xff0c;可以轻松地在 Unity 编辑器中 编辑&#xff0c;搜索&#xf…...

电子电气架构 --- 安全相关内容汇总

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…...

科研绘图系列:R语言单细胞数据常见的可视化图形

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理图1图2图3图4图5图6系统信息参考介绍 单细胞数据常见的可视化图形 因为本教程是单细胞数据,因此运行本画图脚本需要电脑的内存最少32Gb 加载…...

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 2:基础知识

目录 1 预热1.1 记号1.2 分类器计算过载问题 2 多头编码&#xff08;MHE&#xff09;2.1 标签分解2.2 多头组合&#xff08;Multi-Head Combination&#xff09; 论文&#xff1a;Multi-Head Encoding for Extreme Label Classification 作者&#xff1a;Daojun Liang, Haixia …...

Flink使用

Window下启动支持 下载或复制老版本的放在bin目录下即可&#xff1b; flink.bat echo off setlocalSET bin%~dp0 SET FLINK_HOME%bin%.. SET FLINK_LIB_DIR%FLINK_HOME%\lib SET FLINK_PLUGINS_DIR%FLINK_HOME%\pluginsSET JVM_ARGS-Xmx512mSET FLINK_JM_CLASSPATH%FLINK_LI…...

一种可复用的AI提效方案:AI点灯

在当今飞速发展的时代&#xff0c;AI技术正不断渗透到我们生活的各个层面&#xff0c;深刻改变着传统的工作方式和生活模式。面对这一重大变革&#xff0c;我们不能被动观望或抗拒&#xff0c;而应积极拥抱AI&#xff0c;将其作为成长的助力。只有与AI协同发展&#xff0c;才能…...

Django 模型

Django 模型 Django 模型是 Django 框架的核心组件之一,它用于定义应用程序的数据结构。在 Django 中,模型是 Python 类,通常继承自 django.db.models.Model。每个模型类代表数据库中的一个表,模型类的属性对应表中的字段。 1. 创建模型 创建 Django 模型非常简单。首先…...

【MySQL 探索者日志 】第二弹 —— 数据库基础

MySQL系列学习笔记&#xff1a; MySQL探索者日志__Zwy的博客-CSDN博客 各位于晏&#xff0c;亦菲们&#xff0c;请点赞关注&#xff01; 我的个人主页&#xff1a; _Zwy-CSDN博客 目录 1、MySQL服务器&#xff0c;数据库&#xff0c;表关系 2、MySQL登录连接服务器 3、MyS…...

【51单片机-零基础chapter1】

安装软件(配套的有,不多赘述) 1.管理员身份运行keil和破解软件kegen 将CID代码复制粘贴到 一定要管理员方式,不然会error 插入板子 我的电脑,管理 1.如果是拯救者,查看端口,如果没有则显示隐藏 2.苹果不知道,好像不可以 3.其他电脑在"其他设备找" (注:本人在校已…...