小编Hug*_*une的帖子

比较Visual Studio 2013和2015

Visual Studio 2013和2015之间有什么区别?

我正在寻找功能的比较表.

visual-studio visual-studio-2013 visual-studio-2015

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

Git 警告:“清空上次更新令牌。”

git 警告消息“清空上次更新令牌”的原因和解决方案是什么?

我有一个存储库,其中每个命令都会打印此警告,例如

$ git status
warning: Empty last update token.
On branch foo
Your branch is up to date with 'origin/foo'.

$ git fetch
warning: Empty last update token.

$ git reset --hard
warning: Empty last update token.
Updating files: 100% (79/79), done.
HEAD is now at e1c42a2 blah

$ git prune
warning: Empty last update token.
Run Code Online (Sandbox Code Playgroud)

命令似乎仍然成功。不过,警告消息完全混淆了 git-extensions 等外部工具,当git status包含任何意外输出时,它会显示“未解决的合并冲突”。

该问题仅发生在一台特定电脑上的本地存储库上,但将 .git 文件夹复制到另一台电脑上会重现该问题。

我可以删除本地副本并重新开始,但我想确定原因,甚至可能保存存储。

windows git version-control git-bash

11
推荐指数
2
解决办法
4524
查看次数

OrderBy与非传递IComparer

拿一个自定义IComparer,如果它们的差异小于给定的epsilon,则将两个双精度视为相等.

如果在OrderBy().ThenBy()子句中使用此IComparer会发生什么?

具体来说,我在考虑以下实现:

public class EpsilonComparer : IComparer<double>
{
    private readonly double epsilon;

    public EpsilonComparer(double epsilon)
    {
        this.epsilon = epsilon;
    }

