摘要: WorkPool线程池 就是限制函数的运行数量的struct 参考https://jiajunhuang.com/articles/2020_04_21-golang_concurrency.md.html package pool type GoPool struct { MaxLimit int 阅读全文
posted @ 2020-12-13 20:12 maob 阅读(197) 评论(0) 推荐(0) 编辑
摘要: UtilRand随机数的玩法 前言 对于随机数的生成用到还是相对比较普遍的,随机字符串,指定长度的随机字符串。。。一大堆,下面,我来研究一下玩法 简单的随机种子 我们在项目有时候用到等待随机时长,但是就是由于种子的原因,随机时长变成了定长。下面,就是主要的一个简单的种子 // 获取随机种子 // 轻 阅读全文
posted @ 2020-12-13 19:28 maob 阅读(103) 评论(0) 推荐(0) 编辑
摘要: SpecialPrint特殊的输出结果 循环range问题 解答 这样的写法初学者经常会遇到的,很危险! 与Java的foreach一样,都是使用副本的方式。所以m[stu.Name]=&stu实际上一致指向同一个指针, 最终该指针的值为遍历的最后一个struct的值拷贝 package main 阅读全文
posted @ 2020-12-13 19:24 maob 阅读(117) 评论(0) 推荐(0) 编辑
摘要: Select用法 Go里面提供了一个关键字select,通过select可以监听channel上的数据流动。 select的用法与switch语言非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述。 与switch语句相比, select有比较多的限制,其中最大的一条限制就 阅读全文
posted @ 2020-12-13 19:17 maob 阅读(792) 评论(0) 推荐(0) 编辑
摘要: RabbitMqBase消息队列小结 虽然这个消息队列我只是知道应用场景在哪里,还没有实际操作到,但是原理还是要知道的。这些知识点就像珍珠,万一哪天就用到了。在没具体学习之前,我一直在想: 这玩意不就是个队列吗。还能玩出花来?结果,一研究,还真的打脸了。 首先,这玩意用的是AMQP协议,并且只是占用 阅读全文
posted @ 2020-12-13 18:09 maob 阅读(245) 评论(0) 推荐(0) 编辑
摘要: PtrSwap不仅仅是原地交换两个数 交换两个数,实际上是交换两个数的地址 交换两个int数 package main import "fmt" func Swap(a, b *int) { tmp := *a *a = *b *b = tmp } func main() { num1 := 1 n 阅读全文
posted @ 2020-12-13 18:07 maob 阅读(92) 评论(0) 推荐(0) 编辑
摘要: InterfaceSummary接口小结 继承 ​ 注意: 其实这个和接口没多大关系,结构体实现,为了和实现接口做对比,但是还是要放在这里 ​ 场景: 所有的程序员都有格子衫,有一个叫mike的普通程序员也是如此。但是有个牛逼的程序员mao,他还会骑 自行 车,也就是运动员的运动。 实现代码 # n 阅读全文
posted @ 2020-12-13 18:05 maob 阅读(174) 评论(0) 推荐(0) 编辑
摘要: InterfaceDesign接口设计原则 接口设计真配上设计模式,真香,但是我书落学校了(所以,以后再学设计模式) 虽然我书落在学校了,但是不影响我百度啊。百度一下接口设计原则是啥样的 接口设计6个原则(原理部分) 软件设计的最高目标: 高内聚,低耦合 单一职责原则 Single Responsi 阅读全文
posted @ 2020-12-13 18:03 maob 阅读(326) 评论(0) 推荐(0) 编辑
摘要: InitOrder初始化执行顺序 包的引用,函数执行顺序 代码结构 |-- go-algorithm(根目录) |-- A | |-- a.go |-- B | |-- b.go └ -- main.go a.go package A import "fmt" func init() { A1() 阅读全文
posted @ 2020-12-13 18:00 maob 阅读(263) 评论(0) 推荐(0) 编辑
摘要: HandleDecorator装饰器模式实践 实现记录时间的中间件,记录地址中间件 装饰模式原理 连接地址(点我) 代码实现 // 中间件的实现 // 装饰模式 package main import ( "encoding/json" "errors" "fmt" "log" "net/http" 阅读全文
posted @ 2020-12-13 17:58 maob 阅读(90) 评论(0) 推荐(0) 编辑
摘要: GmpEasy协程简单概要 Go为了提供更容易使用的并发方法,使用了goroutine和channel。goroutine来自协程的概念,让一组可复用的函数运行在一组线程之上,即使有协程阻塞,该线程的其他协程也可以被 runtime 调度,转移到其他可运行的线程上。 Go中,协程被称为gorouti 阅读全文
posted @ 2020-12-13 17:57 maob 阅读(106) 评论(0) 推荐(0) 编辑
摘要: CutIf消除if_else 避免过度封装,合适就好。但是对于大量的业务代码,还是业务出去比较好,主线逻辑保证清晰 消除连续范围的if 1 < x <= 22, 22 < x < 66 .... 实现思路 运用look_up 按照从小到的的顺序存进切片 多少个间隔,放多少个算法,也就是业务策略 放进 阅读全文
posted @ 2020-12-13 17:50 maob 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 不定参数的使用 起初学习的蒙蔽状态 在学习不定参数的时候,我认为传切片就好了,没必要这玩意吧。直到看Go文档的cmd时候,exec.Command(name string, args ...string),所以说,存在即合理。 应用场景 在我们想要获取linux服务器的输出状态,获取cpu使用率,内 阅读全文
posted @ 2020-12-13 17:49 maob 阅读(193) 评论(0) 推荐(0) 编辑
摘要: SliceOpr切片常用操作 切片取值范围 切片的取值范围为了插入做准备 func TestTimeNowUnix(t *testing.T) { var s []int s = make([]int, 0) s = append(s, 1, 2, 3, 4) fmt.Println(s[1:2]) 阅读全文
posted @ 2020-12-13 15:48 maob 阅读(141) 评论(0) 推荐(0) 编辑
摘要: TimeTimer The Timer type represents a single event. When the Timer expires, the current time will be sent on C, unless the Timer was created by AfterF 阅读全文
posted @ 2020-12-13 15:34 maob 阅读(235) 评论(0) 推荐(0) 编辑
摘要: StructTransmit值传递和引用传递 代码 package strcurt_ptr import "fmt" type Item0 struct { Name0 string } type Item1 struct { Item0 Name1 string } type Item2 stru 阅读全文
posted @ 2020-12-13 13:56 maob 阅读(78) 评论(0) 推荐(0) 编辑