极客技术博客 - 编程笔记与技术分享

分享 PHP、Python、JavaScript、Java 等编程笔记、开发经验与实用技巧。

日更写作是一条捷径

选择比努力更重要。不要选周更,也不要选一周写几篇,更不要等自己有感觉再写。选择这些方式,总有一天你会放弃写作。......

路之 ·

写作,要不断分享你的每一小步

IP 价值写作,其中一个部分是分享你在目标、梦想这条路上取得的成果。有些人不好意思分享成果,即使你内心真的为这些成果感到骄傲。之所以不好意......

路之 ·

排版不重要,内容才重要

提问:公众号后台看不到壹伴助手,但电脑页面显示已经装上了,怎么处理呀?路之:没有用过这个软件,也没有排过版,不要把时间花在排版上,几乎没有......

路之 ·

每天没时间写作怎么办?

所谓的没时间写作,实际上并不是没时间。而是,写作在你那里优先级不高。如果,优先级足够高,就一定会有时间写作。</......>

路之 ·

公众号文章定时发表

大家都知道公众号发文最好固定在同一个时间点。但是,有时候提前写完了,再等到那个时间点会突然错过。怎么办?公众号......

路之 ·

公众号文章发表时间

问: 路之,发布文章时间上有什么需要注意的吗?比如一般都什么时间发布好?发布文章尽量固定同一个时间发布吗?路之: 选你的目标用户有时间看的时刻,比如面对上班族,可以......

路之 ·

误区:没内容写,都写完了

没有内容写了,都写完了。很多写作者都有这个感受,其实这个感受来自一个错误的想法:写过一遍,就不值得写了。实际上,一个知识点,值得翻来覆去地......

路之 ·

3.1 实现服务启动时可选的配置项

使用 Options 设计模式实现,它可以让我们在服务启动时根据需要选择性地配置应用程序。可配置项,代码片段:// ./internal/pkg/core/core.go type option struct { enablePProf bool enableSwagger bool enablePrometheus bool enableCors bool alertNotify proposal.AlertHandler recordHandler proposal.RecordHandler } // WithEnablePProf 启用 pprof func WithEnablePProf() Option { return func(opt *option) { opt.enablePProf = true } } // WithEnableSwagger 启用 swagger func WithEnableSwagger() Option { return func(opt...

新亮 ·

3.2 实现异常捕获与告警

使用 defer 和 recover 函数来实现异常捕获与告警。defer 用于延迟函数的执行,recover 用于捕获 panic 异常并进行处理。框架已经集成,代......

新亮 ·

3.3 实现错误处理与告警

使用 IsAborted 函数来判断进行错误处理。统一处理,代码片段:// ./internal/pkg/core/core.go // region 发生......

新亮 ·

3.4 实现链路日志记录

目前可收集日志类型包括:当前的请求日志当前的响应日志自定义调试日志MySQL 操作日志Redis 操作信息Mongo 操作信息请求三方 API 接口的请求与响应日志日志收集,代码片段:// ./internal/pkg/core/core.go // region 记录日志 var t *trace.Trace if x := context.Trace(); x != nil { t = x.(*trace.Trace) } else { return } decodedURL, _ := url.QueryUnescape(ctx.Request.URL.RequestURI()) // ctx.Request.Header,精简 Header 参数 traceHeader := map[string]string{ "Content-Type": ctx.GetHeader("Content-Type"), } t....

新亮 ·

3.5 包装 gin IRoutes

IRoutes 接口是定义路由组的接口。IRoutes 接口包含了定义路由的方法,可以用于添加路由和中间件等。代码片段:// ./......

新亮 ·

3.6 包装 gin Context

Context 是一个上下文对象,它提供了许多有用的方法和属性,用于处理 HTTP 请求和响应。代码片段:// ./internal/pkg/core/con......

新亮 ·

5.6 示例二:集成登录、注册和用户管理功能

缘起:有部分开发者提出了这样的需求:亮哥,看了文档和源码后,我还是不知道如何下手,可以基于 gin-api-mono 集成下登录、注册和用户管理功能吗?于是就有它。为了避免有些开发者不需要这些功能,我重新开了一个新项目去实现。效果操作流程初始化数据表时,请使用 README.md 文档中的表结构。项目启动与 gin-api-mono 一致,查看接口文档。操作「管理员注册」接口,创建数据。操作「管理员登录」接口,登录成功并获取 Token。在接口文档 Authorize 中配置 Token,可访问用户管理相关接口。获取源码,可添加我微信 wx-xinliang 。有启发...

新亮 ·