Golang中web参数校验的实现
目录参数校验基本用法JSONURL常用的校验规则自定义错误信息自定义校验规则参数校验
确保我们的应用接收到的数据是格式正确并且安全的
基本用法
JSON
假设我们正在开发一个登录接口,希望用户必须提供用户名和密码。在 Gin 中,我们首先会定义一个 Go 的 struct 来描述这个数据结构。
type Login struct {
User string ...
Golang语言中切片的长度和容量的概念和使用
目录核心概念底层数组(Underlying Array)图示与示例容量是如何被使用的:append 函数使用make创建切片时指定长度和容量总结与要点本文我们来详细讲解 Go 语言中切片(Slice)的长度(Length) 和容量(Capacity)。这是理解切片工作原理的核心概念。
核心概念
长度(Length):
表示切片当前实际包含的元素个数。通过内置 ...
Go 1.26 内置函数 new 新特性
目前golang 1.26的各种新特性还在开发中,不过其中一个在开发完成之前就已经被官方拿到台面上进行宣传了——内置函数new功能扩展。
每个新特性其实都有它的背景故事,没有需求的驱动也就不会有新特性的诞生。所以在介绍这个新特性之前我们先来了解下是什么样的场景催生了这个功能。
如果你经常浏览一些大型的go项目,尤其是 ...
我开源了一个短视频应用(Go+React)|DouTok2.0 项目介绍
前言
大家好,这里是白泽,拖更了一段时间,抱歉。在 DouTok2.0 可以初步允许大家接入开发之后,这篇文章才得以出炉。
DouTok:一个开源的 web 端的短视频应用,采用微服务架构,包含前后端(React & Go),DouTok 正处在开发初期,目前已经完成了 基础的用户注册、登录、用户信息管理、视频上传、视频列表展示、评论、点 ...
你为什么不应该过度关注go语言的逃逸分析
逃逸分析算是go语言的特色之一,编译器自动分析变量/内存应该分配在栈上还是堆上,程序员不需要主动关心这些事情,保证了内存安全的同时也减轻了程序员的负担。
然而这个“减轻负担”的特性现在却成了程序员的心智负担。尤其是各路八股文普及之后,逃逸分析相关的问题在面试里出现的频率越来越高,不会往往意味着和工作机会 ...
GO项目的打包和部署
项目打包和部署
在 Go 语言中,打包和部署应用非常简单,因为 Go 编译生成的可执行文件不依赖外部环境。以下是 打包发布和部署 Go 应用的几种常见方式,以及一些最佳实践。
1. 基本的打包和构建
构建可执行文件
你可以通过 go build 命令将你的应用打包成一个可执行文件:
go build -o your_app_name main.go
说明:
-o ...
Openwrt安装ddns-go
1. 必备条件
已刷好OpenWRT的路由
Openwrt已配置好网络
2. 根据CPU架构下载DDNS-go
我用的是迅雷赚钱宝1代,其CPU是arm7,所以要下载对应的arm7版本
https://github.com/jeessy2/ddns-go/releases
3. 解压文件,将文件复制到openwrt
用WinSCP连接OpenWRT,复制ddns-go进去
WinSCP下载
如果不知道放到哪里,就用df -h查看空 ...
GO 操作 Elasticsearch
官方库
https://github.com/elastic/go-elasticsearch
文档地址
Elasticsearch的文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
所有客户端入口 https://www.elastic.co/guide/en/elasticsearch/client/index.html
go 客户端文档 https://www.elastic.co/guide/en/elasticsearch/clien ...
小公司后端架构、代码、流程吐槽
自从入职以来越来越难顶小公司的后端架构、代码结构
前提
任何的架构、代码,都离不开业务,用户量,所以需要提前说明一下
就我一个后端开发,需要负责日常开发、运维、架构方案设计
两年多经验,可能一些东西考虑的不是很周全,只根据当下的认知吐槽,可能下个月觉得现在幼稚
后台用户量不过万,物联网行业
简单吐槽一下
...
Viper:强大的Go配置解析库
1 介绍
Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。目前Star 26.6k, 它支持以下特性:
设置默认值
从JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置信息
实时监控和重新读取配置文件(可选)
从环境变量中读取
从远程配 ...
线上问题排查——磁盘满
现象
群里反馈管理后台登录不上了,我一访问,整个界面空白,没有提示,打开 F12,发现控制台提示 js、css 等静态资源报 net::ERR_HTTP2_PROTOCOL_ERROR,客户端可以下载到服务端资源,第一次碰到这个,StackOverflow 走起
net::ERR_HTTP2_PROTOCOL_ERROR 是关于什么的?
可能出现的问题非常多,包括磁盘满、nginx 配置问题 ...
go学习笔记——Kratos框架
官方文档
https://go-kratos.dev/en/docs/getting-started/start/
1.安装Go
参考:mac安装go1.20
2.安装Kratos框架
kratos依赖protobuf grpc等框架,需要先进行安装
brew install grpc
brew install protobuf
brew install protoc-gen-go
brew install protoc-gen-go-grpc
验证
protoc --version
libprotoc 3.21.9
...
我用 GitHub 9.8k 的 Go 语言 2D 游戏引擎写了个游戏
前言
hi,大家好,这里是白泽。今天给大家分享一个 GitHub 🌟9.8k 的 Go 语言 2D 游戏引擎。
https://github.com/hajimehoshi/ebiten
引擎的贡献者依旧在积极维护,是一个兼具学习 & 娱乐的项目!
为此我也用这个引擎写了一个生存游戏: avoid-the-enemies【如下图】:https://github.com/BaiZe1998/avoid-the-enemies
当然 ...
Go-Zero微服务快速入门和最佳实践(一)
前言
并发编程和分布式微服务是我们Gopher升职加薪的关键。
毕竟Go基础很容易搞定,不管你是否有编程经验,都可以比较快速的入门Go语言进行简单项目的开发。
虽说好上手,但是想和别人拉开差距,提高自己的竞争力,搞懂分布式微服务和并发编程还是灰常重要的,这也是我今年更新文章的重点。
更文计划
我会更新一系列文章, ...
Go 项目依赖注入wire工具最佳实践介绍与使用
目录一、引入二、控制反转与依赖注入三、为什么需要依赖注入工具3.1 示例3.2 依赖注入写法与非依赖注入写法四、wire 工具介绍与安装4.1 wire 基本介绍4.2 安装五、Wire 的基本使用5.1 前置代码准备5.2 使用 Wire 工具生成代码六、Wire 核心技术5.1 抽象语法树分析5.2 模板编程七、Wire 的核心概念7.1 两个核心概念7.2 Wire ...
理解 go mod init 命令
go mod init 命令是 Go 1.11 中引入的 Go 模块系统的基本组成部分。它用于创建或初始化 Go 模块,是管理 Go 项目中依赖关系和版本的一种方法。下面是关于 go mod init 的全部内容:
1.初始化 Go 模块
go mod init 命令的主要用途是初始化项目中的 Go 模块。
Go 模块是指与版本相关联的 Go 包的集合。定义了项目的依赖和版 ...
fyne - 谁说用Go不能开发应用界面
fyne项目介绍
fyne 是一个纯 Golang 的跨平台 GUI 库,跨平台库说实话,是有很多选择的,Flutter、Electron、QT等。fyne 绝对不是一个很大众的选择。但是在我,一名后端程序员尝试使用 Electron实现一个简单的番茄时钟,痛苦地在使用 js 如何在渲染进程和主进程之间传递信息,如何在客户端退到后台的时候继续进行倒计时,vu ...
Go 之烧脑的接口
基本定义
Go 官方对于接口的定义是一句话:An interface type is defined as a set of method signatures. 翻译过来就是,一个接口定义了一组方法的集合。这和 Java 和 PHP 的接口类似,定义一组方法而不定义方法的具体实现。但是与 Java 和 PHP 迥然不同的地方在于 Go 不需要显式的声明 implements 关键词来继承接口 ...
记一次go应用在k8s pod已用内存告警不准确分析
版权说明: 本文章版权归本人及博客园共同所有,转载请在文章前标明原文出处( https://www.cnblogs.com/mikevictor07/p/17968696.html ),以下内容为个人理解,仅供参考。
一、背景
起因:自监控应用凌晨告警:Pod 内存使用率大于80%(规格为1c1G)。内存缓慢增长,持续到早上内存使用率停止在81%左右。
疑点: ...
Go标准库:Go template用法详解
本文只介绍template的语法和用法,关于template包的函数、方法、template的结构和原理,见:深入剖析Go template。
入门示例
以下为test.html文件的内容,里面使用了一个template语法{{.}}。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Go Web</titl ...