使用 Go 语言中的 Validator 进行结构体验证
使用 Go 语言中的 Validator 进行结构体验证:问题与解决在日常开发中,数据验证是非常关键的一步。确保数据正确性可以有效地提升系统的健壮性。在使用 Go 语言构建应用程序时,go-playground/validator 是一个广受欢迎的验证库。最近,我在使用这个库进行结构体字段验证时遇到了一个小问题。本文将分享我遇到的问题及其解决方案,希望能对其他开发者有所帮助。
遇到的问题我的代码中有两个结构体:User 和 InterceptorConfig。User 结构体用于存储用户信息,InterceptorConfig 包含一个结构体 slice Interceptors。起初,我对这些结构体应用了 required 标签进行验证,具体如下:
123456789101112type User struct { Name string `validate:"required"`}type InterceptorConfig struct { Interceptors []InterceptorConfigItem `j ...
聊聊加解密那些事
聊聊加解密那些事什么是加解密顾名思义我可以通过一个特定的加密方式,让原先的程序员们最爱的明文123456,变成别人看不懂的U2FsdGVxxx,再通过一个特定的解密方式来把数据变回123456。
加密方式加密又分为对称加密和非对称加密,我们下面详细说一下这两种加密方式。
对称加密对称加密可以简单理解为,我现在有一把钥匙🔑,我发送信息之前通过这把钥匙进行加密,如果有人给我发送加密信息,我也可以用这把钥匙来进行解密
对称加密主要涉及到以下三种算法
**AES (Advanced Encryption Standard)**:AES是一种对称加密标准,支持128,192和256位密钥长度。AES加密过程包括多轮的重复和置换。每一轮使用的都是同样的加密密钥,这也就是为什么它被称为对称加密算法。
**DES (Data Encryption Standard)**:尽管受到批评因为它的56位密钥容易受到穷举攻击,DES在很长一段时间里仍然是行业标准。DES使用的是分组加密方式,数据被分成64位的块,然后按照密钥加密。
**3DES (Triple DES)**:为了铺平DES的不足,3DE ...
数组和切片的区别
数组和切片的区别slice 的底层数据是数组,slice 是对数组的封装,它描述一个数组的片段。两者都可以通过下标来访问单个元素。
两者不一样举例说明
go和js语言表达不太一样,很少说数组这一个概念吗,更多时候对数组的表达会说切片,因为数据长度是其类型的一部分,比如[3]int和[4]int就是不同类型。
但是切片就很灵活,可以动态扩容(这个是数组做不到的),其根本原因是结构定义不一样
12345type slice struct { array unsafe.Pointer // 元素指针 len int // 长度 cap int // 容量}
看个例子,例子来自雨痕大佬《Go学习笔记》第四版,P43页
123456789101112131415161718package mainimport "fmt"func main() { slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} s1 := slice[2:5] s2 := s1[2:6:7] s2 = ap ...
Golang学习之error篇
Golang学习之error篇以一个打开系统文件为例,在error文件夹下有个hello.txt
12345678910111213141516package mainimport ( "fmt" "os")func main() { file, err := os.Open("C:\\Users\\42012\\Desktop\\代码\\error\\hello.txt") if err != nil { fmt.Println("open file error") } fmt.Println(file, err) fmt.Printf("Error的类型是:%T", err)}
正常运行的结果是
12&{0xc000072780} <nil>Error的类型是:<nil>
当我们把hello.txt改成hello1.txt后,结果是
123open file error<nil&g ...
并发
title: 并发date: 2024-03-07 20:17:24tags: - 后端 - Golangcategories: Golang并发在现实生活中,同时处理多件事情是非常常见的现象。比如一边上厕所一边玩手机,一边洗澡一边听歌等等。那在开发的过程中,我们也会有同时进行多个任务的需求,这就是我们常说的并发。
go并发go语言和其他语言相比,在处理并发方面有其得天独厚的优势,通过goroutine和channel在底层已经帮各位开发者处理好了并发的问题,只需要通过关键字go就可以启动一个新的goroutine。
举个🌰
123456789101112131415161718package mainimport ( "fmt" "time")func sayHi(name string) { for i := 0; i < 10; i++ { time.Sleep(time.Second) fmt.Printf("%s say hi\n", name) }} ...
Cannot Read Property ‘Protocol‘ of Undefined
因为采用了外部写api文,在引用时如果写错了就会有这个问题,mark一下
微信小程序Css报错_at-Rule or Selector Expected
在写微信小程序,前几天还好好的,今天换了一个基础库后发现wxml页面报错了错误提示虽然页面能够显示,功能能够使用,但是看得很不舒服
如何修改:在微信开发者工具右下角,把HTML换成XML更改前:
更改后:就没有报错了
错误_Module Parse Failed_ Unexpected Character '�' (1_0)的解决方法
今天在用webpack打包文件时报错
12345ERROR in ./src/img/head4.jpg 1:0Module parse failed: Unexpected character '�' (1:0)You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders(Source code omitted for this binary file) @ ./src/js/ebtry.js 4:11-38
提示有不希望出现的错误字符
查阅资料1.检查自己的file-loader和url-loader是否下载正确
检查下载都正确看看自己写的webpack.config.js我在写的时候写成了
1{test:/.(png | jpg | gif | svg)$/, use:['url- ...
/root/blog/Larmyliu.github.io/source/_posts/(git)Failed to Connect to 127.0.0.1 Port 50462_ Connection Refused
想利用hexo搭建一个个人博客,但是发现hexo init的时候一直被refused了。但是在git里面查了git config --global http.proxy并没有显示我有用代理查了端口号什么的都显示没有
最后,找到一个方法在电脑查找.gitconfig文件,要在c盘的那个,点开来把proxy全部删掉,再hexo init 就成功了
CDN字体跨域问题
用vue写了一个h5移动端页面,因为涉及到了很多动图所以用了腾讯云的CDN加速,但是出现了一个神奇的问题,图片类都可以使用CDN地址,但是字体文件浏览器却报了跨域错误
原因是:字体文件在CDN服务器上、项目部署在后端的服务器
然后解决方法是:
将字体文件转成base64,这个网站可以转换记得要把这个勾上
然后把里面的css,copy到自己的项目要用到的地方,就可以愉快的显示了