目录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 ......
189
0
0
2023-09-11
目录扫描的目的扫描的实现运行期内存分配运行扫描阶段总结之前阐述了 golang 垃圾回收通过保证三色不变式来保证回收的正确性,通过写屏障来实现业务赋值器和 gc 回收器正确的并发的逻辑。其中高概率的提到了“扫描队列”和“扫描对象”。队列这个逻辑非常容易理解,那么”扫描对象“ 这个你理解了吗?有直观的感受吗?这篇文章就是要把这个扫描的过程深入剖析下。扫描的东西 ......
167
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加 ......
234
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 ......
165
0
0
2023-09-05
Golang 协程/线程/进程 区别详解转载请注明来源:janrs.com/mffp概念进程 每个进程都有自己的独立内存空间,拥有自己独立的地址空间、独立的堆和栈,既不共享堆,亦不共享栈。一个程序至少有一个进程,一个进程至少有一个线程。进程切换只发生在内核态。线程 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,是由操作系统调度,是操作系统调度(CPU调度 ......
193
0
0
2023-08-28
之前有兄弟留言想学习一下 Context,他来了,虽迟但到。前言在 Go 语言中,Context 是一个非常重要的概念,它用于在不同的 goroutine 之间传递请求域的相关数据,并且可以用来控制 goroutine 的生命周期和取消操作。本文将深入探讨 Go 语言中 Context 特性 和 Context 的高级使用方法。基本用法在 Go 语言中,Co ......
200
0
0
2023-08-27
Goroutine & SchedulerGoroutine ,Go 语言基于并发(并行)编程给出的自家的解决方案。goroutine 是什么?通常 goroutine 会被当做 coroutine(协程)的 golang 实现,从比较粗浅的层面来看,这种认知也算是合理,但实际上,goroutine 并非传统意义上的协程,现在主流的线程模型分三种:内 ......
186
0
0
2023-08-23
一般程序的内存分配 在讲Golang的内存分配之前,让我们先来看看一般程序的内存分布情况: 以上是程序内存的逻辑分类情况。我们再来看看一般程序的内存的真实(真实逻辑)图: Go的内存分配核心思想 Go是内置运行时的编程语言(runtime),像这种内置运行时的编程语言通常会抛弃传统的内存分配方式,改为自己管理。这样可以完成类似预分配、内存池等操作,以避开系统 ......
170
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 ......
157
0
0
2023-08-22
一、目录:1、 kafka 是什么?主要应用场景有哪些?2、和其他消息队列相比、 kafka 的优势在哪里?3、什么是 producer、consumer、broker、topic、partition ?4、 kafka 多副本机制 了解吗?5、 kafka 多分区( partition )以及多副本( replica )机制有什么好处呢?6、 zook ......
168
0
0
2023-08-22
gRPC 越来越流行,相关的插件也很多,今天介绍的就是一个 gRPC 插件。 gRPC-Gateway 是一个插件,它为 gRPC 服务生成反向代理服务器,将 Restful/JSON 转换为 gRPC,反之亦然。 换句话说,gRPC-Gateway 将在你的 gRPC 服务上创建一个层,该层将充当客户端的 Restful/JSON 服务。gRPC- ......
208
0
0
2023-08-22
本文让我们一起来学习 golang Context 的使用和标准库中的Context的实现。golang context 包 一开始只是 Google 内部使用的一个 Golang 包,在 Golang 1.7的版本中正式被引入标准库。下面开始学习。简单介绍在学习 context 包之前,先看几种日常开发中经常会碰到的业务场景:业务需要对访问的数据库, rp ......
181
0
0
2023-08-22
非正式解决方案 思考链接价值,非正式解决方案,既扯高大上如人工智能、大数据,也关注码农日常如分布式、 Java 和golang,每天分享瞎想的东西。MVC 应用一般结构 目录结构说明如下名称内容model模型层目录,类比Java 中的entityview视图层,存放所有templete模板ctrl控制器层, 存放全部控制器service服务层,类比Java ......
152
0
0
2023-08-21
前言一个基本的go项目一般会有cmd, internal, pkg三个基础目录来分层,当然这不是官方go核心开发团队定义的标准。但这个确实是目前go生态系统中比较常见的布局形式,不管从之前的和还是现在开发项目的分层来看。这些基础目录同样适用更大的项目,并且还有一些小的增强功能。如果你创建一个项目来学习go或你开发的是一个PoC或很小的项目,这种分层就没必要使 ......
204
0
0
2023-08-19
背景gRPC是Google开始的一个RPC服务框架, 是英文全名为Google Remote Procedure Call的简称。 广泛的应用在有RPC场景的业务系统中,一些架构中将gRPC请求都经过一个gRPC服务代理节点或网关,进行服务的权限限制,限流,服务调用监控,增加请求统计等等诸多功能。 如下以Golang和gRPC为例,简要分析gRPC的转发原 ......
226
0
0
2023-08-19