小编usr*_*usr的帖子

如何测试点是否在2D整数坐标中的凸多边形内?

多边形作为Vector2I对象列表(2维,整数坐标)给出.如何测试给定点是否在内?我在网上找到的所有实现都失败了一些微不足道的反例.写一个正确的实现似乎很难.语言并不重要,因为我会自己移植它.

geometry polygon hittest

26
推荐指数
3
解决办法
4万
查看次数

为什么我们需要"a:link"?为什么不只是"一个"?

似乎以下变体产生相同的结果:

/* 1 */
a, a:visited, a:active { color: black; }
a:hover { color: red; }

/* 2 */
a, a:link, a:visited, a:active { color: black; }
a:hover { color: red; }

/* 3 */
a:link, a:visited, a:active { color: black; }
a:hover { color: red; }
Run Code Online (Sandbox Code Playgroud)

网络上的大多数指导使用2或3.为什么不选择最简单的1?:link如果您只需要一种普通链接样式和一种悬停样式,我就找不到合适的理由.

不使用是最佳做法:link吗?为什么或者为什么不?

我不关心链接是否被访问过.两者都采用相同的风格.我只关心悬停或不悬停.这个问题不是关于变体的作用 - 都做同样的事情.它是关于什么是最好的变种.其中一个变种有缺陷吗?哪一个是最佳实践?

html css

24
推荐指数
2
解决办法
1273
查看次数

在/ OPT:ICF存在的情况下,Visual Studio 2013是否正确优化?

我希望以下程序一直返回0.但是,对于Visual Studio 2013(Update 4),程序在发布版本中退出1.我不确定这是一个错误,还是编译器的优化器是正确的,并且依赖于某些边缘行为.如果关闭CONST宏,则release exe返回0.如果优化器确实正确,我是否可以获得允许它发出代码的原因?

#if 1
#   define CONST const
#else
#   define CONST
#endif


class TypeId {
public:
    bool operator== (TypeId const & other) const
    {
        return id == other.id;
    }

private:
    TypeId (void const * id)
        : id(id)
    {}

public:
    template <typename T>
    static TypeId Get ()
    {
        static char CONST uniqueMemLoc = 0;
        return TypeId(&uniqueMemLoc);
    }

private:
    void const * id;
};


