V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  keakon  ›  全部回复第 7 页 / 共 55 页
回复总数  1086
1 ... 3  4  5  6  7  8  9  10  11  12 ... 55  
找到一个不算完美的解决办法:换用 vscode-neovim ,安装 brglng/vim-im-select 插件。
这样在从其他应用切换到 vscode 时,如果是命令模式,会切换到英文。
并且在文件间切换时不会修改模式,所以也不会切换中英文。
极端情况是在 vscode 的命令模式下手动切换到中文,再切换到其他文件还是中文。而多窗口下每个窗口的模式可能不相同,这有时候也会引起一些问题。
先看官方库源码,有很多文章会去解析,可以省很多力。
然后就去看自己常用的开源库的源码。
有需求就根据自己的需要去修改开源库。
每天花两小时,不出一个月,你就可以在简历中写精通 Go 了。
慢慢变成只玩手游和主机游戏了
292 天前
回复了 balabalaguguji 创建的主题 小米 小米净水器是真的无语呀
小米的用了 6 年没问题,就是滤芯成本高
git add -f 是可以强制添加被忽略的文件的
294 天前
回复了 keakon 创建的主题 MacBook Pro 拼多多的 M1 Pro 怎样?
@LiFExxl 个人卖家在哪找呢?感觉闲鱼水更深。
294 天前
回复了 keakon 创建的主题 MacBook Pro 拼多多的 M1 Pro 怎样?
@NewMoorj 再问一下转转上 99 新的靠谱么?感觉验机报告也挺全的
295 天前
回复了 keakon 创建的主题 MacBook Pro 拼多多的 M1 Pro 怎样?
@NewMoorj 是这个吧,看了下评论里的照片,应该是官翻机 https://v2ex.com/t/1001114
主要是直接买二手,价格也很高,而且还没那么新;大佬你的 14 寸也都卖完了。
296 天前
回复了 keakon 创建的主题 MacBook Pro 拼多多的 M1 Pro 怎样?
@icecream 百亿补贴也不保新啊

@K120 是买未激活未过保的
sync.Map 适合读多写少的,一旦要写就会重新复制整个 map ,开销挺大的。

真正的高并发写需要避免多个 CPU 核同时访问一个 cacheline 地址。最简单的方式是先对 key 进行 hash ,然后分成多个 map ,这样并发访问不同的 key 大概率不会同时对一个 map 加锁。
@chenchengbin 字符串是浅拷贝 StringHeader
之前看过这篇,性能上大部分情况下是返回 struct 更快:
https://cloud.tencent.com/developer/article/1861199

不过如果要和 nil 区分,或者最终要放到堆里,那就继续用指针。

然后如果是参数的话,记得是超过 32 字节传指针更快,而且每个字段是单独用一个 MOV 指令来复制的,不是一整块复制的。
346 天前
回复了 a132811 创建的主题 Go 编程语言 利用泛型实现的 golang 缓存装饰器
@a132811 我的意思是反射可以获取到原函数的每个参数的类型,你可以保存下来,调用时检查参数是不是对应的类型。

但是 Go 不是很动态的语言,反射和泛型也没法结合使用,导致泛型实现的接口没法返回正确的类型(只能是 interface{}),因此没法实现 demo 的 fibCached(x-1) + fibCached(x-2)。不过 demo 里对 fib() 的实现也是有侵入的。

比较类似的例子你可以参考这篇,最后为了优化实现得有点复杂,看看原理就好:
https://keakon.uk/2023/03/24/%E6%8A%8A%E4%BB%BB%E5%8A%A1%E9%98%9F%E5%88%97delayed%E7%A7%BB%E6%A4%8D%E5%88%B0Go%E4%BA%86
346 天前
回复了 a132811 创建的主题 Go 编程语言 利用泛型实现的 golang 缓存装饰器
@a132811 反射不会损失类型检查,可以动态获取参数类型并构造一个 struct ,但是做不到静态检查。实现自然是会复杂很多,但是对调用者而言是更简单的。不过既然你是做缓存,肯定是在意性能的,我就不推荐用反射了。
347 天前
回复了 a132811 创建的主题 Go 编程语言 利用泛型实现的 golang 缓存装饰器
看上去不够优雅,但是如果要适配任意数目的参数和返回值,只能用反射来做。
2023-09-13 10:54:11 +08:00
回复了 shaoyie 创建的主题 Go 编程语言 [go]golang 的协程池本应该是这样的
@shaoyie @Nazz 当队列满的时候,Go() 会阻塞调用线程,而不是加到任务队列里立刻返回,后面空闲了再由 worker 线程去执行。
2023-04-17 11:04:57 +08:00
回复了 bulay 创建的主题 程序员 关于使用 socket 构造 icmp 包报错 Permission denied 的问题
socket.SOCK_RAW 需要 root 权限,你加个 sudo 试试
2023-04-02 08:46:14 +08:00
回复了 hentailolicon 创建的主题 Go 编程语言 Golang 怎么 Cancel 一个非循环子协程
没有优雅的实现。
其他语言可以给拿数据的连接设置 read timeout ,或者用子进程来处理。
但是 Go 把连接给封装了,大部分数据库的接口是同步的,你没法同时监听 fd 可读和定时器超时。
子进程要传数据需要用 pipe ,但是它的 Read()/Write() 是同步的,需要再起个协程去读写,才能和监听子进程退出和超时一起 select 。而且 Go 的 runtime 和第三方库可能都跑了一些子线程,fork 时并不会复制这些子线程,导致有时候会崩溃。
2023-03-21 15:31:02 +08:00
回复了 LeegoYih 创建的主题 Go 编程语言 Go 有哪些奇技淫巧
如果类型兼容,用 unsafe.Pointer 转,但是 []any 不行

a := []int{1, 2, 3}
b := *(*[]uint)(unsafe.Pointer(&a))
fmt.Println(b)
c := *(*[]float32)(unsafe.Pointer(&a))
fmt.Println(c)
d := *(*[]float64)(unsafe.Pointer(&a))
fmt.Println(d)
e := *(*[]any)(unsafe.Pointer(&a))
fmt.Println(e)

如果是做接口的话,不建议用 []any ,直接用 any ,然后做类型检查,文档中注明比较好。
1 ... 3  4  5  6  7  8  9  10  11  12 ... 55  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1043 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 19:29 · PVG 03:29 · LAX 11:29 · JFK 14:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.