V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lesismal  ›  全部回复第 26 页 / 共 53 页
回复总数  1055
1 ... 22  23  24  25  26  27  28  29  30  31 ... 53  
2022-11-16 01:05:31 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
上一楼 slice get 的贴错行了,更正下:
BenchmarkSlice_Load-16 115303052 10.37 ns/op 0 B/op 0 allocs/op
BenchmarkMutexSlice_Load-16 1000000000 0.07651 ns/op 0 B/op 0 allocs/op

如我上一楼所说,BenchmarkMutexSlice_Load 是把 Lock/Unlock 去掉了的,这样才是公平的
2022-11-16 01:01:45 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
sync.Map 主要用途 go 源码注释里有写的:
// The Map type is optimized for two common use cases: (1) when the entry for a given
// key is only ever written once but read many times, as in caches that only grow,
// or (2) when multiple goroutines read, write, and overwrite entries for disjoint
// sets of keys. In these two cases, use of a Map may significantly reduce lock
// contention compared to a Go map paired with a separate Mutex or RWMutex.

所以 OP 跟它比 Write 没什么意义,换成 mutex+map 后,我只简单跑了下我笔记本的 windows 环境,没多测,但是估计也不会有太好的结果:
BenchmarkBagWrite-16 3418212 347.2 ns/op 87 B/op 3 allocs/op
BenchmarkSyncMapWrite-16 5754406 219.8 ns/op 0 B/op 0 allocs/op


slice 的场景,append 应该是非常少于读写的吧,如果多余那八成是做队列用 list 更好了。
而一个普通的[]T ,在单纯的 get/set 语义下,不加锁时才是与 OP 的无锁 slice 等价,因为都只是 get/set 并不是需要处理额外的其他一组操作,所以 OP 的 BenchmarkMutexSlice_Load 这里给[]T 加锁是不公平的,去掉则也是劣势得多了:
BenchmarkMutexSlice_Load-16 12368889 96.06 ns/op 0 B/op 0 allocs/op
BenchmarkRWMutexSlice_Load-16 1000000000 0.07468 ns/op 0 B/op 0 allocs/op


原子操作能解决的问题场景太少了,现实场景绝大多数需要的是“原子性”对一组操作的保障,尤其是 go 这种逻辑并发流非常多的场景,无锁数据结构能发挥的场景点就更少了
2022-11-04 17:01:20 +08:00
回复了 badmarillo 创建的主题 程序员 为了不被马斯克裁员,推特员工每周疯狂工作 84 小时...
加快了机器生命取代人类的进程
2022-11-04 16:52:05 +08:00
回复了 Aidenboss 创建的主题 Go 编程语言 搞了好久的,终于为 SDB 增加了 lua 脚本
gopher-lua 的性能比较差,而且不管是 c 版还是 go 版的 lua 都不支持并发,多个 lua state 对性能提升意义也不大。另外,如果 lua 写复杂了 gopher-lua 的语法解析还可能出错、运行不正确。

> 如果每个 lua 请求都是新的 State 呢

@Aidenboss 这个成本就更高了,这会让你的程序慢太多了,只适合请求量低的系统。
2022-11-04 16:42:43 +08:00
回复了 yuancoder 创建的主题 Go 编程语言 go 练手写了个小项目 mysql 代理连接池
@xx6412223 心跳用 db.Ping()就行了。但 Ping 也只是单个连接,如果要每个连接 7 层 keepalive 可能还是要自己封装下。
@yuancoder conn 的 keepalive 只是 4 层的,不过也还好,数据库都内网,比较稳定,够用了
2022-11-04 16:30:20 +08:00
回复了 garyox64 创建的主题 Go 编程语言 求推荐看 Go 源码的工具
vscode 足够了
2022-10-22 00:44:58 +08:00
回复了 Rooger 创建的主题 程序员 工作的久了,颈椎不太受得了了,升降台,求推荐
I got it, sitting style is more important than the fingering style...
2022-10-04 10:48:02 +08:00
回复了 ila 创建的主题 Go 编程语言 请推荐一些使用 fyne 编写的优秀项目
试用过几个,fyne 确实玩具,目前发现最强的是:
https://gioui.org

例子:
https://github.com/gioui/gio-example

楼主可以试试,他们仓库和 slack 群也都比较活跃
C Primer Plus 只能算一般,而且非常一般,入门看看也行,但未必比谭浩强的效果好
K&R 太老了而且内容也不算多,讲真,不是很适合

