CICD 流程学习(一)Git 介绍与使用

2023-10-27

一  版本控制

1  基本概念

  • 版本控制是管理修改的艺术
  • 指对软件开发过程中各种程序代码、配置文件及说明文档等文件的变更管理
  • 是软件管理配置的核心思想之一

2  版本控制的好处

  • 优雅的备份。本地和服务器均保存备份文件,当文件出现问题时可以通过服务器修复
  • 多人并行开发。每个人通过创建属于自己的分支,不影响其他人的操作
  • 了解变化内容。提交版本信息时需要加上简单的备注信息,标记本次修改的内容

二  版本控制系统

1  概念

  • 是一个记录文件内容变化以便将来查询特定版本修改情况的系统
  • 不仅可以应用于软件源代码文件,而且可以对任意类型文件进行版本控制
  • 版本库是版本控制系统的核心

2  版本库

  • 版本库是版本控制的核心
  • 任意数量客户端
  • 客户端通过写数据库分享代码
  • 典型的客户/服务器系统

 3  分类

集中式版本控制系统

  • 开发者之间共用一个仓库(repository)
  • 所有操作需要联网
  • 软件:CVS 、SVN(Subversion)

分布式吧版本控制系统

  • 每个开发者都是一个仓库的完整克隆,每个人都是服务器
  • 支持断网操作
  • 软件:Git、BitKeeper

三  分布式版本控制 Git

1  简介

  • Linux Torvalds 编写
  • 是一个开源的分布式版本控制软件
  • the stupid content tracker 傻瓜内容跟踪器
  • 可以有效、高速的处理从很小到非常大的项目版本控制

2  Linux安装

#安装中文支持(选做)
[root@Programer ~]# echo $LANG                              #查看当前系统语言及编码
en_US.UTF-8
[root@Programer ~]# yum -y install langpacks-zh_CN.noarch   #安装中文支持
[root@Programer ~]# vim /etc/locale.conf                    #配置系统使用中文及编码
[root@Programer ~]# cat /etc/locale.conf 
LANG="zh_CN.UTF-8"
[root@Programer ~]# reboot                                  #重启使语言配置生效

[root@Programer ~]# echo $LANG                              #确认使用中文编码
zh_CN.UTF-8
[root@Programer ~]# 

#yum源中集成了Git软件包,使用yum安装Git
[root@Programer ~]# yum clean all; yum repolist -v          #插件yum源是否可用
...
Total packages: 8,265
[root@Programer ~]# yum -y install git                      #使用yum安装Git
...
Complete!
[root@Programer ~]# git --version                           #查看Git版本
git version 2.31.1
[root@Programer ~]# git --help                              #查看Git命令帮助信息

3  Git 基础概念 

  • 工作区(Workspace):存放从仓库提取出来的文件的地方,放在磁盘上供你使用或修改。
  • 暂存区(Index/Stage):就是一个文件,索引文件,保存了下次将提交的文件列表信息
  • 仓库(Local Repository):保存所有数据的地方,这里面有提交的所有版本的数据
  • 远程仓库(Remote Repository):托管代码的地方,可供其他人浏览、下载代码的服务器

4 Git工作流程

5  Git 常用子命令

- config 修改Git配置
- init  初始化本地仓库
- add 添加修改到暂存区
- commit 提交修改到本地仓库
- status 查看当前状态
- clone 将远程服务器的仓库克隆到本地
- push 提交修改带远程服务器

6  Git基础配置

#Git基础配置
    # --local:  仓库级
    # --global: 全局级
    # --system: 系统级
[root@Programer ~]# git config --global user.name mark              #设置用户名
[root@Programer ~]# git config --global user.email mark@tedu.cn     #设置用户邮箱
[root@Programer ~]# git config --global init.defaultBranch master   #设置版本库默认分支

[root@Programer ~]# git config --list                               #查看已有Git配置
user.name=mark
user.email=mark@tedu.cn
init.defaultbranch=master
[root@Programer ~]# cat ~/.gitconfig                                #查看Git配置持久化文件
[user]
        name = mark
        email = mark@tedu.cn
[init]
        defaultBranch = master
[root@Programer ~]# 

7  Git创建版本库

  • Git初始化空版本库
