
GO
文章平均质量分 77
GO
码一行
一个喜爱编程技术的非著名码农人士
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Go Mutex 错过后悔的重要知识点
go 的 Mutex 实现中,state 字段是一个 32 位的整数,不同的位记录了四种不同信息,在这种情况下, 只需要通过原子操作就可以保证一次性实现对四种不同状态信息的更改,而不需要更多额外的同步机制。原创 2023-07-05 10:25:30 · 319 阅读 · 0 评论 -
三分钟彻底弄懂什么是分布式和微服务架构
微服务是基于分而治之的思想演化出来的。过去传统的一个大型而又全面的系统,随着互联网的发展已经很难满足市场对技术的需求,于是我们从单独架构发展到分布式架构,又从分布式架构发展到SOA架构,服务不断的被拆分和分解,粒度也越来越小,直到微服务架构的诞生。微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的。原创 2023-02-01 11:33:59 · 686 阅读 · 1 评论 -
Go 语言快速入门指南:指针、Map
Map是一种通过key来获取value的一个数据结构,其底层存储方式为数组,在存储时key不能重复,当key重复时,value进行覆盖,我们通过key进行hash运算(可以简单理解为把key转化为一个整形数字)然后对数组的长度取余,得到key存储在数组的哪个下标位置,最后将key和value组装为一个结构体,放入数组下标处。Go语言中MapKeyType: 表示键的类型。ValueType: 表示键对应的值的类型。map类型的变量默认初始值为nil,需要使用make()函数来分配内存。其中cap表示。...原创 2022-08-07 15:11:25 · 598 阅读 · 0 评论 -
Go 语言快速入门指南:结构体
Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。Part11. 类型别名和自定义类型11.1 自定义类型在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如://将MyInt定义为int类型type MyInt i原创 2022-08-06 07:40:39 · 407 阅读 · 0 评论 -
Go 语言快速入门指南: 变量和常量
1. 变量1.1 变量的来历程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。1.2 变量类型变量(Variable)的功能是存储数据。不同的变量保存的数据类型可能会不一样。经过半个多世纪的发展,编程语言已经基本形成了一套固定的类型,常见变量的数据类型有:**整型、浮点型、原创 2022-08-04 13:42:23 · 228 阅读 · 0 评论 -
gin牛逼的context
Gin封装的最好的地方就是context和对response的处理.github的README的介绍,基本就是对这两个东西的解释.本篇文章主要解释context的使用方法,以及其设计原理。原创 2022-08-01 21:05:47 · 926 阅读 · 0 评论 -
Go 项目实战-获取多级分类下的全部商品
备注前面项目中用到的代码已经分享到GitHub中去了,并且以后所有项目中会出现的代码都会提交上去,欢迎查阅。地址goshop感兴趣的可以点个star哦~goshop开源项目的更新。原创 2022-07-31 08:02:21 · 449 阅读 · 0 评论 -
GO项目实战 — Gorm格式化时间字段
在使用 查询时,如果未对时间字段进行处理,结构体内的字段类型咱们使用的是 :这里咱们使用 类型在 进行查询的返回结果,读取到的时间字段往往是这样:“”,带着时区和毫秒。但其实往往这样的格式,不是咱们想要的。如果想要 “” 这样的格式,需要怎么处理呢?当插入一条数据到对应的表中时, 字段是不赋值的,插入到数据库则会 ,系统赋了⼀个默认值,当不想插⼊时如何处理?读取到的时间需要是:“2022-07-03 22:14:02” 这样的格式当时间字段不赋值时,不插入默认值虽然该数据类型实际类型为 ,但是不原创 2022-07-04 18:17:28 · 5109 阅读 · 4 评论 -
Go项目实战—参数绑定,类型转换
最近在研究微服务框架go-zero,没有更新,在这里说声抱歉,后面会持续更新新的功能。请继续关注~~~~今天考虑参数绑定获取。这里肯定有些疑惑,之前不是封装了获取全部参数的方法吗?回顾之前咱们封装了获取全部参数的方法,只能是请求,并且请求方式必须是: 才能正常获取,局限性非常大。需求1:使用任意请求方式,任意请求格式都可以获取到指定的值?需求2:获取到的类型参数,转换成类型用于的查询?框架中可以使用参数绑定进行任意请求方式和请求类型获取请求的参数框架集成,使用条件查询时,需要传入类型的数组格式,需要。首先,原创 2022-07-04 18:16:27 · 854 阅读 · 0 评论 -
从一个例子看Go的逃逸分析
下面是一段 c 代码,函数 getStr 生成了 a-z 的串,我们分别在函数内部和 main 中对字串进行了输出。运行结果如下:如果你有一些 c 的编程经验,那么你一定知道产生这个结果是因为 buf[27]的内存是在函数栈上分配的,这段内存在函数结束后会被自动回收,所以在 main 函数中想再次输出这个字串,就会产生一个未知的结果。我们在对上面代码进行编译时,编译器也会给出 告警:解决这个问题的方法之一(只是一种方法,并非好的实践)是在函数内部使用 malloc 申请一段内存,因为 malloc 的原创 2022-06-28 15:00:14 · 221 阅读 · 0 评论 -
Go 处理大数组:使用 for range 还是 for 循环?
我们知道,Go 的语法比较简洁。它并不提供类似 C 支持的 while、do...while 等循环控制语法,而仅保留了一种语句,即 for 循环。原创 2022-06-19 14:35:20 · 201 阅读 · 0 评论 -
Gopher 应该记住这 10 个命令
大家好,我是程序员小乔。 GO最近真的起飞了。越来越多的公司采用它,开发人员也普遍接受它,因为它易于学习,功能强大。如果你目前正在学习GO语言,这里有10个有用的GO命令,你可能会在每天使用GO时使用它们。...原创 2022-06-06 21:31:51 · 221 阅读 · 0 评论 -
从项目的一个 panic 说起:Go 中 Sync 包的分析应用
项目开发中遇到一个错误 “fatal error: concurrent map read and map write”。有过一两年 Golang 开发经验的同学应该都不陌生,这是 Golang 内建的 map 并发非安全 导致的。解决办法也不复杂 — 用 sync.map 代替了内建的 map 。sync.map 包是 Golang 1.9 之后官方支持的并发安全的 map 包,之所以放在 sync 包里,是因为 sync 包里包含了 Golang 语言的绝大部分同步原语,它是 Golang 并发编程中原创 2022-06-01 09:25:16 · 384 阅读 · 0 评论 -
GO项目实战—开发上传图片功能【goshop开源项目| 20220527更新】
goshop开源项目的更新备注:前面项目中用到的代码已经分享到GitHub中去了,并且以后所有项目中会出现的代码都会提交上去,欢迎查阅。地址 goshop 感兴趣的可以点个star哦~https://gitee.com/jobhandsome/goshop/今天图片上传功能,下面是技术点:限制图片上传的类型:jpg|png|jpeg保存图片并以时间(天)作为动态目录存储接下来咱们就来实现以上功能接下来咱们就来实现以上功能:// 上传图片接口func Uploads(ctx *gin..原创 2022-05-28 08:34:00 · 671 阅读 · 0 评论 -
如何判断一个 interface{} 的值是否为 nil ?
引言在开始之前,先考你一个非常 Go 味的经典问题:如何判断一个 interface{} 的值是否为 nil ?这也是面试有可能会被问到的一个问题,这个问题很 “迷”,平时没有特别留心的朋友,很容易在这边裁了。我相信很多人会下意识的回答,直接 v == nil 进行判断不就好了吗?很久之前,我也是那么想的,可写了个 demo 后,才发现事情没那么简单。请看下面这段代码,可以先猜测一下输出的结果。package mainimport ( "fmt")func main() {原创 2022-05-21 09:27:53 · 665 阅读 · 0 评论 -
Go项目实战之验证码的生成和使用(易扩展方式【goshop开源项目 | 20220516更新】
goshop开源项目的更新备注:前面项目中用到的代码已经分享到GitHub中去了,并且以后所有项目中会出现的代码都会提交上去,欢迎查阅。地址 goshop 感兴趣的可以点个star哦~ goshop开源项目的更新 今天咱们做一个登录功能中的验证码功能:封装验证码生成,验证码验证等功能,以便多复用封装session的中间件接下来咱们就来实现以上的问题和功能:先封装验证码业务部分// 生成验证码func Captcha(ctx *gin.Context) { /原创 2022-05-16 21:29:50 · 647 阅读 · 0 评论 -
Go 工程化标准实践
本文参考 Go 微服务框架 go-kratos/kratos 的项目结构及相关最佳实践,Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关功能及工具。项目结构标准项目结构/cmd|-- cmd |-- demo |-- demo +-- main.go +-- demo1 |-- demo1 +-- main.go项目的主干,每个应用程序目录名与可执行文件的名称匹配。该目录不应放置太多代码。/int.原创 2022-05-14 11:54:15 · 1675 阅读 · 1 评论 -
Go项目实战之无限级结构树形数据格式(易扩展方式)【goshop开源项目 | 20220430更新】
goshop开源项目的更新备注:前面项目中用到的代码已经分享到GitHub中去了,并且以后所有项目中会出现的代码都会提交上去,欢迎查阅。地址 goshop 感兴趣的可以点个star哦~ goshop开源项目的更新 今天咱们做一个无限级结构树形数据格式:做一个菜单列表形式的一个树形结构,以满足后续的功能业务开发,类似于下图的功能做成方便扩展的方式接下来咱们就来实现以上的问题和功能:先修改一下分页获取全部数据的方法 findAll,将之前[]Roles改为[]原创 2022-04-30 19:37:19 · 753 阅读 · 3 评论 -
Go项目实战—格式化日期函数 (易扩展方式)【goshop开源项目 | 20220428更新】
goshop开源项目的更新备注:前面项目中用到的代码已经分享到GitHub中去了,并且以后所有项目中会出现的代码都会提交上去,欢迎查阅。地址 goshop 感兴趣的可以点个star哦~ goshop开源项目的更新 今天在考虑之前做的登录接口记录登录时间无法正常记录入库的问题:不使用gorm.Model 中的UpdateAt的字段,单独拉一个LoginAt作为记录字段:类型就定为string通过获取当前时间戳转换后的日期格式:2022-04-24T16:29:27+08:00 转换原创 2022-04-28 20:43:12 · 537 阅读 · 0 评论 -
Go项目实战—开发完善分页插件(易扩展方式)【goshop开源项目 | 20220424更新】
goshop开源项目的更新备注:前面项目中用到的代码已经分享到GitHub/Gitee中去了,并且以后所有项目中会出现的代码都会提交上去,欢迎查阅。地址 goshop 感兴趣的可以点个star哦~ goshop开源项目的更新 今天在考虑怎么实现数据分页和检索功能:通过传入页数(page),分页条数(pageSize) ,实现数据的 limit 分页功能动态支持检索条件和排序的功能接下来咱们就来实现以上功能首先需要先封装一个 Paginate 的扩展用于对gorm操作时引用Off原创 2022-04-28 20:40:14 · 660 阅读 · 0 评论