微星Z890 Carbon WIFI主板安装ppm文件 Dec 15, 2024 ...
Postman Pre Scripts设置环境变量 Dec 6, 2024 ...
Rust sqlx使用记录 Dec 5, 2024 ...
MySQL9 docker容器配置SSL Nov 10, 2024

最近写个小东西用到了MySQL,折腾下怎么给MySQL配置SSL

...
NextJS Study Nov 7, 2024

是时候学习下现代的前端开发,之前学过html、css和js的dom操作,这次来系统学习下react、nextjs等前端技术栈。

...
Golang笔记 Oct 13, 2024 Golang 环境搭建、VS Code 与 golangci-lint 配置,以及 defer、类型转换、枚举、context 等语言特性笔记。 ...
阿里云vps关闭阿里云盾、云监控c++插件和自动化助手 Oct 12, 2024 ...
Grafana告警配置 Oct 11, 2024 ...
Golang的string数据争用导致的panic Oct 11, 2024

简单说下问题:多个 goroutine 并发读写 string,读取 string(fmt.Printlnjson.Marshal)的 goroutine 会 panic。根因是 string 是一个胖指针,除了 pointer 字段之外还有一个 len 字段的元数据。在给 string 变量赋值(拷贝)时,会逐个设置 pointer 和 len 字段,这个过程不是原子的。在有并发修改时,pointer 和 len 就不一致了,这时就回发生问题:当 len 不为 0,pointer 为 nil(0x0)时,就会panic: runtime error: invalid memory address or nil pointer dereference

本文首先探究下为什么 golang string 有这个问题,然后对比下 java 的 string 为什么没这个问题,最后介绍数据争用(data race)问题以及 Golang 和 Rust 如何避免该问题。

...
一键关闭WeGame和LOL客户端,避免浪费时间 Oct 1, 2024

如何快速关闭WeGame和LOL客户端?恶心的wegame总是在关闭游戏的时候浪费我时间,所以写了一个批处理文件,一键关闭wegame和LOL客户端。

...