小编Max*_*sky的帖子

在ASP.NET MVC站点中正确构建Lucene.Net用法

我正在构建一个ASP.NET MVC站点,我计划使用Lucene.Net.我已经设想了一种构建Lucene使用方法的方法,但不确定我的计划架构是否正常且高效.


我的计划:

  • Application_StartGlobal.asax中的事件:我检查文件系统上的索引的存在-如果不存在的话,我创建并填写与文件从数据库中提取它.
  • 提交新内容时:我创建一个IndexWriter,填写一个文档,写入索引,最后处理掉IndexWriter.IndexWriters没有重用,因为我无法想象在ASP.NET MVC应用程序中这样做的好方法.
  • 编辑内容时:我重复与提交新内容时相同的过程,但我先删除旧内容然后添加编辑.
  • 当用户搜索内容时:我检查HttpRuntime.Cache用户是否已经在过去5分钟内搜索过该术语 - 如果有,我会返回这些结果; 否则,我创建一个IndexReader,构建并运行一个查询,将结果放入HttpRuntime.Cache,返回给用户,最后处理掉IndexReader.再次,IndexReaders不再重复使用.

我的问题:

  • 这是一个很好的结构 - 我怎样才能改进它?
  • 是否有任何性能/效率问题,我应该知道的?
  • 另外,是不是重复使用IndexReaders和IndexWriters一个巨大的代码味道?

c# asp.net lucene asp.net-mvc lucene.net

26
推荐指数
2
解决办法
5643
查看次数

如何解析HttpWebResponse.Headers.Keys返回的Set-Cookie会话ID

我正在尝试使用ASP.NET网站创建一个HttpWebRequest/HttpWebResponse会话,以便稍后通过url params解析HTML表单(这部分我知道该怎么做),但我不明白如何解析和设置cookie如会话ID.在Fiddler中,它显示ASP.NET会话ID是通过Set-Cookie在对url的/ path请求的响应中返回的,但是如何提取此会话ID并将其设置为下一个HttpWebRequest的cookie ?我知道这个Set-Cookie标头可以在HttpWebResponse.Headers.Keys中找到,但有解析它的直接路径吗?谢谢!

c# cookies httpwebrequest httpwebresponse setcookie

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

Code Golf:单词搜索解算器

注意:这是我的第一个Code Golf挑战/问题,所以我可能没有使用下面正确的格式.我不确定如何标记这个特定的问题,这应该是社区维基吗?谢谢!

这个Code Golf挑战是关于解决单词搜索!

维基百科定义的单词搜索是:

单词搜索,单词查找,单词搜索,单词侦听或神秘单词拼图是一种单词游戏,它是网格中单词的字母,通常具有矩形或正方形形状.这个难题的目的是找到并标记隐藏在框内的所有单词.单词可以是水平的,垂直的或对角的.通常会提供隐藏单词的列表,但更具挑战性的难题可能让玩家想出它们.许多单词搜索谜题都有一个主题,所有隐藏的单词都与之相关.

搜索此挑战的单词将全部为矩形网格,其中包含要查找的单词列表.单词可以垂直,水平或对角书写.


输入输出

用户输入他们的单词搜索,然后输入要在他们的网格中找到的单词.这两个输入传递给您将要编写的函数.由您决定如何声明和处理这些对象取决于您.

使用下面描述的策略或您自己的策略,该函数在搜索中找到特定的单词并输出其起始坐标(简单的行号和列号)和结束坐标.如果您发现该单词出现两次,则必须输出两组坐标.如果单词是回文,你可以任意选择一端作为单词的"开头".


输入:

A I Y R J J Y T A S V Q T Z E 
X B X G R Z P W V T B K U F O 
E A F L V F J J I A G B A J K 
R E S U R E P U S C Y R S Y K 
F B …
Run Code Online (Sandbox Code Playgroud)

language-agnostic string code-golf rosetta-stone

24
推荐指数
3
解决办法
4720
查看次数

如何让我的.NET应用程序自行擦除?

如何让我的C#app擦除自身(自毁)?以下是我认为可行的两种方式:

  • 提供另一个删除主程序的程序.但是这个删除程序是如何被删除的呢?
  • 创建一个等待几秒钟然后删除文件的CMD进程.在这几秒钟内,您关闭应用程序.

这两种方法似乎效率低下.我觉得有一些内置的标志或Windows中允许这样的东西.我该怎么办?另外,您能提供一些示例代码吗?

更新:感谢您的所有答案!我要去尝试一下,看看能给我带来什么.

首先,有些人问我为什么要我的应用程序这样做.这就是答案:几天前,我读了Joel Spolsky在他的博客上发布的Project Aardvark规范,并提到客户端应用程序会在远程会话后删除自己.我想知道它是如何工作的,以及如果我需要这样做,我可以完成这样的壮举.

以下是对建议内容的一点概述:

  • 创建一个注册表项,告诉Windows在重新启动时删除该文件
  • 使用ping命令启动CMD等待几秒钟然后删除该文件

当然,这些都有其缺点,如评论中所述.

但是,下面概述的这种方法是否有效?

