2021
10-28
10-28
go开发alertmanger实现钉钉报警
通过自己的url实现alertmanager的钉钉报警webhook在alertmanger的配置-name:'dingding'webhook_configs:-send_resolved:trueurl:'http://xxxx:8080/Alert'go实现钉钉报警的程序packagemainimport("bytes""encoding/json""fmt""net/http""strings""time""log""github.com/gin-gonic/gin")const(webHook_Alert="https://oapi.dingtalk.com/robot/send?access_token=xxxx")typeMessages...
继续阅读 >
前言select作为Gochan通信的重要监听工具,有着很广泛的使用场景。select的使用主要是搭配通信case使用,表面上看,只是简单的select及case搭配,实际上根据case的数量及类型,在编译时select会进行优化处理,根据不同的情况调用不同的底层逻辑。select的编译处理select编译时的核心处理逻辑如下:funcwalkselectcases(cases*Nodes)[]*Node{ncas:=cases.Len()sellineno:=lineno//optimization:zero-caseselect//针...
目录一、理解广度优先算法1.1、分析如何进行广度优先探索1.2、我们来总结一下1.3、代码分析二、代码实现广度优先算法走迷宫一、理解广度优先算法我们要实现的是广度优先算法走迷宫比如,我们有一个下面这样的迷宫这个迷宫是6行5列其中0代表可以走的路,1代表一堵墙.我们把墙标上言责,就如右图所示.其中(0,0)是起点,(6,5)是终点.我们要做的是,从起点走到终点最近的路径.这个例子是抛转隐喻,介绍广度优先算法,广度优先算法的...
目录一、defer二、错误处理三、统一错误处理的逻辑四、panic五、recover六、errorvspanic七、错误处理综合示例一、defer1.defer保证在函数结束时发生.2.defer列表为先进后出3.参数在defer语句时计算.下面来看一个例子:写入文件packagemainimport("aaa/functional/fbi""bufio""fmt""os")//我要写文件funcwriteFile(){file,err:=os.Create("test.txt")iferr!=nil{panic("error")...
目录一、前言二、开闭原则三、依赖倒置原则3.1、什么是依赖倒置原则3.2、一个耦合度极高的模块关系设计3.3、面向抽象层依赖倒转一、前言go的interface写起来更自由,无需显示的实现,只要实现了与interfece所包含的所有函数签名的相同的方法即可。让编码更灵活,易扩展。如何理解go语言中的interface呢?1.interface是方法声明的集合2.接口的方法与实现接口的类型方法格式一致3.接口中所有方法均被实现4.interface可以作...
目录一、组合模式(CompositePattern)1.1、简述1.2、Go实现二、适配器模式(AdapterPattern)2.1、简述2.2、Go实现三、桥接模式(BridgePattern)3.1、简述3.2、Go实现四、总结一、组合模式(CompositePattern)1.1、简述在面向对象编程中,有两个常见的对象设计方法,组合和继承,两者都可以解决代码复用的问题,但是使用后者时容易出现继承层次过深,对象关系过于复杂的副作用,从而导致代码的可维护性变差。因此,一个经典...