我使用 brew 升级了 vim (macOS):
$ brew info vim
vim: stable 8.1.2100 (bottled), HEAD
Run Code Online (Sandbox Code Playgroud)
升级后,右边的行号有下划线,例如从附图中行号1看起来像 1_____,知道如何去除下划线吗?
仅在拥有时发生 :set relativenumber

我有一个应用程序(epazote),一旦开始运行永远但我想在阻止/等待直到ctrl+ c被按下或被杀死之前测试一些值.
这是一个小例子:http://play.golang.org/p/t0spQRJB36
package main
import (
"fmt"
"os"
"os/signal"
)
type IAddString interface {
AddString(string)
}
type addString struct{}
func (self *addString) AddString(s string) {
fmt.Println(s)
}
func block(a IAddString, s string) {
// test this
a.AddString(s)
// ignore this while testing
block := make(chan os.Signal)
signal.Notify(block, os.Interrupt, os.Kill)
for {
signalType := <-block
switch signalType {
default:
signal.Stop(block)
fmt.Printf("%q signal received.", signalType)
os.Exit(0)
}
}
}
func main() {
a …Run Code Online (Sandbox Code Playgroud) 我正在使用GO检查一个进程(不是父进程)是否已经终止,基本上类似于FreeBSD中的pwait命令但是用go编写.
目前,我尝试了for loop一个kill -0,但我注意到,CPU的使用率是非常高的99%,使用这种方法,这里是代码:
package main
import (
"fmt"
"os"
"strconv"
"syscall"
"time"
)
func main() {
if len(os.Args) != 2 {
fmt.Printf("usage: %s pid", os.Args[0])
os.Exit(1)
}
pid, err := strconv.ParseInt(os.Args[1], 10, 64)
if err != nil {
panic(err)
}
process, err := os.FindProcess(int(pid))
err = process.Signal(syscall.Signal(0))
for err == nil {
err = process.Signal(syscall.Signal(0))
time.Sleep(500 * time.Millisecond)
}
fmt.Println(err)
}
Run Code Online (Sandbox Code Playgroud)
知道如何改进或正确实现这一点.
提前致谢.
UPDATE
sleep像建议的那样在循环内添加,有助于减少负载.
从提供的链接,似乎可以附加到现有的pid,我会尝试 …
对于传入的 HTTP 请求,我必须使用202 Accepted状态代码进行响应,同时继续在后台处理有效负载。例如,这就是我目前正在做的事情:
package main
import (
"fmt"
"log"
"net/http"
"time"
"github.com/nbari/violetear"
)
func sleep() {
time.Sleep(3 * time.Second)
fmt.Println("done...")
}
func index(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
go sleep()
}
func main() {
router := violetear.New()
router.HandleFunc("*", index)
http.Handle("/", router)
log.Fatal(http.ListenAndServe(":8080", router))
}
Run Code Online (Sandbox Code Playgroud)
基本上,在处理程序上我只使用,然后在 goroutine 中WriteHeader调用该函数:sleep
func index(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
go sleep()
}
Run Code Online (Sandbox Code Playgroud)
如果我想回复“200 OK”,我注意到我可以简单地返回,例如:
func index(w http.ResponseWriter, r *http.Request) {
go sleep()
return
}
Run Code Online (Sandbox Code Playgroud)
因此想知道我是否应该总是返回我想关闭:
func index(w http.ResponseWriter, r …Run Code Online (Sandbox Code Playgroud) 我尝试实现这个正则表达式来检查字符串 ( "username") 的长度是否在 3 到 30 之间,仅包含字母 (az)、数字 (0-9) 和句点 (.)(不连续):
use regex::Regex; // 1.3.5
fn main() {
Regex::new(r"^(?=.{3,30}$)(?!\.)(?!.*\.$)(?!.*?\.\.)[a-z0-9.]+$").unwrap();
}
Run Code Online (Sandbox Code Playgroud)
当尝试编译正则表达式时,我收到此错误:
use regex::Regex; // 1.3.5
fn main() {
Regex::new(r"^(?=.{3,30}$)(?!\.)(?!.*\.$)(?!.*?\.\.)[a-z0-9.]+$").unwrap();
}
Run Code Online (Sandbox Code Playgroud)
是否有替代的正则表达式或方法来根据这些要求验证字符串?
我可以按照建议删除长度{3,30}并获取字符串长度,但对于第二部分(?!\.)(?!.*\.$)(?!.*?\.\.)[a-z0-9.]+$(防止连续点)?
我所使用的服务器是FreeBSD,最近sendmail停止发送电子邮件.我一直在google做很多研究,我从很多不同的网站上尝试了很多东西,但到目前为止还没有任何效果.
这是sendmail命令的输出:
# echo "test" | mail -v -s test test@test.com
test@test.com... Connecting to [127.0.0.1] via relay...
test@test.com... Deferred: Connection refused by [127.0.0.1]
Run Code Online (Sandbox Code Playgroud)
这是端口25上的telnet:
# telnet localhost 25
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
Trying ::1...
telnet: connect to address ::1: Connection refused
telnet: Unable to connect to remote host
Run Code Online (Sandbox Code Playgroud)
这是netstat输出的一部分:
tcp4 0 0 the.first.ip.address.25 *.* LISTEN
tcp4 0 0 the.second.ip.address.26 *.* LISTEN
tcp4 0 0 the.third.ip.address.25 *.* LISTEN
tcp4 0 0 the.fourth.ip.address.25 *.* LISTEN
tcp4 0 …Run Code Online (Sandbox Code Playgroud) 我使用 git-flow 并根据 Github 保护规则我有分支master和develop受保护,两者都带有选项Require linear history。
一切正常,但现在我想不只是从develop到合并master,而是开始使用“拉取请求”( develop -- PR --> master) 我想知道是否可以在保持历史线性的同时保持分支均匀/同步,而不需要对develop树枝施加力。
目前,如果我PR从developto创建一个拉取请求master,并且因为Require linear history选中了该选项,我无法合并,但只是squash and merge因为rebase and merge这样,如果我修改develop分支并进行另一次提交,它会提前 N 倍,但永远不会是“偶数” 。
我发现报复的唯一develop方法master就是
git pull origin master --rebase
Run Code Online (Sandbox Code Playgroud)
但这随后意味着强制推动:
git push -f
Run Code Online (Sandbox Code Playgroud)
不使用时PR,我只需将开发合并到master(FastForward)并保持历史线性,我可以合并拉取请求并通过禁用来防止强制推送Require linear history,但历史不会是线性的。(我认为 PR 没有使用 FastForward 合并)
我使用 git-flow 的原因是该develop …
我正在使用邮递员从 API (模式)创建集合OpenAPI 3.0
我通过单击“生成集合”来创建集合
然后我可以转到该集合,执行一些请求,到目前为止一切都很好,但如果我修改 API 架构中的某些内容,如何更新集合而无需创建新集合?
我在windows环境中使用RabbitMQ.我正在使用带有ssl配置的RabbitMQ.我的要求是在rabbitmq.conf文件中使用环境变量来读取SSL证书.我用它如下,
{cacertfile,"$ {MY_HOME} /config/SSLCertificates/testca/cacert.pem"
以上环境变量的使用不起作用.你们中的任何一位请帮助我正确使用环境变量.
我想使用 Rust 创建一个简单的调度程序,以便在定义的时间运行多个并发函数,但如果它们尚未完成,则不要启动更多函数。
例如,如果定义的间隔为一秒,则调度程序应运行这些函数,并且如果先前的函数尚未返回,则不再启动更多函数。目标是防止多次运行相同的函数。
我用 Go 创建了一个工作示例,如下所示:
package main
import (
"fmt"
"sync"
"time"
)
func myFunc(wg *sync.WaitGroup) {
fmt.Printf("now: %+s\n", time.Now())
time.Sleep(3 * time.Second)
wg.Done()
}
func main() {
quit := make(chan bool)
t := time.NewTicker(time.Second)
go func() {
for {
select {
case <-t.C:
var wg sync.WaitGroup
for i := 0; i <= 4; i++ {
wg.Add(1)
go myFunc(&wg)
}
wg.Wait()
fmt.Printf("--- done ---\n\n")
case <-quit:
return
}
}
}()
<-time.After(time.Minute)
close(quit)
}
Run Code Online (Sandbox Code Playgroud)
NewTicker由于我在 Rust …