有两个可执行文件:Program.exe和Cleaner.exe.前者是程序本身,后者是删除Program.exe及其自身的应用程序(如果它被加载到内存中,我将要解释).Program.exe(具有依赖关系)是否可以将所有没有任何依赖关系的Cleaner.exe 加载到内存中并运行它?

如果可以,可以将Cleaner.exe打包到Program.exe中,加载到内存中,然后运行?

.net c# windows self-destruction delete-file

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

C#:"使用"语句与HttpWebRequests/HttpWebResponses

Jon Skeet 在我的SOApiDotNet代码(用于pre-alpha Stack Overflow API的.NET库)发表评论(通过推特):

@ maximz2005我注意到的一件事就是快速浏览源代码:你没有处理(原文如此)WebResponses.FTW"使用"声明.

他表示我需要将这些Web会话包装在"using"语句中.但是,我有一个问题:我应该包装整个事情,从HttpWebRequest开始,还是应该在"using"语句之外创建WebRequest然后将Response包装在里面?我感觉不同的是,在前者中,两个物体都会被处理掉 - 这是正确的吗?

提前致谢.

c# using using-statement httpwebrequest httpwebresponse

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

暂停set of milliseconds的方法

我需要做一种"超时"或在我的方法中暂停10秒(10000毫秒),但我不确定以下是否会起作用,因为我没有多线程.

Thread.Sleep(10000);
Run Code Online (Sandbox Code Playgroud)

我将尝试使用当前的代码,但如果有人可以解释这样做的最佳和正确的方法,我将不胜感激,特别是如果上述代码无法正常工作.谢谢!

更新:这个程序实际上是一个控制台应用程序,在该函数中对一个服务器执行许多HTTPWebRequests,所以我希望将它们延迟指定的毫秒数.因此,不需要回调 - 所需要的只是"无条件暂停" - 基本上整个事情停止10秒然后继续.我很高兴C#仍然认为这是一个线程,所以Thread.Sleep(...)会起作用.谢谢大家!

c# multithreading timeout

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

如何使用C#为OpenSTV选举生成.BLT文件?

在看到最新的SO博客帖子后,我刚刚下载了OpenSTV,关于主持人选举的结果.杰夫写道,他使用OpenSTV进行选举,并提供了一张包含投票数据的投票文件(.blt).

我的问题是:你如何在C#中创建.BLT文件?

以下两种方式我可以想到投票页面是这样做的:

  • 投票页面将每个投票添加到SQL数据库中,然后以某种方式,这些投票在投票结束后被导出到.BLT文件中.怎么样?我怎样才能做到这一点?
  • 或者,投票页面创建了该文件,然后在每次投票时添加到该文件中.我确信这不是投票页面的工作方式,因为它完全不可扩展,但我怎么能在C#中做到这一点?

我有兴趣了解两种可能性如何工作以及如何在C#中实现这一点.提前致谢.哦,我希望杰夫看到这个问题,因为他可能会有一个很好的答案......

.net c# voting openstv

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

使用Google Maps API v3中精灵的标记图标缩放标记大小

我正在玩Google Maps API(v3),我遇到了标记图标的问题.我正在尝试根据各自的数据属性改变标记的大小.

图标本身是一个精灵,包含三个不同的圆形标记,每个16px乘16px.我正在尝试扩展单个图标,但到目前为止还没有成功.

这是我的代码:

var offset = Math.floor(Math.random() * 3) * 16; // pick one of the three icons in the sprite

// Calculate desired pixel-size of the marker
var size = Math.floor(4*(count-1) + 8);

// Create custom marker
var marker = new google.maps.Marker({
    position: new google.maps.LatLng(lat, lng),
    icon: new google.maps.MarkerImage(
        'img/dot.png', // my sprite with 3 circular icons
        new google.maps.Size(16, 16), // 16x16 is the original size of each individual icon
        new google.maps.Point(0, offset), // picking …
Run Code Online (Sandbox Code Playgroud)

javascript gis google-maps image google-maps-api-3

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

如何在ASP.NET MVC站点中实现速率限制?

我正在构建一个ASP.NET MVC站点,我想限制经过身份验证的用户使用该站点的某些功能的频率.

虽然我从根本上理解了速率限制是如何工作的,但我无法想象如何以编程方式实现它而不会产生主要的代码气味.

能用C#示例代码指出一个简单而强大的解决方案来解决这个问题吗?

如果重要,所有这些功能目前都表示为仅接受的动作HTTP POST.我可能最终也希望对HTTP GET函数实现速率限制,所以我正在寻找适用于所有这些情况的解决方案.

c# asp.net asp.net-mvc limit rate-limiting

12
推荐指数
2
解决办法
9631
查看次数

TortoiseHG:撤消猜猜重命名 - >接受匹配

我正在使用TortoiseHG,我正在尝试处理重命名的文件.不幸的是,我不小心点击Accept Match了其中一个文件并想要撤消它.如何在不伤害我正在尝试提交的文件的情况下这样做?

mercurial tortoisehg

11
推荐指数
1
解决办法
618
查看次数