小编MvG*_*MvG的帖子

使用ImageMagick"Diff"图像

如何获得两个图像之间的差异?我有原始图像.有人写过原始图像的精确副本.现在,我需要比较原始图像和书面图像,并提取图像格式的书写.

示例:我有一张房子的照片.有人拿了一份副本,在副本上写了"你好!".我想以某种方式比较两张照片,删除房子,并留下"Hello!"字样的图像.

ImageMagick有可能吗?我知道有办法获得图像之间的统计差异,但这不是我想要的.

diff image imagemagick image-processing difference

162
推荐指数
2
解决办法
7万
查看次数

如何使用objdump反汇编一个函数?

我的系统上安装了二进制文件,并希望查看给定函数的反汇编.优选使用objdump,但其他解决方案也是可以接受的.

这些问题我已经了解到,如果我只知道边界地址,我可能能够反汇编部分代码.从这个答案我已经学会了如何将我的拆分调试符号转换回单个文件.

但即使在单个文件上运行,甚至反汇编所有代码(即没有启动或停止地址,但只是简单的-d参数objdump),我仍然没有在任何地方看到该符号.这是有道理的,因为有问题的函数是静态的,所以它不会被导出.然而,valgrind将报告函数名称,因此它必须存储在某处.

查看调试部分的详细信息,我找到了本.debug_str节中提到的名称,但我不知道可以将其转换为地址范围的工具.

elf debug-symbols objdump disassembly dwarf

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

Eclipse工作区插件文件夹中有哪些巨大的*.CFS文件?

我开始注意到我的WD硬盘已满,并运行了一个大小:巨大的文件搜索.它出现了几个文件:

F:\SCOTT-SHARED-DESKTOP\My Documents\JPA_SPRING_STRUTS\.metadata\.plugins\org.maven.ide.eclipse\nexus\d9d714e11cb097b3ffcec91cccc65d3e_58.cfs

超过189,992 KB(189 MB)!

有人知道这些流氓吗?

eclipse workspace plugins nexus maven

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

将多个对齐的图放在一页上时,避免浪费空间

我想把四个地块放在一个页面上.轴标签应仅在最边缘打印,即仅用于底部图的x轴标签,仅用于左图的y轴标签.这既适用于整个轴的名称,也适用于各个刻度线.我可以使用以下代码生成这些内容:

pdf(file = "ExampleOutput.pdf",
    width = 6.61,
    height = 6.61,
    pointsize = 10
    )
set.seed(42)
catA <- factor(c("m100", "m500", "m1000", "m2000", "m3000", "m5000"))
catB <- factor(20:28)
samples <- 100
rsample <- function(v) v[ceiling(runif(samples, max=length(v)))]
Tab <- data.frame(catA = rsample(catA),
                  catB = rsample(catB),
                  valA = rnorm(samples, 150, 8),
                  valB = pmin(1,pmax(0,rnorm(samples, 0.5, 0.3))))
