多边形作为Vector2I对象列表(2维,整数坐标)给出.如何测试给定点是否在内?我在网上找到的所有实现都失败了一些微不足道的反例.写一个正确的实现似乎很难.语言并不重要,因为我会自己移植它.
似乎以下变体产生相同的结果:
/* 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吗?为什么或者为什么不?
我不关心链接是否被访问过.两者都采用相同的风格.我只关心悬停或不悬停.这个问题不是关于变体的作用 - 都做同样的事情.它是关于什么是最好的变种.其中一个变种有缺陷吗?哪一个是最佳实践?
我希望以下程序一直返回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) 该表达式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位,但它没有.
为什么规范会保留结果实现定义?这是反对这样做的情况:
idiv在这种情况下,x86 指令总是会导致异常.同样有趣的是,如果x / y是一个编译时常量我们确实得到unchecked(int.MinValue / -1) == int.MinValue:
Console.WriteLine(unchecked(int.MinValue / -1)); //-2147483648
Run Code Online (Sandbox Code Playgroud)
这意味着,x / y可以有根据使用的语法形式在不同的行为(而不是只依赖于的值x和y).这是规范允许的,但它似乎是一个不明智的选择.为什么C#这样设计?
一个类似的问题指出,在说明书这一确切行为被规定,但它并没有(足够的)回答为什么语言是这样设计的.不讨论替代选择.
SQL Server 2008 Profiler始终会分析所有数据库.我想限制分析或输出到单个数据库.怎么能最容易地完成?
sql-server sql-server-2005 sql-server-profiler sql-server-2008
我想在固定空间中列举数字1..N的随机排列.这意味着我无法将所有数字存储在列表中.原因是N可能非常大,超过可用内存.我仍然希望能够一次一个地浏览这样的数字排列,只访问每个数字一次.
我知道这可以用于某些N:许多随机数生成器随机循环遍历整个状态空间,但完全是.状态大小为32位的良好随机数发生器将发出数字0 ...(2 ^ 32)-1的排列.每个数字只有一次.
我想要选择N作为任何数字,而不是限制为2的幂.有算法吗?
一些RDBMS(包括SQL Server)支持XML列.我不希望将这样的列映射到string数据类型.Entity Framework 6.1是否以任何方式本机支持XML?
更具体地说,我可以将xml列映射到.NET的一种XML数据类型(例如XElement或XmlElement)吗?Entity Framework是否支持集成到普通LINQ查询中并转换为SQL查询的XQuery?
如何删除一个的所有子节点XmlElement,但保留所有属性?
请注意,XmlElement.RemoveAll还会删除所有属性.什么是干净,优雅和良好的删除所有子节点的方法?换句话说,这里最好的做法是什么?
我必须存储两个非常大的文件A和B(如100GB).然而,B在大部件中可能与A类似,因此我可以存储A和diff(A,B).这个问题有两个有趣的方面:
我目前在如何计算在这些条件下从A到B的增量变得茫然.有谁知道这个算法?
同样,问题很简单:编写一个算法,可以使用尽可能少的字节存储文件A和B,因为两者非常相似.
附加信息:虽然大部件可能相同,但它们可能具有不同的偏移并且可能出现故障.最后一个事实是为什么传统的差异可能不会节省太多.
等待故障任务(具有异常集的任务)时,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上的其他问题无法解决此特定问题.建议重复时请小心.
.net ×2
algorithm ×2
c# ×2
async-await ×1
c#-5.0 ×1
c++ ×1
c++11 ×1
css ×1
diff ×1
geometry ×1
hittest ×1
html ×1
optimization ×1
polygon ×1
random ×1
rcs ×1
sql-server ×1
xmldocument ×1
xmldom ×1