121得票10回答
理解术语和概念 - RAII(资源获取即初始化)的含义

能否请C++开发人员给我们一个好的RAII(资源获取即初始化)的描述,解释其重要性,并说明它是否与其他语言相关? 我确实有一点了解。我相信它代表"Resource Acquisition is Initialization",但是这个名字与我对RAII的(可能不正确的)理解不符:我认为RAI...

105得票10回答
Scala有哪些自动资源管理的替代方案?

我在网上看到很多关于Scala中ARM(自动资源管理)的例子。似乎编写一个这样的例子是成长过程中必经的,但大多数看起来几乎都一样。不过,我确实看到了一个使用continuations的相当酷的例子。 无论如何,许多代码都存在某种类型的缺陷,因此我认为在Stack Overflow上有一个参考...

53得票12回答
锁是否具有自动关闭功能?

Locks是否是自动可关闭的?也就是说,是否可以这样做:Lock someLock = new ReentrantLock(); someLock.lock(); try { // ... } finally { someLock.unlock(); } 我能这样说吗:try ...

46得票13回答
在Java中如何关闭PreparedStatements和ResultSets?

考虑以下代码:PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.createStatement(myQueryString); rs = ps.executeQuery(); // process t...

44得票5回答
“Rule of 5”(对于构造函数和析构函数)已经过时了吗?

“5规则”指的是,如果一个类有用户声明的析构函数、拷贝构造函数、拷贝赋值构造函数、移动构造函数或移动赋值构造函数,则必须具备其他四个函数。 但是今天我突然想到:你何时需要自定义析构函数、拷贝构造函数、拷贝赋值构造函数、移动构造函数或移动赋值构造函数呢? 在我看来,隐式构造函数/析构函数对于...

27得票18回答
如果程序已经退出,为什么还需要免费资源?

许多库,例如SDL等,在其教程中调用方法来在退出程序之前释放资源,但据我所知,大多数操作系统在退出进程时会释放所有内存,那么如果应用程序将要退出,为什么我还需要费心去释放它们呢? 许多库的教程中包括在退出程序之前释放资源的方法调用,主要出于以下原因:虽然大多数操作系统在进程终止时会回收所有内...

20得票6回答
如果delete[] p失败会发生什么?

假设我有一个指向动态分配的包含10个元素的数组的指针: T* p = new T[10]; 稍后,我想释放那个数组: delete[] p; 如果一个 T 析构函数抛出异常会发生什么?其他元素是否仍然被销毁?内存是否会被释放?异常是否会传播,还是程序执行将被终止? 同样地,当 s...

20得票9回答
Scala中实现“使用/try-with-resources”(自动资源管理)的简单模式

C#使用using和IDisposable接口。Java 7+使用try和AutoCloseable接口实现相同的功能。Scala允许您选择自己的解决方案来处理此问题。 目前,scala-arm似乎是最受欢迎的选择,并由Typesafe公司的一名员工进行维护。然而,对于这么简单的行为来说,它...

19得票4回答
为什么使用“use”比使用“using”更好?

根据这个MSDN页面上的最后一句话,应该首选use而不是using。我在其他地方也听说过(例如,这个答案)。为什么呢?我知道use是后来才添加的,但是有什么区别吗?表面上看,using似乎更有用,因为你可以控制何时调用Dispose(),并且如果需要,你可以明确地忽略绑定值(例如,(fun _...

18得票5回答
谷歌应用引擎上是否有防止DoS攻击的可能性?

我正在考虑开发一个Google App Engine应用程序,应该不会吸引太多的流量。我真的不想支付超过免费配额的费用。然而,看起来很容易通过超载应用程序和超过配额来造成拒绝服务攻击。有没有方法可以防止或使超出免费配额更加困难?例如,我知道可以限制来自IP的请求数量(使超过CPU配额更加困难)...