小编Jor*_*ira的帖子

353
推荐指数
18
解决办法
30万
查看次数

例外或错误代码的约定

昨天我和同事讨论了什么是首选的错误报告方法.主要是我们讨论了异常或错误代码的使用,以报告应用程序层或模块之间的错误.

您使用什么规则来决定是否抛出异常或返回错误代码以进行错误报告?

language-agnostic language-design

112
推荐指数
10
解决办法
5万
查看次数

谷歌怎么这么快?

有哪些技术和编程决策可以让Google能够如此快速地为查询提供服务?

每当我搜索某些东西(每天几次中的一次)时,我总是惊讶于他们如何在接近或不到1秒的时间内提供结果.他们可以采用哪种配置和算法来实现这一目标?

旁注:有点压倒性的想法,即使我要放置桌面应用程序并在我的机器上使用它可能也不会像谷歌快一半.继续学习我说.


以下是一些很棒的答案和指示:

algorithm performance

89
推荐指数
4
解决办法
7万
查看次数

在Visual Studio中禁用空文本的副本

我有点错误配置手指.这导致非常烦人的情况.

  1. 我选择要复制的文本块;
  2. 我将光标移动到我要粘贴代码的位置;
  3. 我不小心再按Ctrl + C而不是Ctrl + V;
  4. 我的复制文本块被一个空块替换;
  5. 我必须回去再做一遍.Grrrrr.

有没有办法禁用此行为,即禁用Visual Studio 2005+中的空文本块的副本?

keyboard visual-studio

62
推荐指数
2
解决办法
4682
查看次数

模板约束C++

在C#中,我们可以定义一个泛型类型,它对可用作泛型参数的类型施加约束.以下示例说明了泛型约束的用法:

interface IFoo
{
}


class Foo<T> where T : IFoo
{
}

class Bar : IFoo
{
}

class Simpson
{
}

class Program
{
    static void Main(string[] args)
    {
        Foo<Bar> a = new Foo<Bar>();
        Foo<Simpson> b = new Foo<Simpson>(); // error CS0309
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在C++中对模板参数施加约束.


C++ 0x本身支持这个,但我说的是当前的标准C++.

c++ templates constraints

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

如何在Windows上使线程睡眠时间小于一毫秒

在Windows上我遇到了一个我从未在Unix上遇到过的问题.这是如何使线程休眠不到一毫秒.在Unix上,您通常有许多选择(睡眠,睡眠和纳米睡眠)以满足您的需求.但是,在Windows上,只有Sleep具有毫秒级的粒度.

在Unix上,我可以使用select系统调用来创建一个非常简单的微秒睡眠:

int usleep(long usec)
{
    struct timeval tv;
    tv.tv_sec = usec/1000000L;
    tv.tv_usec = usec%1000000L;
    return select(0, 0, 0, 0, &tv);
}
Run Code Online (Sandbox Code Playgroud)

如何在Windows上实现相同的目标?

c++ windows winapi sleep

53
推荐指数
10
解决办法
8万
查看次数

"你不能转发声明重载运算符的类&"?

在Google C++样式指南中,有一个关于运算符重载的部分有一个奇怪的声明:

超载也有令人惊讶的后果.例如,您无法转发声明重载的类 operator&.

这似乎不正确,我找不到任何导致GCC出现问题的代码.有谁知道那个陈述是指什么?

c++ gcc

14
推荐指数
3
解决办法
1479
查看次数

Win32API结构中cbSize成员的用途是什么

我经常遇到Win32API结构的一些定义(但不限于它),它们具有cbSize以下示例中的成员.

typedef struct _TEST {
    int cbSize;
    // other members follow
} TEST, *PTEST;
Run Code Online (Sandbox Code Playgroud)

然后我们像这样使用它:

TEST t = { sizeof(TEST) };
...
Run Code Online (Sandbox Code Playgroud)

要么

TEST t;
t.cbSize = sizeof(TEST);
...
Run Code Online (Sandbox Code Playgroud)

我最初的猜测是,这可能会用于版本控制.接收类似于此结构的指针的DLL可以检查该cbSize成员是否具有用于编译DLL的预期值.或者检查是否对结构进行了正确的包装.但是我想在这里.

cbSizeWin32API上某些C++结构中成员的目的是什么?

c++ api winapi

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

诊断Win32程序中的死锁

由于Win32生产过程中的死锁而调试明显挂起的步骤和技术有哪些.我听说WinDbg可以用于此目的,但是请您提供明确的提示,说明如何实现这一目标?

winapi production deadlock windbg

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

句柄在哪里分配?

我想知道是否可以使用 WinDbg 来了解导致句柄分配的调用堆栈。

例如:

#include <windows.h>
#include <conio.h>
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Press ENTER to leak handles." << endl;

    _getch();

    cout << "Leaking handles" << endl;

    for (int i = 0; i < 100; ++i)
    {
        HANDLE h = CreateEvent(NULL, FALSE, FALSE, NULL);
        if (h != NULL)
        {
            cout << ".";
        }
    }

    cout << "Handles leaked. Press ENTER to exit." << endl;

    _getch();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在构建此示例并在 WinDbg 中启动它之后,是否可以获取分配句柄的调用堆栈,在该行上方的示例中:

HANDLE …
Run Code Online (Sandbox Code Playgroud)

windows windbg resource-leak

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

如何对操作施加时间限制

我有一个(可能)冗长的操作a,我想对其施加限制时间约束t(以毫秒为单位)。如果操作a 的完成时间少于t毫秒,那么我将返回操作a的答案;否则我想中止操作并返回一个正确的错误代码,说明超出了时间限制。

我怎样才能在 C# 中完成这个?如果您有其他与语言无关的想法,请随时分享?

c# timeout

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