golang JWT的简单使用

JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。 JWT和session有所不同,session需要在服务器端生成,服务器保存session,只返回给客户端sessionid,客户端下次请求时带上sessionid即可。因为session是储存在服务器中,有多台服务器时会出现一些麻烦,需要同步多台主机的信息,不然会出现在请求A服务器时能获取信息,但是请求B服务器身份信息无法通过...阅读全文

2018.10.31 09:55 我的饭卡呢
阅读:4046 评论:0

Golang通道的无阻塞读写的方法示例

无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,但其实有些情况,我们并不想读数据或者写数据阻塞在那里,有1个唯一的解决办法,那就是使用select结构。这篇文章会介绍,哪些情况会存在阻塞,以及如何使用select解决阻塞。阻塞场景阻塞场景共4个,有缓存和无缓冲各2个。无缓冲通道的特点是,发送的数据需要被读取后,发送才会完成,它阻塞场景:通道中无数据,但执行读通道。通道中无数据,向通道写数据,但无协程读取。// 场景1func ReadNoDataFromNoBufCh() {noBufCh ...阅读全文

2018.11.05 09:29 胡一巴
阅读:634 评论:0

从 Eclipse 到 IDEA,金字塔到太空堡垒

IDEA有什么好? 换到IDEA并渐渐适应之后,用一个词形容这款IDE,就是:现代。 再看Eclipse,如同埃及金字塔,精巧但粗粝、宏伟但迟钝。而IDEA如同太空堡垒,精致大气、舒适内敛。 因为我对IDEA非常有好感,决定向你推销一下。让我们先来看看他那些让人不可自拨的功能吧: 插件安装 在Eclipse上安装一款插件,要到marketplace中搜索,点击install。因为跨国网络访问,所以一般下载插件会很慢。 在IDEA上安装插件,逻辑相似,Ctrl+Alt+S呼出Settings,找到...阅读全文

2019.01.13 14:37 凯睿看世界
阅读:595 评论:0

Go实现网站访问量控制(滑动窗口算法,类似利用Redis List数据结构属性)

 对于用户访问频率控制,比如每分钟,只允许访问多少次,方法很多。较为精准的就有比如“利用Redis实现访问控制频率”,还有就是RateLimiter(令牌桶算法)等。visitercontrol 介绍:https://github.com/yudeguang/visitercontrol ,可实现单位时间内,最多允许多少用户访问,可以以IP或者用户名等作为区分用户。与RateLimiter不同,visitercontrol可以实现较为精确的流量限制。对于访问控制,分为两种,一种是简单规则,一种是...阅读全文

2019-02-13 21:03:30 yudeguang
阅读:2055 评论:0

golang go 包管理工具 go mod的详细介绍 --- 赶紧拥抱 go mod吧,go path的那套东西已经out了。

go mod go官方的module管理工具 原文:https://github.com/googege/blog 用法: 在一个非go path的路径中新建一个项目,然后使用go mod init 就可以初始化一个新的包(要开启这个 export GO111MODULE=on写入.bash_profile即可 win的同学自己找找设置 GO111MODULE的win版本设置方法哈),其实跟github(gitlab都行)用在一起更好 在github上新建一个项目,例如说 test 在本地将这个...阅读全文

阅读:2008 评论:0

Goland安装Goimports工具

我们在使用命令go get拉取golang官方网站里面的包的时候是拉取不下来的,因为有墙的原因,有种方法,是:科,学,上。网。另外一种方法就是安装一个gopm的工具。 1. 从github拉取gopm > go get github.com/gpmgo/gopm (注意:go get 工具要使用git,你的提前安装git工具,如果没有安装请提前安装好) 然后在你的GOPATH目录的./bin目录下就有了gopm工具的可执行文件。 然后就可以使用gopm工具拉取golang官网的三方包了。 拉取G...阅读全文

2019.02.17 18:59 _AlphaBaby_
阅读:7203 评论:0

利用delve(dlv)在Visual Code中进行go程序的远程调试

最近碰到一个问题,如何在Windows的IDE或者文本编辑器上,远程调试Linux服务器上的golang程序。 虽然想说gdb走你,但既然go有dlv这样类似Java的jdwp方案,而且我用的Visual Code的官方Go插件支持这种方式,那就试一下这个方案吧。 环境 近端 Win7 64bit Visual Code 1.32.1 x64 Go 1.10 远端 OpenSuSE 42.1 Go 1.10 git 2.12.3 示例项目 hello/main.go,内容如下 package m...阅读全文

2019.03.15 10:31 john_zhong
阅读:1010 评论:0

Go包管理最佳实践(2019/3)

Golang的包管理经过了多种工具的演变,从go vendor,到godep ),再到dep。 这里使用的是从go v1.11开始支持的go Modules。 Go Modules具有一些优点: 不必须将项目目录放在GOPATH中 不使用vendor目录,而是统一安装到$GOPATH/pkg/mod/cache build/run时,自动析出项目import的包并安装 使用方法: 初始化 在已有的项目目录中,使用go mod init <包名>初始化。 包名通常类似github.com/gola...阅读全文

2019.03.20 10:03* 平仄_pingze
阅读:3843 评论:1

Java调用Golang生成的动态库(dll,so)

