摘要: 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)