小编use*_*860的帖子

我应该定义默认构造函数吗?

所以我们正在进行一些同行评审,这种轻微的分歧上升了,

是否应该定义默认构造函数,即使它什么也不做,或者我们应该让编译器定义它?

到目前为止,没有任何一方能够提出任何重大优势或劣势.每种风格的优点和缺点是什么,哪一种被认为是"清洁"?

c++ coding-style

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

与库一起使用的不同记录器

我的问题涉及库类的记录(库中使用的类),我们正在使用log4cxx但是log4j库实现了相同的概念.

假设我有一个包含多个实体A,B和C的进程.每个实体都使用许多不同的类和函数,在代码中明确分开.

A,B和C使用许多库类,函数,对象,资源,有时甚至是全局变量(遗留代码,我无能为力......) - 让我们称之为全部 foo

记录A,B和C结果是性能问题,当我们将日志级别设置为调试时,日志会被激活.查看我们的系统后,我们得出了以下结论:

  1. 我们希望能够一次只更改其中一个类的调试级别(或者所有这些类,使用root)
  2. 当所有类型的foo打印记录时,我们需要查看哪个实体称为A,B或C.
  3. 因为有很多foo我们希望能够分别为每个更改调试级别foo
  4. A foo应该被视为一个公共库,它不能直接依赖于A,B或C.
  5. A,B和C可能使用相同的实例foo(例如,我们的资源处理类的相同实例使用A,B和C),在日志中我们希望看到使用哪个类foo.
  6. A可以使用B(或C),但我们不必在日志中看到它...

这是我们到目前为止提出的 -

A,B和C将有单独的记录器.全局变量(保存在具有所有日志记录助手和包装器的不同库中)将始终保持当前日志报告.每次实体开始处理它的逻辑时,它都会将全局变量设置为正确的记录器.当foo想要向日志报告时,它通过全局变量报告并将其名称(和上下文)添加到日志消息中.

问题是,感觉必须有一些事情已经做到这一点,解决方案不会感觉干净,持有像这样的全局变量......

我们在这里做错了吗?有更好的解决方案吗?

c++ java logging log4j log4cxx

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

移动未调用的构造函数

在尝试编写有关移动构造函数的示例后,我遇到了以下代码:

#include <utility>
#include <iostream>

using namespace std;

class Data
{
public:
    Data()
    : x (3)
    {
        cout << "Data()" << endl;
    }
    Data(Data&&)
    : x(4)
    {
        cout << "Data(&&)" << endl;
    }

int x;
};

