小编JDi*_*teo的帖子

如何检查字符串是否包含terraform插值中的子字符串?

如何检查terraform字符串是否包含另一个字符串?

例如,我想特别在名称中使用"tmp"处理terraform工作区(例如,允许在没有快照的情况下删除rds实例),所以像这样:

locals
{
  is_tmp = "${"tmp" in terraform.workspace}"
}
Run Code Online (Sandbox Code Playgroud)

据我所知,substr插值函数没有实现这一点.

terraform

10
推荐指数
4
解决办法
5065
查看次数

如何使Visual Studio保持4GB虚拟地址空间

Visual Studio devenv.exe进程是32位(即使在64位操作系统上运行),因此它不能使用超过4GB的虚拟内存.

不幸的是,当我使用Visual Studio调试我的C++应用程序时,由于这个4GB的限制,我经常会耗尽内存.例如,使用VMMap,下面显示了在几个小时内导致崩溃的典型Visual Studio使用情况的进展情况.

如何让Visual Studio使用更少的内存,以免浪费时间崩溃?

Visual Studio是否通常使用超过3.5 GB的虚拟地址空间?

我使用的是Visual Studio 2012,但我认为这个问题跨越了不同的VS版本,因为Visual Studio 2015仍然没有64位版本.

(请注意,VMMap将"Free"报告为地址空间中的剩余内存,32位进程最多为4GB,Windows上为64位进程则为8TB.)

在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述