par(mfrow = c(2,2))
for (i in 0:3) {
  x <- Tab[[1 + i %% 2]]
  plot(x, Tab[[3 + i %/% 2]],
       xlab = if …
Run Code Online (Sandbox Code Playgroud)

plot r

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

ES6课程中的成员变量

有没有办法使用ECMAScript6 class表示法来声明静态类变量或实例变量的默认值?如果没有class我的想法就会被写成

function MyClass(arg) { if(arg) this.arg = arg; }
MyClass.classVariable = 42;
MyClass.prototype.arg = "no arg specified";
Run Code Online (Sandbox Code Playgroud)

在我看来,最明显的类似ES6的符号本来就是

class MyClass {
    constructor(arg) { if(arg) this.arg = arg; }
    static let classVariable = 42;
    let arg = "no arg specified";
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为根据当前的规范草案,ClassElement的唯一产品是静态的,实例方法和分号都是它们自己.好吧,可以使用一对getter和setter方法来实现与我概述的类似语义,但我认为这会严重影响性能并且语法非常奇怪.

是否有一些草案建议在class表示法中包含变量,不管怎样?如果是这样,建议的语法是什么,它在哪里发布,在哪里讨论,讨论是如何进行的,以及当前的事态是什么?目前的情况是,如果之前没有讨论过这样的问题,在任何层面都无法回答这个问题,但我认为这不太可能.


一点背景:我目前正在使用谷歌闭包编译器执行高级编译,使用ES6作为输入.为了实现这一点,我需要一个地方来为成员变量添加类型注释,并且我曾经使用语法来放置它们,就像/** @type {string} */ MyClass.prototype.arg;ECMAScript中的语义无操作一样,但是为闭包编译器提供类型信息很简单.我还没有找到一个用class构造做同样好的方法.但如果你想解决这个问题,那就是评论.上面的问题是关于成员声明,​​而不是无操作,所以这里应该讨论的答案.

javascript class member static-members ecmascript-6

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

constexpr使用静态函数初始化静态成员

要求

我想要一个constexprconstexpr函数计算的值(即编译时常量).我想要将这两个作用于类的命名空间,即静态方法和类的静态成员.

第一次尝试

我第一次写这个(对我来说)明显的方式:

class C1 {
  constexpr static int foo(int x) { return x + 1; }
  constexpr static int bar = foo(sizeof(int));
};
Run Code Online (Sandbox Code Playgroud)

g++-4.5.3 -std=gnu++0x 对此说:

error: ‘static int C1::foo(int)’ cannot appear in a constant-expression
error: a function call cannot appear in a constant-expression
Run Code Online (Sandbox Code Playgroud)

g++-4.6.3 -std=gnu++0x 抱怨:

error: field initializer is not constant
Run Code Online (Sandbox Code Playgroud)

第二次尝试

好吧,我想,也许我必须把事情从课堂上移开.所以我尝试了以下方法:

class C2 {
  constexpr static int foo(int x) { return x + 1; }
  constexpr static int bar;
}; …
Run Code Online (Sandbox Code Playgroud)

c++ gcc g++ static-members constexpr

31
推荐指数
2
解决办法
3万
查看次数

容器固定动态尺寸

是否有一个固定长度序列的标准容器,其长度在运行时确定.我想将参数传递给每个sequence元素的构造函数,并使用该参数初始化const成员(或引用).我还想在O(1)中的给定索引处获得序列元素.在我看来,我的所有要求都无法同时满足.

  • 我知道std::array有固定长度,但必须在编译时知道该长度.
  • std::vector具有动态大小,并允许使用传递构造函数参数emplace.虽然你可以reserve记忆以避免实际的重新分配,但是类型仍然必须是可移动的,理论上允许这样的重新分配,例如防止const成员.
  • 然后有,std::list并且std::forward_list,它不需要可移动类型,但仍然可调整大小并且在随机访问模式下将表现得相当差.我还认为这些列表可能会产生相当大的开销,因为每个列表节点可能会单独分配.
  • 奇怪的是,std::valarray到目前为止,这是我最好的选择,因为它有一个固定的长度,不会自动调整大小.虽然有一种resize方法,但除非您实际调用该方法,否则您的类型不必是可移动的.这里的主要缺点是缺少自定义构造函数参数,因此使用此方法无法初始化const成员.

我错过了一些替代方案吗?有没有办法调整其中一个标准容器,以满足我的所有要求?


编辑:为了让您更准确地了解我正在尝试做什么,请参阅此示例:

class A {
  void foo(unsigned n);
};

class B {
private:
  A* const a;
  const unsigned i;
public:
  B(A* aa) : a(aa), i(0) { }
  B(A* aa, unsigned ii) : a(aa), i(ii) { }
  B(const std::pair<A*, unsigned>& args) : B(args.first, args.second) { }
  B(const B&) = delete;
  B(B&&) = delete;
  B& operator=(const B&) = delete; …
Run Code Online (Sandbox Code Playgroud)

c++ containers std sequence c++11

30
推荐指数
2
解决办法
2246
查看次数

通过api查询npmjs注册表

我发现我经常对https://www.npmjs.com/上的搜索顺序和表现力不满意.我想应该有一种以编程方式查询使用服务器https://api.npmjs.org/http://registry.npmjs.org/.但是怎么样?文件在哪里?

(或者是否有节点包来促进它?我知道SO不是关于工具或包的推荐,所以也许我不应该问这个问题,但是如果有一些工具,我可能会从那里读取API同样.)

node.js npm asp.net-web-api npmjs

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

替换向量中的给定值

我正在寻找一个函数,它将所有出现的一个值替换为另一个值.例如,我想将所有零替换为1.我不想将结果存储在变量中,但希望能够匿名使用该向量作为更大表达式的一部分.

我知道如何自己编写一个合适的函数:

> vrepl <- function(haystack, needle, replacement) {
+   haystack[haystack == needle] <- replacement
+   return(haystack)
+ }
> 
> vrepl(c(3, 2, 1, 0, 4, 0), 0, 1)
[1] 3 2 1 1 4 1
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一些标准功能来完成这项工作,最好是从base包装中,作为其他一些常用包装的替代品.我相信使用这样的标准可能会使我的代码更具可读性,而且我不需要在任何需要的地方重新定义该函数.

replace r

27
推荐指数
3
解决办法
14万
查看次数

多个线程的随机数

问题

我打算为Linux编写一个C++ 11应用程序,它根据大约一百万个伪随机32位数进行一些数值模拟(不是加密).为了加快速度,我想使用桌面CPU的所有内核在并行线程中执行模拟.我想使用mt19937由boost提供的Mersenne Twister 作为PRNG,我想由于性能原因,每个线程我应该有一个这样的PRNG.现在我不确定如何播种它们以避免在多个线程中生成相同的随机数子序列.

备择方案

以下是我到目前为止所考虑的替代方案:

  1. 独立于每个线程为PRNG播种/dev/urandom.

    当系统熵池耗尽时,我有点担心,因为我不知道系统内部PRNG是如何运行的.我是否意外地获得连续的种子,这些种子准确地识别了Mersenne Twister的连续状态,因为/dev/urandom使用了Mersenne Twister本身?可能与我对下一点的担忧密切相关.

  2. 种第一个PRNG /dev/urandom和第一个PRNG .

    基本上也是同样的问题:使用一个PRNG来播种另一个使用相同算法的PRNG是好还是坏?或者换句话说,在这一代中的任何时刻读取625个32位整数是否mt19937直接对应于mt19937发生器的内部状态?

  3. 首先从非梅森信息中获取其他人的种子.

    由于使用相同的算法生成随机数并生成初始种子感觉某种方式可能是一个坏主意,我考虑引入一些不依赖于Mersenne Twister算法的元素.例如,我可以将线程id与初始种子向量的每个元素进行异或.这会让事情变得更好吗?

  4. 在线程中共享一个PRNG.

    这将确保只有一个序列,具有Mersenne Twister的所有已知和期望的属性.但是控制对该生成器的访问所需的锁定开销确实让我有点担心.由于我没有发现任何相反的证据,我认为我作为图书馆用户将负责阻止对PRNG的并发访问.

  5. 预生成所有随机数.

    这将有一个线程预先生成所有必需的1M随机数,稍后将由不同的线程使用.与整个应用程序相比,4M的内存要求会很小.在这种方法中最让我担心的是随机数本身的产生并不是并发的.整个方法也不能很好地扩展.

问题

你会建议哪种方法,为什么?或者你有不同的建议吗?

你知道我的哪些问题是合理的,而这仅仅是因为我对事情的实际运作缺乏洞察力?

c++ random multithreading boost mersenne-twister

24
推荐指数
3
解决办法
7053
查看次数