Git--使用教程
Git的框架讲解
Git 是一个分布式版本控制系统,其架构设计旨在高效地管理代码版本,支持分布式协作,并确保数据的完整性和安全性。
Git 的核心组件:
- 工作区(Working Directory): - 作区是你在本地计算机上实际操作的目录,包含了项目的所有文件。 - 工作区中,你可以编辑、删除或添加文件。
- 暂存区(Staging Area): - 存区是一个中间区域,用于暂时保存你对文件所做的修改,等待提交到本地仓库。 - 你使用
git add
命令时,修改的文件会被添加到暂存区。 - 本地仓库(Local Repository): - 地仓库是一个隐藏的
.git
目录,存储了项目的版本历史和配置信息。 - 本地仓库中,Git 会记录每次提交的快照,以及分支、标签等信息。 - 远程仓库(Remote Repository): - 程仓库是托管在服务器上的 Git 仓库,用于团队协作和代码共享。 - 见的远程仓库托管服务包括 GitHub、GitLab 和 Bitbucket 等。
Git 的工作流程:
- 克隆仓库: - 用
git clone
命令从远程仓库复制一份完整的项目到本地,包括所有的版本历史。 - 在工作区修改文件: - 本地工作区中编辑、添加或删除文件。
- 将修改添加到暂存区: - 用
git add
命令将修改的文件添加到暂存区,准备提交。 - 提交到本地仓库: - 用
git commit
命令将暂存区的修改提交到本地仓库,形成一个新的版本快照。 - 推送到远程仓库: - 用
git push
命令将本地仓库的提交推送到远程仓库,供团队成员共享。 - 拉取远程仓库的修改: - 用
git pull
命令从远程仓库拉取最新的修改,并与本地仓库合并。
Git 的数据存储结构:
- 对象(Objects):
- Git 使用对象来存储数据,主要包括:
- 提交对象(Commit): 录项目的历史版本信息。
- 树对象(Tree): 示目录结构。
- 文件对象(Blob): 示文件内容。
- 标签对象(Tag): 于标记特定的提交点。
- Git 使用对象来存储数据,主要包括:
- 有向无环图(DAG): - it 使用有向无环图来表示提交历史,每个提交对象指向其父提交对象,形成一个有向无环图结构。
- 分支(Branches): - 支是指向提交对象的指针,允许在不同的开发线中并行工作。 - 认的主分支通常命名为
master
或main
。
Git 的优势:
- 分布式架构:
- 每个开发者的本地仓库都是完整的版本库,支持离线工作和分布式协作。
- 高效的分支和合并:
- Git 的分支操作非常轻量级,创建和切换分支速度快,合并操作也非常高效。
- 数据完整性:
- Git 使用 SHA-1 哈希算法来标识对象,确保数据的完整性和一致性。
- 灵活的工作流:
- Git 支持多种工作流,如集中式工作流、功能分支工作流、GitFlow 工作流等,满足不同团队的需求。
过以上架构设计,Git 实现了高效、灵活且安全的版本控制,广泛应用于软件开发和协作中。
Git的使用
一、基础配置
1. 首次使用 Git 的配置
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global core.editor "vim" # 设置默认编辑器
git config --global credential.helper store #保存
git config --list # 查看所有配置
2. 生成 SSH 密钥(用于远程仓库认证)
ssh-keygen -t ed25519 -C "your_email@example.com" # 生成密钥
cat ~/.ssh/id_ed25519.pub # 复制公钥到 GitHub/GitLab
详情可以查看这篇博文:git --SSH配置(免秘钥登录)
二、本地仓库操作
本地仓库由工作区,暂存区,本地仓库三个部分组成
1. 创建仓库
git init # 初始化新仓库
git clone <url> # 克隆远程仓库(自动创建 origin 远程)
2. 文件状态管理
查看状态
git status # 查看工作区/暂存区状态
比较差异
git diff #1.查看更新的详细信息命令#2.比较工作区和暂存区的差异
git diff HEAD #比较工作区和版本库之间的差异
git diff cached #比较暂存区和版本库之间的差异
git diff ID1 ID2 #比较两个特定版本之间的差异
git diff HEAD~3 HEAD file3.txt #查看指定文件的差异内容
添加文件到暂存区
git add <file> # 添加单个文件到暂存区
git add . # 添加所有修改到暂存区
删除文件
rm <file> #删除工作区文件
git add <file> #将删除后的工作区与暂存区同步git rm <file> #删除暂存和工作区文件
git rm --cached <file> #将版本库中的文件删除
git reset <file> # 从暂存区移除文件(保留工作区修改)
git restore <file> # 丢弃工作区修改(Git 2.23+)
忽略文件 (对已经添加到版本库中的文件没用) .gitignore
(1)忽略某些文件类型
如果你想忽略某些特定类型的文件,比如编译生成的二进制文件或者日志文件,可以使用通配符 *
。
示例:
- 忽略所有
.log
文件:*.log
- 忽略所有
.class
文件(Java 编译生成的文件):*.class
- 忽略所有
.o
和.a
文件(C/C++ 编译生成的文件):*.o *.a
(2) 忽略目录
你可以通过指定目录名来忽略整个目录。
示例:
-
忽略
build/
目录(常见于构建后的产物):build/
-
忽略
dist/
目录(通常用于存放打包后的文件):dist/
(3) 忽略特定文件
你可以通过指定文件的相对路径来忽略特定的文件。
示例:
-
忽略
secret.txt
文件:secret.txt
-
忽略
config/config.json
文件:config/config.json
(4) 忽略 IDE 和编辑器配置文件
很多 IDE 和编辑器(如 VSCode、IntelliJ、Sublime Text)会生成一些配置文件,这些文件通常不需要提交到 Git 仓库中。
示例:
- 忽略 VSCode 配置文件:
.vscode/
3. 提交更改到版本库
git commit -m "提交描述" # 提交暂存区内容
git commit -am "提交描述" # 自动添加修改文件并提交(不包含新文件)
git commit --amend # 修改最近一次提交(可修改描述或追加文件)
三、分支管理
1. 基础分支操作
git branch # 查看本地分支
git branch <分支名> # 创建新分支
git switch <分支名> #切换分支
git checkout <分支名> # 切换分支,恢复文件(可能存在歧义)
git checkout -b <分支名> # 创建并切换分支(常用)
git branch -d <分支名> # 删除已合并的分支
git branch -D <分支名> # 强制删除未合并分支
2. 合并与冲突解决
git merge <分支名> # 合并指定分支到当前分支
git merge --abort # 终止合并(冲突时)
git rebase <分支名> # 变基操作(线性历史)
git rebase --abort # 终止变基
解决合并冲突流程:
- 用编辑器打开冲突文件(搜索
<<<<<<<
) - 手动修改保留需要的代码
- 删除冲突标记
- 执行
git add <冲突文件>
- 完成合并:
git commit
四、远程仓库操作
1. 关联远程仓库
git remote add origin <url> # 添加远程仓库(命名为 origin)
git remote -v # 查看远程仓库地址
git remote remove origin # 删除远程仓库
2. 推送与拉取
git push -u origin main # 首次推送并设置上游分支
git push # 后续推送(自动关联上游分支)
git pull # 拉取并合并(= git fetch + git merge)
git fetch # 仅获取远程更新(不自动合并)
3. 远程分支管理
git push origin --delete <分支名> # 删除远程分支
git checkout -b <本地分支> origin/<远程分支> # 基于远程分支创建本地分支
五、撤销与历史修改
1. 撤销工作区修改
git checkout HEAD -- <file> # 用最新提交覆盖工作区文件
git restore --staged <file> # 取消暂存(Git 2.23+)
2. 重置提交历史
git reset --soft HEAD~1 # 撤销提交但保留修改在暂存区
git reset --mixed HEAD~1 # 撤销提交并取消暂存(默认)
git reset --hard HEAD~1 # 彻底丢弃最近一次提交的所有修改
3. 回滚提交
git revert <commit-hash> # 创建反向提交来撤销指定提交
六、标签管理
git tag # 查看所有标签
git tag v1.0.0 # 创建轻量标签
git tag -a v1.0.0 -m "描述" # 创建附注标签
git push origin --tags # 推送所有标签到远程
git checkout v1.0.0 # 切换到标签版本
七、高级功能
1. 储藏(Stash)临时修改
git stash # 储藏当前工作区修改
git stash list # 查看储藏列表
git stash apply # 恢复最新储藏(保留储藏记录)
git stash pop # 恢复并删除最新储藏
git stash drop stash@{0} # 删除指定储藏
2. 查看历史
git log --oneline # 简洁历史记录
git log -p # 显示具体修改内容
git log --graph # 图形化分支历史
git blame <file> # 查看文件每行修改者
3. 子模块(Submodule)
git submodule add <url> <path> # 添加子模块
git submodule update --init # 初始化子模块
八、常用工作流示例
1. 日常开发流程
git checkout -b feature/new-login # 创建特性分支
# 修改代码...
git add .
git commit -m "实现登录功能"
git push origin feature/new-login
# 在 Git 平台创建 Pull Request
2. 紧急修复线上 Bug
git checkout main
git pull
git checkout -b hotfix/header-bug
# 修复代码...
git commit -m "修复页头布局问题"
git checkout main
git merge hotfix/header-bug
git push
注意事项
- 慎用
--force
:强制推送可能覆盖他人工作 - 重要操作前备份:复杂操作前先
git stash
或创建临时分支 - 保持提交原子性:每个提交只做一件事,描述清晰
- 定期清理分支:删除已合并的废弃分支
遇到问题时,多用 git status
查看状态,善用 git reflog
找回误删内容。
我误以为命运掌握在别人手里,而没有意识到我可以为自己的人生执笔。 —塞巴斯蒂安·巴里
相关文章:
Git--使用教程
Git的框架讲解 Git 是一个分布式版本控制系统,其架构设计旨在高效地管理代码版本,支持分布式协作,并确保数据的完整性和安全性。 Git 的核心组件: 工作区(Working Directory): - 作区是你在本…...
【HTML性能优化】提升网站加载速度:GZIP、懒加载与资源合并
系列文章目录 01-从零开始学 HTML:构建网页的基本框架与技巧 02-HTML常见文本标签解析:从基础到进阶的全面指南 03-HTML从入门到精通:链接与图像标签全解析 04-HTML 列表标签全解析:无序与有序列表的深度应用 05-HTML表格标签全面…...
C#从XmlDocument提取完整字符串
方法1:通过XmlDocument的OuterXml属性,见XmlDocument类 该方法获得的xml字符串是不带格式的,可读性差 方法2:利用XmlWriterSettings控制格式等一系列参数,见XmlWriterSettings类 例子: using System.IO; …...
wordpress每隔24小时 随机推荐一个指定分类下的置顶内容。
在WordPress中实现每隔24小时随机推荐一个指定分类下的置顶内容,可以通过以下步骤实现: 1. 创建自定义函数 在主题的functions.php文件中添加以下代码,用于创建一个定时任务,每隔24小时随机选择一个置顶文章并存储到选项中&…...
《chatwise:DeepSeek的界面部署》
ChatWise:DeepSeek的界面部署 摘要 本文详细描述了DeepSeek公司针对其核心业务系统进行的界面部署工作。从需求分析到技术实现,再到测试与优化,全面阐述了整个部署过程中的关键步骤和解决方案。通过本文,读者可以深入了解DeepSee…...
HTTP请求响应周期步骤
一个典型的 HTTP 请求/响应周期 从建立连接开始,经过客户端向服务器发送请求、服务器处理请求并返回响应,最终关闭连接。这个过程可以分为多个阶段,以下是详细的步骤: 一、建立连接(TCP连接) 客户端发起连接请求:在HTTP通信中,客户端通常是浏览器,首先通过 DNS 查询…...
synchronized, volatile 在 DCL 的作用
背景 最近在看设计模式,在单例模式的 Double Check Lock(DCL)中,存在两个关键字:volatile & synchronized。 之前都知道 DCL 怎么写,直接套娃。但是这两关键字在单例里面的作用还没深究过,…...
Java进阶笔记(中级)
-----接Java进阶笔记(初级)----- 目录 集合多线程 集合 ArrayList 可以通过List来接收ArrayList对象(因为ArrayList实现了List接口) 方法:接口名 柄名 new 实现了接口的类(); PS: List list new ArrayList();遍历…...
人生总有终点,不必好高骛远
夕阳西下,我漫步在河堤上。河水缓缓流淌,倒映着天边最后一抹晚霞。岸边垂柳依依,枝条轻拂水面,荡起一圈圈涟漪。这涟漪由近及远,渐渐消散在暮色中,如同我们每个人在时间长河中泛起的微澜。 记得年少时&…...
C#中堆和栈的区别
C#中的堆(Heap)和栈(Stack)详解 基本概念 栈(Stack) 栈是一个后进先出(LIFO)的内存结构由系统自动分配和释放存储空间连续,大小固定主要用于存储值类型和对象引用 堆…...
如何利用i18n实现国际化
1.首先新建i18.js文件 // i18n配置 import { createI18n } from vue-i18n // import ElementPlus from element-plus import zhCn from element-plus/es/locale/lang/zh-cn import zh from ./zh-cn import en from ./en import ru from ./ru const messages {en_US: {...en,//…...
SpringMVC响应
第一章:数据处理及跳转 1. 结果跳转方式 ①.ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 . <bean id"templateResolver" class"org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolv…...
深入理解特征值与稳定性密码:以弹簧 - 质量 - 阻尼典型二阶系统为例
从看特征值决定稳定性的原因 摘要 本文以弹簧 - 质量 - 阻尼系统这一典型二阶系统为研究对象,深入剖析特征值决定系统稳定性的内在原因。通过详细的数学推导和直观的物理意义阐释,全面揭示了特征值与系统稳定性之间的紧密关联,为理解和分析…...
python pandas 读取合并单元格并保留合并信息
读取合并单元格并保留合并信息 当我们只是使用 pandas 的 read_excel 方法读取 Excel 文件时,我们可能会遇到一个很棘手的问题:合并单元格的信息将会丢失,从而导致我们的数据出现重复或缺失的情况。 在本篇文章中将介绍使用 pandas 正确地读…...
Go-Gin Web 框架完整教程
1. 环境准备 1.1 Go 环境安装 Go 语言(或称 Golang)是一个开源的编程语言,由 Google 开发。在开始使用 Gin 框架之前,我们需要先安装 Go 环境。 安装步骤: 访问 Go 官网下载页面:https://golang.org/dl…...
机器学习专业毕设选题推荐合集 人工智能
目录 前言 毕设选题 开题指导建议 更多精选选题 选题帮助 最后 前言 大家好,这里是海浪学长毕设专题! 大四是整个大学期间最忙碌的时光,一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整理…...
Java程序员 面试如何介绍项目经验?
项目经历是面试过程中重点问的,但是很多人在回答的时候往往会有问题: 重点是介绍项目,而忽略了个人的经历。 经历是你做了什么、你怎么做的、做完后的结果。例如:项目中的哪些部分是你做的?你是不是核心人员…...
YONBIP后端环境搭建-IDEA
1、IDEA环境搭建 1.1、插件安装 打开设置窗口,添加自定义插件存储库路径。 https://nccdev.yonyou.com/ide/idea/latest/updatePlugin.xml 在 Marketplace 中搜索 YonBuilder Premium开发者工具 ,点击安装。 1.2、Home配置 点击Home配置按钮…...
Java 微服务实用指南(一)
Java 微服务:基础 要真正理解 Java 微服务,就必须从最基本的东西开始:为人诟病的 Java 大型单体应用是什么,它的优点和缺点是什么。 什么是 Java 大型单体应用? 假设你正在为一家银行或一家金融科技初创公司工作。你为…...
Windows图形界面(GUI)-QT-C/C++ - QT Frame
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 一、概述 二、使用场景 1. 分隔内容区域 2. 装饰性边框 3. 自定义控件容器 三、常见样式 1. 框架形状(Shape) 2. 框架阴影(Shadow)…...
优选算法合集————双指针(专题二)
好久都没给大家带来算法专题啦,今天给大家带来滑动窗口专题的训练 题目一:长度最小的子数组 题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …...
WebSocket协议里客户端发送给服务器的数据会用4字节的掩码循环异或的分析
首先,我需要回顾WebSocket协议中对掩码处理的具体要求。根据RFC 6455,客户端发送到服务器的帧必须使用掩码,而服务器发送的帧不需要掩码。掩码是4字节的,应用于有效载荷数据,每个字节依次与掩码的对应字节异或…...
【字节青训营-9】:初探字节微服务框架 Hertz 基础使用及进阶(下)
本文目录 一、Hertz中间件Recovery二、Hertz中间件跨资源共享三、Hertz 响应四、Hertz请求五、Hertz中间件Session 一、Hertz中间件Recovery Recovery中间件是Hertz框架预置的中间件,使用server.Default()可以默认注册该中间件,为Hertz框架提供panic回复…...
新版AndroidStudio 修改 jdk版本
一、问题 之前,在安卓项目中配置JDK和Gradle的过程非常直观,只需要进入Android Studio的File菜单中的Project Structure即可进行设置,十分方便。 如下图可以在这修改JDK: 但是升级AndroidStudio之后,比如我升级到了Android Stu…...
cocos spine执行动画报错Cannot read properties of null (reading ‘data‘)
cocos v3.8.3 当想this.spine.setAnimation(0, "action1", false);播放spine动画时报错↓ 解决方法一: 在setAnimation之前调用this.spine.__preload() 解决方法二: 不要让spine或其父节点通过active显隐...
笔记:新能源汽车零部件功率级测试怎么进行?
摘要:本文旨在梳理主机厂对新能源汽车核心零部件功率级测试需求,通过试验室的主流设备仪器集成,快速实现试验方案搭建,并体现测试测量方案的时效性、便捷性优势。目标是通过提升实现设备的有效集成能力、实现多设备测试过程的有效协同、流程化测试,可快速采集、分析当前数…...
【starrocks学习】之将starrocks表同步到hive
目录 方法 1:通过HDFS导出数据 1. 将StarRocks表数据导出到HDFS 2. 在Hive中创建外部表 3. 验证数据 方法 2:使用Apache Spark同步 1. 添加StarRocks和Hive的依赖 2. 使用Spark读取StarRocks数据并写入Hive 3. 验证数据 方法 3:通过…...
Linux提权--SUDO提权
sudo 是 Linux 中常用的特权管理工具,允许普通用户以其他用户(通常是 root 用户)的身份运行命令。如果配置不当,攻击者可能通过滥用 sudo 权限来提升自己的权限。 一.常见的 sudo 提权方法: 误配置的 sudo 权限&…...
【AIGC提示词系统】基于 DeepSeek R1 + Claude 的新年运势占卜系统设计与实现
提示词在最下方 DeepSeek R1调试了整体的提示词,使用Claude进行渲染 引言 在人工智能与传统文化交融的今天,如何让 AI 充分理解并传递东方玄学文化的精髓,成为一个极具挑战性的课题。本文将详细介绍一个基于 Claude 的新年运势占卜系统的设计…...
11. Global Object 全局对象的使用
Global Object 全局对象 1 引言2 制作全局对象3 调用全局对象4 扩展使用1 引言 全局对象适用于大量重复的对象,比如阀门,电机等,如果这些设备的基本逻辑与状态都是一样的,那么就可以使用全局对象的方法来做HMI,省时省力。并且在后期修改的时候只需要修改全局对象即可。 …...
Java synchronized锁升级
偏向锁、轻量级锁和重量级锁是Java中synchronized关键字的三种锁状态,用于优化多线程环境下的性能。以下是它们的简要说明: 1. 偏向锁(Biased Locking) 目的:减少无竞争时的锁开销。适用场景:只有一个线程…...
【Hadoop】Hadoop的HDFS
这里写目录标题 HDFS概述HDFS产出背景及定义HDFS产生背景HDFS定义 HDFS优缺点HDFS优点HDFS缺点 HDFS组成架构HDFS文件块大小 HDFS的Shell操作常用命令实操准备工作上传下载HDFS直接操作 HDFS的API操作客户端环境准备HDFS的API案例实操HDFS文件上传HDFS文件下载HDFS文件更名和移…...
JAVA异步的TCP 通讯-客户端
一、客户端代码示例 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousSocketChannel; import java.nio.channels.CompletionHandler; import java.util.concurrent.ExecutorService; impo…...
4.回归与聚类算法 4.1线性回归
4.1.1 线性回归的原理 1 线性回归应用场景: 房价预测 销售额度预测 金融:贷款额度预测,利用线性回归以及系数分析因子 2 什么是线性回归 1) 定义:利用回归方程(函数)对一个或者多个自变量…...
联想拯救者开机进入bios
如果你的联想拯救者(Lenovo Legion)笔记本电脑开机后直接进入 BIOS 设置界面,可能是以下原因之一导致的。以下是解决方法: 1. 检查启动顺序 进入 BIOS 后,找到 Boot(启动)选项卡。检查启动顺序…...
【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(四)
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:贪心算法篇–CSDN博客 文章目录 前言例题1.合并区间2.无重叠的区间3.用最少数量的箭引爆气球…...
Junit5使用教程(3)
第三部分:JUnit 5 进阶 3. 动态测试 一、动态测试是什么? 动态测试(Dynamic Test)允许在运行时生成测试用例,而不是在编译时通过 Test 静态定义。它通过 TestFactory 注解标记的方法动态生成一组测试用例࿰…...
WPS中解除工作表密码保护(忘记密码)
1.下载vba插件 项目首页 - WPS中如何启用宏附wps.vba.exe下载说明分享:WPS中如何启用宏:附wps.vba.exe下载说明本文将详细介绍如何在WPS中启用宏功能,并提供wps.vba.exe文件的下载说明 - GitCode 并按照步骤安装 2.wps中点击搜索,输入开发…...
通向AGI之路:人工通用智能的技术演进与人类未来
文章目录 引言:当机器开始思考一、AGI的本质定义与技术演进1.1 从专用到通用:智能形态的范式转移1.2 AGI发展路线图二、突破AGI的五大技术路径2.1 神经符号整合(Neuro-Symbolic AI)2.2 世界模型架构(World Models)2.3 具身认知理论(Embodied Cognition)三、AGI安全:价…...
kamailio-osp模块
该文档详细讲解了如何在Kamailio中配置和使用OSP模块(Open Settlement Protocol Module),以实现基于ETSI标准的安全多边对等互联(Secure Multi-Lateral Peering)。以下是核心内容的总结: 1. 模块功能 OSP模…...
【Linux网络编程】:URL(encode),HTTP协议,telnet工具
🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 Linux网络编程笔记: https://mp.csdn…...
SpringMVC SpringMVC响应 一、数据处理及跳转
1. 结果跳转方式 ①.ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 <bean id"templateResolver" class"org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver"><property name"p…...
C++SLT(三)——list
目录 一、list的介绍二、list的使用list的定义方式 三、list的插入和删除push_back和pop_backpush_front和pop_frontinserterase 四、list的迭代器使用五、list的元素获取六、list的大小控制七、list的操作函数sort和reversemergeremoveremove_ifuniqueassignswap 一、list的介…...
基于Coze平台实现抖音链接提取文案转小红书文案的智能体开发全流程解析
文章目录 引言:跨平台内容运营的AI解法实例最终效果1. 平台特性对比与转化需求分析1.1 用户画像与内容风格对比1.2 文案转化核心需求2. Coze平台技术架构解析2.1 Coze核心能力矩阵2.2 关键技术组件选型3. 智能体工作流设计3.1 完整处理流程3.2 关键节点说明4. 核心模块实现详解…...
32. 最长有效括号
动态规划 dp[i]表示以i下标为结尾的最长有效括号的长度,取dp[i]中的最大值即可。 i从1开始判断,只有s[i])才需要判断: 如果s[i-1](,那么dp[i]dp[i-2]2,注意判断i-2的范围否则,如果dp[i-1]>0࿰…...
Linux常见问题解决方法--2
如何反爬 后台对访问进行统计,如果单个 IP 访问超过阈值,予以封锁 后台对访问进行统计,如果单个 session 访问超过阈值,予以封锁 后台对访问进行统计,如果单个 userAgent 访问超过阈值,予以封锁 以上的组…...
STM32H7和F7 主要区别
STM32H7和F7系列是STMicroelectronics推出的高性能ARM Cortex-M微控制器系列,二者在性能、外设和用途上有显著区别。以下是它们的主要区别: 1. 内核与性能 STM32H7: 内核:Cortex-M7(单核或双核,部分型号带…...
软件测试丨PyTorch 图像目标检测
随着人工智能和机器学习的飞速发展,图像目标检测技术在各个领域扮演着越来越重要的角色。无论是在安防监控、自动驾驶车辆,还是在医疗影像分析和智能家居中,图像目标检测都发挥着不可或缺的作用。今天,我们将深入探讨其中一种热门…...
利用TensorFlow.js实现浏览器端机器学习:一个全面指南
引言 随着深度学习技术的不断发展,机器学习已从传统的服务器端运算逐渐转向了前端技术。TensorFlow.js 是 Google 推出的一个用于在浏览器中进行机器学习的开源库,它允许开发者在浏览器中直接运行机器学习模型,而无需依赖后端服务器。Tensor…...
全流程安装DeepSeek开源模型
目录 安装Ollama选择大模型安装大模型对话备注 安装Ollama 安装DeepSeek首先需要安装一个Ollama,这个软件相当于运行DeepSeek模型的底层,没有这个底层就没办法跑DeepSeek AI模型。 下载地址: https://ollama.com/点击下载windows版本&…...