【Git版本控制器--3】Git的远程操作
目录
理解分布式版本控制系统
创建远程仓库
仓库被创建后的配置信息
克隆远程仓库
https克隆仓库
ssh克隆仓库
向远程仓库推送
拉取远程仓库
忽略特殊文件
为什么要忽略特殊文件?
如何配置忽略特殊文件?
配置命令别名
标签管理
理解标签
标签操作
理解分布式版本控制系统
为什么要有分布式版本控制系统?
在之前的文章中,我们已经对Git的使用有了一个认知,但我们之前的git操作全部都是对本地仓库的管理,不管是分支管理还是基本操作...
本地仓库是保存在一台服务器中的。这意味着,假设你需要与你的同事一块进行多人开发,那么你和你的同事需要围在一台电脑上进行开发,那么这样子的开发不仅仅不会提高开发效率,甚至在某些情况下会降低开发效率!
所以我们需要有方式能够让你和你的同事在不同的电脑上拿到同一个仓库的内容,而在git中,分布式版本控制系统完美做到了!
什么是分布式版本控制系统?
在还没有分布式版本控制系统时,你需要与你的同事进行多人开发,那么其实也有方案:
你可以把你的本地仓库,原封不动的拷贝给你的同事,你的同事也可以把他的本地仓库原封不动的拷贝给你!这样就实现了不同主机之间可以拿到同一个仓库!
这种方案与本地仓库相比带来了好处:当你的本地仓库因为某些突发情况丢失时,你的同事那还有备份,提高了安全性!
但这种方案也有着一些问题:
- 直接进行拷贝相对比较麻烦
- 当你的同事因为某些原因,例如:生病了,离职了...时,你无法拿到你同事的本地仓库。这就带来了局限性
基于上述原因,我们不考虑这种将本地仓库直接拷贝的方案
第二种解决方案:
创建一个中央服务器。中央服务器的仓库中保存着项目的内容。中央服务器把你和你同事的电脑进行连接,这意味着你和你的同事可以在自己的计算机上对中央服务器仓库中的内容进行克隆。这样,你们能拿到同一个仓库!
当你对仓库的内容进行了修改时,你把你的修改完的仓库内容上传到中央服务器中,这个动作我们称之为推送!
当你需要拿到你同事的修改内容时,直接把中央服务器中你同事的仓库内容拿到本地,这个动作我们称之为拉取!
这种方案解决了第一种方案所产生的各种问题!这一套体系是集中式版本控制系统,即包含图中所有电脑的本地仓库与中央服务器仓库构成的一套系统!而git所提供的分布式版本控制系统的基础就是集中式版本控制系统,它包含了集中式版本控制系统的所有优点,但提供了比起这种方案更强大、更灵活的多人协作开发功能!
若我们维护一个仓库时,还需要手动架构一台中央服务器,那么成本是巨大的!
所以很多网站为我们提供了中央服务器的功能,例如github、码云...(后续用码云)
我们可以把自己的本地仓库推送到这些网站中,别人也能从这些网站中拉取我们的仓库,实现了多人协作的功能!所以这些网站充当的相当于中央服务器的角色
创建远程仓库
当我们注册并登录上码云后,如下步骤:
仓库名称是必填项,并且仓库名称尽量与它的内容相对应!
仓库被创建后的配置信息
ReadMe文件模板
ReadMe文件模板:当勾选该选项时,创建仓库后会自动生成一个ReadMe文件,ReadMe文件用于对该仓库的说明。自动生成的ReadMe文件有中英文两个版本
实际上,ReadMe文件就相当于一个使用说明书一样的东西!
成员管理
仓库成员管理:在仓库页面的右上方可以对仓库的成员进行管理!说明一个仓库是能进行多人开发的
如下为git手册中对成员身份的描述:
Issue文件
通过git对成员身份的描述可以发现,每一个成员都能创建一个名为Issue的东西
实际上Issue就是对该仓库中的某个事件进行描述的,比如说bug之类的!每一个人都能提交自己的Issue,并通知仓库管理员来解决
若在创建仓库时勾选了Issue模板文件,则新建Issue时如下:
新增Issue时有一些配置选项:
- 负责人:该问题你需要通知谁来解决!
- 标签:该Issue描述的是什么事件,可以填例如bug,duplicate...
- 分支:你描述的问题是在哪个分支下发现的
- .....
如下为创建好一个Issue时的样子:
当该问题被解决时,记得对Issue设置为已完成状态
Pull Request文件
我们都知道,当一个分支的内容写完了,那么它需要合并到master分支上。
但不是什么内容都能被合并到master分支上的,假设你的代码中存在了很多bug,合并到master分支上,导致线上运行环境崩溃,那么就gg了。
但不是每一个开发人员都了解这些的,所以需要有硬性要求约束开发人员。
所以在合并之前,你需要询问仓库的管理员是否可以合并,若管理员同意,那么你才能进行合并操作!
如何询问?提交一份Pull Request请求给管理员!
若在创建仓库时勾选了Pull Request文件模板,那么会在仓库中生成如下文件
这份文件是给开发人员看的,要求开发人员在提交Pull Request时的格式
如何提交一份Pull Request?
克隆远程仓库
克隆远程仓库的协议有两个
- https协议
- SSH协议
区别:
- SSH克隆:使用SSH(Secure Shell)协议进行克隆,该协议通过加密技术保护数据传输过程中的机密性和完整性,防止数据被窃取或篡改。同时,SSH协议使用公钥加密技术进行身份验证,进一步增强了安全性,可以防止密码被盗取或猜测。
- HTTP克隆:通过HTTP或HTTPS协议进行克隆,虽然HTTPS也提供了加密通信,但在身份验证方面相对较弱,通常依赖于用户名和密码进行验证,这可能存在被暴力破解或泄露的风险。
- 总而言之SSH克隆比起https克隆更加安全
https克隆仓库
复制完https的地址时,可以使用如下指令在Linux中克隆一份仓库:
git clone [远程仓库地址(https)]
注意:不要在本地仓库下直接进行clone操作,因为clone也会生成一份.git版本库,直接克隆会导致本地仓库下的.git被覆盖!
此时本地和远程仓库之间的结构图如下:
clone完以后会在本地生成一个对应的本地仓库!
origin表示远程仓库默认名称
查看远程仓库名称:(必须在仓库的工作区下)
git remote
查看更详细的信息可以使用-v选项
使用-v选项会出现两个地址,与其相对应的权限
图上的内容为,我既有对远程仓库的拉取权限又有远程仓库的推送权限
ssh克隆仓库
SSH协议使用公钥加密技术进行身份验证。在配置SSH克隆时,用户需要在本地生成SSH密钥对,并将公钥添加到Git托管服务上。这样,在克隆仓库时,Git托管服务会使用公钥来验证用户的身份,确保只有授权的用户才能访问和克隆仓库。
如何配置公钥
第一步:
第二步:
第三步:填写公钥信息即可完成公钥的配置
标题:可以按照自己喜欢的设置
接下来的重点是获取我们本地服务器的公钥
获取本地服务器的公钥
第⼀步:创建SSH Key。在用户主⽬录下,看看有没有.ssh⽬录,如果有,再看看这个⽬录下有没有 id_rsa 和 id_rsa.pub 这两个⽂件,如果已经有了,可直接跳到下⼀步。如果没有,需要创建 SSH Key:
创建SSH Key:
ssh-keygen -t rsa -C "[邮箱]"
输入完上述指令后一路回车即可!
注意:邮箱必须与我们在码云上配置的邮箱相同
经过配置之后,我们的家目录下就有了ssh文件,里面保存着公钥(id_rsa)和私钥(id_rsa.pub)
第二步:查看id_rsa.pub内容,并把查看到的内容复制到码云的公钥配置项上
弹出如下页面表示配置成功
ssh克隆仓库
配置好公钥以后,我们就可以使用ssh的方式进行克隆了。流程几乎与https一样,如下步骤:
第一步:
第二步:
第三步:在Linux下输入如下指令
git clone [复制的内容]
向远程仓库推送
向远程仓库推送的整个过程:
- 在工作区中对代码完成修改
- 通过add操作把修改内容添加到暂存区
- 通过commit操作把修改内容添加到master分支
- 把master分支修改内容推送到远程仓库,即push操作
根据图中我们可以看出,实际上push操作是分支与分支之间的交互,即本地仓库中的master分支推送到远程仓库中的master分支,这两个分支不是同一个分支!
push操作对应指令:
git push [远程仓库名] [本地分支名]:[远程分支名]
若本地分支名与远程分支名一致,那么可以把远程分支名进行省略
注意:若采用的是ssh的方式进行push操作,那么无需输入用户名和密码,若是https的方式则需要输入用户名和密码!
拉取远程仓库
什么场景下需要拉取远程仓库?
假设你和你的同事一起开发了一个产品,并推送到了远程仓库中,此时你的仓库、你同事的仓库、远程仓库中该产品的版本都是version0版
突然某一天,你的同事开发了一个新的功能,此时你的同事的产品版本更新成了version1版,它把它的version1版的代码推送到了远程仓库中,远程仓库中产品的版本也变为了version1版,但你的仓库里面的版本是version0版,若你也需要拿到这个version1版,你就需要拉取远程仓库中的version1版本的代码!
如何拉取?
拉取远程仓库中的内容:
git pull [远程仓库名] [本地分支名]:[远程分支名]
注意:pull不仅仅是拉取了远程仓库中的内容,而且还把拉取得内容与本地分支进行合并!
与push一样,若我们的本地分支名和远程分支名一样,那么远程分支名可以省略!
案例演示
为了方便演示,我使用码云平台提供的代码编辑功能手动更新代码,如下方法:
修改后:
注意:实际开发中,不要手动编辑代码!
之后远程仓库中的代码被修改,我们在Linux中使用pull操作拉取远程仓库的内容
忽略特殊文件
为什么要忽略特殊文件?
在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎么让Git知道呢?在Git⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件 名填进去,Git就会⾃动忽略这些⽂件了。
有人可能会说,假设是不想让配置文件进行提交,那么我们在add的时候不添加这些配置文件不就可以了吗?
实际上,这种方法硬要说的话也行!但在我们实际开发中,我们一般一次开发修改的是十几个文件,你难道要一个一个add吗?我们常用的方式是git add . 把当前目录所有修改内容都add。但若你add时恰好有一个配置文件被修改了,那不就上传到git了吗?
如何配置忽略特殊文件?
在我们创建的时候有一个.gitignore模板,我们如果勾选了的话直接修改里面的内容就可以了!
但若我们没有勾选也没关系,我们直接在工作区创建一个.gitignore即可
接下来的问题是,.gitignore中的内容我们如何设置呢?
忽略某个特殊文件
假设我们想忽略某一个特殊文件,我们直接直接在.gitignore中把该文件的文件名添加到.gitignore中
上图中,由于file.abc被ignore了,我们无法添加该文件
忽略某一类特殊文件
除了忽略某一个特殊文件以外,我们还可以忽略一类文件,例如.efg结尾的文件,把*.efg添加到.gitignore中即可
我们在日常开发中,肯定不会这样指定一个被忽略的文件,一般都是被忽略的文件和要上传的文件放到一起,那么此时git不会提示,而是自动把被忽略的文件不放到暂存区,未被忽略的文件放到暂存区中
可以看到,只有file.txt被推送到了远程仓库中,而file.abc和file.efg都被忽略了
不忽略某个特殊文件
注意:若我们想要强制添加被忽略的文件,可以在add时带上-f选项即可,
当然,若是add时带上-f选项,显然破坏了.gitignore的忽略规则,所以一般不建议这样使用,我们若只是想add一个特殊的文件,假设这个特殊的文件是test.abc,那么把!test.abc添加进.gitignore,此时就不会忽略这一个文件!
可以看到test.abc被成功添加到了暂存区中!
.gitignore文件内容非常多,查看被忽略原因所在的行数
接下来的场景是假设你的.gitignore中的内容已经非常多了,你不知道具体忽略了哪些文件,git提供了方法可以让你查看到该文件被忽略原因在.gitignore中的第几行
查看被忽略的原因所在的地方:
git check-ignore -v [文件名]
如图中,查看到file.efg被忽略原因是因为.gitignore中有一行是*.efg,行数是第二行,文件是.gitignore
配置命令别名
在我们实际开发中,可能有的git命令非常长,导致我们每次输入时的不方便,我们可以使用如下方法对git命令进行取别名
配置全局命令别名:
git config --global alias.[新名字] '[老名字]'
例如:
有些时候,我们设置了命令别名可能自己也忘记了,可以通过如下方法查看所有的命令别名
查看配置的全局命令别名:
git config --global --get-regexp alias
例如:
若我们不想使用命令别名了,可以使用如下方法删除命令别名
删除全局某个命令别名:
git config --global --unset alias.[命令别名]
例如:
删除全局所有命令别名:
git config --unset-all
标签管理
理解标签
什么是标签?
git中,标签是用来标识某些特殊提交的一种记号,比如产品上线时的提交,一般都需要打上标签
为什么要有标签
git中不是每一次提交的时候都有commit id吗?commit id能唯一标识一次提交,为什么还需要标签呢?
commit id vs 标签:
- commit id:通过哈希算法得出来的,本身比较长,难以记忆!并且commit id都是无意义的一串字符
- 标签:通过开发人员手动打上的标签,通常都要保证尽量简短且与提交内容有强关联!标签被设置出来就是有意义的,方便开发人员查看!
- commit id 每一次提交都有,当提交过多时会导致难以查看。而只有当重要提交上传时才会打上标签,所以实际开发中打上标签的提交不会非常多,容易查看!
所以标签是针对重要的提交,我们可以为该提交打上标签,方便管理
例如:产品上线时的提交可以打上v1.0的标签,表示版本号!
对于开发人员来说,被打上标签的提交通常都是具有里程碑意义的!并且当开放人员想进行重要版本的回退时,可以根据标签迅速完成版本回退,提升了开发效率!
标签操作
本地操作
添加标签:
git tag [标签名]
上述命令的默认行为是为我们最近一次提交打上标签
查看有哪些标签:
git tag
注意:添加标签后,会在.git/refs/tags目录下保存了名字与标签名相同的文件,这个文件的内容是commit id
示例:
为非最新的提交打上标签:
git tag [标签名] [commit id]
有些时候,我们可能不仅仅需要添加标签,还需要添加对该标签的描述信息,可以使用如下方法:
标签描述:
git tag -a [标签名] -m"[标签描述]" [commit id]
若不写commit id的话,默认是最近一次提交!
查看标签描述:
git show [标签名]
删除标签:
git tag -d [标签名]
示例:
远端操作
标签也可以推送给远端仓库
推送一个标签:
git push [远程仓库名] [标签名]
推送所有标签:
git push origin --tags
若我们不需要远程仓库中的某一个标签,不建议直接在码云上手动删除,最好是先在本地删除,再把本地仓库与远程仓库进行同步:
本地删除后与远程仓库的同步:
git push [远程仓库名] :[标签]
#本质是把本地的删除同步到远端
相关文章:
【Git版本控制器--3】Git的远程操作
目录 理解分布式版本控制系统 创建远程仓库 仓库被创建后的配置信息 克隆远程仓库 https克隆仓库 ssh克隆仓库 向远程仓库推送 拉取远程仓库 忽略特殊文件 为什么要忽略特殊文件? 如何配置忽略特殊文件? 配置命令别名 标签管理 理…...
深入理解GPT底层原理--从n-gram到RNN到LSTM/GRU到Transformer/GPT的进化
从简单的RNN到复杂的LSTM/GRU,再到引入注意力机制,研究者们一直在努力解决序列建模的核心问题。每一步的进展都为下一步的突破奠定了基础,最终孕育出了革命性的Transformer架构和GPT大模型。 1. 从n-gram到循环神经网络(RNN)的诞生 1.1 N-gram 模型 在深度学习兴起之前,处理…...
【2024年华为OD机试】 (E卷,200分) - 最优资源分配芯片资源占用(JavaScriptJava PythonC/C++)
一、问题描述 题目解析 题目描述 某块业务芯片的最小容量单位为 1.25G,总容量为 M * 1.25G。芯片资源编号为 1, 2, …, M。该芯片支持 3 种不同的配置,分别为 A、B、C: 配置 A:占用容量为 1.25G(1 个单位ÿ…...
Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题
一、整个前言 在基于 Ruoyi 框架进行系统开发的过程中,我们常常会遇到各种有趣且具有挑战性的问题。今天,我们就来深入探讨一个在实际开发中较为常见的问题:当连续快速发送 Post 请求时,前端会弹出 “数据正在处理,请…...
【开源免费】基于Vue和SpringBoot的常规应急物资管理系统(附论文)
本文项目编号 T 159 ,文末自助获取源码 \color{red}{T159,文末自助获取源码} T159,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
差分进化算法 (Differential Evolution) 算法详解及案例分析
差分进化算法 (Differential Evolution) 算法详解及案例分析 目录 差分进化算法 (Differential Evolution) 算法详解及案例分析1. 引言2. 差分进化算法 (DE) 算法原理2.1 基本概念2.2 算法步骤3. 差分进化算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 单目标优化…...
优选算法——哈希表
目录 1. 哈希表简介 2. 两数之和 3. 判定是否为字符重排 4. 存在重复元素 5. 字母异位词分组 1. 哈希表简介 2. 两数之和 题目链接:1. 两数之和 - 力扣(LeetCode) 题目展示: 题目分析: 大家来看上面的图&…...
【前端SEO】使用Vue.js + Nuxt 框架构建服务端渲染 (SSR) 应用满足SEO需求
Nuxt.js 是一个基于 Vue.js 的通用应用框架,它简化了使用 Vue 构建服务端渲染 (SSR) 应用的流程。除了 SSR 之外,Nuxt.js 还支持静态站点生成(Static Site Generation, SSG),渐进式网络应用(Progressive We…...
AI学习指南Ollama篇-Ollama简介
一、定义 大语言模型(LLM)是一种基于深度学习的自然语言处理模型,能够生成文本、回答问题、翻译语言、撰写代码等。这些模型通过海量的文本数据进行训练,学习语言的模式和结构,从而能够生成自然流畅的文本内容。随着技术的不断进步,大语言模型在各个领域都展现出了巨大的…...
Python从0到100(八十五):神经网络与迁移学习在猫狗分类中的应用
在人工智能的浩瀚宇宙中,深度学习犹如一颗璀璨的星辰,引领着机器学习和计算机视觉领域的前沿探索。而神经网络,作为深度学习的核心架构,更是以其强大的数据建模能力,成为解决复杂问题的重要工具。今天,我们…...
《最优化理论基础》8课时层次化教案
《最优化理论基础》8课时层次化教案 课程总目标 掌握最优化核心理论(最优性条件、凸分析、对偶理论);能独立实现经典优化算法(梯度法、牛顿法、约束优化建模);理解优化理论与机器学习模型的关联ÿ…...
从源码深入理解One-API框架:适配器模式实现LLM接口对接
1. 概述 one-api 是一个开源的 API 框架,基于go语言开发,旨在提供统一的接口调用封装,支持多种 AI 服务平台的集成。通过 Gin 和 GORM 等框架,框架简化了多种 API 服务的调用流程。通过适配器模式实现了与多种 大模型API 服务的集…...
2025年国产化推进.NET跨平台应用框架推荐
2025年国产化推进.NET跨平台应用框架推荐 1. .NET MAUI NET MAUI是一个开源、免费(MIT License)的跨平台框架(支持Android、iOS、macOS 和 Windows多平台运行),是 Xamarin.Forms 的进化版,从移动场景扩展到…...
Tensor 基本操作4 理解 indexing,加减乘除和 broadcasting 运算 | PyTorch 深度学习实战
前一篇文章,Tensor 基本操作3 理解 shape, stride, storage, view,is_contiguous 和 reshape 操作 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started Tensor 基本使用 索引 indexing示例代码 加减…...
图扑 2024 全年精彩回顾 | 稳步向前
2024 年即将过去,回顾这一年,图扑软件在多个领域取得了显著成就,我们斩获多项行业奖项,稳步提升了市场地位,并在产品创新上推出了一系列新功能,提升了用户体验。与此同时,通过与合作伙伴紧密协作…...
[Python学习日记-79] socket 开发中的粘包现象(解决模拟 SSH 远程执行命令代码中的粘包问题)
[Python学习日记-79] socket 开发中的粘包现象(解决模拟 SSH 远程执行命令代码中的粘包问题) 简介 粘包问题底层原理分析 粘包问题的解决 简介 在Python学习日记-78我们留下了两个问题,一个是服务器端 send() 中使用加号的问题,…...
【数据结构】深入解析:构建父子节点树形数据结构并返回前端
树形数据结构列表 一、前言二、测试数据生成三、树形代码3.1、获取根节点3.2、遍历根节点,递归获取所有子节点3.3、排序3.4、完整代码 一、前言 返回前端VO对象中,有列情况列表展示需要带树形结构,例如基于RBAC权限模型中的菜单返回…...
【统计的思想】假设检验(二)
假设检验是根据人为设定的显著水平,对被测对象的总体质量特性进行统计推断的方法。 如果我们通过假设检验否定了零假设,只是说明在设定的显著水平下,零假设成立的概率比较小,并不是说零假设就肯定不成立。如果零假设事实上是成立…...
IT服务规划设计
1. IT服务设计的作用 1) 设计满足需求的IT服务。 2) 设计SAL,测量方法和指标。 3) 设计服务过程及控制方法。...
高效查找:二分查找算法解析
1.二分查找简介 二分查找算法(Binary Search)是一种高效的查找算法,适用于有序数组或序列。它的基本思想是通过逐步缩小查找范围,将查找区间一分为二,直到找到目标值或确定目标值不存在。 算法原理:在数组…...
电脑办公技巧之如何在 Word 文档中添加文字或图片水印
Microsoft Word是全球最广泛使用的文字处理软件之一,它为用户提供了丰富的编辑功能来美化和保护文档。其中,“水印”是一种特别有用的功能,它可以用于标识文档状态(如“草稿”或“机密”)、公司标志或是版权信息等。本…...
我的求职之路合集
我把我秋招和春招的一些笔面试经验在这里发一下,网友们也可以参考一下。 我的求职之路:(1)如何谈自己的缺点 我的求职之路:(2)找工作时看重的点 我的求职之路:(3&…...
FPGA自分频产生的时钟如何使用?
对于频率比较小的时钟,使用clocking wizard IP往往不能产生,此时就需要我们使用代码进行自分频,自分频产生的时钟首先应该经过BUFG处理,然后还需要进行时钟约束,处理之后才能使用。...
【2025最新计算机毕业设计】基于SpringBoot+Vue爬虫技术的咖啡与茶饮料文化平台(高质量源码,可定制,提供文档,免费部署到本地)
作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...
jmeter中对接口进行循环请求后获取相应数据
1、工作中遇到一个场景就是对某个单一接口进行循环请求,并需要获取每次请求后返回的相应数据; 2、首先就在jmeter对接口相关组件进行配置,需要组件有:循环控制器、CSV数据文件设置、计数器、访问接口、HTTP信息头管理器、正则表达…...
RocketMQ 怎么保证消息的可靠性?
目录 1. 消息发送可靠性 1.1 同步发送 1.2 异步发送 1.3 发送重试 1.4 事务消息 2. 消息存储可靠性 2.1 CommitLog 持久化 2.2 刷盘机制 2.3 主从复制 2.4 消息索引 3. 消息消费可靠性 3.1 消费确认机制 3.2 消费重试机制 3.3 消费位点管理 3.4 集群消费与广播消…...
基于 Node.js 的天气查询系统实现(附源码)
项目概述 这是一个基于 Node.js 的全栈应用,前端使用原生 JavaScript 和 CSS,后端使用 Express 框架,通过调用第三方天气 API 实现天气数据的获取和展示。 主要功能 默认显示多个主要城市的天气信息 支持城市天气搜索 响应式布局设计 深色主题界面 优雅的加载动画 技术栈 …...
C++函数初识
文章目录 一、形参带默认值的函数二、inline内联函数三、函数重载 一、形参带默认值的函数 给默认值的时候,从右向左给;调用效率的问题;定义处可以给形参默认值,声明也可以给形参默认值;形参给默认值的时候࿰…...
代码随想录day3
203:移除链表元素:注意虚拟头节点的使用 ListNode* removeElements(ListNode* head, int val) {ListNode* result new ListNode();result->next head;ListNode* current result;while(current ! nullptr && current->next ! nullptr){if(current-…...
论文+AI赋能教育:探索变革路径与创新实践。包括word和pdf格式。
下载地址链接: https://download.csdn.net/download/wanggang130532/90292129https://download.csdn.net/download/wanggang130532/90292129...
ray.rllib 入门实践-5: 训练算法
前面的博客介绍了ray.rllib中算法的配置和构建,也包含了算法训练的代码。 但是rllib中实现算法训练的方式不止一种,本博客对此进行介绍。很多教程使用 PPOTrainer 进行训练,但是 PPOTrainer 在最近的 ray 版本中已经取消了。 方式1࿱…...
uniapp 在线更新应用
在线更新应用及进度条显示 1.比较现安装手机中的apk 与线上apk的版本 getVersion(){var newVersionuni.getStorageSync("newVersion").split(".")var versionplus.runtime.version.split(".") // 获取手机安装的版本var versionNum""…...
中间件安全
一.中间件概述 1.中间件定义 介绍:中间件(Middleware)作为一种软件组件,在不同系统、应用程序或服务间扮演着数据与消息传递的关键角色。它常处于应用程序和操作系统之间,就像一座桥梁,负责不同应用程序间…...
从根源分析,调试,定位和解决MacOS ld: unsupported tapi file type ‘!tapi-tbd‘ in YAML file
你要是遇到同样错误,找一圈都没有解决,建议认真读一下本文,这个应该是最终极的解决办法,从原理上剖析了产生的原因,同时给出来了调试和定位的办法。 maccos使用brew安装了一个gcc14, 结果编译一个最简单的程序都报错&a…...
Linux的权限和一些shell原理
目录 shell的原理 Linux权限 sudo命令提权 权限 文件的属性 ⽂件类型: 基本权限: chmod改权限 umask chown 该拥有者 chgrp 改所属组 最后: 目录权限 粘滞位 shell的原理 我们广义上的Linux系统 Linux内核Linux外壳 Linux严格…...
构建企业级React应用的进阶实践
构建企业级React应用的进阶实践 在当今前端开发领域,React凭借其组件化架构和声明式编程范式,已成为构建复杂用户界面的首选方案。本文将深入探讨React的高级应用场景,通过一系列精心设计的代码示例,展示如何打造高性能、可维护的…...
2024年度总结:技术探索与个人成长的交织
文章目录 前言年度创作回顾:技术深耕与分享数据库技术:MySQL 与 MyBatisJava 及相关技术栈计算机网络:构建网络知识体系思维方式的转变:构建技术知识体系的桥梁 项目实践:人工智能与智慧医疗的碰撞生活与博客的融合与平…...
mysql-06.JDBC
目录 什么是JDBC: 为啥存在JDBC: JDBC工作原理: JDBC的优势: 下载mysql驱动包: 用java程序操作数据库 1.创建dataSource: 2.与服务端建立连接 3.构造sql语句 4.执行sql 5.关闭连接,释放资源 参考代码: 插…...
arm-linux平台、rk3288 SDL移植
一、所需环境资源 1、arm-linux交叉编译器,这里使用的是gcc-linaro-6.3.1 2、linux交叉编译环境,这里使用的是Ubuntu 20.04 3、sdl2源码 https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.11.tar.gz 二、代码编译 1、解压sdl2源码…...
CentOS 上安装 Go (Golang)
1. 检查系统环境 确保系统为 CentOS 7 或 CentOS 8,或者其他兼容的 Linux 发行版。 cat /etc/os-release2. 安装依赖 安装一些必要的工具: sudo yum update -y sudo yum install -y wget tar3. 下载 Go 从 Go 官方下载页面获取适用于 Linux 的最新版…...
小哆啦解题记:整数转罗马数字
小哆啦解题记:整数转罗马数字 小哆啦开始力扣每日一题的第十四天 https://leetcode.cn/problems/integer-to-roman/submissions/595220508/ 第一章:神秘的任务 一天,哆啦A梦接到了一项任务——将一个整数转换为罗马数字。他心想:…...
碰撞体问题
用点检测2d物体是否有物体 功能要求是点击空白处取消选中,点击棋子选中所以我做了一个射线检测。但是脑子的惯性让我用的是3D的射线检测。但我们这是一个2D游戏啊。 Vector3 mousePos pos;mousePos.z 10f; // 假设你需要转换到距离相机10单位的世界位置Vector3 …...
HTML<label>标签
例子 三个带标签的单选按钮: <form action"/action_page.php"> <input type"radio" id"html" name"fav_language" value"HTML"> <label for"html">HTML</label><br&…...
「 机器人 」利用数据驱动模型替代仿真器:加速策略训练并降低硬件依赖
前言 在强化学习(Reinforcement Learning, RL)中,策略训练需要大量的交互数据(状态、动作、奖励、下一状态),而这些数据通常来自仿真器或真实硬件。传统高保真仿真器虽然能在一定程度上模拟飞行器的动力学,但往往计算量大、开发成本高,且仍可能与真实环境存在差距。为此…...
.Net Core微服务入门全纪录(六)——EventBus-事件总线
系列文章目录 1、.Net Core微服务入门系列(一)——项目搭建 2、.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上) 3、.Net Core微服务入门全纪录(三)——Consul-服务注…...
QD Laser携“Lantana”激光器参展SPIE光子学西部展2025,聚焦紧凑型设计
据悉,QD Laser公司将在2025年SPIE光子学西部展览会上展出其最新产品——世界最小一体化紧凑型可见光激光器“Lantana”。该展会将于1月28日至30日在旧金山的Moscone中心举行。 在展会期间,QD Laser公司将现场展示这款超小型、轻便设备—— “Lantana”。…...
Docker + Nginx 部署个人静态博客指南
本文是一个使用 Docker 和 Nginx 部署个人静态博客的指南。通过本指南,您可以快速了解如何使用 Docker 和 Nginx 部署自己的静态博客网站。 前提 在开始使用本指南之前,请具备以下前提: 首先你得有个服务器服务器已经安装好Git、Vim等工具一…...
springboot3 集成 knife4j(接口文档)
提示:文章是集成 knife4j,而非 swagger2 或者 swagger3,效果如图 文章目录 前言一、添加依赖二、如何集成1.配置文件2.注解部分1.Tag2.Operation3.Parameter4.Schema 3.使用 总结 前言 提示::大家在开发阶段ÿ…...
批量创建ES索引
7.x from elasticsearch import Elasticsearch# 配置 Elasticsearch 连接 # 替换为你的 Elasticsearch 地址、端口、用户名和密码 es Elasticsearch([http://10.10.x.x:43885],basic_auth(admin, XN272G9THEAPYD5N5QORX3PB1TSQELLB) )# # 测试连接 # try: # # 尝试获取集…...
单路由及双路由端口映射指南
远程登录总会遇到登陆不上的情况,可能是访问的大门没有打开哦,下面我们来看看具体是怎么回事? 当软件远程访问时,主机需要两个条件,一是有一个唯一的公网IP地址(运营商提供),二是开…...