文章持续更新,微信搜一搜「 吴亲强的深夜食堂 」上一篇etcd 实战基础篇(一)我们主要介绍了 etcd 使用场景以及最基础性的一些操作(put、get、watch)。 这一篇我们接着实战etcd其他业务场景。基于 etcd 的分布式锁基于 etcd 实现一个分布式锁特别简单。etcd 提供了开箱即用的包 concurrency,几行代码就实现一个分布式锁。 ......
534
0
0
2022-04-10
[TOC]OAUTH之钉钉第三方授权hello,我是小魔童哪吒,欢迎点击关注,有更新,将第一时间呈现到你的面前胖sir:小魔童,我今天收到了一个需求,期望我们做一个第三方登录的功能,用户可以通过第三方授权来登录我们的web小魔童:啊哈?你有眉目吗胖sir:那当然,我知道可以通过微信登录,钉钉登录,github登录等等呢小魔童:那你知道都是咋实现的吗?说给我听 ......
388
0
0
2022-04-10
开发中需要确认一个函数、模块结果是否正确func addUpper(n int)int{ res:=0for i := 1; i <n ; i++ { res+=i }return res } 传统方法测试就是调用这个函数,看返回结果是否正确缺点:需要在main函数中调用,测试的时候去修改main函数,运行中的项目得停 ......
490
0
0
2022-04-09
map 的基本介绍map 是 key-value 数据结构,又称为字段或者关联数组。类似其它编程语言的集合, 在编程中是经常使用到map 的声明var map 变量名 map[keytype]valuetypekey 可以是什么类型bool, 数字,string, 指针, channel , 还可以是只 包含前面几个类型的 接口, 结构体, 数组 , 通常 ......
440
0
0
2022-04-09
Go中,数组是值类型var hens [7]float64 hens[0] = 3.0 hens[1] = 3.0 hens[2] = 3.0 hens[3] = 3.0 hens[4] = 3.0 totalWeight := 0.0 for i := 0; i < len(hens); i++ { totalWeigh ......
336
0
0
2022-04-09
1-函数的基本语法var f1 float64 = 12.34var f2 float64 = 12.00var oper byte = '-' result := cal(f1, f2, oper) fmt.Println(result) } func cal(n1 float64, n2 float64, operator byt ......
330
0
0
2022-04-09
顺序控制分支控制循环控制顺序控制从上到下逐步执行分支控制分支控制就是让程曦有选择执行单分支双分支多分支单分支控制//if 条件表达式 { //} func main() {var age int fmt.Println("请输入年龄") fmt.Scanln(&age) if age>18{ f ......
448
0
0
2022-04-09
变量的介绍变量相当于内存中一个数据存储空间的表示,像门牌号,通过门牌号找到房间(值)变量的使用定义变量给变量赋值使用变量变量的使用三种方式指定变量类型,声明后不赋值,使用默认值根据值自 推导变量类型:=的方式定义未曾定义过的变量var i int //0 var num= 10.11 fmt.Println(num) fmt.Println(ref ......
487
0
0
2022-04-09