小编Chr*_*ris的帖子

检测类似电子邮件地址的最佳方法?

我有一个约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)

c# levenshtein-distance

15
推荐指数
2
解决办法
2599
查看次数

Python file.write创建额外的回车

我正在使用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.为什么?

python windows eol

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

刷新DBML图表?

真的很愚蠢的问题,对不起,但我无法在谷歌上找到它(我确定它是在截屏视频或某个地方).我有一个DBML(linq2sql类)图,我已经更改了底层数据库.在VS2008中,如何"刷新"图表?没有View - > Refresh或RightClick-> Refresh或Update选项.

现在,我每次更新底层数据库时都必须重新创建整个linq2sql类.

visual-studio-2008 linq-to-sql

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

COMB guids的性能价值

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进行半顺序来减少插入时间,但性能增益似乎不存在.

sql t-sql sql-server performance guid

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

.NET类设计问题

我有一个名为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语句,可以完成脏工作,但是我想将它移动到更干净的东西.我只是不确定如何.

有什么想法吗? …

.net c#

12
推荐指数
3
解决办法
953
查看次数

重写Web应用程序的数据库设计

我们为客户提供的许多LOB应用程序具有营销/促销性质(抽奖活动,活动注册等).大多数应用程序虽然非常简单,但对数据库要求很高.想象一下,"注册"型网站作为在超级碗期间播出的商业广告的支持,例如(是的,我们有几个).

虽然我们已经非常善于优化我们的Web应用程序代码,但数据库始终是一个问题,尽管应用程序相对简单.流程通常类似于:

  1. 从数据库读取以检测现有记录
  2. 如果记录是新的,写入数据库

在许多情况下,这是我们的应用程序需要执行的所有数据访问.但是,鉴于它是应用程序的唯一目的,因此对这个简单的过程进行大大优化非常重要.

出于这个问题的目的,我们有一台服务器为数据文件运行raid 5磁盘阵列,为日志运行另一个raid 5阵列.此时,操作系统是Windows 2003标准32位,服务器有4 GB内存.一些应用使用SQL 2005标准,而其他应用使用MySQL 5.1.我非常清楚这里可以进行某些操作系统和硬件优化,但我希望首先从软件方面解决我的需求.广泛的分析告诉我们,磁盘IO通常是主要的瓶颈.

说了这么多,并且知道缓存不会有多大帮助,因为大多数读取都是唯一的并返回非常少的数据(通常只是指示记录是否存在),我正在考虑进入一个领域. -memory数据库作为真实数据库的写缓存层.这似乎是一个很好的选择,因为我们的大部分高流量流量本质上是零星的,并且不会持续数小时.此外,在大多数情况下,由于服务器崩溃可能会丢失几分钟的数据.

在最简单的形式中,我会修改一个典型的注册应用程序来执行以下操作:

  1. 查询磁盘DB和内存DB以查找现有记录
  2. 如果不是,则将数据写入内存DB并返回
  3. 定期将内存DB刷新到磁盘DB

我的问题是:这个中间内存数据库有哪些选择?我已经尝试了内存中的哈希表,数据表等,但我正在寻找其他选项,甚至是针对完全不同的方法的建议.

database-design data-modeling

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

带有[Flags]枚举的ASP.NET控件属性

我开发了一个ASP.NET控件,其中一个属性是[Flags]枚举.但是,我似乎无法在ASP.NET控件标记中为此属性指定多个标志.有没有特殊的语法来做到这一点,还是不可能?

asp.net webforms

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

工作单元和存储库模式

我使用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)

c# design-patterns unit-of-work repository-pattern

12
推荐指数
1
解决办法
5126
查看次数

什么会导致Chrome自动填充停止工作?

我有一个使用HTML5的新网站.一切都有效,除了LESS样式表和Facebook标签.但是,Chrome无法正常自动填充.如果我在名字字段中键入'chr',我会在其下方输入标准的自动填充,但突出显示,单击或以其他方式选择自动填充选项并不能完成表单.自动填充下拉列表只是消失了.

我猜我的HTML中有一些东西混淆了自动填充代码,但我似乎无法在网上找到有关Chrome自动填充实现的信息,以及当它无效时需要查找的内容.

编辑:我知道Autofill工作正常,因为它适用于其他网站,甚至我们开发的其他网站.它必须是这个网站上的HTML特有的东西.

html5 google-chrome

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

将流传递给多个方法可以吗?

我有一个接口定义为:

public interface IClientFileImporter
{
    bool CanImport(Stream stream);
    int Import(Stream stream);
}
Run Code Online (Sandbox Code Playgroud)

我们的想法是获取任何文件流并通过此接口的一系列实现来运行它,以确定哪个文件流应该处理该文件.一些实现可能寻找某个标题行,而其他实现可能寻找某个字节序列等...

我的问题是,只要我从不关闭它就可以传递这样的流吗?如有必要,每种方法都必须负责将流重置到位置0,但是还有其他潜在的问题(除了线程安全)吗?这段代码真的闻起来,IMO,但我不确定一个更好的方法来做到这一点.

c#

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