#使用Git命令初始化空版本库
[root@Programer ~]# ls
[root@Programer ~]# git init myproject                          #初始化空版本库
已初始化空的 Git 仓库于 /root/myproject/.git/
[root@Programer ~]# ls                                          #确认版本库已创建
myproject
[root@Programer ~]# ls -a myproject/                            
.  ..  .git
[root@Programer ~]# ls -a myproject/.git/
.  ..  branches  config  description  HEAD  hooks  info  objects  refs
[root@Programer ~]#
  • 将已有目录制作成版本库
#将已有目录制作成Git版本库
[root@Programer ~]# mkdir mytest                                #创建空目录
[root@Programer ~]# ls -a mytest/                               
.  ..
[root@Programer ~]# cd mytest/
[root@Programer mytest]# git init                               #将已有目录制作成Git版本库
已初始化空的 Git 仓库于 /root/mytest/.git/
[root@Programer mytest]# ls -a
.  ..  .git
[root@Programer mytest]# ls -a .git/
.  ..  branches  config  description  HEAD  hooks  info  objects  refs
[root@Programer mytest]# cd
[root@Programer ~]# 

8  Git版本库操作

#熟悉Git基础命令使用
[root@Programer ~]# cd myproject/
[root@Programer myproject]# git status                          #查看Git本地仓库状态
位于分支 master

尚无提交

无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)
[root@Programer myproject]# echo "Learning Git" >> readme.md    #创建readme文件
[root@Programer myproject]# git status                          #查看Git本地仓库状态
位于分支 master

尚无提交

未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)
        readme.md

提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@Programer myproject]# git add readme.md                   #将文件信息添加到暂存区
[root@Programer myproject]# git status                          #查看Git本地仓库状态
位于分支 master

尚无提交

要提交的变更:
  (使用 "git rm --cached <文件>..." 以取消暂存)
        新文件:   readme.md

[root@Programer myproject]# git commit -m "add readme"          #将暂存区文件提交到本地仓库
[master(根提交) 09d8603] add readme
 1 file changed, 1 insertion(+)
 create mode 100644 readme.md
[root@Programer myproject]# git status
位于分支 master
无文件要提交,干净的工作区
[root@Programer myproject]# 

9  Git版本库查询

#查看本地Git版本库信息
[root@Programer myproject]# git log                             #本地版本库提交记录(详细)
commit 09d8603547b7f7c6cf5b2850dd241d4b8b799b74 (HEAD -> master)
Author: mark <mark@tedu.cn>
Date:   Wed Feb 22 15:00:46 2023 +0800

    add readme
[root@Programer myproject]# git log --pretty=oneline            #本地版本库提交记录(简略)
09d8603547b7f7c6cf5b2850dd241d4b8b799b74 (HEAD -> master) add readme
[root@Programer myproject]# git log --oneline                   #本地版本库提交记录(极简)
09d8603 (HEAD -> master) add readme
[root@Programer myproject]# 

10  Git练习(生成多个版本)

#数量掌握Git本地版本库操作
[root@Programer ~]# cd myproject/
[root@Programer myproject]# echo 123 > test.txt                 #新建test.txt文件
[root@Programer myproject]# git add test.txt                    #将test.txt添加到暂存区
[root@Programer myproject]# git commit -m "add test.txt"        #生成新版本
[master 27466f7] add test.txt
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt
 
[root@Programer myproject]# echo 456 > test.txt                 #修改test.txt文件
[root@Programer myproject]# git add .                           #将修改文件添加到暂存区
[root@Programer myproject]# git commit -m "modify test.txt"     #生成新版本
[master 58cdf79] modify test.txt
 1 file changed, 1 insertion(+), 1 deletion(-)
 
[root@Programer myproject]# echo 789 > test.txt                 #修改test.txt文件
[root@Programer myproject]# git add ./                          #将修改文件添加到暂存区
[root@Programer myproject]# git commit -m "done test.txt"       #生成新版本
[master 0f44bf0] done test.txt
 1 file changed, 1 insertion(+), 1 deletion(-)
 
