面试被吊打系列
|
2PC XA定义了规范,那么2PC和3PC就是他的具体实现方式。 2PC叫做二阶段提交,分为投票阶段和执行阶段两个阶段。 投票阶段 TM向所有的参与者发送prepare请求,询问是否可以执行事务,等待各个参与者的响应。 这个阶段可以认为只是执行了事务的SQL语句,但是还没有提交。
如果都执行成功了就返回YES,否则返回NO。 每个开发人员将远程仓库的代码 clone 下来变成了属于自己的本地仓库,提交代码时先提交至本地仓库,然后再推送到远程仓库。 这种模式相比 SVN 只是多了一个本地仓库而已,有了 SVN 的经验开发人员也很快能熟悉这种模式,在前些年有很多公司都是将 Git 作为 SVN 来用的。
从提交记录来看,集中式工作流通常是一条直线往前走,如下图: 作为一个开发人员每天必不可少要提交代码,但是你真的懂代码提交吗?这篇文章带领大家熟悉一下常用的代码提交方式,大家可以根据自己所在公司的开发模式对号入座。 代码提交方式可以用一个专业术语描述:代码工作流,在 SVN 时代大家会使用集中式工作流,所有人都往一个主库分支合入代码;随着技术的演进,以 Git 为代表的分布式代码管理工具横空出世,在 Git 的基础上又逐渐出现了多种代码管理工作流:功能分支工作流,Gitflow 工作流,Forking 工作流。搬好小板凳,下面一一位大家讲解。 集中式工作流
集中式工作流这种工作方式对于使用过SVN的同学想必会非常的熟悉,让我们思考下在 SVN下的协作体验,不同的开发同学需要依次将本地的修改提交到服务器,如果有冲突就先解决本地的冲突再提交,这个过程中远端的服务器就像是一个集中管理者,管理着所有人的代码提交,所以 SVN的开发协作流程就是典型的集中式工作流。 至此,双方都有对方的椭圆曲线公钥、自己的椭圆曲线私钥、椭圆曲线基点 G。于是,双方都就计算出点(x,y),其中 x 坐标值双方都是一样的,前面说 ECDHE 算法时候,说 x 是会话密钥,但实际应用中,x 还不是最终的会话密钥。 还记得 TLS 握手阶段,客户端和服务端都会生成了一个随机数传递给对方吗? 最终的会话密钥,就是用「客户端随机数 + 服务端随机数 + x(ECDHE 算法算出的共享密钥) 」三个材料生成的。 之所以这么麻烦,是因为 TLS 设计者不信任客户端或服务器「伪随机数」的可靠性,为了保证真正的完全随机,把三个不可靠的随机数混合起来,那么「随机」的程度就非常高了,足够让黑客计算出最终的会话密钥,安全性更高。
算好会话密钥后,客户端会发一个「Change Cipher Spec」消息,告诉服务端后续改用对称算法加密通信。 (编辑:怀化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
