我正在尝试使用System.Data.SQLite提供程序从C#访问SpatiaLite.当我尝试加载SpatiaLite扩展时,我总是得到
System.Data.SQLite.SQLiteException: SQLite error
The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
即使已将spatialite的dll复制到bin目录,也会出现错误.我甚至尝试指定dll的绝对路径,但无济于事.
这是代码:
string connectionString = @"Data Source=D:\MyStuff\projects\OsmUtils\trunk\Data\Samples\DB\osm.sqlite";
using (SQLiteConnection connection = new SQLiteConnection (connectionString))
{
connection.Open();
using (SQLiteCommand command = connection.CreateCommand())
{
command.CommandText = @"SELECT load_extension('libspatialite-1.dll');";
command.ExecuteScalar();
}
...
Run Code Online (Sandbox Code Playgroud)
从这个链接我得到的印象应该工作.
提前致谢
我需要使用这样的URL:
http://mydomain.com/Box/Categ1/Categ2/Categ3/.../CategN/id1,id2,id3,...,idN
然后我尝试用这种方式创建一条新路线......
routes.MapRoute(
"Box",
"Box/{data}",
new { controller = "Box", action = "Index"},
new { data = @"([a-zA-Z0-9-,]+/?)+" }
);
Run Code Online (Sandbox Code Playgroud)
但它只是不起作用.如果我使用任何字符而不是"/"(斜杠),它工作正常.是否可以使用斜杠?我真的希望看到这样的URL.
我不能拥有匿名委托声明,类似于以下内容:
ThreadStart starter = delegate() { go(); };
...
static void go()
{
Console.WriteLine("Nice Work");
}
// (or)
ThreadStart starter=delegate() { Console.WriteLine("Hello");}
Run Code Online (Sandbox Code Playgroud) 我最近通过一个简单的问题很难回答你的求职面试:LinkedIn这样的网站如何有效地显示你与页面上显示的每个人之间的关系距离(第一/第二/第三)(例如,在人们搜索结果中,工作人员列表)在公司等)?
<编辑>我得到了解决方案的基本"技巧":找到"与我的距离"是一种常见的操作(例如,单页上20x +,每次登录会话100次),所以你可以做到"我的距离"的一部分X",缓存它,然后多次重复使用缓存的部分结果,以使其他操作更便宜.我还猜测部分结果很可能是我的二级连接,因为"缓存所有第三级连接"在RAM和CPU中成本太高.</ EDIT>
但是当我试图将这种洞察力转化为解决方案时,我想出了一个笨拙的答案,涉及在网站上创建每个人的二级连接的持久缓存(这将是非常昂贵的性能和复杂的维护),我采取了一种莫名其妙的转向使用布鲁姆过滤器的方式几乎没有技术意义.在这样的答案之后,我不会雇用自己!
后来,当我在没有面试压力的情况下思考问题时,我提出了一个更合理的答案.
构建一种非常快速的方法来获得每批用户ID的第一级连接(批量大小可达~1000?).这可能意味着一个由大量RAM服务器组成的专用集群,它可以将整个网络的第一级连接缓存在内存中.幸运的是,50M会员x平均.每个成员100个连接x每个成员4个字节ID = <25GB缓存在RAM中,这对于价格合理的硬件是可行的.并且每天的更改次数将低于1%,因此保持缓存最新并不太难.(请注意,关系数据库可能是实现此缓存的不良选择,因为"大量随机I/O"访问模式会破坏关系数据库性能.)
当用户登录时,通过获取每个第一级连接的第一级连接来缓存其第二级连接,并粘贴在哈希表中(key =第二级ID,值=连接你的第一级连接数组) .同时缓存您的第一级连接,这样您就可以通过一次回调将第一级和第二级都拉回到远程缓存服务器.用户ID很容易分区,因此像memcached这样的分布式缓存可以很好地解决这个问题.
对于任何用户ID,要查找它是否在您的"网络"中以及它与您(第1,第2,第3)的关系,请执行以下操作:
但我相信有更好的答案.你的是啥呢?如果您想要额外的挑战,请尝试模拟一个inteview情境(无法在Web上查找解决方案).
请注意,问题是关于最佳解决方案,无论LinkedIn今天如何实际执行,我在上面写了自己的答案之后就查了一下.
我正在开发一个PHP站点,它提供来自cookie免费域的静态内容(感谢SO博客!),这个域提供高缓存的内容,其中包括我无法更改内容(JS,CSS和图像) )而不会使该缓存失效.目前我通过将?revision(例如style.css?19)附加到静态URL的末尾来执行此操作,目前我手动执行此操作,这显然远非方便.
推荐的方法是什么?我正在使用Subversion,根据我的理解,我可以使用各种工具来获取修订版号 - 但是我将如何将其转换为PHP(在每次加载页面时运行它似乎不是很明智?).我猜我应该最有可能使用某种构建系统.
任何建议将不胜感激.
谢谢
ASP.NET AJAX 4最近添加了跟踪客户端ADO.NET Data Services对象更改的功能.这让我想知道跟踪JavaScript库的其他变化是什么.有没有人见过,或者你在使用任何?
编辑:只是为了澄清"更改跟踪"的含义:新版本的ASP.NET AJAX允许您检索JavaScript对象,在客户端上对其进行更改,然后仅将这些更改发送回服务器.
我试图使用"Dart Board Method"找到PI的值,但我一直无法在网上找到相关的算法.你知道一个链接可以帮助我理解这个方法,还提供了一个算法吗?
谢谢.
我如何在jinja2中html-escape危险的unsanitized输入?
我可以在模板中执行它还是必须在python代码中完成?
我有一个可能包含da <ngero> u&s字符的变量.我如何在jinja2中逃脱它
好的,这是事实.我不是数据库大师或管理员.事实上,除了一些偶尔的索引/查询调优之外,我不会经常在数据库中搜索.我经常遇到的一件事是SQL Server事务日志.我知道它是什么,它包含什么以及它是如何工作的(至少在概念上),但我想我不明白为什么SQL Server似乎如此依赖于事务日志.
这是第一个问题.如果我错了,请纠正我,但在我看来,默认情况下,事务日志将只包含数据库中所有更改的完整历史记录.有两种迹象表明情况可能确实如此.当我创建一个新数据库时,其日志的最大大小设置为"不受限制的增长".第二个原因是我经常处理具有巨大事务日志的小型数据库,无论我做什么都无法缩小.这似乎很奇怪我无法相信这是真的.为什么我默认需要整个历史记录?我所关心的只是处于一致状态的最新数据版本.好吧,我怀疑在某些情况下可能有正当理由,但我认为这是一个额外的选择.
我的第二个问题是为什么摆脱过渡日志这么复杂?它只是我,还是没有直接的方法呢?就在最近,我试图摆脱100MB + 5MB数据库的日志,我找到的最简单的方法是分离数据库,删除日志并重新连接它(甚至SQL服务有点抱怨).我尝试了收缩命令以及我能找到的所有可能的选项,但我只能收缩到约50%.数据库没有被使用(没有活动连接),老实说,我根本不关心任何过去的转换.我注意到可能还有其他"方法"如何做到这一点; 一些涉及备份和恢复.
我努力尝试阅读MSDN文档并学习更多关于过渡的内容,但是大约15分钟之后感觉就像在泥泞中走路一样,我放弃了.我知道对于数据库管理员和专家来说,我的问题听起来很傻.我感谢任何反馈.
编辑:在第一个答案之后,我意识到我可能不够清楚.我知道事务日志在事务期间如何工作,以及它为什么重要,并且它可以用于备份目的.我想我想从开发人员的角度提出更多问题.大多数时候我处理暂存/测试临时数据库,这些数据库不需要任何备份,除了我之外没有人使用,我经常发现自己需要传输它并且拥有一个巨大的过渡日志在这种情况下是不必要的不便.
我有一个搜索表单,允许用户以几种不同的方式搜索几个不同的字段.这是我的代码示例.
var claims = from c in db.Claims select c;
switch (ddlSearchField.Text)
{
case "StartsWith":
claims = claims.Where(c => c.companyFileID.StartsWith(txtSearchBox.Text));
break;
case "Equals":
claims = claims.Where(c => c.companyFileID == txtSearchBox.Text);
break;
case "Contains":
claims = claims.Where(c => c.companyFileID.Contains(txtSearchBox.Text));
break;
}
Run Code Online (Sandbox Code Playgroud)
我有大约十个不同的字段,用户可以搜索,所以我的外部开关语句非常大.必须有一种更优雅的方式来实现这一目标.
c# ×2
algorithm ×1
asp.net ×1
asp.net-mvc ×1
caching ×1
escaping ×1
gis ×1
graph ×1
javascript ×1
jinja2 ×1
linkedin ×1
linq ×1
linq-to-sql ×1
php ×1
python ×1
regex ×1
routing ×1
security ×1
spatialite ×1
sql-server ×1
sqlite ×1
static ×1
svn ×1