当前位置: 首页 > 面试题库 >

Erlang的“让它崩溃”的哲学-是否适用于其他地方?

邓光耀
2023-03-14
问题内容

Erlang(或Joe Armstrong的?)建议 _ 不要使用防御性编程_
,不要让进程崩溃(而不是用不必要的防护来污染您的代码来跟踪残骸)对我来说是如此有意义,我想知道为什么我要浪费这么多多年来致力于错误处理!

我想知道的是-这种方法仅适用于Erlang等平台吗?Erlang的VM具有对流程监控树的简单本地支持,并且重启流程 确实非常
快。我是否应该将开发工作(而不是在Erlang世界中)花费在重建监督树上,而不是让自己陷入顶级异常处理程序,错误代码,空结果等的困境。

您是否认为这种方法上的改变会在(例如).NET或Java空间中很好地工作?


问题答案:

它无处不在。无论您是否以“崩溃”模式编写软件,它都将崩溃,例如,当硬件出现故障时。“让它崩溃”适用于您需要承受现实的任何地方。Quoth James
Hamilton:

如果硬件故障需要立即采取任何管理措施,则该服务将无法经济高效且可靠地扩展。整个服务必须能够在没有人工管理的情况下生存下来。故障恢复必须是非常简单的路径,并且必须经常测试该路径。斯坦福大学的阿曼多·福克斯(Armando
Fox)认为,测试故障路径的最佳方法是永远不要正常关闭服务。只是失败了。这听起来违反直觉,但是如果故障路径不经常使用,则在需要时它们将无法工作。

但是,这并不完全意味着“从不使用防护装置”。但不要害怕崩溃!



 类似资料:
  • 我制作了一个OpenGL应用程序,用于测试Framebuffer Objects,该应用程序适用于我制作的笔记本电脑,我拥有的另一台笔记本电脑和我的台式PC。但是,对于我要求为我测试该应用程序的其他人来说,它似乎崩溃了。 到目前为止,我已经将它缩小到在我调用的第一个扩展(在本例中为glGenBuffers)上崩溃,我100%确定在调用该函数(见下文)之前不会调用该扩展。在浏览了许多答案后,我确定了

  • 我正试图在加利福尼亚州北部地区创建CloudWatch警报,因为那里是我的EC2所在地。 我想向同时支持电子邮件和短信的SNS主题发送通知,而n.california不支持,因此我在俄勒冈州创建了一个同时支持电子邮件和短信的SNS主题。 该主题没有出现在“发送通知到:”下拉列表中,在线阅读似乎我应该能够单击“输入列表”并输入来自另一个地区的ARN,但是当我这样做时,我得到一个错误说:

  • 问题内容: 我已经四处搜寻,但是还没有找到一个答案,该答案并未将我引向第3方服务。我不需要任何复杂的东西,只是为了保存一个值,所以当该应用程序下次打开时,我可以显示一条警报,指出该应用程序已崩溃。 谢谢。 问题答案: 感谢@RyanCollins的一点帮助,我能够自己解决问题。“ 应用程序委托”中的功能仅在应用程序正常关闭时运行。用于本地检测应用程序崩溃的代码如下所示。 全局定义的变量 应用程序委

  • 我有两个版本的oracle,oracle Database 11g Enterprise Edition 11.2.0.1.0版本-生产版和oracle Database 11.g Enterprise Edition版本11.2-0.3.0版本-64位生产版 我有这个sql: 它适用于11.2.0.1.0,但在11.2.0.3.0上,我收到此错误: 我能做些什么来解决这个问题? 感谢。

  • 我正在将tomcat服务器从tomcat7升级到Tomcat8。但Struts1.1似乎不能在Tomcat8上工作。有人知道Tomcat8不支持Struts1.1吗。 下面是堆栈跟踪

  • 我们有修改PDF的代码,然后对修改后的PDF进行数字签名。我们使用iTextSharp库(4.1.6)的LGPL版本对PDF进行数字签名。 这是一个显示问题的示例PDF。PDF最初会打开,但随后会冻结,无法导航。无论您是否安装了我们的证书来验证此签名,问题似乎都会发生。 这个问题似乎没有始终如一地发生,问题只存在于Adobe Reader中。浏览器PDF查看器和Foxit Reader(进行签名验