人是一种高并发的物种,细品。初识对 Go 语言的第一印象就是其原生地支持并发编程,而且使用的是协程,比线程更加轻量。关于进程、线程和协程的区别进程是“程序执行的一个实例” ,担当分配系统资源的实体。进程创建必须分配一个完整的独立地址空间。进程切换只发生在内核态。线程:线程是进程的一个执行流,独立执行它自己的程序代码,是程序执行流的最小单元,是处理器调度和分派 ......
399
0
0
2022-04-10
文章持续更新,微信搜一搜「 吴亲强的深夜食堂 」上一篇etcd 实战基础篇(一)我们主要介绍了 etcd 使用场景以及最基础性的一些操作(put、get、watch)。 这一篇我们接着实战etcd其他业务场景。基于 etcd 的分布式锁基于 etcd 实现一个分布式锁特别简单。etcd 提供了开箱即用的包 concurrency,几行代码就实现一个分布式锁。 ......
553
0
0
2022-04-10
[TOC]OAUTH之钉钉第三方授权hello,我是小魔童哪吒,欢迎点击关注,有更新,将第一时间呈现到你的面前胖sir:小魔童,我今天收到了一个需求,期望我们做一个第三方登录的功能,用户可以通过第三方授权来登录我们的web小魔童:啊哈?你有眉目吗胖sir:那当然,我知道可以通过微信登录,钉钉登录,github登录等等呢小魔童:那你知道都是咋实现的吗?说给我听 ......
408
0
0
2022-04-10
开发中需要确认一个函数、模块结果是否正确func addUpper(n int)int{ res:=0for i := 1; i <n ; i++ { res+=i }return res } 传统方法测试就是调用这个函数,看返回结果是否正确缺点:需要在main函数中调用,测试的时候去修改main函数,运行中的项目得停 ......
524
0
0
2022-04-09
map 的基本介绍map 是 key-value 数据结构,又称为字段或者关联数组。类似其它编程语言的集合, 在编程中是经常使用到map 的声明var map 变量名 map[keytype]valuetypekey 可以是什么类型bool, 数字,string, 指针, channel , 还可以是只 包含前面几个类型的 接口, 结构体, 数组 , 通常 ......
467
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 ......
356
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 ......
355
0
0
2022-04-09
顺序控制分支控制循环控制顺序控制从上到下逐步执行分支控制分支控制就是让程曦有选择执行单分支双分支多分支单分支控制//if 条件表达式 { //} func main() {var age int fmt.Println("请输入年龄") fmt.Scanln(&age) if age>18{ f ......
476
0
0
2022-04-09
变量的介绍变量相当于内存中一个数据存储空间的表示,像门牌号,通过门牌号找到房间(值)变量的使用定义变量给变量赋值使用变量变量的使用三种方式指定变量类型,声明后不赋值,使用默认值根据值自 推导变量类型:=的方式定义未曾定义过的变量var i int //0 var num= 10.11 fmt.Println(num) fmt.Println(ref ......
512
0
0
2022-04-09