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 ......
资源 go

使用JWT、拦截器与ThreadLocal实现在任意位置获取Token中的信息,并结合自定义注解实现对方法的鉴权

1. 简介 1.1 JWT JWT,即JSON Web Token,是一种用于在网络上传递声明的开放标准(RFC 7519)。JWT 可以在用户和服务器之间传递安全可靠的信息,通常用于身份验证和信息交换。 声明(Claims): JWT 包含一组称为声明的信息,声明描述了一些数据。有三种类型的声明: ......
注解 ThreadLocal 位置 方法 Token

JWT浅了解

JWT通过数字签名的方式(让我想起了软考),以json对象为载体,在不同的服务终端之间安全传输信息 是一种授权认证 生成token的原理:通过header的加密方式,对payload进行加密。然后把header和payload再次加密生成signature 贴一下我的settoken return ......
JWT

Go 14周年

原文在这里。 由 Russ Cox, for the Go team 发布于2023年11月10日 今天,我们庆祝Go开源发布的第十四个生日!Go在过去一年里取得了巨大的进展,发布了两个功能丰富的版本,并实现了其他重要的里程碑。 我们发布了Go 1.20 in February和Go 1.21 in ......
Go

Go语言从入门到精通

Go语言以其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度,已经风靡全球。很多人将Go语言称为21世纪的C语言,因为Go不仅拥有C的简洁和性能,而且针对多处理器系统应用程序的编程进行了优化,很好的提供了21世纪互联网环境下服务端开发的各种实用特性。 ......
语言

JWT VS OAuth2

一、简介 JWT 和 OAuth2 没有可比性,是两个完全不同的东西! 【JWT】:一种认证协议。 提供了一种用于发布接入令牌(Access Token),并对发布的签名接入令牌进行验证的方法。令牌(Token)本身包含了一系列声明,应用程序可以根据这些声明限制用户对资源的访问。 【OAuth2】: ......
OAuth2 OAuth JWT VS

理解Go中的零值

在 Go 语言中,零值(Zero Value)是指在声明变量但没有显式赋值的情况下,变量会被自动赋予一个默认值。这个默认值取决于变量的类型,不同类型的变量会有不同的零值。零值是 Go 语言中的一个重要概念,因为它确保了变量在声明后具有一个可预测的初始状态,减少了未初始化变量引发的问题。 以下是一些常 ......

Go实现Zabbix企业微信机器人告警

企业微信 应用通知的程序相对复杂点,见上篇文章 机器人告警相对简单点,只需一个url即可 企业微信里创建一个机器人 注意机器人的url,后续程序中需要使用 直接上程序sjgzbx_machine.go package main import ( "bytes" "encoding/json" "fm ......
机器人 机器 Zabbix 企业

go test个人经验(持续更新)

名称规范 算不上规范。 是我使用 Goland生成 test func的时候的自动命令规则,所以记录一下。 为某个函数编写测试方法: func Foo() error func TestFoo(t *testing.T) { } 为某个struct的方法测试: type Client struct ......
经验 个人 test go

identityserver,OAuth2.0,JWT之间的关系

OAuth2.0是一种授权框架,用于应用程序之间安全的共享用户资源,它允许用户授权第三方应用程序访问他们的资源,列如照片,视频,联系人列表等,而不必将用户名和密码提供给第三方应用程序,OAuth2.0通过令牌来代表用户授权,这些令牌可以被第三方应用程序用于访问用户资源,而不必知道用户的凭据。OAut ......
identityserver 之间 OAuth2 OAuth JWT

【11.0】Go语言基础之结构体

【一】什么是结构体 结构体是用户定义的类型,表示若干个字段(Field)的集合。 有时应该把数据整合在一起,而不是让这些数据没有联系。 这种情况下可以使用结构体。 例如,一个职员有firstName 、 lastName和age 三个属性,而把这些属性组合在一个结构体employee中就很合理。 【 ......
语言基础 语言 结构 基础 11.0

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 类型前放 * 表示指针类型,这个类型的指 ......
语言基础 指针 语言 基础 10.0

【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] ......
语言基础 语句 语言 基础 6.0

【7.0】Go语言基础之数组、切片

【一】数组 数组是一种类型,可以连续存储数据,但是数据类型的是一致的。 类似于 Python 中的列表,是一种数据结构 【1】数组的定义 package main import "fmt" func main() { // 定义数组 // 定义一个长度为 3 的数组,里面的数据类型为 int 类型 ......
语言基础 数组 语言 基础 7.0

【5.0】Go语言基础之包的使用

【一】包的作用 为了便于组织代码,同一种类型的代码,写在同一个包下,便于管理 【二】定义包的步骤 【1】新建一个文件夹 【2】内部有很多go文件 【3】go文件的第一行声明包名 在每个go文件的第一行,都要声明包名,并且包名必须一致 package user 【4】在一个文件夹下只能有一个包(同级) ......
语言基础 语言 基础 5.0

【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 ......
Zabbix 企业

改善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 ......
函数 ioutil 1.6 go io

【3.0】Go语言语法初识之变量

【零】注释语法 注释就是对代码的解释和说明,其目的就是让人们更加轻松的了解代码。注释是开发人员的一个重要的习惯。 单行注释使用 // 开头 多行注释使用 /* 开头 */ 结尾 // package 定义包名 main 包名 package main // import 引用库 fmt 库名 imp ......
变量 语法 语言 3.0

【4.0】Go语言语法基础之函数

【一】函数基础 【1】语法 func关键字 函数名(形参1 形参1的类型,形参2 形参2的类型) (返回值类型) { 函数体(函数体的内容和缩进无关,只要是在大括号内,都是函数体内容) } 在Python中需要先定义函数再使用 在Go中不需要先定义再使用 func main() { } 【2】无参数 ......
语法 函数 语言 基础 4.0

【1.0】Go语言介绍及引入

【一】Go语言介绍 Go语言是Google公司在2007开发一种静态强类型、编译型语言,并在2009年正式对外发布。 静态强类型语言 需要先编译再执行 比如C、C#、Java等语言需要先将代码编译成不同平台的可执行文件,才能在不同平台上运行 需要解释器 比如Python、PHP、node.js等语言 ......
语言 1.0

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 ......
directory current modules parent status

Go中字符串处理:fmt.Sprintf与string.Builder的比较

在Go语言中,我们通常会遇到两种主要的方式来处理和操作字符串:使用fmt.Sprintf函数和string.Builder类型。尽管两者都可以实现字符串的格式化和连接,但它们在性能和用法上有一些关键区别。 1. fmt.Sprintf fmt.Sprintf是一个函数,它根据提供的格式化字符串和参数 ......
字符串 字符 Sprintf Builder string

go基础-泛型

概述 在强类型变成语言中,类型是确定不可变,如函数入参是确定类型、链表元素是确定类型,这极大限制了函数功能。也有些解决方案,为每种类型都实现一版函数,会导致大量重复代码;使用类型转换,使用特殊形参(如Object、any),在函数内部判断并转换类型后再执行逻辑,导致大量类型转换的代码,结构混乱,Ja ......
基础