草庐IT

信号分配

全部标签

go - 如何在 golang 上获取 gocmq 中断信号?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭4年前。Improvethisquestion**我使用goczmq,但是在Windwos上运行服务器时我没有捕捉到系统中断。为什么?**signal_channel:=make(chanos.Signal)signal.Notify(signal_channel)gogoczmq....

go - 如何分配内存以映射指向golang中的 slice

有没有办法分配映射的内存,最多有Nmax个键,指向最大长度Nmax的slice?我目前只是通过make(map[int][]int,Nmax)指定键的最大数量,但我不确定如何告诉Go每个slice将是最大长度Nmax因为我不知道key是先验的。我基本上有一堆人口为整数的网站。我使用map来跟踪有多少站点具有给定的人口N。我的程序中的瓶颈似乎是runtime.memmove,我猜这是由于不断调整map指向的slice的大小。 最佳答案 鉴于您对问题的描述确实相当模糊,我将首先说明我将如何“管理”map。为简单起见,我将把所有逻辑包装在

pointers - 分配嵌入的 Struct 类型值

假设我有以下结构:typeXstruct{NamestringAgeintEmailstring}然后我有2个其他结构(子类):typeAstruct{*X}typeBstruct{*X}然后在我的主要代码中我有:a:=A{&X{"John",34,"jd@email.com"}}b:=B{&X{"Greg",22,"gd@email.com"}}fmt.Println(a.Name)//Johnfmt.Println(b.Name)//Greg是否有一种简单的方法来分配a=b以便a.Name返回Greg以及所有其他属性(我不想单独分配它们,因为有一堆属性)注意:我必须这样做,因为我有

go - 在 Go 中重新分配方法

假设我有以下内容:packagemainimport"fmt"typeI1interface{m1()}funcf1(){fmt.Println("dosomething")}funcmain(){varobjI1obj.m1=f1obj.m1()}这会产生错误./empty.go:16:cannotassigntoobj.m1为什么我不能分配给“方法字段”?在C中,我可以传递函数指针。Go中的等价物是什么? 最佳答案 你不能把一个函数赋值给一个接口(interface),你可以为一个结构赋值,例如:typeS1struct{m1f

go - 我如何向 channel 发送者发出信号以退出 golang?

我在Go中使用channel来处理各种数据管道。代码看起来像这样:typeChannelsstruct{inputschanstringerrcchanerrorquitchanstruct{}}func(c*Channels)doSomethingWithInput(){deferclose(c.quit)deferclose(c.errc)forinput:=rangep.inputs{_,err:=doSomethingThatSometimesErrors(input)iferr!=nil{c.errc这似乎是一种在channel处理器之间传递退出信号的合理方式,并且基于thi

zlib压缩数据时的内存分配?

开始:假设有10个并行运行的线程来压缩100MB的数据。对于要压缩100MB数据的每个线程。我正在使用zlib压缩来压缩数据。假设一个进程花费了将近2秒的时间来压缩100MB的数据。那么,如果所有线程并行运行以压缩数据,会发生什么情况。而且我还需要澄清每个线程的内存分配。案例1:有1GBRAM内存,现在10个线程并行运行开始压缩意味着,是否会占用所有RAM内存进行压缩?10Threads*100MB=1000(Approx) 最佳答案 zlib本身需要相对少量的内存,每个线程最多256kb。如果您将输入和输出保存在内存中,这将由您用

go - 了解命名返回类型的内存分配

在下面的代码示例中,我可以假设我不需要分配返回值吗?编译器是否总是分配任何函数的命名返回值?packagemainimport"fmt"typePointstruct{X,Yint}funcMakePoint(x,yint)(ptPoint){pt.X=xpt.Y=yreturn}funcmain(){fmt.Printf("%v\n",MakePoint(1,2))}另外,为什么我需要在函数末尾添加return语句?这是编译器的错误吗?如果我决定返回一个指针:funcMakePoint(x,yint)(pt*Point){代码可以编译,但出现运行时错误!为什么编译器让我相信不需要使用

pointers - Golang : help understanding pointers, 分配和意外行为

所以我带着更多初学者的问题回来了,这些问题我似乎无法全神贯注。我正在试验以下代码。funcmain(){start:=time.Now()varpowers[]*big.Intfori:=1;i我的意图是按以下方式将Sub()的结果分配给diffdiff.Sub(powers[i+1],v)然而,这导致seqDiffs的值为1995(正确的最后一个值)一遍又一遍地重复。我知道这很可能是因为seqDiffs只是指向相同内存地址的指针列表,但我不明白的是为什么下面的工作正常v.Sub(powers[i+1],v)seqDiffs=append(seqDiffs,v)这导致seqDiffs成

go - golang 中的 smtp 问题( panic ,信号 SIGSEGV : segmentation violation)

我有一个小应用程序可以验证邮件服务器上是否存在电子邮件。我知道我的实现不会给出100%的结果,但顺其自然吧。所以,我得到了获取电子邮件slice并检查该slice中的每封电子邮件的函数:funcCheckMails(mails[]string)[]string{varexistingMails[]stringfmt.Printf("!!!!!!!!!!!!!!STARTING!!!!!!!!!!!!%s\n\n\n",mails[1])fori:=0;i下一步-我的函数从字面上检查电子邮件是否存在(顺便说一句,这个函数来自小型库github.com/badoux/checkmail但如

Golang CircleCI 2.0 测试失败,信号为 : killed

我正在迁移到circleci2.0,在成功构建后执行测试时,它们会随机失败并出现以下错误消息/usr/local/go/pkg/tool/linux_amd64/link:signal:killed/usr/local/go/pkg/tool/linux_amd64/link:flushing$WORK/b462/payment_step_svc.test:write$WORK/b462/svc.test:cannotallocatememory我使用了以下配置jobs:build:docker:-image:circleci/golang:latest-image:rabbitmq: