小编tan*_*ius的帖子

假设P = NP证明是什么样的?

它是一个特定NP完全问题的多项式时间算法,还是仅仅是抽象推理能够证明存在NP完全问题的解决方案?

似乎特定的算法更有帮助.有了它,我们要多方面地解决NP问题所需要做的就是将它转换成证明有解决方案的特定NP完全问题,我们就完成了.

algorithm math complexity-theory computer-science p-np

17
推荐指数
4
解决办法
3831
查看次数

如何测试线程安全性

您对如何测试多线程应用程序有什么建议吗?

我知道,线程错误很难捕获,它们可能随时发生 - 或者根本不发生.测试很困难,结果永远不会确定.当然最好仔细设计和编程并发模块.
尽管如此 - 我不想忽略测试方面.因此,运行大量同时处理相同项目的线程有时会调用线程错误.

任何想法或最佳实践,以获得隐藏线程错误的高命中率?
(我正在使用.Net/C#)

c# testing concurrency multithreading

15
推荐指数
2
解决办法
4918
查看次数

C/C++位域与逐位运算符相比,单位输出位更快,更好,更便携?

我需要以这种方式在一个字节中打包一些位:

struct  
{  
  char bit0: 1;  
  char bit1: 1;  
} a;  

if( a.bit1 ) /* etc */
Run Code Online (Sandbox Code Playgroud)

要么:

if( a & 0x2 ) /* etc */
Run Code Online (Sandbox Code Playgroud)

从源代码的清晰度来看,对我来说很明显,bitfields更整洁.但哪个选项更快?我知道速度差异不会太大,如果有的话,但我可以使用其中任何一个,如果一个更快,更好.
另一方面,我已经读过,不保证位域不能跨平台排列相同的位,我希望我的代码可以移植.

注意:如果您打算回答"个人资料",我会,但是因为我很懒,如果有人已经有了答案,那就更好了.
代码可能有误,如果你愿意,可以纠正我,但请记住这个问题的重点是什么,请尝试回答.

c c++ bit-manipulation bit-fields

13
推荐指数
5
解决办法
7730
查看次数

C#方法组怪异

我发现了一些非常奇怪的东西,我希望能更好地理解.

var all = new List<int[]>{
                new int[]{1,2,3},
                new int[]{4,5,6},
                new int[]{7,8,9}
              };

all.ForEach(n => n.ForEach(i => Console.WriteLine(i)));
Run Code Online (Sandbox Code Playgroud)

可以改写为:

...
all.ForEach(n => n.ForEach(Console.WriteLine));
Run Code Online (Sandbox Code Playgroud)

如何省略lambda表达式参数(i =>)并仍然将当前项传递给console.WriteLine?

感谢您的任何见解.-Keith

c# lambda method-group

13
推荐指数
1
解决办法
2397
查看次数

FileSystemWatcher不报告锁定文件中的更改

我正在使用FileSystemWatcher监视文件夹,如下所示:

watcher = new FileSystemWatcher(folder);
watcher.NotifyFilter = NotifyFilters.Size;
watcher.Changed += changedCallback;
Run Code Online (Sandbox Code Playgroud)

当我在该文件夹中的记事本中打开一个新文件并保存时,我会收到通知.如果我继续写作然后保存,我会收到通知.如果我保存它关闭文件,我会收到通知.正是我想要的.

但是,事实证明,如果我在该文件夹中创建一个文件并将其共享模式设置为FileShare.Read,然后我写入它,则在文件关闭之前我不会收到任何通知.另一种解决方法是打开文件(例如在记事本中),这显然会导致其状态更新,然后我的监控应用程序会收到通知.另一种解决方法是我可以在Windows资源管理器中执行刷新,这再次导致文件状态更新.

有趣的是,如果我在进行更改时查看Windows资源管理器,我会注意到:

  1. 如果共享文件进行读写,则一旦保存,它的大小将立即在Windows资源管理器中更新.
  2. 如果共享文件仅供读取,则不会在Windows资源管理器中立即更新其大小,除非我手动刷新窗口.

因此,我的监控应用程序似乎与Windows资源管理器共享相同的行为.我正在考虑运行一个只扫描文件夹中文件的线程,但我想知道在这种情况下是否还有更优雅的事情要做.

顺便说一下,我正在使用Win7,我不确定这个问题是否也会在其他Windows版本上发生.

谢谢!

编辑:在C++中使用ReadDirectoryChanges得到了相同的结果.实现我之前谈到的线程并没有帮助.我想知道Windows资源管理器中的F5究竟是做什么的,因为它确实会导致报告更改.

c# filesystemwatcher

13
推荐指数
1
解决办法
5310
查看次数

使用Maven通过SCP上传文件失败

我尝试使用scp将maven创建的耳朵上传到应用服务器.

当我试图跑

mvn wagon:upload-single
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

[ERROR] Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload-single (default-cli) on project de.volkswagen.dps.ear: Unable to create a Wagon instance for null: url can not be null -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload-single (default-cli) on project de.volkswagen.dps.ear: Unable to create a Wagon instance for null
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:585)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:324)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:247)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:427)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:121)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) …

