目录固定窗口滑动窗口漏桶算法令牌桶滑动日志总结限流是项目中经常需要使用到的一种工具,一般用于限制用户的请求的频率,也可以避免瞬间流量过大导致系统崩溃,或者稳定消息处理速率这个文章主要是使用Go实现常见的限流算法,代码参考了文章面试官:来,年轻人!请手撸5种常见限流算法! 和面试必备:4种经典限流算法讲解如果需要Java实现或更详细的算法介绍可以看这两篇文章固 ......
19
0
0
2023-09-13
目录互斥锁的定义go Mutex 的基本用法互斥锁使用的两个例子gin Context 中的 Set 方法sync.Pool 中的 pinSlow 方法互斥锁使用的注意事项互斥锁锁定的是什么互斥锁实现原理信号量等待队列原子操作Mutex 的公平性Mutex 源码剖析LockUnlock总结在我们的日常开发中,总会有时候需要对一些变量做并发读写,比如 web ......
19
0
0
2023-09-11
目录1. 简介(Introduction)2. 建议(Advice)3. 发生在…之前(Happens Before)3.1 重排序3.2 happens-before3.3 规则4. 同步(Synchronization)4.1 初始化(Initialization)4.2 Go协程的创建(Goroutine creation)4.3 Go协程的销毁(Go ......
16
0
0
2023-09-11
目录扫描的目的扫描的实现运行期内存分配运行扫描阶段总结之前阐述了 golang 垃圾回收通过保证三色不变式来保证回收的正确性,通过写屏障来实现业务赋值器和 gc 回收器正确的并发的逻辑。其中高概率的提到了“扫描队列”和“扫描对象”。队列这个逻辑非常容易理解,那么”扫描对象“ 这个你理解了吗?有直观的感受吗?这篇文章就是要把这个扫描的过程深入剖析下。扫描的东西 ......
15
0
0
2023-09-11
目录1.md5 加密——不可逆2.hmacsha 加密——不可逆hmac-md5加密hamacsha1 加密hamacsha 256 加密hmacsha512加密hamasha 调用3.Sha 加密——不可逆sha1sha256sha512sha调用4.base 加密 解密加密解密base64 调用5.AES 加密CBC方式ECB方式CFB 方式6.RSA加 ......
15
0
0
2023-09-10
目录0. 简介1. 创建main goroutine2. 调度main goroutine0. 简介上一篇博客我们分析了调度器的初始化,这篇博客我们正式进入main函数及为其创建的goroutine的过程分析。1. 创建main goroutine接上文,在runtime/asm_amd64.s文件的runtime·rt0_go中,在执行完runtime.s ......
20
0
0
2023-09-05
Golang 协程/线程/进程 区别详解转载请注明来源:janrs.com/mffp概念进程 每个进程都有自己的独立内存空间,拥有自己独立的地址空间、独立的堆和栈,既不共享堆,亦不共享栈。一个程序至少有一个进程,一个进程至少有一个线程。进程切换只发生在内核态。线程 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,是由操作系统调度,是操作系统调度(CPU调度 ......
24
0
0
2023-08-28
之前有兄弟留言想学习一下 Context,他来了,虽迟但到。前言在 Go 语言中,Context 是一个非常重要的概念,它用于在不同的 goroutine 之间传递请求域的相关数据,并且可以用来控制 goroutine 的生命周期和取消操作。本文将深入探讨 Go 语言中 Context 特性 和 Context 的高级使用方法。基本用法在 Go 语言中,Co ......
28
0
0
2023-08-27
Goroutine & SchedulerGoroutine ,Go 语言基于并发(并行)编程给出的自家的解决方案。goroutine 是什么?通常 goroutine 会被当做 coroutine(协程)的 golang 实现,从比较粗浅的层面来看,这种认知也算是合理,但实际上,goroutine 并非传统意义上的协程,现在主流的线程模型分三种:内 ......
28
0
0
2023-08-23
一般程序的内存分配 在讲Golang的内存分配之前,让我们先来看看一般程序的内存分布情况: 以上是程序内存的逻辑分类情况。我们再来看看一般程序的内存的真实(真实逻辑)图: Go的内存分配核心思想 Go是内置运行时的编程语言(runtime),像这种内置运行时的编程语言通常会抛弃传统的内存分配方式,改为自己管理。这样可以完成类似预分配、内存池等操作,以避开系统 ......
31
0
0
2023-08-23
本文详细讲述了 Golang 中,堆栈设计理念以及演变过程。描述了从 Segment stack 到 Contiguous Stack 、初始堆栈大小从 8Kb 到 2Kb 的原因。 Illustration created for “A Journey With Go”, made from the original Go Gopher, create ......
22
0
0
2023-08-22
一、目录:1、 kafka 是什么?主要应用场景有哪些?2、和其他消息队列相比、 kafka 的优势在哪里?3、什么是 producer、consumer、broker、topic、partition ?4、 kafka 多副本机制 了解吗?5、 kafka 多分区( partition )以及多副本( replica )机制有什么好处呢?6、 zook ......
29
0
0
2023-08-22
gRPC 越来越流行,相关的插件也很多,今天介绍的就是一个 gRPC 插件。 gRPC-Gateway 是一个插件,它为 gRPC 服务生成反向代理服务器,将 Restful/JSON 转换为 gRPC,反之亦然。 换句话说,gRPC-Gateway 将在你的 gRPC 服务上创建一个层,该层将充当客户端的 Restful/JSON 服务。gRPC- ......
31
0
0
2023-08-22
本文让我们一起来学习 golang Context 的使用和标准库中的Context的实现。golang context 包 一开始只是 Google 内部使用的一个 Golang 包,在 Golang 1.7的版本中正式被引入标准库。下面开始学习。简单介绍在学习 context 包之前,先看几种日常开发中经常会碰到的业务场景:业务需要对访问的数据库, rp ......
31
0
0
2023-08-22
非正式解决方案 思考链接价值,非正式解决方案,既扯高大上如人工智能、大数据,也关注码农日常如分布式、 Java 和golang,每天分享瞎想的东西。MVC 应用一般结构 目录结构说明如下名称内容model模型层目录,类比Java 中的entityview视图层,存放所有templete模板ctrl控制器层, 存放全部控制器service服务层,类比Java ......
24
0
0
2023-08-21