Skip to content

Instantly share code, notes, and snippets.

View tangx's full-sized avatar

tangx tangx

View GitHub Profile
@tangx
tangx / envvar.go
Created August 7, 2020 22:53
golang利用反射获取或设置环境变量
package envvar
import (
"encoding/json"
"fmt"
"os"
"reflect"
"strconv"
"strings"
)
@tangx
tangx / lego-letsencrypt.sh
Last active November 6, 2020 16:41
lego-letsencrypt.sh
#!/bin/bash
#
# lego-letsencrypt.sh
#
cd $(dirname $0)
which lego || {
lego_ver=v3.7.0
wget -c https://github.com/go-acme/lego/releases/download/${lego_ver}/lego_${lego_ver}_linux_amd64.tar.gz -o lego.tar.gz
@tangx
tangx / gochannel.go
Created November 19, 2019 01:06
golang 通道
package gochannel
import (
"fmt"
"math/rand"
"sync"
"time"
)
// 创建 wg
@tangx
tangx / uint16-posts.go
Created November 13, 2019 17:34
使用int位数判断特定类型的数据,例如端口
// "28080:80"
ports := strings.Split(s, ":")
p, err := strconv.ParseUint(ports[0], 10, 16)
if err != nil {
return nil, fmt.Errorf("invalid port %v", ports[0])
}
port = uint16(p)
@tangx
tangx / init.go
Last active November 12, 2019 16:50
init 初始化
// 全局变量
var db *sql.DB
func init() {
NewConn(dsn)
}
// NewConn return a DB conn
func NewConn(dsn string) (err error) {
// sql.Open 不会
@tangx
tangx / time-usage.go
Created November 11, 2019 18:11
time 的常用用法
func Test_time(t *testing.T) {
start := time.Now()
time.Sleep(1 * time.Second)
sec := time.Since(start).Seconds()
fmt.Println(sec)
}
@tangx
tangx / http-client-do.go
Created November 11, 2019 14:06
发起自定义 http 请求
func reqPost(url string, body io.Reader) ([]byte, error) {
req, err := http.NewRequest("POST", url, body)
if err != nil {
return nil, err
}
req.Header.Set("User-Agent", "go-dnspod (shallwedance@126.com)")
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := http.DefaultClient.Do(req)