加入收藏 | 设为首页 | 会员中心 | 我要投稿 怀化站长网 (https://www.0745zz.cn/)- 语音技术、云资源管理、物联设备、云计算、决策智能!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

行走自由的扫地机器人

发布时间:2021-02-04 13:39:53 所属栏目:传媒 来源:互联网
导读:在基于git的工作流中,master一般是做持续集成的,开发人员在特性分支开发,经过测试后,就会merge到master做集成测试,测试通过就表示master可部署了。 可现实情况下,特性分支自测没问题,不代表就真的没问题,测试人员还没测试呢,所以此时的master分支其

在基于git的工作流中,master一般是做持续集成的,开发人员在特性分支开发,经过测试后,就会merge到master做集成测试,测试通过就表示master可部署了。

可现实情况下,特性分支自测没问题,不代表就真的没问题,测试人员还没测试呢,所以此时的master分支其实是没准备好的(从master特定commit id到生成分支其实是有一定难度的)

我们目前的做法,在master分支之前还有一个SIT系统集成分支,也就是说这个分支是专门给QA人员测试的,测试没问题后,将特性分支的代码合并到pre分支,仿真环境如果没问题,再将特性分支合并到master分支,然后进行发布。

SIT分支相当于做集成测试了,保证了master的代码是相对可靠的。

那什么代码合并到SIT分支呢?不管几个项目,也不管这些项目具体的上线时间,特性分支都可以合并到SIT分支,然后统一给QA人员测试(相当于提前测试多个项目了),正因为这样,上线的时候无法从SIT分支merge到master分支。

这种工作流多了一个步骤,必然会有副作用,首先merge到SIT分支的时候,如果有冲突,SIT分支不应该解决冲突,因为SIT分支只是为了测试,不会上线的,所以不应该解决冲突;其次很多人说为了避免有冲突,那么我就经常性的将SIT分支上的代码merge(也就是pull)到特性分支,这也非常不好,因为这个特性分支就不隔离了。所以正确的做法,如果merge到SIT分支产生冲突,应该自己去解决冲突,可如何找到和那个分支冲突呢?

还有SIT分支和master分支因为时间点和作用不一样,没有必要保持代码是同步,可pre分支和master分支理论上应该保持同步,上线的时候没有选择merge SIT分支到master分支的原因是cherry-pick还是有一定复杂度的,merge特定commit id也是有复杂度的,所以我们选择从特性分支合并到master,那必然要思考一个问题,pre分支测试通过代表master分支测试通过吗?如果pre到master是一个fast forward,理论上不用再重复测试。
 

什么是内部类?

我们将一个类A定义在另外一个类B中,那么这个类A就叫内部类。

为什么需要内部类呢?

有三点原因:

内部类方法可以访问该类定义的所在的作用域中的数据,包括私有的数据。

内部类可以对同一个包中的其他类隐藏起来。

当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较方便。

内部类有什么特性?

内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。

在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。

创建内部类对象的时刻并不依赖于外围类对象的创建。

内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。

内部类提供了更好的封装,除了该外围类,其他类都不能访问。

来自《Think in java》

内部类有哪些种类?

成员内部类:和成员变量一个级别

局部内部类:在方法里的内部类

匿名内部类:基本上属于接口的实现类,一次性使用的场景。

静态内部类:static修饰的成员内部类

如何使用内部类?

创建静态内部类对象的一般形式为:

外部类类名.内部类类名 xxx = new 外部类类名.内部类类名()

创建成员内部类对象的一般形式为:

外部类类名.内部类类名 xxx = 外部类对象名.new 内部类类名()

上面就是做一个简单的回答,如果面试还可能会继续问,那就得继续往下看。

这是一个黄金分割点,以上这部分是初级面试题。

面试回答:

(编辑:怀化站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读