跳转至

develop

编程类开放书籍荟萃[转]

说明

原文地址在 这里,因为有的内容我不需要,所以只把对我有用留下,放在github是为了方便我自己查找。

操作系统

C/C++

计算机科学的基础

Python

Shell

AWK

R

Perl

编程艺术

web服务器

版本控制

NoSQL

MySQL

项目相关

生物信息学

书单

精品视频推荐

分类 课程名称 作者 来源 备注
C语言 程序设计入门 翁恺 MOOC https://yam.gift/2018/06/20/C/2018-06-20-C-Weng-ZhejiangUniversity/
C++ 面向对象程序设计_C++ 翁恺 MOOC https://github.com/Libaier/ABC/tree/master/c%2B%2B
操作系统 操作系统原理 向勇、陈渝 实验楼、MOOC、学堂在线 - 配套上机实验地址: https://www.shiyanlou.com/courses/221 github上的课程项目: https://github.com/chyyuu/os_course_info
C++ C++面向对象高级开发 Part1&2 侯捷 GeekBand、Boolan https://github.com/FangYang970206/Cpp-Notes
Java 面向对象程序设计 翁恺 MOOC https://www.icourse163.org/course/ZJU-1001542001 https://github.com/pageYe123/JavaMOOC_icourse
数据结构(C++) 数据结构(上&下) 邓俊辉 MOOC https://github.com/HuyuYasumi/DSA_CPP_Deng https://www.xuetangx.com/courses/course-v1:TsinghuaX+30240184+sp/about

github 优质资源

  1. freeCodeCamp/freeCodeCamp 免费代码训练营
  2. EbookFoundation/free-programming-book 免费编程图书
  3. CyC2018/CS-Notes 国人编写的计算机基础教程,中文
  4. jwasham/coding-interview-university 面试考点总结
  5. vinta/awesome-python Python 的一些优质资源. 前面提到的 awesome 系列列表,不再赘述
  6. github/gitignore GitHub 提供的各种项目的 gitignore 文件模板,省了自己写了

Linux安装rar解压软件

系统环境

centOS7

Bash
1
2
3
4
5
[root@dbf69ae824f9 TCR]# uname -m&&uname -r
x86_64
3.10.0-514.21.1.el7.x86_64
[root@dbf69ae824f9 TCR]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

下载软件包

Bash
1
2
3
4
5
wget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz
tar zxvf rarlinux-3.8.0.tar.gz
cd rar
make
make install 

注意:安装需要root权限,没有的话建议用docker尝试,或者自己修改makefile里面的PREFIX 路径

遭遇bug

在尝试解压文件时:

Bash
1
rar x example.rar 

遇到报错:

Bash
1
bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

解决

解释:是因为64位系统中安装了32位程序

解决方法:

Bash
1
yum install glibc.i686

再次尝试解压文件,又遇到报错:

Bash
1
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

解决办法:

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[root@dbf69ae824f9 rar]# yum whatprovides libstdc++.so.6
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirrors.shu.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.163.com
libstdc++-4.8.5-36.el7.i686 : GNU Standard C++ Library
Repo        : base
Matched from:
Provides    : libstdc++.so.6



libstdc++-4.8.5-36.el7.i686 : GNU Standard C++ Library
Repo        : @base
Matched from:
Provides    : libstdc++.so.6



[root@dbf69ae824f9 rar]#

yum whatprovides libstdc++.so.6该命令会提示哪个安装包有这个库文件如上,libstdc++-4.8.5-36.el7.i686 这个包可以提供 libstdc++.so.6库,执行

Bash
1
yum install libstdc++-4.8.5-36.el7.i686

然后,rar 就可以用了

rar -h 查看使用帮助。

参考

  • https://haiwei2009.iteye.com/blog/1908263
  • http://blog.51cto.com/oldboy/597515

Git develop SOAP

我的流程

1. 要从Github下载一个项目,需要用到clone命令。

Bash
1
git clone xxxxxxx.git

2. 创建并切换到新建的分支

Bash
1
git checkout -b feature-A develop

然后可以在新的分支上愉快的写代码开发新功能了,开发测试完毕后:

3. 用add命令来添加新写的代码,commit命令用来提交新写的代码

Bash
1
2
git add feature-A
git commit -m "add feature A"

4. add命令执行后,修改被保存到暂存区。可以理解为你操作本地文件按了下ctrl + s

接下来,不可以直接用到merge命令,合并feature-A分到develop去,如果这样做,很可能出现冲突。因为可能出现有很多人在develop分支上更新。所以你这个时候用pull命令,把远程仓库的更新取回并更新。

shell git checkout develop git pull origin develop

5. 然后再切换回自己的分支,用rebase命令合并新更新到自己目前工作的分支。

Bash
1
2
git checkout feature-A
git rebase develop

一般情况下rebase都是会有冲突的,详细查看冲突可以用命令git status然后就会显示哪个文件有冲突,然后打开有冲突的哪个文件,会发现有一些“<<<<<<<”, “=======”, “>>>>>>>” 这样的符号。

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
"<<<<<<<" 表示冲突代码开始

"=======" 表示test与分支冲突代码分隔符

">>>>>>>" 表示冲突代码的结束

<<<<<<<  

所以这一块区域test分支的代码

=======  
这一块区域develop分支的代码

>>>>>>> 

rebase 和 merge的另一个区别是rebase 的冲突是一个一个解决,如果有十个冲突,先解决第一个,然后用命令

shell git add -u git rebase --continue

继续后才会出现第二个冲突,直到所有冲突解决完,而merge 是所有的冲突都会显示出来。

所以rebase的工作流就是

Bash
1
2
3
4
5
6
7
8
9
git rebase 
while(存在冲突) {
    git status
    找到当前冲突文件,编辑解决冲突
    git add -u
    git rebase --continue
    if( git rebase --abort )
        break; 
}

最后冲突全部解决,rebase成功!!

6. 合并分支git merge --no-ff feature-A 到develop

Bash
1
2
3
git checkout develop
git pull
git merge --no-ff feature-A

7. 更新到gitlab

Bash
1
git push origin develop

引用部分

项目中长期存在的两个分支

  • master:主分支,负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。
  • develop:开发分支,该分支记录相对稳定的版本,所有的feature分支和bugfix分支都从该分支创建。

其它分支为短期分支,其完成功能开发之后需要删除

  • feature/*:特性(功能)分支,用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到 develop 分支,之后删除该分支。
  • bugfix/*:bug修复分支,用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,开发完成自测没问题后合并到 develop 分支后,删除该分支。
  • release/*:发布分支,用于代码上线准备,该分支从**develop**分支创建,创建之后由测试同学发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支到**master**分支和**develop**分支。
  • hotfix/*:紧急bug修复分支,该分支只有在紧急情况下使用,从**master**分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到**master**分支以便上线,同时需要再合并到**develop**分支。

参考

  • https://segmentfault.com/a/1190000008209343
  • http://www.open-open.com/lib/view/open1451353135339.html
  • http://www.open-open.com/lib/view/open1461324562769.html
  • https://blog.csdn.net/chenansic/article/details/44122107