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

Git基础知识

Git基础知识

目录

  • 一、Git简介
    • 1.1 什么是Git?
    • 1.2 基本概念
    • 1.3 Git与其他版本控制系统的区别
  • 二、Git安装与配置
    • 2.1 安装Git
    • 2.2 基础配置
    • 2.3 高级配置
    • 2.4 多账户配置
  • 三、基本操作
    • 3.1 创建仓库
    • 3.2 基本工作流
    • 3.3 分支操作
    • 3.4 查看历史
  • 四、高级操作
    • 4.1 撤销修改
    • 4.2 暂存操作
    • 4.3 远程操作
    • 4.4 标签操作
  • 五、Git工作流
    • 5.1 功能分支工作流
    • 5.2 Git Flow工作流
    • 5.3 Forking工作流
    • 5.4 Trunk-Based开发
  • 六、Git高级特性
    • 6.1 Cherry Pick
    • 6.2 变基操作
    • 6.3 子模块
    • 6.4 子树合并
    • 6.5 钩子(Hooks)
  • 七、Git配置与优化
    • 7.1 常用配置
    • 7.2 性能优化
    • 7.3 安全配置
  • 八、最佳实践
    • 8.1 提交规范
    • 8.2 分支管理
    • 8.3 安全实践
    • 8.4 大型仓库管理
  • 九、常见问题与解决方案
    • 9.1 合并冲突
    • 9.2 撤销错误操作
    • 9.3 找回丢失的提交
    • 9.4 清理仓库
    • 9.5 处理大文件
  • 十、Git与其他工具集成
    • 10.1 Git与IDE集成
    • 10.2 Git与CI/CD集成
    • 10.3 Git与项目管理工具集成
    • 10.4 Git与代码审查工具
  • 十一、Git进阶技巧
    • 11.1 交互式暂存
    • 11.2 高级日志查看
    • 11.3 高级搜索
    • 11.4 高级分支操作
    • 11.5 高级合并策略
  • 十二、Git工作流最佳实践
    • 12.1 小型团队工作流
    • 12.2 大型团队工作流
    • 12.3 开源项目工作流
    • 12.4 企业项目工作流

一、Git简介

1.1 什么是Git?

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何大小的项目。其特点是:

  • 分布式系统
  • 数据完整性
  • 快速分支
  • 完整性能
  • 多工作流支持

1.2 基本概念

  • 仓库(Repository):存储项目的地方
  • 分支(Branch):独立的开发线
  • 提交(Commit):代码修改的快照
  • 远程(Remote):远程仓库
  • 工作区(Working Directory):实际工作的目录
  • 暂存区(Staging Area):临时存储修改的区域
  • 本地仓库(Local Repository):本地的Git仓库
  • HEAD:指向当前分支的最新提交
  • 标签(Tag):为特定提交创建的有意义名称
  • 合并(Merge):将两个分支的历史合并到一起
  • 变基(Rebase):重新应用一系列提交
  • 冲突(Conflict):两个分支修改了同一文件的同一部分

1.3 Git与其他版本控制系统的区别

  • 集中式vs分布式:Git是分布式的,每个开发者都有完整的代码历史
  • 分支管理:Git的分支创建和切换非常快速和轻量
  • 数据完整性:Git使用SHA-1哈希确保数据完整性
  • 性能:Git在大型项目上性能优异
  • 工作流灵活性:Git支持多种工作流程

二、Git安装与配置

2.1 安装Git

# Windows
# 下载Git安装包并安装# Linux
sudo apt-get update
sudo apt-get install git# Mac
brew install git

2.2 基础配置

# 配置用户信息
git config --global user.name "Your Name"
git config --global user.email "email@example.com"# 配置默认编辑器
git config --global core.editor vim# 查看配置
git config --list# 配置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit

2.3 高级配置

# 配置凭证缓存
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'# 配置换行符处理
git config --global core.autocrlf input  # Mac/Linux
git config --global core.autocrlf true   # Windows# 配置颜色输出
git config --global color.ui auto# 配置默认分支名
git config --global init.defaultBranch main# 配置提交模板
git config --global commit.template ~/.gitmessage

2.4 多账户配置

# 为不同项目配置不同用户
# 在项目目录中执行
git config user.name "Work Name"
git config user.email "work@example.com"# 使用SSH密钥区分不同账户
# 在~/.ssh/config中配置
Host github-workHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_workIdentitiesOnly yesHost github-personalHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_personalIdentitiesOnly yes

三、基本操作

3.1 创建仓库

