V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  thevita  ›  全部回复第 1 页 / 共 12 页
回复总数  239
1  2  3  4  5  6  7  8  9  10 ... 12  
2 天前
回复了 biu7 创建的主题 程序员 记一次失败的 Go 面试
我也喜欢问基础点的,其实是想看看工作多年后,候选人有没有形成自己的认知体系,如果背八股文不至于挂,但肯定是减分的,

项目的话,除非是领域高度相关,不然基本目标就是判断下候选人的参与深度,过滤下简历水分而已
5 天前
回复了 tuoov 创建的主题 数据库 请教一个关于并发控制的问题
没说清楚啊,与你的事务会会发生冲突的都有啥啊,仅仅同一个逻辑的不同任务吗?有没有 读-写冲突?有没有其他不同粒度、不同逻辑的写-写冲突,doBusinessLogic 里面有不有 外部一致性要求?

超大事务呗,某些系统很常见,并不是所有业务都是互联网,上面的不要看到这种就报警

锁放外部(方案 A )正如你所说,只解决了 processBatch 的并发问题,但是不能避免其他事物的更新,依然可能导致 write-skew ,除非你保证只要该这个表,都拿锁,那和表锁其实也没太大差别,就看你们的数据库实现得整么样了

锁表(方案 B )通过合理的加锁,能避免 write-skew, 但是冲突域会变大,影响系统吞吐,甚至某些 db 可能会阻塞读,但是话又说回来,如果你的场景类似,半夜批量计算,冲突可能低那种,耶完全可以接受

其他方案:
其实具体看你能接受 哪部分 可以被适当取舍,比如上面只讨论了锁的情况,取舍的就是与其他事物的冲突

如果你能接受适当若化 这个超大事务的原子性的话还可以: processBatch 内加锁,这个锁止解决 不同 processBatch 任务间的冲突(更好的办法可能是引入一个协调者来保证 不同 processBatch 尽量不冲突),然后更新使用乐观锁+重试,让 这个 batch 实现最终一致,也不失为一种办法(当然,这里没讨论你的 doBusinessLogic 有不有外部一致性的情况)
6 天前
回复了 sgld 创建的主题 Python 关于 Python 协程的 event loop 与 future
分享一下我的看法,我理解这些概念不太喜欢先深入细节,有全局视角再看细节

无栈协程的核心就是 把顺序代码变成一种状态机,不同语言的实现差异很大,但逻辑差不多

(其实我们如果不用 coroutine, 写事件驱动应用 就是手写这个状态机)

await 就是状态转移点,从一个 await 完成 到下一个代码路径上的 await 就是一次状态转移

将这一小段代码封装起来 就叫 task, 这就是 事件循环执行的基本单元(不同语言实现也不一样,python 应该是依靠 生成器状态机来实现,rust ,c++ 则靠编译器)

future/awaitable 作用是管理 task 之间的依赖关系,在某个 task 的 future done 的时候,将依赖它的 task 放进就绪队列等待执行(不同实现也不一样,比如 直接通过 callback )

所以:


- 啥时候让出权限: 一个 task 完成的时候
- 啥时候任务加进事件循环: 这个任务的依赖 future done 的时候 (实现可以都不一样,单实践效果一定是这样的)
- 啥时候恢复执行: 进如 ready 队列了,就等待执行了,自于啥时候执行,就是 队列和 调度器的实现了,也都不一样

----


正好前段时间看了 foundationdb ,他们自己实现了一个 叫 flow 的语言,在 < c++20 上实现了无栈协程,它的编译器会把 flow 的代码编译成 C++ 的状态机,可以清晰的看到怎么把代码转成状态机
touch bar 对我很鸡肋,我无法适应需要我需要目光下移去看一个和屏幕不在一个平面上的东西,即便只要瞟一眼,割裂感也很严重
其实 更大可能是 reuse 了
“复杂性” 从来不来自技术本身,而是来自于“业务”,或者说我们的数字系统的建模对象