1. 环境准备 A. GCC 在控制台中输入 gcc -v 如果提示命令未找到,那么说明你的计算机中还没有gcc,去安装一个吧,gcc官方网站:https://gcc.gnu.org/ 如果从来没有安装过gcc的朋友可以直接安装win-build,可以帮你快速的安装 官方网站:http://mingw-w64.org/doku.php/download/win-builds 2. 编写go程序 我们这里只是编写一个简单的计算加法的程序,接受两个整数,然后计算他们的和,并返回。 在这里,我们将文件...阅读全文

2019.03.20 11:13 Chole121
阅读:1255 评论:0

Golang Reflect的一些用法(持续更新)

在Golang项目开发中我们常会使用到空接口interface{}与reflect。下面是作者在学习Golang过程中遇到的一些关于Reflect的用法,即使总结并记录。 将interface{T} 转为 interface{*T}: 我们在使用interface{}传递函参时,可能会碰到需要将传递的值类型T转变为指针类型*T,从而使他能够被赋值,可取址。思路: 根据T.type New()一个新的指针Type,并对其赋值。 func ifaceValue2Pointer(v interface...阅读全文

2019.03.20 21:26* Ovenvan
阅读:1929 评论:2

来,控制一下 goroutine 的并发数量

来,控制一下 goroutine 的并发数量 问题 func main() { userCount := math.MaxInt64 for i := 0; i < userCount; i++ { go func(i int) { // 做一些各种各样的业务逻辑处理 fmt.Printf("go func: %d\n", i) time.Sleep(time.Second) }(i) } } 在这里,假设 userCount 是一个外部传入的参数(不可预测,有可能值非常大),有人会全部丢进去循...阅读全文

阅读:2036 评论:0

Redis简单数据结构及适用场景记录

Redis简单数据结构及适用场景记录 1、五种基础数据结构 Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不同类型的数据结构的差异就在于 value 的结构不一样。 建议体验在线操作redis,官网http://try.redis.io/ ①String 字符串 常见的用途就是缓存用户信息,我们将用户信息结构体使用 JSON 序列化成字符串,然后将序列化后的字符串塞进 Redis 来缓存。同样,取用户信息会经过一次反序...阅读全文

2019.03.22 21:38* 李白是黑人
阅读:816 评论:0

一探B站后台架构, 他山之石, 何以攻玉? -- 仅从一个一线Golang开发者的角度谈B站4.22代码

4月22日, B站部分后台源代码因为某愤怒的员工, 被上传至Github. 本文我们不讨论安全, 法律 (根据代码漏洞, 去恶意攻击或者获利是违法的! 我们工作时也要注意代码安全), 我仅从开发者的角度谈谈, 这份代码我们能学到什么? B站Golang生态建设, 代码规范, 工具建设, 技术栈选择, 对于Go在部门或公司的推广又有哪些值得借鉴? 首先必须得说, B站这份代码整体还是不错的, 不是说组件或者基础库多么的厉害, 而是从整体目录分布, 业务代码分布, API易用性, 业务代码风格, 工...阅读全文

2019.04.24 22:47* 七月天_5092
阅读:19186 评论:5

Go Module 未来的趋势

Go Modules介绍 Modules是Go 1.11中新增的实验性功能,基于vgo演变而来,是一个新型的包管理工具。 GO111MODULE 要使用go module,首先要设置GO111MODULE=on GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。 GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。 GO111MODULE=auto...阅读全文

阅读:1034 评论:0

golang.org/x一键安装脚本

#!/usr/bin/env bash #为了兼容windows下的bash cd $GOPATH; #创建 $GOPATH/src/golang.org/x 目录 mkdir -p $GOPATH/src/golang.org/x; echo "已经安装的golang.org/x package"; ls; echo "下面一行 for in 中包的名字可以自定义" for name in "glog" "image" "perf" "snappy" "term" "sync" "winstr...阅读全文

2019.06.17 14:38 海阳之新
阅读:913 评论:0

Redis + Lua 接口限流最佳实践策略

1.应用场景 我们开发的接口服务系统很多都具有抗高并发,保证高可用的特性。现实条件下,随着流量的不断增加,在经费、硬件和资源受限的情况下,我们就需要为我们的系统服务制定有效的限流、分流策略来保护我们的系统了。 2.算法简介和示例说明 业界比较流行的限流算法有漏桶算法和令牌桶算法。 2.1漏桶算法 漏桶(Leaky Bucket)算法的实现思路比较简单,水(请求)先流入到桶中,然后桶以一定的速度出水(接口有响应速率),当水流过大时(访问频率超过设置的阈值),系统服务就会拒绝请求。强行限制系统单位时...阅读全文

2019-06-26 09:02:33 郭兆冉
阅读:2505 评论:1

分享 | 百度网盘高速下载方法汇总

在线免安装类1、在度盘资源分享网址“baidu”后面加上 “wp” 两个字母 这个方法之前介绍过:【工具分享】两个关于度娘的工具,非常不错!能用多久天知道,目前是最简便好用的方法。特点:免登陆,免下载安装软件2、油猴脚本+IDM这个方法第一次下载要先安装一些插件,然后用下载软件就可以实现高速下载。之前也介绍过:你还在吐槽百度网盘的下载速度吗?那就来试试这个吧【视频】百度网盘如何实现高速下载教程特点:免登陆,第一次要麻烦一些,后面就快了。 这个方法也比较好用,稳定性也还不错。关键就是要找对合适的脚...阅读全文

2019.07.19 14:45 永恒君的百宝箱
阅读:12400 评论:0