小编omi*_*nug的帖子

将Git子模块转换为子树

如何将git子模块(本地文件系统中的文件夹作为远程)转换为git子树,最好保留子模块的提交历史记录?

git git-submodules git-subtree

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

如何在GHCI中止执行?

当我发射

ghci> last [0..]
Run Code Online (Sandbox Code Playgroud)

我可以用Ctrl + C打断它.

然而

ghci> last (repeat 0)
Run Code Online (Sandbox Code Playgroud)

无法使用Ctrl + C中止.GHCI默默地忽略了击键.

如何在GHCI中中止此命令?这是一个错误吗?

haskell ghci

13
推荐指数
2
解决办法
7021
查看次数

强制要求使用IPv4/IPv6

如何强制requests库使用特定的Internet协议版本来获取get请求?或者这可以通过Python中的另一种方法更好地实现?我可以,但我不想用curl...

澄清目的的例子:

import requests
r = requests.get('https://my-dyn-dns-service.domain/?hostname=my.domain',
                 auth = ('myUserName', 'my-password'))
Run Code Online (Sandbox Code Playgroud)

python python-requests

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

.Net CompareExchange重新排序

编译器或处理器可以重新排序以下指令,以便另一个线程看到a == 0b == 1

假设int a = 0, b = 0;某个地方.

System.Threading.Interlocked.CompareExchange<int>(ref a, 1, 0);
System.Threading.Interlocked.CompareExchange<int>(ref b, 1, 0);
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading test-and-set memory-fences

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

C#抽象基类中的派生类实例化

我的目标是编写一个抽象基类,其中包含派生“子实例”的方法。在这个方法中已经完成了一些计算,这在所有派生类中都很常见。

困难在于基类不能自己创建子类。所以我T在我的基类中引入了一个类型参数和一个protected abstract返回T.

public abstract class Base<T> where T : Base<T>
{
    public T GetChild()
    {
        string param = ComplexComputation();
        return NewInstanceFrom(param);
    }

    protected abstract T NewInstanceFrom(string param);
}

// --- somewhere else: ---

public class Derivative : Base<Derivative>
{
    public Derivative() { }

    protected sealed override Derivative NewInstanceFrom(string param)
    {
        return new Derivative(param);
    }

    private Derivative(string param)
    {
        // some configuration
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是我不能确保NewInstanceFrom它只被基类调用。它也可以由继承自 的类调用Derivative。这就是我想要避免的。

所以我可以将功能封装在一个私有类或委托中:

public abstract class …
Run Code Online (Sandbox Code Playgroud)

c# inheritance

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

TypeScript 中泛型的不安全隐式转换

tsc即使带有--strict标志,TypeScript 编译器也毫无怨言地编译了以下代码。但是,该代码包含一个基本错误,该错误在 Java 或 C# 等语言中是被阻止的。

interface IBox<T> {
  value: T;
}

const numberBox: IBox<number> = { value: 1 };

function insertString(items: IBox<string | number>): void {
  items.value = 'Test';
}

// this call is problematic
insertString(numberBox);

// throws at runtime:
// "TypeError: numberBox.value.toExponential is not a function"
numberBox.value.toExponential();
Run Code Online (Sandbox Code Playgroud)

可以tsc配置以便识别这样的错误吗?

generics types type-conversion typescript tsc

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

如何创建一个始终产生的任务?

Task.Wait()or 相反Task.Result,await' Task在C#5中阻止执行等待的线程处于休眠状态.相反,使用await关键字的方法需要async使得调用await只是使方法返回表示async方法执行的新任务.

但是当await'ed Taskasync方法再次收到CPU时间之前完成时,await识别Task为已完成,因此该async方法将Task仅在稍后返回该对象.在某些情况下,这可能比可接受的晚,因为开发人员认为await'ing始终推迟其async方法中的后续语句可能是一个常见的错误.

错误async方法的结构可能如下所示:

async Task doSthAsync()
{
    var a = await getSthAsync();

    // perform a long operation
}
Run Code Online (Sandbox Code Playgroud)

然后有时doSthAsync()Task在很长一段时间后返回.

我知道它应该像这样写:

async Task doSthAsync()
{
    var a = await getSthAsync();

    await Task.Run(() =>
    {
        // perform a long operation
    }; …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading asynchronous async-await

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

检测JFileChooser何时关闭

JFileChooser有一个方法addActionListener接受ActionListener当用户按下JFileChooser窗口底部的两个按钮之一时调用的方法.但是,正如我发现的那样,当用户JFileChooser通过单击选择器的窗口标题栏中的关闭按钮(或使用操作系统的其他方法关闭它)来关闭它时,不会调用它.所以我的问题是:JFileChooser在这种情况下,一个认可的创造者如何被关闭?

java swing jfilechooser

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