.vscode 会 commit 部分文件: extensions.json, 之前没有 settings.json, 用 .editorconfig 之类的, 但满足不了需求,还是把 settings.json 加进去了
大医院医生面临的患者群体不一样,简单说就是大病重病要更多,当然想得也就多(并不是说乱开检测的情况就不存在)
下级医院乱开的情况就更严重了
要想又好又快,就去小诊所吧,抗生素激素一上,30 分钟见效......
心理因素
我感觉很多人在使用各种 LLM 产品的时候都提到了 “降智” 这个问题,抛开服务成本因素,人的心理过程也很显著
第一次接触到会应为某一些 case 产生 ”惊艳“ 的感觉,这种 ”惊艳“ 锚定了较高的心理预期
长时间使用时,我们面临的问题/场景 是呈现某种随机分布的,LLM 对问题的表现也一定是呈现某种分布,导致在某些地方表现不好,这些”预期违背” 的情绪也会被放大
火焰图照一下,缩小范围,看看有不有没注意到的同步调用.
我也喜欢问基础点的,其实是想看看工作多年后,候选人有没有形成自己的认知体系,如果背八股文不至于挂,但肯定是减分的,
项目的话,除非是领域高度相关,不然基本目标就是判断下候选人的参与深度,过滤下简历水分而已
没说清楚啊,与你的事务会会发生冲突的都有啥啊,仅仅同一个逻辑的不同任务吗?有没有 读-写冲突?有没有其他不同粒度、不同逻辑的写-写冲突,doBusinessLogic 里面有不有 外部一致性要求?
超大事务呗,某些系统很常见,并不是所有业务都是互联网,上面的不要看到这种就报警
锁放外部(方案 A )正如你所说,只解决了 processBatch 的并发问题,但是不能避免其他事物的更新,依然可能导致 write-skew ,除非你保证只要该这个表,都拿锁,那和表锁其实也没太大差别,就看你们的数据库实现得整么样了
锁表(方案 B )通过合理的加锁,能避免 write-skew, 但是冲突域会变大,影响系统吞吐,甚至某些 db 可能会阻塞读,但是话又说回来,如果你的场景类似,半夜批量计算,冲突可能低那种,耶完全可以接受
其他方案:
其实具体看你能接受 哪部分 可以被适当取舍,比如上面只讨论了锁的情况,取舍的就是与其他事物的冲突
如果你能接受适当若化 这个超大事务的原子性的话还可以: processBatch 内加锁,这个锁止解决 不同 processBatch 任务间的冲突(更好的办法可能是引入一个协调者来保证 不同 processBatch 尽量不冲突),然后更新使用乐观锁+重试,让 这个 batch 实现最终一致,也不失为一种办法(当然,这里没讨论你的 doBusinessLogic 有不有外部一致性的情况)
分享一下我的看法,我理解这些概念不太喜欢先深入细节,有全局视角再看细节
无栈协程的核心就是 把顺序代码变成一种状态机,不同语言的实现差异很大,但逻辑差不多
(其实我们如果不用 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 对我很鸡肋,我无法适应需要我需要目光下移去看一个和屏幕不在一个平面上的东西,即便只要瞟一眼,割裂感也很严重
“复杂性” 从来不来自技术本身,而是来自于“业务”,或者说我们的数字系统的建模对象
而发明眼花缭乱的技术、思想,什么 react programming/DDD/各种 design pattern ,不过是为了控制复杂度的实践而已
不要搞反了关系,如果你预期到你的建模目标的复杂度不值得你专门去搞一个新“技术”/“框架”,那你就不用嘛
虽然我也问过类似的问题,但就冲说出 “非常耗费资源的操作”, 这面试官水平就不怎么样,什么叫消耗资源,啥资源啊
用 C++ 写, 使用 imGUI 这样的 Immediate Mode 方式绘制, 然后编译到 wasm/webgl
@
thevita 现在还多一种,有时一些突然的观点,也发给 ChatGPT/DeepSeek ,当作思维发散器用
有一种磕巴是,想得太多,俗称脑子比嘴快,尝试文字输出行不行,如果文字没问题(即便慢点),那就是这种。
那就看说话的目的了,a) 即兴演讲、公开讲话,这时不犯错比说得出彩重要,讲得多就整理出来了一套自己的话语,用的时候,适当组合下,就尽量不输出即时的观点,b) 讨论、辩论、会议,慢一点,思考一下没什么不好,只要不是吵架。
总的来说,还是要多输出,通过输出来驱动对信息的整理、压缩。
我现在没时间(其实是懒),就直接写到 notes 里面,想到就记忆段,有时候看到就整理下
cpu time 采样有 call stack, 但采不到 goroutine, 要能在 profile 上看到特定 goroutine 的信息, 要么让 某个 callstack 只跑一个 goroutine, 要么让特定的任务的 callstack 不一样,比如让某个 http 请求多一个特定的 middleware
天,但凡你多翻翻呢
- app store 上大部分进入维护阶段的 app, changelog 基本都是没啥实际意义的话
- 曾经 app store changelog 也被用作某种传播(亚文化),比如 bilibili
- app store 要更新一些描述啊,截图啊,只能发一个新版本
- 至于维护阶段的 app 为啥这么敷衍,只要你维护过时间长一点的代码,应该能理解,相当多是很难直接能被用户感知的更新,写上去还得费劲跟用户解释