int main(int, char **)
{
    typedef int A;
    typedef unsigned int B;

    if (TypeId::Get<A>() …
Run Code Online (Sandbox Code Playgroud)

c++ optimization c++11 visual-studio-2013

24
推荐指数
2
解决办法
1341
查看次数

为什么定义C#规范(int.MinValue/-1)实现?

该表达式int.Minvalue / -1根据C#规范导致实现定义的行为:

7.8.2分部运营商

如果左操作数是最小的可表示的int或long值而右操作数是-1,则发生溢出.在已检查的上下文中,这会导致抛出System.ArithmeticException(或其子类).在未经检查的上下文中,它是实现定义的,是否抛出System.ArithmeticException(或其子类)或溢出未报告,结果值是左操作数的值.

测试程序:

var x = int.MinValue;
var y = -1;
Console.WriteLine(unchecked(x / y));
Run Code Online (Sandbox Code Playgroud)

这会引发OverflowException.NET 4.5 32位,但它没有.

为什么规范会保留结果实现定义?这是反对这样做的情况:

  1. idiv在这种情况下,x86 指令总是会导致异常.
  2. 在其他平台上,可能需要运行时检查来模拟此操作.但是与该部门的成本相比,该检查的成本会很低.整数除法非常昂贵(15-30个周期).
  3. 这会打开兼容性风险("写一次无处可写").
  4. 开发者惊喜.

同样有趣的是,如果x / y是一个编译时常量我们确实得到unchecked(int.MinValue / -1) == int.MinValue:

Console.WriteLine(unchecked(int.MinValue / -1)); //-2147483648
Run Code Online (Sandbox Code Playgroud)

这意味着,x / y可以有根据使用的语法形式在不同的行为(而不是只依赖于的值xy).这是规范允许的,但它似乎是一个不明智的选择.为什么C#这样设计?

一个类似的问题指出,在说明书这一确切行为被规定,但它并没有(足够的)回答为什么语言是这样设计的.不讨论替代选择.

c# language-design

24
推荐指数
2
解决办法
454
查看次数

如何筛选单个数据库的SQL Server 2008 Profiler输出?

SQL Server 2008 Profiler始终会分析所有数据库.我想限制分析或输出到单个数据库.怎么能最容易地完成?

sql-server sql-server-2005 sql-server-profiler sql-server-2008

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

在常量空间中创建1..N的随机排列

我想在固定空间中列举数字1..N的随机排列.这意味着我无法将所有数字存储在列表中.原因是N可能非常大,超过可用内存.我仍然希望能够一次一个地浏览这样的数字排列,只访问每个数字一次.

我知道这可以用于某些N:许多随机数生成器随机循环遍历整个状态空间,但完全是.状态大小为32位的良好随机数发生器将发出数字0 ...(2 ^ 32)-1的排列.每个数字只有一次.

我想要选择N作为任何数字,而不是限制为2的幂.有算法吗?

random algorithm

21
推荐指数
2
解决办法
2504
查看次数

Entity Framework 6.1本机是否支持XML数据类型?

一些RDBMS(包括SQL Server)支持XML列.我不希望将这样的列映射到string数据类型.Entity Framework 6.1是否以任何方式本机支持XML?

更具体地说,我可以将xml列映射到.NET的一种XML数据类型(例如XElementXmlElement)吗?Entity Framework是否支持集成到普通LINQ查询中并转换为SQL查询的XQuery?

.net entity-framework entity-framework-6

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

如何删除XmlElement的所有子节点,但保留所有属性?

如何删除一个的所有子节点XmlElement,但保留所有属性?

请注意,XmlElement.RemoveAll还会删除所有属性.什么是干净,优雅和良好的删除所有子节点的方法?换句话说,这里最好的做法是什么?

.net xmldocument xmldom

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

有效区分大文件的算法

我必须存储两个非常大的文件A和B(如100GB).然而,B在大部件中可能与A类似,因此我可以存储A和diff(A,B).这个问题有两个有趣的方面:

  1. 文件太大,无法通过我所知道的任何差异库进行分析,因为它们位于内存中
  2. 我实际上并不需要差异 - 差异通常具有插入,编辑和删除,因为它意味着人类可以阅读.我可以用更少的信息逃脱:我只需要"新的字节范围"和"从任意偏移的旧文件复制字节".

我目前在如何计算在这些条件下从A到B的增量变得茫然.有谁知道这个算法?

同样,问题很简单:编写一个算法,可以使用尽可能少的字节存储文件A和B,因为两者非常相似.

附加信息:虽然大部件可能相同,但它们可能具有不同的偏移并且可能出现故障.最后一个事实是为什么传统的差异可能不会节省太多.

algorithm diff rcs

16
推荐指数
4
解决办法
6412
查看次数

我想等待抛出AggregateException,而不仅仅是第一个Exception

等待故障任务(具有异常集的任务)时,await将重新抛出存储的异常.如果存储的异常是a AggregateException,它将重新抛出第一个并丢弃其余的异常.

我们如何使用await并同时抛出原件AggregateException以便我们不会意外丢失错误信息?

注意,当然可以考虑使用hacky解决方案(例如,试一试await,然后调用Task.Wait).我真的希望找到一个干净的解决方案.这里最好的做法是什么?

我想过使用自定义awaiter,但内置TaskAwaiter包含很多魔法,我不知道如何完全重现.它调用TPL类型的内部API.我也不想重现所有这些.

如果你想玩它,这是一个简短的repro:

static void Main()
{
    Run().Wait();
}

static async Task Run()
{
    Task[] tasks = new[] { CreateTask("ex1"), CreateTask("ex2") };
    await Task.WhenAll(tasks);
}

static Task CreateTask(string message)
{
    return Task.Factory.StartNew(() => { throw new Exception(message); });
}
Run Code Online (Sandbox Code Playgroud)

只抛出两个例外中的一个Run.

请注意,Stack Overflow上的其他问题无法解决此特定问题.建议重复时请小心.

c# task-parallel-library async-await c#-5.0

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