如何基于 Gin 封装出属于自己 Web 框架?

4 月 7 日
阅读 2 分钟
102
封装路由:Gin 的路由是通过 HTTP 方法和 URL 路径进行匹配的,你可以根据自己的需求,封装出符合应用的业务需求的路由。你可以考虑将路由进行分类,例如公共路由、私有路由等,以方便管理。

看看我精心整理的 Go 面试干货,面试时候能帮到你

4 月 7 日
阅读 2 分钟
118
这份题库经过精心策划和整理,覆盖了 Golang 领域的十大核心方面,包括并发与并行、通道的高级用法、性能优化、高级数据结构和算法、系统设计与架构、测试与错误处理、包管理与模块、反射和接口、安全性、参考简历等,是您面试准备的得力助手。

如何基于 Gin 封装出属于自己 Web 框架?

1 月 12 日
阅读 2 分钟
454
封装路由:Gin 的路由是通过 HTTP 方法和 URL 路径进行匹配的,你可以根据自己的需求,封装出符合应用的业务需求的路由。你可以考虑将路由进行分类,例如公共路由、私有路由等,以方便管理。

Gin 实现自动生成接口文档

1 月 8 日
阅读 5 分钟
438
2)保持文档与代码同步:代码和文档往往是不同步的,当代码发生变更时,手动更新文档可能容易出现遗漏或错误。自动生成接口文档可以保持文档与代码的同步,确保文档的准确性和实时性。

简洁、轻量级的 Go API 框架

1 月 8 日
阅读 2 分钟
5.7k
go-gin-api 这是一个基于 Gin 的 API 框架,它提供了 WEB 界面一键安装的方式,让你可以快速启动一个开箱即用的 Go 项目。无论你是否有项目经验,这个框架都适合作为练手项目使用 (新手入门必备) 。

Go - 使用 sync.WaitGroup 来实现并发操作

2021-11-01
阅读 2 分钟
2.4k
如果你有一个任务可以分解成多个子任务进行处理,同时每个子任务没有先后执行顺序的限制,等到全部子任务执行完毕后,再进行下一步处理。这时每个子任务的执行可以并发处理,这种情景下适合使用 sync.WaitGroup。

Go - 使用 sync.Map 来解决 map 的并发操作问题

2021-10-30
阅读 2 分钟
1.9k
在 Golang 中 map 不是并发安全的,自 1.9 才引入了 sync.Map ,sync.Map 的引入确实解决了 map 的并发安全问题,不过 sync.Map 却没有实现 len() 函数,如果想要计算 sync.Map 的长度,稍微有点麻烦,需要使用 Range 函数。

Go - 基于逃逸分析来提升程序性能

2021-10-30
阅读 2 分钟
2.2k
因为我们想要提升程序性能,通过逃逸分析我们能够知道变量是分配到堆上还是栈上,如果分配到栈上,内存的分配和释放都是由编译器进行管理,分配和释放的速度非常快,如果分配到堆上,堆不像栈那样可以自动清理,它会引起频繁地进行垃圾回收(GC),而垃圾回收会占用比较大的系统开销。

Go - 使用 sync.Pool 来减少 GC 压力

2021-10-30
阅读 1 分钟
4k
sync.Pool 本质是用来保存和复用临时对象,以减少内存分配,降低 GC 压力,比如需要使用一个对象,就去 Pool 里面拿,如果拿不到就分配一份,这比起不停生成新的对象,用完了再等待 GC 回收要高效的多。

分布式之接口幂等性

2021-09-20
阅读 1 分钟
2.6k
幂等性 更多使用的情况是第一次请求知道结果,但是由于网络抖动或连接超时等情况未进行正常返回,在这种情况下系统自动再次发起请求,其目的是确认第一次是否请求完成。

分布式之配置中心

2021-09-11
阅读 1 分钟
2.4k
前言我们在平时工作中可能会有这样的需求,系统运行期间需要动态调整配置项,比如:调整系统告警人调整活动开关调整降级开关调整日志级别...以上这些还不够,随着程序功能的日益复杂对配置的期望也越来越高,还需要满足:实现分环境、分集群的管理配置实现配置的灰度发布配置的发布需要完善的授权机制配置的发布需要记录...

Kafka 与 RabbitMQ 如何选择使用哪个?

2021-08-28
阅读 1 分钟
3.4k
前言我们在工作中经常会用到异步消息,主要使用两种消息模式:消息队列发布/订阅消息队列:多个生产者可以向同一个消息队列发送消息,但是一个消息只能被一个消费者消费。发布/订阅:一个消息可以被多个订阅者并发的获取和处理。Kafka 和 RabbitMQ 都能满足如上的特性,那么我们应该如何选择使用哪一个?这两个 MQ 有什...