# 初始化新仓库
git init# 克隆远程仓库
git clone https://github.com/username/repository.git# 克隆指定分支
git clone -b branch_name https://github.com/username/repository.git# 浅克隆(只获取最近的提交)
git clone --depth 1 https://github.com/username/repository.git# 克隆子模块
git clone --recursive https://github.com/username/repository.git

3.2 基本工作流

# 查看状态
git status# 添加文件到暂存区
git add file.txt
git add .  # 添加所有文件# 提交更改
git commit -m "提交说明"# 推送到远程
git push origin master# 拉取远程更新
git pull origin master

3.3 分支操作

# 查看分支
git branch# 创建分支
git branch branch_name# 切换分支
git checkout branch_name# 创建并切换分支
git checkout -b branch_name# 合并分支
git merge branch_name# 删除分支
git branch -d branch_name# 强制删除分支
git branch -D branch_name# 查看所有分支(包括远程)
git branch -a# 查看远程分支
git branch -r# 跟踪远程分支
git checkout -b local_branch origin/remote_branch

3.4 查看历史

# 查看提交历史
git log# 查看简洁历史
git log --oneline# 查看图形化历史
git log --graph --oneline --all# 查看特定文件历史
git log -- path/to/file# 查看特定作者历史
git log --author="username"# 查看特定时间段历史
git log --since="2 weeks ago"# 查看特定提交的详细信息
git show commit_id

四、高级操作

4.1 撤销修改

# 撤销工作区修改
git checkout -- file.txt# 撤销暂存区修改
git reset HEAD file.txt# 撤销提交
git revert commit_id# 重置到指定提交
git reset --hard commit_id# 软重置(保留修改)
git reset --soft commit_id# 混合重置(默认)
git reset --mixed commit_id

4.2 暂存操作

# 暂存当前修改
git stash# 查看暂存列表
git stash list# 应用暂存
git stash apply# 删除暂存
git stash drop# 应用并删除暂存
git stash pop# 暂存特定文件
git stash push -m "message" path/to/file# 创建分支并应用暂存
git stash branch new_branch_name

4.3 远程操作

# 查看远程仓库
git remote -v# 添加远程仓库
git remote add origin https://github.com/username/repository.git# 删除远程仓库
git remote remove origin# 重命名远程仓库
git remote rename old_name new_name# 获取远程更新
git fetch origin# 拉取并合并远程更新
git pull origin master# 推送到远程
git push origin master# 强制推送
git push -f origin master# 推送所有分支
git push --all origin# 推送标签
git push --tags origin

4.4 标签操作

# 创建轻量标签
git tag v1.0.0# 创建带注释的标签
git tag -a v1.0.0 -m "版本1.0.0发布"# 为特定提交创建标签
git tag -a v1.0.0 commit_id# 查看所有标签
git tag# 查看标签详情
git show v1.0.0# 推送标签到远程
git push origin v1.0.0# 推送所有标签
git push origin --tags

五、Git工作流

5.1 功能分支工作流

# 创建功能分支
git checkout -b feature/new-feature# 开发完成后合并到主分支
git checkout main
git merge feature/new-feature# 删除功能分支
git branch -d feature/new-feature

5.2 Git Flow工作流

# 初始化Git Flow
git flow init# 开始新功能
git flow feature start new-feature# 完成功能
git flow feature finish new-feature# 开始发布
git flow release start 1.0.0# 完成发布
git flow release finish 1.0.0# 开始热修复
git flow hotfix start 1.0.1# 完成热修复
git flow hotfix finish 1.0.1

5.3 Forking工作流

# 1. Fork远程仓库# 2. 克隆自己的Fork
git clone https://github.com/your-username/repository.git# 3. 添加上游仓库
git remote add upstream https://github.com/original-username/repository.git# 4. 同步上游更新
git fetch upstream
git merge upstream/main# 5. 创建功能分支
git checkout -b feature/new-feature# 6. 推送到自己的Fork
git push origin feature/new-feature# 7. 创建Pull Request

5.4 Trunk-Based开发

# 1. 从主分支创建短生命周期分支
git checkout -b feature/new-feature# 2. 频繁提交到主分支
git checkout main
git merge feature/new-feature# 3. 删除功能分支
git branch -d feature/new-feature

六、Git高级特性

6.1 Cherry Pick

# 选择指定提交应用到当前分支
git cherry-pick commit_id# 选择多个提交
git cherry-pick commit_id1 commit_id2# 解决冲突后继续
git cherry-pick --continue# 取消cherry-pick
git cherry-pick --abort

6.2 变基操作

