1. 引言 在系统中,上游服务和下游服务是两个关键概念。上游服务通常指的是提供某种功能或数据的服务端,它接收来自下游服务的请求,并根据请求进行处理和响应。下游服务通常指的是发起请求并依赖上游服务的客户端,它们通过发送请求向上游服务请求数据或执行某些操作。 上游服务和下游服务之间的协作是系统中实现整
1. 引言 在 Go 语言中,map是一种内置的数据类型,它提供了一种高效的方式来存储和检索数据。map是一种无序的键值对集合,其中每个键与一个值相关联。使用 map 数据结构可以快速地根据键找到对应的值,而无需遍历整个集合。 在 Go 语言中,map 是一种内置的数据类型,可以通过以下方式声明和
TDengine Go 连接器 https://github.com/taosdata/driver-go 使用 cgo 调用 taos.so 中的 API,使用过程中发现线程数不断增长,本文从一个 cgo 调用开始解析 Go 源码,分析造成线程增长的原因。 转换 cgo 代码 对 driver-
1. 引言 在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如: 单元测试:编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等。 数据结构操作:在使用map等数据结构时,可能需要判断两个对象是否相等以进行元素查找、删除或更新等
原文链接: 为什么说 Go 语言字符串是不可变的? 最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说 Go 语言字符串是不可变的,这是为什么呢? 这个问题本身并不困难,但对于新手来说确实容易产生困惑,今天就来回答一下。 首先来看看它的底层结构: type stringSt
本次主要介绍golang中的标准库bytes,基本上参考了 字节 | bytes 、Golang标准库——bytes 文章。 bytes库主要包含 5 大部分,即: 常量 变量 函数 Buffer Reader 我们依次学习上面的 5 大部分。 1、常量 const MinRead = 512
2023-05-31 要检查切片是否为空,需始终使用 len(s) == 0 来判断,而不应该使用 s == nil 来判断。 切片之间是不能比较的,我们不能使用==操作符来判断两个切片是否含有全部相等元素。 切片唯一合法的比较操作是和nil比较。 一个nil值的切片并没有底层数组,一个
多线程程序在一个核的CPU运行 多线程程序在多个核的CPU运行 goroutine 协程:用户态,轻量级线程,栈KB级别,创建和调度由go语言直接调度 线程:内核态,线程跑多个协程,栈MB级别 package main import ( "fmt" "time" ) fun
1. 简介 本文将介绍 Go 语言中的 Weighted 并发原语,包括 Weighted 的基本使用方法、实现原理、使用注意事项等内容。能够更好地理解和应用 Weighted 来实现资源的管理,从而提高程序的稳定性。 2. 问题引入 在微服务架构中,我们的服务节点负责接收其他节点的请求,并提供相
前言:在 Golang 中函数之间传递变量时总是以值的方式传递的,无论是 int,string,bool,array 这样的内置类型(或者说原始的类型),还是 slice,channel,map 这样的引用类型,在函数间传递变量时,都是以值的方式传递,也就是说传递的都是值的副本。 在使用iouti
1. 简介 本文探讨了并发编程中的同步操作,讲述了为何需要同步以及两种常见的实现方式:sync.Cond和通道。通过比较它们的适用场景,读者可以更好地了解何时选择使用不同的同步方式。本文旨在帮助读者理解同步操作的重要性以及选择合适的同步机制来确保多个协程之间的正确协调和数据共享的一致性。 2. 为
原文链接: Go 语言 map 是并发安全的吗? Go 语言中的 map 是一个非常常用的数据结构,它允许我们快速地存储和检索键值对。然而,在并发场景下使用 map 时,还是有一些问题需要注意的。 本文将探讨 Go 语言中的 map 是否是并发安全的,并提供三种方案来解决并发问题。 先来回答一下题
用go封装一下封禁功能 本篇为用go设计开发一个自己的轻量级登录库/框架吧 - 秋玻 - 博客园 (cnblogs.com)的封禁业务篇,会讲讲封禁业务的实现,给库/框架增加新的功能。 源码:https://github.com/weloe/token-go 思路 封禁业务也是在一般项目中比较常见
java orm框架easy-query分库分表之分表 高并发三驾马车:分库分表、MQ、缓存。今天给大家带来的就是分库分表的干货解决方案,哪怕你不用我的框架也可以从中听到不一样的结局方案和实现。 一款支持自动分表分库的orm框架easy-query 帮助您解脱跨库带来的复杂业务代码,并且提供多种
用markdown写文档很方便,但是有个困扰的地方,就是标题的编号问题。 写文档的时候,经常会在中间插入新的标题和内容,所以手动管理编号的话,如果新的标题插在前面,则要调整后面所有的编号。 如果在文档完成后再手动加上编号的话,不仅容易忘记, 而且有时候我们是在其他编辑器里编辑文档再导出markdo
1. 简介 本文将介绍在 Go 语言中实现生产者消费者模式的多种方法,并重点探讨了通道、条件变量的适用场景和优缺点。我们将深入讨论这些方法的特点,以帮助开发者根据应用程序需求选择最适合的方式。通过灵活运用 Go 语言提供的并发原语,我们能够实现高效、可靠的生产者消费者模式,提升系统的并发性能和可维
1. 简介 本文介绍了在并发编程中数据汇总的问题,并探讨了在并发环境下使用互斥锁和通道两种方式来保证数据安全性的方法。 首先,通过一个实例,描述了一个并发拉取数据并汇总的案例,并使用互斥锁来确保线程安全。然后,讨论了互斥锁的一些缺点,引出了通道作为一种替代方案,并介绍了通道的基本使用和特性。接下来
hello,大家好啊,我是小楼。 最近在工作中对 Go 的 singleflight 包做了下增强,解决了一个性能问题,这里记录下,希望对你也有所帮助。 singleflight 是什么 singleflight 直接翻译为”单(次)飞(行)“,它是对同一种请求的抑制,保证同一时刻相同的请求只有一

推荐文章