    public int Compare(double d1, double d2)
    {
        if (Math.Abs(d1-d2)<=epsilon) return 0;

        return d1.CompareTo(d2);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这个IComparer关系显然不具有传递性.(if a ~ b and b ~ c then a ~ c)

使用epsilon == 0.6:

  • 比较(1,1.5)== 0
  • 比较(1.5%,2)== 0
  • 比较(1,2)== -1

如果在OrderBy查询中使用此IComparer会发生什么,如下所示:

List<Item> itemlist;
itemList = itemlist.OrderBy(item=>item.X, new EpsilonComparer(0.352))
                   .ThenBy (item=>item.Y, new EpsilonComparer(1.743)).ToList();
Run Code Online (Sandbox Code Playgroud)

排序的行为是否符合预期,首先按X排序列表,然后按Y排序,同时将大致相等的值视为完全相等?
在某些情况下它会爆炸吗?
或者整个类型是不明确的?

使用IComparer没有传递性的后果究竟是什么?

(我知道这很可能是c#语言的未定义行为.我仍然对答案非常感兴趣.)

是否有另一种方法来获得这种排序行为?
(除了舍入值之外,当两个关闭的双打时会引入伪像,一个被向上舍入而另一个向下)

此处 …

c# linq sorting internals undefined-behavior

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

转换列表的平均转换矩阵

我有一个转换矩阵的多个估计,从两个点云到ICP(迭代最近点)相互映射.

如何为所有这些矩阵生成平均变换矩阵?

每个矩阵由刚性平移和仅旋转组成,没有刻度或倾斜.

理想情况下,我也想计算一个加权平均值,但是一个未加权的平均值现在可以.

平均翻译向量当然是微不足道的,但旋转是有问题的.我发现的一种方法是对旋转的各个基本向量求平均值,但我不确定是否会产生新的标准正交基,并且该方法似乎有点特别.

algorithm math 3d transformation matrix

10
推荐指数
2
解决办法
6564
查看次数

处理带有内存泄漏的非托管DLL

我有一个ac#应用程序,它依赖于第三方非托管程序集来访问某些硬件.

非托管代码存在内存泄漏,每次访问后内存消耗会增加~10mb.问题是众所周知的; 没有bugfix可用.

有没有办法可以继续使用这个程序集而无需定期重启?

我尝试创建一个单独的AppDomain,将有问题的代码加载到该AppDomain中appDomain.CreateInstanceAndUnwrap(),然后通过以下方式卸载域AppDomain.Unload().但是,这显然不会释放该域使用的非托管内存,只释放托管内存.

我还可以将应用程序拆分为两个独立的部分,并仅重新启动具有非托管dll的部分.然而,这将意味着重大的重新设计,并且可能导致大量的减速,因为必须在这两个部分之间交换大量数据.

是否有另一种方法可以驯服这个漏出的程序集并强制它释放内存而不重新启动.

c# memory-leaks memory-management unmanaged appdomain

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

如何重构这个重复的LINQ代码?

我试图弄清楚如何很好地重构这个LINQ代码.此代码和其他类似代码在同一文件和其他文件中重复.有时被操纵的数据是相同的,有时数据会发生变化,逻辑也会保持不变.

以下是在不同对象的不同字段上运行的重复逻辑的示例.

public IEnumerable<FooDataItem> GetDataItemsByColor(IEnumerable<BarDto> dtos)
{
    double totalNumber = dtos.Where(x => x.Color != null).Sum(p => p.Number);
    return from stat in dtos
           where stat.Color != null
           group stat by stat.Color into gr
           orderby gr.Sum(p => p.Number) descending
           select new FooDataItem
           {
               Color = gr.Key,
               NumberTotal = gr.Sum(p => p.Number),
               NumberPercentage = gr.Sum(p => p.Number) / totalNumber
           };
}

public IEnumerable<FooDataItem> GetDataItemsByName(IEnumerable<BarDto> dtos)
{
    double totalData = dtos.Where(x => x.Name != null).Sum(v => v.Data);
    return from stat in dtos
           where stat.Name …
Run Code Online (Sandbox Code Playgroud)

c# linq refactoring

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

如何在Visual Studio中为索引器"this []""定义"

我使用代码库,其中几个类实现索引器:

public double this[int i, int j]
{
    get { return ...; }
    set { ...; }
}
Run Code Online (Sandbox Code Playgroud)

当我偶然发现像foo[1,2] = 3Visual Studio 2008中的代码时,我经常想
右键单击/"转到定义",即在visual studio编辑器窗口中显示上面的定义.

对于普通的属性或方法这个工程没有问题:
foo.bar = 3,单击鼠标右键/"去定义"带我到源代码foo.bar.
对于重载+==这也有效.
然而,对于索引器,这似乎不起作用.有没有办法实现这个目标?

(我甚至无法在相应的源文件中搜索字符串"this [",因为在整个类中可以使用相同的语法来访问索引器.我总是必须滚动到下拉列表中的所有方法和属性文件)

c# indexer visual-studio-2008 visual-studio

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

最小包围球的弹跳泡算法

我对Bouncing Bubble算法感兴趣,找到一组点的近似最小包围球.

我理解这个基本概念:" 每次发现球外的一个点时,球都会向它移动并同时增加半径.每一步的增长都是为了不超过最佳半径而设计的,因此,半径越来越接近最佳状态. " 在此输入图像描述

然而,我无法在网上找到任何更具体的信息.如何计算增长?转向新点的距离有多远?

我正在寻找一个示例实现或足够的信息来实现我自己的解决方案.

language-agnostic algorithm 3d geometry point-clouds

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

包含x%点的最小边界球体

给定3D点云,如何找到包含给定百分点的最小边界球?

即如果我有一个带有一些噪声的点云,并且我想忽略5%的异常值,如果我不知道哪些点是异常值,我怎么能得到包含95%剩余点的最小球体?

示例:我想找到绿色球体,而不是红色球体:

在此输入图像描述

我正在寻找一个相当快速和简单的算法.它不必找到最优解,合理的近似也很好.

我知道如何计算100%点的近似边界球,例如使用Ritter算法.

如何将此推广到找到包含x%点的最小球体的算法?

language-agnostic algorithm 3d geometry point-clouds

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

字符串的持久哈希码

我想为字符串生成一个整数哈希码,它将永远保持不变; 即相同的字符串应始终产生相同的哈希码.

散列不必是加密安全的,它不会用于密码或敏感数据.

我的第一次尝试是使用.net框架string.GetHashCode()函数.但是在阅读消息来源后,我发现了以下内容:

// We want to ensure we can change our hash function daily. 
// This is perfectly fine as long as you don't persist the
// value from GetHashCode to disk or count on String A 
// hashing before string B.  Those are bugs in your code.
hash1 ^= ThisAssembly.DailyBuildNumber;
Run Code Online (Sandbox Code Playgroud)

这似乎表明哈希码不会保持不变.

如果是这样,框架是否有另一种方法来生成可重复的哈希码?或者GetHashCode的代码是否是实现我自己的代码的合理起点?

我正在寻找尽可能轻巧和快速的东西.
我找到了System.Security.Cryptography.MD5,但对于一个简单的int32哈希码来说这似乎有点过头了,我担心开销.至少它需要从字符串转换为字节数组,从字节数组转换为int,并MD5()为每个散列创建新对象,或管理某些静态共享MD5对象().

c# string hash hashcode gethashcode

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