假设我有10,000个正则表达式和一个字符串,我想知道字符串是否与其中任何一个匹配并获得所有匹配.执行此操作的简单方法是仅针对所有正则表达式逐个查询字符串.有更快,更有效的方法吗?
编辑:我尝试用DFA替换它(lex)这里的问题是它只会给你一个单一的模式.如果我有一个字符串"hello"和模式"[H | h] ello"和".{0,20} ello",DFA只会匹配其中一个,但我希望它们都能击中.
我对这篇文章有类似的问题.我需要在嵌入式Google地图上显示多达1000个多边形.多边形位于SQL数据库中,我可以使用自定义HttpHandler(在ASP.NET中)将每个多边形渲染为单个KML文件,如http://alpha.foresttransparency.org/concession.1.kml.
即使在我(非常快)的开发机器上,也需要一段时间来加载甚至几十个形状.真的有两个问题:
一旦超出某个缩放级别,将这些作为标记而不是叠加层渲染的好策略是什么?
有一个公开的算法可以简化多边形(减少点数),这样我就不会在某个缩放级别显示更多的点而不是有意义吗?
我最近创建了这两个(不相关的)方法来替换我的winforms应用程序中的大量样板代码.据我所知,他们工作正常,但我需要一些保证/建议,以确定是否存在一些我可能会遗漏的问题.
(从记忆里)
static class SafeInvoker
{
//Utility to avoid boiler-plate InvokeRequired code
//Usage: SafeInvoker.Invoke(myCtrl, () => myCtrl.Enabled = false);
public static void Invoke(Control ctrl, Action cmd)
{
if (ctrl.InvokeRequired)
ctrl.BeginInvoke(new MethodInvoker(cmd));
else
cmd();
}
//Replaces OnMyEventRaised boiler-plate code
//Usage: SafeInvoker.RaiseEvent(this, MyEventRaised)
public static void RaiseEvent(object sender, EventHandler evnt)
{
var handler = evnt;
if (handler != null)
handler(sender, EventArgs.Empty);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:请在此处查看相关问题
UPDATE
继死锁问题(在此问题中相关)之后,我已从Invoke切换到BeginInvoke(请参阅此处的解释).
另一个更新
关于第二个片段,我越来越倾向于使用'空委托'模式,通过使用空处理程序直接声明事件来解决"源"问题,如下所示:
event EventHandler MyEventRaised = delegate {};
Run Code Online (Sandbox Code Playgroud) 我刚刚安装了visio,安装程序几乎就像是用flash构建的.当我在它们上面盘旋时,按钮有点闪亮,当我点击"继续"时,表格以一种很酷的方式逐渐消失.
我假设它是用WPF构建的.
无论如何,WPF更像闪存(在视觉上说).与winforms相比,他们是否拥有新的属性,您可以使表格逐步完美地逐步淘汰?
有时您没有源代码,需要对程序或黑盒进行反向工程.有趣的战争故事吗?
这是我的一个:
几年前我需要重写一个我没有源代码的设备驱动程序.设备驱动程序在旧的CP/M微型计算机上运行,并通过串行端口驱动专用的照排机.几乎没有照相排版机的文件可供我使用.
我最终在DOS PC上将一个串口监视器混合在一起,模仿了照相排版机器的响应.我将DOS PC连接到CP/M机器,并在我通过CP/M机器输入数据时开始记录来自设备驱动程序的数据.这使我能够找出设备驱动程序使用的握手和编码,并为DOS机器重新创建一个等效的.
如果我在Perl模块中定义一个常量,我如何在主程序中使用该常量?(或者如何在主程序中调用该常量?)
是否可以通过代码在ContentPlaceHolder中设置数据?这就是我的想法:
dim oCPH as new ContentPlaceHolder
oCPH.id = "column1" 'this id is the one that corresponds with the ID I set on the page
oCPH.content = "content here" '<-- not real code
Run Code Online (Sandbox Code Playgroud)
显然这不是正确的语法,我希望这澄清了我的要求.
像C语言甚至C#(技术上没有预处理器)这样的语言允许你编写如下代码:
#DEFINE DEBUG
...
string returnedStr = this.SomeFoo();
#if DEBUG
Debug.WriteLine("returned string =" + returnedStr);
#endif
Run Code Online (Sandbox Code Playgroud)
这是我喜欢在我的代码中使用脚手架的形式,我想知道PHP是否有这样的东西.我确信我可以使用变量来模拟这个,但我想大多数情况下解释PHP的事实并不容易在执行时自动删除/删除调试代码(因为它不需要).
我正在创建一个数据库,并首先进行原型设计和基准测试.我正在使用H2,一个开源的,商业免费的,可嵌入的,关系型的java数据库.我目前没有索引任何列.
数据库增长到大约5GB后,其批处理写入速度加倍(写入速度减慢了原始速率的2倍).我使用一个新的,干净的数据库写入大约每行25行,现在是7GB,我写的大约是7行/ ms.我的行由short,int,float和byte [5]组成.
我对数据库内部甚至H2的编程知之甚少.我还要注意,我并没有贬低H2,因为这是我测试的其他DBMS的一个问题.
如果没有索引开销,哪些因素可能会减慢数据库的速度?它主要与文件系统结构有关吗?根据我的结果,我假设Windows XP和ntfs处理文件的方式使得在文件增长时将数据附加到文件末尾的速度变慢.
如何在Linux中分发独立的Python应用程序?
我想我可以理所当然地认为在任何现代发行版中都有最近的Python解释器.问题是处理那些不属于标准库的库,即wxPython,scipy,python cryptographic toolkit,reportlab等.
是否有一个可用的Linux副本,比方说,py2exe(顺便说一下,我从未尝试过)?有一个免费的,开源的吗?