V2EX sztink 的所有回复 第 1 页 / 共 2 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    sztink    全部回复第 1 页 / 共 2 页
回复总数  30
1  2  
mkdocs
2024 年 7 月 31 日
回复了 yann123 创建的主题 程序员 职业选择
选 k8s 。阵列卡,感觉行业太窄了。搞了 k8s ,后面跳槽可选的公司相对也多。
2024 年 7 月 31 日
回复了 yann123 创建的主题 程序员 职业选择
raid 是什么?
2024 年 7 月 30 日
回复了 dylen 创建的主题 Go 编程语言 广域网 udp 组播如何发送数据?
1. 发送方不需要加入多播(也叫组播)组,可以直接发送消息
2. 接收方需要加入多播组中,才能接收到消息。多播是支持广域网的,现实中限制条件太多,更多的用在局域网。

欲了解详细的基础知识可以看《 UNIX 网络编程 卷 1:套接字联网 API 》一书。这里有这本书的笔记: https://note.cyub.vip/unp-v1/

Go 语言可以参考 ssdp 协议的 go 实现: https://github.com/koron/go-ssdp/blob/main/internal/multicast/multicast.go#L68-L91
2024 年 7 月 1 日
回复了 FreeWong 创建的主题 Go 编程语言 === 一个 golang goroutine 相关的问题 ===
@sztink 死锁是指多个进程互相等待对方释放资源而无法继续执行的状态,而阻塞等待是指进程由于资源不可用而暂停执行,但资源一旦可用便能继续执行。
2024 年 7 月 1 日
回复了 FreeWong 创建的主题 Go 编程语言 === 一个 golang goroutine 相关的问题 ===
sorry 。漏看了 fmt.Scanln(),搞成程序后面会退出。main 里面的 fmt.Scanln()一直等待内容输入,另外两个 goroutine 会一直阻塞挂起等待 ch 可写入,他两不是死锁。
2024 年 7 月 1 日
回复了 FreeWong 创建的主题 Go 编程语言 === 一个 golang goroutine 相关的问题 ===
原因是 main 所在的主协程执行完毕后,会调用 exit_group 系统调用,exit_group 系统调用会 exit 出所有线程,这也就意味着程序的终止。程序都终止了,就不要谈什么阻塞不阻塞了。

底层实现代码见: https://github.com/cyub/go-1.14.13/blob/master/src/runtime/proc.go#L202-L229 ,代码简单分析下:

fn := main_main // 是 main 函数的一个 wrapper ,main_main 里面会调用 main 包里面的 main 函数
fn() // 执行 main_main 函数

此处省略其他代码...

exit(0) // 调用系统调用 exit_group ,退出程序
for {
var x *int32
*x = 0 // 由于 x 没有分配内存,此处一定会发生段错误。当然当执行 exit(0)后,理论上也不会进入到这个 for 循环的,这里面可能是为了保险起见吧。
}

另外我们可以使用 gdb 捕获 exit_group 系统调用,观察整个过程。怎么捕获系统调用,可以看这个 https://go.cyub.vip/analysis-tools/gdb/#%e4%b8%ba%e7%b3%bb%e7%bb%9f%e8%b0%83%e7%94%a8%e8%ae%be%e7%bd%ae%e6%8d%95%e8%8e%b7%e7%82%b9

然后执行 gdb 的 bt ,查看 backtrace 信息。
2024 年 5 月 7 日
回复了 afxcn 创建的主题 Go 编程语言 使用 go 遇到的一个奇怪问题,求教
@afxcn 这样是解决不了本质问题的。因为 rand.NewSource 不是并发安全的。另外 createRand 中_seededRand 初始化的逻辑也不是并发安全的。你应该直接用全局函数 rand.Intn()。
2024 年 5 月 7 日
回复了 afxcn 创建的主题 Go 编程语言 使用 go 遇到的一个奇怪问题,求教
靠,你这生成随机字符代码难怪看着眼熟,我前段时候从网络上 copy 的一份跟你的几乎一模一样,我得赶紧 fix 一下。copy 来源: https://github.com/BelphegorPrime/lib/blob/master/RandString.go
2024 年 4 月 22 日
回复了 unt 创建的主题 程序员 IOT 系统 MQTT 协议有必要将设备 id 放在 topic 里吗
有必要。每台设备只订阅带自己设备 ID 的 topic ,能够很方便做访问控制,保证安全。举个例子,如果你设备 ID 都泄露了,如果此时 hacker 只需拿到它当前设备里面的 mqtt 账号信息,就可以模拟给其他设备发生消息了。如果设备只订阅带自己设备 ID 的 topic ,服务器侧可以很容易设置 ACL 规则,只允许每台设备只能访问和发送消息到它自己的 topic ,hacker 就很难攻击了
2024 年 4 月 9 日
回复了 rockyliang 创建的主题 Go 编程语言 关于 golang 官网一段代码的疑惑
编译器优化也是有可能的,不同版本 go 编译器编译有差异的。编译优化可以看看这篇文章:Golang 编译器优化那些事: https://fanlv.fun/2021/12/18/golang-complier-optimize/
2024 年 4 月 9 日
回复了 rockyliang 创建的主题 Go 编程语言 关于 golang 官网一段代码的疑惑
OP 的猜测是一种可能情况:dOne=true 没有同步到其他核心导致了死循环。所以 go 官方提供了 atomic.Storexxx()函数来保证原子性和可见性。

Storexxx()函数底层使用 XCHGQ 指令,该指令默认带有 lock 前缀指令的功能,会强制其他核心重新刷新缓存。我们常说的 atomic 包提供了原子操作,其实它也保证了可见性。对于 64 系统下,只要内存对齐(不会发生撕裂写),简单的赋值语句是原子性的( mov 指令),但他没法保证可见性,即当前核心的写入,没有立即被其他核心可见,所以你得需要 Storexxx()语句。

atomic 包的 Storexxx()函数和 Addxxx() 函数底层指令可以比较看看:
https://go.godbolt.org/z/o5jn4GG5K // Storexxx 使用 XCHGQ 指令,该指令默认有 lock 功能。
https://go.godbolt.org/z/rc5Y37q3P // Addxx 使用 lock 指令 + XADD 指令。多了 lock 前缀指令,来保证可见性。
@codsddos 服务器欠费了。现在可以了。
[https://www.cyub.vip]( https://www.cyub.vip)
再贴一次: [https://www.cyub.vip]( https://www.cyub.vip)
再贴一次,之前不可直接点击: [https://www.cyub.vip]( https://www.cyub.vip)
贴一下我的博客: https://www.cyub.vip/ 。 写的内容不多,但一直未间断过。
2024 年 3 月 25 日
回复了 nnegier 创建的主题 C 还是不太理解 C 静态库和动态库?
总结一下动态库存在的意义有:
1. 代码复用和模块化:动态库提供了一种代码复用的机制,可以将常用的功能封装在库中,多个程序可以共享同一个库,避免了重复编写相同的代码,提高了开发效率。

2. 节省内存空间:多个程序可以共享同一个动态库文件,这意味着在内存中只需要加载一份动态库代码,而不是每个程序都有一份拷贝,因此可以节省内存空间。

3. 简化更新和维护:如果需要更新动态库中的功能或修复其中的 bug ,只需要更新动态库文件,而不需要重新编译和部署整个程序。这简化了更新和维护过程,减少了可能的错误。
@lvlongxiang199 大佬呀,你对 go 理解很深呀。 感谢给出建议。
1  2  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4599 人在线   最高记录 6679 &nbp;     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 38ms UTC 06:03 PVG 14:03 LAX 22:03 JFK 01:03
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86