- 博客(10)
- 收藏
- 关注
原创 【Go】面试必会!两张图讲清Go语言并发调度策略
本文主要总结了 Go 语言的宏观调度策略,使用图文结合的方式,对文章开头提出的两个问题:什么时候需要调度,以及如何找到下一个需要执行的 goroutine 作出了回答。
2024-05-25 20:47:00
830
原创 【Go语言】系统弹力设计之断路器的实现
断路器(circuit-breaker)是软件系统弹力设计中常用的故障保护机制,提高软件系统的容错能力。断路器的工作方式类似于我们生活中所接触到的电路断路器,或者说是电闸上的“保险丝”,当电路出现问题(如短路)时会自动跳闸,保险丝会“熔断”,这时电路断开,可以起到保护电路上电器的作用,否则轻则导致电器烧坏,重则引发火灾,因此在电路的设计中,断路器这种自我保护装置可以说是不可或缺的。
2024-03-13 23:20:03
975
原创 一文揭秘刘谦春晚魔术背后到底发生了什么
本文首先介绍了约瑟夫环问题,给出了约瑟夫环的递归解决思路,并根据该思路写出了 Rust 代码的实现与优化;之后对刘谦老师春晚魔术表演进行了逐步的复盘,揭秘了魔术背后的数学原理。刘谦老师今年魔术的大获成功,离不开数学的奇妙,同样也更离不开刘谦老师对背后数学原理的包装设计,与深厚的魔术表演功底。当然还有小尼同学的“小穿帮”,更是给节目添加了欢乐。
2024-02-17 22:39:15
1827
1
原创 【Go】被遗忘的并发原语——sync.Cond
本文介绍了 Go 语言标准库提供的条件变量并发原语`sync.Cond`的一般使用方法,并对比其与 Go 原生的 channel 在不同场景时的优劣。然后我们浅析了`sync.Cond`的源码实现,有助于我们对`sync.Cond`使用方式的理解。
2024-02-17 22:31:16
1304
1
原创 Golang代码运行时类型复制检查器copyChecker的实现
今天在翻看 Golang sync 包源码时发现了一个以前从来没有仔细看过的代码实现——代码运行时类型复制检查器copyCheker,它的作用是可以在 Go 代码运行时,检测一个类型实例是否是复制的,如果是复制的则会触发panic。copyCheker目前仅被标准库中sync.Cond这个并发同步原语所使用,当一个sync.Cond变量在运行时被复制了,使用了复制的sync.Cond便会抛出,因此该检查器源码也与sync.Cond一同位于。
2024-02-01 22:28:48
1742
1
原创 【Go】一文带你掌握同步原语sync.Once底层原理及扩展玩法
本文介绍了 Go 标准库中的并发原语sync.Once的基本使用,然后对其源码实现进行了解析。了解了sync.Once原理后我们可以对sync.Once进行更高级的玩法以及拓展,实现了如返回值处理、初始化失败处理、判断是否执行完成等。这位 Gopher 你好呀!如果觉得我的文章还不错,欢迎一键三连支持一下!文章会定期更新,同时可以微信搜索【凑个整数1024】第一时间收到文章更新提醒⏰。
2024-02-01 22:26:48
2383
1
原创 Golang漏洞管理体系以及govulncheck漏洞检测工具介绍
govulncheck根据不同的分析目标会有不同的分析策略,例如在分析Go源码文件(*.go)时,会使用当前本地环境变量中默认的Go配置信息;govulncheck是前文提到的Go官方编写的Go项目漏洞检测二进制工具,开发者运行该工具就可以检查Go项目中的漏洞。漏洞检测工具govulncheck文档:https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck。其中govulncheck是一个Go编写的二进制工具,开发者运行该工具就可以检查Go项目中的漏洞。
2024-01-31 23:36:26
1362
3
原创 【Go】扩展并发原语之errgroup.Group的实战与源码解读
虽然提供了对错误的返回,但是只能返回所有启动的 goroutine 产生的第一个错误,如果不做额外扩展的话后面所产生的错误都会被丢弃,然而在很多时候,获取每个 goroutine 的错误情况又是很必要的。是将输入文本转化为可读 channel,后三者则分别对应了 MapReduce 的三个步骤,它们每个步骤所产生的 channel 都作为下一步操作的输入 channel,会将数据全部存于内存中,在实际生产中可能会遇到很大的文件,这时候我们就需要考虑其它的堆实现方式了,不过这不是本文的重点。
2024-01-31 23:34:05
1411
原创 基于离散对数问题的公钥密码体制(二):离散对数问题
在上一篇文章当中花了较大篇幅对群进行了介绍,通过循环群就可以对本文所提到的离散对数问题(DLP) 进行解释。首先来看离散对数问题的一般定义:定义1. 离散对数问题(DLP)给定一个阶为nnn的群GGG,群操作为∘\circ∘,有一生成元α∈G\alpha \in Gα∈G以及一元素β∈G\beta \in Gβ∈G,找到一个满足1≤x≤n1 \le x \le n1≤x≤n的整数xxx,满足:β=α∘α∘⋯∘α⏟x次=αx,\beta = \underbrace{\alpha \circ \al
2021-08-09 23:17:43
2472
原创 基于离散对数问题的公钥密码体制(一):群论基础
如今很多常用的密码学方案的安全性都是基于求解离散对数问题(Discrete Logarithm Problem, DLP)的计算复杂性,比如Diffie-Hellman密钥交换方案、ElGamal加密方案等,这些在今后的文章中会陆续地介绍到。为了能够更好地理解DLP,首先要了解一些关键的数学基础。本文主要介绍一些抽象代数(近世代数)中群论的基础知识,包含群(Group)、子群(Subgroup)、有限群(Finite Group)以及循环群(Cyclic Group)的相关概念和性质。首先给出群的定义,
2021-08-09 23:13:04
1126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人