# 变基到指定分支
git rebase master# 交互式变基
git rebase -i HEAD~3# 解决冲突后继续
git rebase --continue# 取消变基
git rebase --abort# 变基特定范围
git rebase --onto new_base old_base branch

6.3 子模块

# 添加子模块
git submodule add https://github.com/username/repository.git# 初始化子模块
git submodule init# 更新子模块
git submodule update# 递归克隆包含子模块的项目
git clone --recursive https://github.com/username/repository.git# 更新所有子模块
git submodule update --remote# 在子模块中工作
cd submodule
git checkout master
git pull
cd ..
git add submodule
git commit -m "更新子模块"

6.4 子树合并

# 添加远程仓库作为子树
git remote add -f external https://github.com/username/external-repo.git
git subtree add --prefix=external external master# 更新子树
git subtree pull --prefix=external external master# 推送子树更改
git subtree push --prefix=external external master

6.5 钩子(Hooks)

# 客户端钩子
# pre-commit: 提交前运行
# commit-msg: 提交消息验证
# pre-rebase: 变基前运行
# post-checkout: 检出后运行# 服务器端钩子
# pre-receive: 接收推送前运行
# update: 更新引用前运行
# post-receive: 接收推送后运行# 示例:pre-commit钩子
#!/bin/sh
# .git/hooks/pre-commit
echo "Running tests..."
npm test

七、Git配置与优化

7.1 常用配置

# 设置默认推送行为
git config --global push.default simple# 设置自动转换换行符
git config --global core.autocrlf true# 设置忽略文件权限变化
git config --global core.fileMode false# 设置差异比较工具
git config --global diff.tool vimdiff# 设置合并工具
git config --global merge.tool vimdiff# 设置日志格式
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

7.2 性能优化

# 开启压缩
git config --global core.compression 9# 启用文件系统缓存
git config --global core.fscache true# 设置打包限制
git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m"# 启用并行获取
git config --global fetch.parallel 4# 启用部分克隆
git clone --filter=blob:none https://github.com/username/repository.git# 启用稀疏检出
git sparse-checkout init
git sparse-checkout set path/to/directory

7.3 安全配置

# 设置签名验证
git config --global commit.gpgsign true
git config --global user.signingkey YOUR_GPG_KEY_ID# 设置SSH密钥
# 生成SSH密钥
ssh-keygen -t ed25519 -C "your_email@example.com"
# 添加到SSH代理
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519# 设置凭证存储
git config --global credential.helper store
# 或使用更安全的方式
git config --global credential.helper cache

八、最佳实践

8.1 提交规范

  1. 提交信息格式

    type(scope): subjectbodyfooter
    
  2. 类型说明

    • feat: 新功能
    • fix: 修复bug
    • docs: 文档更新
    • style: 代码格式
    • refactor: 重构
    • test: 测试
    • chore: 构建过程或辅助工具的变动
  3. 提交示例

    feat(auth): 添加用户登录功能- 实现用户名密码登录
    - 添加记住我功能
    - 集成第三方登录Closes #123
    

