摘要:
1.网络编程:物理层->数据链路层->网络层->传输层->应用层 2.Socket是应用层与TCP/IP协议族通信的中间软件抽象层 3.TCP编程:net包里面,并且粘包的问题需要注意 服务端处理流程: 1.监听端口 2.接收客户端请求建立链接 3.创建goroutine处理链接 客户端处理流程: 阅读全文
posted @ 2022-03-04 21:52
说好的你
阅读(116)
评论(0)
推荐(0)
摘要:
1.defer:将一个方法延迟到包裹该方法的方法返回时执行, 包裹defer的函数返回时 包裹defer的函数执行到末尾时 所在的goroutine发生panic时 多个defer 载入是压栈,按照后进先出的原则执行。 然后用defer也需要避免一些坑 a.比如获取文件资源需要先判断是否不为err, 阅读全文
posted @ 2022-03-04 21:06
说好的你
阅读(205)
评论(0)
推荐(0)
摘要:
var( //并发任务同步 _syncGp sync.WaitGroup //加载一次 _syncOnce sync.Once //sync.Map _syncMap sync.Map //互斥锁 _lock sync.Mutex //读写互斥锁 _rdLock sync.RWMutex)func 阅读全文
posted @ 2022-03-04 20:38
说好的你
阅读(52)
评论(0)
推荐(0)
摘要:
1.channel:go特殊的数据类型,用于通信,使用的时候需要注意下结合使用不当容易造成死锁,在结合 for select 里使用break是没效果的 2.语法定义: <-chan 读取, chan<-写入 var chA = make(chan Type,len)//有缓冲 var chB = 阅读全文
posted @ 2022-03-04 19:14
说好的你
阅读(347)
评论(0)
推荐(0)
摘要:
1.进程,线程,协程(groutine) 2.协程是用户态线程(非内核线程),不需要操作系统进行抢占式调度 3. 关键字: go 4.理解MPG模型: M内核线程,P用户级线程,G协程; 案例: var ( syncGp sync.WaitGroup)func main(){ syncGp.Add( 阅读全文
posted @ 2022-03-04 18:06
说好的你
阅读(51)
评论(0)
推荐(0)
摘要:
1:数组:值类型 var a0 = [3]int{2,3,4} fmt.Println(a0) var a1 = [...]struct{ name string age int }{ {"jack",10}, {"tom", 20}, } fmt.Println(a1) //数组遍历 for k, 阅读全文
posted @ 2022-03-04 16:49
说好的你
阅读(60)
评论(0)
推荐(0)
摘要:
package mainimport ( "fmt" jwt "github.com/dgrijalva/jwt-go" "time")// Claims custom tokentype Claims struct { UserID int32 `json:"user_id"` jwt.Stand 阅读全文
posted @ 2022-03-04 15:39
说好的你
阅读(320)
评论(0)
推荐(0)

浙公网安备 33010602011771号