我有一个应用程序,其中Hilbert R-Tree (维基百科) (citeseer)似乎是一个合适的数据结构.具体而言,它需要对将经历大量更新的数据集进行合理快速的空间查询.
但是,据我所知,这个数据结构的算法描述都没有提到如何实际计算必要的希尔伯特值 ; 这是希尔伯特曲线到该点的距离.
那么有关如何计算这个的任何建议?
我有一个使用电话号码作为唯一标识符的系统.出于这个原因,我想使用标准化格式格式化所有电话号码.因为我无法控制我的源数据,所以我需要自己解析这些数字并将它们格式化,然后再将它们添加到我的数据库中.
我即将编写一个可以读取电话号码并输出标准化电话格式的解析器,但在此之前,我想知道是否有人知道我可以用来格式化电话号码的任何预先存在的库.
如果没有预先存在的库,那么在创建可能不明显的此功能时,我应该记住哪些事项?
虽然我的系统目前只处理美国号码,但我打算尝试包括对国际号码的支持,以防万一有可能需要它.
编辑我忘了提到我正在使用C#.NET 2.0.
这是我第一次远离VC6的MFC应用程序,我觉得有点愚蠢:
如何添加OnInitDialog处理程序?(我知道如何手动添加它,但从长远来看这是一个痛苦).
双击对话框 - 没有.右键单击对话框 - 禁用"添加事件处理程序".属性 - 消息具有"正常"消息,但不具有WM_INITDIALOG属性 - 事件仅保存来自包含控件的通知在类视图中右键单击 - "添加..."仅具有函数和变量
划痕头
[编辑] d'oh - 它是MFC中的虚拟功能,但仍然......
我有一个带有两个构造函数的Base类,需要一个参数:
public abstract class StoreBase
{
private readonly SomeObject_sobj;
protected StoreBase(SomeObject sobj)
{
_sobj = sobj;
}
protected StoreBase(OtherObject oobj)
{
_sobj = new SomeObject(oobj);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个派生类:
public class MyDerived: StoreBase
{
}
Run Code Online (Sandbox Code Playgroud)
这会导致编译错误base class doesn't contain parameterless constructor.
我的理解是,因为MyDerived不包含构造函数,所以编译器添加了一个无参数构造函数(这是众所周知的,与派生类无关).但是,因为它派生自另一个类,所以基类构造函数需要先运行,并且无法确定应从空MyDerived构造函数运行哪个构造函数.
基本上我问:如果我真的不需要额外的构造函数逻辑,我可以避免将所有构造函数从Base复制/粘贴到Derived类中吗?我可以说"从基地拿走所有施工人员"而不加全部吗?
(是的,我知道我可以/应该将它重构为无参数构造函数和受保护的虚拟Initialize()方法.但我仍然想知道我是否可以使用构造函数并仍然避免复制/粘贴)

我在Win7 x64机器上编译了一些VB6代码,结果.exe将无法在任何其他机器上正确运行.
VB6代码只是一个带有一个按钮的新模板.exe文件,对"Microsoft ActiveX Data Objects 2.6 Library"的引用以及按钮按下事件中的以下代码:
Dim db
Set db = New ADODB.Connection
Run Code Online (Sandbox Code Playgroud)
它在我的机器上正常运行,但没有其他人(甚至其他Win7 x64机器)(更新:我发现其他两个用户运行,其中一个是Jeff Atwood!,但大多数机器都有同样的问题)
我检查了两台机器上的引用屏幕,看看引用是否失败(虽然它不会编译然后编译好).一切看起来都合法.在64位计算机上,引用进入SysWow64而不是system32.
我甚至在Vista 64位机器上成功编译了这个并且运行正常.它只是Windows 7上的编译,然后在发生错误的任何其他机器上运行.
以下是在我的盒子上运行CompChecker的结果:

注册表信息:ADODB.Connection具有GUID HKEY_CLASSES_ROOT\CLSID {00000514-0000-0010-8000-00AA006D2EA4}
InprocServer32是%CommonProgramFiles%\ System\ado\msado15.dll
我写了一些代码来下载我做的网络直播.它获取剧集的URL并获取保存它的位置.但是,它最多只下载16MB然后自动取消.我不完全确定要改变什么价值来增加这个.是否有可能,有人可以指出我正确的方向吗?谢谢!
下载代码:
URL url = new URL(episode.getUrl());
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
FileOutputStream fos = new FileOutputStream(episode.getLocalSave());
fos.getChannel().transferFrom(rbc, 0, 1 << 24);
Run Code Online (Sandbox Code Playgroud) 首先我要说的是,我并不提倡这种做法,但我最近才看到它,我想知道是否有一个名字,我可以用它指出有罪的一方.所以这里.
现在你有了一个方法,并且想要返回一个值.你也想返回错误代码.当然,异常是一个更好的选择,但无论出于何种原因,你想要一个错误代码.记住,我在这里扮演魔鬼的拥护者.所以你创建了一个泛型类,如下所示:
class FunctionResult<T>
{
public T payload;
public int result;
}
Run Code Online (Sandbox Code Playgroud)
然后声明你的函数:
FunctionResult<string> MyFunction()
{
FunctionResult<string> result;
//...
return result;
}
Run Code Online (Sandbox Code Playgroud)
此模式的一个变体是使用枚举来表示错误代码而不是字符串.现在,回到我的问题:这是否有一个名称,如果是这样,它是什么?
事件处理程序是否按照它们附加到事件的顺序触发?如果没有,我可以在事件处理程序上强制执行某种顺序,以便按特定顺序调用它们吗?
声明为xs:boolean的XML属性可以接受为"true","false","0"或"1".但是,在.NET中,Boolean.Parse()只接受"true"或"false".如果它看到"0"或"1",则抛出"Bad Format"异常.
那么,鉴于此,将这样的值解析为布尔值的最佳方法是什么?
(不幸的是,我只限于.NET 2.0解决方案,但如果v3.5提供了一些东西,我很乐意听到它.)
我最近需要将数据表序列化为JSON.我在哪里我们仍然在.Net 2.0,所以我不能在.Net 3.5中使用JSON序列化器.我想这一定是有人做过,所以我去网上找,并发现了一个数量的不同 选项.其中一些依赖于一个额外的库,我很难在这里推进.其他人需要先转换List<Dictionary<>>,这似乎有点尴尬和不必要.另一个处理所有值,如字符串.出于某种原因,我无法真正落后于他们,所以我决定推出自己的,我发布在下面.
正如您从阅读//TODO评论中看到的那样,它在一些地方是不完整的.这段代码已经在生产中,所以它在基本意义上"起作用".它不完整的地方是我们知道我们的生产数据当前不会命中它的地方(数据库中没有时间跨度或字节数组).我在这里发帖的原因是我觉得这可能会更好一些,我希望能帮助完成和改进这段代码.欢迎任何投入.
请注意,此功能内置于.Net 3.5及更高版本中,因此今天使用此代码的唯一原因是,您仍然只能使用.Net 2.0.即便如此,JSON.Net已成为此类事物的goto库.
public static class JSONHelper
{
public static string FromDataTable(DataTable dt)
{
string rowDelimiter = "";
StringBuilder result = new StringBuilder("[");
foreach (DataRow row in dt.Rows)
{
result.Append(rowDelimiter);
result.Append(FromDataRow(row));
rowDelimiter = ",";
}
result.Append("]");
return result.ToString();
}
public static string FromDataRow(DataRow row)
{
DataColumnCollection cols = row.Table.Columns;
string colDelimiter = "";
StringBuilder result = new StringBuilder("{");
for (int i = 0; i < …Run Code Online (Sandbox Code Playgroud)