自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 go 并发编程 Channels(八)

前言channels 是一种类型安全的消息队列,充当两个 goroutine 之间的管道,将通过它同步的进行任意资源的交换。chan 控制 goroutines 交互的能力从而创建了 Go 同步机制。当创建的 chan 没有容量时,称为无缓冲通道。反过来,使用容量创建的 chan 称为缓冲通道。 要了解通过 chan 交互的 goroutine 的同步行为是什么,我们需要知道通道的类型和状态。根据我们使用的是无缓冲通道还是缓冲通道,场景会有所不同,所以让我们单独讨论每个场景。使用技巧C...

2021-11-05 15:18:07 406

原创 go 并发模型 之 context (七)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档前言前面有一些例子是使用context 来处理goroutine 的退出的。现在 我们来看一下这个包吧!一、context请看官网文档context package - context - pkg.go.dev函数签名// 创建一个带有新的 Done channel 的 context,并且返回一个取消的方法func WithCancel(parent Context) (ctx Co...

2021-11-05 13:48:33 172

原创 go 并发模型 之 errgroup (六)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档前言errgroup 适用于 需获取多个接口的数据进行汇总go 天然的支持并发 所以这种场景 是不是也可以使用并发来处理呢??一、errgroup 源码通过WithContext可以创建一个带取消的Group Go方法传入一个func() error内部会启动一个 goroutine 去处理 Wait类似 WaitGroup 的 Wait 方法,等待所有的 goroutine 结束后退出...

2021-11-04 17:58:55 275

原创 go 并发模型 之 sync -- atomic (五)

前言Go 提供内存同步机制,例如通道或互斥锁,这些机制有助于解决不同的问题。在共享内存的情况下,互斥锁保护内存不受数据竞争的影响。然而,尽管存在两个互斥锁,Go 还是通过原子包提供原子内存原语来提高性能。在深入研究解决方案之前,让我们先回顾一下数据竞赛。当两个或多个 goroutine 并发访问相同的内存位置并且其中至少有一个正在写入时,可能会发生数据竞争。虽然映射有一个本地机制来防止数据竞争,但是一个简单的结构没有任何数据竞争,这使得它容易受到数据竞争的攻击。一 atomicato...

2021-11-04 17:06:05 95

原创 go 并发模型 之 sync -- Mutex (四)

前言前面的内存模型的章节里讲到 内存屏障barrier 指令要求所有对内存的操作都必须要“扩散”到 memory 之后才能继续执行其他对 memory 的操作。因此,我们可以用高级点的 atomic compare-and-swap,或者直接用更高级的锁,通常是标准库提供。一、实现原理实现模式Barging., Handsoff, SpinningBarging:这种模式是为了提高吞吐量,当锁被释放时,它会唤醒第一个等待者,然后把锁给第一个...

2021-11-04 16:15:59 270

原创 go 并发编程 之 数据竞争 data race (三)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例)

2021-11-04 12:05:48 507

原创 go 并发模型 之 内存模型 (二)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。请先阅读官方内存模型的介绍:https://golang.org/ref/mem一、内存重排我们先来看一段代码,请问下面的代码可能会输出什么?。var a,

2021-11-04 00:29:10 201

原创 go 并发编程 Goroutines(一)

文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言项目选择Go通常是因为它的并发特性。Go 团队已经花了很大的精力使 Go 中的并发性 变得廉价(就硬件资源而言)和高效,但是使用 Go 的并发特性来编写代码是可能的,这既不可靠也不可行。我想留给你一些建议,以避免Go的并发特性带来的一些陷阱提示:以下是本篇文章正文内容,下面案例可供参考一、让自己忙碌起来或者自己完成工作英文:Keep yourself busy or do.

2021-11-03 21:20:33 197

原创 go-walk gui 编写工具类

package mainimport ( "fmt" "github.com/lxn/walk" . "github.com/lxn/walk/declarative" "strconv" "strings")func main() { mw := &MyMainWindow{} if err := (MainWindow{ Title: "工具", // 指定窗口的大小 MinSize: Size{}, AssignTo: &mw.MainWind.

2021-10-09 11:42:34 228

原创 go 读取tp5 日志文件 并分析

package mainimport ( "bufio" "encoding/json" "errors" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/schema" "io" "io/ioutil" "os" "strings" "time" //"regexp" //"strconv" //"strings")var DB1 *go.

2021-09-21 14:06:15 233

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除