小编gil*_*lyb的帖子

为什么以及如何避免事件处理程序内存泄漏?

我刚刚意识到,通过阅读StackOverflow上的一些问题和答案,+=在C#(或者我猜,其他.net语言)中添加事件处理程序会导致常见的内存泄漏......

我过去曾多次使用这样的事件处理程序,并且从未意识到它们可能导致或导致我的应用程序中的内存泄漏.

这是如何工作的(意思是,为什么这实际上会导致内存泄漏)?
我该如何解决这个问题?是否-=足够使用相同的事件处理程序?
是否有常见的设计模式或最佳实践来处理这样的情况?
示例:我应该如何处理具有许多不同线程的应用程序,使用许多不同的事件处理程序在UI上引发多个事件?

是否有任何好的和简单的方法可以在已经构建的大型应用程序中有效地监控它?

c# memory-leaks design-patterns event-handling

148
推荐指数
3
解决办法
5万
查看次数

minidump与fulldump?

我刚刚开始查看转储文件,以帮助我分析工作中生产环境中w3wp进程的崩溃...

我想知道,minidump和fulldump文件之间有什么区别?

.net minidump dump crash-dumps

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

用于java的WebP库?

java中是否有用于以WebP格式创建/保存图像文件的库?
我找不到任何这样做,除了googles编码器是一个exe文件,我不想从我的代码执行一些.exe来做这个...

java webp

17
推荐指数
1
解决办法
1万
查看次数

什么是"!" nodejs模块名称中的字符?

我已经开始使用实习库在js中编写功能测试,我意识到我无法理解这种语法:

var assert = require('intern/chai!assert');
var registerSuite = require('intern!object');
Run Code Online (Sandbox Code Playgroud)

方法!论证中字符的用途是什么require()

javascript amd node.js node-modules intern

16
推荐指数
1
解决办法
688
查看次数

在数组中查找数字及其平方的算法

我有一个整数数组,我需要一个O(n)算法来查找数组是否包含数字及其平方; 一对就足够了.

我试图自己做,但我只是设法找到O(n 2)的解决方案.

我想过使用计数排序,但内存使用量太大了.

arrays algorithm

15
推荐指数
1
解决办法
3549
查看次数

如果前一个线程仍然忙,如何让Timer跳过勾选

我创建了一个Windows服务,它应该每隔60秒检查数据库中的某个表以获取新行.对于添加的每个新行,我需要在服务器上进行一些繁重的处理,有时可能需要超过60秒.

我在我的服务中创建了一个Timer对象,每隔60秒就会调用一次,并调用所需的方法.
由于我不想在处理找到的新行时勾选此计时器lock { },因此我将该方法包装在一个块中,因此其他线程无法访问此方法.

它看起来像这样:

Timer serviceTimer = new Timer();
serviceTimer.Interval = 60;
serviceTimer.Elapsed += new ElapsedEventHandler(serviceTimer_Elapsed);
serviceTimer.Start();

void serviceTimer_Elapsed(object sender, ElapsedEventArgs e)
{
    lock (this)
    {
        // do some heavy processing...
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想知道 -
如果我的计时器滴答,并在数据库上发现了很多新行,现在处理将花费超过60秒,下一个滴答将不会进行任何处理,直到前一个完成.这就是我想要的效果.

但现在,serviceTimer_Elapsed方法会在第一次处理完成后立即关闭,还是会等待计时器再次打勾.

我想要发生的是 - 如果处理需要超过60秒,那么计时器会注意到线程被锁定,再等待60秒再次检查,这样我就永远不会陷入有线程队列的情况等待前一个完成.

我怎样才能完成这个结果?
这样做的最佳做法是什么?

谢谢!

c# multithreading windows-services timer

14
推荐指数
4
解决办法
2万
查看次数

将对象序列化为文件时的C#最佳实践

我正在构建一个小应用程序,需要将对象保存到文件中以保存用户数据.关于我对此文件的序列化,我有两个问题:

  1. 我正在创建的对象有一些公共属性和一个事件.我将[Serializable]属性添加到我的对象,然后意识到我无法序列化其中包含事件的对象.然后我发现我可以在我的事件之上添加一个属性[field:NonSerialized],它会起作用.这是最好的方法吗,或者我应该尝试构建我的Serializable对象而没有任何事件?

  2. 我正在序列化的对象保存了一些关于应用程序的用户设置.这些设置不够灵敏,无法在文件中加密它们,但我仍然不希望它们在不打开我的应用程序的情况下手动篡改.当我使用普通BinaryFormatter对象将我的对象序列化为文件时,通过该Serialize()方法,我在文件中看到.net对象类型的可读名称,我将其保存到.有没有办法让某人对此进行逆向工程,看看在不使用我的程序的情况下保存了什么?有没有办法让某人建立一个小应用程序,并找出如何DeSerialize此文件中的信息?如果是这样,我将如何隐藏此文件中的信息?

在这种情况下,当将对象序列化为文件时,是否还有其他提示/建议/最佳实践?

提前致谢!

c# serialization

14
推荐指数
1
解决办法
7789
查看次数

nodejs'永远'只是没有做任何事情

我试图永远使用Amazon EC2实例运行我的nodejs应用程序.我安装了nodejs npm,然后运行sudo npm install forever -g.
安装没有返回任何错误,所以我继续尝试运行我的应用程序forever start server.js,但它不会做任何事情 - 没有输出什么,甚至没有错误.
我也试过forever --help,只是forever,但没有人给我任何回应...

当使用nodejs定期运行我的应用程序时 - nodejs init.js它按预期工作,但我需要让它运行使用,forever因此当我从服务器断开连接时它不会关闭.

编辑:
因为我唯一的问题是当我关闭终端会话到我的EC2服务器时nodejs正在关闭,我通过使用这样的linux nohup命令解决了这个问题:
nohup sudo nodejs server.js &
这使得nodejs在子进程中运行,即使我关闭了终端窗口.

谢谢你的帮助!:)

amazon-ec2 node.js forever

13
推荐指数
2
解决办法
5802
查看次数

如何在elasticsearch 2.0中设置_id

由于结构path上的_id一个特定的映射的字段被弃用(如文档中注意到这里),

如何_id在elasticsearch 2.0中为特定文档设置字段?

(在我的具体用例中,我想用我自己的id索引所有文档.我知道它们都是唯一的)

elasticsearch elasticsearch-2.0

9
推荐指数
1
解决办法
9331
查看次数

Enum.IsDefined带有标记的枚举

我现在正在读一本Nutshell中的C#4.0这本书,我认为这本书是一本很好的书,即使是高级程序员也可以作为一个很好的参考书.

我回顾了有关基础知识的章节,我发现了一个技巧,告诉我在使用标记枚举时是否在枚举中定义了某个值.
该书指出,使用Enum.IsDefined对标记的枚举不起作用,并建议这样的解决方法:

static bool IsFlagDefined(Enum e)
{
    decimal d;
    return (!decimal.TryParse(e.ToString(), out d);
}
Run Code Online (Sandbox Code Playgroud)

如果在标记的枚举中定义了某个值,则该值应返回true.

有人可以向我解释为什么这有效吗?

提前致谢 :)

c# enums flags c#-4.0

8
推荐指数
1
解决办法
1337
查看次数