你还不会Git?那就不要写代码了(一)
Git应用开发学习
这,仅是我学习过程中记录的笔记。确定了一个待研究的主题,对这个主题进行全方面的剖析。笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长。不止是技术。
一旦你会使用了Git,就再也不想使用SVN了。永远也回不去了。
Mac上使用Git,肯定离不开对Mac上的操作。就要使用常用的Linux命令来进行操作。通过终端来进行操作。
学习Git一定要使用命令行的方式来学习。不要使用图形界面来操作学习。会大大折扣的哦。
花了时间来学习一门东西。一定要得到自己想要喜欢的东西。
课程的内容
- Git官网
- 常见Linux命令介绍
- Git在各平台下的安装与配置
- 分布式与集中式版本控制系统的差别
- 缓存区、工作区与Git提交
- 版本回退
- 修改与撤销修改、文件的添加与删除
- Git对象类型与索引
- Git分支branch
- 如何创建、切换与删除分支
- Git分支在项目开发中的作用
- Git分支在工程化项目中的最佳实践
- 分支常见重要命令详解
- Git merage
- Git冲突解决策略
- HEAD详解
- Git Commit修改详解
- 远程版本库介绍
- 如何使用远程版本库
- Git puah 、pull、fetch使用与注意事项
- Git合并的基本原则
- Git别名、config文件详解
- Git tag详解
- 如何创建于推送tag
- Git feature分支详解
- 合适应该使用submodule
- Git subtree详解
- .gitignore的正确使用方式
- Git私服gitlab的搭建方法
- 使用gitlab作为版本控制服务器
- Gitlab的使用详解
- 搭建idea的Java开发工具,基于gradle的开发环境
- Git与idea的整合
- gradle初步使用
- .gitignore最佳实践
开发工具的准备。
Git官网。https://git-scm.com/ 下载Git
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 is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
bash 系统自带的终端。
zsh 增强版的bash
- on my zhs 的安装
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
- 常见的Linux命令介绍
常见的Linux命令介绍
创建一个文件: touch text.txt
复制一个文件: cp text.txt
查看一个文件: cat text.txt
修改文件的名字: mv text.txt text1.txt
删除一个文件: rm text.txt
修改一个文件: vi text.txt :wq 保存退出。
Git入门指引
Git GitHub Gitlab
为什么要使用Git。
本地建立版本库。本地版本控制。多主机异地协同工作。重写提交说明。有后悔药可以吃。更好的提交列表,比较好的差异比较。更完善的分支系统。速度快。
Git工作模式
git 基础
直接记录的快照,而非差异比较
近乎所有操作都在本地执行。
时刻保持数据的完整性。
多数操作仅添加数据。
文件的三种状态。 已修改,已暂存(stage),已提交(commit)。
Git文件:以被版本库管理的文件
已修改:在工作目录修改Git文件
已暂存:对已修改的文件执行Git暂存操作,将文件存入暂存区。
已提交:将已暂存的文件执行Git提交操作,将文件存入版本库。
Git的文件状态
MAC上推荐的工具 homebrew
SSH:Secure Shell
Git常用命令
mkdir mygit 创建一个目录
获得版本库
git init 初始化一个版本仓库
git clone
查看信息
git help
git log 查看提交日志
git diff 比较文件在不同状态下的区别
版本管理
git add 将已修改的文件添加到暂存区
git commit -m 提交修改
git rm 删除版本库中的特定文件
远程协作
git pull 拉取代码到本地
git push 推送代码到远端
其他常用命令
touch test.txt 新建一个文件
cat test.txt 查看这个文件
vi test.txt 修改这个文件
git status 查看当前分支文件的状态
配置username && email**
对于user.name 与user.email来说,有三个地方可以设置
- etc/gitconfig (几乎不常用) git config --system
- ~/.gitconfig(对于单个用户的,常用) git config --global
- .git/config (针对于特定项目) git config --local
优先级 3>2>1
2020年01月16日09:17:33
Git 命令练习
git的删除,添加,修改与日志
which vi 查看命令的目录
⌃ a 光标去开头
⌃ E 光标去结尾
ehco 'hellow world asd' > test.txt 修改内容, 重定向到文件中。等于修改了文件。
删除-恢复操作
rm
git rm
使用 rm 和 git rm 的区别。
git rm : 1. 删除了一个文件 2. 将被删除的文件纳入到暂存区.
若想恢复被删除的文件,需要进行两步操作。
a. git rest HEAD test2.txt 将待删除的文件从暂存区恢复到工作区
b. git checkout -- test2.txt 将工作区中的修改丢弃掉
rm : 将文件删除,这时,被删除的问价并未被纳入到暂存区
重命名操作
git mv oldname newname 重命名
mv oldname newname 重命名
git mv 和 mv 的却别 相当于 rm 和 git rm 的区别。
修改commit注释
git commit --amend -m '修改commit注释' ; 把上次提交的commit记录给修改了
git log -n ;查看最近几条的日志
查看帮助文档
git help log ; git log --help ; man git log
.gitignore 与 分支
.gitignore的作用:过滤不需要上传的文件。
- *.a #忽略掉所有.a结尾的文件
- !lib.a # 但lib.a除外
- /TODO #仅仅忽略项目根目录下的TODO文件,不包括subdir/TODO
- build/ # 忽略build/目录下的所有文件
- doc/*.txt # 忽略doc/a.txt 但不包括 doc/b/a.txt
- /**/test.txt 忽略所有的test.txt
-- 2020年01月18日18:16:58
rm -rf file 删除一个文件 或者一个文件包
echo 'hello world ' > test.txt 创建一个文件
分支的重要操作:
分支的本质到底是什么?
分支,一个commit 对象链,一条工作记录线。
HEAD指向的是当前的分支
master指向提交
合并之后 是一个快照 Fast - forward
git branch : 查看分支
git branch new_branch : 创建一个分支
git checkout - : 切换到上一个分支
git checkout master : 切换到master分支
git branch -d erwa : 删除erwa 分支 。 不能删除当前分支;不能删除未合并的分支。 要删的话 需要 -D
git branch -D erwa: 不管分支合并了没,直接删除
git checkout -b erwa4 : 创建,并切换到erwa4分支
git merge erwa4: 将erwa4分支合并到当前分支
git branch -v : 显示分支最近的修改信息
git log --graph : 查看图形化的日志
git commit -am '第三次提交' : 修改之后 add 并且 commit
冲突时手动解决冲突
分支进阶与版本回退
分支进阶
fast-forward :
如果可能的话,合并分支时,Git会使用fast-forward模式
在这种模式下,删除分支时,会丢掉分支信息
合并时加上--no -ff 参数,会禁用fast-forward快照模式。这样会多出来一个commit ID
如 : git merge --no -ff dev
查看图形化的日志 git log -graph
版本回退
git reset --hard HEAD^ : 回退一个版本
git reset --hard HEAD^^ : 回退两个版本
git reset --hard HEAD~2 : 回退第二个提交
git reset --hard commit_id : 回退到某个commit_id
回到最新的提交怎么办呢?
git reflog 查看操作日志。 然后再回退
checkout进阶与stash操作
checkout进阶
vi操作:
1.跳到文本的最后一行:按“G”,即“shift+g”
2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”。
3.跳到第一行的第一个字符:先按两次“g”,
4.跳转到当前行的第一个字符:在当前行按“0”。
git reset HEAD test.txt : 将添加到暂存区的内容从暂存区移除到工作区
git checkout -- ... : 丢弃当前的工作空间当对于暂存取当中的最后一次的修改。
git checkout master : 切换到master分支
git checkout -b test : 创建,并切换到test分支
git checkout 986d4a30a : 切换到当前分支的 某个log之前的状态。 游离状态
git branch -m test dev : 将test分支 名字修改成 dev
stash操作
适用场景,在当前分支开发,需要切换到其余分支。保存当前分支的现场。恢复现场等
git stash : 保存现场
git stash list : 查看保存现场
git stash apply :恢复现场( stash内容不删除,需要通过git satsh drop stash@{0} 手动删除)
git stash apply stash@{0}:恢复某个现场
git stash pop : 恢复现场(恢复的同时也将stash内容删除)
标签与diff
标签
标签的基本使用和作用
作用: 发布系统,或者到了一个历程碑时,给当前项目打一个版本标签
标签有两种: 轻量级标签与带有附注的标签
git tag v1.0 : 创建一个轻量级标签
git tag -a v1.1 -m '注释' : 创建一个带有附注的标签
git tag :查看当前分支的标签
git tag -l '1.0' : 根据条件查找当前的分支
git tag -d v1.0 : 删除标签
diff
diff 两个文件之间的差异性比较
git blame test.txt : 查看此文件的修改不同
diff a b : 比较a b 两个文件的不同 -- Unix自带的diff的使用
diff -u a b : 更清楚的比较 a b
git diff : 比较 暂存区 和工作区的区别 ; 暂存区作为原始文件。 工作区作为目标文件。
git diff HEAD : 比较工作区与最新提交的差别
git diff commit_id : 比较工作区与commit_id 那次的差别
git diff --cached : 比较的是最新的提交与暂存区之间的差别
远程与GitHub
git config --list : 查看当前git的配置
推送远程版本库:
git remote add origin https://github.com/584tiegan/gitlecture.git
git push -u origin master
Git远程操作
git remote show : 查看当前代码关联的远程仓库
git remote show origin : 查看远程仓库的信息
- Gitflow 建议和参考。
- 基于Git分支的开发模型:
- master -- 生产发布分支。变化非常不频繁的分支。
- hotfix -- 热修分支。用于紧急修复的分支。
- test -- 测试分支。 供测试和产品等人员使用的分支,变化不是特别频繁。
- develop -- 开发分支,频繁变化的一个分支。
- feature -- 开发者分支。针对于单个的功能点。
使用SSH方式clone代码和push pull
先获取本地SSH
➜ ~ cd .ssh
➜ .ssh ls
known_hosts
➜ .ssh ssh-keygen -t rsa
➜ .ssh cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/SmZ8VvFLJIRurSXRaCsSeOgGN0bqKFt/3Qdk6MVqywHJEoYXlKdy4/NM/eMcgnNdpDnQkB5TbUyTppbVeMfuKz4RBH3bCw9oL44ZGm0bXB6hJU1kpnMMpSVriN+Ssv8GqBO/Vd4oK5vEywQV2e/cAvkqtC6Vb5Duf84Ho9n/U1IlcQVmbWw02TMzkzDwZqDbDoVWQBJ4sFRjq6lOFfZGFRtfXrBPnTkCibDlAjg0s0j7/FOcQupy4r4fbkXr+D4925ummuXD+E0F5+HIUWqddFhWgfMcs5T+JY+vh8D0Gbm7Q4g8A1DfAOwIWqFlBiFErQtgqNOGy14rv9g5IP2Z erwa@erwa.local
之后再GitHub里配置一下SSH 就可以了
Git协作
Git协作的基本过程介绍:
A人员push到远程仓库,B人员pull到本地仓库。AB进行了同步,可以进行同时开发。
push代码前,要先pull代码。
AB人员都有本地的版本库。也有一个公共的远程版本库。
一个本地库可以对应多个远程仓库。
git remote show : 查看远程仓库的信息
git remote show origin : 查看某个具体的远程仓库的信息。
➜ mygit git:(master) git remote show origin
Warning: Permanently added the RSA host key for IP address '140.82.114.3' to the list of known hosts.
- remote origin
Fetch URL: git@github.com:584tiegan/gitlecture.git
Push URL: git@github.com:584tiegan/gitlecture.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
git branch -a : 查看本地所有的分支,包括远程分支。
git branch -av: 查看所有分支的最后一次提交内容
git checkout origin/master: 本地切换到远端master时,不会支持修改。
git clone SSH地址/HTTPS地址: 克隆远程仓库的代码
git clone SSH地址 mygit2 : 克隆代码,代码仓库的名字设置为mygit2
git add 有三个作用:
- 将文件纳入到缓存区
- 将已经被工作区的文件纳入到缓存区
- 如果一个文件产生了冲突,冲突解决后,调用一下git add 。表示冲突已经被解决了。
vi操作:
1.跳到文本的最后一行:按“G”,即“shift+g”
2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”。
3.跳到第一行的第一个字符:先按两次“g”,
4.跳转到当前行的第一个字符:在当前行按“0”。:set number . 打开行号
:4d 删除第四行
dd 删除光标所在行
git fetch : 只拉取代码,不merge
git pull : git fetch + git merge
git远程分支,别名,gitk与git gui
一开始,千万不要直接使用gui 。 推荐使用git命令的方式来操作。更能深入了解Git
在git仓库中: gitk : 打开gitk图形化界面。
云梯。。。
Git合并的原则
Git合并遵循三方合并的原则
Git redspec
本地分支与远端分支的对应关系
git 别名的操作:
git config --global alias.br branch : br 代替 branch
st status
co checkout
创建远端的分支:
新分支推送远端时,直接 git push 不可以。 要使用 git push --set-upstream origin dev
git push -u origin dev: 老版本的 推送本地的分支到远程、 推荐使用--set-upstream origin dev
git push 的完整写法: git push origin dev:dev2 将dev的内容推送到远端的dev2的分支上
删除远端的分支:
git push origin :dev 将一个空分支推到远端分支
git push origin --delete dev 删除远端的dev分支
修改远端的分支名: 删除远端分支,重命名本地分支,推送本地分支。
git remote show origin :查看本地和远程分支的关系
git remote prune origin : 清楚本地没有的远端分支。
git push 的完整写法: git push origin dev:dev2 将dev的内容推送到远端的dev2的分支上
git pull 操作的完整命令: git pull origin dev:dev2 dev 是远端分支,dev2是本地分支
HEAD标记: HEAD文件是一个指向你当前所在分支的引用标识符,该文件内部并不包含SHA-1值(commit_id),而是包含一个指向另外一个引用的指针。
当执行git commit 命令时,git 会创建一个commit 对象,并且将这个commit对象的parent对象设置为HEAD所指向的引用的SHA-1值。
我们对于HEAD修改的任何操作,都会被reflog完整的记录下来。
实际上,我们可以通过Git底层命令symbolic-ref来操作HEAD
将标签推送到远端
git show v1.0 : 查看本地的标签
git tag -l '2' : 搜索
git push origin v1.0 : 推送标签到远端
git push origin v1.0 v2.0 : 推送两个标签到远端
git push origin --tags : 推送全部标签到远端
git push origin :refs/tags/v2.0 : 删除远端的某个标签
git push origin --delete tag v2.0 : 删除远端的某个分支
推送分支的完整语法: git push origin refs/tags/v2.0:refs/tags/v2.0
git fetch origin tag v7.0 : 拉取某个标签
git 远程分支的底层剖析
在缺省情况下,refspec会被git remote add命令自动生成,git 会获取远端上refs/heads下的所有引用,并将它们写到本地的refs/remote/origin 目录下。所以,如果远端有一个master分支,你可以在本地通过下面几种方式来访问它们的历史记录:
- git log origin/master
- git log remotes/origin/master
- git log refs/remotes/origin/master
fetch = +reds/heads/* :refs/remotes/origin/*
➜ .git git:(dev) cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@github.com:584tiegan/gitlecture.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[gui]
wmstate = normal
geometry = 854x447+744+398 181 201
[branch "dev"]
remote = origin
merge = refs/heads/dev
Git gc
Git 的垃圾回收机制
git gc
➜ .git git:(dev) cat packed-refs : 调用git gc 后,内容打包放在这里
git mv hello.txt hello.txt : 可以当做是重命名的操作。
git remote rename origin origin2 : 重命名远程仓库
Git裸库与submodule
Git裸库
作用: 只有一个远程仓库,没有工作区。用来中转开发者的代码
git init --bare 创建一个裸库
submodule
Git仓库里再包含一层Git仓库,便于远程调用。
将一个Git仓库引用到另外一个Git仓库。git submodule add SSH地址 mymodule
引用之后,被引用的仓库修改信息,本地的仓库git pull 便可得到最新的信息。
git submodul foreach git pull : 一次性的更新本仓库所有的引用仓库
git clone SSH地址 : 第二个人重新引用clone副项目,之后需要重新初始化submodule
git clone SSH地址 --recurive :此方式克隆的项目,会把项目所有的引用都给下来下来。
submodul 的删除步骤:
- git rm --cached mymodule
- rm -rf mymodule
- rm -rm .gitmodule
- git push
Git subtree
另外的一种仓库引用仓库,实现代码的双向传递
git remote add origin SSH地址 : 本地仓库添加到远程仓库
使用subtree地址引用:
Git remote add subtree-origin SSH地址
git subtree add --prefix==subtree subtree-origin master :
(--squah)参数:--squah 参数 是否合并代码,并且作者也是当前的作者。作用:防止被引用的仓库的log污染当前的仓库。如果使用了,就一直使用。如果不使用,就一直不要使用。不然会冲突。
git subtree pull --prefix==subtree subtree-origin master : 更新引用代码。
git push 时,代码不会更新到被引用的仓库中。
git subtree push --prefix==subtree subtree-origin master : 推送代码到被引用的仓库中。
git subtree 深度剖析
--squah 参数,如果使用了,就一直使用。如果不使用,就一直不要使用。不然会冲突。
git subtree split : 分割git模块
学习要沉下心来,不要浮躁。
Git cherry-pick
将本地分支的修改应用到另外的一个分支上
git cherry-pick commit_id : 将此commit_id的改动应用到当前的分支
出现冲突时,手动解决冲突。
移动后,记得删除元分支上的不想要的commit记录。
Git rebase
变基,衍合 。修改分支的根基
rebase的功能类似于merge
区别: merge不会修改历史。rebase会修改分支提交的历史。
git checkout test
git rebase dev : 将test的修改打补丁到dev上
rebase注意事项:
rebase过程中也会出现冲突。解决冲突后执行 git rebase - - continue
任何时候都可以终止rebase。分支恢复到rebase之前的状态。 git rebase - - abort
不要对master分支执行rebase,否则会引起很多问题
一般来说,执行reabse的分支都是本地的分支,没有推送到远程版本库
idea和gradle的使用
1. 搭建基于gradle的项目
2. gretty插件
内置Tomcat
3. Git、idea、gradle
Gitlab
Gitlab推荐安装在Unix上
中小型公司不会自己买服务器,一般都放在云服务器就够用了
阿里云ECS
ssh root@地址
课程回顾总结
常用命令的使用
Git分支的使用
Linux常用命令
Git缓存的功能
Git的工作区,暂存区,提交区
Git远程操作的使用
Github的使用
Git协作模型的使用
Git分支使用策略介绍
Git别名操作
Git GUI使用
pull push 的使用
Git GC的介绍
Git subtree 和 Git subModule的使用
2020年01月20日17:31:26 结束学习。
工作不止,学习不止,生活不止。现实世界的软件开发是复杂的,复杂性并不体现在具体的技术栈上。如Java,Spring,Docker,MySQL等等具体的技术是可以学习很快就熟练掌握的。软件真正复杂的部分,往往是业务本身,比如航空公司的超售策略,在超售之后Remove乘客的策略等;比如亚马逊的打折策略,物流策略等。
你还不会Git?那就不要写代码了(一)的更多相关文章
- Git时间(第一次写,这个怎么玩啊)
1.安装 Liunx直接打开shell界面,输入:sudo apt-get install git-core ,按下回车之后输入密码即可完成安装: Windows系统在https://git-for- ...
- 使用GIt向github上传代码
github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.这对于一般人来说公共仓库就已经足够了. 1.注册账户以及创建仓库 要想 ...
- 代码管理工具:使用github和git工具管理自己的代码
一.git工具和账户创建 1.1 安装 Git 是 Linus Torvalds 最近实现的源代码管理软件."Git 是一个快速.可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系 ...
- 学习git 新手。这个写的不错
转自:https://www.cnblogs.com/wupeiqi/p/7295372.html 版本控制 说到版本控制,脑海里总会浮现大学毕业是写毕业论文的场景,你电脑上的毕业论文一定出现过这番景 ...
- git +maven+java+jenkins自动化代码持续集成
1.安装JDK JDK下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 新 ...
- git学习------>从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git?
最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年. 因此导致虽然项目迁移过来了,但 ...
- 项目管理---git----快速使用git笔记(五)------本地项目代码提交到远程仓库---新建项目
上一篇我们已经知道了怎么从远程仓库获取项目文件代码. 项目管理---git----快速使用git笔记(四)------远程项目代码的首次获取 git还有一种使用场景是 我本来在电脑里就有一个项目,现在 ...
- Git利用命令行提交代码步骤
利用命令行提交代码步骤进入你的项目目录1:拉取服务器代码,避免覆盖他人代码git pull2:查看当前项目中有哪些文件被修改过git status具体状态如下:1:Untracked: 未跟踪,一般为 ...
- 【Git】4、创建代码仓库,HTTP、SSH拉取远端代码
拉取远端代码:使用Git命令下载远程仓库到本地 文章目录 拉取远端代码:使用Git命令下载远程仓库到本地 1.创建远程代码仓库 2.创建仓库 3.进入仓库 4.HTTP(S)获取远程仓库 首次拉取 更 ...
- 手把手教你使用Git管理你的软件代码
什么是分布式版本控制系统?Git有哪些常用命令?什么是仓库?Git的操作区域包括哪些?Git有哪些常用对象(object)?git rebase和git merge的区别是什么?git reset,g ...
随机推荐
- Gora是一个类似Hibernate的ORM框架
Gora是一个类似Hibernate的ORM框架,但是不只是支持关系数据库,更重要支持NoSQL之类大数据的存储. 支持NoSQL之类大数据的存储 Apache Gora是一个开源的ORM(Objec ...
- 关于IFRAME的onload事件
昨天遇到一个关于iframe的问题,比如a页面中嵌入了一个iframe称为a_iframe,如果直接在a_iframe的标签上直接加入属性的设置,onload=’’,这样才onload事件才是起作用的 ...
- linux下svn清除非版本控制文件的方法
使用svn status命令,文件名前面显示问好的就是非版本控制的文件
- Java8 API学习2 - java.lang.CharSequence, java.lang.String
CharSequence public interface CharSequence 字符序列接口, 实现此接口的非抽象类有String, StringBuffer, StringBuilder. 从 ...
- linux 不用 ioctl 的设备控制
有时控制设备最好是通过写控制序列到设备自身来实现. 例如, 这个技术用在控制台驱动 中, 这里所谓的 escape 序列被用来移动光标, 改变缺省的颜色, 或者进行其他的配置任 务. 这样实现设备控制 ...
- EJB版本
1999: ejb version 1.1 -- j2ee 1.22001: ejb version 2.0 -- j2ee 1.32003: ejb version 2.1 -- j2ee 1.42 ...
- Linux 内核 启动时间
为见到 PCI 如何工作的, 我们从系统启动开始, 因为那是设备被配置的时候. 当一个 PCI 设备上电时, 硬件保持非激活. 换句话说, 设备只响应配置交易. 在上电时, 设备没有内存并且没有 I/ ...
- LuoguP3521 [POI2011]ROT-Tree Rotations
P3521 [POI2011]ROT-Tree Rotations 题目大意: 给一棵\((1≤n≤200000)\)个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少. 我们发现 ...
- 数据预处理以及探索性分析(EDA)
1.根据某个列进行groupby,判断是否存在重复列. # Count the unique variables (if we got different weight values, # for e ...
- qt添加cef库嵌入web,linux 下Qt WebEngine 程序打包简单记录
http://www.cnblogs.com/oloroso/p/6051631.html http://www.cnblogs.com/oloroso/p/6149000.html