[GO] GO语言gin框架实现管理员认证登陆接口[GO] GO语言gin框架实现管理员认证登陆接口
后台用户登录验证功能是很多项目的必须要有的逻辑 , 也是常见的技术需求 .
要实现这个逻辑首先要有数据库表结构如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) N...[2020/11/9]
Graphql请求的RBAC权限控制
概要
实现方式
adapter
middleware
基础权限 API
总结
概要
Graphql 请求灵活性远非 RestFul 的请求能比, 但是 Graphql 的 Endpoint 一般都是统一的一个, 根据 body 中的请求内容和参数来决定返回何种数据.
因此, ...[2020/11/9]
求解数独
目录前言我的代码代码讲解运行结果舞蹈链求解数独总结
前言
数独这个游戏很适合锻炼大脑思考,由于规则很简单,因此很适合我写代码拿来破解。所以就有了这篇随笔了。
首先我想通过自己的思考完成数独的求解,然后再到网上抄答案。提供一个【在线玩数独】的网站。
我的代码
代码讲解
????...[2020/11/9]
Go module 本地导包方式
tip本文只讲关于Go module 本地导包方式,其他请自行查阅
Go module 导包方式,go mod init project-name,会得到一个go.mod文件,此文件是管理依赖的,通常会从github或其他代理拉取代码库。
module package-name
...[2020/11/9]
【go语言学习】函数function
函数是组织好的、可重复使用的、用于执行指定任务的代码块。
Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。
一、函数的声明和调用
1、函数的声明
Go语言中定义函数使用func关键字,具体格式如下:
func funcName(parametername ...[2020/11/9]
golang1.16内嵌静态资源指南
今天是万圣节,也是golang1.16新特性冻结的日子。不得不说自从go2路线发布之后golang新特性的迭代速度也飞速提升,1.16中有相当多的重要更新,包括io标准库的重构,语言内置的静态资源嵌入等。
本次将要介绍的是新的静态资源嵌入功能,虽然之前已经有相关的提案,但实际的api和...[2020/11/9]
基于 prometheus 的微服务指标监控
基于prometheus的微服务指标监控
服务上线后我们往往需要对服务进行监控,以便能及早发现问题并做针对性的优化,监控又可分为多种形式,比如日志监控,调用链监控,指标监控等等。而通过指标监控能清晰的观察出服务指标的变化趋势,了解服务的运行状态,对于保证服务稳定起着非常重要的作用
pr...[2020/11/9]
go-zero 是如何追踪你的请求链路的go-zero 是如何追踪你的请求链路的
go-zero 是如何追踪你的请求链路
微服务架构中,调用链可能很漫长,从 http 到 rpc ,又从 rpc 到 http 。而开发者想了解每个环节的调用情况及性能,最佳方案就是 全链路跟踪。
追踪的方法就是在一个请求开始时生成一个自己的 spanID ,随着整个请求链路传下去。我...[2020/11/9]
Dapr实现分布式有状态服务的细节
Dapr是为云上环境设计的跨语言, 事件驱动, 可以便捷的构建微服务的系统. balabala一堆, 有兴趣的小伙伴可以去了解一下.
Dapr提供有状态和无状态的微服务. 大部分人都是做无状态服务(微服务)的, 只是某些领域无状态并不好使, 因为开销实在是太大了; 有状态服务有固定的场...[2020/11/9]
理解内存对齐
原文地址: https: blog.fanscore.cn/p/24/
相信大家都听说过内存对齐的概念,不过这里还是通过一个现象来引出本篇话题。
一、求一个结构体的size
猜下下面这个结构体会占用多少字节
type S struct {
B byte Go中一个by...[2020/11/9]
gin 获取post的中所有参数
此方式只能获取post默认方式application/x-www-form-urlencoded的参数
ctx.Request.ParseForm()
for k, v := range ctx.Request.PostForm {
fmt.Printf("k:%v\n",...[2020/11/9]
go语言教程之浅谈数组和切片的异同go语言教程之浅谈数组和切片的异同
Hello ,各位小伙伴大家好,我是小栈君,上次分享我们讲到了Go语言关于项目工程结构的管理,本期的分享我们来讲解一下关于go语言的数组和切片的概念、用法和区别。
在go语言的程序开发过程中,我们避免不了数组和切片。关于他们的用法和区别却使得有的小伙伴感觉困惑。所以小栈君这里也归纳和总...[2019/11/15]
[Go] gocron源码阅读-go语言的结构体[Go] gocron源码阅读-go语言的结构体
结构体类型 type 名字 struct{},下面这段是github.com/urfave/cli包里的代码,声明了一个App的结构体类型
type App struct {
The name of the program. Defaults to path.Bas...[2019/11/15]
Go gRPC Hello World - it-world
概述开始 gRPC 了,这篇文章学习使用 gRPC,输出一个 Hello World。 用 Go 实现 gRPC 的服务端。 用 Go 实现 gRPC 的客户端。gRPC 支持 4 类服务方法,咱们这次实现 单项 R...[2019/11/15]
[Go] gocron源码阅读-go语言中的切片接口和类型综合
getCommands
func getCommands() []cli.Command {
command := cli.Command{
Name: "web",
Usage: "run web server",
...[2019/11/15]
GO基础之文件操作
一、文件操作的基本API
func main() {
绝对路径
fileInfo , err := os.Stat("E:/a.txt")
fileInfo , err = os.Stat("E:/")
if err !=nil {
...[2019/11/15]
【Go】go的日志框架-logrus初探
summary
logrus是针对go语言开发的一款日志系统,在本片文章中,将会对上手logrus的过程中遇到的一些问题做一个记录。这个记录参考了这篇文章。下面我们开始吧!
上手
package main
import (
log "github.com irups...[2019/11/14]
[日常] gocron源码阅读-使用go mod管理依赖源码启动gocron
从 Go1.11 开始,golang 官方支持了新的依赖管理工具go modgo mod download: 下载依赖的 module 到本地 cachego mod edit: 编辑 go.modgo mod graph: 打印模块依赖图go mod init: 在当前目录下初始化 g...[2019/11/14]
[Go] vscode配置Go环境[Go] vscode配置Go环境
首先要先把环境变量配置好,配置好环境变量打开go文件的时候,会自动提示需要安装的扩展在/root/.profile和/home/当前用户/.profile都加上
export GOPATH=/var/www/html/go-project/libexport GOROOT=/usr/...[2019/11/14]
GO基础之延时执行GO基础之延时执行
一、延迟是什么?•即延迟( defer)语句,延迟语句被用于执行一个函数调用,在这个函数之前,延迟语句返回。
一、延迟函数
1、可以在函数中添加多个defer语句。•当函数执行到最后时,这些defer■语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开...[2019/11/13]
实测Maven上传jar包到私服的方法归纳实测Maven上传jar包到私服的方法归纳
Hello,各位小伙伴大家好,我是小栈君。好久不见,最近因为工作的缘故,导致了更新变慢,但是小栈君也在积极的做素材的规划,毕竟学习知识点的归纳和提炼需要一定的时间。
所以还请大家多多见谅,下一期的分享主题我们依旧会围绕着go语言系列进行。不过小栈君会尽量加快节奏。因为接下来的挑战是对于...[2019/11/11]
[系列] Go gRPC 调试工具[系列] Go gRPC 调试工具
目录
概述
写一个 gRPC API
grpcui 使用
go-gin-api 系列文章
概述
最近这段时间工作挺忙的,发现已经 3 周没更文了...
...[2019/11/11]
go-gin-api 路由中间件 - 日志记录 - it-worldgo-gin-api 路由中间件 - 日志记录 - it-world
概述首先同步下项目概况:上篇文章分享了,规划项目目录和参数验证,其中参数验证使用的是 validator.v8 版本,现已更新到 validator.v9 版本,最新代码查看 github 即可。这篇文章咱们分享:路由中间件 - 日志记录。日志是特别重要的一个东西,方便我们对问题进行排查...[2019/11/11]
go-gin-api 规划目录和参数验证(二) - it-world
概述首先同步下项目概况:上篇文章分享了,使用 go modules 初始化项目,这篇文章咱们分享: 规划目录结构 模型绑定和验证 自定义验证器 ...[2019/11/11]
Gin框架 - 项目目录 - it-world
概述
今天给大家分享,在 API 端使用 Gin 框架时,项目的目录。目录
├─ Project Name
│ ├─ config 配置文件
│ ├── ...
│ ├─ co...[2019/11/11]
Go学习笔记之Map
Go学习笔记之Map
Map 引用类型,哈希表。map的key必须可以比较相等,除了slice, map, function的内建类型都可以作为key。struct类型不包含上述字段,也可作为key。
map的操作
1.创建一个map。
1 m := map[int]struct{...[2019/11/11]
QA:无重复字符的最长子串
无重复字符的最长字串
leetcode地址:https: leetcode-cn.com/problem longest-substring-without-repeating-character
题目描述:
给定一个字符串,请你找出其中不含有重复字符的 最长子串&nbs...[2019/11/11]
[开源]基于goapp+xterm实现webssh-网页上的SSH终端linux管理工具(golang)
简析
基于goapp+xterm实现web h-网页上的SSH终端,linux管理工具。
开源地址见文末。
特性
在网页上实现一个SSH终端。从而无需Xshell之类的模拟终端工具进行SSH连接。
可以对交互命令进行审计、记录
在页面...[2019/11/11]
深度解密Go语言之 pprof
目录
什么是 pprof
pprof 的作用
pprof 如何使用
runtime/pprof
net/http/pprof
pprof...[2019/11/11]
GO基础之异常处理
一、异常
1、 错误指程序中出现不正常的情况,从而导致程序无法正常执行。•大多语言中使用try... catch... finally语句执行。假设我们正在尝试打开一个文件,文件系统中不存在这个文件。这是一个异常情况,它表示为一个错误。2、 Go语言中没有try...catc...[2019/11/8]
go-面向对象编程(上)
一个程序就是一个世界,有很多对象(变量)
Golang 语言面向对象编程说明
1) Golang 也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对
象语言。所以我们说 Golang 支持面向对象编程特性是比较准确的。
2) Golang 没有类(cla )...[2019/11/8]
GO基础之接口
一、概念1、 面向对象语言中,接口用于定义对象的行为。接口只指定对象应该做什么,实现这种行为的方法(实现细节)是由对象来决定。2、 在Go语言中,接口是一组方法签名。
•接口只指定了类型应该具有的方法,类型决定了如何实现这些方法。
•当某个类型为接口中的所有方...[2019/11/7]
GO基础之结构体
1 、什么是结构体 GO语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
2、什么是实例化?
Go结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正分配内存。因此必须在...[2019/11/7]
使用Go进行单元测试的实现
简介
日常开发中, 测试是不能缺少的.
Go 标准库中有一个叫做 testing 的测试框架, 可以用于单元测试和性能测试.
它是和命令 go test 集成使用的.
测试文件是以后缀 _test.go 命名的, 通常和被测试的文件放在同一个包中.
单元测试...[2019/11/7]
Go语言实现钉钉发送通知Go语言实现钉钉发送通知
具体代码如下所示:
package main
import (
"bufio"
"io"
"fmt"
"io/ioutil"
"o exec"
"net/http"
"os"
"strings"
)
func GetKey() (t...[2019/11/5]
Golang实现拓扑排序(DFS算法版)
问题描述:有一串数字1到5,按照下面的关于顺序的要求,重新排列并打印出来。要求如下:2在5前出现,3在2前出现,4在1前出现,1在3前出现。
该问题是一个非常典型的拓扑排序的问题,一般解决拓扑排序的方案是采用DFS-深度优先算法,对于DFS算法我的浅薄理解就是递归,因拓扑排序问题本身会有一些前...[2019/11/4]
go语言特点
简介
即达到了静态编译语言的安全和性能,又达到了动态语言开发维护的高效率
go = c+python
既有c静态语言的运行速度,又达到了Python动态语言的快速开发
诞生原因
计算机硬件更新频繁,性能提升很快,主流的编程语言明显低于硬件的发展,
不能合理利用多核CPU的优势提升系统性...[2019/11/4]
GO基础之切片GO基础之切片
一、什么是切片
Go语言切片是对数组的抽象。
Go数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组");
与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
切片本身没有任何数据,它们只是...[2019/11/4]
go map数据结构和源码详解
目录
1. 前言
2. go map的数据结构
2.1 核心结体体
2.2 数据结构图
3. go map的常用操作
3.1 创建
...[2019/11/4]
GO基础之Map
go开发手册: https: tudygolang.com/pkgdoc
一、什么是map
有资料翻译成地图、映射或字典。但是大多数习惯上翻译成集合。1、map是Go中的内置类型,它将一个值与一个键关联起来。可以使用相应的键检索值。
map...[2019/11/4]
GO基础之函数的高级用法
一、可变参数
支持可变长参数列表的函数可以支持任意个传入参数,比如fmt.Println函数就是一个支持可变长参数列表的函数。
package main
import "fmt"
func main() {
fmt.Println(add())
...[2019/11/1]
Go 高效截取字符串的一些思考
最近我在Go Forum 中发现了String size of 20 character 的问题,“hollowaykeanho” 给出了相关的答案,而我从中发现了截取字符串的方案并非最理想的方法,因此做了一系列实验并获得高效截取字符串的方法,这篇文章将逐步讲解我实践的过程。
字节切片截取
...[2019/10/31]
使用 Go 管理版本的方法示例使用 Go 管理版本的方法示例
简介
如果你曾经运行过 docker version,
就会发现它提供了很多信息:
PS C:\Users\tzh> docker version
Client: Docker Engine - Community
Version: 19.03.4...[2019/10/31]
知乎用Go替代Python,说明了啥
说不上哪个语言会比另一个语言更好。只能说某个语言在某个方面处理某些问题更具有优势吧。[2019/10/30]
GO基础之流程控制语句
一、if分支语句
if 布尔表达式 1 {
/* 在布尔表达式 1 为 true 时执行 */
}
if a := 2; a%2 == 0 {
fmt.Println("偶数")
}
if 布尔表达式 1 {
/* 在布尔表达式 1 为 ...[2019/10/30]
Go中http超时问题的排查及解决方法
背景
最新有同事反馈,服务间有调用超时的现象,在业务高峰期发生的概率和次数比较高。从日志中调用关系来看,有2个调用链经常发生超时问题。
问题1: A服务使用 http1.1 发送请求到 B 服务超时。
问题2: A服务使用一个轻量级http-sdk(内部http2.0) 发送请求到 C ...[2019/10/29]
Go中http超时问题的排查
背景
排查
推测
连接超时
疑问
http2
解决超时
并发连接数
服务端限制
真相
重试
解决办法
问题1
背景
最新有同事反馈,服务间有调用超时的现象,在业务高峰期发生的概率和次数比较高。从日志中调用关系来看,有2个调用链经常发生超时问题。
问题1: A服务使用 htt...[2019/10/29]
Go语言系列开发之延迟调用和作用域
Hello,各位小伙伴大家好,我是小栈君,最近一段时间我们将继续分享关于go语言基础系列,当然后期小栈君已经在筹划关于java、Python,数据分析、人工智能和大数据等相关系列文章。希望能和大家一起学习进步,相互提高。
好了,话不多说,我们开始今天的分享,今天分享的主题是关于go语言...[2019/10/28]
Swoole 的微信扫码登录
微信应用的便捷,扫码登录方式越来越被现在的应用所使用。它因为不用去记住密码,只要有微信号即可方便快捷登录。微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实现。这里基于微信公众平台的带参数临时二维码,并且结合 Swoole 的 WebSocke...[2019/10/28]
Gin框架介绍及使用Gin框架介绍及使用
Gin框架介绍及使用
Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。 如果你是性能和高效的追求者, 你会爱上Gin。
Gin框架介绍
Go世界里最流行的Web框架,Github上有2...[2019/10/28]