upload maven-2 scp wagon

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

依赖注入以解决循环依赖关系

例:

class MyClass
{
    Composition m_Composition;

    void MyClass()
    {
        m_Composition = new Composition( this );
    }
}
Run Code Online (Sandbox Code Playgroud)

我有兴趣在这里使用depenency-injection.所以我将不得不重构构造函数,如:

void MyClass( Composition composition )
{
    m_Composition = composition;
}
Run Code Online (Sandbox Code Playgroud)

但是我现在遇到了一个问题,因为Composition-object依赖于MyClass刚创建的类型的对象.

依赖容器可以解决这个问题吗?应该这样做吗?
或者从一开始就是糟糕的设计?

refactoring dependency-injection inversion-of-control

10
推荐指数
1
解决办法
1030
查看次数

通用构造函数和反射

是否有可能看到哪个构造函数是通用构造函数?

internal class Foo<T>
{
  public Foo( T value ) {}
  public Foo( string value ) {}
}

var constructors = typeof( Foo<string> ).GetConstructors();
Run Code Online (Sandbox Code Playgroud)

属性'ContainsGenericParameters'返回两个构造函数false.有没有办法找出构造函数[0]是通用的?它们都有相同的签名,但我想称之为"真正的"字符串.

编辑:

我想使用调用给定的类型

ilGen.Emit( OpCodes.Newobj, constructorInfo );
Run Code Online (Sandbox Code Playgroud)

所以我需要使用绑定版本.但我想调用"最好的"构造函数.这应该是标准行为.我打电话的时候

new Foo<string>()
Run Code Online (Sandbox Code Playgroud)

调用带有字符串签名的构造函数(而不是具有通用签名的构造函数).我的代码也应该这样.

c# generics reflection

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

这个P!= NP证明缺少什么?

我试图恢复密码.考虑到这一点,我认识到"密码恢复"这个问题是NP问题的一个很好的例子.如果您知道密码,则很容易在多项式时间内验证密码.但是如果您不知道密码,则必须在整个空间内搜索可能显示为指数时间的可能解决方案.

现在我的问题是:这不是证明P!= NP,因为"密码恢复"是NP的一个元素,可以显示需要多于多项式时间来运行?

computer-science-theory p-np

9
推荐指数
3
解决办法
1652
查看次数

php和c#中的hmac_sha256不同

这是我的PHP代码:

hash_hmac( "sha256", utf8_encode( $filename ), utf8_encode( $password ) );
Run Code Online (Sandbox Code Playgroud)

这是我的C#代码:

var hmacsha256 = new HMACSHA256( Encoding.UTF8.GetBytes( password ) );
hmacsha256.ComputeHash( Encoding.UTF8.GetBytes( filename ) );
Run Code Online (Sandbox Code Playgroud)

不幸的是,两个结果都不同 任何人都可以给我一个提示吗?

php c# hashcode

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