微星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 谋生一段时间了,开个 golang 的笔记

...
阿里云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客户端。

...