小编Sam*_*Sam的帖子

易失性与联锁对抗锁定

假设一个类有一个public int counter由多个线程访问的字段.这int只是递增或递减.

要增加此字段,应使用哪种方法,为什么?

  • lock(this.locker) this.counter++;,
  • Interlocked.Increment(ref this.counter);,
  • 将访问修饰符更改counterpublic volatile.

现在,我发现volatile,我已经删除了许多lock语句和使用Interlocked.但是有理由不这样做吗?

c# multithreading locking volatile interlocked

647
推荐指数
8
解决办法
13万
查看次数

如何将char数组转换回字符串?

我有一个char数组:

char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Run Code Online (Sandbox Code Playgroud)

我目前的解决方案是做

String b = new String(a);
Run Code Online (Sandbox Code Playgroud)

但肯定有更好的方法吗?

java arrays string char

388
推荐指数
5
解决办法
71万
查看次数

在JavaScript中删除对象

我对JavaScript的delete运算符有点困惑.采取以下代码:

var obj = {
    helloText: "Hello World!"
};

var foo = obj;

delete obj;
Run Code Online (Sandbox Code Playgroud)

在执行了这段代码之后,objnull,但foo仍然指的是一个完全相同的对象obj.我猜这个对象是foo指向的同一个对象.

这让我很困惑,因为我期望写作delete obj删除了obj指向内存的对象- 而不仅仅是变量obj.

这是因为JavaScript的垃圾回收工作在保留/释放的基础,所以,如果我没有指向对象的任何其他变量,它从内存中清除?

(顺便说一句,我的测试是在Safari 4中完成的.)

javascript garbage-collection pointers memory-management object

354
推荐指数
5
解决办法
36万
查看次数

如何在SQL Server中使用级联删除?

我有2个表:T1和T2,它们是带有数据的现有表.我们在T1和T2之间有一对多的关系.当删除T1中的记录时,如何更改表定义以在SQL Server中执行级联删除,T2中的所有关联记录也将被删除.

他们之间存在外来约束.我不想删除表或创建触发器来删除T2.例如,当我删除员工时,所有审核记录也应该消失.

T1 - 员工,

Employee ID      
Name
Status
Run Code Online (Sandbox Code Playgroud)

T2 - 性能评测,

Employee ID - 2009 Review
Employee ID - 2010 Review
Run Code Online (Sandbox Code Playgroud)

sql-server cascading-deletes

315
推荐指数
6
解决办法
57万
查看次数

删除NULL指针是否安全?

删除NULL指针是否安全?

它是一种很好的编码风格吗?

c++ pointers memory-management null-pointer delete-operator

281
推荐指数
5
解决办法
15万
查看次数

创建堆栈大小为默认值50倍的线程有什么危险?

我目前正在开发一个性能非常关键的程序,我决定探索的一条路径可能有助于减少资源消耗,增加了我的工作线程的堆栈大小,因此我可以移动float[]我将要访问的大部分数据堆栈(使用stackalloc).

我已经读过一个线程的默认堆栈大小是1 MB,所以为了移动我所有的float[]s,我必须将堆栈扩展大约50倍(到50 MB~).

我知道这通常被认为是"不安全的"并且不推荐,但在对我的当前代码进行基准测试后,我发现处理速度提高了530%!因此,我不能简单地通过这个选项而不进一步调查,这导致我的问题; 将堆叠增加到如此大的尺寸(可能出现什么问题)有什么危险,我应该采取什么预防措施来减少这种危险?

我的测试代码,

public static unsafe void TestMethod1()
{
    float* samples = stackalloc float[12500000];

    for (var ii = 0; ii < 12500000; ii++)
    {
        samples[ii] = 32768;
    }
}

public static void TestMethod2()
{
    var samples = new float[12500000];

    for (var i = 0; i < 12500000; i++)
    {
        samples[i] = 32768;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# memory stack-memory

228
推荐指数
7
解决办法
5286
查看次数

函数声明后=删除的含义

class my_class
{
    ...
    my_class(my_class const &) = delete;
    ...
};
Run Code Online (Sandbox Code Playgroud)

= delete在这种情况下意味着什么?

还有其他"修饰符"(除了= 0= delete)吗?

c++ declaration function delete-operator c++11

224
推荐指数
6
解决办法
10万
查看次数

什么是用于删除行的前N个字符的unix命令?

例如,我可能想:

tail -f logfile | grep org.springframework | <command to remove first N characters>
Run Code Online (Sandbox Code Playgroud)

我当时认为tr可能有能力这样做,但我不确定.

unix bash command truncate

207
推荐指数
6
解决办法
24万
查看次数

如何修复SVN中"包含工作副本管理区域"的问题?

我在我的存储库中手动删除了我刚刚添加的目录.我无法恢复目录.

任何进行更新或提交的尝试都将失败:

"blabla/.svn" containing working copy admin area is missing.
Run Code Online (Sandbox Code Playgroud)

我理解为什么,但无论如何要解决这个问题.

我不想检查整个仓库并手动添加我的更改,这需要几个小时.

svn repair delete-directory

183
推荐指数
5
解决办法
16万
查看次数

删除git中的分支是否会从历史记录中删除它?

来自svn,刚刚开始熟悉git.

当在git中删除分支时,它是否从历史记录中删除了?

在svn中,您可以通过还原删除操作(反向合并)轻松恢复分支.与svn中的所有删除一样,分支永远不会被删除,它只是从当前树中删除.

如果实际上从git中的历史记录中删除了分支,那么从该分支合并的更改会发生什么?他们保留了吗?

git version-control branch revision-history

180
推荐指数
2
解决办法
7万
查看次数