[root@Programer myproject]# git log --pretty=oneline            #查看本地提交记录(简略)
0f44bf04834eac643a0d56901039cec73128d3cc (HEAD -> master) done test.txt
58cdf7905a95a956fc65da264aab827fc7290dbf modify test.txt
27466f79df8e0cbfd3f8f2349143e054db8ac693 add test.txt
09d8603547b7f7c6cf5b2850dd241d4b8b799b74 add readme
[root@Programer myproject]# git log --oneline                   #查看本地提交记录(极简)
0f44bf0 (HEAD -> master) done test.txt
58cdf79 modify test.txt
27466f7 add test.txt
09d8603 add readme
[root@Programer myproject]# 

四  Git指针

1  HEAD指针概念

  • HEAD 指针是一个可以在任何分支和版本移动的指针
  • 通过移动指针我们可以将数据还原至任何版本

2  Git指针操作

  • 查看Git指针信息

#使用git log命令查看HEAD指针
[root@Programer ~]# cd myproject/
[root@Programer myproject]# git log --pretty=oneline            #查看Git指针
0f44bf04834eac643a0d56901039cec73128d3cc (HEAD -> master) done test.txt
58cdf7905a95a956fc65da264aab827fc7290dbf modify test.txt
27466f79df8e0cbfd3f8f2349143e054db8ac693 add test.txt
09d8603547b7f7c6cf5b2850dd241d4b8b799b74 add readme
[root@Programer myproject]# cat test.txt                        #查看文件内容
789
[root@Programer myproject]# 
  • 利用指针实现Git版本还原

#reset子命令用于版本还原
    #--soft:缓存区和工作目录不受影响。reset后分支和HEAD指针移动到指定的commit,代码文件内容和reset之前一样,修改部分已加入到暂存区。通常用于重新提交。
    #--mixed:(默认)工作目录不受影响。reset后分支和HEAD指针移动到指定位置,代码文件内容和reset之前一样,修改部分未加入到暂存区。(需要重新执行git add)
    #--hard:工作目录,缓存区均受影响。reset后分支和HEAD指针移动到指定commit,代码文件内容回退到指定commit,工作空间为clean状态。通常用于获取指定版本的代码文件
[root@Programer myproject]# git reset --hard 58cdf7905a     #还原到指定版本
HEAD 现在位于 58cdf79 modify test.txt
[root@Programer myproject]# git log --oneline               #确认HEAD指针移动
58cdf79 (HEAD -> master) modify test.txt
27466f7 add test.txt
09d8603 add readme
[root@Programer myproject]# cat test.txt                    #查看文件内容
456
[root@Programer myproject]# 

五  Git 分支

1  分支的基本概念

  • 分支可以让开发分多条主线同时进行,每条主线互不影响
  • 按功能模块分支,按版本分支
  • 分支也可以合并

2  常见的分支规范

MASTER分支(MASTER是主分支,是代码的核心)

DEVELOP分支(DEVELOP分支最新开发成果的分支)

RELEASE分支(为发布新产品设置的分支)

HOTFIX分支(为了修复软件BU缺陷的分支)

FEATURE分支(为开发新功能设置的分支)

3  Git分支操作

  • Git分支管理

#查看当前分支信息,branch子命令
[root@Programer ~]# cd myproject/
[root@Programer myproject]# git status                      #查看本地Git仓库信息
位于分支 master
无文件要提交,干净的工作区
[root@Programer myproject]# git branch -v                   #查看分支信息
* master 0f44bf0 done test.txt
[root@Programer myproject]# 

#创建分支
[root@Programer myproject]# git branch hotfix               #创建hotfix分支
[root@Programer myproject]# git branch feature              #创建feature分支
[root@Programer myproject]# git branch -v                   #查看分支信息
  feature 0f44bf0 done test.txt
  hotfix  0f44bf0 done test.txt
* master  0f44bf0 done test.txt
[root@Programer myproject]# 

#切换分支,checkout子命令
[root@Programer myproject]# git branch -v                   #查看分支信息
  feature 0f44bf0 done test.txt
  hotfix  0f44bf0 done test.txt
* master  0f44bf0 done test.txt
[root@Programer myproject]# git checkout hotfix             #切换分支
切换到分支 'hotfix'
[root@Programer myproject]# git branch -v                   #查看分支信息
  feature 0f44bf0 done test.txt
