小编aqu*_*nas的帖子

如何在海量数据集上实现自动完成

我正在尝试在我正在建立的网站上实施Google建议的内容,并且很好奇如何在非常大的数据集上进行操作.当然,如果您有1000个项目,则缓存项目并循环浏览它们.但是当你有一百万件商品时,你怎么做呢?此外,假设项目不是一个单词.具体来说,我对Pandora.com印象非常深刻.例如,如果您搜索"湿",它会带回"湿沙",但它也会带回Toad The Wet Sprocket.他们的自动完成功能很快.我的第一个想法是按前两个字母对项目进行分组,所以你会有类似的东西:

Dictionary<string,List<string>>
Run Code Online (Sandbox Code Playgroud)

其中键是前两个字母.那没关系,但是如果我想做类似Pandora的事情并允许用户看到与字符串中间匹配的结果呢?根据我的想法:Wet永远不会匹配Toad the Wet Sprocket,因为它将在"TO"桶而不是"WE"桶中.那么也许你可以把弦分开,"Toad the Wet Sprocket"进入"TO","WE"和"SP"桶(去掉"THE"这个词),但当你谈到一百万可能不得不说几句话的条目,似乎你很快就开始耗费大量的记忆.好的,这是一个很长的问题.思考?

optimization autocomplete

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

在.NET/Visual Studio中定义TRACE常量

在Visual Studio 2010中,如果转到项目的属性并转到"构建"选项卡,则会出现"定义TRACE常量"复选框.这相当于做#define TRACE.

System.Diagnostics.Trace的所有方法都有[Conditional("TRACE")]它们.

我的问题是你为什么要把它关掉?我的意思是,如果你没有定义任何跟踪侦听器,那么就好像你要填满日志或其他内容.这让我觉得很奇怪.如果您正在努力调用Trace,为什么不想通过App/Web.config来控制它,而是通过编译器开关来控制它,这样就排除了重新启用它的可能性.重新编译.

我错过了什么吗?当然,它不能对性能有害,对吧?

debugging performance visual-studio

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

是否可以在VS 2010中的单元测试中使用逻辑调用上下文?

是否有可能使此测试不会抛出异常?似乎将任何非GACed类添加到逻辑调用上下文中会导致在测试的第2行中抛出异常.

测试'TestProject1.UnitTest1.TestMethod1'失败:测试方法TestProject1.UnitTest1.TestMethod1引发异常:System.Configuration.ConfigurationErrorsException:加载配置文件时出错:成员'TestProject1.Bar,TestProject1,Version = 1.0的类型未解析.0.0,Culture = neutral,PublicKeyToken = null'.---> System.Runtime.Serialization.SerializationException:成员'TestProject1.Bar,TestProject1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'的类型未解析.

namespace TestProject1 {
    [ Serializable]
    public class Bar {

    }

    [TestClass]
    public class UnitTest1 {
        [TestMethod]
        public void TestMethod1() {
            CallContext.LogicalSetData("foo", new Bar());
            ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么?!?!?

unit-testing mstest visual-studio-2010

16
推荐指数
3
解决办法
4160
查看次数

使用DataTable.Add时性能差异极大

看看下面的程序.这是不言自明的,但无论如何我会解释:)

我有两种方法,一种是快速的,一种是慢速的.这些方法完全相同:它们创建一个包含50,000行和1000列的表.我写入表中的可变数量的列.在下面的代码中,我选择了10(NUM_COLS_TO_WRITE_TO).

换句话说,1000中只有10列实际上包含数据.好.在只有两种方法之间的区别在于快速填充列,然后调用DataTable.AddRow,而慢的一个做它之后.而已.

然而,性能差异令人震惊(无论如何).快速版本几乎完全不受改变我们写入的列数的影响,而慢速版本线性上升.例如,当我写入的列数为20时,快速版本需要2.8秒,但慢速版本需要一分钟.

世界上可能会发生什么?

我认为可能添加dt.BeginLoadData会有所作为,它在一定程度上确实将时间从61秒降低到约50秒,但这仍然是一个巨大的差异.

当然,显而易见的答案是,"好吧,不要这样做." 好.当然.但世界上究竟是什么导致了这一点?这是预期的行为吗?我当然没想到.:)

public class Program
{
    private const int NUM_ROWS = 50000;
    private const int NUM_COLS_TO_WRITE_TO = 10;
    private const int NUM_COLS_TO_CREATE = 1000;

