摘要:        
1、反对“全局变量” 问题1 : context可以理解为是一个“全局变量”吗? 在软件设计的工程中,对全局变量基本持否定态度: 1、代码变得耦合; 2、暴露了多余的信息; 3、全局变量在多线程环境下使用锁,浪费CPU资源; 但是它也有好的方面:提升了某些变量的作用域,保证了这些数据的生命周期。 为    
阅读全文
posted @ 2023-04-20 15:50
西伯尔
阅读(59)
推荐(0)
            
        
        
摘要:        
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
西伯尔
阅读(30)
推荐(0)
 
		
    
        
        
摘要:        
1、cobra使用 包含两个模块: (1)先用Generator自动生成模板, (2)再依据Cobra Library修改模板,设置自己的参数。 1、Generator使用 注意:由于代码是自动生成的,最好不要在自己项目中随便用这生成命令,因为一不小心就把你的main.go全部覆盖了!!! 建议:建    
阅读全文
posted @ 2023-04-12 17:17
西伯尔
阅读(207)
推荐(0)
 
		
    
        
        
摘要:        
1、目录生成 (1)Smart TOC 好用支持二级标题,看起来很舒服。 问题:可能挡内容。收起不是很方便,只能靠关闭插件,或者交费可以放大缩小。 (2)onetoc【没上架,需要手动下载zip】 下载zip:https://github.com/Whilconn/one-toc/releases     
阅读全文
posted @ 2023-03-15 14:14
西伯尔
阅读(18)
推荐(0)
 
		
    
        
        
摘要:        
一个buf是循环队列 两个指向循环队列的指针 两个指向阻塞协程的指针 参考: https://cloud.tencent.com/developer/article/1750350    
阅读全文
posted @ 2023-03-07 18:12
西伯尔
阅读(21)
推荐(0)
 
		
    
        
        
摘要:        
1、版本控制规则:Semantic Versioning 官网:https://semver.org/ Introduction In the world of software management there exists a dreaded place called “dependency h    
阅读全文
posted @ 2023-03-03 01:51
西伯尔
阅读(9)
推荐(0)
 
		
    
        
        
摘要:        
case语句: 1、select会监听case语句中channel的读写操作,当case中channel读写操作为非阻塞状态(即能读写)时,将会触发相应的动作。 2、select中的case语句必须是一个channel操作,select中的default子句总是可运行[不是必运行]的。 case执行    
阅读全文
posted @ 2023-03-02 17:32
西伯尔
阅读(20)
推荐(0)
 
		
    
        
        
摘要:        
struct{}和interface{}都是Go语言中的数据类型,但它们的用途和特性是不同的。 struct{}是一个结构体类型,用于定义自定义的复合类型。它可以包含零个或多个具有不同类型的字段。结构体类型的值可以通过实例化一个结构体变量来创建。 interface{}是一个接口类型,用于定义一组方    
阅读全文
posted @ 2023-02-28 18:40
西伯尔
阅读(620)
推荐(0)
 
		
    
        
        
摘要:        
make() 是 Go 语言内存分配的内置函数,默认有三个参数。 make(Type, len, cap) 三个参数 Type:数据类型,必要参数,Type 的值只能是 slice、 map、 channel 这三种数据类型。 len:数据类型实际占用的内存空间长度,map、 channel 是可选    
阅读全文
posted @ 2023-02-24 16:15
西伯尔
阅读(432)
推荐(0)
            
        
        
摘要:        
1、go设置超时时间 ###(1)SetDeadline 首先,你需要了解Go实现超时的网络原语(primitive): Deadline (最后期限)。 net.Conn为Deadline提供了多个方法Set[Read|Write]Deadline(time.Time)。 Deadline是一个绝    
阅读全文
posted @ 2023-02-24 13:55
西伯尔
阅读(133)
推荐(0)