[TOC]最常用的限流算法以及如何在http中间件中加入流控何为限流?通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理说白了就是限制请求数量,或者是在某一段时间内限制总的请求数量例如秒杀网站,限制22点5分 – 22点10分 秒杀999份产品, 限制放行 5w 个请求,若在该段
......
356
0
0
2022-04-20
Go Eval 库Golang 的 eval() 函数第三方实现。背景众所周知,Golang 是一门静态语言,笔者作为动态语言转过来的老同志(别猜了我是phper),习惯了用 eval() 就想着Go 动态执行代码呢。如何在 golang 中使用 eval() 函数,php,javascript 自带该功能。golang 官方是没有提供相关库的。在丰富的Go
......
555
0
0
2022-04-20
[TOC]gin的路由算法分享gin是什么呢?我们在github上看看官方简介Gin is a web framework written in Go (Golang). It features a martini-like API with performance that is up to 40 times faster thanks to httpro
......
357
0
0
2022-04-20
当我们书写goroutines协程时,大家或许遇到下面的报错fatal error: all goroutines are asleep - deadlock!
出现这个问题,就说明你的代码中管道是阻塞的为了方便下次快速识别阻塞,遂进行如下总结我们把channel看做成现实中的水管,水管的两端分别代表代表着channel的接受端和发送端。所以通道的阻塞自然
......
333
0
0
2022-04-20
[TOC]探究一下net/http 的代码流程net/http 是什么?是GO的其中一个标准库,用于Web应用的开发,使用这个库,可以让开发变得更加迅速和简便,且易于上手。那么问题来了使用库,确实方便,无脑调接口,拼拼凑凑能跑就行,管他效率性能,出了问题,删库跑路就行了。。。实际真的是这个样子吗?作为一个开发,一定要想办法弄明白不清楚的事情,要弄明白用到工具
......
376
0
0
2022-04-20
一、数组(Array)数组:数组是指有序的元素序列。如果将有限个类型相同的变量的集合命名,那么这个名称就是数组名,而组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量,而数组中的数据可以使用下标(索引)来查找到。其实在编程语言中数组的概念是一样的,下面具体来看看golang中数组是如何定义和使用的:1.数组的定义方法一:var arr1
......
313
0
0
2022-04-19
[TOC]gRPC- HTTP网关 IgRPC是什么?我们再来回顾一下gRPC是 Google开发的基于HTTP/2标准设计的一个通用的,高性能的RPC框架,有如下3个最明显的特点:支持主流的编程语言,C++,Java,Python,Go,Ruby等,基于ProtoBuf生成相应的服务端和客户端代码。基于HTTP/2协议,且提供了更强的应用性能 – 节省带宽
......
482
0
0
2022-04-19
[TOC]gRPC的请求追踪前言我们来回顾一下之前分享的知识点:gRPC介绍介绍了基本你的gRPC的使用方式,框架,交互方式等gRPC的认证分享了gRPC的四种认证方式中重要的2种方式,有兴趣可以点击看看哦openssl 证书生成笔记(go 1.15版本以上)整理了openssl 证书的生成,关键点已经高亮标注,值得一看gRPC的拦截器gRPC生态中的中间件
......
484
0
0
2022-04-19
前言go-zero 群里经常有同学问:服务监控是通过什么算法实现的?滑动窗口是怎么工作的?能否讲讲这块的原理?熔断算法是怎么设计的?为啥没有半开半闭状态呢?本篇文章,来分析一下 go-zero 中指标统计背后的实现算法和逻辑。指标怎么统计这个我们直接看 breaker :type googleBreaker struct {
k float64
......
304
0
0
2022-04-19
一、变量定义Golang的变量定义相比c/c++,其最为特殊之处在于c/c++是将变量类型放在变量的前面,而Go语言则是将变量类型放在变量的后面,如下:这是c/c++:#include <iostream>
using namespace std
int main(){
int a;
int b;
float
......
321
0
0
2022-04-19
[TOC]瞧一瞧 gRPC的拦截器上一次说到gRPC的认证总共有4种,其中介绍了常用且重要的2种:可以使用openssl做认证证书,进行认证客户端还可以将数据放到metadata中,服务器进行认证可是朋友们,有没有想过,要是每一个客户端与服务端通信的接口都进行一次认证,那么这是否会非常多余呢,且每一个接口的实现都要做一次认证,这真的太难受了咱作为程序员,就应
......
484
0
0
2022-04-19
文章持续更新,可以微信搜一搜「golang小白成长记」第一时间阅读,回复【教程】获golang免费视频教程。本文已经收录在GitHub github.com/xiaobaiTech/golangFamil... , 有大厂面试完整考点和成长路线,欢迎Star。问题我们来看一段日常代码。package main
import ("bytes""encod
......
357
0
0
2022-04-19
rune是Go语言中一种特殊的数据类型,它是int32的别名,几乎在所有方面等同于int32,用于区分字符值和整数值,官方解释如下:// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguis
......
355
0
0
2022-04-19
time包中的Add和Sub的用法,Add用于计算某个时间之前和之后的时间点,Sub用于计算两个时间差package main
import ("fmt""strings""time"
)
func main() {// Add 时间相加
now := time.Now()// ParseDuration parses a durat
......
427
0
0
2022-04-18
知识点1、 gorm 迁移1.1 gorm.DB.AutoMigrate ()// 自动迁移
db.AutoMigrate(&user.User{},&article.Article{},
)
1.2 字段标签 //User 用户模型
type User struct {
models.BaseModel
......
395
0
0
2022-04-18