Golang
文章平均质量分 65
Konan96
这个作者很懒,什么都没留下…
展开
-
golang并发学习及实战记录
一、切片append方法不是原子操作多个协程操作同一个切片,使用append方法添加元素时,存在并发安全问题,需要对append方法加锁func example() { // 添加互斥锁 var lock sync.Mutex eg := errgroup.Group{} res := make([]int, 0) for i := 0; i < 100; i++ { eg.Go(func() error { lock.Lock() // 加锁 res = append(原创 2021-10-10 22:55:01 · 353 阅读 · 0 评论 -
Win10部署Authelia(OAuth2授权框架)
一、安装docker二、下载authelia代码# 下载代码并切换到本地运行例子git clone https://github.com/authelia/authelia.gitcd authelia/examples/compose/local三、配置相关参数打开configuration.yml查看配置具体参数详解可查看: https://www.authelia.com/docs/configuration/1、访问控制access_control: default_po原创 2021-10-10 15:46:31 · 2702 阅读 · 0 评论 -
golang-测试
一、代码覆盖率和性能测试1、代码覆盖率代码:# 将代码覆盖率报告输出到c.out文件中$ go test -coverprofile=c.out# 查看代码覆盖率$ go tool cover -html=c.out效果:// 测试方法对这段代码的代码覆盖率func twoSum(nums []int, target int) []int { m := make(map[int]int) for i, num := range nums { if val, ok := m[tar原创 2021-09-05 10:47:08 · 162 阅读 · 0 评论 -
设计模式学习笔记-行为型模式(下)
七、观察者模式1.作用当对象间存在一对多关系时,则使用观察者模式。比如,当一个对象被修改时,则会自动通知依赖它的对象。2.举例1、创建 Observer 类type Observer interface { Notify(interface{})}2、创建 Subject 类type Subject struct { observers []Observer state string}func (s *Subject)SetState(state string) {翻译 2021-08-04 14:06:08 · 112 阅读 · 0 评论 -
设计模式学习笔记-行为型模式(上)
设计模式golang-行为型模式(上)一、责任链模式1.作用意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。2.举例1、定义处理请求接口// 处理事件type ScreenEvent struct { Type string Comment s翻译 2021-08-04 14:04:08 · 161 阅读 · 0 评论 -
设计模式学习笔记-创建型模式
设计模式golang-创建型模式一、工厂模式1.作用定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。2.举例1、定义接口//笔type pen interface { //写字 Write()}2、创建实现接口的结构体type pencil struct {}func (p *pencil) Write() { fmt.Println("铅笔")}type brushPen struct {}func (p *br翻译 2021-07-03 21:56:44 · 112 阅读 · 0 评论 -
设计模式学习笔记-结构型模式
设计模式golang-结构型模式一、适配器模式1.作用将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2.举例已经存在的接口//不可充电电池使用接口type NonRechargeableBattery interface { Use()}客户希望的接口//可充电电池使用接口type RechargeableBattery interface { Use() Charge()}已经存在的对象和实现方翻译 2021-07-03 21:08:55 · 118 阅读 · 0 评论