草庐IT

无代码开发

全部标签

timer - 如何从 Web 服务器重启(或代码刷新/升级)中恢复 Go 计时器?

例如,考虑一个Web服务,用户可以在其中发出API请求以在特定的预定时间启动任务。任务定义和计划时间保存在数据库中。我想出的第一种方法是启动一个Go计时器并等待计时器在Goroutine中到期(不阻止请求)。这个goroutine在时间到期后,还会触发另一个API请求以开始执行任务。现在重新部署此服务时会出现问题。对于零停机部署,我使用Einhorn与goji.代码重新加载后,显然定时器goroutine和timer-expiration-handlergoroutine都死了。代码重新加载后有什么方法可以恢复Go定时器吗?我正在努力解决的另一个问题是允许用户中断计时器(一旦启动)。G

go - golang如何构建lib来保护源代码?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion到现在为止,我找不到任何方法来将包构建为静态库。因为在我的下一个项目中我真的希望一些代码受到保护,所以我认为我可以针对该问题构建一个静态库,其他golang应用程序可以通过将该库放入pkg文件夹来轻松链接该库。但是一些测试表明我这行不通。所以我真的很想知道golang是否不支持我的要求。如果是这样,谁能告诉我为什么...T_T

vim - 开发 Golang 命令行的工作流程

我想要构建我的第一个Go命令行应用程序。我感觉真的很不舒服……做那样的事情时,典型的工作流程会是什么样子?我正在尝试编写一些go然后我在vim中运行gobuild并尝试使用另一个终端选项卡运行该程序,但是gobuild单独没有'似乎无法构建程序并将其安装在我的系统上。我尝试使用-i并且第一次成功了,但之后没有更新它。我敢肯定这很愚蠢,但希望您能为我指明正确的方向。 最佳答案 gobuild&&goinstall成功了! 关于vim-开发Golang命令行的工作流程,我们在StackOve

http - GoLang 服务器上的开发分支,多个 listenAndServes

我正在为我的服务器开发一个分支。这个想法是在两个不同的文件夹中使用同一个git分支的两个克隆,它们或多或少是相同的。第一个文件夹是实时的,第二个是我的开发者。目前,我正在启动live-branchgo项目,稍后将启动developer-branchgo项目。然后,整个网站被镜像到“www.k.com/”和“www.k.com/developer/”。问题是,这行不通。当我启动我的第二个go应用程序时,一切运行正常,但最后一行“http.ListenAndServe”没有捕捉到。据我所知,ListenandServe也不会抛出任何错误。这使我的服务器正常运行,但开发人员/页面抛出404,

go - 这是 goroutine 开销的一个更好的代码

我想让Reader.Read与channel通信并发。所以我做了两种运行方式1:typeReturnReadstruct{ninterrerror}typeReadGoStstruct{Returnc2:funcReadGo(rio.Reader,b[]byte)我认为代码2产生了太多开销哪个代码更好?1?2? 最佳答案 代码1更好,而且可能更快。代码2只会读取一次。但我认为这两种解决方案都不是最好的。你应该循环读取并只发回读取的字节。类似于:http://play.golang.org/p/zRPXOtdgWD

go - 如何评估外部go源代码 "dynamically"?

我需要解析Go源代码文件,找到特定类型(按名称)并在我的程序中使用它。我已经设法使用go/ast找到了我需要的类型包,但我不知道如何将它“加载”到我的程序中以便我可以使用它。问题:从外部源代码文件中提取和使用类型并在运行时使用它的最佳方法是什么?除了一个丑陋的方法,我想不出任何东西来基本上复制文件,通过注入(inject)一个“主”函数和我的编码东西来修改它,将结果发送到stdOut,执行它,从stdout收集编码数据,删除修改后的文件。用例:分析go源代码并以特定格式(例如json模式)对类型进行编码编辑:这是一些代码。问题是如何编码typeallTypes(零值)然后打印它。pac

regexp.FindSubmatch 与十六进制字符代码

在某些简单的情况下,我无法使用regexp.FindSubmatch。例如,以下代码可以正常工作:assigned:=regexp.MustCompile(`\x7f`)group:=assigned.FindSubmatch([]byte{0x7f})fmt.Println(group)(inplaygrounditprints[[127]])但是如果我将字节更改为0x80它doesnotwork.为什么? 最佳答案 如前所述inthepackagedocumentation:AllcharactersareUTF-8-encod

go - 如何在 html 上获取所有元素名称(我的错误代码运行循环)

我想得到一个文档树。然后,首先,我显示了所有元素的名称。但是我的代码运行循环。我该怎么办?packagemainimport("github.com/PuerkitoBio/goquery""golang.org/x/net/html")funcgetTagName(s*goquery.Selection){for_,n:=ranges.Nodes{ifn.Type!=html.ElementNode{continue}println(n.Data)getTagName(s.Children())}}funcmain(){doc,_:=goquery.NewDocument("http

go - 如何使用 gb 获得代码覆盖率?

正在运行gb:gbtest...//...-v有效,但正在运行gbtest...//...-coverprofile=cover.out结果:testing:cannotuse-test.coverprofilebecausetestbinarywasnotbuiltwithcoverageenabled同时gotest-coverprofilecover.out作品。如何使用gb获得代码覆盖率? 最佳答案 -coverprofile标志在gb中尚不支持。您可以在https://github.com/constabulary/gb/

go - 在 Go 中开发时避免向上滚动

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion我正在编写go并且同时运行300个go例程。当其中一个崩溃时,打印日志变得非常长,我每次都向上滚动(我只需要查看日志的最后一行和第一个go例程失败)。您如何改善Go中的开发者体验?