* hotfix  0f44bf0 done test.txt
  master  0f44bf0 done test.txt
[root@Programer myproject]# git checkout feature            #切换分支
切换到分支 'feature'
[root@Programer myproject]# git branch -v                   #查看分支信息
* feature 0f44bf0 done test.txt
  hotfix  0f44bf0 done test.txt
  master  0f44bf0 done test.txt
[root@Programer myproject]# 

#删除分支
[root@Programer myproject]# git branch develop              #创建develop分支
[root@Programer myproject]# git branch -v
  develop 0f44bf0 done test.txt
* feature 0f44bf0 done test.txt
  hotfix  0f44bf0 done test.txt
  master  0f44bf0 done test.txt
[root@Programer myproject]# git branch -d develop           #删除develop分支
已删除分支 develop(曾为 0f44bf0)。
[root@Programer myproject]# 
  • Git合并分支

#无冲突分支合并
[root@Programer ~]# cd myproject/
[root@Programer myproject]# git checkout hotfix             #切换到hotfix分支
切换到分支 'hotfix'
[root@Programer myproject]# echo haha > haha.txt            #创建haha文件
[root@Programer myproject]# git add ./                      #添加haha到暂存区
[root@Programer myproject]# git commit -m "add haha.txt"    #生成新版本
[hotfix 108cf46] add haha.txt
 1 file changed, 1 insertion(+)
 create mode 100644 haha.txt
[root@Programer myproject]# ls
haha.txt  readme.md  test.txt
[root@Programer myproject]# cat haha.txt 
haha
[root@Programer myproject]# git checkout master             #切换到master分支
切换到分支 'master'
[root@Programer myproject]# echo xixi > xixi.txt            #创建xixi文件
[root@Programer myproject]# git add ./                      #添加xixi到暂存区
[root@Programer myproject]# git commit -m "add xixi.txt"    #生成新版本
[master 32f0842] add xixi.txt
 1 file changed, 1 insertion(+)
 create mode 100644 xixi.txt
[root@Programer myproject]# ls
readme.md  test.txt  xixi.txt

[root@Programer myproject]# git branch -v                   #切换到master分支
  feature 0f44bf0 done test.txt
  hotfix  108cf46 add haha.txt
* master  32f0842 add xixi.txt
[root@Programer myproject]# git merge hotfix                #合并hotfix分支到master分支
Merge made by the 'recursive' strategy.
 haha.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 haha.txt
[root@Programer myproject]# ls                              #确认文件
haha.txt  readme.md  test.txt  xixi.txt
[root@Programer myproject]# cat haha.txt 
haha
[root@Programer myproject]# cat xixi.txt 
xixi
[root@Programer myproject]# 

#有冲突分支合并(修改不同分支中相同文件的相同行)
[root@Programer myproject]# git branch -v                   #查看分支
  feature 0f44bf0 done test.txt
  hotfix  108cf46 add haha.txt
* master  b4bea28 Merge branch 'hotfix' 合并hotfix分支
[root@Programer myproject]# git checkout hotfix             #切换到hotfix分支
切换到分支 'hotfix'
[root@Programer myproject]# echo "hahaha" > a.txt           #创建a.txt文件
[root@Programer myproject]# git add .                       #添加到暂存区
[root@Programer myproject]# git commit -m "hotfix"          #生成新版本
[hotfix af8a04b] hotfix
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
[root@Programer myproject]# git checkout master             #切换到master分支
切换到分支 'master'
[root@Programer myproject]# echo "xixixi" > a.txt           #创建a.txt    
[root@Programer myproject]# git add .                       #添加到暂存区
[root@Programer myproject]# git commit -m "master"          #生成新版本
[master f556200] master
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
 
[root@Programer myproject]# git merge hotfix                #合并hotfix分支到master分支
冲突(add/add):合并冲突于 a.txt
自动合并 a.txt
自动合并失败,修正冲突然后提交修正的结果。                      #文件冲突,合并失败,手工解决
[root@Programer myproject]# cat a.txt 
<<<<<<< HEAD
xixixi
=======
hahaha
>>>>>>> hotfix
[root@Programer myproject]# vim a.txt                       #手工解决冲突
[root@Programer myproject]# cat a.txt 
xixixi
hahaha
[root@Programer myproject]# git add ./                      #添加到暂存区
[root@Programer myproject]# git commit -m "resolv conflict" #生成新版本,解决冲突
[master 2a6f272] resolv conflict
[root@Programer myproject]# 

