随笔 - 433  文章 - 0 评论 - 2 阅读 - 26万

04 2023 档案
mutex.Lock():是否需要加锁,何时加?
摘要:流加锁,包不用加锁 传输层的TCP是基于流的传输,需要加锁, 应用层的WebSocket是基于包的传输,同时写也不会导致数据混乱,不需要加锁。 所以,在*websocket.Conn.WriteJSON(data)时,不需要前后加锁 以下代码中的mutex.Lock()没必要: wsc.mutex. 阅读全文
posted @ 2023-04-23 11:42 西伯尔 阅读(36) 评论(0) 推荐(0) 编辑
go特色
摘要:1、switch case默认是break的,可以省略break关键字。 当然也可以显示break,那么就和其他语言一样了。 参考: https://www.jianshu.com/p/3a5d2e7f09a8 【话说现在简书要守不住底线了,跳出这么多垃圾广告,还是博客园干净,就是不知道能撑多久,据 阅读全文
posted @ 2023-04-21 18:47 西伯尔 阅读(5) 评论(0) 推荐(0) 编辑
go类型
摘要:1、基本类型强转 // interface{}转为其他类型【当然这个得保证是这个类型,否则肯定报错。最好先断言】 var v interface{} var a int a = v.(int) // uint32转为int【低精度往高精度转?】 var i uint32 a = int(i) //s 阅读全文
posted @ 2023-04-21 16:08 西伯尔 阅读(4) 评论(0) 推荐(0) 编辑
回调
摘要:回调函数就是一个通过函数指针调用的函数。【真正的函数实现】 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。【被传递的那个函数】 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进 阅读全文
posted @ 2023-04-21 11:42 西伯尔 阅读(30) 评论(0) 推荐(0) 编辑
mock开发:问题及解决
摘要:技术问题 1、我想在cli的函数中给wsc对象的某个属性赋值 考虑以下三种方案: 回调:需要把函数作为参数。这个匿名函数的参数不可修改,而且是来自控制台输入,没办法。 context:把context本身作为参数传递,context里面放wsc对象。还是改不了参数,没办法。 全局:由于有多处调用,都 阅读全文
posted @ 2023-04-21 11:16 西伯尔 阅读(34) 评论(0) 推荐(0) 编辑
软件工程经典问题
摘要:1、反对“全局变量” 问题1 : context可以理解为是一个“全局变量”吗? 在软件设计的工程中,对全局变量基本持否定态度: 1、代码变得耦合; 2、暴露了多余的信息; 3、全局变量在多线程环境下使用锁,浪费CPU资源; 但是它也有好的方面:提升了某些变量的作用域,保证了这些数据的生命周期。 为 阅读全文
posted @ 2023-04-20 15:50 西伯尔 阅读(37) 评论(0) 推荐(0) 编辑
go语言妙用
摘要:1、利用channel关闭,实现Context.Done() 这个Context.Done()的具体实现,需要看源码: func (c *cancelCtx) Done() <-chan struct{} { c.mu.Lock() if c.done == nil { c.done = make( 阅读全文
posted @ 2023-04-20 15:22 西伯尔 阅读(25) 评论(0) 推荐(0) 编辑
cli程序(一)cobra
摘要:1、cobra使用 包含两个模块: (1)先用Generator自动生成模板, (2)再依据Cobra Library修改模板,设置自己的参数。 1、Generator使用 注意:由于代码是自动生成的,最好不要在自己项目中随便用这生成命令,因为一不小心就把你的main.go全部覆盖了!!! 建议:建 阅读全文
posted @ 2023-04-12 17:17 西伯尔 阅读(129) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示