首页
学习
活动
专区
工具
TVP
发布

生活处处有BUG

专栏成员
177
文章
101856
阅读量
24
订阅数
Git超经典操作场景,哪怕是老手也有收获!
你用 git commit -m 提交了一次变化(changes),你可以用git show命令显示当前HEAD上的最近一次的提交(commit):
用户10002156
2024-04-15
970
工具推荐--Docker图形化工具Portainer,贼好用
docker 命令行对于学习入门 docker 是非常有用的,新手推荐也是先学命令。但我已经用了一年多了,时间长了,来来回回都是很些很熟悉的命令,就有些繁琐了。推荐一个Docker图形化工具Portainer,轻量级又好用。
用户10002156
2024-04-15
4150
Git经典操作场景
你用 git commit -m 提交了一次变化(changes),你可以用git show命令显示当前HEAD上的最近一次的提交(commit):
用户10002156
2024-02-06
1260
一键查看服务器利用率,这个脚本贼高效
有时候要查看,或者监控服务的使用情况。每次登录上去,都很麻烦,有一个写好的shell脚本就简单多了,一键查看服务器利用率。
用户10002156
2024-01-29
1250
服务器开机启动,你还在用rc-local吗?大神都用服务(service)机制
在最新版本的 systemd 中,已经不再推荐使用 rc-local 来运行自定义脚本或命令。相反,建议使用 systemd 的单位(unit)和服务(service)机制来管理和运行自定义脚本或命令。
用户10002156
2024-01-29
6970
laravel-redis消息队列
基本的流程就是由生产者(业务代码)将数据推送到队列中(此处使用的是Redis),然后由消费者(处理程序)从队列中取出数据进行加工处理。
用户10002156
2024-01-29
2240
MySQL删除重复数据中ID较大的数据
用户10002156
2024-01-23
1740
内网穿透_ngrok
Ngrok 也有免费版使用(注册账号即可使用),而且比 Sunny-Ngrok(在香港)要稳定一点,但是没有 natapp 稳定,因为服务器在美国,内网穿透时很不稳定,推荐使用 natapp 。
用户10002156
2024-01-23
2700
手把手,带你从零封装Gin框架(十二):使用 Wire 依赖注入重构
由于之前项目中各个组件都是通过全局变量传递的,随着项目的推进,一大堆全局变量会混成一团,如果一不小心在某个地方对全局变量进行修改将可能引发严重的 panic,便打算使用依赖注入重构一下, Wire 是一个灵活的依赖注入工具,能够帮助我们在程序编译期就完成依赖注入。
用户10002156
2024-01-23
6320
手把手,带你从零封装Gin框架(十一):使用文件记录错误日志 & 跨域处理
Gin 框架的日志默认是在控制台输出,本篇将使用 Gin 提供的 RecoveryWithWriter() 方法,封装一个中间件,使用 lumberjack 作为的写入器,将错误日志写入文件中;同时使用 github.com/gin-contrib/cors ,作下跨域处理。
用户10002156
2024-01-23
6650
手把手,带你从零封装Gin框架(九):Token 续签 & 封装分布式锁
如果将 token 的有效期时间设置过短,到期后用户需要重新登录,过于繁琐且体验感差,这里我将采用服务端刷新 token 的方式来处理。先规定一个时间点,比如在过期前的 2 小时内,如果用户访问了接口,就颁发新的 token 给客户端(设置响应头),同时把旧 token 加入黑名单,在上一篇中,设置了一个黑名单宽限时间,目的就是避免并发请求中,刷新了 token ,导致部分请求失败的情况;同时,我们也要避免并发请求导致 token 重复刷新的情况,这时候就需要上锁了,这里使用了 Redis 来实现,考虑到以后项目中可能会频繁使用锁,在篇头将简单做个封装
用户10002156
2024-01-18
5871
手把手,带你从零封装Gin框架(八):引入Redis & 解决 JWT 注销问题(黑名单策略)
由于 JWT 是无状态的,只能等到它的有效期过了才会失效,服务端无法主动让一个 token 失效,为了解决这个问题,我这里使用黑名单策略来解决 JWT 的注销问题,简单来说就将用户主动注销的 token 加入到黑名单(Redis)中,并且必须设置有效期,否则将导致黑名单巨大的问题,然后在 Jwt 中间件鉴权时判断 token 是否在黑名单中
用户10002156
2024-01-17
7200
手把手,带你从零封装Gin框架(七):实现登录接口 & jwt 鉴权中间件
这一篇将使用 jwt-go[1] 包来完成登录接口,颁发 token 令牌,并编写 jwt 中间件对 token 统一鉴权,避免在各个 controller 重复编写鉴权逻辑
用户10002156
2024-01-17
2.5K0
手把手,带你从零封装Gin框架(六):初始化 Validator & 封装 Response & 实现第一个接口
Gin 自带验证器返回的错误信息格式不太友好,本篇将进行调整,实现自定义错误信息,并规范接口返回的数据格式,分别为每种类型的错误定义错误码,前端可以根据对应的错误码实现后续不同的逻辑操作,篇末会使用自定义的 Validator 和 Response 实现第一个接口
用户10002156
2024-01-17
1K0
手把手,带你从零封装Gin框架(五):静态资源处理 & 优雅重启服务器
这一篇将对路由进行分组调整,把定义路由的文件集中到同一个目录下,并处理前端项目打包后的静态文件。在 Go 1.8 及以上版本中,内置的 http.Server 提供了 Shutdown() 方法,支持平滑重启服务器,本次将使用它调整项目启动代码,若 Go 版本低于 1.8 可以使用 fvbock/endless[1] 来替代
用户10002156
2024-01-17
1.3K1
SQLite光束入门,一篇搞定(python版)
平常做一些简单的demo测试,或者数据量比较小的数据存储都是放json文件,或者csv文件,感觉连接MySQL比较麻烦。但有些测试的项目最终是要转产的,且用的是MySQL一类关系型数据库,就要改代码,很麻烦。SQLite就很方便做临时数据了,不用安装什么软件,可以写sql语句。
用户10002156
2024-01-17
1920
用inotify-tools监控配置文件变化并作备份
可以使用inotifywait命令来监控文件系统事件,包括文件新增和减少,以及文件名和文件路径的变化。:
用户10002156
2024-01-17
3290
手把手,带你从零封装Gin框架(三):日志初始化
本篇来讲一下怎么将日志服务集成到项目中,它也是框架中必不可少的,平时代码调试,线上 Bug 分析都离不开它。这里将使用 zap 作为日志库,一般来说,日志都是需要写入到文件保存的,这也是 zap 唯一缺少的部分,所以我将结合 lumberjack 来使用,实现日志切割归档的功能
用户10002156
2024-01-10
9570
手把手,带你从零封装Gin框架(四):数据库初始化(GORM)
许多框架都会引入 ORM 模型来表示模型类和数据库表的映射关系,这一篇将使用 gorm[1] 作为 ORM 库,它遵循了 ActiveRecord(模型与数据库表一一对应) 模式,并且提供了强大的功能,例如模型关联、关联预加载、数据库迁移等,更多内容查看官方文档[2]
用户10002156
2024-01-10
1.8K0
手把手,带你从零封装Gin框架(二):配置初始化 & 全局变量
配置文件是每个项目必不可少的部分,用来保存应用基本数据、数据库配置等信息,避免要修改一个配置项需要到处找的尴尬。这里我使用 viper 作为配置管理方案,它支持 JSON、TOML、YAML、HCL、envfile、Java properties 等多种格式的配置文件,并且能够监听配置文件的修改,进行热重载,详细介绍大家可以去官方文档查看
用户10002156
2024-01-08
1.6K0
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档