我已经尝试过的事情:

  • 从安全模式开始
  • 删除所有插件和扩展,以便在工具>加载项管理器或工具>扩展中不显示任何内容(https://github.com/tsasioglu/Total-Uninstaller对此有帮助)
  • 删除我的.suo/.sdf文件
  • 删除我的AppData/*/Microsoft/VisualStudio文件夹
  • 使用漏斗并过滤除3个项目之外的所有项目
  • 删除了所有"符号文件(.pdb)位置"选项并选择"自动加载符号:""仅指定模块"
  • 选择"启用我的代码"进行调试
  • 禁用智能感知(工具 - >选项 - >文本编辑器 - > C/C++ - >高级 - >禁用智能感知)

c++ virtual-memory visual-studio

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

C++简洁地检查STL容器中的项目(例如向量)

bool xInItems = std::find(items.begin(), items.end(), x) != items.end();
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来检查x是否在项目中?这似乎不必要地冗长(重复项目三次),这使得代码的意图有点难以阅读.

例如,是否有类似以下内容:

bool xInItems = boost::contains(items, x);
Run Code Online (Sandbox Code Playgroud)

如果不存在任何更简洁的boost/stl算法来检查集合是否包含项目,那么使用辅助函数启用contains(items, x)是否被认为是好的还是坏的做法?

我使用错误的STL容器吗?即使是std :: set也会导致bool xInItems = items.find(x) != items.end();看起来仍然冗长.我是否以错误的方式思考这个问题?

c++ boost stl

6
推荐指数
2
解决办法
1258
查看次数

Python优化的大多数余弦相似向量

我有大约 30,000 个向量,每个向量有大约 300 个元素。

对于另一个向量(具有相同数量的元素),我如何有效地找到最(余弦)相似的向量?

以下是使用 python 循环的一种实现:

from time import time
import numpy as np

vectors = np.load("np_array_of_about_30000_vectors.npy")
target = np.load("single_vector.npy")
print vectors.shape, vectors.dtype  # (35196, 312) float3
print target.shape, target.dtype  # (312,) float32

start_time = time()
for i, candidate in enumerate(vectors):
    similarity = np.dot(candidate, target)/(np.linalg.norm(candidate)*np.linalg.norm(target))
    if similarity > max_similarity: 
        max_similarity = similarity 
        max_index = i
print "done with loop in %s seconds" % (time() - start_time)  # 0.466356039047 seconds
print "Most similar vector to target is index …
Run Code Online (Sandbox Code Playgroud)

python optimization numpy

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

如何在C#应用程序中调用C++中的C#函数,以便C++堆栈正确解开?

是否可以从C#应用程序中的C++调用调用抛出C#函数,以便C++堆栈正确解开?有没有这方面的文件?

例如,请考虑这个C#代码:

using System;

public class Test
{
    public static void CalledFromCpp()
    {
        throw new Exception("Is this safe? Is C++ stack unwound properly?");
    }

    public static void Main()
    {
        try {
            CppFunc(CalledFromCpp);
        }
        catch(Exception e)
        {
            Console.Writeline("Exception e: {0}", e);
        }
    }

    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
    delegate void CsFuncToBeCalledFromCpp();

    [DllImport("CppApp", CallingConvention = CallingConvention.Cdecl)]
    private static extern void
    CppFunc(CsFuncToBeCalledFromCpp callback);
}
Run Code Online (Sandbox Code Playgroud)

与此C++代码一起:

void CppFunc(void (*handler))
{
   SomeResourceWrappingClass releasesResourceOnDestruction();
   handler();
}
Run Code Online (Sandbox Code Playgroud)

我试了一下,C#异常被成功捕获,但releasesResourceOnDestruction没有调用它的析构函数.这似乎表明C++堆栈没有正确解开 - 是否有可能在这里正确展开?有关于此行为的任何文档吗?

对于上下文:如果可能的话,我希望有时会从C++代码中触发C#异常,这样我就不需要从C#到C++的每次调用都需要事后检查一下,看看是否需要抛出C#异常.

.net c# c++ interop exception-handling

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

C++类是否可以在头文件中包含内联初始化的静态const std :: array?

这就是我所拥有的:

struct Foo
{
   static std::array<double, 4> acgt_default_background_frequencies() { return {0.281774, 0.222020, 0.228876, 0.267330}; }
};
Run Code Online (Sandbox Code Playgroud)

但我宁愿不使用函数而只是有一个变量,如下所示:

struct Foo
{
   static constexpr std::array<double, 4> acgt_default_background_frequencies = {0.281774, 0.222020, 0.228876, 0.267330};
};
Run Code Online (Sandbox Code Playgroud)

我想要编译,但当我尝试使用 Foo::acgt_default_background_frequencies它时,链接器错误"未定义引用`Foo :: acgt_default_background_frequencies'".

我正在尝试做什么?我认为我的标题的读者更清楚,如果我将值内联为const而不是将其隐藏在.cpp文件中并且具有常量而不是函数也看起来更清晰.constexpr是不是允许这样的东西?如果不可能,为什么不呢?

c++ c++11

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

HTML/CSS 如何临时突出显示页面的一部分

例如,如果您转到此链接,它会暂时闪烁答案。

这是如何实施的?

这是一些 bootstrap/css 的东西吗?

我尝试谷歌搜索,但我不知道这个闪烁的突出显示功能叫什么。

html css

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

如何在Windows上使用std :: system运行带空格的可执行文件

如何在不使用C++ 11的情况下在Windows上使用std :: system运行带空格的可执行文件?

我尝试过看似明显的带有空格的路径周围的引号,但是在弹出运行命令的控制台窗口中,我得到一条消息,指示完整的可执行路径正在空格上分割.例如,我尝试过以下方法:

#include <cstdlib>

int main()
{
    int no_spaces_forward_rc = std::system("c:/IronPython2.7/ipy -c \"print 'no_spaces_forward'\"");
    // no_spaces_forward_rc is 0 and "no_spaces_forward" is written to console window

    int spaces_forward_rc    = std::system("\"c:/Program Files (x86)/IronPython 2.7/ipy\" -c \"print 'spaces_forward'\"");
    // spaces_forward_rc is 1, and "'c:/Program' is not recognized as an internal or external command, operable program or batch file." is written to console window

    int no_spaces_backward_rc = std::system("c:\\IronPython2.7\\ipy -c \"print 'no_spaces_backward'\"");
    // no_spaces_backward_rc is 0 and "no_spaces_backward" is written …
Run Code Online (Sandbox Code Playgroud)

c++ windows path

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

两个不同的继承指针地址如何相等?

在阅读C++之后:比较基类和派生类的指针,我认为这不会起作用.

当我执行此操作时,打印的地址c_as_b&c不同,所以为什么这个打印"似乎可以安全地比较同一层次中的指针"?除了可能导致真实的印刷地址之外,还有什么比较?

你能给出一个类似的小例子,==结果是假的吗?

#include <iostream>
using namespace std;

struct A { std::string s; };
struct B { int i; };
struct C : A, B { double d; };

int main() {
    C c;
    B* c_as_b = &c;
    A* c_as_a = &c;
    cout << "c_as_a: " << c_as_a << endl
         << "c_as_b: " << c_as_b << endl
         << "&c:     " << &c << endl;
    cout << (c_as_b == &c ? "seems safe …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance pointers

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

防止重复芹菜伐木

如何在这样的应用程序中防止重复的芹菜日志?

# test.py
from celery import Celery

import logging

app = Celery('tasks', broker='redis://localhost:6379/0')
app.logger = logging.getLogger("new_logger")
file_handler = logging.handlers.RotatingFileHandler("app.log", maxBytes=1024*1024, backupCount=1)
file_handler.setFormatter(logging.Formatter('custom_format %(message)s'))
app.logger.addHandler(file_handler)

@app.task
def foo(x, y):
    app.logger.info("log info from foo")
Run Code Online (Sandbox Code Playgroud)

我启动应用程序: celery -A test worker --loglevel=info --logfile celery.log

然后我让foo运行 python -c "from test import foo; print foo.delay(4, 4)"

这导致"和foo中的日志信息"显示在celery.logapp.log.

这是app.log内容:

custom_format log info from foo
Run Code Online (Sandbox Code Playgroud)

这里是celery.log内容:

[2017-07-26 21:17:24,962: INFO/MainProcess] Connected to redis://localhost:6379/0
[2017-07-26 21:17:24,967: INFO/MainProcess] mingle: searching for neighbors
[2017-07-26 21:17:25,979: INFO/MainProcess] mingle: all …
Run Code Online (Sandbox Code Playgroud)

python logging celery

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