小编Thy*_*ine的帖子

适用于“main”或“master”或其他的 Git 别名

由于 git 中有多种默认分支选择,我如何编写一个引用默认分支(无论名称如何)的脚本/别名?

我的具体示例是我的别名,它重新定位到最新的远程主控:

### version for `master`
#   rebaseOn = "!f() { BRANCH=$(git symbolic-ref --short HEAD) && git fetch && git pull --rebase; git rebase origin/${1:-master}; }; f"
### version for `main`
    rebaseOn = "!f() { BRANCH=$(git symbolic-ref --short HEAD) && git fetch && git pull --rebase; git rebase origin/${1:-main}; }; f"
Run Code Online (Sandbox Code Playgroud)

用法:git rebaseOngit rebaseOn newParentBranch(因为它默认输入${1:-main}

我希望该命令适用于那里的任一版本,因为我使用的各种存储库都有mainmasterdefaulttrunk


到目前为止,我已经找到了/sf/answers/3503969731/git remote show upstream | grep …

git

24
推荐指数
2
解决办法
5187
查看次数

减少纬度和经度点数的最快方法

我正在尝试减少并将多个点组合到这些位置的中心点.现在我通过寻找最接近的一对来强制它,将它们组合并重复直到我将它减少到我的目标(旁注:实际上我通过排序(lat*lat+long*long)然后在每个点的任一侧搜索10%来减少问题,我的测试总是找到该范围内的最短距离).

举个例子,我希望将4000点减少到1000点,理想情况下将最近点组合到最近点的中心.基本上是构建反映该区域中地址数量的标记点.

有没有更好的算法可以让我尽可能准确的结果?或者更快的距离算法?我想它只需要在短距离内准确


现在我找到距离(维基百科在"投射到飞机上的球形地球"下):

double dLat = pos2.LatitudeR - pos1.LatitudeR;
double dLon = pos2.LongitudeR - pos1.LongitudeR;

double cosLatM = Math.Cos((pos2.LatitudeR + pos1.LatitudeR)/2) * dLon;
double a = dLat*dLat + cosLatM*cosLatM;
Run Code Online (Sandbox Code Playgroud)

我已经考虑过将所有点分组在彼此的x距离内,然后扩展x直到达到我的目标最终点数,但我不知道如何让它像我的完美主义那样准确.这就是我能想到的所有方式都会略有不同,具体取决于输入点列表的顺序.


编辑以描述我当前的算法如何处理(这是找到我想要的结果的理想方式,但是更快的近似值得):

如果你有线性描述它 x=1,4,5,6,10,20,22

  1. 它将结合4 + 5 = 4.5 [它找到的第一个1.0距离]
  2. (4.5*2 + 6)/ 3 = 5 - x=1,5,10,20,22[1.5距离]
  3. 20 + 22 = 21 - x=1,5,10,21[2.0距离]
  4. (5*3 + 1)/ 4 = 4 - x=4,10,21[4.0距离]
  5. (4*4 + 10)/5.2 - 所以你最终得到了x=5.2,21.(它跟踪CombineCount,以便以这种方式找到正确的平均中心)

结果: 这是我当前的距离函数,其中cos ^ 2的查找表生成.没有时间检查我的点有多接近,所以没有实现Joey建议的近似cos ^ …

c# algorithm performance

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

基于ID字段的并发对象锁

我有一个生产者/消费者流程.消费对象具有ID属性(类型为整数),我想一次只消耗一个具有相同ID的对象.我怎么能这样做?

也许我可以做这样的事情,但我不喜欢它(创造了太多的对象,而每天只有一两个具有相同ID的消息可以被消耗而且锁(_lockers)有点耗费时间:

    private readonly Dictionary<int,object> _lockers = new Dictionary<int,object>();
    private object GetLocker(int id)
    {
        lock(_lockers)
        {
            if(!_lockers.ContainsKey(id))
                _lockers.Add(id,new object());
            return _lockers[id];
        }
    }



    private void Consume(T notif)
    {
            lock(GetLocker(notif.ID))
           {
            ...
           }
    }

enter code here
Run Code Online (Sandbox Code Playgroud)

注意:同样的问题,ID属性是string类型(在那个cas中我可以锁定string.Internal(currentObject.ID)

c# locking

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

.Net Screensaver找不到配置文件

我在C#和Windows Forms中编写了一个屏幕保护程序.为了测试我已经懒,只是用我所有的设置配置文件(无设置对话框还),但该计划似乎无法找到或读取配置文件时,Windows上运行屏幕保护程序.

它在我使用预览按钮或以任何方式手动运行时都有效,只有当它达到屏幕保护程序超时时它才能找到配置文件.

记录AppDomain.CurrentDomain.SetupInformation.ConfigurationFile它返回短名称:C:\Windows\System32\MYSCRE~1.config 它应该在哪里C:\Windows\System32\MyScreenSaverName.scr.Config

所以我猜测问题是它无法找到带有短名称路径的配置文件.

不确定它是否由于Windows 7运行屏幕保护程序的系统帐户,或者其他方式如何运行.任何信息都会有所帮助,谢谢.

编辑:尝试找出任何差异:

  1. 我能找到的唯一区别是当Windows运行屏幕保护程序时Environment.CommandLine返回C:\Windows\system32\MYSCRE~1.SCR /s,但是当我运行屏幕保护程序时它具有正常路径
  2. 一切Process.GetCurrentProcess().StartInfo都是一样的
  3. WindowsIdentity.GetCurrent().Name 是我的帐户名称

看看其他问题,似乎User32是启动屏幕保护程序的,所以我认为它必须是如何启动scr进程.

解决方法:将.scr文件重命名为8个字符或更少,使其正常工作.所以现在有效,仍然会想知道为什么存在这个问题.

.net screensaver windows-7

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

锁定 Dictionary.Count

在访问集合的简单属性时,锁定是否有任何好处或危害,特别是.Count?(这是可取的,不可取的,还是一点也不重要?)(当然我需要在任何写入或读取时锁定它)

private Dictionary<string, bool> database = new Dictionary<string, bool>();
private object databaseLock = new object();
public int Count
{
    get
    {
        lock (databaseLock)
        {
            return database.Count;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我认为这可能是可取的,只需敲定需要锁定对字典的访问的约定,而不是出于任何实际原因[*]。还有可能在您访问的任何属性中进行比预期更多的操作。

[*] 知道在 C# 中的(大多数)集合中Count,它是一个由它维护的整数,因此应该始终是原子操作

c# locking

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

使用ForPartsOf的NSubstitute虚拟getter返回替换会抛出异常

我试图模拟一个对象的一个​​属性

有一个类似的问题: 返回返回另一个替代的方法的结果会在NSubstitute中引发异常 但是接受的答案对我不起作用.

void Main()
{
    var obj = Substitute.ForPartsOf<MyObject>();
    //WORKS, But I need a partial mock!:
    //var obj = Substitute.For<MyObject>();

    obj.PropClass.Returns(Substitute.For<PropClass>());

    //It's suggestion, Fails, same error:
    //var returnValue = Substitute.For<PropClass>();
    //obj.PropClass.Returns(returnValue);

    //Fails, same error:
    //Lazy implementation of *similar question*
    //Func<PropClass> hello = () => Substitute.For<PropClass>();
    //obj.PropClass.Returns(x => hello());

    //Fails, same error:
    //I believe what *similar question* suggests
    //obj.PropClass.Returns(x => BuildSub());

    obj.PropClass.Dump("Value");
}

public class MyObject
{
    public MyObject()
    {
        _propClasses = new List<PropClass>();
    }
    private readonly IList<PropClass> …
Run Code Online (Sandbox Code Playgroud)

c# mocking nsubstitute

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