首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java避坑指南:finally块的陷阱及正确的关闭资源方式小结

---- 正确的关闭资源方式 ---- 1、使用finally块来关闭资源,保证关闭操作总是会被执行; 2、关闭每个资源之前首先判断资源的引用变量不为null,避免NPE发生; 3、为每个资源使用单独的...try...catch 块关闭,保证关闭此资源发生异常,不会影响后面资源的关闭; 4、finally块不要使用return语句。...return语句直接导致方法结束,不会再跳回去执行try、catch块中的任何代码; 5、不要出现System.exit(0),会直接停止当前线程,finally块不会执行; 6、finally块中不要抛出异常...,如果抛出异常,finally块中的异常会覆盖try块抛出的异常,导致莫名奇怪的现象; 参见:Java陷阱之:finally块抛出异常或return导致异常丢失 Java陷阱之:finally块抛出异常或

38930
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    DevOps工具介绍连载(24)——AWS CloudFormation

    Description (可选) 一个描述模板的文本字符串。此部分必须始终紧随模板格式版本部分之后。 元数据(可选) 提供有关模板的其他信息的对象。...条件(可选) 用于控制是否创建某些资源或者是否在堆栈创建或更新过程中为某些资源属性分配值的条件。例如,您可以根据堆栈是用于生产环境还是用于测试环境来按照条件创建资源。...当您指定转换时,可以使用 AWS SAM 语法声明您的模板中的资源。此模型定义您可使用的语法及其处理方式。...Resources(必需) 指定堆栈资源及其属性,如 Amazon Elastic Compute Cloud 实例或 Amazon Simple Storage Service 存储桶。...您可引用模板的 Resources 和 Outputs 部分中的资源。 Outputs(可选) 描述在您查看堆栈的属性时返回的值。

    3.9K10

    玩转企业云计算平台系列(十一):Openstack 编排服务 Heat

    Heat 相关概念 堆栈(stack):管理资源的集合。单个模板中定义的实例化资源的集合,是 Heat 管理应用程序的逻辑单元,往往对应一个应用程序。...模板(template):如何使用代码定义和描述堆栈。描述了所有组件资源以及组件资源之间的关系,是 Heat 的核心。 资源(resource):将在编排期间创建或修改的对象。...第二层解析 Stack 里各种资源的依赖关系,Stack 和嵌套 Stack 的关系。第三层就是根据解析出来的关系,依次调用各种服务客户段来创建各种资源。...第二层解析 Stack 里各种资源的依赖关系,Stack 和嵌套 Stack 的关系。 第三层根据解析出来的关系,依次调用各种服务客户端来创建各种资源。...Heat 的编排方式如下: 首先OpenStack自身提供的基础架构资源,包括计算、网络和存储等资源。通过编排这些资源,用户就可以得到最基本的 VM。

    95610

    资源 | Parris:机器学习算法自动化训练工具

    概览 Parris 的功能有: 创建一个 Lambda 函数 在调用 Lambda 函数的时候运行一个 CloudFormation 堆栈 第一次运行时,在堆栈的 EC2 实例上运行一个 UserData...CloudFormation 堆栈在训练结束之后会立即终止,从而其中的训练结果也将很快被删除。毕竟我们并不推荐在该服务器上保存任何时段的训练结果。 0....看不到你的 CloudFormation 栈?确保你在正确的区域。 注意堆栈的名字应该匹配训练项目的名,即我们在 training-config.json 配置的名字。...那么此时你不需承担该训练资源所需的任何开销。 一般而言,你应该在每次训练工作完成时终止 CloudFormation 栈。...原因在于 Lambda 函数有多种更新方式,没有一种方法能够覆盖所有场景,所以我提出一种最可能立即得到使用的方式。未来该工具可能包括覆盖所有场景的额外更新行为。

    2.9K90

    基础设施即代码的历史与未来

    如果完全实现,这些方法有可能彻底改变我们编写和部署软件的方式。...基础设施即代码的实践方式与运行时代码的实践方式相似。包括版本控制、自动化测试、CI/CD 部署流水线、本地开发以获得快速反馈等。 遵循这些基础设施实践可以带来哪些优势? 性能。...主要区别在于 playbook 是声明性的 - 它描述了它想要发生的事情,比如在机器上安装给定的 Apt 软件包。这与脚本不同,脚本包含要执行的命令。...这是为了连接 SQS 和 Lambda 而需要的“粘合剂”,正确配置这些“粘合剂”资源并不容易。...对于他们来说,第三代工具的层次太低了;理想情况下,他们希望以这些高级系统架构术语描述基础设施,然后将如何最好地实现该架构在特定云提供商上的细节委托给其 IaC 工具。

    24810

    DevOps 基础架构即代码:IaC 实施指南

    ●为什么您的业务需要 DevOps 基础架构即代码? ●您可能面临哪些潜在的 IaC 挑战? ●基础设施即代码的应用场景 ●有效实施 IaC 的最佳实践是什么?...IaC 支持使用代码提供计算、网络服务和存储,并以相同的方式将它们部署到私有云或公共云。也可以类似地创建和部署安全标准,无需批准人对每个安全更改进行审批,尤其是对于需要高安全标准的基础设施。...利用顶级工具有效实施基础设施即代码 AWS CloudFormation 在 CloudFormation 的帮助下,您可以使用 IaC 轻松快速地预置和管理不同的 AWS 和第三方资源。...●使用首选模板语言从头开始对您的基础架构进行编码,同时 CloudFormation 预配和管理模板中描述的堆栈和资源。 Puppet 它是一个开源配置管理工具。...Chef 作为开发人员的最爱,Chef 专注于在任何环境中部署和建模可扩展且安全的自动化流程。 主要特点包括: ●使用过程式语言,因此用户可以编写代码并逐步描述如何达到所需的状态。

    1.6K10

    为什么面试互联网公司的求职者都在刷Leetcode? 正确打开方式是什么?

    01 为什么是Leetcode LeetCode作为一种资源,不得不说,是迄今为止用来改进面试式算法问题最有效的工具。 LeetCode收录了许多互联网公司的算法题目,被称为刷题神器。...02 如何正确打开Leetcode 这篇文章的目的不是教你如何挤进一家顶级互联网科技公司,而是帮助你学习如何获得算法解决问题的技能,而这些技能反过来又会帮助你得到你想要的工作。...这些在质量上差别很大:有些人只是发布一个解决方案;其他的则非常详细。您的里程可能会有所不同,但是如果您陷入困境,这也是一个有用的资源。...03 相关资源 我们介绍一些比较好用的资源: 首先作为中文使用者,leetcode中文版主页绝对是大家用的最多的网站 然后是知乎上面有很多分享如何刷题的帖子: https://www.zhihu.com.../question/26580300 最后Github上有很多优质的资源: https://github.com/pezy/LeetCode https://github.com/azl397985856

    78910

    如何用Amazon SageMaker 做分布式 TensorFlow 训练?(千元亚马逊羊毛可薅)

    入口点脚本则使用在入口点环境变量中传递给它的信息启动具有正确 args 的算法程序,并对运行的算法进程进行轮询。 若算法进程退出,入口点脚本将使用算法进程的退出代码退出。...使用 AWS CloudFormation 模板 cfn-sm.yaml 以创建一个 AWS CloudFormation 堆栈,而该堆栈将创建一个附加于私有 VPC 的笔记本实例。...您可以使用 AWS CloudFormation 服务控制台中的 cfn-sm.yaml 以创建 AWS CloudFormation 堆栈,或者您也可以自定义 stack-sm.sh 脚本中的变量,并在您已安装...运行自定义 stack-sm.sh 脚本以创建一个使用 AWS CLI 的 AWS CloudFormation 堆栈。 保存 AWS CloudFormation 脚本摘要输出以供稍后使用。...您还可以在 AWS 管理控制台的 AWS CloudFormation 堆栈输出选项卡的下方查看输出。

    3.3K30

    Fortify软件安全内容 2023 更新 1

    它使用自己的声明性语言,称为HashiCorp配置语言(HCL)。云基础架构在配置文件中编码,以描述所需状态。...S3 访问控制策略访问控制:过于宽松的 S3 策略AWS Ansible 配置错误:不正确的 S3 存储桶网络访问控制访问控制:过于宽松的 S3 策略AWS CloudFormation 配置错误:不正确的...不良做法:用户绑定的 IAM 策略AWS CloudFormation 配置错误:不正确的 IAM 访问控制策略AWS CloudFormation 配置错误:API 网关未经身份验证的访问AWS CloudFormation...不安全的活动目录域服务传输密钥管理:过期时间过长AWS CloudFormation 配置错误:不正确的 IAM 访问控制策略密钥管理:过期时间过长Azure ARM 配置错误:不正确的密钥保管库访问控制策略...AWS Ansible 配置错误:不正确的 IAM 访问控制策略权限管理:过于宽泛的访问策略AWS CloudFormation 配置错误:不正确的 IAM 访问控制策略系统信息泄漏:Kubernetes

    7.9K30

    采用基础设施即代码的演练

    相反, Pulumi 以原始、未经过修改的形式提供了所有这些云、资源和属性。这样做的好处是你可以随时利用这些云的全部功能。缺点是你需要了解这些云以及如何正确使用它们。...负载均衡器确保我们可以在后端根据工作负载的增加轻松扩展副本数量,而不会从根本上改变客户端的访问方式。根据我们选择的云平台的不同,实现这个目标的方式也会有所不同,所需的详细资源也会有所不同。...基础设施项目和堆栈 所有这些示例都有一个共同点:基础设施即代码程序的任务是声明个别资源对象、它们的属性以及它们之间的关系。无论是什么场景、云平台还是选择的编程语言,这都是正确的。...有关所涉及的权衡的描述,请参阅“组织项目和堆栈”用户指南或 IaC 推荐最佳实践博客系列。对于复杂的系统,我们可能希望在基础设施的不同部分之间区分关注点,这意味着一个堆栈可以依赖于另一个堆栈。...首先,我们将创建一个新的堆栈,在 AWS 上运行一个负载均衡的服务(尽管是 AWS,但无论我们选择的云是什么,相同的工作流程都适用): $ pulumi new container-aws-typescript

    12410

    基础设施设施即代码(IaC)平台 Pulumi | 混合云管理利器

    而 Pulumi 可以以同样的方式在其他公有云上完成与 AWS CDK 类似的工作。 介绍 Pulumi 是一个现代的基础设施设施即代码(IaC)平台。...究其本质,就如 AWS CDK 是构建在 AWS CloudFormation 基础之上;Pulumi 的大部分能力则是构建在 Terraform 工具基础上的,其依托 Terraform 上丰富的 Provider...堆栈类似于你在测试和部署应用程序更新时使用的不同部署环境。例如,你可以有不同的 dev、qa 和 prod 堆栈,并在其上测试和构建资源。...堆栈就如前文所述,每个环境都可以维护一个堆栈(Stack),而这些堆栈可以管理大量云资源,开发者无需去记录每次都开启了哪些服务,使用了哪些资源,这里都会被记录在堆栈中。...如果堆栈创建失败,则会进行回滚,之前创建的资源也会被销毁,这样就避免了大量无聊的,由于失误造成重复劳动和危害;同样的,如果删除堆栈,则可以一次性释放堆栈中的全部资源,大大提升了清理的准确性和效率。

    2.1K20

    AWS CDK | IaC 何必只用 Yaml

    前言 近年来基础设施即代码(IaC)的方式被越来越多的开发者和管理者所采用,各大公有云都提供了使用 IaC 管理自己云资源的方式,如 AWS 的 CloudFormation、阿里云的 ROS 等,而第三方的...越来越多像我一样的云资源运维和管理者开始采用 IaC 的方式对云资源进行创建、运维和管理。 IaC 管理之惑 但在实际使用中,IaC 其实并没有看上去的那么美丽。...这种方法完美的绕过了 CloudFormation 配置本身的复杂性和较差的可读性,用户可以选择一个自己熟悉的编程语言,以代码的形式来对基础资源进行编排,同时还有很多默认选项,为不想关心太多细节的开发者提供了便利...在体验完后,可以使用 cdk destroy 对 CloudFormation 以及 CloudFormation 创建的资源进行清理和回收。...如果你不是 AWS 用户,但是也想采用这种方式创建和维护你的基础资源,也可以关注一下 pulumi[1] 项目,这是一个开源项目,其支持包括 AWS、Azure、Google Cloud 和阿里云。

    2K20

    在K8s上轻松部署Tungsten Fabric的两种方式

    步骤 1,只需单击以下按钮即可创建沙箱(以AWS CloudFormation堆栈形式运行): Launch Stack 2,点击Next。...7,重新加载堆栈页面并等待堆栈的CREATE_COMPLETE状态。 8,选中“Stack”(复选框),然后在底部窗格中选中“Output”选项卡,以找到Sandbox UI的URL。...重要信息:沙盒使用完毕后,可以使用DELETE SANDBOX按钮清除所有使用的资源。 image.png 为了双重安全,您可以在删除后检查AWS Interface中的剩余资源。...访问集群: 您可以使用在堆栈启动期间指定的ssh密钥来访问具有“centos”用户名的任何VM。...这里描述最简单的方法:单个基于yaml的安装。 先决条件 1.一个正在运行的Kubernetes集群 有很多方法可以安装Kubernetes。

    1.6K41

    Cloudformation与其背后的“基础设施即代码”

    感到陌生,AWS官方对Cloudformation的定义如下: AWS CloudFormation 云资源服务可使开发人员和系统管理员轻松有序地创建、管理和更新相关 AWS 云资源模板。...为了最快地对Cloudformation在心中稍微有一个概念,我为大家提炼出下面的关键词: 利益相关者:运维或DevOps领域 一种管理云资源的服务 由AWS提供 通过模板文件(或者说配置文件、代码)管理云资源...、修改域名、安全组等等,都可以通过review代码的方式进行跟踪。...基础设施版本间无缝切换 声明式操作 在Cloudformation之前,AWS已经推出了命令行工具或者SDK来管理AWS的资源,与它们“命令式”操作不同的是,Cloudformation提供一种“声明式...“命令式”操作希望你去一步步编写程序以达到最终所期望的状态,而声明式只关心你想要的资源与资源的状态,Cloudformation会自动分析达到想要的状态需要进行怎样的操作。

    2K30

    改进异常处理的 6 条建议

    我知道你正在想什么:如果类型只有一个,那么怎么能知道异常具体是什么?我将如何追踪具体的属性?请继续阅读。 2. 使用枚举错误码 我们大多被教授的方法是将异常转为错误信息。...这次查看日志文件时很好,(呃)但是这样也有缺点: 错误信息不会被翻译(除非你是Google) 错误信息不会转换为用户友好的文字 错误信息不能用编程的方式检测 将异常消息留给开发者定义也会出现同样的错误有多种不同的描述...避免不必要的嵌套 冗长的堆栈信息不会有任何帮助,更糟糕的是会浪费你的时间和资源。重新抛出异常时调用静态函数而不是异常构造函数。封装的静态函数决定什么时候嵌套异常什么时候只要返回原来的实例。...找到正确的服务器或者确定问题影响到了哪个服务器是一件非常令人头痛的事情。 我的建议是: 将你的日志记录到一个地方,推荐记录到数据库中。 通过Web浏览器访问数据库。...他们可以在bug记录里增加一条异常URL 省钱 让你的周末和名誉不受影响 你有什么好的建议吗? 希望这些建议对你有所帮助。给异常添加正确的信息和将异常放在易于访问的地方可以避免很多灾难事故和时间浪费。

    81990

    超越高级基础设施即代码的应用案例

    像 AWS CloudFormation 和 Azure Resource Manager(ARM) 这样的托管服务会将这个状态抽象到服务后面。...这可以很好地确保例如计算 CIDR 块的函数是正确的。测试基础设施本身要更复杂一些,仅因为在部署完成之前很多资源的属性是未知的。...这可以与任何程序状态相关联,包括资源本身。在这里阅读更多关于断言的信息。 接下来是集成测试。对于基础设施即代码,集成测试的典型含义是为了测试目的而单独启动一个堆栈,通常称为“临时堆栈”。...通常会创建一个与单个拉取请求关联的临时堆栈,以验证所提议的更改是否正确:在打开拉取请求时创建(和测试)它,在对其进行新推送时更新(和测试)它,并在关闭时销毁它。...您可以在这里阅读有关集成测试和临时堆栈技术的更多信息。 最后,还有许多更特别的测试可能。例如,您可以通过添加随机性来对基础设施即代码进行模糊测试,以确保在面对奇怪的输入时基础设施的行为是否正确。

    11710

    基础设施即代码:从命令式到声明式再回到命令式

    虽然在底层仍然按顺序执行任务,但 Ansible 接受了描述结果而非过程的声明式理念。 Ansible 的成功表明了对基础设施管理中更多抽象的需求,为完全声明式工具铺平了道路。...Terraform 引入了状态文件来跟踪资源,从而实现增量更新和可扩展性,而 CloudFormation 利用 JSON 或 YAML 模板以声明方式管理 AWS 资源。...代码重用: 开发人员可以将现有的应用程序逻辑合并到他们的 IaC 配置中。例如,描述应用程序代理行为的代码可以重用于定义基础设施设置。...幕后的声明式能力: 虽然开发人员以命令式方式编写配置,但底层操作仍然是声明式的。这确保了可扩展性、一致性和状态管理优势的保留。 即使在 CI/CD 等相邻领域,我们也看到了这种融合。...它们反映了 DevOps 和 云原生开发 的趋势。 接下来是什么以及 IaC 的未来 随着命令式和声明式 IaC 之间的界限变得模糊,混合工具应运而生,结合了两者的优点。

    6710

    基础设施代码化(IaC)的自动化配置与编排

    随着业务规模的不断扩大,IT系统和环境日益复杂,人工一个一个创建资源的方式显然不可取,许多人正在转向自动化资源部署和配置的工具。...AWS CloudFormation,也是云原生的编排工具,运维人员也是通过 JSON/YAML 格式的模板定义云服务资源,通过资源栈管理这些资源。...同时,对于互不依赖的资源也能够并行创建。 对于阿里云 ROS 和 AWS CloudFormation 来说,可使用模板来创建一个资源栈。一个资源栈即一组云上资源,也就是在模板中定义的基础设施。...我们可以使用版本管理工具(如 Git)管理描述当前基础设施的模板,使用阿里云云效/AWS CodePipline/Jenkins 创建一个从代码提交触发到人工卡点再到资源栈部署的流水线,这样整个基础设施的管理就会变得更加敏捷和自动化...当前,通过 阿里云 ROS 和 AWS CloudFormation 的偏差检测能力,就可以轻松地发现实际资源和模板中定义的资源之间的差异,并可通过偏差纠正功能使模板内容和实际资源保持一致。

    2.1K40
    领券