上篇文章开始,我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下:环境搭建服务拆分(本文)用户服务产品服务订单服务支付服务RPC 服务 Auth 验证服务监控链路追踪分布式事务期望通过本系列带你在本机利用 Docker 环境利用 go-zero 快速开发一个商城系统,让你快速上手微服务。完整示例代码:gith ......
380
0
0
2022-08-20
本文开始,我们会出一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下:环境搭建(本文)服务拆分用户服务产品服务订单服务支付服务RPC 服务 Auth 验证服务监控链路追踪分布式事务期望通过本系列带你在本机利用 Docker 环境利用 go-zero 快速开发一个商城系统,让你快速上手微服务。完整示例代码:github ......
388
0
0
2022-08-20
Go 库存扣减的几种实现方法!!! 本篇文章只是简单提供个实现的思路,如果你要用到生产环境,请自行优化方法。尤其多个微服务之间。!!!这里使用了 grpc、proto、gorm、zap、go-redis、go-redsync 等 packageGo Mutex 实现var m sync.Mutex func (*InventoryServer) LockS ......
356
0
0
2022-08-19
章节主要目的此章主要练习的是沟通能力、学习能力、知识迁移能力、抽象建模能力等。这需要有扎实的数学基础,如果没有,相信,很多人会像我一样,一道题看很久才能看懂,要理解那就要借助视频,还要动手画图才可以理解的了。这是先天不足后天畸形的我们面向业务和搜索编程带来的硬伤。这种题目不会太难,但是很具有动脑的需要,如有必要,建议看原文。正式开始第六章面试题38:数字在排 ......
408
0
0
2022-08-19
go语言的一个功能强大,所见即所的跨平台guigolang本身没有gui发布功能,使用golang开发桌面程序,试用了很多gui库如flyne、govcl、walk等都不满意,在找寻试用go的gui时,看到了一个功能强大、小巧简单的潜力巨大的新兴开源godot游戏引擎,可以进行图形程序开发。不用怀疑,godot程序本身就是用godot游戏引擎开发的,图形程序 ......
708
0
0
2022-08-19
字符——匹配任意字符 e.g: abc. 结果: abcd,abcx,abc9;[] ——匹配括号中任意一个字符 e.g: [abc]d 结果:ad,cd,1d;——[-]中表示范围 e.g: [A-Za-z0-9];^ ——[^]中表示除括号中的任意字符 e.g:[^xy]a 结果:aa,da,不能为xa,ya;数量限定? ——前面单元匹配0或1次;——前 ......
385
0
0
2022-08-19
Slice首先,我们先来讨论一下Slice,中文翻译叫“切片”,这个东西在Go语言中不是数组,而是一个结构体,其定义如下:type slice struct { array unsafe.Pointer //指向存放数据的数组指针 len int //长度有多大 cap int ......
400
0
0
2022-08-19
for 循环写法1批量赋值func main() { pars := []int{1,2,3,4} for i,j := 0,len(pars)-1; i < j; i,j = i+1,j-1 { //pars[0],pars[1] = pars[2],pars[3] fmt.Println("i ......
507
0
0
2022-08-18
文章来自微信公众号:Go语言圈为什么需要分布式锁1 用户下单锁住 uid,防止重复下单。2 库存扣减锁住库存,防止超卖。3 余额扣减锁住账户,防止并发操作。分布式系统中共享同一个资源时往往需要分布式锁来保证变更资源一致性。分布式锁需要具备特性1 排他性锁的基本特性,并且只能被第一个持有者持有。2 防死锁高并发场景下临界资源一旦发生死锁非常难以排查,通常可以通 ......
433
0
0
2022-08-18
文章来自:单变量 :=Go 语言中新增了一个特殊的运算符:=,这个运算符可以使变量在不声明的情况下直接被赋值使用。其使用方法和带值声明变量类似,只是少了var关键字,形如变量名:=变量值,这样就等于声明了一个带值的变量,该变量的类型与其变量值一致。可以看到,上面的代码中我们并没有提前对 helloworld这个变量进行声明,而是直接就拿来用了,而且程序也没有 ......
434
0
0
2022-08-15
文章来自公众号:点击进入:Go 语言技术微信群一、我们为什么选择Go语言选择Go语言的原因可能会有很多,关于Go语言的特性、优势等,我们在之前的文档中也已经介绍了很多了。但是最主要的原因,应该是基于以下两方面的考虑:执行性能毕竟是类C的执行速度,对于一些服务来说,性能是极其重要的一环,事关系统的吞吐、访问的延迟,进而会影响用户的体验,Go语言通过协程可以方便 ......
476
0
0
2022-08-14
章节主要目的 看题目就应该知道是算法题的思路,这里不理解为完全为了面试,这样会很累的,权当做技术的追求吧,我们除了增删改查,复制粘贴,写服务,封装代码,总要找点有其他动脑子的事情做吧,虽说全局观很重要,架构很重要,但是我们总要给自己找个学习的理由吧😄回到正题,我们写需求之前都会写个概要设计文档(当然现在很多人已经没有这习惯,公司也没有这要求了,但是不妨碍我们 ......
434
0
0
2022-08-13
进程和线程注意事项1.子进程会拷贝父进程的所有资源,变量。注意:子进程拷贝了父进程数据空间、堆、栈等资源的副本,2.父子进程间不共享这些存储空间,共享的空间只有代码段,子进程修改一个全局变量,父进程的这个全局变量不会改变,因为是一个副本。比较1.进程是资源分配的基本单位。2.线程是独立调度的基本单位。3.在同一个进程中,线程的切换不会引起进程的切换。在不同的 ......
369
0
0
2022-08-13
Go 嵌入类型什么事嵌入类型:可以把已有的类型声明在新的类型里面,在其他语言可以采用继承的方式,就可以拥有父类的方法以及属性,而go中结构体的属性嵌入组合会相识且更加方便接口类型代码案例//这里 student 就是内部类型 type student struct { name string email string } //peo ......
382
0
0
2022-08-12
… 用法1.‘…’ 其实是go的一种语法糖。它的第一个用法主要是用于函数有多个不定参数的情况,可以接受多个不确定数量的参数。2.第二个用法是slice可以被打散进行传递例子1:其实可以理解为切片的变体func test1(args ...string) { //可以接受任意个string参数 for _, v:= range args{ ......
493
0
0
2022-08-12