草庐IT

补丁程序

全部标签

debugging - gdb 如何在 go 程序中打印 var 的地址?

我成功安装了gdb8.0.1并使其在macosx中运行。调试此程序时,我没有看到key的地址。packagemainfuncmain(){m:=map[string]int{"abc":123,}key:=[]byte("abc")x,ok:=m[string(key)]println(x,ok)}这是我用gdb所做的:gobuild-gcflags"-N"test_append.gogdbtest_append(gdb)b9Breakpoint1at0x104d4b4:file/Users/jiamo/go/src/test/test_append.go,line9.(gdb)cTh

http - go 程序在执行数小时后系统地因 semacquire 问题崩溃

这是我的代码的摘录:funcsendTo(urlstring,someDataPoints[]DataPoint){ro:=&grequests.RequestOptions{JSON:someDataPoints,InsecureSkipVerify:false}grequests.Post(url,ro)return}funcforward(someDataPoints[]DataPoint)int{endpoint:="https://example.org"gosendTo(endpoint,someDataPoints)}forward函数每秒被调用大约100次。该程序运行了

go - 如何加载和缓存 100 页模板,并呈现正确的模板并在处理程序中返回

我有100个模板需要在Web应用程序中使用。有没有一种方法可以将它们解析一次并重新使用它们,而不是为每个请求加载它们?现在假设模板不接受模型,它们只是静态模板(以使其更简单)。模板存储在下面的文件夹结构中,因此根据主题变量我将知道从哪里获取模板。/views/{theme}/index.tmpl到目前为止,我的处理程序是这样的:funcRenderPage(whttp.ResponseWriter,r*http.Request){vartheme:=//settemplatethemebasedonsomecondition}我如何预加载所有模板,然后以某种方式获取正确的模板并将其呈现

go - 如何在 echo 中使用自定义上下文正确测试处理程序?

我使用带有自定义上下文的echo框架:ApiContextstruct{echo.ContextUserIDint64UserRolestring}我的中间件:e.Use(func(hecho.HandlerFunc)echo.HandlerFunc{returnfunc(cecho.Context)error{cc:=&common.ApiContext{c,0,""}returnh(cc)}})我的处理程序:func(app*App)listEntity(cecho.Context)error{ctx:=c.(*ApiContext)//error!....}我的测试:funcTe

windows - 我可以在构建 Go 程序的同时静态链接一些 DLL 吗?

如果您在慢速硬盘上运行带有WindowsDLL依赖项的go应用程序,有时会发生Windows加载这些dll的时间过长。如果您将go应用程序放入Windows服务中,您会遇到严重的问题。特别是在慢速硬盘上,这会导致windows服务超时,服务无法启动。是否有可能以某种方式将这些DLL静态链接到go应用程序?加载DLL后一切正常,但需要两次尝试才能使服务运行。但是在第一次失败后,Windows不会再尝试启动该服务,所以我只好自己手动启动该服务。有人有想法吗? 最佳答案 简短的回答是“否”:“DLL”代表“动态链接库”,静态链接DLL是不

docker - 无法在docker中构建golang应用程序

我已经使用示例制作了一个golang应用程序,但是当我设置docker来构建和运行它时,它无法构建并给出错误ERROR:forgoserverCannotstartservicegoserver:b'OCIruntimecreatefailed:container_linux.go:348:startingcontainerprocesscaused"exec:\\"./app\\":stat./app:nosuchfileordirectory":unknown'我的Dockerfile是FROMgolang:1.8WORKDIR/usr/src/appCOPY..RUNCGO_EN

go - 从容器内运行的应用程序使用 Gmail API

我想知道如何从(GKE的)容器内运行的应用程序使用GmailAPI?对于本地开发,我可以运行示例https://developers.google.com/gmail/api/quickstart/go获取代码然后程序保存token,成功发送电子邮件(我已经更改了范围,该示例只有只读)但是我没有运行在K8S中的容器的交互式终端,所以我将凭证和token设置为容器内运行的进程的envvar(我的程序使用了envvar,本地测试发送了邮件成功),它似乎无法联系GmailAPI。确切的错误是:发布https://www.googleapis.com/gmail/v1/users/me/mes

go - 当只读来自 HTTP 处理程序的共享结构时如何防止竞争条件

我需要从struct更新值并返回(只读)而不是从HTTP处理程序写入,以避免出现竞争条件我正在使用sync.Mutex这是一个基本示例:http://play.golang.org/p/21IimsdKP6epackagemainimport("encoding/json""log""net/http""sync""time")typeCounterstruct{countuintflagboolmusync.Mutexquitchanstruct{}timetime.Timewgsync.WaitGroup}func(c*Counter)Start(){c.count=1c.time

go - 将自定义 kubernetes 调度程序部署为 pod

如何将自定义kubernetes调度程序部署为使用golang语言编写的pod? 最佳答案 我相信这是有据可查的heremy-scheduler.yaml类似这样的内容:apiVersion:v1kind:ServiceAccountmetadata:name:my-schedulernamespace:kube-system---kind:ClusterRoleBindingapiVersion:rbac.authorization.k8s.io/v1metadata:name:my-scheduler-as-kube-sched

go - 从 golang 应用程序发送字符串时出现意外的 StrComp 结果

在我下面的代码中,我设置了一个ReadString,它读取用户输入并在exec.Command中传递它。这很好用,但是当我尝试将字符串与vbscript中的硬编码字符串进行比较时(在本例中,我将其与“hello”进行比较),即使用户输入也是“hello”,它也总是失败.如果我只是像这样通过命令行运行vbscript...cscript.exescript.vbshello...然后StrComp会按预期工作,所以我怀疑这是数据类型问题,或者golang应用程序中传递了一些额外的字符。这是ma​​in.go:packagemainimport("fmt""os/exec""bufio""