go mod 会产生大量cache,很多老旧的cache也不会自动删除,所以,没事儿要清理一下: [crayo …
作者存档:phpor
libcurl使用线程的方式做dns解析
缘起: 一个PHP进程本来看不到使用任何的多线程方法,但是,strace时却发现大量的clone调用,而且,p …
如何获取iOS设备的UDID-百度经验
https://jingyan.baidu.com/article/48b37f8d2c5cab1a64648 …
实施 B+树时的经验教训
https://hackthology.com/lessons-learned-while-implement …
关于sse技术
看PHP7中的base64.c, 发现代码比想象的要长不少,仔细看了一下,发现对于不同的目标环境有一些优化,一 …
已升级鸿蒙OS😃
golang-栈内存空间 – boybai – 博客园
https://www.cnblogs.com/sanmubai/p/13516885.html
gzinflate and gzip
1 2 |
# echo "you are right"| gzip --stdout|php -r 'echo gzinflate(substr(file_get_contents("php://stdin"), 10, -8));' you are right |
[crayon-67404e1 …
golang 中listener close之后,积压在内核的连接就没法accept了
测试实例:
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空结构体
golang空结构体作为值传递时是不会copy的,都是同一个全局变量。 因为空结构体不管是什么类型,执行什么方 …