问题列表 - 第7467页

为什么List <T> .Sort方法重新排序相同的IComparable <T>元素?

我对List Sort方法如何处理排序有疑问.鉴于以下要素:

class Element : IComparable<Element>
{
    public int Priority { get; set; }
    public string Description { get; set; }

    public int CompareTo(Element other)
    {
        return Priority.CompareTo(other.Priority);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试这样排序:

List<Element> elements = new List<Element>()
                             {
                                 new Element()
                                     {
                                         Priority = 1,
                                         Description = "First"
                                     },
                                 new Element()
                                     {
                                         Priority = 1,
                                         Description = "Second"
                                     },
                                 new Element()
                                     {
                                         Priority = 2,
                                         Description = "Third"
                                     }
                             };
elements.Sort();
Run Code Online (Sandbox Code Playgroud)

然后第一个元素是先前的第二个元素"Second".或者,换句话说,这个断言失败了:

Assert.AreEqual("First", elements[0].Description);
Run Code Online (Sandbox Code Playgroud)

当元素基本相同时,为什么.NET重新排序我的列表?如果比较返回非零值,我希望它只对列表重新排序.

.net c# sorting quicksort

25
推荐指数
2
解决办法
6328
查看次数

使用log4net以及在哪里实现它并与elmah一起使用?

有没有人有log4net的经验,我一直在看elmah这是伟大的.但我想要更多的控制,即不仅在asp.net中使用日志记录,而且在wpf中也使用日志记录.

Anway我决定看看log4net.

我有两个共享业务逻辑的客户端(wpf和asp.net).

我应该在业务逻辑和客户端中提升事件吗?

我假设业务逻辑将使用app.config/web.config(业务逻辑在另一层 - 一个类项目)

有没有人和elmah一起使用log4net,无论如何你可以让他们共享同一个db表吗?

log4net在我看来是最终的日志框架,但是elmah具有提交所有SERVER变量和堆栈跟踪等的优势

或者也许它可以获得log4net来保存Stacktrace并完全取代elmah?

任何评论都非常感谢

.net asp.net logging log4net elmah

14
推荐指数
2
解决办法
5798
查看次数

保持浮点值的相同格式

我有一个python程序,使用以下正则表达式读取浮点值

 (-?\d+\.\d+)
Run Code Online (Sandbox Code Playgroud)

一旦我使用float(match.group(1))提取值,我得到实际的浮点数.但是,我无法区分数字是1.2345678还是1.234或1.2340000.

我面临的问题是再次打印出浮点值,格式完全相同.一个简单的解决方案是在仍然是一个字符串时"拆分并计算"浮点值,例如在小数点处拆分,并计算整数部分长度和小数部分长度,然后创建格式化程序为

print "%"+str(total_len)+"."+str(fractional_len)+"f" % value
Run Code Online (Sandbox Code Playgroud)

但也许您知道实现相同结果的标准方法吗?

python floating-point formatting

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

为什么SQL Server标量值函数会变慢?

为什么标量值函数似乎会导致查询在连续使用它们的次数越多,累积运行速度越慢?

我有这个表是用从第三方购买的数据构建的.

我已经删除了一些东西,以使这篇文章缩短...但只是让你了解事情是如何设置的.

CREATE TABLE [dbo].[GIS_Location](
        [ID] [int] IDENTITY(1,1) NOT NULL, --PK
        [Lat] [int] NOT NULL,
        [Lon] [int] NOT NULL,
        [Postal_Code] [varchar](7) NOT NULL,
        [State] [char](2) NOT NULL,
        [City] [varchar](30) NOT NULL,
        [Country] [char](3) NOT NULL,

CREATE TABLE [dbo].[Address_Location](
    [ID] [int] IDENTITY(1,1) NOT NULL, --PK
    [Address_Type_ID] [int] NULL,
    [Location] [varchar](100) NOT NULL,
    [State] [char](2) NOT NULL,
    [City] [varchar](30) NOT NULL,
    [Postal_Code] [varchar](10) NOT NULL,
    [Postal_Extension] [varchar](10) NULL,
    [Country_Code] [varchar](10) NULL,
Run Code Online (Sandbox Code Playgroud)

然后我有两个查找LAT和LON的函数.

CREATE FUNCTION [dbo].[usf_GIS_GET_LAT]
(
    @City VARCHAR(30),
    @State CHAR(2)
) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 sql-function

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

在Unix中删除回车

\r在Unix中从文件中删除所有回车的最简单方法是什么?

unix carriage-return

207
推荐指数
9
解决办法
38万
查看次数

高效克隆缓存的对象

我们有一个应用程序,它对数据对象进行比较,以确定对象的一个​​版本是否与另一个版本不同.我们的应用程序还对这些对象进行了一些广泛的缓存,在进行这些比较时,我们遇到了一些性能问题.

这是工作流程:

  1. 数据项1是内存中的当前项.此项最初是从缓存中检索并进行深度克隆(所有子对象,如字典等).然后编辑数据项1,并修改其属性.
  2. 然后,我们将此对象与存储在缓存中的原始版本进行比较.由于数据项1已克隆且其属性已更改,因此这些对象应该不同.

这里有几个问题.

主要问题是我们的深度克隆方法非常昂贵.我们对浅色克隆进行了分析,速度慢了10倍.那是废话.这是我们深度克隆的方法:

    public object Clone()    
    {
        using (var memStream = new MemoryStream())
        {
            var binaryFormatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
            binaryFormatter.Serialize(memStream, this); 
            memStream.Seek(0, SeekOrigin.Begin);
            return binaryFormatter.Deserialize(memStream);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我们最初使用以下内容进行克隆:

public object Clone()
{
    return this.MemberwiseClone();
}
Run Code Online (Sandbox Code Playgroud)

这样做效率更高,但是因为它做了浅层克隆,所有复制对象(这些对象的属性,如字典等)都没有被克隆.该对象仍将包含与缓存中的对象相同的引用,因此在比较时属性将相同.

那么,有没有人有一种有效的方法在C#对象上进行深度克隆,这将克隆整个对象图?

c# performance clone deep-copy

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

在64位操作系统上开发有什么优势吗?

我不确定我是否正确理解:64位操作系统是否比同一系统上的32位操作系统更快地运行/编译代码?

我们使用的是64位操作系统,它似乎只会导致传统和专有软件的兼容性问题.(我们正在运行Ubuntu 9.04 Jaunty amd64)

linux ubuntu 64-bit compatibility x86-64

6
推荐指数
3
解决办法
827
查看次数

如何更新ObservableCollection的现有元素?

我有一个ObservableCollection实例绑定到一个带有两个独立数据模板的WPF列表框(一个用于显示,一个用于编辑).用于编辑的数据模板在文本框上具有单向绑定,并具有"保存"按钮.

我需要进行哪些更改才能按下"保存"按钮(将列表项置于编辑模式后),值I更改文本框以替换ObservableCollection(和显示)中的值?

c# wpf datatemplate observablecollection

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

使用jquery提交表单而不导航到另一个屏幕

我正在努力使表单提交不会导致页面导航并使用ajaxSubmit来提交内容.但是当我单击提交按钮时,它仍然导航到表单的action属性中的页面.继承人javascript:

var options = {
    success: processLogin
};
$('#loginform').submit(function() {
    $(this).ajaxSubmit(options);
    return false;
});
Run Code Online (Sandbox Code Playgroud)

并且形式如下:

<form id='loginform' action='login.php' method='post'>
    <table id='logintable'>
        <tr>
            <td>Room:</td>
            <td><input id='roomname' type='text' name='roomname' /></td>
        </tr>
        <tr>
            <td>Nickname:</td>
            <td><input id='nickname' type='text' name='nickname' /></td>
        </tr>
        <tr>
            <td colspan='2' class='center'><input type='submit' value='Submit' /></td>
    </table>
</form>
Run Code Online (Sandbox Code Playgroud)

forms jquery

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

在C的垃圾收集上标记阶段误检测

我看过保守党的GC算法概述

"标记"部分是否会发生误检?如果存储了一些数据并且巧合碰巧与分配的内存的地址相同,那么收集器是否会保留内存?

c garbage-collection memory-management

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