`
leonzhx
  • 浏览: 793350 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Item 64: Strive for failure atomicity

阅读更多

1.  Generally speaking, a failed method invocation should leave the object in the state that it was in prior to the invocation. A method with this property is said to be failure atomic.

 

2.  The simplest way to achieve failure atomicity is to design immutable objects. If an operation fails, it may prevent a new object from getting created, but it will never leave an existing object in an inconsistent state.

 

3.  For methods that operate on mutable objects, the most common way to achieve failure atomicity is to check parameters for validity before performing the operation. A closely related approach to achieving failure atomicity is to order the computation so that any part that may fail takes place before any part that modifies the object.

 

4.  A third and far less common approach to achieving failure atomicity is to write recovery code that intercepts a failure that occurs in the midst of an operation and causes the object to roll back its state to the point before the operation began. This approach is used mainly for durable (disk-based) data structures.

 

5.  A final approach to achieving failure atomicity is to perform the operation on a temporary copy of the object and to replace the contents of the object with the temporary copy once the operation is complete.( Collections.sort dumps its input list into an array prior to sorting to reduce the cost of accessing elements in the inner loop of the sort.)

 

6.  It would be wrong to assume that an object was still usable after catching a ConcurrentModificationException.

 

7.  As a rule, errors (as opposed to exceptions) are unrecoverable, and methods need not even attempt to preserve failure atomicity when throwing errors.

 

8.  As a rule, any generated exception that is part of a method’s specification should leave the object in the same state it was in prior to the method invocation. Where this rule is violated, the API documentation should clearly indicate what state the object will be left in.

 

分享到:
评论

相关推荐

    Effective Java 3rd edition(Effective Java第三版英文原版)附第二版

    Item 76: Strive for failure atomicity Item 77: Don’t ignore exceptions 11 Concurrency Item 78: Synchronize access to shared mutable data Item 79: Avoid excessive synchronization Item 80: Prefer ...

    strive-blog:Strive博客的背后代码

    在Strive博客项目中,可能会使用到一些常见的JavaScript库和框架,例如React或Vue.js,它们提供了组件化开发方式,使得构建可复用、可维护的用户界面变得更加容易。如果使用React,那么理解JSX语法、组件生命周期、...

    StriveTherapyWebsite:Strive Therapy网站的资料库

    在深入探讨"Strive Therapy网站"的相关知识点时,我们主要关注的是CSS(Cascading Style Sheets)这一技术的应用,它是构建网站外观和布局的关键。 CSS,全称为层叠样式表,是用于描述HTML或XML(包括SVG、MathML等...

    strive:Strak V3 API的Haskell客户端

    努力 Strive是的Haskell客户端。列出运动员的K / QOM / CR 朋友和追随者列出运动员朋友列出运动员关注者列出以下两个活动创建活动检索活动更新活动删除活动列出运动员活动列出相关活动列出朋友的活动列出活动区列出...

    AI_Coding:来自Strive学校的AI学习练习

    Strive_AI_Tasks 在这里,我将介绍Strive学校AI工程计划的练习解决方案。 该存储库将随着新的每日解决方案以及每周或什至每月一次不断更新,这是整个计划的持续时间所需要的。

    脑小血管病国际影像标准2更新要点解读.pdf

    2013年,国际上首次发布了脑小血管病国际影像标准1(Standards for Reporting Vascular Changes on Neuroimaging-1, STRIVE-1),旨在为结构磁共振成像(MRI)上的CSVD影像特征提供分类和标准化的方法。2023年,随着...

    robocup3D论文

    通过不断的技术革新和实践探索,Strive3D团队不仅在RoboCup3D足球模拟联赛中取得了显著的进步,也为未来将研究成果应用于实际人形机器人提供了宝贵的经验和技术储备。随着人工智能技术和机器人技术的不断发展,3D...

    Strive:我的家庭作业

    【标题】"Strive:我的家庭作业"是一个个人项目,旨在通过不断的努力和专注来达成特定的学习目标。这个项目可能涵盖了HTML(超文本标记语言)的学习和实践,这是网页开发的基础,用于创建网页结构和布局。 【HTML】...

    Strive:PostCSS Magento 2前端系统

    要求安装了 (带有npm软件包管理器) $ npm install -g gulp (Mac用户可能需要sudo)安装通过Composer安装: composer require trive/theme-frontend-strive或将此存储到Magento_root / strive-gulp文件夹中的...

    strive-homework:一个用于组织Strive.school任务的仓库

    【标题】"strive-homework"所代表的是一个针对Strive.school课程的项目仓库,这个仓库被设计来管理和组织学生们在课程中的作业任务。它是一个集中存储与管理学习资源和作业的地方,使得学生和教师可以更有效地协作并...

    HomeWork:该资料库包含Strive School完成的所有工作

    【标题】: "Strive School的家庭作业资源库:HTML学习之旅" 这个压缩包文件名为"HomeWork-main",其中蕴含了Strive School的学习资源,特别是关于HTML(HyperText Markup Language)的教学内容。HTML是互联网上网页...

    考研英语作文模版。。。。。。。

    up, individuals are encouraged to strive for higher goals…" 另一方面,可以提及人们的认识误区:"For another, some people fail to recognize the importance of perseverance in achieving success." ...

    托福写作句型,你获得高分的秘籍.docx

    to do sth."强调激发动力的作用,例如:"A teacher's encouragement motivates students to strive for excellence." 10. 实践与理论: - "put theory into practice"强调将理论付诸实践的重要性,如:"Students ...

    strive

    Strive 是一个创新的社交媒体平台,其核心理念是激励用户为实现个人目标而努力。在 LAHacks 2021 这样的编程马拉松活动中诞生,这个项目充分展示了开发者们利用技术来推动人们积极向上的精神。Strive 的设计与实现...

    Modelsim-Altera 使用技巧总结(二)

    软件使用版本:Quartus II 13.0+Modelsim_Altera10.1d 工程使用例程:tcd1209+ad9945,verilog HDL设计 仿真选择:时序仿真 撰写人:Strive_JP

    中频词汇 Unit 14实战演练1

    [D] strive 常用搭配是strive for或strive to,意为“努力争取,奋斗”,例如:“They strive for world peace.”(他们努力争取世界和平。) 题目1的解析强调了[C] rival的准确用法,它适合用来描述不同行业间的...

    java 控制台计算器-Strive

    在控制台操作的计算器,有增加修改删除,我上班后一次面试做的 好久没有做基础的了

    strive:分布式调度器

    努力 用于动态工作流的分布式调度程序。 基于 Google Omega 调度器设计。 要求: 特征: 基于主机的代理来跟踪任务 使集群保持在适当状态的反熵 支持在 Docker 中以及直接在主机上运行任务 Cpu、内存、端口、卷...

    html计算器-strive

    主要以js做的计算器,主要功能很简单 带jquery,对你很有用的

Global site tag (gtag.js) - Google Analytics