问题列表 - 第45792页

将Groovy比较运算符与Date对象一起使用

我正在调查一个问题并遇到一些可疑代码,涉及使用比较运算符比较Date实例.例如

    def stamp = ... //Date
    def offset = ... //Integer
    def d = new Date(stamp.time + offset)
    if (d < new Date()) {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

资源表明以上内容等同于以下内容

    def stamp = ... //Date
    def offset = ... //Integer
    def d = new Date(stamp.time + offset)
    if (d.compareTo(new Date()) < 0) {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

但是,关于日期GDK文档仅包含使用compareTo,beforeafter和比较日期的示例.我似乎特别回想起由于遇到意外结果而特别避免在日期使用比较运算符.在上面的两个代码示例确实当量(也就是,我可以放心地在Groovy中使用的日期比较操作,或者我应该只使用compareTo,beforeafter)?

谢谢!

groovy datetime date operators gdk

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

如何在C++循环中生成不同的随机数?

每次循环运行时是否可以生成不同的随机数.例如,我有:

for (int t=0;t<10;t++)
{
    int random_x;
    srand ( time(NULL) );
    random_x = rand() % 100;
    cout<<"\nRandom X = "<<random_x;
} 
Run Code Online (Sandbox Code Playgroud)

但问题是,它每次都会生成相同的随机数.每次循环运行都可以生成不同的随机数吗?

是否有可能重置随机数初始化?

c++ random loops

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

在交换机中嵌入if/else是有效的JavaScript吗?

这有效吗?

switch(foo) {
    case 'bar':
    if(raz == 'something') {
        // execute
    } else {
        // do something else
    }
    break;
    ...
    default:
    // yada yada
}
Run Code Online (Sandbox Code Playgroud)

javascript

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

当一个单独的线程正在休眠时,java应用程序关闭是不是很糟糕?

例如,如果我有一个java命令行程序,它产生一个新线程(线程#2)进行一些轮询,然后睡5分钟.程序的主线程(线程#1)正在运行,然后在线程#2启动5分钟之前完成,所以程序将退出.这有什么问题吗?我应该在这个程序的主函数结束之前中断线程#1中的线程#2吗?

java multithreading sleep shutdown thread-safety

5
推荐指数
1
解决办法
342
查看次数

为什么有些图片在IE中无法显示,而在其他浏览器中却不能显示?

我遇到了许多在各种浏览器中显示的图像,IE6 到 IE8 除外。例如,此图像在 IE6 到 IE8 以外的浏览器中显示良好。

您可以看到该图像在Firefox中显示正常,但在IE8 中显示不正常。

对根本原因有什么想法吗?

internet-explorer image cross-browser

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

使用Variadic模板解压缩参数列表

我正在尝试围绕使用不透明数据类型的旧C-API创建C++便捷包装器.有一个特定的C函数,它使用格式字符串,以及使用C <stdarg.h>工具的可变数量的参数.作为我的包装器的一部分,我希望能够将任意数量的参数(包括C++对象)传递给此函数.但是,由于<stdarg.h>设施显然无法处理非POD数据,因此我创建了一个模板化转换函数,它将C++对象(如std::string)转换为POD等价物.

我认为整个事情使用C++ 0x可变参数模板是一个简单的练习,但是我很难弄清楚如何在将转换函数应用于每个参数时正确地展开参数包的方式编写此函数.

到目前为止我所拥有的是:

   template <class T, class... Args>
   void apply(OPAQUE* object, const char* fmt_string, T&& val, Args&&... args)
   {
      apply(object, fmt_string, Convert(val), args...);
   }

   template <class... Args>
   void apply(OPAQUE* object, const char* fmt_string, Args&&... args)
   {
      C_API_Function_Call(object, fmt_string, args...);
   }
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用,因为递归函数调用永远不会实际解包Args...,所以它只是递归直到堆栈溢出.我无法弄清楚如何解压缩参数,同时将当前参数传递给Convert函数,然后递归传递结果.

反正有没有这样做?

c++ variadic-functions c++11

5
推荐指数
1
解决办法
4609
查看次数

单声道https webrequest失败,"验证或解密失败"

我正在制作一个简单的REST客户端,用于我的C#应用​​程序.在Windows上的.net它适用于http://和https://连接.在Ubuntu 10.10的单声道2.6.7(也用2.8测试,结果相同)只有http://有效.https:// connections在request.GetResponse()方法上抛出此异常:

Unhandled Exception: System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010a
  at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in <filename unknown>:0 
  at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in <filename unknown>:0 
  at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
  at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in <filename unknown>:0 
  at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  --- …
Run Code Online (Sandbox Code Playgroud)

c# mono https webrequest

67
推荐指数
4
解决办法
6万
查看次数

C#"as"演员与经典演员

可能重复:
使用CLR中的'as'关键字进行转换

我最近了解了一种不同的演员方式.而不是使用

SomeClass someObject = (SomeClass) obj;
Run Code Online (Sandbox Code Playgroud)

可以使用以下语法:

SomeClass someObject = obj as SomeClass;
Run Code Online (Sandbox Code Playgroud)

如果obj不是SomeClass,它似乎返回null,而不是抛出一个类转换异常.

我看到如果转换失败并且我尝试访问someObject变量,这可能导致NullReferenceException.所以我想知道这种方法背后的理由是什么?为什么要使用这种方式而不是(旧)方式 - 它似乎只是将失败的演员问题"更深"地转移到代码中.

c# casting

132
推荐指数
4
解决办法
9万
查看次数

需要在文本文件匹配字符串中获取行号

我需要使用PHP获取文本文件的行号.我需要的是"想要这条线".

我尝试使用file()将文件行放在一个数组中并使用array_search()进行搜索,但它不会返回行号.在这个例子中,我需要返回3作为行号.

$file = file("file.txt");
$key = array_search("WANT", $file);
echo $key;
Run Code Online (Sandbox Code Playgroud)

文本文件:

First Line of Code
Some Other Line
WANT THIS LINE
Last Line
Run Code Online (Sandbox Code Playgroud)

php

3
推荐指数
1
解决办法
7547
查看次数

为什么在Java中双重检查锁定被破坏?

此问题涉及旧Java版本的行为和双重检查锁定算法的旧实现

较新的实现使用volatile并依赖于稍微改变的volatile语义,因此它们不会被破坏.


据说,除了long或double字段外,字段赋值总是原子的.

但是,当我读到为什么双重检查锁定被破坏的解释时,它说问题在于赋值操作:

// Broken multithreaded version
// "Double-Checked Locking" idiom
class Foo {
    private Helper helper = null;
    public Helper getHelper() {
        if (helper == null) {
            synchronized(this) {
                if (helper == null) {
                    helper = new Helper();
                }
            }
        }
        return helper;
    }

    // other functions and members...
}
Run Code Online (Sandbox Code Playgroud)
  1. 线程A注意到该值未初始化,因此它获得锁定并开始初始化该值.
  2. 由于某些编程语言的语义,允许编译器生成的代码在A完成初始化之前更新共享变量以指向部分构造的对象.
  3. 线程B注意到共享变量已初始化(或显示),并返回其值.因为线程B认为该值已经初始化,所以它不会获得锁定.如果B在B看到A完成的所有初始化之前使用该对象(因为A尚未完成初始化或者因为对象中的某些初始化值尚未渗透到内存B使用(缓存一致性)) ,该程序可能会崩溃.
    (来自http://en.wikipedia.org/wiki/Double-checked_locking).

什么时候可能?是否有可能在64位JVM分配操作中不是原子的?如果不是那么"双重检查锁定"是否真的被打破了?

java multithreading synchronization locking anti-patterns

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