8.2 分支管理

  1. 分支命名

    • master/main: 主分支
    • develop: 开发分支
    • feature/*: 功能分支
    • hotfix/*: 紧急修复分支
    • release/*: 发布分支
  2. 合并策略

    • 使用Pull Request
    • 进行Code Review
    • 保持分支整洁
    • 使用合并提交而非快进合并
    • 定期合并主分支到功能分支
  3. 分支保护

    • 保护主分支
    • 要求代码审查
    • 要求状态检查通过
    • 限制直接推送

8.3 安全实践

  1. 敏感信息

    • 使用.gitignore
    • 避免提交密码
    • 使用环境变量
    • 使用git-secrets工具
  2. 权限控制

    • 设置分支保护
    • 使用签名验证
    • 定期备份
    • 限制直接推送到主分支
  3. 清理历史

    • 使用git filter-branch清理敏感信息
    • 使用BFG Repo-Cleaner工具
    • 强制推送清理后的历史

8.4 大型仓库管理

  1. 模块化

    • 使用子模块
    • 使用子树合并
    • 使用monorepo工具
  2. 性能优化

    • 使用浅克隆
    • 使用部分克隆
    • 使用稀疏检出
    • 定期进行垃圾回收
  3. 工作流优化

    • 使用功能标志
    • 使用特性分支
    • 使用持续集成
    • 使用自动化测试

九、常见问题与解决方案

9.1 合并冲突

# 查看冲突文件
git status# 解决冲突
# 手动编辑冲突文件
# 或使用合并工具
git mergetool# 标记为已解决
git add resolved_file.txt# 完成合并
git commit -m "解决合并冲突"

9.2 撤销错误操作

# 撤销最后一次提交(保留修改)
git reset --soft HEAD~1# 撤销最后一次提交(丢弃修改)
git reset --hard HEAD~1# 撤销已推送的提交
git revert commit_id
git push origin master# 修改最后一次提交
git commit --amend

9.3 找回丢失的提交

# 查看操作历史
git reflog# 恢复丢失的提交
git checkout -b recovery_branch commit_id# 或直接重置
git reset --hard commit_id

9.4 清理仓库

# 清理未跟踪的文件
git clean -n  # 预览
git clean -f  # 执行# 清理已忽略的文件
git clean -X# 清理所有未跟踪的文件和目录
git clean -fd# 压缩仓库
git gc# 深度压缩
git gc --aggressive

9.5 处理大文件

# 使用Git LFS
# 安装Git LFS
git lfs install# 跟踪大文件
git lfs track "*.psd"
git add .gitattributes# 正常添加和提交
git add file.psd
git commit -m "添加大文件"# 查看跟踪的文件
git lfs ls-files

十、Git与其他工具集成

10.1 Git与IDE集成

  • VS Code:内置Git支持
  • IntelliJ IDEA:强大的Git集成
  • Eclipse:EGit插件
  • Visual Studio:Git集成
  • Sublime Text:Git插件

10.2 Git与CI/CD集成

  • GitHub Actions
  • GitLab CI
  • Jenkins
  • CircleCI
  • Travis CI

10.3 Git与项目管理工具集成

  • GitHub Issues
  • GitLab Issues
  • Jira
  • Trello
  • Asana

10.4 Git与代码审查工具

  • GitHub Pull Requests
  • GitLab Merge Requests
  • Gerrit
  • Phabricator
  • Review Board

十一、Git进阶技巧

11.1 交互式暂存

# 交互式添加文件
git add -i# 交互式暂存补丁
git add -p

11.2 高级日志查看

# 查看特定作者的提交
git log --author="username"# 查看特定时间段的提交
git log --since="2 weeks ago" --until="1 week ago"# 查看特定文件的修改历史
git log -p path/to/file# 查看特定提交的统计信息
git show --stat commit_id

11.3 高级搜索

# 搜索提交信息
git log --grep="关键词"# 搜索代码内容
git log -S "代码片段"# 搜索特定行
git log -L 10,20:path/to/file

11.4 高级分支操作

# 重命名分支
git branch -m old_name new_name# 移动分支到新的提交
git branch -f branch_name commit_id# 删除已合并的分支
git branch --merged | grep -v "\*" | xargs -n 1 git branch -d

11.5 高级合并策略

# 使用ours策略
git merge -X ours branch_name# 使用theirs策略
git merge -X theirs branch_name# 使用patience策略
git merge -X patience branch_name

十二、Git工作流最佳实践

12.1 小型团队工作流

  • 主分支(main)用于生产环境
  • 开发分支(develop)用于开发
  • 功能分支(feature/*)用于新功能
  • 发布分支(release/*)用于准备发布
  • 热修复分支(hotfix/*)用于紧急修复

12.2 大型团队工作流

  • 使用Git Flow或类似工作流
  • 实施代码审查流程
  • 使用持续集成/持续部署
  • 实施自动化测试
  • 使用功能标志管理功能发布

12.3 开源项目工作流

  • 使用Forking工作流
  • 维护清晰的贡献指南
  • 使用Issue跟踪问题
  • 使用Pull Request进行代码审查
  • 维护更新日志

12.4 企业项目工作流

  • 实施严格的代码审查
  • 使用环境分支(dev, staging, prod)
  • 实施自动化测试和部署
  • 使用版本控制和语义化版本
  • 实施安全扫描和合规检查

相关文章:

Git基础知识

Git基础知识 目录 一、Git简介 1.1 什么是Git&#xff1f;1.2 基本概念1.3 Git与其他版本控制系统的区别 二、Git安装与配置 2.1 安装Git2.2 基础配置2.3 高级配置2.4 多账户配置 三、基本操作 3.1 创建仓库3.2 基本工作流3.3 分支操作3.4 查看历史 四、高级操作 4.1 撤销修改…...

【Flink运行时架构】核心组件

在Flink的运行架构中&#xff0c;有两大比较重要的组件&#xff1a;作业管理器&#xff08;JobManager&#xff09;和任务管理器&#xff08;TaskManager&#xff09;。 Flink的作业提交与任务处理时的系统如下图所示。 其中&#xff0c;客户端并不是处理系统的一部分&#xff…...

【区块链安全 | 第四十篇】合约审计之delegatecall(二)

文章目录 漏洞代码代码分析攻击流程攻击代码前文重现修复建议审计思路 在阅读本文之前&#xff0c;请确保已先行阅读&#xff1a;【区块链安全 | 第三十九篇】合约审计之delegatecall&#xff08;一&#xff09; 漏洞代码 存在一漏洞代码如下&#xff1a; // 库合约&#xf…...

Redis实现分布式定时任务

设计思路 任务表示&#xff1a;每个任务通过一个特定格式的键来表示。键名可以包含任务ID等信息&#xff0c;值可以是任务的具体内容或指向任务详情的引用。过期机制&#xff1a;利用Redis的EXPIRE命令为任务设置过期时间&#xff0c;当到达设定的时间点时&#xff0c;Redis会…...

ERC20合约的基本调用

文章目录 ERC20合约的基本调用合约功能compile.js 代码读取文件 进行合约编译获取二进制对象导出对象 index.js 代码编译合约读取私钥设置收款账户构造 web3 对象获取账户地址获取 abi 和 bin创建合约交易部署合约构造转账交易验证转账后余额 测试项目目录执行查询 ERC20合约的…...

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解 Pod 结构 每个 Pod 中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类 用户程序所在的容器&#xff0c;数量可多可少Pause 容器&#xff0c;这是每个 Pod 都会有的一个根容器&#xff0c;它的作用有两个 可…...

【React框架】什么是 Vite?如何使用vite自动生成react的目录?

什么是 Vite&#xff1f; Vite 是一个基于原生 ES Modules 开发的前端构建工具&#xff0c;由 Evan You&#xff08;Vue 的作者&#xff09;开发。它最大的特点包括&#xff1a; 极速冷启动&#xff1a;因为利用了浏览器原生的 ES Modules&#xff0c;所以在开发时无需等待整…...

JS实现文件点击或者拖拽上传

B站看到了渡一大师课的切片&#xff0c;自己实现了一下&#xff0c;做下记录 效果展示 分为上传前、上传中和上传后 实现 分为两步 界面交互网络请求 源码如下 upload.html <!DOCTYPE html> <html lang"zh-CN"><head><meta charset&q…...

【Vue #3】指令补充样式绑定

一、指令修饰符 Vue 的指令修饰符&#xff08;Directive Modifiers&#xff09;是 Vue 模板语法中的重要特性&#xff0c;它们以半角句号 . 开头&#xff0c;用于对指令的绑定行为进行特殊处理 修饰符作用如下&#xff1a; 简化事件处理&#xff08;如阻止默认行为、停止冒泡…...

Vue.js组件安全工程化演进:从防御体系构建到安全性能融合

——百万级流量场景下的安全组件架构与源码级解决方案 文章目录 总起&#xff1a;安全工程化的组件革命 分论&#xff1a; 一、现存组件架构的七宗罪与安全改造路径   1.1 组件生态安全赤字现状   1.2 架构级安全缺陷深度剖析   1.3 性能与安全的死亡螺旋 二、百万级…...

LINUX基础 [二] - Linux常见指令

目录 &#x1f4bb;前言 &#x1f4bb;指令 &#x1f3ae;ls指令 &#x1f3ae;pwd指令 &#x1f3ae;whoami指令 &#x1f3ae;cd指令 &#x1f3ae;clear指令 &#x1f3ae;touch指令 &#x1f3ae;mkdir指令 &#x1f3ae;rmdir指令 &#x1f3ae;rm指令 &#…...

Linux进阶命令

目录 一、touch 1. 基本语法 2. 常用选项 二、which 1. 基本语法 2. 主要功能 3. 常用选项 三、find 1. 基本语法 2. 常用选项和表达式 四、more 1. 基本语法 2. 常用操作 3. 对比 more 和 less 五、grep 1. 基本语法 2. 常用选项 六、wc 1. 基本语法 2. 常…...

【Spring Boot 过滤器】

文章目录 前言一、什么是过滤器 Filter&#xff1f;二、Spring Boot 中使用 Filter 的方式1. 使用 Component 注解2. 使用 FilterRegistrationBean 显式注册 三、自定义过滤器示例1. 引入必要依赖2. 创建一个自定义 Filter3. 使用 FilterRegistrationBean 显式注册 四、多个 Fi…...

SPI通讯的软硬件NSS SSM SSI

学习自记&#xff1a; 1. NSS&#xff08;Slave Select&#xff0c;从设备选择&#xff09;​​ ​​功能​​&#xff1a; NSS是SPI通信中用于选择从设备的信号线。主设备通过拉低NSS信号选中某个从设备&#xff0c;使其参与通信。通信结束后&#xff0c;主设备释放NSS&#…...

Java基础:集合List、Map、Set(超详细版)

集合体系概述 Collection常用方法 补充&#xff1a;addAll() Collection的遍历方式 迭代器 增强for&#xff08;空集合可以&#xff0c;null不可以&#xff09; lambda 集合对象存储对象原理 遍历方式的区别 List集合 特点、特有方法 遍历方式 &#xff08;同上&#xff09…...

vue+leaflet 区域划分_反向遮罩层

leaflet 区域划分_遮罩层 geojson在线生成器网址:(https://datav.aliyun.com/portal/school/atlas/area_selector) 点击前往阿里云geojson生成器 效果图: 实现下面效果,只需要把addSateLayer函数的调用取消掉就好了. //添加遮罩层代码function addMask() {var latlngs;var fe…...

聊一聊原子操作和弱内存序

1、原子操作概念 在并发编程中&#xff0c;原子操作&#xff08;Atomic Operation&#xff09;是实现线程安全的基础机制之一。从宏观上看&#xff0c;原子操作是“不可中断”的单元&#xff0c;但若深入微观层面&#xff0c;其本质是由底层处理器提供的一组特殊指令来保证其原…...

免费送源码:Java+ssm+MySQL 校园二手书销售平台设计与实现 计算机毕业设计原创定制

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对校园二手书销售平台等问题&#xff0c;对校…...

DAPP实战篇:使用ethersjs连接智能合约并输入地址查询该地址余额

本系列目录 专栏:区块链入门到放弃查看目录-CSDN博客文章浏览阅读400次。为了方便查看将本专栏的所有内容列出目录,按照顺序查看即可。后续也会在此规划一下后续内容,因此如果遇到不能点击的,代表还没有更新。声明:文中所出观点大多数源于笔者多年开发经验所总结,如果你…...

14.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--CAP

CAP 是一款专为 .NET 生态设计的开源框架&#xff0c;其核心目标是解决微服务中跨服务数据一致性问题。在分布式系统中&#xff0c;传统事务无法跨服务保证数据一致性&#xff0c;CAP 通过本地事务与消息记录绑定&#xff0c;再利用消息中间件&#xff08;如 RabbitMQ、Kafka 等…...

智能资源管理机制-重传机制

一、发送端资源管理的核心机制 1. 滑动窗口&#xff08;Sliding Window&#xff09; 这是TCP协议的核心优化设计&#xff1a; 窗口动态滑动&#xff1a;发送端不需要保留所有已发送的分组&#xff0c;只需维护一个"发送窗口"窗口大小&#xff1a;由接收方通告的接…...

【Linux网络与网络编程】08.传输层协议 UDP

传输层协议负责将数据从发送端传输到接收端。 一、再谈端口号 端口号标识了一个主机上进行通信的不同的应用程序。在 TCP/IP 协议中&#xff0c;用 "源IP"&#xff0c;"源端口号"&#xff0c;"目的 IP"&#xff0c;"目的端口号"&…...

局域网下ESP32-S3 LED灯的UDP控制

在局域网下通过IP地址控制ESP32-S3上的LED&#xff0c;可以使用UDP或TCP协议。以下是一个基于UDP协议的完整示例&#xff0c;包括ESP32-S3的服务器代码和一个简单的Python客户端代码。 ESP32-S3 服务器代码 import socket import time import network import machineled Non…...

call、bind、apply

call、bind、apply它们三个都是函数的方法&#xff0c;都可以用于改变this的指向问题。 var person "liangxiao" let obj {name:"张三",say:function() {console.log(this.name);} }obj.say(); setTimeout(function() {obj.say(); },1000) obj.say()打…...

Redis 哨兵模式 搭建

1 . 哨兵模式拓扑 与 简介 本文介绍如何搭建 单主双从 多哨兵模式的搭建 哨兵有12个作用 。通过发送命令&#xff0c;让Redis服务器返回监控其运行状态&#xff0c;包括主服务器和从服务器。 当哨兵监测到master宕机&#xff0c;会自动将slave切换成master&#xff0c;然后通过…...

客户端负载均衡与服务器端负载均衡详解

客户端负载均衡与服务器端负载均衡详解 1. 客户端负载均衡&#xff08;Client-Side Load Balancing&#xff09; 核心概念 定义&#xff1a;负载均衡逻辑在客户端实现&#xff0c;客户端主动选择目标服务实例。典型场景&#xff1a;微服务内部调用&#xff08;如Spring Cloud…...

Ningx负载均衡

Ningx负载均衡 upstream(上游)配置负载均衡1、weight&#xff08;加权轮询&#xff09;2、ip_hash&#xff08;负载均衡&#xff09;3、url hash负载均衡4、least_conn&#xff08;最小连接负载均衡&#xff09; upstream(上游)配置负载均衡 Nginx负载均衡 参考: nginx从安装…...

头歌软件工程导论UML画图题(基于starUML)

一.结构化分析方法-数据流图 本关卡需要画图的一共有5关&#xff0c;直接将此图画好每关提交一次即可&#xff0c;以下的所有图均以此方法提交 二.面向对象分析之用例图 三.面向对象分析之类图 注意此处创建Class之后&#xff0c;双击Class出现以下选项 点击相应的选项创建属性…...

智能车摄像头开源—9 动态权、模糊PID、速度决策、路径优化

目录 一、前言 二、动态权 1.概述 2.偏差值加动态权 三、模糊PID 四、速度决策 1.曲率计算 2.速度拟合 3.速度控制 五、路径 六、国赛视频 一、前言 在前中期通过识别直道、弯道等元素可进行加减速操作实现速度的控制&#xff0c;可进一步缩减一圈的运行速度&#xff…...

java基础 this和super的介绍

this和super this关键字的用法super关键字的用法this与super的区别和注意事项 this关键字的用法 this是自身的一个对象&#xff0c;代表对象本身&#xff0c;可以理解为&#xff1a;指向对象本身的一个指针 class Person{private String name;private int age;public String …...

《Python星球日记》第25天:Pandas 数据分析

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 订阅专栏&#xff1a;《Python星球日记》 目录 一、引言二、数据分组与聚合1. 分组操…...

C++在Linux上生成动态库并调用接口测试

加减乘除demo代码 项目结构 CPP/ ├── calculator.cpp ├── calculator.h ├── main.cpp 头文件 #ifndef CALCULATOR_H #define CALCULATOR_H#ifdef __cplusplus extern "C" {#endifdouble add(double a, double b);double subtract(double a, double b…...

Cesium.js(6):Cesium相机系统

Camera表示观察场景的视角。通过操作摄像机&#xff0c;可以控制视图的位置、方向和角度。 帮助文档&#xff1a;Camera - Cesium Documentation 1 setView setView 方法允许你指定相机的目标位置和姿态。你可以通过 Cartesian3 对象来指定目标位置&#xff0c;并通过 orien…...

机器学习中的数学(PartⅡ)——线性代数:概述

首先引入代数和线性代数的概念&#xff1a; 在将一些直观的、基于经验或直觉的概念转化为严格的数学或逻辑定义时&#xff0c;一种常用方法是构建一组对象和一组操作这些对象的规则&#xff0c;这就是代数。线性代数是研究向量和某些操作向量的规则。 其次从更广泛的意义上定…...

基于双闭环PID控制器的永磁同步电机控制系统匝间故障Simulink仿真

欢迎微♥关注“电击小子程高兴的MATLAB小屋”获取巨额优惠 1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2013Rb&#xff09;软件。建议采用matlab2013 Rb及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff0c;高于该版本的matlab均可正…...

在51单片机上实现平滑呼吸灯:50us定时器PWM实战指南

在51单片机上实现平滑呼吸灯:50us定时器PWM实战指南 引言 本文将详细介绍如何在51单片机平台上,通过精确的50us定时器中断实现无闪烁的呼吸灯效果。相比常见的125us实现方案,50us定时器能提供更高的PWM频率和更细腻的亮度控制。 硬件设计 基本电路配置 主控芯片:SC92F8…...

asm汇编源代码之CPU型号检测

提供1个子程序: 1. CPU型号检测 CPUTYPE 无输入参数&#xff0c;返回值AX指示CPU类型(报歉,当时最新CPU型号只有80486) 函数的返回值详细描述如下 CPUTYPE PROC  FAR ;OUT: AX01, 8086; AX02, 80286; AX03, 80386; AX04, 80486 UP; ; more source code at http://www.ahj…...

提高课:数据结构之树状数组

1&#xff0c;楼兰图腾 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm>using namespace std;typedef long long LL;const int N 200010;int n; int a[N]; int tr[N]; int Greater[N], lower[N];int lowbit(int x) {ret…...

python可变对象与不可变对象

文章目录 Python 中的可变对象与不可变对象不可变对象(Immutable Objects)可变对象(Mutable Objects)重要区别 Python 中的可变对象与不可变对象 在 Python 中&#xff0c;对象可以分为可变对象(mutable)和不可变对象(immutable)&#xff0c;这是 Python 中非常重要的概念&…...

C++学习之金融类安全传输平台项目git

目录 1.知识点概述 2.版本控制工具作用 3.git和SVN 4.git介绍 5.git安装 6.工作区 暂存区 版本库概念 7.本地文件添加到暂存区和提交到版本库 8.文件的修改和还原 9.查看提交的历史版本信息 10.版本差异比较 11.删除文件 12.本地版本管理设置忽略目录 13.远程git仓…...

果篮问题 Python

# 给你两个长度为 n 的整数数组&#xff0c;fruits 和 baskets&#xff0c;其中 fruits[i] 表示第 i 种水果的 数量&#xff0c;baskets[j] 表示第 j 个篮子的 容量。 # 你需要对 fruits 数组从左到右按照以下规则放置水果&#xff1a; # 每种水果必须放入第一个 容量大于等于 …...

Spring 是如何解决循环依赖的?

在使用 Spring 框架进行开发时&#xff0c;循环依赖是一个常见而棘手的问题。循环依赖指的是两个或多个 bean 之间的相互依赖&#xff0c;导致 Spring 容器无法正常创建这些 bean。下面将深入探讨 Spring 如何解决循环依赖问题&#xff0c;并提供一些最佳实践。 什么是循环依赖…...

部署NFS版StorageClass(存储类)

部署NFS版StorageClass存储类 NFS版PV动态供给StorageClass(存储类)基于NFS实现动态供应下载NFS存储类资源清单部署NFS服务器为StorageClass(存储类)创建所需的RBAC部署nfs-client-provisioner的deployment创建StorageClass使用存储类创建PVC NFS版PV动态供给StorageClass(存储…...

深入理解 PyTorch 的 nn.Embedding:词向量映射及变量 weight 的更新机制

文章目录 前言一、直接使用 nn.Embedding 获得变量1、典型场景2、示例代码&#xff1a;3、特点 二、使用 iou_token nn.Embedding(1, transformer_dim) 并访问 iou_token.weight1、典型场景2、示例代码&#xff1a;3、特点 三、第一种方法在模型更新中会更新其值吗&#xff1f…...

go语言内存泄漏的常见形式

go语言内存泄漏 子字符串导致的内存泄漏 使用自动垃圾回收的语言进行编程时&#xff0c;通常我们无需担心内存泄漏的问题&#xff0c;因为运行时会定期回收未使用的内存。但是如果你以为这样就完事大吉了&#xff0c;哪里就大错特措了。 因为&#xff0c;虽然go中并未对字符串…...

操作系统

操作系统 操作系统&#xff08;OperatingSystem&#xff0c;OS&#xff09;是指控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织调度计算机的工作和资源的分配&#xff1b;以提供给用户和其他软件方便的接口和环境&#xff1b;它是计算机系统中最基本的系统…...

《JVM考古现场(十八):造化玉碟·用字节码重写因果律的九种方法》

"鸿蒙初判&#xff01;当前因果链突破十一维屏障——全体码农修士注意&#xff0c;《JVM考古现场&#xff08;十八&#xff09;》即将渡劫飞升&#xff01;" 目录 上卷阴阳交缠 第一章&#xff1a;混沌初开——JVM因果律的量子纠缠 第二章&#xff1a;诛仙剑阵改—…...

【2】k8s集群管理系列--包应用管理器之helm(Chart语法深入应用)

一、Chart模板&#xff1a;函数与管道 常用函数&#xff1a; • quote&#xff1a;将值转换为字符串&#xff0c;即加双引号 • default&#xff1a;设置默认值&#xff0c;如果获取的值为空则为默认值 • indent和nindent&#xff1a;缩进字符串 • toYaml&#xff1a;引用一…...

汇编获取二进制

mov_.S mov %r8d,0 nop执行命令&#xff1a; gcc -c mov_.S 会输出 mov_.o 文件&#xff1a;objdump -D mov_.o : mov_.o&#xff1a; 文件格式 elf64-x86-64Disassembly of section .text:0000000000000000 <.text>:0: 44 89 04 25 00 00 00 mov %r8d,0x0…...

《嵌套调用与链式访问:C语言中的函数调用技巧》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 一、嵌套调用&#xff08;一&#xff09;定义&#xff08;二&#xff09;实现方式&#xff08;三&#xff09;优点&#xff08;四&#xff09;缺点 二、链式…...