Golang 优化之路——HTTP长连接
压测发现有长连接问题,深入学习了一下。
压测发现有长连接问题,深入学习了一下。
interface 相等比较的时候常会出现一些比较迷惑的行为,如下:
在用 go
编程为 struct
添加方法的时候,我们常常会习惯性的将方法的接收符写为 this
。这样很符合以前的编程习惯,而且 this
在方法中一看就很明显的代表了当前对象。
rest是一种软件架构风格,如果你们的接口是rest接口,那么就可被认为你们的的接口是 restful
的,英文名词和形容词的区别。
定义: 一个对象应该对其他对象保持最少的了解。
依赖倒转原则(Dependency Inversion Principle, DIP)
接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
里氏替换原则(Liskov Substitution principle, LSP)是对子类型的特别定义。它由2008年图灵奖得主、美国第一位计算机科学女博士 芭芭拉·利斯科夫(Barbara Liskov)教授在1987年在一次会议上名为“数据的抽象与层次”的演说中首先提出。
在软件开发中,不可避免的因为业务的变化,如增加新的功能,这时需要对代码进行修改。对于功能扩展,下面是一些不好的行为方式:
单一职责原则是面向对象原则五大原则中最简单,也是最重要的一个原则, 他的字面定义如下:
在面向对象的软件设计过程中,一切皆抽象成对象,在一个复杂的软件系统中有成千上万甚至百万千万级的对象,那么这么多对象怎么去有效的管理?怎么样去重复利用?怎么去科学合理的组合使其能够融为一体并且可以顺利的工作,这是在面向对象设计中着重需要考虑的问题,那么我们的前辈有没有给我们留下来一些科学的指导原则来处理我们的碰到的问题呢? 答案肯定是 “有”, 那就是面向对象的设计原则,面向对象的设计原则规范了我们设计一个对象因遵守的一些约束,我们合理的运用这些原则去设计每一个对象,那么你设计的对象才符合一个对象应该具有的样子,那么将这些对象按照面向对象设计的原则组装得到的系统才能顺利运行,少出Bug,易于维护,易于扩展。
A本地修改了某个文件File,B本地也修改了这个文件File,他们都先后 git push
到了 gerrit
上,这个时候 reviewer
无论先进谁的提交, gerrit
上另一笔提交的状态都会显示 merge conflict
,那如何更新这一笔 change
,而不是 Abandon
然后再提一个 change
呢,假设A的提交了先进了,要修改B的 change
。
作者: 阮一峰 2014年2月 5日