分布式事务之最终一致性实现方案

2021-08-21
阅读 1 分钟
4.5k
前言这篇文章是《关于分布式事务的理解》的后续篇:分布式事务之最终一致性实现方案。还是那个电商需求,一个订单支付完成后的业务场景,有如下操作:更改订单的状态为 “已支付”扣减商品库存给会员增加积分创建出库单通知仓库发货咱们使用 最终一致性方案 去实现它。什么是最终一致性?从字面上看就是 保证数据最后的一...

回答两个被频繁问到的代码写法问题

2021-08-14
阅读 2 分钟
2.4k
前言根据使用者的反馈,回答关于开源项目:go-gin-api 中被频繁问到的两个代码写法问题。以如下代码片段为例:第 8 行,这种写法是什么意思?第 11 行,为什么定义一个 i() 方法?问题一 {代码...} 这代码是什么意思?强制 *signature 去实现 Signature 接口,编译器会检查 *signature 类型是否实现了 Signature 接口。 ...

关于分布式事务的理解

2021-08-10
阅读 2 分钟
2.5k
业务场景电商业务上图是一个电商系统,当一个订单支付完成后的业务场景:更改订单的状态为 “已支付”扣减商品库存给会员增加积分创建出库单通知仓库发货想象一下,当订单支付完成后,个人积分延迟几分钟变更,这可以接受吗?火车票购票想想生活中火车票购票场景。想象一下,当最后一张火车票同时被两个人购买,去检票口检...

根据使用者反馈,对开源项目 go-gin-api 新增两个功能

2021-07-13
阅读 2 分钟
2.4k
前言根据使用者的反馈,对开源项目:go-gin-api 新增两个小功能。两个小功能都与语言包有关:功能1:接口返回的错误信息支持中英文;功能2:参数验证的错误信息支持中英文;我的实现方式是在项目安装的时候,选择 语言,然后项目中根据选择的语言进行输出对应的中英文,如下图。接口返回的错误信息支持中英文代码位置项...

关于处理电商系统订单状态的流转,分享下我的技术方案(附带源码)

2021-07-05
阅读 5 分钟
3.8k
前言在设计电商系统订单模块时,订单会涉及各种状态以及状态与状态之间的流转,可扩展性、可维护性 是我们需要关注的重点!本文分享一下我的技术方案。如上图,使用 golang 实现上图的订单流转,同时当后续增加订单状态或订单事件时,可以进行快速完成。目的关于订单状态的处理,使用统一入口,提高程序的 可扩展性 和 ...

如何设计 API 接口,实现统一格式返回?

2021-06-01
阅读 1 分钟
3.9k
前后端接口交互我们都知道,前端通常会通过后台提供的接口来获取数据来完成前端页面的渲染,前端可以为 PC 端、M 端、小程序、APP 等。在这废话就不多说了,这不是重点。接口返回值约定返回值规范设置返回的 HTTP 响应状态码;发生错误时,需设置 Response Body 的错误码和描述信息;正确返回HTTP 响应状态码,设置成 20...

优雅地处理错误真是一门学问啊!

2021-06-01
阅读 2 分钟
3.4k
这个大家肯定使用过,标准库的 errors 错误实现比较简单,无法进行堆栈追溯,对于产生错误时的上层调用者来讲不是很友好,无法获得错误的调用链详细信息。

Go - 开箱即用,WEB 界面一键安装,没有项目经验,可以拿这个练手

2021-05-23
阅读 4 分钟
3.1k
因为程序会使用到 Redis 和 MySQL,所以安装前请输入 Redis、MySQL 配置信息,点击初始化按钮,会将用到的数据表和默认数据进行初始化,在右侧可以看到初始化的日志信息。
封面图

Go - 一个对新手很友好的项目(带界面)

2021-04-24
阅读 4 分钟
6.1k
go-gin-api 是基于 Gin 进行模块化设计的 API 框架,封装了常用的功能,使用简单,致力于进行快速的业务研发,同时增加了更多限制,约束项目组开发成员,规避混乱无序及自由随意的编码。

Linux下编写一个PHP扩展

2017-04-09
阅读 2 分钟
3.2k
假设需求 开发一个叫做 helloWord 的扩展。 扩展里有一个函数,helloWord()。 {代码...} 本地环境 PHP版本:5.6.9 系统:Linux CentOS release 6.5 (Final) 最终效果 实现流程 第一步: {代码...} 如图: 第二步: {代码...} 如图: 第三步: {代码...} 如图: {代码...} 如图: {代码...} 如图: 第四步: {代码...} 第...