【Git Bash】简明从零教学
目录
- Git 的作用
- 官网介绍
- 简明概要
- Git 下载链接
- Git 的初始配置
- 配置用户
- 初始化本地库
- Git 状态查询
- Git 工作机制
- 本地工作机制
- 远端工作机制
- Git 的本地管理操作
- add 将修改添加至暂存区
- commit 将暂存区提交至本地仓库
- 日志查询
- 版本穿梭
- Git 分支
- 查看分支
- 创建与切换分支
- 跨分支修改与合并
- 合并冲突
- Git 的远端操作
- 与远端建立连接
- SSH 秘钥协议
- 远端的推送与拉取
Git 的作用
官网介绍
Git 作为一个免费的、开源的分布式 版本控制系统,可以高效地处理包括轻量、重量级在内的各种项目。Git 有廉价的本地库,方便的暂存区域和多个工作流分支等特性。
简明概要
同一项目 Project
在开发过程中可能出现形如 Project_20230616_byLee
,Project_20230617_byMa
,Project_20230630_backUp
,Project_20230701_rollBackOn0617
,Project_20230701_modified
,Project_20230703_finalByMa
等多个协同开发者版本、多个备份版本、跨版本回滚修改、跨协同开发者打包拷贝的混乱情况。为避免此,我们需要利用 Git 的如下特性:
- 管理本地(客户端)项目资源
如记录文档修改内容,新建项目版本号、分支(branch) 等。开发者为避免项目开发出现致命错误而无法回退到最近一次可行现场,有时会对上一可靠版本进行拷贝备份,但这样操作会开发过程中出现多个备份,占用了大量的存储空间。为此,Git 管理应运而生。
- 将本地项目资源与远端代码托管中心(服务端)进行互联
开发者可将本地资源推送(push)上传至远端进行云备份,同时多个开发者也可对此云项目进行拷贝(copy)、下拉(pull)至本地进行异地多分支开发,经合并(merge)后推送至远端主分支。常见的远端有 GitHub、Tencent CODING DevOps 等。
- 为 Windows OS 提供 Linux 系统命令行的交互终端
在 Windows cmd 下无法执行
mkdir
、ls
、touch
、vim
、cp
、rm
等常用 Linux 指令,但在 Git Bash Terminal 的帮助下可以实现此类交互。
Git 下载链接
官方地址:https://git-scm.com/
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git 的初始配置
定位到项目文件夹,右击鼠标在菜单栏选择 Git Bash Here,进入Terminal。并键入:
git -v
git -h
以查看已安装的 Git 版本号和帮助文档,检验是否安装成功。
注意,Git Terminal 的复制快捷键为 ctrl + insert ,粘贴快捷键为 shift + insert。
配置用户
首先需为本台设备上的开发者配置 用户名、邮箱 等信息,用于记录项目各版本下的 录入人签名 以区分不同操作者身份,以及用于后续的 远端识别。
如某一项目分居实验室、寝室两地开发,我们可以将实验室设备用户名命为
my-lab
,将寝室设备用户名命为my-laptop
,这样可以在改项目回滚时确定某一功能块的修改者。
- 配置用户名
git config --global user.name "your name"
- 配置用户邮箱
git config --global user.email "youremail@github.com"
如果读者想要在后续的远端部分使用 GitHub 作为资源库,建议用户名、邮箱与 GitHub 注册信息统一,以便管理。但二者并无必然联系。
- 查看已配置的用户信息
cat ~/.gitconfig
初始化本地库
现在采用如下指令在当前项目目录下建立一个 git 本地库:
git init
ls ./.git
执行完毕后,可以看到本地的项目目录文件夹内出现了一个名为 .git
的隐藏文件夹,内部存有一些配置信息,如索引、提交记录等。
Git 状态查询
Git 可记录当前项目的各个版本号以及其对应的修改记录,并支持回滚。Git 目前的状态可通过如下指令进行查询:
git status
截至目前,由于文件夹内没有增删文件、修改文件内容的操作发生,所以 Terminal 自然会显示 no commits yet
。我们现在创建一个新的文档并命名为 test.txt
,作为轻量级的项目示例。(如果读者已经拥有现成项目并知悉项目变动,可跳转至下一小节。)
创建好 test.txt
后,再次执行状态查询指令,我们发现 Terminal 中输出了未被追踪文件(Untracked files
),并被标记为了红色。
test.txt
作为新建的文件,与 Git 中记录中 版本历史仓库 出现的文件目录,和当前的 暂存区 中出现的文件目录存在冲突,所以被标记为了红色。后续开发者需要将test.txt
添加(add)至 暂存区 并提交(commit)至 版本历史仓库,才可在 Git 中完成记录。后面的章节会提到其工作机制以及操作细节。
Git 工作机制
Git 的工作流如图所示,框内部分为本地工作机制,框外传递部分为面向远端的工作机制:
本地工作机制
在项目的当前 工作目录(Workspace) 下,开发者进行编写、新建、删除文件或文件内容。对于已修改的文件目录或者文件内容,开发者可以将其添加(add)至 暂存区(stage),在所有标红提示的 未被追踪文件 完成添加后,我们再一并将它们提交(commit)至 本地的版本历史仓库(Local Repository) 中。
远端工作机制
如第一节中提到的 Git 作用,开发者可以将 本地仓库 推送(push)到位于 GitHub 的 远端仓库(Remote Repository) 作为代码托管;将 远程仓库 的分支最新内容完全拉取(pull)至本地 工作目录 并与当前本地分支直接合并,或将 远程仓库 的分支最新内容拿取(fetch)至 本地仓库 但不做合并。
Git 的本地管理操作
如状态查询和工作机制章节中提到的情景,我们需要做出一些操作,来使得 Git 记录下本地的所有修改。同时需支持对修改记录的日志进行查询,以完成项目的版本穿梭。
以下是一些常用的 Git 本地管理相关命令:
指令 | 作用 | |
---|---|---|
1 | git add <pathspec> | 将文件 pathspec 添加至暂存区 |
2 | git commit -m <message> | 提交本次修改并做 message 批注 |
3 | git reflog | 查看各提交的引用日志 |
4 | git log | 查看各提交的日志 |
5 | git reset --hard <reflog> | 穿梭(回滚)到 reflog 对应的项目版本 |
add 将修改添加至暂存区
通过指令 git add <pathspec>
,我们可以添加 git status
中被标红的 未被追踪文件 至暂存区,如:
git add test.txt
git status
再次查看 git status
,可以发现该文件已被标记为绿色。
键入 tab 可自动补全子目录名。
commit 将暂存区提交至本地仓库
通过指令 git commit -m <message>
,我们可以提交暂存区内容至本地仓库,如:
git commit -m "This is my first commit, and a new file is created." test.txt
现在我们来模拟版本迭代的情况:
如图所示,当 commit 完成后,我们又对 test.txt
的文件内容进行了修改,添加了两行文字。当同一文件被提交后再次被修改,查看 git status
依然会标记该文件为 未被追踪文件。此时我们需要将该文件再次 add 至暂存区,并进行二次 commit,以完成记录:
git status
git add test.txt
git status
git commit -m "This is my second commit, and the file is modified." test.txt
git status
操作完成后可发现文件内容修改已被记录,目前的工作区是干净的。
日志查询
- 命令
git reflog
用于查看当前仓库的引用日志(Reference log):引用日志记录了仓库中分支、标签和 HEAD 移动的历史记录。 - 命令
git log
用于查看 Git 仓库的提交日志:它显示了每个提交的作者、提交时间、提交信息等。
git reflog
git log
版本穿梭
Git HEAD 默认指向提交后的最新的版本,通过以下指令修改 Git HEAD 指向的引用版本号,可以进行本地仓库回滚,同时本地工作区也会同步回滚:
git reset --hard <reflog>
- 穿梭到
test.txt
为空时的 the first commit 版本:
- 穿梭到
test.txt
有内容时的 the second commit 版本:
同理,此指令支持多文件项目的版本回滚。
Git 分支
Git 分支(branch) 是一种用于在开发过程中并行工作的功能。它允许开发人员在不影响主分支的同时,与其他人合作开发新的功能或解决问题。在 Git 中,可以创建,切换和合并分支。分支的底层管理逻辑由指针完成,当前视角 HEAD
指向当前分支。
- 分支可使得多个开发者 同时且并行 推进各功能开发,提高开发效率;
- 各分支的修改与开发 不影响已经提交 的代码(如 主分支 master);
- 各分支的修改内容 可以出现重叠,但提交后合并时需经过冲突判定,并由开发者操作选择最终保留部分;
- 某一分支出现崩溃或开发失败,不会对其他分支有任何影响,仅在出现问题的分支上做版本穿梭回滚即可。
读者可以跳转至 A successful Git branching model 查看各较为成熟的分支团队开发模型,如在 主分支(master) 可分出 热补丁(hotfix),发布版(release),开发版(develop),特性(feature) 分支供团队各职能部门开发。此文章剩余部分仅对学生常见的多人开发、多地开发场景做示例(如小组作业合作、实验室与寝室跨地开发)。
以下是一些常用的 Git 分支相关命令:
指令 | 作用 | |
---|---|---|
1 | git branch -v | 查看各分支 |
2 | git branch <new-branch> | 创建名为 new-branch 的新分支 |
3 | git checkout <branch> | 切换到名为 branch 的分支 |
4 | git checkout -b <branch> | 创建并切换到名为 branch 的分支 |
5 | git merge <branch> | 将名为 branch 的分支合并到 当前 分支上 |
6 | git branch -d <branch> | 删除名为 branch 的分支 |
查看分支
我们可以使用如下指令来查看本地仓库中包含的 所有开发分支,目前所处的分支将会被 标记为绿色,且在绝对路径后的 括号内 会有当前分支对应的名称标识:
git branch -v
可以看到当前项目的本地仓库内仅包含一个 主分支(master),我们位于主分支上,且其被标记为了绿色。
创建与切换分支
我们使用如下指令创建一个名为 dev
的新分支,并将视角切换到该分支上:
git branch dev
git checkout dev
git brach -v
此时,当前所处分支 dev
被标记为了绿色,且括号内展示了当前分支的名称标识 (dev)
:
跨分支修改与合并
接下来我们在 dev
分支上对 text.txt
的文件内容进行异步修改,将修改结果添加到暂存库,并提交至对应的仓库分支:
此处为了方便演示,修改文本内容可以使用 vim editor,教程可访问 https://www.openvim.com/。我们也可直接在 txt 中进行修改。
git checkout dev
vim test.txt
cat test.txt
git status
git add test.txt
git commit -m "The first commit on branch dev: contents modified."
可以发现 dev
分支上的文件内容已发生改变。现在我们将视角切换到主分支 master
上:
git checkout master
cat test.txt
由于 分支之间的开发进度在合并之前互不影响,可以发现文件内容 又回到了修改之前的状态(the second commit on branch ‘master’)。现在我们将分支 dev
上的修改内容合并到主分支(当前分支):
git checkout master
git merge dev
cat test.txt
git status
git branch -v
git reflog
至此我们才可以在主分支内看到合并过来的 dev
分支上的修改内容。
注意,
dev
分支虽然已经合并到了master
分支上,但是dev
分支本身依然存在。修改master
的内容如果 正确 add 并 commit,则 不会 对dev
进行 随动修改,同样地,切换到dev
分支上后进行修改 并正确 add 且 commit,master
的内容也 不会随动修改。如果 没有提交 commit 随即切换了分支,那么我们将会看到另一分支的 内容被随动修改(因为所有改动依然停留在工作区而没有上传至 Git 管理系统)。
合并冲突
在重量级项目的分支开发中,往往会合并时出现同一文件的同一位置(如某一行)对应了两种不同修改内容,自动合并产生了歧义。为了演示这一现象,我们又从主分支创建了分支 dev2
。创建分支后 对二者做了如下面的修改内容,add 至暂存区并 commit:
git checkout dev2
vim test.txt
git add test.txt
git commit -m "Merge conflict test on dev2."git checkout master
vim test.txt
git add test.txt
git commit -m "Merge conflict test on master."
此时两分支内都对文档的后几行进行的修改,但修改内容不同。所以在主分支上,dev2
合并过来时出现了冲突现象(Merge conflict in test.txt
,Unmerged paths: both modified
):
git reflog
git merge dev2
git status
cat test.txt
其中冲突部分,<<<<<<< HEAD
与 =======
之间对应的为当前分支的文档内容,=======
与 >>>>>>> dev
之间对应的为 dev
分支的文档内容。 手动删除多余内容,保留兴趣内容后,add 至暂存区并提交,即可解决冲突:
vim test.txt
cat test.txt
git status
git add test.txt
git commit -m "merge after conflict"
git status
git branch -v
git reflog
cat test.txt
可以看到括号内提示的主分支合并中 (master|MERGING)
状态改为了正常 master
。
Git 的远端操作
结合本地管理操作与分支的运用,我们可以将本地的项目内容向远端的代码托管中心进行交互了。此处的远端仓库以 GitHub 为例,创建一个私有仓库(不开源)并命名为 GitProject
:
常见的远端交互指令如下:
指令 | 作用 | |
---|---|---|
1 | git remote -v | 查看当前所有远端仓库的地址及别名 |
2 | git remote add <name> <url> | 添加一个新的远端仓库 url 并命名为别名 name |
3 | git push <name> <branch> | 将本地分支 branch 推送到远端仓库 name 上 |
4 | git push <name> -d <remote-branch> | 将远端仓库 name 上的 remote-branch 分支删除 |
5 | git clone <repo> | 将远端仓库 repo 的所有内容拷贝下来到本地当前目录 |
6 | git pull <repo> <remote-branch> | 将远端仓库 repo 上的 remote-branch 分支下拉到本地并与当前本地分支直接合并 |
7 | git fetch <repo> | 将远端仓库 repo 上的所有分支拿取到本地并但不合并 |
8 | git fetch <repo> <remote-branch> | 将远端仓库 repo 上的 remote-branch 分支拿取到本地并但不合并 |
clone,pull,与 fetch 的区别如图;其中 fetch 仅将远端仓库的分支副本拿取下来,但工作区的工作目录并不会发生改变,而 pull 则是对分支副本与仓库资源内容均做了下拉,工作区的工作目录内容会发生改变:
与远端建立连接
以前面在 GitHub 上的创建的 GitProject
为例,我们需要先获取其 ssh 地址并为其创建别名:
git remote add github-ssh "git@github.com:Sycamore-Ma/GitProject.git"
git remote -v
远端仓库对应的 SSH 地址可在如图位置找到。
SSH 秘钥协议
由于远端仓库受 SSH 秘钥保护,所以本地在向远端进行推送或拉取时,需要事先使用如下指令(默认回车)生成本计算机的公共秘钥,找到在本地计算机的秘钥文本存储位置,并将其粘贴至远端仓库的协议中:
ssh-keygen
具体操作流程读者可访问链接:如何解决 git@github.com permission denied (publickey). fatal could not read from remote repository。
如果未能解决 SSH 秘钥问题,在向远端私有仓库推送或拉取时,识别秘钥会出现
git@github.com: Permission denied (publickey).
、fatal: Could not read from remote repository.
等错误。
同样地,GitHub 上可以邀请其他成员使用 Git 管理系统进行协同开发,读者可移步至 Git&GitHub 团队协作 了解详情。
远端的推送与拉取
通过以下指令,我们可以将本地的 master
分支推送至 github-ssh
别名对应的远端仓库:
git push github-ssh master
可以看到 GitHub 代码托管已经出现了新内容,远端分支为 master
,与本地 master
分支一致。
同样地我们可以在另外一台设备上测试拉取(该设备秘钥已经达成协议,此处不赘述),我们创建一个新的空文件夹,并在其路径上 Bash,完成前面章节的 初始化 与远端连接工作,执行远端拉取:
git init
git remote add github-ssh "git@github.com:Sycamore-Ma/GitProject.git"
git remote -v
git pull github-ssh mastergit status
git branch -v
git reflog
可以看到,另外一台设备也分布式地获取了远端代码托管中心的所有资源,可用于后续的协同修改、合并、推送。这样跨地开发的需求就达成了。
相关文章:
【Git Bash】简明从零教学
目录 Git 的作用官网介绍简明概要 Git 下载链接Git 的初始配置配置用户初始化本地库 Git 状态查询Git 工作机制本地工作机制远端工作机制 Git 的本地管理操作add 将修改添加至暂存区commit 将暂存区提交至本地仓库日志查询版本穿梭 Git 分支查看分支创建与切换分支跨分支修改与…...
【QT5-自我学习-线程qThread练习-两种使用方式-2:通过继承Qobject类-自己实现功能函数方式-基础样例】
【QT5-自我学习-线程qThread练习-两种使用方式-2:通过继承Qobject类-自己实现功能函数方式-基础样例】 1、前言2、实验环境3-1、学习链接-参考文章3-2、先前了解-自我总结(1)线程处理逻辑事件,不能带有主窗口的事件(2&…...
两款开箱即用的Live2d
目录 背景第一款:开箱即用的Live2d在vue项目中使用html页面使用在线预览依赖文件地址配置相关参数成员属性源码 模型下载 第二款:换装模型超多的Live2d在线预览代码示例源码 模型下载 背景 从第一次使用服务器建站已经三年多了,记得那是在2…...
LAMP架构详解+构建LAMP平台之Discuz论坛
LAMP架构详解构建LAMP平台之Discuz论坛 1、LAPM架构简介1.1动态资源与语言1.2LAPM架构得组成1.3LAPM架构说明1.4CGI和astcgi1.4.1CGI1.4.2fastcgi1.4.3CGI和fastcgi比较 2、搭建LAMP平台2.1编译安装apache httpd2.2编译安装mysql2.3编译安装php2.4安装论坛 1、LAPM架构简介 1.…...
如何使用腾讯云服务器搭建网站?新手建站教程
使用腾讯云服务器搭建网站全流程,包括轻量应用服务器和云服务器CVM建站教程,轻量可以使用应用镜像一键建站,云服务器CVM可以通过安装宝塔面板的方式来搭建网站,腾讯云服务器网分享使用腾讯云服务器建站教程,新手站长搭…...
mybatis plus 控制台和日志文件中打印sql配置
1 控制台输出sql 配置mybatis-plus的日志实现类为StdOutImpl,该实现类中打印日志是通过System.out.println(s)的方式来打印日志的 mybatis-plus:configuration:log-impl: org.apache.imbatis.logging.stdout.StdOutImpl2 日志文件中写入sql 日志文件中输入sql需要…...
苍穹外卖总结
前言 1、软件开发流程 瀑布模型需求分析//需求规格说明书、产品原型↓ 设计 //UI设计、数据库设计、接口设计↓编码 //项目代码、单元测试↓ 测试 //测试用例、测试报告↓上线运维 //软件环境安装、配置第一阶段:需求分析需求规格说明书、产品原型一般来说…...
Git 删除已经合并的本地分支
在使用 Git 的开发流程中,经常会创建很多的 Git 分支,包括功能分支(features/*)、发布分支(release/*)和 hotfix 分支(hotfix/*)。在开发了一段时间之后,本地就会有出现很…...
递归算法应用(Python版)
文章目录 递归递归定义递归调用的实现递归应用数列求和任意进制转换汉诺塔探索迷宫找零兑换-递归找零兑换-动态规划 递归可视化简单螺旋图分形树:自相似递归图像谢尔宾斯基三角 分治策略优化问题和贪心策略 递归 递归定义 递归是一种解决问题的方法,其精…...
有什么react进阶的项目推荐的?
前言 整理了一些react相关的项目,可以选择自己需要的练习,希望对你有帮助~ 1.ant-design Star:87.1k 阿里开源的react项目,作为一个UI库,省去重复造轮子的时间 仓库地址:https://github.com/ant-design/…...
基于串口透传模块,单片机无线串口空中下载测试
基于串口透传模块,单片机无线串口空中下载测试 ✨无线串口下载,其本质还是串口下载方式,只不过省去了单片机和ISP上位机工具之间的物理有线连接,中间的数据通过无线串口透传模块进行数据中转,传递到单片机串口上。串口…...
研磨设计模式day11代理模式
目录 场景 代码实现 编辑 解析 定义 代理模式调用示意图 代理模式的特点 本质 编辑何时选用 场景 我有一个订单类,包含订单数、用户名和商品名,有一个订单接口包含了对订单类的getter和setter 现在有一个需求,a创建的订单只…...
vue2 路由进阶,VueCli 自定义创建项目
一、声明式导航-导航链接 1.需求 实现导航高亮效果 如果使用a标签进行跳转的话,需要给当前跳转的导航加样式,同时要移除上一个a标签的样式,太麻烦!!! 2.解决方案 vue-router 提供了一个全局组件 router…...
《C语言编程环境搭建》工欲善其事 必先利其器
C语言编译器 GCC 系列 GNU编译器套装(英语:GNU Compiler Collection,缩写为GCC),指一套编程语言编译器,常被认为是跨平台编译器的事实标准。原名是:GNU C语言编译器(GNU C Compiler)。 MinGW 又称mingw32 ,…...
蓝蓝设计ui设计公司作品案例-中节能现金流抗压测试软件交互及界面设计
中国节能是以节能环保为主业的中央企业。中国节能以生态文明建设为己任,长期致力于让天更蓝、山更绿、水更清,让生活更美好。经过多年发展,中国节能已构建起以节能、环保、清洁能源、健康和节能环保综合服务为主业的41产业格局,成…...
汽车制造业外发文件时 如何阻断泄密风险?
汽车制造业是我国国民经济发展的支柱产业之一,具有产业链长、关联度高、就业面广、消费拉动大等特性。汽车制造行业景气度与宏观经济、居民收入水平和固定资产投资密切相关。 汽车制造业产业链长,关联度高,汽车制造上游行业主要为钢铁、化工…...
怎么对App进行功能测试
测试人员常被看作是bug的寻找者,但你曾想过他们实际是如何开展测试的吗?你是否好奇他们究竟都做些什么,以及他们如何在一个典型的技术项目中体现价值?本文将带你经历测试人员的思维过程,探讨他们测试app时的各种考虑. …...
数字流的秩、单词频率(哈希实现)
题目1:数字流的秩 假设你正在读取一串整数。每隔一段时间,你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。请实现数据结构和算法来支持这些操作,也就是说: 实现 track(int x) 方法,每读入一个数字都会调用该方法…...
【洛谷】P2678 跳石头
原题链接:https://www.luogu.com.cn/problem/P2678 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 二分答案。(使用二分需要满足两个条件。一个是有界,一个是单调。 这题的题面:使得选手们在比赛过程中…...
Elasticsearch配置优化
以下的优化基础是安装的 Elasticsearch 版本为 7.17.7,同时jdk版本为 1.8.321 1、jvm参数优化 这里说的jvm参数调优,是指elasticsearch安装目录下的jvm.options配置,如下图所示: 这里调整的内容主要是调整垃圾回收的收集器&#…...
Springboot整合minio组件-分布式文件存储
一、快速开始 Minlo说明: Minio是Apcche旗下的一款开源的轻量级文件服务器,基于对象存储,协议是基于Apache License v2.0,开源可用于商务。Minio主要用来存储非结构化的数据,类似文件,图片,照…...
多态/虚函数/虚函数表
OVERVIEW 多态/虚函数/虚函数表1.虚函数引入后类发生的变化?2.虚函数表的生成时机和生成原因?3.虚函数表指针赋值的时机?4.类对象在内存中的布局?5.虚函数的工作原理和多态性的体现?6.其他问题 多态/虚函数/虚函数表 n…...
QT中按钮的基类QAbstractButton
QT中按钮的基类QAbstractButton 关于控件类的学习方法继承关系信号槽函数标题和图标按钮的 Check 属性 关于控件类的学习方法 控件类很多,API更多,但是不需要记忆知道控件对应的类名,通过帮助文档随用随查优先看帮助文档中控件对应的信号和槽…...
并查集(种类并查集,带权并查集)
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都…...
飞天使-k8s基础组件分析-控制器
文章目录 控制器含义解释pod的标签与注释ReplicaControllerReplicaSetDeploymentsDaemonSetJobCronjob参考文档 控制器含义解释 空调遥控器知道吧ReplicationController: ReplicationController确保在任何时候都运行指定数量的pod副本。换句话说,一个ReplicationCo…...
有序充电运营管理平台是基于物联网和大数据技术的充电设施管理系统-安科瑞黄安南
随着我国能源战略发展以及低碳行动的实施,电动汽车已逐步广泛应用,而电动汽车的应用非常符合当今社会对环保意识的要求,以及有效节省化石燃料的消耗。 由于其没有污染排放的优点以及政府部门的关注,电动汽车将成为以后出行的重要…...
LeetCode-227-基本计算器Ⅱ
题目描述: 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意:不允许使用任何将字符串作为数学表达式计…...
dart 学习列表 List
List 列表 在 Dart 编程语言中,List 是一种有序的集合数据类型,用于存储一系列项目。它允许您在单个变量中存储多个项目,并提供了许多操作来管理列表中的数据。以下是关于 Dart 中的 List 的一些重要信息: 创建 List: …...
数据结构--树4.2.1(二叉树)
目录 一、二叉树的存储结构 二、二叉树的遍历 一、二叉树的存储结构 顺序存储结构:二叉树的顺序存储结构就是用一维数组存储二叉树中的各个结点,并且结点的存储位置能体现结点之间的逻辑关系。 链式存储结构:二叉树每个结点最多只有两个孩…...
Presto之Driver个数
一. 前言 在Presto的Stage Performace中,每个Operator中都会有Driver个数的显示,如下图所示。本文主要介绍Presto中是如何决定Driver的个数的。 二. Driver个数 在Presto中,一个pipeline中启动多少个Driver,是由此Pipeline处理的S…...
wordpress5.03下载/广州seo诊断
【重点】知道null产生的三种情况,学习empty 和 isset两个函数的区别。大理石平台怎么样主要有以下三空情况会产生空(null)类型:1.通过变量赋值明确指定为变量的值为NULL2.一个变量没有给任何值3.使用函数unset()将变量销毁掉我们用代码来演示一下。<?…...
做纸巾定制的网站/制作一个网站需要多少费用
题目均来自牛客网 1、 有以下代码片段: String str1"hello"; String str2"he" new String("llo"); System.out.println(str1str2); 请问输出的结果是:false - 解 类似问题连接: String is immutable. W…...
大理网上商城网站建设/赵阳竞价培训
1.如图看解说: 你子标签要给我父标签传递信息,你总得有个触发机制告诉我这是怎么回事对吧 要不我怎么知道你要传数据给我呢!转载于:https://www.cnblogs.com/gaofeng-d/p/10750471.html...
我想学网站建设/全国网站排名
支持功能 话题查看节点查看和按字母搜索用户资料查看话题回复话题创建未读提醒查看常用分类节点话题浏览节点下的话题翻页话题回复翻页滑动手势返回其他功能 实现了节点、话题、用户三个Scheme,通过话题、节点、用户链接直接打开客户端进行相关信息浏览对用户已经浏览过的话题作…...
佛山外贸网站设计/大数据培训包就业靠谱吗
简介 在这篇文章中,我将向大家演示怎样向一个通用计算器一样解析并计算一个四则运算表达式。当我们结束的时候,我们将得到一个可以处理诸如 12*-(-32)/5.63样式的表达式的计算器了。当然,你也可以将它拓展的更为强大。 我本意是想提供一个简单…...
沈阳建网站企业/怎样做一个网站
Link: 原型模型设计工具:墨刀。(在学长的推荐下发现有这一款十分好用的原型模型设计工具呢。^_^.) 小伙伴链接:http://www.cnblogs.com/mingsonic/p/9683453.html 原型链接:(如果小樱同学看不懂…...