小编Pol*_*ial的帖子

$(this).src和document.getElementById().src之间的区别?

在当前的项目中,我正在使用jQuery.我只是想知道为什么会这样,

$('#homeIcon').hover(function(){
    document.getElementById('homeIcon').src = "pic/home-icon_hover.png";
})
Run Code Online (Sandbox Code Playgroud)

但这不会:

$('#homeIcon').hover(function(){
    $(this).src = "pic/home-icon_hover.png";
})
Run Code Online (Sandbox Code Playgroud)

这些方法不应该完全一样吗?

FYI homeIcon<img>.

javascript jquery

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

在C#中保持调试字符串不在构建中

在编写代码时,我经常在代码中放置调试消息.调试消息由记录器类处理,记录器类以调试模式将消息输出到文件,并在释放模式下丢弃它们.

它看起来像这样:

class Logger : IDisposable
{
    private StreamWriter m_Logger = null;

    public void Start(string logFile)
    {
        m_Logger = new StreamWriter(logFile);
        m_Logger.AutoFlush = true;
    }

    public void Dispose()
    {
        if (m_Logger != null) m_Logger.Dispose();
    }

    public void WriteLine(string message)
    {
        if (m_Logger != null) m_Logger.WriteLine(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

实例在启动时创建,可从Program类中访问.然后我检查这样的调试:

#if DEBUG
Program.Log.Start("app.log");
#endif
Run Code Online (Sandbox Code Playgroud)

这很好用,因为它在调试模式下转储调试信息,而不是在发布模式下.但是,如果我通过实用程序运行发布可执行文件strings,我仍然可以看到调试字符串.我宁愿让它们完全脱离发布版本,以帮助防止逆向工程.

到目前为止,我发现的唯一解决方案是将所有调试消息包装在预处理器条件中:

// < some code here >
#if DEBUG
Program.Log.WriteLine("Some debug message.");
#endif
// < more code here >
Run Code Online (Sandbox Code Playgroud)

这非常乏味和丑陋.我的第一个想法是使用某种预处理器宏,但C#不支持它们.有没有比我现在使用的更优雅的解决方案?

c# logging c-preprocessor

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

C++虚拟与否?

为什么要在具有两个以上级别的继承层次结构中声明非虚函数?有人可以给我一个例子吗?

我知道区别是什么和发生了什么,但我无法真正理解为什么以及何时想要这样做.

c++ virtual inheritance

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

PHP中的人类可读日期参考,例如"last monday"

可能重复:
人类可读,当前时间敏感的日期和时间格式在PHP
人类可读日期使用PHP

我正在寻找一种以会话风格生成人类可读日期引用的方法,如下所示:

diff( '2012-05-15', '2012-05-21' ) == "last Tuesday"
diff( '2012-05-15', '2012-05-16' ) == "yesterday"
diff( '2012-05-15', '2012-05-17' ) == "on Tuesday"
diff( '2012-04-11', '2012-05-21' ) == "on the 11th of April"
Run Code Online (Sandbox Code Playgroud)

我调查了一下strtotime(),这似乎与我想要的相反.该解决方案不需要使用未来的日期,只需要过去的日期.我看到另一个问题在JavaScript中未来日期提出同样的问题,但它并没有真正解决我的问题.

有任何想法吗?

php datediff date

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

MD5加密API为某些明文返回错误的哈希值

我正在尝试使用Microsoft加密API来计算MD5哈希值,但是我得到的哈希值不正确:

#include <windows.h>
#include <stdio.h>
#include <wincrypt.h>

char* HashMD5(char* data, DWORD *result)
{
    DWORD dwStatus = 0;
    DWORD cbHash = 16;
    int i = 0;
    HCRYPTPROV cryptProv;
    HCRYPTHASH cryptHash;
    BYTE hash[16];
    char *hex = "01234567879abcdef";
    char *strHash = "00000000000000000000000000000000";
    if(!CryptAcquireContext(&cryptProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
    {
        dwStatus = GetLastError();
        printf("CryptAcquireContext failed: %d\n", dwStatus);
        *result = dwStatus;
        return NULL;
    }
    if(!CryptCreateHash(cryptProv, CALG_MD5, 0, 0, &cryptHash))
    {
        dwStatus = GetLastError();
        printf("CryptCreateHash failed: %d\n", dwStatus);
        CryptReleaseContext(cryptProv, 0);
        *result = dwStatus;
        return NULL;
    }
    if(!CryptHashData(cryptHash, …
Run Code Online (Sandbox Code Playgroud)

c winapi md5 cryptography cryptoapi

0
推荐指数
1
解决办法
2045
查看次数