刷新
后台服务器开发领域,还有什么值得爬的山

博主头像 作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 因为我自己的水平还在山脚下,所以我只看见了眼前的这几座山…… 二十年前我刚入行的时候,我的岗位被称作“后台服务器开发”,如今可能有很多叫法:后端工程师,云原生 ...

golang unsafe遇上字符串拼接优化导致的bug

博主头像 最近料理老项目的时候被unsafe坑惨了,这里挑一个最不易察觉的错误记录一下。 这个问题几乎影响近几年来所有的go版本,为了方便讨论我就用最新版的1.24.3做例子了。 线上BUG 我们有一个收集集群信息的线上系统,这个系统有好几个数据源而且数据量比较大。众所周知Go语言总是会在一些关键性能点上拉跨 ...

frp增加IP限制

博主头像 核心设计理念 传统frp安全方案的不足 静态配置文件管理白名单IP,修改需要重启服务 分布式环境下多节点配置同步困难 缺乏实时阻断恶意IP的能力 Redis作为动态白名单存储的优势 实时生效:IP规则变更无需重启frp服务 集中管理:多台frp服务器共享同一套白名单规则 高性能验证:Redis的极速 ...

Golang+Gin实现api接口搭建

博主头像 一、简介: Gin是Go语言的一个微框架,也是是一个用 Go (Golang) 编写的 HTTP Web 框架,封装比较优雅,API相对友好。Gin具有性能优异和灵活快速等优点。它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。并且支持中间件、Crash 处理、JSON ...

K8stools工具

博主头像 简介 K8stools 是一个 Kubernetes 日常运维辅助工具集,旨在提升运维效率,辅助平台治理与资源优化。功能涵盖资源分析、趋势评估、异常检测、行为采集、成本估算等常见场景,适用于 DevOps、SRE、平台工程团队。 工具地址 功能模块 模块名称 功能说明 costEstimat ...

【Golang】实现一个 HTTP 反向代理服务器

博主头像 在企业应用开发中,如果需要对外提供接口,最好的方式是提供 HTTP 接口。为了避免重新实现一套 HTTP 服务代码,建议使用 grpc-gateway 包,将 HTTP 请求转化为 gRPC 请求,以完全复用 gRPC 接口的请求处理逻辑。 grpc-gateway 介绍 grpc-gateway ...

Go-Spring v1.2.0 版本简介

博主头像 引言 随着微服务和云原生架构的普及,Go 语言以其高并发、低延迟和简洁语法在后端开发领域迅速崛起。然而,原生 Go 在项目结构、依赖管理、配置热更新等方面相比 Java Spring 生态尚有短板。Go‑Spring 正是在这样的背景下应运而生——它汲取 Java 社区成熟的 Spring / Sp ...

层序遍历重建二叉树,绘制二叉树图片

博主头像 在力扣刷二叉树相关题目时,输入一般都是完全层序遍历,我习惯在自己电脑上调试代码,因此才编写下面代码将完全层序遍历数据重建二叉树对象。 生成的结果二叉树一般也只会给出完全层序遍历,无法直观的感受二叉树实际情况,因此我编写代码将二叉树对象生成svg图片,刷二叉树相关题目更清晰直观了。 力扣原题:http ...

Goland终端PowerShell命令失效

博主头像 Goland终端Terminal的PowerShell不能使用,明明windows上升级了PowerShell 7设置了配置文件,但是只能在windows终端下使用,goland终端下直接失效报错,安装升级PowerShell请看[博客]([Windows11终端升级PowerShell7 - Ha... ...

gRPC 和传统 RPC 有啥不一样?一篇讲清楚!

博主头像 现在大家做系统开发,都喜欢搞"微服务架构"——简单说就是把一个大系统拆成很多小服务,这样更灵活也更容易扩展。那这些服务之间怎么沟通呢?就得靠一种技术叫 RPC(远程过程调用)。今天我们就来聊聊它的"进化版":gRPC,看看它和传统的 RPC 到底有啥不一样。 一、先搞懂几个概念 什么是 RPC? 可 ...

gRPC与RPC的差异

博主头像 在微服务架构日益流行的今天,远程过程调用(RPC)技术成为连接各个服务的重要桥梁。本文将详细比较传统RPC与谷歌开发的gRPC框架,通过具体示例展示它们在请求处理、数据格式、性能等方面的差异。 基本概念回顾 RPC (远程过程调用) 是一种允许程序调用另一台计算机上服务的通信协议,是分布式计算的基础 ...

Backend with Gin(6)-账号管理

博主头像 前情提要 上期讲了路由,这期开始就慢慢把处理器的实现都讲完 这期改了栏目名,主要考虑到想要剖析这个项目,Gin占的文字比重反而不高 我保留了之前文章的栏目名,这样你才知道我改了名 账号与权限如何实现? 我们从./router/router.go下这部分代码继续讲 上期我们已经了解了这段代码首先是注册 ...

Gin入门(5)-第三集才登场的主角:Gin

博主头像 前情提要 上期我们讲完了mysql和Redis的配置,完成了对 main函数下第一行代码的解析,今天接着继续 (之前写错成steup了。。。) 这是main函数下第二行代码 点击查看SetupRouter代码 func SetupRouter() *gin.Engine { r := gin.Def ...

Gin入门(4)-golang如何连接mysql和redis

博主头像 数据库、Redis和GO 接着上期的内容 这是func InitConfig()最后两行代码 initDB() initRedis() 这两行代码正好对应./config/下的db.go和redis.go 我们就分两部分讲 !!!请注意,本期默认大伙理解mysql和Redis,不作赘述 Gorm-通 ...

Gin入门(3)-解构项目,从viper和配置文件开始

博主头像 起因 跟着UP敲完代码之后感觉什么都没搞懂,只得其型不得其意,这样的学习结果毋庸置疑是没有用的,只会陷入教程地狱的困境,所以我决定从头阅读一遍源码,结合文档和大模型,来学习一遍 准备工作 由于跟写的时候是有边用git进行版本控制的,在完工之后我便将云服务器上的工程上传到我的仓库里了:该项目仓库链接 ...

Go语言interface初印象——从豌豆射手到樱桃炸弹

博主头像 Golang并没有类的概念,想要实现C++中的多态必须依赖interface,也就是接口 让我们构建一个例子,写植物大战僵尸中的豌豆射手、寒冰射手和樱桃炸弹 首先是C++ 我们已知寒冰射手是豌豆射手的变种,只是子弹变成了冰块;而樱桃炸弹和两种射手又都是植物 点击查看C++代码 #include <i ...

<1234···7>