[Go] sync.Cond 使用详解

Cond 通常应用于等待某个条件的一组 goroutine,等条件变为 true 的时候,其中一个 goroutine 或者所有的 goroutine 都会被唤醒执行。 sync.Cond 提供的方法 1 2 3 4 func NewCond(l Locker) *Cond {} //

[Go] Http 服务加载多个ssl证书

Http 服务加载多个ssl证书 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 cfg := &tls.Config{} cert, err := tls.LoadX509KeyPair("cert_one.pem", "key_one.pem") if err != nil { log.Fatal(err) } cfg.Certificates = append(cfg.Certificates, cert) // keep adding remaining certs to cfg.Certificates server := http.Server{ Addr: ":443", // Handler: myHandler, TLSConfig: cfg, } server.ListenAndServeTLS("", "") http.ListenAndServeTLS with

[Gin] Gin 实现反向代理

Gin 实现代理 直接代理,不做任何修改 1 2 3 4 5 6 router.POST("/api", func(c *gin.Context) { proxy := httputil.ReverseProxy{Director: func(request *http.Request) { request = c.Request }} proxy.ServeHTTP(c.Writer, c.Request) }) 转发指定路径给后端服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 router.POST("/api/v1/backend", ReverseProxy()) func ReverseProxy() gin.HandlerFunc

[godaddy SSL] godaddy SSL证书申请

godaddy SSL证书申请 生成CSRs (Certificate Signing Requests) 从服务器上生成证书签名请求(CSRs): 1 openssl req -new -newkey rsa:2048 -nodes -keyout coolexample.key -out coolexample.csr 用自己的域名替换coolexample,执行