1 2 |
# echo "you are right"| gzip --stdout|php -r 'echo gzinflate(substr(file_get_contents("php://stdin"), 10, -8));' you are right |
[crayon-6797db9 …
DevOps
1 2 |
# echo "you are right"| gzip --stdout|php -r 'echo gzinflate(substr(file_get_contents("php://stdin"), 10, -8));' you are right |
[crayon-6797db9 …
测试实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
package main import ( "bufio" "fmt" "net" "sync" ) func main() { addr := "127.0.0.1:8181" ln, err := net.Listen("tcp", addr) if err != nil { panic(err) return } conn1, err := net.Dial("tcp", addr) if err != nil { panic(err) } n, err := fmt.Fprintf(conn1, "client hello\n") if err != nil { panic(err) } if n == 0 { panic("应该能发送成功的") } wg := &sync.WaitGroup{} wg.Add(1) go func(conn net.Conn) { defer wg.Done() r := bufio.NewReader(conn) l, _ , _ := r.ReadLine() println("s:", string(l)) conn.Close() }(conn1) //ln.Close() // 如果这里 Close的话,下面的Accept就会失败,尽管上面有一个已经创建成功的连接 conn, err := ln.Accept() if err != nil { panic(err) } clientHello, _, _ := bufio.NewReader(conn).ReadLine() fmt.Println("c:", string(clientHello)) fmt.Fprintf(conn, "server hello\n") conn.Close() wg.Wait() } |
golang空结构体作为值传递时是不会copy的,都是同一个全局变量。 因为空结构体不管是什么类型,执行什么方 …
如果让服务本身支持定时关闭,理论上非常可行,但是所有想定时关闭的服务都去实现以下这个逻辑是不是不太好?对于一个 …
RSyslog Documentation – rsyslog 属性 RSyslog Docum …
https://haokan.baidu.com/v?pd=wisenatural&vid=6705 …
RSyslog Documentation – rsyslog
https://mp.weixin.qq.com/s?__biz=MzU2MDc3OTgwOQ==&m …
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package main import ( "fmt" "unsafe" ) func main() { substr() } type String struct { str *byte length int } func (s *String) String() string { return fmt.Sprintf("str: %p\nlen: %d", s.str, s.length) } func inspectString(s *string) { a := (*String)(unsafe.Pointer(s)) fmt.Printf("%s\n", a.String()) } // 变量a的地址比变量b的地址大16字节,一方面体现了栈是向下走的,先分配a,在分配b // 另一方面,也体现了字符串变量占用的内存大小是16字节,一个指针和一个int // 变量b的str指针比变量a的str指针大2,说明b没有产生新的字符串内容 func substr() { a := "12345" b := a[2:4] println("a:", &a) inspectString(&a) println("b:", &b) inspectString(&b) } |
这里的字符串b复用了字符串a的一部分 …
连接状态: 相关代码: src/net/http/server.go …