小编Ale*_*lex的帖子

绑定`len = length xs`然后计算`len`会导致GHC占用大量RAM

我发现了一个关于GHCi和列表的奇怪的事情.

此命令需要一些时间来执行,只返回正确的答案.

ghci> length [1..10^8]
100000000
Run Code Online (Sandbox Code Playgroud)

但是,将此绑定到变量并执行会导致GHC消耗大约5 GiB的RAM而不会释放,直到GHCi会话结束.:quit在实际退出之前输入之后输入会消耗3 GiB.

ghci> len = length [1..10^8]
ghci> len
-- Consumes 5 GiB
100000000
ghci> :quit
-- Consumes 3 GiB
-- Exits
Run Code Online (Sandbox Code Playgroud)

这是正常的吗?这些命令有什么区别?

GHC版本是8.2.2.

haskell list ghc ghci

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

使用 C++ 代码的 C 包装器来实现 ABI 稳定性?

Jason Turner在他的演讲中提议打破 C++ ABI 以保持该语言的发展。他还提到,如果出于兼容性原因需要,可以通过将 C++ 库包装到 C 库中来隔离 C++ ABI 更改。

27:30相关截图:

C 包装图

这里“BinaryLibrary”和“Old C++ stdlib”使用旧的 ABI,“NewExecutable”使用假设的更新 ABI。

据我了解,这是有效的,因为“BinaryLibrary”的旧 C++ ABI 被烘焙成具有更稳定接口的单独二进制文件。

但是什么让 C 成为一个好的替代方案呢?难道它的ABI也不能改变吗?

c c++ abi

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

在“for”循环内递增后,迭代器结束检查失败

这个问题很可能是重复的,但我还没有找到关于这个问题的任何内容。

为什么增加iteratora 中最后位置的 avector会使其不等于vector.end()

或者,换句话说,为什么会正常执行:

int main() {
    vector<string> vec = {"ve"};

    for (auto it = vec.begin(); it != vec.end(); it++) {}

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

虽然这会进入无限循环:

int main() {
    vector<string> vec = {"ve"};

    for (auto it = vec.begin(); it != vec.end(); it++) { it++; }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和这个:

int main() {
    vector<string> vec = {"ve"};

    for (auto it = vec.begin(); it != vec.end(); it++) {
        cout << (it == vec.end()) << " "; …
Run Code Online (Sandbox Code Playgroud)

c++ iterator c++11

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

显示非活动类的敬酒。设置环境为吐司的问题

剧透:这篇文章可能由于使用C和Java编程新手而有些愚蠢

有一个活动MainActivity和一个包含许多方法的公共非活动类。我需要为其中一些显示烤面包警报

当前的尝试是这样的,但对于getApplicationContext()失败,并显示“无法从静态上下文引用非静态方法”:

void errorWarn (String warning) {
    Context context = android.content.ContextWrapper.getApplicationContext();
    Toast.makeText(context, "Something's wrong in " + warning, Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)

那么,如何从非活动类中调用吐司呢?

UPD:将从类中的方法调用errorWarn 。因此,如果在类的方法中发生错误,则应该发出警报

我们在MainActivity中有一个editText字段。该类应从中获取并解析字符串。如果在某些步骤上处理失败,则在MainActivity中显示吐司

UPD2:完整结构。

主要活动:

public class MainActivity extends ActionBarActivity {
    <...>
    public void ButtonClick (View view) {
        Class.testfunc("");
    }
}
Run Code Online (Sandbox Code Playgroud)

类:

public class Class {
    void errorWarn (Context context, String warning) {
        Toast.makeText(context, "Something must be wrong. " + warning, Toast.LENGTH_SHORT).show();
    }
    void testfunc (String string) {
        errorWarn(string);
    }
}
Run Code Online (Sandbox Code Playgroud)

java android android-toast

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

如何在Windows上使用MinGW构建OpenCV 3.2.0

这篇文章包含了我(和其他用户)从源代码构建库时遇到的所有问题.由于没有教程,我决定创建这种FAQ帖子,将所有解决方案放在一起.希望它会有所帮助!

配置:
OpenCV 3.2.0
MinGW-w64 x86_64-6.1.0-win32-seh-rt_v5-rev0

欢迎您在答案中添加更多信息,因为将所有内容放在一个地方更方便.

windows opencv mingw build cmake

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

如果没有 getValue 和 setValue,Kotlin 的“惰性”实现如何工作?

在 Kotlin 中,具有预设自定义获取/设置行为的属性是使用委托属性来实现的。根据文档,属性的委托只是一个带有getValue方法setValue的类

但是当我查看 的实现内部lazy时,我只找到了value属性。所以我自己尝试以这种方式实现委托。它无法编译,因为getValuesetValue没有明确实现。那么正式实施lazy工作又如何呢?

delegates properties kotlin

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

需要对Java线程做一些澄清:start()和run()

根据StackOverflow的答案,start()创建一个线程并在这个新线程中run()执行代码并在当前线程中执行代码而不创建任何代码 - 就像它是一个Runnable

但是文档,如果我理解它们,就说start()初始化一个新线程,如果你想在同一个线程中重新执行你的代码,你调用run()

哪一个是对的?

UPD

好吧,看起来像run()手动调用不是一个好习惯,至少是无用的.是否有一些很好的方法来调用代码run()?比如,我经常需要一个相对慢的动作,一次一个实例 - 那么呢?

java multithreading

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

OpenCV:Mat::reshape() 什么都不做

我有一个640 x 480 CV_8UC3 Mat image并且想要执行 k 均值分割。所以我需要将它转换为CV_32F(这里没问题),重塑它,然后运行 ​​k-means。

问题是reshape()什么都不做:

cv::Mat colorMat;
image.convertTo (colorMat, CV_32FC3);
std::cout << colorMat.size () << "; ch: " << colorMat.channels () << std::endl; // [640 x 480]; ch: 3
colorMat.reshape (1, colorMat.rows * colorMat.cols); // Here I expect it to become [307200 x 3], 1 channel - each column representing a color component
std::cout << colorMat.size () << "; ch: " << colorMat.channels () << std::endl; // [640 x …
Run Code Online (Sandbox Code Playgroud)

c++ opencv

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

将onClickListener附加到容器内的所有按钮

一个懒惰的问题=)

我有一个填充了按钮的XML布局(除了按钮之外没有其他View对象).如何将一个监听器附加到所有按钮而不必将"android:onClick"行粘贴到每个按钮上?

android onclicklistener

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