    private static void AddRowFast() {
        DataTable dt = new DataTable();            
        //add a table with 1000 columns
        for (int i = 0; i < NUM_COLS_TO_CREATE; i++) {
            dt.Columns.Add("x" + i, typeof(string));
        }
        for …
Run Code Online (Sandbox Code Playgroud)

.net c# performance

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

如何在VB6集合中编辑项目

你能告诉我如何在VB6集合中编辑项目吗?前 - 我有以下收藏 -

Dim OrdLines As New Collection

OrdLines.Add (111)
OrdLines.Add (111)
OrdLines.Add (222)
OrdLines.Add (333)
OrdLines.Add (444)
Run Code Online (Sandbox Code Playgroud)

现在我的要求是编辑第3项并想要改变它让我们说"ABC"我该怎么做呢.

vb6

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

每个点 (.) 和字符串开头后的单词大写

如何在字符串开头和点(.)符号之后将每个单词大写?

我对googlestackoverflow进行了研究,下面是我实现的代码,但这只会将字符串的开头大写。示例如下;

var str = 'this is a text. hello world!';
str = str.replace(/^(.)/g, str[0].toUpperCase());
document.write(str);
Run Code Online (Sandbox Code Playgroud)

我想要的字符串是This is a text. Hello world!.

我尝试使用CSS,text-transform: capitalize;但这会导致每个单词都大写。

javascript

6
推荐指数
1
解决办法
6610
查看次数

在代理服务器后面设置ASP.NET应用程序的基本URL

我有与此问题的海报相同的问题在 具有不同根相对路径的代理后面运行ASP.NET MVC应用程序

除了我在IIS 7中运行"经典"ASP.NET 4.0.基本上,应用程序部署到http:// machine/MyApp,但它通过代理服务器访问:http:// someotherMachine/SomeDirectory/MyApp的.因此,ASP.NET认为/ MyApp是根,但在这种情况下它确实不是.是否有一些我可以设置的ASP.NET或IIS的神奇设置告诉它,"嘿,顺便说一句,这个应用程序的实际上是SomeDirectory而不是MyApp?"

asp.net iis proxy

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

正则表达式除“ M”,“ F”,“ M / F”外的所有内容

如果整个String不是“ M”,“ F”或“ M / F”,则我需要一个正则表达式在Java中使用以“ UNKNOWN”替换String。换一种说法:

  • 字符串“ M”保持为“ M”
  • 字符串“ F”保持为“ F”
  • 字符串“ M / F”保持为“ M / F”
  • 其他都变成“未知”

一种奇怪的情况是“ M /”或“ F /”,应变为“未知”。请帮助,我在这里死了。

我实际上是通过xml映射文件将正则表达式传递到框架中,因此我无法以编程方式控制输出的形成方式。我只能传递一个正则表达式,然后用正则表达式代替。

regex

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

不应该在本地复制本地的程序集

这是我的示例场景.我有一个Console应用程序和一个类库dll(称之为libraryA).LibraryA dll引用了Oracle.DataAccess.dll版本4.112.2.0.Oracle DLL位于GAC中.LibraryA中对Oracle DLL的引用是"Copy Local = false".到现在为止还挺好.如果构建了LibraryA的DLL,然后Oracle.DataAccess.dll并没有在它的输出目录显示出来.好.现在我在我的控制台应用程序中引用libraryA dll.对libraryA dll的引用是"copy local = true".现在,当我构建控制台应用程序时,Oracle.DataAcess.dll 确实显示在控制台应用程序的输出目录中.但是,似乎这种方式的唯一DLL是Oracle dll.这是LibraryA的完整代码

public void Foo() {            
   Oracle.DataAccess.Client.OracleConnection c = new Oracle.DataAccess.Client.OracleConnection();
   WebMatrix.WebData.OAuthAccountData x = new WebMatrix.WebData.OAuthAccountData("asd", "asd");            
   DevExpress.Web.ASPxCallback.ASPxCallback cvv = new DevExpress.Web.ASPxCallback.ASPxCallback();
}
Run Code Online (Sandbox Code Playgroud)

WebMatrix和DevExpress也像Oracle DLL一样在GAC中.但是,这些DLL都不会输出到输出目录,只输出Oracle dll.为什么?这里发生了什么事?

就此而言,您可以创建另一个类库,将其称为libraryB,不要将libraryB放在GAC中,从LibraryA引用LibraryB并设置copy local = false.即使这样做,libraryB也不会复制到控制台应用程序的输出目录中.当然,在这种情况下,程序会爆炸,因为它找不到库B,但至少Visual Studio尊重copy local flag = false.这个愚蠢的Oracle DLL有什么不同?

哦,还有一件事很有趣.如果在我的控制台应用程序中,我显式添加了对Oracle.DataAccess.dll的引用,并说copy local = false,那么它不会显示在输出目录中.没有一个DLL出现在输出目录中似乎有点搞笑,我必须实际引用它:)

编辑:

另一个线索.为了折磨开发人员,Oracle没有为AnyCPU构建一个DLL.它们有x86和x64版本.就我而言,我正在引用x86版本并为AnyCPU构建.但是,如果我为x86构建(以匹配oracle dll),则Oracle DLL 不会复制到输出目录.在AnyCPU中构建时,MSBUILD说:"警告MSB3270:正在构建的项目的处理器体系结构"MSIL"与参考"Oracle.DataAccess,Version = 4.112.2.0,Culture = neutral,"的处理器体系结构不匹配. PublicKeyToken = …

c# visual-studio-2010

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

更新面板不显示ASP.NET 3.5中的错误

在Visual Studio 2008中,如果您创建一个新的"Ajax 1.0启用的ASP.NET 2.0 Web应用程序"并粘贴以下代码:

<form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Button runat="server" ID="foo" Text="click me" onclick="foo_Click" />      
            </ContentTemplate>
        </asp:UpdatePanel>
        </div>
    </form>
Run Code Online (Sandbox Code Playgroud)

代码背后

protected void foo_Click(object sender, EventArgs e) {
            throw new Exception("hello");
        }
Run Code Online (Sandbox Code Playgroud)

然后单击按钮,您将看到一个"hello"的javascript警报.如果您创建.NET 3.5 Web应用程序并粘贴相同的代码,则不再显示任何警报.我错过了什么?

updatepanel scriptmanager asp.net-3.5

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

什么是ASP.NET代码块,例如,在页面生命周期中执行<%=%>?

当我对整个页面进行数据绑定时,我会做这样的事情:

Blah blah ......

<%# SomeProperty == "GoodBye" ? "See you later" : "Hello" %>
Run Code Online (Sandbox Code Playgroud)

这是美丽的.但是,我经常不会对整个页面使用数据绑定,而是使用"clasic"ASP.NET方式编写内容.例如,在后面的代码我会有类似的东西:

lblSomeMessage.Text = SomeProperty == "GoodBye" ? "See you later" : "Hello";
Run Code Online (Sandbox Code Playgroud)

然后.aspx会有

<asp:label runat="server" id="lblSomeMessage"/>
Run Code Online (Sandbox Code Playgroud)

但我想这样做 ......之类的.我想做的是不使用数据绑定语法,而是使用代码块:

<%= SomeProperty == "GoodBye" ? "See you later" : "Hello" %>
^^^^
Run Code Online (Sandbox Code Playgroud)

Noe输出标签语法.现在,问题是,这个标签何时才会被评估?假设在OnPreRender事件之前我没有设置SomeProperty属性.这太晚了吗?在我的测试中我实际上是这样做的:

<%= SomeProperty == "GoodBye" ? + new System.Diagnostics.StackTrace().ToString() : "OH NO!" %>
Run Code Online (Sandbox Code Playgroud)

并根据stacktrace:

在System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)的System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)中的ASP.webform1_aspx .__ Renderform1(HtmlTextWriter __w,Control parameterContainer)...

它发生在渲染过程中,这是完美的.但这有保证吗?这条规则有什么问题吗?

asp.net page-lifecycle

4
推荐指数
1
解决办法
1808
查看次数