xml地图|网站地图|网站标签 [设为首页] [加入收藏]

正规赌博平台

当前位置:网上十大正规赌博平台 > 正规赌博平台 > 那是啥气质,从梦断代码看软件工程的复杂性

那是啥气质,从梦断代码看软件工程的复杂性

来源:http://www.nb-machinery.com 作者:网上十大正规赌博平台 时间:2019-10-09 23:23

《梦断代码》讲述了OSAF开源基金会开发日历管理软件Chandler的过程,前后两打程序员,3年时间,4732个bug,耗费百余万美元,只为了打造(听上去似乎很容易,但想来应该不至于简单)一款全功能的日历软件。作者对软件行业的典故、背景与理论了如指掌,在叙事时常常加入宏大的历史背景与理论,正是这些部分让本书充满了史诗般的叙事感,而每个人物也并不仅仅是作为程序员而存在,更像是小说中一个个有血有肉的人物。从一开始读到Chandler项目,就有种隐隐的不详感,这并不需要很强的直觉或者推理,在我使用软件的历史中,对于这样一款软件闻所未闻,单是从这个角度来看,Chandler在与其竞争对手Outlook或者iCalendar的对决中一定未能获得成功。即使项目并未失败,大概也已经不了了之了。

图片 1

7.8.3 使用自动回滚

无法获取返回值和报错信息,所以事务的控制应该交给程序端。

图片 2微信图片_20190226222914.jpg

在求职的时候,我们会遇到各种各样的面试官。有的面试官能够充分的考察求职者的素质,表现非常到位。但是也免不了遇上一些特别的面试官,他们会用各种奇葩的问题来刁难我们,也会用奇葩的理由来拒绝我们。

7.8.2 使用自动提交

软件工程与其他所有行业最大相径庭的一点,可能在于唯有在这一领域,关于失败的专注要多于成功的,软件工程的成功只有一种——按时按照要求完成交付(虽然在大部分情况下这只是一种幻想)——但失败却有着无穷无尽的可能,曾经看到一篇描述某欧洲国家政府软件项目的未经证实的文章,预期两三年完成,实际做了十二年,写了六百多万行代码,换了好几拨软件工程师,项目还陷入在无穷无尽的泥沼中难以自拔。倘若这个故事属实,大概是软件工程中又一个值得出一本专著的“杰作”了,和这个故事相比,《梦断代码》里的失败简直可以说是小巫见大巫了。

图片 3

7.8.1 在循环中提交

循环中重复提交,或者隐式提交,都会重复写入重做日志,造成资源浪费。

关于软件工程失败的经典之作,非《人月神话》莫属,这本书将IBM360系统失败的故事上升到理论高度,总结出一系列关于软件工程复杂性的规律,就IBM而言当然是一种不幸,但对作者布鲁克斯来说可谓失之东隅收之桑榆,《人月神话》对软件工程行业的影响之巨大,不是某一个软件系统可以比拟的。这本书提到的最基本的观点之一,是增加人与月之间的矛盾,软件工程和工程建设项目不同,不能通过简单的提高人数来加快进度,有些过程就如十月怀胎一样,即使叫来一百个孕妇,要完成任务同样需要40周的漫长时光。人数增加带来的效率提升会被越来越高的沟通的复杂性所抵消,到一定阶段可能对软件工程带来负面而不是积极的作用。但软件工程复杂性的本质又使得现代软件工程几乎不可能由独立的一个用户完成,复杂性与效率之间的矛盾,使得人与月的完美搭配难如神话。

,从最基础的面向对象到各种框架都有整理,送给每一位初学和进阶中学习Java编程的小伙伴。"

  • 原子性(atomicity)
  • 一致性(consistency)
  • 隔离性(isolation)
  • 持久性(durability)

自《人月神话》之后,注入《软件开发的滑铁卢》、《死亡之旅》、《软件极限》(这本书被形容为由被诅咒的程序员战士写下的《伊利亚特》)等大批著作,都是对失败的软件项目的复盘和反思,但所有的这些反思,并没有能从根本上提高软件项目的成功率。更多的项目之所以没有被宣布为失败,很大一部分程度上是因为项目的实施者接受了充满缺陷的成品、同意追加了成本或者延长项目交付时间,软件工程中的时间黑洞永远让人无法看清其本质,在《梦断代码》中,这一过程被以充满史诗感的叙事风格详细而从容的讲述出来。

“我自己是一名老程序员,辞职后在线上做讲师,今年我整理了一份适合2019年学习的Java编程资料干货

7.2.2 undo

undo存放在数据库内部的一个特殊段中,成为undo段,undo段位于共享表空间内。undo只能逻辑上还原,并不能物理上还原

  • START TRANSACTION | BEGIN : 显示的开启一个事务,存储过程中只能使用START TRANSACTION。
  • COMMIT :提交事务,并使得一堆数据库做的所有修改成为永久性的。commit work在completion_type不同时会执行不同的操作。
  • ROLLBACK :结束事务并撤销正在进行的所有未提交的修改。
  • SAVEPOINT identifier:SAVEPOINT允许你在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT。
  • RELEASE SAVEPOINT identifier:删除一个保存点,当没有保存点时会报错,此条回滚并不会像ROLLBACK一样结束事务。
  • ROLLBACK TO [SAVEPOINT] identifier:这个语句与SAVEPOINT命令一起使用。回滚到保存点位置
  • SET TRANSACTION:这个语句用来设置事务的隔离级别。

以下语句会隐式提交事务

图片 4隐式提交

Microsoft SQL Server 中DDL不会隐式提交,这一点与InnoDB和Oracle不同

TPS计算:

(com_committed com_rollback) / time但是这种方法的前提是所有的事务都必须是显示提交的。如果存在饮食的提交和回滚(默认autocommit=1),不会计算到com_commit和com_rollback中

隔离级别有四个

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLEInnoDB默认为REPEATABLE READ ,通过Next-Key Lock锁的算法,避免了幻读,已经能完全保证事务的隔离性要求。
  • InnoDB支持XA事务,通过XA事务可以支持分布式事务的实现。
  • 分布式事务指允许多个独立的事务资源参与一个全局的事务中。全局事务要求参与的事务要么都提交,要么都回滚,所以对于事务原有的ACID有了更高的要求。另外,使用分布式事务时,InnoDB事务隔离级别必须是SERIALIABLE。
  • XA事务允许不同数据库之间的分布式事务。

    图片 5分布式事务模型

分布式事务使用两段式提交(two-phase commit)的方式。

  • 在第一个阶段,所有参与的节点都开始准备,告诉事务管理器他们准备好提交了。
  • 第二个阶段,事务管理器告诉资源管理器执行ROLLBACK还是COMMIT。如果任何一个节点显示不能提交,则所有节点都被告知需要回滚。

本文由网上十大正规赌博平台发布于正规赌博平台,转载请注明出处:那是啥气质,从梦断代码看软件工程的复杂性

关键词: AG娱乐场