4  分支与HEAD指针的关系

  • 创建分支的本质是在当前提交上创建一个可以移动的指针
  • 根据HEAD这个特殊指针来判断当前分支

5  多分指提交的流程

  • 切换分支,只是移动HEAD指针

  •  testing分支的提交,不会影响master

  •  切换回master分支

  •  master 提交也不影响testing分支

六  TAG标签

1  概念

  • 标签用于标记某一提交点,唯一绑定一个固定的commitld
  • 相当于为这次提交记录指定一个别名,方便提取文件
  • 可以为重要的版本打上标签,标签可以是一个对象,也可以是一个简单的指针,但是指针不会移动

2  Git标签操作

#使用tag子命令管理标签
[root@Programer ~]# cd myproject/
[root@Programer myproject]# git tag                         #查看已有标签
[root@Programer myproject]# git tag v1                      #创建v1标签
[root@Programer myproject]# git tag                         #查看已有标签
v1
[root@Programer myproject]# git tag v2                      #创建v2标签
[root@Programer myproject]# git tag                         #查看已有标签
v1
v2
[root@Programer myproject]# git tag -d v2                   #删除v2标签
已删除标签 'v2'(曾为 2a6f272)
[root@Programer myproject]# 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CICD 流程学习(一)Git 介绍与使用 的相关文章

  • 如何使用 API 和 C# 将文件从 azure DevOps 服务器下载到指定路径

    我正在尝试使用 API 从 azure Devops 服务器下载文件 API 给出了成功响应 但是没有下载任何文件 如果我们删除格式参数 我们将获得带有文件链接的响应 单击该文件不会下载 示例代码 var personalaccesstok
  • 如何在 Visual Studio 2013 中隐藏未提交的更改

    需要一些帮助 了解如何使用 Visual Studio 2013 搁置 Git 存储库中未提交的更改 我来自 PHPStorm 您可以在一个分支上搁置未提交的更改 切换到另一个分支并取消搁置 但是 我无法找到 了解如何在 Visual St
  • 使用两个帐户推送到 Git

    我跟着这个tuotrial http code tutsplus com tutorials how to work with github and multiple accounts net 22574关于如何在同一台计算机上拥有两个单独
  • php run git 收到“ssh 权限被拒绝”

    我正在尝试从浏览器中运行 git pull php 脚本 但我得到了 sh 连接到主机 git assembla com 端口 22 权限被拒绝 我的 PHP 脚本
  • 是否应该在 git 中跟踪 .history 文件夹中的文件[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 每当我进行更改时 history 文件夹中的某些文件在我的状态中都会显示为未跟踪 我将如何控制它 即 make 是自动添加或不添加这些内容 而不
  • `git add --patch` 和 `--word-diff`

    git add patch提供了一个很好的界面 用于检查未暂存的更改 然后仅暂存下一次提交中需要的更改 很好 除了一件事 没有明显的方法来选择哪个diff视图来使用 特别是 我希望能够配置git add patch以同样的方式向我呈现差异g
  • 您对版本控制进行到什么程度了? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Git 克隆致命

    我在执行 git clone 时遇到错误 fatal pack has bad object at offset 824775943 inflate returned 1 fatal index pack failed 它仅适用于 Wind
  • Git - 显示远程分支的远程名称

    是否有一个 Git 命令可以显示远程分支的远程名称 目前 我坚持使用 shell utils 从远程分支引用中提取远程名称 例如 echo remote name branch name sed r s 1 remote name 有时出于
  • 来自 eclipse 的部分 git 提交 (egit)

    假设我有一个有 2 个更改的文件 如何使用 egit 只提交其中之一 命令行版本可以在以下位置找到this https stackoverflow com questions 1085162 commit only part of a fi
  • 如何使用 libgit2 创建空提交?

    我一直在寻找libgit2 C API 参考 https libgit2 org libgit2 但我不知道如何模仿git commit allow empty libgit2 是否有内置方法来创建空提交 如果没有 git 如何在底层创建一
  • 将 svn 存储库添加到现有的 git 存储库中?

    我知道你可以使用 git svn init 来跟踪 svn 存储库 但这是为了你想创建一个全新的存储库 我的情况是 我目前已经有一个现有的 git 存储库 并且希望通过将 svn 存储库设为我当前 git 存储库中的远程分支来跟踪 svn
  • 如何让 git 和 copSSH 在正确的目录中查找密钥?

    我刚刚安装了 Windows 版 copSSH 当我启动它时 我得到一个目录C copSSH home Nick ssh其中有我的酒吧和私钥 当我通过 Cygwin bash 窗口访问此目录时 使用 ssh 用户 主机 我很高兴地登录了 但
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • Git refs/remotes/origin/master 没有指向有效的对象

    在上次合并到 Git 存储库的 master 分支后 我失去了克隆存储库的能力 Cloning into test repository remote Counting objects 126084 done remote Compress
  • EGit(Eclipse git 插件)可以使用 SSH 密钥代替用户名和密码吗?

    我需要提交的 git 中央存储库是使用 SSH 密钥配置的 我的用户名是jmglov 但是当我执行 git 操作时 例如git clone 我使用这个配置 jmglov kitiara cat git config remote origi
  • git Branch -d :致命 - 无法查找 HEAD 的提交对象

    假设我在一个裸存储库 远程 中 如果我尝试使用以下命令删除分支git branch d
  • git stash 删除最旧的存储(比如最旧的 5 个存储)

    如何在一个语句中删除最旧的存储 例如最旧的 5 个存储 而不是执行以下操作 git stash drop stash 3 git stash drop stash 4 git stash drop stash 5 git stash dro
  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • 按时间顺序将多个文件夹提交到 git 中

    我有数百个网站备份 每个文件夹一个 我想将它们放入 git 存储库中 每个备份作为一个版本 这些变化主要涉及图像文件和每天 2 个数据库备份 大小约为 25 GB 并且不断增加 有没有办法告诉 git 获取其中一个文件夹并将其提交到存储库中

随机推荐

  • Jlink命令行烧录

    1 新建jlink down cmd txt内容如下 usb 50120677 si 1 speed 4000 device STM32l152xE r h erase loadfile D work TMP GPC PBM8 hex r
  • 太原理工大学14年Java试题复习笔计

    2014年Java期末题复习笔计 在方法体中显示抛出异常 throw 声明异常 throws Java组件中 JButton可以实现一个按钮 启用一个线程 需要调用start 方法 notify方法只唤醒一个等待 对象的 线程并使该线程开始
  • TimingDesigner使用——软件概述2

    软件简介 Timing designer是一个画时序图的工具 可以用于在逻辑设计初期 对关键路径进行时序设计 同时具有一定的时序验证功能 利于在设计初期发现问题 减少设计反复 该工具不仅可以用于FPGA逻辑设计 还可以用于PCB的时序设计
  • APMCM亚太地区数学建模历年赛题

    亚太地区数学建模历年赛题 2020年亚太地区数学建模A题 2020年亚太地区数学建模B题 附上小队做的B题 Second Prize 2019年亚太地区数学建模 A题 2019年亚太地区数学建模 B题 2018年亚太地区数学建模 A题 20
  • Java Excel 打开文件报发现“xx.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复问题解决

    问题描述 发现 文件 xlsx 中的部分内容有问题 是否让我们尽量尝试恢复 问题分析 1 后端的导出接口写的不对 又返回流数据 又返回响应体数据 导致前端将流数据和响应体数据都下载到了excel文件中 PostMapping export
  • FastDFS是如何解决数据一致性问题的?

    FastDFS是如何解决数据一致性问题的 本篇文章转载于 FastDFS 作者 余庆 大佬的 FastDFS分享与交流 公众号 保证数据一致性是分布式系统面临的最大难题 尤其是要做到数据强一致性 FastDFS 作为一款分布式文件系统 是如
  • springboot pageHelper实现分页

    pom xml 节点 dependencies 下添加 pagehelper 依赖
  • MyBatis3框架详解(二)

    一 MyBatis全局配置文件 MyBatis的全局配置文件包含设置 settings 和属性 properties 信息 文档结构如下 二 全局配置文件中 引入dtd约束 目的 为了在全局配置文件 mybatis config xml 中
  • PHPStorm常用插件及安装方法

    进入 File gt Settings gt Plugins gt Browse repositories 搜索你想要的插件 推荐几个常用插件 env files support 可以在env函数使用是提示 env文件中所有的key值的自动
  • 鸿蒙开发初体验从注册开始带你跑第一个页面

    文章目录 1 HUAWEI DevEco Studio 1 1 运行环境要求 1 2 华为账号与实名认证 1 2 1 注册华为账号 1 2 2 实名认证 1 2 3 个人银行卡认证 1 3 下载和安装DevEco Studio 1 4 下载
  • C函数 printf 拼接字符串

    C函数 printf 拼接字符串 从前学C语言 最常用的函数可能就是 printf 了 但是往往是这样 printf 年龄是 d a 由于不懂得怎么拼接字符串 有时候只能用两个printf 语句 很难受 使用多个双引号 printf hel
  • 将普通Maven项目改成Web项目的步骤

    第一步 新建一个Maven项目 第二步 项目右键Properties 选择Project Facets 勾选Dynamic Web Module 第三步 点击下面的Further configuration available 第四步 设置
  • Selenium/webdriver介绍以及工作原理

    最近在看一些底层的东西 driver翻译过来是驱动 司机的意思 如果将webdriver比做成司机 竟然非常恰当 我们可以把WebDriver驱动浏览器类比成出租车司机开出租车 在开出租车时有三个角色 乘客 他 她告诉出租车司机去哪里 大概
  • zotero使用说明

    工欲善其事 必先利其器 Zotero作为一款文献管理软件 其所实现的功能满足了我对 文献管理 的所有想象 从基础的文献存储 文献分类 文献阅读 到文献阅读 笔记 文献之间的关联 再到丰富的插件 它像一个工具箱 阅读文献不再需要来自各个软件工
  • idrac给服务器重装系统,DELL服务器如何使用iDRAC安装操作系统

    一 IDRAC远程控制卡的介绍 iDRAC卡相当于是附加在服务器上的一台独立运行的小型pc 通过与服务器主板上的管理芯片BMC进行通信 监控与管理服务器的硬件状态信息 它拥有自己的系统和IP地址 与服务器上的OS无关 是服务器管理员进行远程
  • IOS UItableView 滚动到底 触发事件

    开发过程中 在使用UItableView 总会遇到加载更多的问题 到底是手势响应瀑布流的方法好 还是添加一个底端cell点击触发加载更多好 我也想有自己的判断 但是我们老板总说了算 没办法 谁叫我给人家打工呢 cell触发式略 这个很简单
  • stm32cube配置定时器

    STM32Cube 是一种支持 STM32 微控制器的软件工具 用于快速配置和生成嵌入式应用程序代码 在 STM32Cube 中配置定时器的步骤如下 打开 STM32CubeMX 工具 创建一个新工程 在 Pinout Configurat
  • r语言进行go富集分析_生信实操

    看图说话栏目曾介绍过GSEA的原理 看图说话 GSEA分析 教你解锁高级的富集分析 今天我们来看一下如何利用R语言进行GSEA分析 如果你有RNA seq的数据 就可以这样做 先把数据整成这样 一共两列 一列是SYMBOL 一列是foldC
  • Python 练习实例03:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

    题目 一个整数 它加上100后是一个完全平方数 再加上168又是一个完全平方数 请问该数是多少 解题思路 首先根据题目体去除所需要的关键信息 什么是完全平方数 可以写成某个整数的平方的数1 1 4 2 9 3 1 首先 x 100 n 2
  • CICD 流程学习(一)Git 介绍与使用

    一 版本控制 1 基本概念 版本控制是管理修改的艺术 指对软件开发过程中各种程序代码 配置文件及说明文档等文件的变更管理 是软件管理配置的核心思想之一 2 版本控制的好处 优雅的备份 本地和服务器均保存备份文件 当文件出现问题时可以通过服务