dvm

Dvm

@dvm

  • ❤️ Liked post in 潜入 NJU
    谈笑风生
    stateless_trash_can 无状态垃圾桶 Post #1

    Imagepipe_5.jpg

  • sJtupid JacKeiner Post #208

    晚上好,很久很久很久没有见到鱼鱼了~甚至包括微信与朋友圈

    这个可爱宝宝(ok 你销号那会我应该还叫 Jackeiner)最终去了 nus 水一年硕士,未来怎么样,只有天知道(

    以及,xjtu discourse 的页面怎么又大改了🫠 在 Singapore 这里上西交门不需要梯子,但是依然很卡,呜

  • sJtupid JacKeiner Post #209

    分享一点新加坡特色食物(搬运自水源,一些图床没法平移过来,所以是单独复制的)

    价位:整体在 1.2-2x 上海物价,在外面吃对应这个倍率的上海商圈物价,在学校吃对应这个倍率的交大食堂价格,小于 1.2x 的时候不多(也就是说跟国内相同单品一个价,个别这边产量大的可能有),翻一番还要多的情况也没咋见过

    特色菜:我朋友圈里发了几个
    不能说很好吃但绝对不算难吃,不是猎奇取向但足够新奇

    这几天吃下来比较有特色的:

    叉烧/脆皮烧肉/海南鸡[1]/烧鸭——四选一/二——饭/面 🤣

    各种小炸物蒸物,类似广东早茶(?)

    肉骨茶

    奇怪的没有萝卜的萝卜糕,包括炒制和泡汤里多种做法,ref:

    各种椰浆椰奶衍生物:
    椰浆饭

    各种虾衍生物:
    加奶油蘑菇汤配上当地特色香料叶子的也有,炸虾卷/球也有,制烧麦啥的也有

    各种咖喱衍生物(不赘)

    集以上之大成者:请输入文本

    总结

    image.png

    在住处附近食阁要了个 Lontong(椰奶蔬菜咖喱泡米糕 + 酱炸小鱼),又要了对炸鸡翅,4+1.5 新

    总结

    image.png

    image.png

    咸蛋黄鱼皮

    Summary

    image.png


    1. (区别于交大四餐一楼和六餐二楼豉油鸡,虽然这里有的地方也有“豉油鸡饭”) ↩︎

  • ❤️ Liked post in 魔芋爽的随笔&画画楼
    stateless_trash_can 无状态垃圾桶 Post #73
    anonymous:

    单推应该就是只喜欢一个角色,多推是喜欢多个角色

    居然还有这种区分的(

    anonymous:

    爱音真的是像小太阳一样的存在☀️这么勇敢乐观善良的人,mygo应该对她再好一点

    很羡慕这类角色的纯粹,本能作出的行动就是善良可爱的,不需要不断地掩饰和纠正自己(真的是这样吗?也许只是我的偏见罢了)

    anonymous:

    诶诶垃圾桶老师会弹吉他吗,考不考虑在门上放出片段👀

    没努力练过,按弦转换太差了,弹不了曲子的(

    也许可以把片段剪成拼好歌(

  • ❤️ Liked post in 听歌楼
    游戏 / 娱乐
    stateless_trash_can 无状态垃圾桶 Post #41

    以前我听歌经常先看词再听曲来着,一般是歌词里有感兴趣的意象或者内涵才会喜欢
    现在也会只是因为曲好听而喜欢,某种程度上也算更纯粹了(这样再去看词有时候还能被二次惊艳到)?😇

    其实只要是真心喜欢,无论是什么原因都是正当的吧

  • 谈笑风生
    emu_otori 鳳 笑夢 Post #12

    简单的烤鳕鱼、蒸蛋以及炒油麦菜,朴实无华的夜晚

    IMG_1952.jpeg

  • 谈笑风生
    emu_otori 鳳 笑夢 Post #15

    饭团是之前做好冷冻起来的。蒸一锅米饭,浇上一点米醋调节 pH 值,再撒一点盐调味,取大约 150 g 捏成三角形,裹一层海苔,用保鲜膜包着,放凉了就可以冻起来,最多能放几个月的。

    每次吃的时候取一颗放微波炉热几分钟就好,热气腾腾香喷喷的,口感和口味都不输新鲜米饭

    IMG_1870.jpeg

    检察一下冰箱中的饭团储量:充足 😼

    IMG_1953.jpeg

  • 谈笑风生
    emu_otori 鳳 笑夢 Post #16

    面包好吃、黄油好吃、巧克力花生糖好吃,夹在一起三倍以上的好吃,烤得金黄酥脆的就是百倍以上的好吃 😋

    前些年经常半夜饿了就烤黄油面包片,一晚上炫掉一大包切片面包。现在懂得节制了

    美国的经典三明治 pb&j (peanut butter and jelly) 就是花生酱和果酱各涂一片然后夹起来吃。个人不爱果酱于是换成香香黄油,没买花生酱不过巧克力花生夹心糖烤化了用餐刀涂抹开更香,巧克力就是香呀

  • ❤️ Liked post in 听歌楼
    游戏 / 娱乐
    stateless_trash_can 无状态垃圾桶 Post #38

    最后一首超好听!

    puzzle1645 · 想想XiangXiang

    我 要去哪
    不知所往
    迷路无妨
    你 你在哪
    未知去向
    挣脱吧

  • Hypocrisy rotartsinimdA Post #9

    背景
    双9软件工程硕士
    项目:

    • java商城
    • docker 底层研究

    实习:华为,金融信托

    我当时没有投互联网企业,而是把求职方向全部放在了西安的国企、央企和公务员考试上。

    整个秋招大致从8月份开始。最早参加的是军队直接选拔招录军官,并进入了面试环节。

    到了9、10月份,我开始集中投递各类科研院所。研究所的招聘一般启动得比较早,当时我也拿到了几个录用通知,包括203所、西飞 一飞院、205所,以及西安其他一些规模相对较小的研究所。研究所面试也挺看简历的,重点是要展现出可以做项目的能力,面试时候也要特别说明要留到本地,毕竟这些单位很看中个人的稳定性。

    科研院所之后,我又集中投递了银行。部分银行招聘中,我获得了类似“直通卡”或“Pass卡”的资格,可以免去部分筛选环节。当时拿到的机会包括中国银行管培生offer、农业银行省分科技等岗位。银行可能是西安的另一个就业大头。一方面是项目和简历的完整,另一方面也需要面试过程中尽量流利的表达,可以和面试官有眼神的接触。管培岗的竞争会大些,大家能力都很强,会遇到不同专业的大佬,包括很多经济金融方向的,他们的表达能力大多都很强。

    银行和科研院所之外,我还投递了一些其他央企、国企。例如西安当地的西北勘察设计研究院等单位,这些单位就很看行业发展了,投之前最好有所了解。

    此外,我还尝试报考了国家电网。国家电网对计算机专业的招聘人数又比较少。当时我投递了西北分部,但没有获得笔试资格,相当于在简历筛选环节就被淘汰了。电网最好去生源地,能上的概率大一些(陕西除外),非电类竞争贼大。

    最后就是国省考和选调,这个学习过程贯穿始终。毕竟大部分国央企也会考行测。大家加油!

  • ❤️ Liked post in 兴趣笔记
    深入交流
    stateless_trash_can 无状态垃圾桶 Post #28

    和 cache lab 搏斗一天了,还是做不到满分吗?力竭了 🫠
    image.png

  • 谈笑风生
    emu_otori 鳳 笑夢 Post #2

    因为对之前在香港吃烧味饭的葱姜油念念不忘所以尝试制作了一下非常之香香,于是搭配盐焗鸡又吃香香了库库~

    制作起来很简单而且又营养又香,本小姐觉得就算经常吃也不会腻库库库~

    IMG_1938.jpegIMG_1937.jpeg

  • 谈笑风生
    emu_otori 鳳 笑夢 Post #1

    库库顺着这条帖子,开一个楼记录一下本大小姐每天都吃了什么吧库库库

  • ❤️ Liked post in 兴趣笔记
    深入交流
    stateless_trash_can 无状态垃圾桶 Post #27

    造轮子笑传之 chunked cache bucket

    起因是我需要 fastcache,但是 fastcache 没有迭代器,所以干脆自己仿制一个就当学习了

    Public Interface

     type Cache
        func New(size int) *Cache
        func (c *Cache) Del(k []byte)
        func (c *Cache) Get(dst, k []byte) (res []byte)
        func (c *Cache) Has(k []byte) (found bool)
        func (c *Cache) HasGet(dst, k []byte) (res []byte, found bool)
        func (c *Cache) Iterator() *Iterator
        func (c *Cache) LoadStats(stats *Stats)
        func (c *Cache) Reset()
        func (c *Cache) Set(k, v []byte)
    type Iterator
        func (it *Iterator) GetNext(kDst, vDst []byte) ([]byte, []byte, bool)
    type Stats
    

    架构

    ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
    │                 │ │ map[hash]idx    │ │                 │
    │ [512]bucket◄────┼─┤ [n]chunks◄──────┼─┤ [65536]byte     │
    │                 │ │     idx         │ │   useCount      │
    └─────────────────┘ └─────────────────┘ └─────────────────┘
          cache               bucket              chunk        
    
    • Cache 分 512 个 bucket,每个 bucket 有独立的读写锁
    • 每个 bucket 是由 n 个 chunk 构成的 ring buffer,idx 记录下一次写入位置,map[hash]idx 记录现有键值对位置
    • 每个 chunk 是 [65536]byte
    • n 可根据 Cache 大小进行调整,至少为 1,整个 Cache 至少 65536*1*512 B = 32 MiB

    键值对格式

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          kLen (uint16le)      |          vLen (uint16le)      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                        k (kLen bytes)                         +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                        v (vLen bytes)                         +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    
    • 键值对不可跨 chunk 存在,键值对记录最长为 65536 bytes,因此 kLen, vLen 可用 uint16 记录

    idx 格式

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |W|                     chunkIndex (47 bits)                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     chunkIndex (cont.)        |      localIndex (16 bits)     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    
    • W: wrap,ring 每走一圈翻转一次
    • chunkIndex: chunk 编号
    • localIndex: chunk 上的 byte 编号
    • 对给定的 idxA, idxB,若 idxA 为键值对 idx,idxB 为 bucket.idx,判断 idxA 键值对仍有效(未被 ring 写入覆盖)的方法:int64(idxA - idxB) < 0 (isValid).

    写入流程

    1. Set(k, v []byte) 得到待写入键值对
    2. 计算 hash = xxhash3(k)
    3. 计算 bucket 编号 bktIdx = hash%512,对 bucket[bktIdx] 进行操作
    4. 获取 bucket 写入锁
    5. 检查 hash 是否已存在 map 中,如果是,使旧键值对所在 chunk.useCount--,若归零则将 chunk 放回 chunkPool
    6. 检查 idx 能否写入键值对:
      1. 若当前 chunk 剩余空间足以写入键值对记录,则下一步
      2. 若当前 chunk 剩余空间不足:
        1. 若当前 chunk 非最后一个,前进至下一 chunk 并下一步
        2. 若当前 chunk 是最后一个,回到第一个 chunk,翻转 idx.W,清除 map 中所有被覆盖键值对记录(根据 isValid 判断,删除键值对记录同时所在 chunk.useCount--,若归零则将 chunk 放回 chunkPool),再下一步
    7. 若当前 chunk 未 allocate: 从 chunkPool 获取空闲 chunk 并分配给当前位置
    8. 写入
    9. 更新 bucket.idx

    读取流程

    1. Get(dst, k []byte) 得到键
    2. 计算 hash = xxhash3(k)
    3. 计算 bucket 编号 bktIdx = hash%512,对 bucket[bktIdx] 进行操作
    4. 获取 bucket 读取锁
    5. 检查 hash 是否在 map 中,若在则下一步,否则 miss
    6. 根据 isValid 检查 idx 是否有效,若无效则 miss
    7. 根据 idx 计算 chunkIdx, localIdx
    8. 读取 kLen, vLen, K,若 k != K,则哈希碰撞
    9. 追加值到 dst

    删除流程

    1. Del(k []byte) 得到键
    2. 计算 hash = xxhash3(k)
    3. 计算 bucket 编号 bktIdx = hash%512,对 bucket[bktIdx] 进行操作
    4. 获取 bucket 写入锁
    5. 检查 hash 是否在 map 中,若否则 nop
    6. 若记录 idx 所在 chunk 已分配,chunk.useCount--,若归零则将 chunk 放回 chunkPool
    7. 从 map 中删除 hash 对应的记录

    迭代器流程

    1. Cache 迭代器桥接 512 个 bucket 迭代器
    2. Bucket 迭代器创建时复制 map[hash]idx,每次 GetNext(kDst, vDst []byte) 获取读取锁,检验 idx isValid 并检验 hash 是否相符,若满足则追加 KV,否则跳过该记录使用下一条记录,直到没有更多记录

    要困死了 🫠

  • ❤️ Liked post in 解构栈
    stateless_trash_can 无状态垃圾桶 Post #60
    stateless_trash_can:

    我急需摆烂一天以缓解 ctexcel 带来的物质和精神伤害 :hugging_face_dizzy_face:

    捐款了,我是慈善家 :tieba_hehe:

  • stateless_trash_can 无状态垃圾桶 Post #55

    Screenshot From 2026-08-06 21-38-36.pngScreenshot From 2026-08-06 21-38-26.pngScreenshot From 2026-08-06 21-38-17.png

    这里 URL 似乎错了

  • ❤️ Liked post in 幽默短片与抽象 meme 楼
    谈笑风生
    一只玉米人 玉米🌽 Post #159

    8f3ec134af3bfe9d700aca406b3ae32c.jpg70a670b07a0965c05ee0565852c3a0ba_720.jpg

    好喜欢傲娇啊,suki suki desuki 🥰 九宫格里面没有牧濑红莉栖不是很认可

  • ❤️ Liked post in wonderhoy!
    谈笑风生
    emu_otori 鳳 笑夢 Post #3

    进入帖子后最上方的 title 也会变成帖子标题,还以为把本站的名字改成 wonderhoy 了emu
    吓死了emu 🙀

  • ❤️ Liked post in wonderhoy!
    谈笑风生
    emu_otori 鳳 笑夢 Post #2

    感觉新UI有点乱没有以前的好用emu

    而且依然对移动端不是太友好emu

  • ❤️ Liked post in wonderhoy!
    谈笑风生
    emu_otori 鳳 笑夢 Post #1

    好久没上🚪了,常回🚪看看 👀

    没什么特别的事情但是 wonderhoi!

  • Zethes Post #253

    The Single Greatest Predictor of Future Stock Market Returns

    AIAE

    image.png

    image.png

    引言:长期股票收益究竟由什么决定

    传统股票市场估值研究通常关注市盈率、周期调整市盈率、股价净资产比、托宾 qq、股票总市值与国内生产总值之比等指标。这些方法的共同假设是:股票价格与某种可观察的基本面变量之间存在相对稳定的均衡关系。当市场价格明显偏离这一均衡关系时,估值倍数最终会向长期均值回归,从而影响未来收益。

    然而,这一框架存在一个根本性问题:市场价格并不是估值模型直接计算出来的结果,而是投资者在有限资产供给约束下进行资产配置的结果。估值倍数可以影响投资者的配置意愿,但它并不是决定价格的唯一机制,更不是市场必须遵守的外生规则。

    一种替代性的研究思路是,从整个金融体系的资产负债表出发,考察投资者总体财富中有多大比例被配置于股票。该指标可称为总量投资者股票配置比例。其核心命题是:

    当投资者已经将较高比例的财富配置于股票时,进一步提高股票配置的空间有限,未来长期股票收益通常较低;反之,当股票配置比例较低时,配置均值回归和非股票资产供给增长可能共同推动股票价格上升。

    这一框架并不否认企业盈利、股息和传统估值指标的重要性,而是将它们置于更一般的资产供给与资产配置均衡机制之中。

    在现有金融资产供给结构下,投资者愿意将多少比例的财富配置于股票,而价格需要调整到什么水平,才能使这一配置意愿与有限的股票供给相一致?

  • ❤️ Liked post in 魔芋爽的随笔&画画楼
    tck 我有魔芋爽 Post #43

    可以看到投票"哪个更好一点“吗🤔:pig2:
    p.s.能认出来画的是谁吗?
    才发现Q版的正主已经在楼里看到很多次了

  • KnownCircle1 Li Zhiyuan Post #1

    前情提要:我需要使用Harness工具写代码、辅助阅读文档,使用中转站的gpt模型。可以使用实验室的ubuntu机器,但网络波动比较大(学校校园网的质量😅或者在校外使用内网穿透,质量更差)。有时候需要让他长期运行。
    需求:有2个Windows电脑:工位电脑和自己的笔记本,需要在这两个设备之间同步数据,所以把代码和数据放在服务器上。

    一开始的方案是,在服务器上部署Harness工具,ssh连接之后用tmux打开。
    考虑到GPT模型的适配度,我在codex和opencode之间纠结。选择opencode的原因是,它在键盘和鼠标之间取得了平衡:

    1. 键盘:修改键位后,可以直接跳转到最近一次回复的开头(比桌面版的APP更好),也可以快速跳转到上一个、下一个对话的开头。
    2. 鼠标:可以鼠标选一段文字并自动复制,支持在Tmux中使用鼠标滚轮或者直接上下滑动。而对Tmux中的其他Harness工具(Claude Code)使用鼠标滚轮会转化成方向上下键,只会显示上一次输入的内容(类似于shell中的上下键);要在tmux中往上翻需要ctrl+b,[ 之后再翻阅。如果不使用tmux,一个网络波动ssh就断,进程就死了。

    讲一讲它的缺点:

    1. 没有ctrl+F查找功能
    2. 没有沙箱功能和自动审查,要把常用指令写入配置文件。
      1. 有bug,至少在我使用时,即使把.venv/bin/python写入allow,还是不停来问我要这个命令的权限
      2. 如果把python全允许了,就相当于允许了除sudo以外的全部指令
    3. 多个opencode进程同时写入数据库会报错。

    为了安全,按照GPT的建议,我设置了docker,每个项目可以映射到容器中,只在容器中跑。但是在实测中发现:历史对话数据丢了!!!
    最后发现是多个opencode进程一起写入数据库会报错,可能我的数据就是这么丢的。这个bug有人提Issue,但是官方关闭了(吐槽一下官方)。
    官方的建议是:后台启动一个opencode server,再按需启动多个客户端,但是这样又无法使用docker,无法做到每个容器一个独立环境。

    这下没辙了。

    最后换了codex:

    1. 在Linux上启动codex server
    2. 使用windows上的codex app远程连接这个server,或者在Linux机器上允许客户端
    3. 这种方式可以使用codex的沙箱,基本足够安全;也可以自动审核指令,不会因为要我Allow而停下,适合长任务
    4. 即使网络断连,后台server还可以继续跑
    5. 多个设备数据统一:都使用linux上的数据。

    当前难受但是可以忍受的点:

    1. 新增项目之后,在Windows codex APP上不会自动同步数据,需要手动添加项目的路径才能看见。
    2. 快捷键不好使:不能一键跳转到上一条的开头。
    3. Codex接中转站,要求在配置文件中把中转站的名字改成OpenAI,否则无法使用GPT官方的搜索功能。

    使用Claude Code不多,就不发表评论了。

  • IO IO Post #3

    已经有了image.png

  • Magics Post #24

    收录一些友情链接,比如pkxdt的网站

  • 一只玉米人 玉米🌽 Post #20

    想要一个之前 discourse 转载链接的预览图片功能,现在的预览界面只显示平台 logo,不会显示出具体内容的封面

    举例:

    4e6837e2-041a-44c2-8d4a-2bdd4198282d.png
    a01187b8-b752-4c20-9c71-4d05439bbd9b.png

  • Yukinochyan Yukinochyan Post #1

    分享一些计算机专业的课程资料(课程作业,课程实验,部分往年题等),包括:计算机网络专题实验、编译器专题实验、嵌入式智能系统、软件定义网络、RUST语言程序设计、数据库系统、操作系统原理、软件工程、数字逻辑电路、形式语言与编译。

  • anonymous Post #4

    另有台式(

    不过我一般用笔记本写码,核显本就够了,加上续航比较给力适合上课用,能免去很多逃课的麻烦

    不太了解OP的专业,如果有较多的剪辑/渲染/计算/游戏需求那还是多考虑游戏本之类的

    BTW thinkbook的linux支持非常完善,如果有这方面需求可以优先考虑

  • Xrystal-line 羽流弦ノ迹 Post #3

    感觉独显还是很有必要的,即使不玩游戏,不管是专业软件的视频编解码还是可能的本地运行机器学习相关内容的需求,没有独显都会非常不舒服。
    如果是AMD可以媲美4060的超强核显, 或者另有高配台式机, 当我没说。

  • Zethes Post #8

    AI 总结:2026年07月21日《投资大师》播客 摩根大通CEO戴蒙

    人工智能正在经历一场前所未有的资本投入竞赛。

    科技公司建设数据中心、采购芯片、训练大模型,传统企业则忙着部署内部助手、自动化系统和智能客服。市场真正关心的问题逐渐从“AI 是否重要”,转向了一个更现实的问题:

    这些钱最终能赚回来吗?

    摩根大通董事长兼 CEO 杰米·戴蒙的判断很明确:AI 最终会创造巨大价值,但回报出现的方式、时间和赢家,几乎肯定不会符合今天的普遍预期。

    AI 会成功,但不代表每个投资者都会成功

    戴蒙将当前的 AI 浪潮与互联网早期阶段进行比较。

    互联网最终深刻改变了商业和社会,也创造了谷歌、Meta 等巨型公司。但在这个过程中,雅虎、网景以及大量曾被市场寄予厚望的企业,最终被淘汰或消失。

    因此,“AI 将创造长期价值”和“当前所有 AI 投资都能获得合理回报”,是两个完全不同的命题。

    AI 作为一种基础技术,可能在药物研发、疾病诊断、汽车安全、软件开发、客户服务和企业运营中创造巨大价值。它甚至有机会减少医疗差错、加快新药发现,并显著提高知识工作者的生产效率。

    但技术价值并不会平均分配。

    一些企业会找到真正有效的应用场景,一些企业会因为基础设施投入过大而承担长期折旧压力;一些模型公司会建立平台优势,另一些公司则可能因为成本过高、产品同质化或商业模式不清晰而退出市场。

    换句话说,AI 大趋势可能是正确的,但参与大趋势的每家公司并不一定都是正确的投资。

    企业必须从“使用 AI”转向“计算 AI 的回报”

    在戴蒙看来,企业最终不会仅仅因为 AI 热门,就无限制地投入资本。

    管理层迟早要回答几个传统而严肃的问题:

    投入一亿美元之后,能够节省多少成本?能够增加多少收入?多久可以收回投资?项目的净现值是多少?是否存在更低成本的替代方案?

    这意味着,AI 投资将逐渐从试验阶段进入财务纪律阶段。

    早期,企业可能允许不同团队自由选择模型和工具。但随着使用规模扩大,这种方式会产生明显浪费。例如,一个简单的查询可能被发送给最昂贵、能力最强的模型,而实际上,一个体量更小、价格更低的模型已经足够完成任务。

    未来的企业 AI 系统,很可能会自动判断任务难度,将请求分配给速度最快、成本最低且足以完成任务的模型。

    真正形成竞争优势的,不一定是“使用最多 AI”的公司,而是最清楚以下三件事的公司:

    第一,哪些任务值得使用 AI;第二,应该使用哪一种 AI;第三,每次调用究竟创造了多少经济价值。

    AI 的就业冲击,本质上是培训体系的挑战

    对于 AI 是否会造成大规模失业,戴蒙没有完全否认风险,但也反对只看到岗位消失。

    技术进步通常会替代一部分工作,同时创造新的岗位。AI、网络安全、数据基础设施和软件工程等领域,仍然存在大量人才需求。

    真正的问题在于,新岗位与旧岗位之间并不会自动完成匹配。

    一个被自动化系统替代的后台员工,不会因为市场出现了 AI 安全岗位,就自然成为网络安全工程师。这个转变需要企业培训、职业教育、政府政策和个人学习共同完成。

    因此,AI 带来的核心社会挑战,不只是“工作会不会消失”,而是:

    劳动力能否在足够短的时间内,完成技能迁移。

    企业不能只把 AI 当成削减员工数量的工具。如果企业只追求短期成本下降,却不投资员工再培训,最终可能同时面临组织能力下降、内部阻力上升和社会信任受损。

    比 AI 泡沫更值得警惕的,是宏观环境

    尽管 AI 是访谈中的重要主题,戴蒙真正反复强调的,却是全球经济中的系统性风险。

    这些风险包括地缘政治冲突、能源价格波动、全球政府赤字、不断上升的债务水平,以及通胀和长期利率的不确定性。

    在市场情绪乐观、资产价格上涨、企业利润表现良好时,投资者容易形成一种错觉:既然当前经济能够承受冲突、油价上涨和高利率,未来也一定可以继续承受。

    但戴蒙提醒,经济危机往往不是由单一事件触发的。

    债务、战争、能源、通胀和金融市场波动可能长期独立存在,直到某个时点相互叠加,越过临界点。真正的风险并不只是每一个事件发生的概率,而是多个低概率事件同时发生之后产生的连锁反应。

    这也是为什么,他对长期债券和利率走势保持谨慎。

    即使通胀数据暂时改善,也不能轻易假设通胀已经永久回到低位。在高赤字、高债务和复杂地缘政治环境下,长期资金成本未必会像市场期待的那样迅速下降。

    对于 AI 企业而言,这一点尤其重要。

    数据中心、芯片和能源基础设施都需要巨额资本。如果利率长期维持在较高水平,AI 投资项目所需要达到的回报率也会提高。很多在低利率环境下看起来合理的投资,在资本成本上升后可能不再成立。

    最优秀的企业,不是预测最准确,而是活得最久

    戴蒙对企业经营的核心要求并不是抓住每一次市场机会,而是确保公司能够在最坏情况下继续生存。

    这也是摩根大通能够穿越金融危机、疫情和银行业动荡的重要原因。

    优秀的风险管理并不是预测某一场危机何时发生,而是不断追问:

    如果每个业务部门同时进入最坏状态,公司是否仍能承受?如果市场流动性消失,是否有足够资本?如果重大收购失败,是否会威胁整个组织?

    在 AI 投资热潮中,这种思维同样适用。

    一家企业可以错过某个模型、某项产品或某轮估值上涨,但不能因为追逐 AI 热点而损害资产负债表、现金流和核心业务。

    技术浪潮中的真正赢家,往往不是投入最激进的公司,而是能够在泡沫破裂、资本收紧和技术路线变化后,依然保留继续投资能力的公司。

    领导者最大的风险,是听不到坏消息

    戴蒙还将企业失败归因于三个相互关联的问题:官僚主义、自满和傲慢。

    公司规模扩大后,信息会逐层过滤。基层员工看到的问题,传到管理层时可能已经被美化;客户投诉会被解释为个别情况;失败项目会被包装成暂时延迟。

    职位越高,领导者直接掌握的专业细节反而可能越少。

    如果领导者因为不了解业务而产生不安全感,就更容易要求下属提供让自己舒服的信息,最终形成“只汇报好消息”的组织文化。

    真正成熟的领导者,不需要假装自己了解所有事情。他们能够承认不知道,主动询问专业人士,并允许员工指出产品、流程和战略中的问题。

    因此,领导力的关键并不是永远正确,而是建立一个能够快速发现错误、公开承认错误并及时纠正错误的系统。

    AI 时代最稀缺的,仍然是人的品格

    在谈到接班人和职业建议时,戴蒙并没有把技术能力放在第一位。

    他更看重工作伦理、好奇心、勇气、自律、同理心、沟通能力,以及赢得他人信任的能力。

    这些特质在 AI 时代反而更加重要。

    技术能够提高信息处理速度,却不能自动决定企业应该追求什么;模型能够生成多个方案,却不能承担最终决策责任;算法能够优化效率,却无法替代领导者对员工、客户和社会的责任。

    一个人是否愿意说出坏消息,是否能够在压力下保持诚实,是否会保护受到不公正对待的员工,是否能够在个人利益与组织利益发生冲突时作出正确选择——这些问题无法被简单编码成模型参数。

    结语:AI 的回报,不会按照市场剧本出现

    戴蒙对 AI 的态度既不是盲目乐观,也不是技术悲观。

    他相信 AI 将成为一种改变人类生活的基础工具,并在医疗、科研、软件和企业运营中创造长期价值。但他同样认为,当前的大规模投资不会按照市场设想的路径获得回报。

    部分公司会成功,部分公司会失败;部分项目会显著提升生产力,部分项目会成为昂贵的试验;真正的回报可能需要更长时间,也可能出现在今天尚未被重视的应用领域。

    因此,面对 AI 浪潮,企业最需要的并不是预测哪一个模型最终胜出,而是建立三种能力:

    保持资本纪律,确保每项投入能够被衡量;保持组织谦逊,让坏消息能够抵达决策层;保持资产负债表韧性,确保公司能够活到技术真正兑现价值的那一天。

    AI 或许会像互联网一样改变世界。

    但历史已经证明,改变世界的技术,并不会自动让所有参与者赚钱。

  • ❤️ Liked post in 怎么没有人发帖?
    谈笑风生
    dvm Dvm Post #1

    是发不出来吗?:sweat_smile_hugging_face:

  • ❤️ Liked post in 听歌楼
    游戏 / 娱乐
    stateless_trash_can 无状态垃圾桶 Post #3

    @io 虽然 B 站本来就爬出来很丑,但是是不是可以实现一下链接爬虫,很多老贴子有 YouTube 链接之类的

    还有 mention 🤣

  • Zethes Post #21

    分析房地产时不要只看:

    • 原价;
    • 建筑成本;
    • 地段故事;
    • 过去租金;
    • 房子会不会消失。

    还应重点看:

    • 债务何时到期;
    • 再融资利率;
    • 空置率;
    • 租户质量;
    • 租约剩余期限;
    • 利息覆盖倍数;
    • 贷款是否有追索权。
  • Zethes Post #3

    从1940年代以来,世界经历了:汽车普及;航空业发展;石油与天然气革命;电视;计算机;互联网;智能手机;人工智能。

    行业不断变化,但投资的底层问题没有改变:企业能赚多少钱?能赚多久?需要投入多少资本?竞争对手是否容易进入?当前价格是否合理?管理层如何配置资本?

    技术会改变答案,却不会让这些问题失效。

    为什么变化反而可能产生机会?

    市场面对新技术时容易出现两个极端:

    过度乐观,把所有相关企业价格炒得过高;
    过度悲观,把受到短期冲击但仍有价值的企业抛售。

    投资者的机会通常来自市场对变化的错误定价,而不是来自世界保持不变。

    https://www.gurufocus.com/economic_indicators/8046/finra-investor-margin-debt-relative-to-m2

    a7dfaf7861bf96c5acae0217fa1a66ac.png

  • 青年杰出贡献上交大門人 紫金港第一皮革<・)))><< Post #26

    发现同时选择多张图片上传 实际上传的只有第一张图片 每次都得重新选择有点不方便🫠

  • 青年杰出贡献上交大門人 紫金港第一皮革<・)))><< Post #24

    原先设置了spoiler的内容在这里似乎无法点开看到具体内容?望修复🥹
    updt:抱歉我误会了!这个问题不存在

    但是我刚刚发现同一个帖子有多个spoiler 内容不能同时显示 点开一个其他的就会隐藏?

    以及 不知道本站是否支持选中其他发言的部分内容进行引用回复的功能()

  • 青年杰出贡献上交大門人 紫金港第一皮革<・)))><< Post #4

    xm懂气候 我完全是地理盲 气候盲()
    台风要来浙江了 不过我最近在辽宁旅游 希望不会导致这边下大雨()

  • Xrystal-line 羽流弦ノ迹 Post #3

    西安这一周以来天天35°C+,即使中间有个晚上下了暴雨
    没带伞的我在实验室被堵到4点钟

    今天早上起来看到是高温红色预警,下午又来了暴雨大风黄色预警:magic_wand_innocent:

    东南沿海最近都在讨论台风
    不知道门友所在地的天气如何?

    西安市区依旧高于往年均值6°C左右
    西安市区依旧高于平均值6°C左右

  • IO IO Post #20

    目前试用了一下,感觉还不错🐱
    编辑器正常,可以上传图片.

    自动grid
    ctrl+v上传图片
    All images converted to AVIF to save bandwidth automatically!

    image.png

  • ❤️ Liked post in [记录贴] 26年西湖暑研
    谈笑风生
    Soyo34325 Soyo34325 Post #9

    07-04

    昨天进的实验室,然后办了入校!云栖校区比我预期中的要小的很多很多,比起大学更像是一个小的研究所,来的第一天就有点绝望啊,因为周围真的好偏!感觉完全没啥玩的,下午入校找到工位之后就开始搬砖了,因为之前在线上的时候跟过一部分,周围比较好的是KFC和麦当劳都有!麦金卡续起来

    IMG_1481

    IMG_1532

    今天到看房,和中介约好的,看的第一间房真的是惨不忍睹,原本是和实验室的同门合租,但是我发现那个房子有间屋子没有窗户,楼下是垃圾回收站,味道很大!但是短租真的超级难找,原本找到的一个梦中情房是上下楼的,下面是电视,然后上面是睡人的,但是人家不肯租,只能11个月签合同,后来找到个类似于酒店的那种公寓式的,价格贵了点,地方小了点,卫生还需要自己打扫一下,我想着要不要请一个阿姨来帮忙打扫一下,类似京东家居这种?

    下午还到宜家!师兄说他来杭州1年了还不知道宜家在哪里!买了枕头、床单、空调被等等,感觉好幸福,正好还在住酒店,就把新买的床单借用酒店的洗衣机洗了一下,再烘干

    IMG_1530

  • ❤️ Liked post in 巧克力测评
    谈笑风生
    一只玉米人 玉米🌽 Post #5
    anonymous_coward:

    瑞士莲70%排块,进口,临期价 20元多 100g,是我目前为止吃过味道最好的巧克力。

    歪个楼,我最喜欢捡康桥三楼的临期甜点了,5折的临期优惠会让 口感*2 ! 🫶
    也就是说,单位价格带来的多巴胺是 4倍 !!! 🥰 😇

  • 一只玉米人 玉米🌽 Post #1

    Camera_1040g3k832250taso7ugg5ova92rpi3slkm960ug
    Camera_1040g3k832250taso7uhg5ova92rpi3slkjqoqt8

    皮衣黄:千古大业让你小扎背刺了!

    http://xhslink.com/o/8iLln61VDA4

  • Xrystal-line 羽流弦ノ迹 Post #4

    你不会是机院大群里的几个水王之一吧?给你盒了 😉

    我和你同级,隔壁智造的,但是寝室里其他人全是你们专业的,显得我比较离群。

    我能体会到题主的感受,天天刷知乎什么的事情我也一样,所以也写一些建议吧。

    个人建议是先忘掉挂科问题,沉没成本不参与重大决策,不能一直想着挂了科就提前自我否定了。

    然后现在就行动,尽量多尝试,找一些未来的落脚点,而不是等到考研究生孤注一掷,当然可以做好坏打算,但是当下永远是最佳时机。
    和上面门友一样,建议找老师或者类似方向的学长聊聊,包括但不限于选修课老师或者各种高平台的?然后借此做一些事。甚至实在不行的话,到机院做故障诊断组的去实习应该也很有益。故障诊断这些也很偏软件了。你交机械在这方面比较强的。

    我之前认识的一个智造学长就直接找了具身相关的方向,现在发展很不错。

    当然门友也有很多优秀学长,等回复吧。

    另外你门又有新人,也是好起来了。

  • Ogiso_Setsuna 小木曽 雪菜 Post #10

    以直接、不指责的方式表达需求,确实是一种强大的工具,但有一种东西长得和它几乎一模一样,实际却正好相反,那就是抗议行为。焦虑型依恋者最容易把后者误认成前者:用一个逼问去索取确定性,只为平息自己被激活的依恋系统,然后告诉自己"这叫勇敢"。

  • ❤️ Liked post in 兴趣笔记
    深入交流
    stateless_trash_can 无状态垃圾桶 Post #2

    SplitArgs

    • 把字符串根据空格/引号分割成多个 token
    • 无引号 token 按照字面字符处理
    • 单引号 token 仅 unescape '' -> '
    • 双引号 token 按照 YAML 双引号字符串 unescape

    FSM

    splitargs

    Go 实现

    这样用闭包按照我的理解应该不会有性能问题?可惜因为需要 unescape 无法做到 zero-allocation

    const (
    	splitArgsLookForToken int = iota
    	splitArgsInToken
    	splitArgsInSingleQuotes
    	splitArgsInDoubleQuotes
    	splitArgsSingleQuoteEscape
    	splitArgsDoubleQuoteEscape
    	splitArgsEndSuccess
    	splitArgsEndFail
    )
    
    func SplitArgs(s string) (result []string, err error) {
    	var sb strings.Builder
    	var current rune
    	var currentSize int
    	var errMsg string
    	peeked := false
    	eoi := false
    	idx := 0
    
    	state := splitArgsLookForToken
    
    	peek := func() {
    		if peeked {
    			return
    		}
    		peeked = true
    		if idx >= len(s) {
    			eoi = true
    		} else {
    			current, currentSize = utf8.DecodeRuneInString(s[idx:])
    		}
    	}
    
    	peekHex := func(size int) error {
    		if idx+size > len(s) {
    			return errors.New("early EOI at index " + strconv.Itoa(idx))
    		}
    
    		r := rune(0)
    
    		for i := range size {
    			c := s[idx+i]
    			var v rune
    			switch {
    			case c >= '0' && c <= '9':
    				v = rune(c - '0')
    			case c >= 'a' && c <= 'f':
    				v = rune(c - 'a' + 10)
    			case c >= 'A' && c <= 'F':
    				v = rune(c - 'A' + 10)
    			default:
    				return errors.New("bad hex digit at index " + strconv.Itoa(idx+i))
    			}
    			r = (r << 4) | v
    		}
    
    		current = r
    		currentSize = size
    		return nil
    	}
    
    	// Must only be called after calling peek()
    	pop := func() {
    		idx += currentSize
    		peeked = false
    	}
    
    	begin := func() {
    		sb.Reset()
    	}
    
    	end := func() {
    		result = append(result, sb.String())
    	}
    
    	// Must only be called after calling peek() and before calling pop()
    	write := func() {
    		sb.WriteRune(current)
    	}
    
    	for {
    		switch state {
    		case splitArgsEndFail:
    			err = errors.New("SplitArgs: " + errMsg)
    			fallthrough
    		case splitArgsEndSuccess:
    			return
    		case splitArgsLookForToken:
    			peek()
    			if eoi {
    				state = splitArgsEndSuccess
    				continue
    			}
    
    			switch current {
    			case '\t', '\n', '\v', '\f', '\r', ' ':
    				pop()
    				continue
    			case '\'':
    				pop()
    				begin()
    				state = splitArgsInSingleQuotes
    				continue
    			case '"':
    				pop()
    				begin()
    				state = splitArgsInDoubleQuotes
    				continue
    			default:
    				begin()
    				state = splitArgsInToken
    				continue
    			}
    
    		case splitArgsInToken:
    			peek()
    
    			if eoi {
    				end()
    				state = splitArgsEndSuccess
    				continue
    			}
    
    			switch current {
    			case '\t', '\n', '\v', '\f', '\r', ' ':
    				pop()
    				end()
    				state = splitArgsLookForToken
    				continue
    			default:
    				write()
    				pop()
    				continue
    			}
    
    		case splitArgsInSingleQuotes:
    			peek()
    
    			if eoi {
    				errMsg = "early EOI at index " + strconv.Itoa(idx)
    				state = splitArgsEndFail
    				continue
    			}
    
    			switch current {
    			case '\'':
    				pop()
    				state = splitArgsSingleQuoteEscape
    				continue
    			default:
    				write()
    				pop()
    				continue
    			}
    
    		case splitArgsInDoubleQuotes:
    			peek()
    
    			if eoi {
    				errMsg = "early EOI at index " + strconv.Itoa(idx)
    				state = splitArgsEndFail
    				continue
    			}
    
    			switch current {
    			case '"':
    				end()
    				pop()
    				state = splitArgsLookForToken
    				continue
    			case '\\':
    				pop()
    				state = splitArgsDoubleQuoteEscape
    				continue
    			default:
    				write()
    				pop()
    				continue
    			}
    
    		case splitArgsSingleQuoteEscape:
    			peek()
    
    			if !eoi && current == '\'' {
    				write()
    				pop()
    				state = splitArgsInSingleQuotes
    				continue
    			} else {
    				end()
    				state = splitArgsLookForToken
    				continue
    			}
    
    		case splitArgsDoubleQuoteEscape:
    			peek()
    
    			if eoi {
    				errMsg = "early EOI at index " + strconv.Itoa(idx)
    				state = splitArgsEndFail
    				continue
    			}
    
    			switch current {
    			case '"', '\\', '/', ' ', '\x09':
    				write()
    				pop()
    				state = splitArgsInDoubleQuotes
    				continue
    			case '0', 'a', 'b', 't', 'n', 'v', 'f', 'r', 'e', 'N', '_', 'L', 'P':
    				switch current {
    				case '0':
    					current = '\x00'
    				case 'a':
    					current = '\a'
    				case 'b':
    					current = '\b'
    				case 't':
    					current = '\t'
    				case 'n':
    					current = '\n'
    				case 'v':
    					current = '\v'
    				case 'f':
    					current = '\f'
    				case 'r':
    					current = '\r'
    				case 'e':
    					current = '\x1b'
    				case 'N':
    					current = '\x85'
    				case '_':
    					current = '\xa0'
    				case 'L':
    					current = '\u2028'
    				case 'P':
    					current = '\u2029'
    				}
    				write()
    				pop()
    				state = splitArgsInDoubleQuotes
    				continue
    			case 'x', 'u', 'U':
    				var size int
    				switch current {
    				case 'x':
    					size = 2
    				case 'u':
    					size = 4
    				case 'U':
    					size = 8
    				}
    				pop()
    				if err := peekHex(size); err != nil {
    					errMsg = err.Error()
    					state = splitArgsEndFail
    					continue
    				}
    
    				write()
    				pop()
    				state = splitArgsInDoubleQuotes
    				continue
    			default:
    				errMsg = "bad escape sequence at index " + strconv.Itoa(idx)
    				state = splitArgsEndFail
    				continue
    			}
    
    		default:
    			errMsg = "internal error"
    			state = splitArgsEndFail
    			continue
    		}
    	}
    }
    

    感觉接口设计有点问题,似乎应该把 unescape 和 split 分开? 🤔

    才发现状态名写错了应该是 unescape

    方法论

    写这种复杂状态机之前,先用表格大致设计出状态和迁移会顺利很多

    image

    我第一次写 IP Prefix trie 的时候完全梦到哪写到哪,哪里有问题就多加一个分支,最后变得非常莫名其妙 😅

  • ❤️ Liked post in 兴趣笔记
    深入交流
    stateless_trash_can 无状态垃圾桶 Post #1

    我觉得有意思的学习内容 :innocent_cat:

    以前我一直认为自己对知识的渴望是纯粹的,认知、建模是我所有的意义。应试的学习让我感到不屑,却又因这份借口而无需过多进行实践

    现在看来,对学习进步的需求无非来自三种追求:

    • 获得知识本身
    • 优越感
    • 逃避劣等的恐惧

    也许大部份人都有这些追求,只是不同的人和学习的内容,三种占比不同吧

    我曾经自以为的纯粹知识渴望,也不过很大程度是对劣等感的逃避,为了没有胆量承认的虚荣

    然而也许内心并不纯粹,追求俗不可耐,这样的自己才是真实的,而非想象中某种完美的幻影

    无论出发点如何,如果还有兴趣能让我感到幸福,那便足够了吧 🙂

  • ❤️ Liked post in 13 的塬塬空间
    谈笑风生
    stateless_trash_can 无状态垃圾桶 Post #284
    ᐕ)ノ:

    假如我小時候就來過會是什麼感覺

    我虽然小时候很快乐,但是更多是看鱼的猎奇心理,说实在我现在并不怀念。让我羡慕的只是当时对时间流逝的无感

    你发了这张图片反而让现在的我很期待再去一次水族馆了,因为我觉得气氛很美,而且意义很有意思(看迷途之子导致的),这是小时候的我感受不到的

    所以我们在当下的开心才是最有意义的吧 :hugging_face_cat:

    ᐕ)ノ:

    不及時去感受就再也感受不到了

    我觉得现在的我和小时候的我并不是同一个人。小时候容易的快乐,对于现在的我来说并不快乐。也许不该被以前的残影束缚,而是应该重视现在的自己? 😇

    ᐕ)ノ:

    我希望我可以找到活著的意義,雖然我有時想用死來結束痛苦

    感觉活着的意义似乎不是能够用逻辑有意识地分析的东西。它是一种潜意识的,不受主观控制的感受。有时候我觉得空虚到窒息,积极地活着似乎只是一种完全没理由的选择,好像这感受就像一种遗传性的集体垃圾回收机制,让处境更差的个体自我销毁?

    从这个角度反过来看,也许变得更世俗,更 typical 一些,也许就能获得一些无意识的价值感吧 ?(何意味

    可惜死的过程是很痛苦很令人恐惧的,胜过我活着的痛苦,否则确实是很令人羡慕的了

    要是有什么方法能完全抹去我的存在(包括存在过的记录),也许我会接受吧

    ᐕ)ノ:

    抱歉我有點在自說自話

    没关系的,我也喜欢说莫名其妙的话,起码我不会在意别人这样 :hugging_face_cat:

    能够和类似的人讨论能够共情的话题,也许这就是你站特别的地方之一吧

  • 谈笑风生
    Lorange 主治医师李大华 Post #4

    怎样才能回到过去——除了时光机以外。

    想起来大一时候组织的活动:写一封信留给毕业的自己。我一直不敢打开,生怕里面写的是诸如搞技术、进大厂、拿大包一类的话语——我一定让过去的自己失望了吧。

    但抑制不住好奇,终于是打开了。
    一种难以形容的感觉,原来过去的我早就原谅了自己。
    不知道该说什么,但小珍珠已经下来了。
    幸好旁边就是我的毛巾,不用让舍友听到我的哭声。
    image

  • 谈笑风生
    Lorange 主治医师李大华 Post #5

    本来想趁着情绪还在多写一些东西,但困意已经上来了。

    要致谢的还有很多:
    在本科时候偶尔和我聊天的刘军老师,今天就我是否要考研的困惑和我聊了一个下午。
    我的舍友,感谢他们没有在意我每一个熬夜看代码的每一个夜晚。
    隔壁宿舍的朋友,我偶尔会去和他们吹吹比。
    隔壁班的好朋友,虽然我们两个人像两条区一样。

    image
    image

    我的父母,虽然他们的意见真的不怎么有用,但是大学四年的生活费几乎都是他们出的。
    以及交大门,我在这里写了很多没什么用,但也许以后看到会很怀念的日记。

    很遗憾这些当时都没有写入我的本科论文,虽然我的本科毕业论文也是一坨 💩。

  • 谈笑风生
    Lorange 主治医师李大华 Post #6

    关于我的困惑:

    现在是 Jun 9, 2026, 1:49:00 AM (Asia/Shanghai)

    我必须在今天的17点前告知hr我是否接下这个offer。

    接下的话,我将会有一段不知长短的时间身处上海的某个底边小厂做gpu数据库。我的代码能力并不能支撑我立刻工作,对这份工作的业务和待遇我也并不满意,只是我没得选择。
    不接的话,我将把今年剩余的六个月用在22408上,期望自己能够考上计算所或者某所211,我不清楚自己能否考上,以及那里是否会有我想象中的成功人生,光是想到名落孙山后全社会对于gap的恶意就足以让人浑身发冷。

    我真的很困惑,希望门友们可以集思广益。