V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sztink  ›  全部回复第 1 页 / 共 2 页
回复总数  23
1  2  
2 天前
回复了 afxcn 创建的主题 Go 编程语言 使用 go 遇到的一个奇怪问题,求教
@afxcn 这样是解决不了本质问题的。因为 rand.NewSource 不是并发安全的。另外 createRand 中_seededRand 初始化的逻辑也不是并发安全的。你应该直接用全局函数 rand.Intn()。
2 天前
回复了 afxcn 创建的主题 Go 编程语言 使用 go 遇到的一个奇怪问题,求教
靠,你这生成随机字符代码难怪看着眼熟,我前段时候从网络上 copy 的一份跟你的几乎一模一样,我得赶紧 fix 一下。copy 来源: https://github.com/BelphegorPrime/lib/blob/master/RandString.go
有必要。每台设备只订阅带自己设备 ID 的 topic ,能够很方便做访问控制,保证安全。举个例子,如果你设备 ID 都泄露了,如果此时 hacker 只需拿到它当前设备里面的 mqtt 账号信息,就可以模拟给其他设备发生消息了。如果设备只订阅带自己设备 ID 的 topic ,服务器侧可以很容易设置 ACL 规则,只允许每台设备只能访问和发送消息到它自己的 topic ,hacker 就很难攻击了
29 天前
回复了 rockyliang 创建的主题 Go 编程语言 关于 golang 官网一段代码的疑惑
编译器优化也是有可能的,不同版本 go 编译器编译有差异的。编译优化可以看看这篇文章:Golang 编译器优化那些事: https://fanlv.fun/2021/12/18/golang-complier-optimize/
29 天前
回复了 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/ 。 写的内容不多,但一直未间断过。
44 天前
回复了 nnegier 创建的主题 C 还是不太理解 C 静态库和动态库?
总结一下动态库存在的意义有:
1. 代码复用和模块化:动态库提供了一种代码复用的机制,可以将常用的功能封装在库中,多个程序可以共享同一个库,避免了重复编写相同的代码,提高了开发效率。

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

3. 简化更新和维护:如果需要更新动态库中的功能或修复其中的 bug ,只需要更新动态库文件,而不需要重新编译和部署整个程序。这简化了更新和维护过程,减少了可能的错误。
44 天前
回复了 bzbs 创建的主题 程序员 有什么是 AI 做不了的?
生孩子
@lvlongxiang199 大佬呀👍🏻,你对 go 理解很深呀。 感谢给出建议。
@lasuar 是的。这些内容还没弄完,后续搞完了会放出来。
49 天前
回复了 Felldeadbird 创建的主题 Go 编程语言 vscode 如何格式化 go 中 map 对齐?
最好不要标新求异,go 开发统一都是 gofmt 或者 goimports(本质包含了 gofmt 功能),除非团队成员统一第三方插件,要不然同一份代码啥都没改,但由于不同的 formater 的自动 fmt 导致产生了新的变更。
51 天前
回复了 haoyu7 创建的主题 程序员 有一台服务器一般都做什么
说说我用自购服务器做的事情吧:
1. 使用 nodejs SSG 框架 hexo 部署了个人技术博客。网址: https://www.cyub.vip
2. 使用 Go SSG 框架 hugo 部署了电子书《深入 Go 语言之旅》,用来分享 Go 开发知识。网址: https://go.cyub.vip
3. 使用 gitea 部署了 git 服务器,自用
4. 使用 nextcloud 搭建了云存储服务,nextcloud 功能很强大,你可以上传和分享文件、创建文档、日历、联系人、笔记等。我使用最多的是 drawio 和 mindmap 插件用来画图和画脑图工具。
5. 搭建了梯子,使用的是 v2ray 搭建的,采用 WebSocket+TLS+Web 模式部署,基本上不会再被封
6. 使用 vsc 编辑器+Remote Development 插件连接服务器,做远程开发,服务器本身 Linux 环境,非常适合 Linux 系统编程
52 天前
回复了 Grocker 创建的主题 Go 编程语言 这段 go 代码始终理解不到
@sunzhenyucn 很常见的一个技巧,经常用来将一个普通函数包裹成实现特定接口。比如上面就是 english 这个普通函数可以变成实现 say 方法的接口对象。Go 源码 net/http 里面有使用到 https://github.com/golang/go/blob/master/src/net/http/server.go#L2158-L2167 。包 robfig/cron 里面的 https://github.com/robfig/cron/blob/master/cron.go#L133-L154
55 天前
回复了 Grocker 创建的主题 Go 编程语言 这段 go 代码始终理解不到
@sztink 回复咋不支持 markdown 格式,另外怎么发链接,我发的链接都显示成纯文本(没使用 markdown ,直接发个链接也这样),看别人发的可以直接点击?有 V 友可以告知怎么操作链接吗。
55 天前
回复了 Grocker 创建的主题 Go 编程语言 这段 go 代码始终理解不到
**方法本质就是普通的函数,方法的接收者就是隐含的第一个参数。**

```go
greet.say("World");
say(greet, "World");
```
上面两者是等效的,从这个角度理解就简单了不少。具体介绍可以看:[深入 Go 语言之旅: 方法]( https://go.cyub.vip/function/method/)
65 天前
回复了 wangpugod2003 创建的主题 程序员 三天入门 go 语言
https://go.cyub.vip/
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3701 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 05:00 · PVG 13:00 · LAX 22:00 · JFK 01:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.