小编Ara*_*hor的帖子

从插入触发器,postgres上的其他表复制值

我对PostgreSQL很新,并且花了太多时间试图找到一个适应我想做的事情的例子.所以我希望我能在这里得到一些帮助

我有2张桌子,称他们为人和地址

我想创建一个触发器,当我在person_id = oid的第一个表中为person_id插入新值时,从表地址复制street和house_nr

表人
person_id
street
house_nr
other_attributes

表地址
oid
street
house_nr
other_attributes

像这样的东西

INSERT INTO person
set person.street = address.street,
    person.house_nr = address.house_nr
FROM address
WHERE person_id = oid
Run Code Online (Sandbox Code Playgroud)

希望有人有时间帮助欢呼

postgresql triggers

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

在Visual Studio中为JavaScript生成javadoc

我需要为JavaScript项目生成文档,我想用Javadoc来做.

不可思议的是,我必须在Visual Studio 2013上完成它,看起来没有什么可以帮助Javadoc注释块.我想至少在我这样做时: /**+ enter生成:

/**
 *
 */
Run Code Online (Sandbox Code Playgroud)

我在Stackoverflow和微软网站上寻找过插件或类似的问题,但我只找到了Doxygen的插件或解决方案.

我是否真的在寻找一些不存在的东西,或者是否有一些我错过的东西?(希望如此)

javascript javadoc visual-studio visual-studio-2013

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

使用快速傅立叶变换模糊矩阵

我想模糊矩阵中的值,以便在相邻元素中我们不会有明显的过渡.

从维基百科页面Gaussian Blur我发现了一些关于高斯模糊的信息.我用最简单的算法尝试过,因此运行时间太长.坦率地说,我不确定我的实现是否正确,因为在边界瓦片上仍然存在明显的过渡.

我注意到这种模糊可以通过离散傅立叶变换来完成,这种变换要快得多,但我无法弄明白.

所以,我们的想法是,我们可以使用以下公式获得模糊矩阵:

blurredMatrix = IFFT[FFT[initialMatrix]FFT[weightingFunction]]
Run Code Online (Sandbox Code Playgroud)

其中FFT/IFFT是快速傅里叶变换/逆快速傅立叶变换.

目前我正在尝试对Wolfram Mathematica进行一些测试,以确保这种傅里叶变换的近似是正确的.

我正在使用GaussianMatrixweightingFunction.

我需要2d模糊,所以我创建了如下的高斯矩阵:

假设我们的初始矩阵具有nxn大小,其中n = 2k + 1

G = Chop[GaussianMatrix[k] GaussianMatrix[k], 10^6]
Run Code Online (Sandbox Code Playgroud)

然后,我尝试创建blurMatrix,如下所示:

blurredMatrix = Chop[FourierDCT[(FourierDCT[G]) (FourierDCT[initialMatrix]), 3], 10^-6]
Run Code Online (Sandbox Code Playgroud)

但结果我得到了零.

似乎我做错了.

另外,我尝试了另一种方法:

f[xi_, yj_] := 1/(2 \[Pi] \[Sigma]^2) Exp[-(((xi^2) + (yj^2) )/(2 \[Sigma]^2))];<br/>
[Sigma] = 3;<br/>
G = Chop[N[Table[f[i, j], {i, 1, 100}, {j, 1, 100}]]]; <br/>
Tavg = Chop[ 1000 InverseFourier[(Fourier[G]) (Fourier[T]) ], 10^-6]; <br/>
Run Code Online (Sandbox Code Playgroud)

使用这种方法,图像看起来很好(图像模糊),但blurMatrix和initialMatrix的值之间存在很大差异.

似乎有一些正常化或其他问题.

我需要用C/C++编写代码,C中有一个库FFTW库,它支持离散傅里叶变换.

如果这是一种错误的模糊方式,请告诉我,还有其他可能做我想做的事情.

c++ wolfram-mathematica gaussian convolution fftw

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

使用特定索引从另一个创建数组

我有两个数组,一个数据和一个索引:

var data = [
    'h', 'e', 'l', 'l', 'o', ' '
];
var indices = [
    4, 0, 5, 0, 1, 2, 2
];
Run Code Online (Sandbox Code Playgroud)

