0%

一个月的后端技术学习总结(三)Git及各种杂七杂八

接前两篇文章 《一》 《二》 ### Git的分支管理 Git算是继SVN之后,成为越来越多人的代码托管工具,其设计极大地方便团队的远程协作:分布式仓库使得代码库不再需要中心式管理,灵活多变的版本滚动使得版本的容错性更强。当中,分支管理可算其一大亮点,成为产品迭代开发的绝佳法宝。

Git-flow是Git分支管理的一个很好的Wrapper,使得分支管理更加方便。但是我觉得作为初学者在用了一段时间之后,应该脱出这个Wrapper,逐步去了解一下真正的Git是如何实现分支管理的。

首先,在创建一个Repo之后,我们默认会得到一个Master分支。 Master分支,简单地可以理解成为主干,是我们整个产品的静脉。之所以称为静脉,是它相对于我们其它分支,它的改动次数是比较少的,在我们产品发包时,它的commit节点算是稳定版本或者是可用度极高的版本。

然后,在我们开发时,我们主要在develop分支上进行操作,而当前有多个开发者同时进行开发时,我们也可以根据不同人或者不同功能在develop分支的基础上延伸出更多的feature分支或者是独立开发分支。最后,当单个功能完成或者队员完成了自己部分后,我们将其重新合并到develop分支。

当一个开发周期结束后,我们需要发布新的产品。这时候我们可以将develop分支备份到test分支用于debug测试,完成漏洞修复后合并回develop分支。而当然如果需要多人同时测试,我们也可以建立多个test分支,合并时只需注意处理conflict就好。此时develop分支基本算是一个可用的版本,再进一步修饰或者微改(如增加注释、排版、甚至是代码的压缩处理)后,我们基本可以重新将其合并至master分支。

最后遇到master分支上有超出预期的bugs,这时候我们在master基础延伸出hotfix分支(紧急处理)。将bugs解决后,我们需要重新合并至master分支和当前develop分支。

Python的包管理--虚拟环境VirtualEnv和VirtualEnvWrapper

Virtualenv是python的一个包,用于管理python的packages,可以理解为pip的虚拟环境。 它的好处是当我们开发时,我们能够清楚清楚当前开发环境需要用到哪些python包,减少不必要的包安装,便于工程的环境迁移。 而VirtualenvWrapper则是Virtualenv的一个封装器,简化许多命令操作,方便开发者使用。

Crontab在系统的用处

Cron是操作系统中的一个轮询服务,使得某个指令或者程序能够周期地运行,不断更新数据状态。 而crontab是“cron table”的意思,用于记录轮询服务需要执行的内容和周期。其中的规则允许程序或者命令在指定相应的周期(每10分钟,或者某个月的某几天,或者每7分钟、2小时等等)在给定的运行目录下执行,而搭配重定向输出,能够查看到执行的结果。而周期最短要求为1分钟,所以如果要求比较精确的执行任务可能无法做到。 这个可以用于服务器上对于用户订单数据的更新,也可以制作个人的定期提醒(生日提醒,或者周期任务提醒),而配合shell命令,我们可以实现更多复杂的周期任务,提高生产效率。

异步处理框架Celery

Celery是一个分布的异步任务队列,支持多语言和多broker。 在我们开发Web应用时,对于某些操作可能需要耗费大量时间,常常会阻塞住I/O,大大降低了效率和多用户访问能力。而异步处理能够解决这些操作高I/O占用的问题,进而把CPU时间交还给主进程。至于分布式处理则能够让我们的程序的线程或进程可以在不同核心或者不同机器中运行,再者结合“生产者-消费者”模式,我们能够将不同服务器分配成不同的角色,让我们的开发运维更加明晰。

~~~~