目录什么是并发安全?Mutex悲观锁乐观锁版本号机制CAS互斥锁读写互斥锁什么是并发安全?在高并发场景下,进程、线程(协程)可能会发生资源竞争,导致数据脏读、脏写、死锁等问题,为了避免此类问题的发生,就有了并发安全。这里举一个简单的例子: var data int go func() { data++ }() if data == ......
307
0
0
2023-01-31
目录操作Kafkasarama下载及安装注意事项连接 kafka 发送消息连接 kafka 消费消息操作Etcd安装put和get操作watch操作安装报错:操作KafkaKafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展等特点。本文介绍了如何使用 Go 语言发送和接收 ......
385
0
0
2023-01-31
目录引言nil默认值nil (重点记住)nil没有默认类型不同类型的nil值占用的内存大小可能是不一样的不同类型 nil 的指针是一样的不同类型的 nil 是不能比较的引言今天笔试题遇到 var x string = nil ,问这个定义是否正确?这里给出答案:cannot use nil as string value in variable declar ......
311
0
0
2023-01-31
xdm,咱今天分享一个 golang web 实战的 demogo 的 http 包,以前都有或多或多的提到一些,也有一些笔记在我们的历史文章中,今天来一个简单的实战HTTP 编程 Get先来一个 小例子,简单的写一个 Get 请求拿句柄设置监听地址和端口进行数据处理package main import ( "fmt" "net ......
307
0
0
2023-01-20
先重温一下什么叫反向代理,正向代理。鹅厂二面,nginx回忆录[1]所谓正向,反向代理取决于代理的是出站请求,还是入站请求。正向代理:代理的出站请求, 客户端能感知到代理程序,架构上距离客户端更近。 反向代理:代理的是入站请求,客户端认为代理程序就是服务器,客户端感知不到代理逻辑,架构上距离服务端更近。前几天利用golang实现反向代理程序[2],引出了Ho ......
449
0
0
2023-01-19
原文地址:https://juejin.cn/post/7176901666791227450WebSocket 是一种可以在单个 TCP 连接上进行全双工通信,位于 OSI 模型的应用层。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两 ......
349
0
0
2023-01-18
日常的开发工作中,map 这个数据结构相信大家并不陌生,在 golang 里面,当然也有 map 这种类型关于 map 的使用,还是有蛮多注意事项的,如果不清楚,这些事项,关键时候可能会踩坑,我们一起来演练一下吧1 使用 map 记得初始化写一个 demo定义一个 map[int]int 类型的变量 myMap , 不做初始化我们可以读取 myMap 的值, ......
319
0
0
2023-01-11
Processes and Threads进程操作系统会为该应用程序创建一个进程。作为一个应用程序,它像一个为所有资源而运行的容器。这些资源包括内存地址空间、文件句柄(文件描述符)、设备和线程。不同的应用程序使用的内存空间不同,在操作系统里,就是用进程来做的资源管理、隔离。线程线程是操作系统调度的一种执行路径,用于在处理器执行我们在函数中编写的代码。一个进程 ......
458
0
0
2023-01-04
前段时间一直在找工作,将自己的Go总结分享出来,期待大家交流~目录1.time.Now()返回的是什么时间?这样做的决定因素是什么?2.选择三个常见 golang 组件3.noCopy4.sync.Pool源码分析5.请列举两种不同的观察 GC 占用 CPU 程度的方法,观察方法无需绝对精确,但需要可实际运用于 profiling 和 optimizatio ......
607
0
0
2022-12-29
在Go想使用 http server,最简单的方法是使用 http/neterr := http.ListenAndServe(":8080", nil) if err != nil { panic(err.Error()) } http.HandleFunc("/hello", func(writer http.ResponseWriter ......
449
0
0
2022-12-01
int定义int类型var int1 = 1 fmt.Printf("int1类型:%T\n", int1) 输出结果:int1类型:int 注意:%T 查看变量的类型进制转化var i1 = 101 fmt.Printf("%d\n", i1) //转成十进制 fmt.Printf("%b\n", i1) //把十进制转成二级制 fmt.Pri ......
403
0
0
2022-11-28
Go 中 map 利用率今天刷 B 站看见有 Up 主在讲布隆过滤器,提到了利用率的问题,假设有一组数据,范围分布非常广,使用布隆过滤器时如何尽量少的减少内存使用,感觉除了针对特定数据的定向优化外没什么特别好的办法,类似于 Google 那种加数据头以跳过大段间隙那样。然后想到类似的问题应该广泛存在于所有使用哈希表的数据结构中,那 go 中 map 的利用率 ......
384
0
0
2022-11-28
Select 的预求值问题今天看到一个有趣的问题:package main import "fmt" func send(ch chan int) { for i := 0; i < 5; i++ { ch <- i } } func recvAndSend(ch1, ch2 chan i ......
330
0
0
2022-11-28
chan 是什么?为什么要 share memory by communicating?Chan 底层怎样实现?无缓冲 Chan 和 有缓冲 Chan 有什么不同?Chan 在收发数据的过程中也会加锁吗?Golang Channelchan 是 Golang 中内置的数据类型,不像 Mutex 等需要引入,他是 first-class 类型,他在 Go 的并 ......
426
0
0
2022-11-28
这篇文章将重点介绍在微服务中gRPC的使用:开发流程在微服务分布式架构中开发gRPC其实非常简单,不要畏难畏烦,没有什么心智负担的。开发gRPC的流程和宋丹丹把大象装冰箱是一样的:把冰箱门打开把大象装进去把冰箱门关上开发gRPC的流程;写proto文件定义服务和消息使用protoc工具生成代码编写业务逻辑代码提供服务就是这么简单。下面我仍然以Go语言举例,其 ......
410
0
0
2022-11-27