三剑客基本是必读的:《 C 和指针》《 C 陷阱与缺陷》《 C 专家编程》

有人整理了个指针相关的 《让你不再害怕指针》,半小时深入理解下,基本就能搞定指针了

系统之类相关的进阶:
《 CSAPP 》
《 APUE 》
《 UNP 》
《程序员的自我修养》《连接器与加载器》
《深入理解 linux 内核》
《 linux 设备驱动程序》

单就语言语法来讲,国内的一些还行,《狂人 C 》,其他的名字不记得了

这些够啃一阵子了,啃明白了语言和基础的系统只是,自己找个具体的业务方向再啃相关的吧
2022-08-01 20:03:48 +08:00
回复了 ZHanYao 创建的主题 问与答 一朋友被诈骗十几万,关于作案手法问题
原来现金支付才是王道。。
2022-08-01 19:59:05 +08:00
回复了 ppolanwind 创建的主题 Go 编程语言 在 golang 中,怎么判断一个 socket 连接是否关闭?
这个课代表,能处
2022-08-01 19:54:33 +08:00
回复了 ClownFish 创建的主题 程序员 Go 微服务开发框架 DMicro 的设计思路
似乎我的 arpc 就能搞定绝大多数了
对于“高效率的开发,支持通过 proto 生成代码“想做也容易,但我觉得这反倒不如我现在支持的方式更简洁省力,反倒限制了自由度所以没做

github.com/lesismal/arpc
2022-07-21 23:13:53 +08:00
回复了 wenjie0032 创建的主题 Go 编程语言 Gopher 我们一起来造个 ORM 吧!
@lesismal #21
有兴趣的可以看下例子,再对比下 orm ,或者 sqlx 之类的,看看哪个好用。
2022-07-21 23:12:06 +08:00
回复了 wenjie0032 创建的主题 Go 编程语言 Gopher 我们一起来造个 ORM 吧!
@join 我这个也不是只支持 mysql 呀,主要是为了方便标准库 sql 与结构体的映射,并不限制用哪个 driver 。但我不是每个数据库都测了,目前 mysql 和 postgres 是可以的,如果 oracle 、sqlserver 或者其他的数据库有问题(应该只是占位符不一样会导致拼接的 sql 语句错误),我可以继续做兼容。

另外,不知道兄台多大年纪,但我也已经不是小伙子了。
2022-07-21 19:40:11 +08:00
回复了 wenjie0032 创建的主题 Go 编程语言 Gopher 我们一起来造个 ORM 吧!
我不信有哪个比我这个 rawsql 好用:
https://github.com/lesismal/sqlw

@join 试试我这个
2022-07-12 12:20:42 +08:00
回复了 JoseGuo 创建的主题 Redis 有一个 Redis 通知的问题想问一下大家
redis 通知是存在的问题,比如通知的瞬间,刚好你监听事件的这个服务与 redis 断线了、没收到通知。
时间+定时任务判断处理订单状态就行了。

这里的时间与隔壁帖子根据当前时间计算当前体力、而不是定时去计算更新增加后的体力的玩法其实是类似的。
可以考虑记下这个词:COW(copy on write),其实本质就是只在真正需要的时候才去触发实际操作、尽量减少成本的浪费。
2022-07-09 11:30:42 +08:00
回复了 guanqian 创建的主题 程序员 写了一篇 KCP 的协议分析, 求老哥们点 star
赞了
2022-07-08 23:02:24 +08:00
回复了 vvhhaaattt 创建的主题 Go 编程语言 fmt.Sprintf 方法的%q 是否可以防止 mysql 注入?
标准库应该是默认对 query string 做了 Prepare 的,所以预期 Sprintf 拼接,还是不如都使用 place holder 来避免比较好。
我新搞的 sqlw 就没像 sqlx 那样去支持一些 query 配合 Named() 的解析,保持最简单、最实用的东西,其他那些华而不实的花哨,能少整就少整
2022-07-07 20:28:25 +08:00
回复了 yousabuk 创建的主题 京东 京东上全是二手商品啊,他妈的……
小明娶了小红,因为 x 国 x 教育落后,二人知识匮乏,结婚三年了也一直没怎么深入交流过。偶尔有次去体检,体检结果暗示媳妇竟然已经不是处了。。。
1 ... 22  23  24  25  26  27  28  29  30  31 ... 53  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   776 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 22:36 · PVG 06:36 · LAX 15:36 · JFK 18:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.