Go单线程运行也会有并发问题 (colobu.com)

【简介】

一个Go大佬群中严肃的讨论了一个问题:Go程序单线程多goroutine访问一个map会遇到并发读写panic么?

答案是肯定的,因为出现了这个问题所以大家才在群中讨论。

为什么呢?因为单线程意味着并行单元只有一个(多线程也可能并行单元只有一个),但是多goroutine意味着并发单元有多个,如果并发单元同时执行,即使是单线程,可能就会产生数据竞争的问题,除非这些goroutine是顺序执行的。

点击查看原文 >>

@技术头条 2023-12-11 23:04 / 原作者微博:@colobu / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
图解Blink-Tree:B+Tree的一种并发优化结构和算法 (www.codedump.info)
本文介绍了 Blink-Tree,这是一种 B+Tree 的并发优化结构。通过引入 high key 和 link 指针,解决了并发访问时的性能问题,特别适用于高并发环境的存储引擎优化。如果你对数据库存储引擎感兴趣,这篇文章不容错过!
by @技术头条 2024-09-09 23:46 查看详情
Nginx 反代 SSL_do_handshake 问题解决思路 (dusays.com)
遇到 Nginx 反代时的 SSL_do_handshake 错误?本文深入分析了该问题的原因,并提供了详细的解决方案,包括如何配置 Nginx 以避免 502 错误。如果你在运维中遇到 SSL 问题,这篇文章能帮你快速解决!
by @技术头条 2024-09-09 23:35 查看详情
Java程序调用外网API时CA问题 (lisenhui.cn)
Java 安全设置问题常常让开发者头疼,特别是与 cacerts 证书库相关的配置。本文详细解读了 Java 中的 cacerts 文件问题,帮助你排除常见错误,并提供了实用的解决方案。通过这些技巧,你可以更好地管理证书库,提升应用安全性。如果你在 Java 开发中遇到证书问题,千万不要错过!
by @技术头条 2024-09-08 23:22 查看详情
ubuntu 克隆 netplan dhcp ip 冲突问题 (www.frytea.com)
本文介绍了如何解决在Ubuntu虚拟机克隆过程中出现的netplan DHCP IP冲突问题。作者发现冲突的原因是/etc/machine-id在克隆时保持不变,导致系统分配相同的IP地址。通过在/etc/netplan/xx-installer-config.yaml中添加dhcp-identifier: mac,可以确保每次克隆时获得唯一的IP地址。文章还解释了/etc/machine-id和/sys/class/dmi/id/product_uuid的作用。
by @技术头条 2024-08-06 08:15 查看详情
对“技术质问产品的几个常见问题”的回答 (blog.csdn.net)
给某大厂的技术新人做了一个关于产品思维的分享,提前收集了一些困惑,贴几条提及最多的,稍微聊一下。

哦对了,先帮产品说句话——技术同学,千万别简单地用“那个产品是傻X”来回答以下问题。这是因为,作为技术,如果你总觉得和你配合的产品都是傻X,那大概率,别人会觉得你也是——要不然,为什么选择与傻X共事?所谓 “若,我看周围皆傻X,料,世人看我亦如是”。
by @技术头条 2024-05-05 23:33 查看详情
sqlite并发读写的演进之路 (www.codedump.info)
本文梳理sqlite并发读写方案的演进之路。
by @技术头条 2024-03-21 23:26 查看详情
聊聊 Go 的边界检查消除技术 (colobu.com)
在翻译的从慢速到SIMD一文中, SourceGraph工程师其中的一个优化就是边界检查消除(BCE,bounds check elimination)技术,同时他也抛给了读者一个问题:

为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]?

本文第一部分先回答这个问题。 第二部分介绍更好的边界检查消除方法。 第三部分再全面梳理Go的边界检查消除技术。
by @技术头条 2024-03-21 23:00 查看详情
Go 中的高速数据包处理:从 net.Dial 到 AF_XDP (colobu.com)
最近编写了一个Go程序,向数百万个IP地址发送ICMP ping消息。显然,希望这个过程能尽可能快速高效地完成。因此,这促使我研究各种与网络栈交互和快速发送数据包的各种方法。这是一个有趣的旅程,所以在本文中,我将分享一些学习成果,并记录下来供将来参考:)你将看到,仅使用8个内核就可以达到1880万数据包/秒。这里还有一个GitHub仓库,其中包含了示例代码,可以方便地跟随学习。
by @技术头条 2024-03-21 22:55 查看详情
UTF-8 Overlong Encoding导致的安全问题 (www.leavesongs.com)
Overlong Encoding是将1个字节的字符,按照UTF-8编码方式强行编码成2位以上UTF-8字符的方法。

0xC0AE并不是一个合法的UTF-8字符,但我们按照UTF-8编码方式将其转换出来的,这就是UTF-8设计中的一个缺陷。

按照UTF-8的规范来说,我们应该使用字符可以对应的最小字节数来表示这个字符。那么对于点号来说,就应该是0x2e。但UTF-8编码转换的过程中,并没有限制往前补0,导致转换出了非法的UTF-8字符。

这种攻击方式就叫“Overlong Encoding”。
by @技术头条 2024-03-13 13:26 查看详情
Nginx proxy_pass到AWS ALB的504问题 (www.iots.vip)
我们的部分后端服务正在经历容器化的改造, 由于历史包袱,现网的网关等设施无法一次性迁移到 k8s 集群中, 因此使用 Nginx proxy_pass 转发到 AWS ALB 这样一个曲线救国的临时方案。

但是在使用时,我们发现一段时间后 Nginx 出现了 504 的错误,检查后端服务均是正常的,而单独访问 ALB 也是正常响应的,因此便有了此文。
by @技术头条 2024-03-13 13:22 查看详情