而发明眼花缭乱的技术、思想,什么 react programming/DDD/各种 design pattern ,不过是为了控制复杂度的实践而已

不要搞反了关系,如果你预期到你的建模目标的复杂度不值得你专门去搞一个新“技术”/“框架”,那你就不用嘛
虽然我也问过类似的问题,但就冲说出 “非常耗费资源的操作”, 这面试官水平就不怎么样,什么叫消耗资源,啥资源啊
41 天前
回复了 lzyong2019 创建的主题 JavaScript 求前端高频数据绘图库
用 C++ 写, 使用 imGUI 这样的 Immediate Mode 方式绘制, 然后编译到 wasm/webgl
@thevita 现在还多一种,有时一些突然的观点,也发给 ChatGPT/DeepSeek ,当作思维发散器用
有一种磕巴是,想得太多,俗称脑子比嘴快,尝试文字输出行不行,如果文字没问题(即便慢点),那就是这种。

那就看说话的目的了,a) 即兴演讲、公开讲话,这时不犯错比说得出彩重要,讲得多就整理出来了一套自己的话语,用的时候,适当组合下,就尽量不输出即时的观点,b) 讨论、辩论、会议,慢一点,思考一下没什么不好,只要不是吵架。

总的来说,还是要多输出,通过输出来驱动对信息的整理、压缩。

我现在没时间(其实是懒),就直接写到 notes 里面,想到就记忆段,有时候看到就整理下
这个问题吧: https://go.dev/blog/loopvar-preview

具体来说, golang 在 loop 的行为在 1.22 之后变了
cpu time 采样有 call stack, 但采不到 goroutine, 要能在 profile 上看到特定 goroutine 的信息, 要么让 某个 callstack 只跑一个 goroutine, 要么让特定的任务的 callstack 不一样,比如让某个 http 请求多一个特定的 middleware
59 天前
回复了 tmtstudio 创建的主题 YouTube 油管的工程师在搞什么飞机
天,但凡你多翻翻呢

- app store 上大部分进入维护阶段的 app, changelog 基本都是没啥实际意义的话
- 曾经 app store changelog 也被用作某种传播(亚文化),比如 bilibili
- app store 要更新一些描述啊,截图啊,只能发一个新版本
- 至于维护阶段的 app 为啥这么敷衍,只要你维护过时间长一点的代码,应该能理解,相当多是很难直接能被用户感知的更新,写上去还得费劲跟用户解释
管理 本地工具链吗?, asdf 啊
提供一点信息: https://www.volcengine.com/docs/82379/1346560

火山引擎好像是要手动管理 cache 的,大概看了下,好像没说 completions 会自动给 prefix cache ,未验证,仅提供方向,看看 你 api 的 usage 有没有命中咯
本质就是 小程序不想让你操作 DOM, 只提供封装后的给你, UI 的实现就可以有私有实现(比如 暴露一些 wx 内部的 API/控件 什么的出去)

浏览器为什么不这么设计: 因为原来没有这样的需求

这里 独立的 JS 线程 就是 个 没有 web api javascript instance (因为所谓的 “多个线程同时修改 DOM ,可能会导致竞态条件和不可预测的结果”,就是 web api 不提供线程安全性),现代 web 浏览器里也是有的,就是 Web Worker ,

只是小程序,的与 UI 线程的通信/交互啊什么的都是封装好了的,Web Worker 里你得自己来
我怎么感觉 “现在为了 k8s 集群部署,就把服务拆分出去,每个服务一个单独的仓库。” 这里槽点最大啊

代码组织方式应该是服务于开发团队的协作方式的,而不是紧急为了在 k8s 上部署(就是所有代码都在一个仓库里也不是就不能在 k8s 上部署了啊,无非就是 google 搜不到而已..,看不懂)就这么大动干戈的让所有人去适配机器,,,
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2769 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 14:47 · PVG 22:47 · LAX 07:47 · JFK 10:47
Developed with CodeLauncher
♥ Do have faith in what you're doing.