go-jwt jwt go
go 统计资源消耗
import ( "runtime" "time" "github.com/shirou/gopsutil/v3/cpu" "github.com/shirou/gopsutil/v3/disk" "github.com/shirou/gopsutil/v3/mem" ) const ( B = 1 ......
使用JWT、拦截器与ThreadLocal实现在任意位置获取Token中的信息,并结合自定义注解实现对方法的鉴权
1. 简介 1.1 JWT JWT,即JSON Web Token,是一种用于在网络上传递声明的开放标准(RFC 7519)。JWT 可以在用户和服务器之间传递安全可靠的信息,通常用于身份验证和信息交换。 声明(Claims): JWT 包含一组称为声明的信息,声明描述了一些数据。有三种类型的声明: ......
JWT浅了解
JWT通过数字签名的方式(让我想起了软考),以json对象为载体,在不同的服务终端之间安全传输信息 是一种授权认证 生成token的原理:通过header的加密方式,对payload进行加密。然后把header和payload再次加密生成signature 贴一下我的settoken return ......
Go 14周年
原文在这里。 由 Russ Cox, for the Go team 发布于2023年11月10日 今天,我们庆祝Go开源发布的第十四个生日!Go在过去一年里取得了巨大的进展,发布了两个功能丰富的版本,并实现了其他重要的里程碑。 我们发布了Go 1.20 in February和Go 1.21 in ......
Go语言从入门到精通
Go语言以其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度,已经风靡全球。很多人将Go语言称为21世纪的C语言,因为Go不仅拥有C的简洁和性能,而且针对多处理器系统应用程序的编程进行了优化,很好的提供了21世纪互联网环境下服务端开发的各种实用特性。 ......
JWT VS OAuth2
一、简介 JWT 和 OAuth2 没有可比性,是两个完全不同的东西! 【JWT】:一种认证协议。 提供了一种用于发布接入令牌(Access Token),并对发布的签名接入令牌进行验证的方法。令牌(Token)本身包含了一系列声明,应用程序可以根据这些声明限制用户对资源的访问。 【OAuth2】: ......
理解Go中的零值
在 Go 语言中,零值(Zero Value)是指在声明变量但没有显式赋值的情况下,变量会被自动赋予一个默认值。这个默认值取决于变量的类型,不同类型的变量会有不同的零值。零值是 Go 语言中的一个重要概念,因为它确保了变量在声明后具有一个可预测的初始状态,减少了未初始化变量引发的问题。 以下是一些常 ......
Go实现Zabbix企业微信机器人告警
企业微信 应用通知的程序相对复杂点,见上篇文章 机器人告警相对简单点,只需一个url即可 企业微信里创建一个机器人 注意机器人的url,后续程序中需要使用 直接上程序sjgzbx_machine.go package main import ( "bytes" "encoding/json" "fm ......
go test个人经验(持续更新)
名称规范 算不上规范。 是我使用 Goland生成 test func的时候的自动命令规则,所以记录一下。 为某个函数编写测试方法: func Foo() error func TestFoo(t *testing.T) { } 为某个struct的方法测试: type Client struct ......
identityserver,OAuth2.0,JWT之间的关系
OAuth2.0是一种授权框架,用于应用程序之间安全的共享用户资源,它允许用户授权第三方应用程序访问他们的资源,列如照片,视频,联系人列表等,而不必将用户名和密码提供给第三方应用程序,OAuth2.0通过令牌来代表用户授权,这些令牌可以被第三方应用程序用于访问用户资源,而不必知道用户的凭据。OAut ......
【11.0】Go语言基础之结构体
【一】什么是结构体 结构体是用户定义的类型,表示若干个字段(Field)的集合。 有时应该把数据整合在一起,而不是让这些数据没有联系。 这种情况下可以使用结构体。 例如,一个职员有firstName 、 lastName和age 三个属性,而把这些属性组合在一个结构体employee中就很合理。 【 ......
go中标记一个模块内容为过时
今天在使用标准库 ioutil时发现已经过时,是通过在注释上添加实现的。 例如: // WsHandlerFunc is like HandleFunc in Gin. // // Deprecated: Not support. type WsHandlerFunc func(*websocket ......
【10.0】Go语言基础之指针
【一】什么是指针 指针是—种存储变量内存地址(Memory Address)的变量。 如上图所示,变量b 的值为156 ,而b 的内存地址为0x1040a124。 变量 α存储了b 的地址。 我们就称a指向了b 。 【二】指针的定义 【1】指针的语法基础 1 类型前放 * 表示指针类型,这个类型的指 ......
【9.0】Go语言基础之字符串
【一】字符编码引入 https://www.cnblogs.com/dream-ze/p/17826956.html 【二】字符串操作 【1】获取字符串的字节(byte) (1)英文字符 package main import "fmt" func main() { // 字符串 // 【1】单独获 ......
【6.0】Go语言基础之循环语句
【一】判断语句if~else package main import "fmt" // if ~ else 的使用 // [1] 语法 // 语法 if 条件 {条件符合,执行代码} // 语法 else if 条件 {条件符合,执行代码} // 语法 else {条件符合,执行代码} // [2] ......
【7.0】Go语言基础之数组、切片
【一】数组 数组是一种类型,可以连续存储数据,但是数据类型的是一致的。 类似于 Python 中的列表,是一种数据结构 【1】数组的定义 package main import "fmt" func main() { // 定义数组 // 定义一个长度为 3 的数组,里面的数据类型为 int 类型 ......
【5.0】Go语言基础之包的使用
【一】包的作用 为了便于组织代码,同一种类型的代码,写在同一个包下,便于管理 【二】定义包的步骤 【1】新建一个文件夹 【2】内部有很多go文件 【3】go文件的第一行声明包名 在每个go文件的第一行,都要声明包名,并且包名必须一致 package user 【4】在一个文件夹下只能有一个包(同级) ......
【8.0】Go语言基础之可变函数参数、map的使用
【一】可变长参数 【1】任意长度的指定类型的参数 package main import "fmt" func main() { // 可变长参数 // 调用函数 foo(1, 2, 3, 4, 5, 6) // 这是接收到的 参数 a :>>>> [1 2 3 4 5 6] // 这是接收到的 参 ......
2023-11-11:用go语言,字符串哈希+二分的例题。 给定长为 n 的源串 s,以及长度为 m 的模式串 p, 要求查找源串中有多少子串与模式串匹配, s‘ 与 s 匹配,当且仅当 s‘ 与 s
2023-11-11:用go语言,字符串哈希+二分的例题。 给定长为 n 的源串 s,以及长度为 m 的模式串 p, 要求查找源串中有多少子串与模式串匹配, s' 与 s 匹配,当且仅当 s' 与 s 长度相同,且最多有 k 个位置字符不同。 其中 1 <= n, m <= 10^6,0 <= k ......
Go实现Zabbix企业微信应用通知告警
企业微信 https://work.weixin.qq.com/ 企业微信->应用管理->创建应用 个人微信也能接收企业微信信息 我的企业 -> 微信插件 -> 扫码关注 特殊说明 之前企业微信只需要调用接口就能实现微信应用通知,最近改版,变得比较复杂 1:需要配置可信IP才能发 2: 配置可信IP ......
改善Go语言编程质量的50个有效实践,技能落地总结50个高效Go程序设计技巧
改善Go语言编程质量的50个有效实践,技能落地总结50个高效Go程序设计技巧 慕课专栏:《改善Go语言编程质量的50个有效实践》 Go语言是Google大牛团队(Robert Griesemer、Rob Pike以及Ken Thompson)设计的一种静态类型、编译型编程语言,支持垃圾回收和轻量级并 ......
GO实现分布式爬虫—掌握go语言通道与协程项目架构设计
GO实现分布式爬虫—掌握go语言通道与协程项目架构设计 Go高并发微服务分布式 1.命令行的用户管理 用户信息存储 => 内存 => 结构 [] map => 用户 ID name age tel addr [len] [] map 值类型使用string 用户添加 用户的查询 用户修改 // 请输 ......
Go语言开发分布式任务调度 轻松搞定高性能Crontab,技能储备+项目开发
写在前面 最近离职交接空档期,在慕课网上学习了下go语言实现分布式crontab任务调度系统。自己也跟随视频实现了一把(跟原版略有不同)。现把成果记录一下。 最终代码: https://github.com/funkol2007/distributed_crontab 系统介绍 实现目标: 实现一个 ......
go 1.6 废弃 io/ioutil 包后的替换函数
go 1.6 废弃 io/ioutil 包后的替换函数 io/ioutil 替代 ioutil.ReadAll -> io.ReadAll ioutil.ReadFile -> os.ReadFile ioutil.ReadDir -> os.ReadDir // others ioutil.Nop ......
【3.0】Go语言语法初识之变量
【零】注释语法 注释就是对代码的解释和说明,其目的就是让人们更加轻松的了解代码。注释是开发人员的一个重要的习惯。 单行注释使用 // 开头 多行注释使用 /* 开头 */ 结尾 // package 定义包名 main 包名 package main // import 引用库 fmt 库名 imp ......
【4.0】Go语言语法基础之函数
【一】函数基础 【1】语法 func关键字 函数名(形参1 形参1的类型,形参2 形参2的类型) (返回值类型) { 函数体(函数体的内容和缩进无关,只要是在大括号内,都是函数体内容) } 在Python中需要先定义函数再使用 在Go中不需要先定义再使用 func main() { } 【2】无参数 ......
【1.0】Go语言介绍及引入
【一】Go语言介绍 Go语言是Google公司在2007开发一种静态强类型、编译型语言,并在2009年正式对外发布。 静态强类型语言 需要先编译再执行 比如C、C#、Java等语言需要先将代码编译成不同平台的可执行文件,才能在不同平台上运行 需要解释器 比如Python、PHP、node.js等语言 ......
go.mod file not found in current directory or any parent directory; see 'go help modules' (exit status 1)
go.mod file not found in current directory or any parent directory; see 'go help modules' (exit status 1) 原因: 目录少缺少 go.mod 文件。 解决方法: 在终端中输入: go mod in ......
Go中字符串处理:fmt.Sprintf与string.Builder的比较
在Go语言中,我们通常会遇到两种主要的方式来处理和操作字符串:使用fmt.Sprintf函数和string.Builder类型。尽管两者都可以实现字符串的格式化和连接,但它们在性能和用法上有一些关键区别。 1. fmt.Sprintf fmt.Sprintf是一个函数,它根据提供的格式化字符串和参数 ......