int main()
{
    Data a;
    Data b (std::move(a));
    cout << b.x << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么移动构造函数不在这里调用?程序打印:

数据()

3

我发现甚至更奇怪的是,通过添加一个复制构造函数,突然,它确实调用了移动构造函数...

    Data(const Data&)
    : x(2)
    {
        cout << "Data(copy)" << endl;
    }
Run Code Online (Sandbox Code Playgroud)

现在它将打印出来

数据(&&)

4

PS我正在使用gcc 4.4.5

c++ move copy-constructor move-semantics c++11

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

配置 kubernetes 重启策略

根据文档-

由 Kubelet 重启的失败容器以指数退避延迟重启,延迟是同步频率 0、1x、2x、4x、8x 的倍数……上限为 5 分钟,并在成功执行 10 分钟后重置.

有没有办法定义自定义的 RestartPolicy?我想尽可能地减少回退延迟并降低指数行为。

据我所知,你连 RestartPoilcy 都配置不了,更别说新建一个了……

kubernetes kubernetes-health-check

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

确保调用移动构造函数

我有以下简化的代码示例:

#include <algorithm>
#include <iostream>

using namespace std;

class ShouldBeMovedWhenSwapped
{
public:
//  ShouldBeMovedWhenSwapped() = default;
//  ShouldBeMovedWhenSwapped(ShouldBeMovedWhenSwapped&&) = default;
//  ShouldBeMovedWhenSwapped(const ShouldBeMovedWhenSwapped&) = default;
//  ShouldBeMovedWhenSwapped& operator=(ShouldBeMovedWhenSwapped&&) = default;

    struct MoveTester
    {
        MoveTester() {}
        MoveTester(const MoveTester&) { cout << "tester copied " << endl; }
        MoveTester(MoveTester&&) { cout << "tester moved " << endl; }
        MoveTester& operator=(MoveTester) { cout << "tester emplaced" << endl; return *this; } // must be declared if move declared
    };

    MoveTester tester;
};

int …
Run Code Online (Sandbox Code Playgroud)

c++ move move-semantics c++11

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

当对象在内存中移动时,指针如何保持有效?

想象一下CI在堆上分配两个结构.其中一个结构有一个字段,其中包含指向另一个结构的指针.

据我所知,堆中的数据可能会移动,因此事物的地址会发生变化.例如,可能会发生堆上的碎片整理,将第二个结构移动到堆中的其他位置.

这有助于理解我所说的内容 https://en.m.wikibooks.org/wiki/Memory_Management/Memory_Compacting

这个结构的重点现在是错误的(即保持错误的内存地址).

我并不是说这个问题是C的特定问题,而是更一般的问题:在任何时候,平台都可能决定改变一切.指针如何保持有效?

c memory pointers

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

在比较字符串时忽略希伯来元音

晚上好,我希望你能帮助我解决这个问题,因为我正在努力寻找解决方案.

我有一个单词的提供者,例如,他给了我发音的希伯来语单词 -

Vowelled - בַּיִתnot vowelled - בית

Vowelled - הַבַּיְתָהnot vowelled - הביתה

与我的提供者不同,我的用户通常不能输入希伯来语元音(我也不希望他这样做).用户故事是用户在提供的单词中搜索单词.问题是在元音和非元音词之间的比较.由于每个都由内存中的不同字节数组表示,因此equals方法返回false.

我试着研究UTF-8如何处理希伯来元音,看起来它只是普通字符.

我确实想向用户呈现元音,所以我想将字符串保持在内存中,但是在比较时我想忽略它们.有没有简单的方法来解决这个问题?

java encoding hebrew

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

Kibana连接两个独立的事件

我已将ELK配置为脱机收集数据,日志文件如下所示:

Info 2015-08-15 09:33:37,522 User 3 connected
Info 2015-08-15 10:03:57,592 User 99 connected

Info 2015-08-15 11:42:37,522 User 99 disconnected 
Info 2015-08-15 11:49:12,108 User 3 disconnected
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是时间线上的平均连接时间.

我无法向消息添加更多信息,特别是我无法在断开连接消息中添加连接时间.

elasticsearch logstash kibana

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

用sed代替n表达式

我需要用以下类似的行替换由空格分隔的第n个表达式:

%ABC 999 123 "-234" AAA
%999 123 "ABC" 456 BBB
Run Code Online (Sandbox Code Playgroud)

每个表达式可以包含的内容没有规则,只有它由空格分隔.我需要用给定的字符串替换n'(为了示例,说第4个表达式),例如:(将第4个表达式更改为666)

%ABC 999 123 "-234" AAA  ----> %ABC 999 123 666 AAA
%999 123 "ABC" 456 BBB ------> %999 123 "ABC" 666 BBB
Run Code Online (Sandbox Code Playgroud)

我正在使用linux,我无法做到这一点..我尝试grepping for%(.*){5}和其他尝试,但我无法让它运行...

任何帮助,将不胜感激!

regex bash sed

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

scanf 有限字符集

我正在尝试读取以下格式的输入 [AZ],123 并存储结果。例如 'A,123' 或 'B, 456'(单个大写字母,后跟冒号,后跟整数,允许空格)

我通过多次单独调用 scanf 来实现这一点。但我正在尝试使用对 scanf 的一次调用来完成此操作。

我不明白为什么以下不起作用:

char temp[23];
int a = 0;
int result = scanf("%1[A-Z]s , %d", temp, &a);
printf("%d = %d, %s\n", result, a, temp);
Run Code Online (Sandbox Code Playgroud)

此代码返回 1 并且变量 a 从未设置。我正在编译使用gcc -ansi -pedantic

c scanf

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

从向量中移除最后的元素直到条件

我遇到了一个问题,我需要删除向量的最后一个元素,直到满足某个条件为止(为了这个例子,让它成为元素不为零)

我写了这段代码,它就是诀窍 -

auto next = vec.rbegin();
while (next != vec.rend())
{
    auto current = next++;
    if (*current == 0)
        vec.pop_back();
    else
        break;
}
Run Code Online (Sandbox Code Playgroud)

但我宁愿找到一个我可以使用的stl算法(我可以使用find_if然后擦除,但我想循环一次通过我删除的元素...)

另外,我担心我可能会在这里调用一些UB,我应该担心吗?

c++ stl vector

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