我想创建一个第三个数组,使用data按顺序指示的单元格indices,所以它在这里:

['o', 'h', ' ', 'h', 'e', 'l', 'l']
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过简单的循环轻松完成:

var newArray = new Array(indices.length);
for (var i in indices) {
    var index = indices[i];
    newArray.push(data[index]);
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种更简洁的方法,比如数组方法或特殊的构造函数?

javascript arrays

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

ElasticSearch/Lucene查询字符串 - 选择"字段X存在"

如何通过Kibana查询ElasticSearch以选择具有字段X的项目?

例如,我有一个带字段的映射{"a": {"type": "string"}, "b": {"type": "string"}}和两个文档

{"a": "lalala"}
{"a": "enoheo", "b": "nthtnhnt"}
Run Code Online (Sandbox Code Playgroud)

我想在不知道它b实际是什么的情况下找到第二个文档.

lucene elasticsearch kibana

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

为什么"do ... while(0)"不能被简单的花括号替换?

我最近看到一段C代码,包括以下样式的宏:

#define TOTO()              \
do {                        \
  do_something();           \
  do_another_something();   \
} while (0)
Run Code Online (Sandbox Code Playgroud)

我起初想知道do while (0)这里的目的,但是这个答案向我解释:如果宏只是在一个ifelse没有花括号之后使用,就像这样:

if (something)
    TOTO();
else
    do_something_else();
Run Code Online (Sandbox Code Playgroud)

所以这里没有do while (0)语句,代码将扩展为:

if (something)
    do_something();
    do_another_something();
else
    do_something_else();
Run Code Online (Sandbox Code Playgroud)

这在语法上是错误的,因为else它不再直接跟随if范围.

但是我认为它可以通过在自己的范围内声明宏来实现,而不必do while围绕它,所以我用大括号测试了相同的代码.我的整个代码如下所示:

#include <stdio.h>

#define HELLO_WORLD()       \
{                           \
    printf("hello ");       \
    printf("world!\n");     \
}

int     main(int argc, char** argv)
{
    if (argc == 1)
        HELLO_WORLD();
    else
        fprintf(stderr, "nope\n");
    return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c macros scope curly-braces

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

我收到错误:无法将变量“a”声明为抽象类型“A”

这是我的代码:

#include <iostream>

using namespace std;

class Base
{
    public:
        virtual void Sub1() = 0;
        virtual void Sub2();
        virtual void Sub3();
        void Sub4();
};

class A : public Base
{
    public:
        void Sub2();
        void Sub4();
};

class B : public A
{
    public:
        virtual void Sub1();
        void Sub2();
};

class C : public Base
{
    public:
        virtual void Sub1();
        virtual void Sub4();
};

void Base::Sub2()
{
    cout << "Hello from Base::Sub2()" << endl;
}

void Base::Sub3()
{
    cout << "Hello …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance abstract-class

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

什么可以使std :: map找不到它的一个键?

我有一个std :: map将const char*键与int值相关联:

std::map<const char*, int> myMap;
Run Code Online (Sandbox Code Playgroud)

我用三个键初始化它,然后检查它是否可以找到它:

myMap["zero"] = 0;
myMap["first"] = 1;
myMap["second"] = 2;

if (myMap.at("zero") != 0)
{
    std::cerr << "We have a problem here..." << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

什么都没打印出来.从这里,一切看起来都不错.

但是后来在我的代码中,没有对此地图进行任何更改,我尝试再次找到一个键:

int value = myMap.at("zero");
Run Code Online (Sandbox Code Playgroud)

但该at函数抛出std::out_of_range异常,这意味着它无法找到该元素.myMap.find("zero")认为是一样的,因为它在地图的末尾返回一个迭代器.


但最棘手的部分是关键是真的在地图中,如果在调用at函数之前,我打印地图的内容如下:

for (auto it = myMap.begin(); it != myMap.end(); it++)
{
    std::cout << (*it).first << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出如预期:


第一


怎么可能呢?我不使用任何beta测试库或任何应该不稳定的东西.

c++ dictionary std c++11

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