小编Iai*_*can的帖子

在 Windows 上正常终止进程

我正在用 Go 编写服务器应用程序,并使用包装器将其作为 Windows 服务运行。

需要优雅地关闭服务器(以正确关闭资源和连接),而在 UNIX 中,它将通过 SIGTERM 信号进行处理。没什么大不了。

尽管在 Windows 上,事情似乎非常不同。我在本指南中看到信号实际上存在于 windows (?) 上,并且定义了 SIGTERM,尽管其他页面表明它们没有,或者使用其他机制,如 WM_CLOSE。

告诉无头进程优雅终止的最佳方法是什么?在 Go 中应该如何实现?

服务器设计为多平台的,因此最好采用最标准的方式。

windows service process go

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

无法找到newEventHub函数

我是hyperledger面料的新手.我已经下载了面料v1.2.0,我尝试从fabric-sample文件夹运行fabcar示例.我对链码的查询进展顺利,但是当我试图调用链码时,我从cmd得到了以下错误.

这是我对链码的要求

var request = {
    //targets: let default to the peer assigned to the client
    chaincodeId: 'fabcar',
    fcn: 'changeCarOwner',
    args: ['CAR4', 'Dave'],
    chainId: 'mychannel',
    txId: tx_id
};
Run Code Online (Sandbox Code Playgroud)

错误:

无法成功调用:: TypeError:fabric_client.newEventHub不是函数

当我试图在index.t.ds中找到newEventHub时,我找不到该函数.任何人都可以帮助我.谢谢你提前.

node.js hyperledger-fabric

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

返回与接口一起使用的结构的 Go 函数类型

我在一个包中有一个结构体,它上面有耗时的方法,而且通过它的工厂函数构造也很耗时。因此,在依赖于这个其他结构的包中,我希望能够在创建后使用假工厂函数和假结构对其进行测试。由于结构是通过工厂函数构造的,我想伪造工厂函数并在测试期间将替代工厂函数传递到我的结构中。

昂贵的包的一个例子是:

package expensive

import "fmt"

type myStruct struct{}

func (m *myStruct) DoSomething() {
    fmt.Println("In Do something")
}

func (m *myStruct) DoSomethingElse() {
    fmt.Println("In do something else")
}

// CreateInstance is expensive to call
func CreateInstance() *myStruct {
    return &myStruct{}
}
Run Code Online (Sandbox Code Playgroud)

我使用它的主包看起来像这样:

package main

import "play/expensive"

func main() {
    thing := structToConstruct{expensive.CreateInstance}
    thing.performAction()
}

type myInterface interface {
    DoSomething()
}

type structToConstruct struct {
    factoryFunction func() myInterface
}

func (s *structToConstruct) performAction() {
    instance := s.factoryFunction()
    instance.DoSomething()
}
Run Code Online (Sandbox Code Playgroud)

但是,此代码抱怨错误:

.\main.go:6: …

function go

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

在JQ中删除嵌套对象中的字段

我有一个包含summary字段和其他字段的 JSON 行文件。我想使用 JQ 删除所有汇总字段。这是我的输入:

{"object1": {"summary":"Some summary I want removing", "keepMe":"please"}}
{"object2": {"summary":"Delete me too!", "keepMe":"pretty please"}}
Run Code Online (Sandbox Code Playgroud)

这是所需的输出:

{"object1": {"keepMe":"please"}}
{"object2": {"keepMe":"pretty please"}}
Run Code Online (Sandbox Code Playgroud)

json key jq

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

按 HTTP 状态分组时不返回任何数据的错误率

我在 Grafana 中有一个图表,使用 Prometheus 数据源来显示 API 的错误率。这对于这个查询工作得很好:

sum(rate(va_request_response_code{endpoint="api", statusCode!="200"}[5m])) by (exported_endpoint, statusCode)
Run Code Online (Sandbox Code Playgroud)

我从 API 获取非 200 响应代码的比率,然后在运行 3 个 API 实例时将这些比率相加。然后,我按照exported_endpoint(用户请求的实际路径)和statusCode返回的确切 HTTP 状态代码对它们进行分组。

虽然这作为原始数字有点用处,但并没有那么有用。每秒 100 个请求中出现 100 个错误是非常糟糕的,而每秒 1,000,000 个请求中出现 100 个错误则不是什么问题。因此,我想除以请求总数,但我很挣扎。如果我做:

(sum(rate(va_request_response_code{endpoint="api", statusCode!="200"}[5m])) by (exported_endpoint, statusCode))/(sum(rate(va_request_response_code{endpoint="api"}[5m])) by (exported_endpoint))
Run Code Online (Sandbox Code Playgroud)

然后它只是显示No data points这是有意义的,因为在第一种情况下它是按被除数中的 statusCode 分组而不是除数中的,因此它必须意味着它正在尝试在除法之前找到匹配项。相反,这样做确实有效:

(sum(rate(va_request_response_code{endpoint="api", statusCode!="200"}[5m])) by (exported_endpoint))/(sum(rate(va_request_response_code{endpoint="api"}[5m])) by (exported_endpoint))
Run Code Online (Sandbox Code Playgroud)

但随后我失去了我想要的按状态代码分组。理想情况下,我想知道 x% 的请求返回404,y% 返回500。这可能吗?

grafana prometheus

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

标签 统计

go ×2

function ×1

grafana ×1

hyperledger-fabric ×1

jq ×1

json ×1

key ×1

node.js ×1

process ×1

prometheus ×1

service ×1

windows ×1