fsoooo Blog

内不欺己,外不欺人,上不欺天。君子所以慎独。

Go学习笔记 Channel通道

不同的并行协程之间交流的方式有两种,一种是通过共享变量,另一种是通过队列。Go 语言鼓励使用队列的形式来交流,它单独为协程之间的队列数据交流定制了特殊的语法 —— 通道。 通道是协程的输入和输出。作为协程的输出,通道是一个容器,它可以容纳数据。作为协程的输入,通道是一个生产者,它可以向协程提供数据。通道作为容器是有限定大小的,满了就写不进去,空了就读不出来。通道还有它自己的类型,它可以限定...

Go学习笔记 Channel最佳实践之基本规则【译】

channel[通道]是golang的一种重要特性,正是因为channel的存在才使得golang不同于其它语言。channel使得并发编程变得简单容易有趣。 ###channel的概念和语法 一个channel可以理解为一个先进先出的消息队列。channel用来在协程[goroutine]之间传递数据,准确的说,是用来传递数据的所有权。一个设计良好的程序应该确保同一时刻channel里...

Go学习笔记 如何优雅的关闭go Channel【译】

###通道关闭原则 不要在消费端关闭信道,不要在有多个并行的生产者时对信道执行关闭操作。 也就是说应该只在[唯一的或者最后唯一剩下]的生产者协程中关闭信道,来通知消费者已经没有值可以继续读了。只要坚持这个原则,就可以确保向一个已经关闭的信道发送数据的情况不可能发生。 ###暴力关闭信道的正确方法 如果想要在消费端关闭信道,或者在多个生产者端关闭信道,可以使用恢复机制来上个保险,避免...

Google 给程序员的 13 条代码审查标准!

以下为译文: 在本文中,我们将简要介绍13条代码审查标准,希望能够通过这些标准极大地帮助改善软件的质量,同时让开发人员保持心情愉悦。 代码审查是开发过程中的一个环节,顾名思义,代码审查需要一位或多位开发人员审查另一位开发人员(即代码的作者)编写的代码,以确保: 代码没有任何错误,没有bug,也没有问题; 代码符合质量与样式指南的要求和标准; ...

Go 语言之父 Rob Pike

近几年来在计算机语言排行榜上成长最快的语言就是 Go 语言。它勇往直前势如破竹,从几年前的 50 名之外快速跃进前十的宝座,而且还在马不停蹄向上攀登。 大家都知道 Go 语言是 Google 推出来的,它是由 Google 包养了一群骨灰级程序员组成了一个叫着「Go Team」的精英团队共同打造。这个队伍里有鼎鼎大名的 Unix 操作系统发明人 Ken Thompson,大胡子形象的他在人...

Gitflow学习笔记 集中式工作流

但使用Git加强开发的工作流,Git比SVN有几个优势。首先,每个开发可以有属于自己的整个工程的本地拷贝。隔离的环境让各个开发者的工作和项目的其他部分(修改)独立开来 —— 即自由地提交到自己的本地仓库,先完全忽略上游的开发,直到方便的时候再把修改反馈上去。 其次,Git提供了强壮的分支和合并模型。不像SVN,Git的分支设计成可以做为一种用来在仓库之间集成代码和分享修改的『失败安全』...

Gitflow学习笔记 操作流程(一)

GitFlow工作流操作流程 1. 主要分支介绍 1.1 master分支 主分支,产品的功能全部实现后,最终在master分支对外发布。 1.2 develop分支 开发分支,基于master分支克隆,产品的编码工作在此分支进行。 1.3 release分支 测试分支,基于delevop分支克隆,产品编码工作完成后,发布到本分支测试,测试过程中发现的小bug直接在本分支进...

Gitflow学习笔记 开始使用

开始正确使用Git-flow Git的优点 Git的优点很多,但是这里只列出我认为非常突出的几点。 分布式,所有本地库包含了远程库的所有内容。 优秀的分支模型,创建切换分支以及合并分支,非常方便。 操作简单快捷,Git由于代码都在本地,创建切换分支和合并分支非常快捷。 版本管理的挑战 虽然有这么优秀的版本管理工具,但是我们面对版本管理的时候,依然有非常大得挑战,我们...

Gitflow学习笔记 分支管理策略

相比同类软件,Git有很多优点。其中很显著的一点,就是版本的分支(branch)和合并(merge)十分方便。有些传统的版本管理软件,分支操作实际上会生成一份现有代码的物理拷贝,而Git只生成一个指向当前版本(又称”快照”)的指针,因此非常快捷易用。 但是,太方便了也会产生副作用。如果你不加注意,很可能会留下一个枝节蔓生、四处开放的版本库,到处都是分支,完全看不出主干发展的脉络。 ...

Git 和 Svn 区别

最近换了工作,开始接触svn 这个版本控制工具。之前也听说过,就是没用过,最近两天学习 了svn的用法。今天把Git 和 svn 做一下对比 版本控制器的作用: 1. 可以协同代码管理,让多人开发代码得以实现。 2. 回归到以前的任何一个时间点的代码处(好比:开始写了很多代码,后面有修改了一些,突然IDE崩溃,但是发现还是以前的代码更好,这个时候无法回去,这个时候没有后悔药吃,但是可以使...