小编kbe*_*nda的帖子

C++ 14使用capture-specifier在lambda函数内增加一个值

我的任务是编写一个增加值的lambda函数,但我必须使用value = 0 capture-specifier.我正在考虑以下功能:

auto lambda = [value = 0]{return ++value}
Run Code Online (Sandbox Code Playgroud)

调用此函数时,每次都必须给出递增的值.但我知道这个实现是错误的,因为它是通过值传递的.我怎么能用C++ 14做到这一点?

c++ lambda c++14

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

JsonFormat.printer().print() 如何工作?

我有一个非常简单的原型:

message ChargeCardResponse
{
    bool success = 1;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将其解析为 String 时,我从 JsonFormat.printer().print() 得到一个非常奇怪的输出,这取决于成功值。

ChargeCardResponse.Builder builder = ChargeCardResponse.newBuilder();
System.out.println(JsonFormat.printer().print(builder.setSuccess(true).build()));
Run Code Online (Sandbox Code Playgroud)

输出:{“成功”:真}

ChargeCardResponse.Builder builder2 = ChargeCardResponse.newBuilder();
System.out.println(JsonFormat.printer().print(builder2.setSuccess(false).build()));
Run Code Online (Sandbox Code Playgroud)

输出: {}

因此,如果我为具有成功属性的打印机提供 false 值,则无法生成 JSON 格式。我究竟做错了什么?有谁能证实一下吗?

java json protocol-buffers

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

如何向 ZAP 日志条目添加新列/字段?

我有以下日志记录结构:

[STDERR] 2018-07-09 11:06:16.003    INFO    some_pkg/main.go:232    Logging message 1   {"pid": 8842, "process": "some_process"}
[STDERR] 2018-07-09 11:06:16.006    DEBUG   some_pkg/main.go:291    Logging message 2   {"pid": 8842, "process": "other_process"}
[STDERR] 2018-07-09 11:06:16.009    INFO    some_pkg/main.go:345    Logging message 3   {"pid": 8842, "process": "some_process"}
Run Code Online (Sandbox Code Playgroud)

您可以看到此日志记录片段中有五种类型的信息。有日期/时间、日志级别、发生次数、消息和 JSON 字段([STDERR] 字段除外)。这意味着我的日志记录结构中有五列。我想添加一个带有关键pid进程的新列(来自 JSON)。我应该如何使用 ZAP 编码器和配置来做到这一点?我在 ZAP 文档中没有找到解决方案。

我使用以下代码向日志记录添加字段:

logger = logger.With(zap.Field{Key: "pid", Type: zapcore.Int64Type, Integer: int64(os.Getpid())})

但是 pid 字段的值转到 JSON(您可以在上面看到的内容),我希望在新列中看到它。ZAP 中有一种简单的方法可以做到这一点?

我想要的结构如下与前面的例子:

[STDERR] 2018-07-09 11:06:16.003    INFO    some_pkg/main.go:232    Logging message 1   8842    some_process
[STDERR] 2018-07-09 11:06:16.006    DEBUG   some_pkg/main.go:291 …
Run Code Online (Sandbox Code Playgroud)

logging go go-zap

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

为什么searchResult.TotalHits()与len(searchResult.Hits.Hits)不同?

我使用golang elastic 5 API在ElasticSearch中运行查询.我使用searchResult.TotalHits()检查命中数,它给了我一个大数(超过100),但当我尝试迭代命中它只给出10个实体.此外,当我检查len(searchResult.Hits.Hits)变量时,我得到10.

当我选择少于10个实体时,我尝试了不同的查询,并且效果很好.

query = elastic.NewBoolQuery()
ctx := context.Background()

query = query.Must(elastic.NewTermQuery("key0", "term"),
    elastic.NewWildcardQuery("key1", "*term2*"),
    elastic.NewWildcardQuery("key3", "*.*"),
    elastic.NewRangeQuery("timestamp").From(fromTime).To(toTime),
)
searchResult, err = client.Search().Index("index").
    Query(query).Pretty(true).Do(ctx)
fmt.Printf("TotalHits(): %v", searchResult.TotalHits()) //It gives me 482
fmt.Printf("length of the hits array: %v", len(searchResult.Hits.Hits)) //It gives 10
for _, hit := range searchResult.Hits.Hits {
    var tweet Tweet
    _ = json.Unmarshal(*hit.Source, &tweet)
            fmt.Printf("entity: %s", tweet) //It prints 10 entity
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?SearchResult中是否有批次或可能是什么解决方案?

go elasticsearch

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

标签 统计

go ×2

c++ ×1

c++14 ×1

elasticsearch ×1

go-zap ×1

java ×1

json ×1

lambda ×1

logging ×1

protocol-buffers ×1