使用特定顺序输出map的json编码 2021-05-30 Go实践 约 300 字 预计阅读 1 分钟 我有一个使用字符串作为键和值的映射。我有一个key数组,用于指定map的顺序。 我想将该映射序列化为JSON,但要保持数组上定义的顺序。 我想将 阅读更多
常用加密签名算法介绍 2021-05-27 编解码 约 3012 字 预计阅读 7 分钟 对称加密算法 对称加密算法 是应用较早的加密算法,又称为 共享密钥加密算法。在 对称加密算法 中,使用的密钥只有一个,发送 和 接收 双方都使用这个密钥对数 阅读更多
腾讯Go安全指南 2021-05-26 Go调优 约 7633 字 预计阅读 16 分钟 1 通用类 I. 代码实现 1.1 内存管理 1.2 文件操作 1.3 系统接口 1.4 通信安全 1.5 敏感数据保护 1.6 加密解密 1.7 正则表达式 2 后台类 I. 代码实现 1.1 输入校验 1.2 SQL操作 1.3 网络 阅读更多
计算机网络时间同步技术原理介绍 2021-05-26 Linux 约 3992 字 预计阅读 8 分钟 前言 由计算机网络系统组成的分布式系统,若想协调一致进行:IT行业的“整点开拍”、“秒杀”、“Leader选举”,通信行业的“同步组网”之类业 阅读更多
API接口安全设计方案 2021-05-25 架构 约 5965 字 预计阅读 12 分钟 前言 随着Internet网的广泛应用,信息安全问题日益突出,系统间的接口交互,每个请求都有可能被抓取到数据、被伪造请求去获取数据或者攻击服务 阅读更多
扩展并发原语CyclicBarrier源码剖析 2021-05-24 Go三方库 约 2731 字 预计阅读 6 分钟 CyclicBarrier允许一组 goroutine 彼此等待,到达一个共同的执行点。同时,因为它可以被重复使用,所以叫循环栅栏。具体的机制是,大家都在栅栏前 阅读更多
扩展并发原语SingleFlight源码剖析 2021-05-24 Go源码 约 3424 字 预计阅读 7 分钟 SingleFlight SingleFlight 是 Go 开发组提供的一个扩展并发原语。它的作用是,在处理多个 goroutine 同时调用同一个函数的时候,只让一个 goroutine 去调用这个函数,等到这个 goroutine 返回结果的时候, 阅读更多
扩展并发原语Semaphore源码剖析 2021-05-24 Go三方库 约 4343 字 预计阅读 9 分钟 信号量 信号量的概念是荷兰计算机科学家 Edsger Dijkstra 在 1963 年左右提出来的,广泛应用在不同的操作系统中。在系统中,会给每一个进程一个信号量,代表每个进程目前 阅读更多
Go中的happens-before 2021-05-23 Go实践 约 7742 字 预计阅读 16 分钟 内存重排 https://golang.org/ref/mem 如何保证在一个 goroutine 中看到在另一个 goroutine 修改的变量的值,如果程序中修改数据时有其他 goroutine 同时读取,那么必须将读取串行化。为了串行化访问,请使用 阅读更多
使用Delve工具调试Go程序 2021-05-22 工具 约 5096 字 预计阅读 11 分钟 前言 Delve 是一个 go 语言的第三方调试器,github 地址是: https://github.com/go-delve/delve 。 Delve 是 GDB 调试器的有效替代品。与 GDB 相比,它能更高的理解 Go 的运行时,数据结构以及表达式。 阅读更多
分布式限流实现 2021-05-21 服务治理 约 6611 字 预计阅读 14 分钟 为什么要分布式限流 其实大多数场景下你并不需要使用集群限流,单机限流就足够了。仔细思考其实只有几种情况下可能需要使用到集群限流: 当想要配置单机 阅读更多
Channel使用实践 2021-05-21 Go实践 约 5468 字 预计阅读 11 分钟 channel channels 是一种类型安全的消息队列,充当两个 goroutine 之间的管道,将通过它同步的进行任意资源的交换。chan 控制 goroutines 交互的能力从而创建了 Go 同步机制。当创建的 阅读更多
并发原语atomic源码剖析 2021-05-21 Go源码 约 3121 字 预计阅读 7 分钟 atomic 原理 在现在的系统中,write 的地址基本上都是对齐的(aligned)。 比如,32 位的操作系统、CPU 以及编译器,write 的地址总是 4 的 阅读更多
并发原语context源码剖析 2021-05-21 Go源码 约 6455 字 预计阅读 13 分钟 Context 上下文 context.Context Go 语言中用来设置截止日期、同步信号,传递请求相关值的结构体。上下文与 Goroutine 有比较密切的关系,是 Go 语言中独特的设计,在其他编程语言中我们 阅读更多
并发原语Sync-Pool源码剖析 2021-05-21 Go源码 约 11975 字 预计阅读 24 分钟 前言 sync.Pool 数据类型用来保存一组可独立访问的临时对象。请注意这里的“临时”这两个字,它说明了 sync.Pool 这个数据类型的特点,也就是说,它池化的对象会在未来的 阅读更多
并发原语Sync-Map源码剖析 2021-05-21 Go源码 约 17546 字 预计阅读 36 分钟 Map Go 内建的 map 类型不是线程安全的,所以 Go 1.9 中增加了一个线程安全的 map,也就是 sync.Map。但是,我们一定要记住,这个 sync.Map 并不是用来替换内建 阅读更多
并发原语sync-Once源码剖析 2021-05-21 Go源码 约 2897 字 预计阅读 6 分钟 Once 很多人认为实现一个 Once 一样的并发原语很简单,只需使用一个 flag 标记是否初始化过即可,最多是用 atomic 原子操作这个 flag,但是,这个实现有一个很大的问 阅读更多
并发原语Cond源码剖析 2021-05-21 Go源码 约 2910 字 预计阅读 6 分钟 Cond 标准库中的 Cond 并发原语初始化的时候,需要关联一个 Locker 接口的实例,一般我们使用 Mutex 或者 RWMutex。 首先,Cond 关联的 Locker 实例可以通过 c.L 访问,它 阅读更多
并发原语WaitGroup源码剖析 2021-05-21 Go源码 约 4539 字 预计阅读 10 分钟 WaitGroup sync.WaitGroup 可以达到并发 Goroutine 的执行屏障的效果,等待多个 Goroutine 执行完毕。 sync.WaitGroup 结构体中只包含两个成员变量: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 阅读更多
并发原语sync-Mutex和sync-RWMutex源码剖析 2021-05-21 Go源码 约 8325 字 预计阅读 17 分钟 Mutex Go 语言的 sync.Mutex 由两个字段 state 和 sema 组成。其中 state 表示当前互斥锁的状态,而 sema 是用于控制锁状态的信号量。 1 2 3 4 type Mutex struct { state int32 sema uint32 } 设计理念 这个案例基于两 阅读更多