我有一个约20,000个电子邮件地址的列表,其中一些我知道是欺诈性尝试绕过"每个电子邮件1个"限制,例如username1 @ gmail.com,username1a @ gmail.com,username1b @gmail. com等我想找到类似的电子邮件地址进行评估.目前我正在使用Levenshtein算法检查列表中其他电子邮件的每个电子邮件,并报告编辑距离小于2的任何电子邮件.但是,这非常缓慢.有更有效的方法吗?
我现在使用的测试代码是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
namespace LevenshteinAnalyzer
{
class Program
{
const string INPUT_FILE = @"C:\Input.txt";
const string OUTPUT_FILE = @"C:\Output.txt";
static void Main(string[] args)
{
var inputWords = File.ReadAllLines(INPUT_FILE);
var outputWords = new SortedSet<string>();
for (var i = 0; i < inputWords.Length; i++)
{
if (i % 100 == 0)
Console.WriteLine("Processing record #" + i);
var word1 = inputWords[i].ToLower();
for (var n = i …Run Code Online (Sandbox Code Playgroud) 我正在使用python将一系列SQL语句写入文件.模板字符串如下所示:
store_insert = '\tinsert stores (storenum, ...) values (\'%s\', ...)'
Run Code Online (Sandbox Code Playgroud)
我正在写这样的文件:
for line in source:
line = line.rstrip()
fields = line.split('\t')
script.write(store_insert % tuple(fields))
script.write(os.linesep)
Run Code Online (Sandbox Code Playgroud)
但是,在结果输出中,我看到\ r \n\r \n在每一行的末尾,而不是我期望的\ r \n.为什么?
真的很愚蠢的问题,对不起,但我无法在谷歌上找到它(我确定它是在截屏视频或某个地方).我有一个DBML(linq2sql类)图,我已经更改了底层数据库.在VS2008中,如何"刷新"图表?没有View - > Refresh或RightClick-> Refresh或Update选项.
现在,我每次更新底层数据库时都必须重新创建整个linq2sql类.
Jimmy Nilsson在这里讨论他的COMB指导概念.这个概念在NHibernate和其他圈子中很受欢迎,因为它比标准GUID具有更高的随机性.
但是,在测试中,情况似乎并非如此.我错过了什么吗?
测试用例:
我有一个名为temp的表(不是临时表,只是一个名为"temp"的表),其中包含585,000行.我有一个名为Codes的新表,并希望将所有585,000个代码值从临时表复制到代码表.我执行的测试SQL是:
set statistics time on;
truncate table codes;
DBCC DBREINDEX ('codes', '', 90);
insert into codes (codeid, codevalue)
select newid(), codevalue from temp
truncate table codes;
DBCC DBREINDEX ('codes', '', 90);
insert into codes (codeid, codevalue)
select CAST(CAST(NEWID() AS BINARY(10)) + CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER), codevalue from temp
Run Code Online (Sandbox Code Playgroud)
标准GUID值的性能:
SQL Server执行时间:CPU时间= 17250 ms,已用时间= 15735 ms.
(受影响的585000行)
COMB GUID值的性能:
SQL Server执行时间:CPU时间= 17500毫秒,已用时间= 16419毫秒.
(受影响的585000行)
我错过了什么?COMB GUID值导致稍长的时间,可能是因为额外的转换.我认为重点是通过使用最后6个字节的日期对GUIDS进行半顺序来减少插入时间,但性能增益似乎不存在.
我有一个名为Question的类,它有一个名为Type的属性.基于这种类型,我想以特定的方式将问题呈现给html(多选=单选按钮,多个答案=复选框等...).我开始使用单个RenderHtml方法,根据问题类型调用子方法,但我正在考虑将渲染逻辑分离为实现接口的各个类可能更好.但是,由于这个类使用NHibernate持久化到数据库并且接口实现依赖于属性,我不确定如何最好地布局类.
有问题的课程:
public class Question
{
public Guid ID { get; set; }
public int Number { get; set; }
public QuestionType Type { get; set; }
public string Content { get; set; }
public Section Section { get; set; }
public IList<Answer> Answers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
基于QuestionType枚举属性,我想呈现以下内容(仅作为示例):
<div>[Content]</div>
<div>
<input type="[Depends on QuestionType property]" /> [Answer Value]
<input type="[Depends on QuestionType property]" /> [Answer Value]
<input type="[Depends on QuestionType property]" /> [Answer Value]
...
</div>
Run Code Online (Sandbox Code Playgroud)
目前,我在一个名为RenderHtml()的函数中有一个大的switch语句,可以完成脏工作,但是我想将它移动到更干净的东西.我只是不确定如何.
有什么想法吗? …
我们为客户提供的许多LOB应用程序具有营销/促销性质(抽奖活动,活动注册等).大多数应用程序虽然非常简单,但对数据库要求很高.想象一下,"注册"型网站作为在超级碗期间播出的商业广告的支持,例如(是的,我们有几个).
虽然我们已经非常善于优化我们的Web应用程序代码,但数据库始终是一个问题,尽管应用程序相对简单.流程通常类似于:
在许多情况下,这是我们的应用程序需要执行的所有数据访问.但是,鉴于它是应用程序的唯一目的,因此对这个简单的过程进行大大优化非常重要.
出于这个问题的目的,我们有一台服务器为数据文件运行raid 5磁盘阵列,为日志运行另一个raid 5阵列.此时,操作系统是Windows 2003标准32位,服务器有4 GB内存.一些应用使用SQL 2005标准,而其他应用使用MySQL 5.1.我非常清楚这里可以进行某些操作系统和硬件优化,但我希望首先从软件方面解决我的需求.广泛的分析告诉我们,磁盘IO通常是主要的瓶颈.
说了这么多,并且知道缓存不会有多大帮助,因为大多数读取都是唯一的并返回非常少的数据(通常只是指示记录是否存在),我正在考虑进入一个领域. -memory数据库作为真实数据库的写缓存层.这似乎是一个很好的选择,因为我们的大部分高流量流量本质上是零星的,并且不会持续数小时.此外,在大多数情况下,由于服务器崩溃可能会丢失几分钟的数据.
在最简单的形式中,我会修改一个典型的注册应用程序来执行以下操作:
我的问题是:这个中间内存数据库有哪些选择?我已经尝试了内存中的哈希表,数据表等,但我正在寻找其他选项,甚至是针对完全不同的方法的建议.
我开发了一个ASP.NET控件,其中一个属性是[Flags]枚举.但是,我似乎无法在ASP.NET控件标记中为此属性指定多个标志.有没有特殊的语法来做到这一点,还是不可能?
我使用NHibernate设置了存储库模式.基类如下所示:
public interface IUnitOfWork : IDisposable
{
void Commit();
void Rollback();
}
// generic NHibernate implementation of IUnitOfWork here
public class NHibernateRepositoryBase<T> : IRepository<T>
{
private NHibernateUnitOfWork _unitOfWork;
public NHibernateRepositoryBase(NHibernateUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
public T Get(object id)
{
return _unitOfWork.Session.Get<T>(id);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我允许通过构造函数(使用StructureMap)填充工作单元.我正在填充ASP.NET Web服务上的存储库对象,如下所示:
[WebService(Namespace = "...")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class ModuleService : System.Web.Services.WebService
{
public IUserAccountRepository UserAccountRepo { get; set; }
public ModuleService()
{
// tell IoC to inject properties
ObjectFactory.BuildUp(this);
}
// …Run Code Online (Sandbox Code Playgroud) 我有一个使用HTML5的新网站.一切都有效,除了LESS样式表和Facebook标签.但是,Chrome无法正常自动填充.如果我在名字字段中键入'chr',我会在其下方输入标准的自动填充,但突出显示,单击或以其他方式选择自动填充选项并不能完成表单.自动填充下拉列表只是消失了.
我猜我的HTML中有一些东西混淆了自动填充代码,但我似乎无法在网上找到有关Chrome自动填充实现的信息,以及当它无效时需要查找的内容.
编辑:我知道Autofill工作正常,因为它适用于其他网站,甚至我们开发的其他网站.它必须是这个网站上的HTML特有的东西.
我有一个接口定义为:
public interface IClientFileImporter
{
bool CanImport(Stream stream);
int Import(Stream stream);
}
Run Code Online (Sandbox Code Playgroud)
我们的想法是获取任何文件流并通过此接口的一系列实现来运行它,以确定哪个文件流应该处理该文件.一些实现可能寻找某个标题行,而其他实现可能寻找某个字节序列等...
我的问题是,只要我从不关闭它就可以传递这样的流吗?如有必要,每种方法都必须负责将流重置到位置0,但是还有其他潜在的问题(除了线程安全)吗?这段代码真的闻起来,IMO,但我不确定一个更好的方法来做到这一点.
c# ×4
.net ×1
asp.net ×1
eol ×1
guid ×1
html5 ×1
linq-to-sql ×1
performance ×1
python ×1
sql ×1
sql-server ×1
t-sql ×1
unit-of-work ×1
webforms ×1
windows ×1