Normal view

There are new articles available, click to refresh the page.
Today — 15 August 2025Curiosity

牙齿发黄真的能只靠刷牙变白吗?

By: hush2
14 August 2025 at 11:19
hush2: 小时候习惯没养成好,不爱刷牙,毕业工作了之后刷牙也是断断续续的,啥时候想起来就去刷一下,慢慢发现牙齿越来越黄。最近下定决心要养成一天早晚两次的刷牙习惯了,学了比较科学的巴氏刷牙法,每次刷牙时长五分钟左右,买了老爸评测过的某牙膏,说是对牙菌斑有抑制作用,有深度美白的效果,已经坚持了一个月,感觉没明显的效果?顺便问下真的只靠刷牙就能把牙齿变白吗?

有没有也是后端+架构+管理层的 v 友呀?

14 August 2025 at 10:08
wKong753900:

如题,自己在公司是负责架构+管理,有时候会看点后端,现在看网上都是如火如荼讨论 AI 编程工具,感觉自己有点边缘了,不知差不多岗位的 v 友会不会有这种感觉? 主要是: 1 、搞架构也用不到 AI 编程工具 2 、后端的 IDE ,基本以 IDEA 为主,Cursor ,VS Code 调试后端感觉都没 IDEA 好用。PS:我主要是 Java+Go 3 、管理层,起码一半时间不写代码了。 各位怎么看?

Yesterday — 14 August 2025Curiosity

很久没管的 wx 小程序被投诉了

14 August 2025 at 22:21
blackwhite001821: 事情是这样

在年初的时候,胰腺炎第 n 次复发(轻症),得过这个病的才知道,每天喝粥,只能眼馋查查各种食物的脂肪含量,奈何吃不得。

发现 xhs 上一直有个比较大的号,在推广收费小程序。

看了看内容,心想:这钱你也赚?

心血来潮,AI 生成+备案,一个星期就草草上线了一个同类型的查询小程序。

虽说 UI 做的丑了点,数据也是从豆包送的免费 token 那问出来的。但好歹能用啊。

这大半年过去了,小程序发短信提醒我备案信息有问题。上平台一看,嘿。

被投诉了。

```
投诉类型小程序(小游戏)内容侵权
投诉描述
以下内容非微信官方提供,由权利人投诉时填写,请谨慎操作。

抄袭如下:1 、名字和版本号 2 、出院时间设置 3 指导内容 4 搜索展现形式 5 多久可食 6 食用方法 7 烹饪方法,我方交互模式有专利保护(一般医院表现形式按周,只有我方按月。而且一般指导为列表式的,而我方是交互式的)综上所述对方刻意模仿我方软件,利用我方知名度制造同样用户体验,且已有用户被误导下载并举报给我方
```

看着这内容,有点想笑。

有小功率的桌面音响推荐吗

14 August 2025 at 22:02
nightbloom:

我知道这个需求可能有点奇怪,但是现在的桌面音响声音实在是太太太太大了,我现在用的是飞利浦 SPA3808 ,这个音响同时支持蓝牙和有线连接,默认是蓝牙,如果检测到了有线输入会自动切换到有线。

目前比较烦人的有两点:

  • 切换模式会以最大声音播报当前的模式,声音非常大,我基本上没有用蓝牙模式,但是在开机前由于连接着机箱,有供电,音响会默认处于蓝牙模式,开机后检测到输入就会触发模式切换,经常吓到我
  • 这个音响声音太大了,以至于我的系统声音常年设为 10%,还需要用软件将应用音量调到 20% 才不那么大声......也就是说 2% 的音量刚刚好。为什么不直接在系统里调成 2%?调到这个值音响直接没声了......

所以我想找一个小功率的音响,能响就行,音质不是那么在意,预算越便宜越好!

有人愿意交易一点点 solana 的 sol 币么?

By: wgsgyes
14 August 2025 at 21:47
wgsgyes:

这些天尝试使用 solana ,比如购买 sol 域名,绑定账户(不是为了投资)。 但是,尝试用 paypal 、Googlepay ,都无法充值。 当然,我没尝试用国内外币卡去付款,主要担心银行卡封控。

有朋友愿意交易一点点 solana 的 sol 币么?五十块人民币就好,我可微信转账给你。 我的 solana 账户 EWCB8HG6hsgMM7n6Gc2aW7x5hxqb2qCyLj6Kwb5V7926

猛然发现自己订阅了国内外几乎主要的网盘

14 August 2025 at 21:42
pocarisweat:
  • iCloud 2T ,因为主用 Apple 生态,照片比较多,但网盘体验很不行
  • OneDrive 1T ,拼车 Office 365 附送的
  • Google One 2T ,因为想用 Gemini
  • 百度网盘,因为很多资源在上面所以续着,有时候有联合会员或者折扣还是挺便宜的

当年觉得 dropbox 真的很好用,但是嫌弃它太贵了,现在看没有增值服务光做网盘确实够呛

很多年前还订阅过腾讯那个微云,因为当年微云会员是黄钻附送的(暴露了玩 qq 空间的历史),后来没送了也就没用了。另外家里还有个吃灰的 nas……

真正开始做一件事的时候很难

14 August 2025 at 21:30
baiyaoqiang:

一年半的创业,让我最疲惫不堪的不是找不到方向,而是与人打交道。当你发现某一条路非常畅通的时候,那一定是你还没有开始走这条路。人际交往没想到会如此的复杂,曾经以为自己十年的社会经验已经被这个社会磨平。创业后才发现,才刚刚开始。你无法预知下一秒会发生什么,你只能一直让自己心里想着所有的事情。心情真的极其的压迫,因为没有人会为你负责,除了你自己。如果你不去为你自己的事情去负责,那你就可能亏钱甚至无法继续下去。打工最多被辞,从头开始,与同事之间的那点伎俩放到创业的人际关系相处上,连九牛一毛都算不上。可能我不知道应该再去哪里发泄这种情绪,所以只能在这里写下。人生再追逐了更困难的事情,再看过更美的风景以后,你接下来将会更加认为这个世界很无聊,我们一直在追求更好的生活,然后更好的生活也再占据我们那颗躁动的新。对这个世界不充满任何希望的时候,可能也就无需多言。太累了,每个人都在想着自己心里的那点算盘,没有人会真正的为你的事情而尽心尽力,除了你自己。

到底是继续干程序员还是能干什么其他的 对未来有点迷茫

By: cjhyy
14 August 2025 at 21:10
cjhyy:

目前 30 岁 已婚还没有小孩。有台湾居留证

四川人 电子科技大学数学系毕业

家庭条件小康 反正两边父母都不拖后腿吧。各有几套房

初中搞数学竞赛 高中打 Noip 大学毕业后也不知道能干嘛 然后就去干程序员 先在成都小公司呆了 1 年多。后面就来上海上班了

4 月份实在不想坐班(事干完了人也要在 公司还要求不能上传自己的 github 啊 防止代码外泄。自己想写点工具 搞点感兴趣的也没办法) 离职了做了个小手术 然后自驾去了一圈新疆 重新回来找工作 口语一般尬住了 四川地震后都不考听力了 英语读写还行 当初高考考了 140+ 然后大学完全不想看英语了 4 级裸过 6 级 400 分 然后就再没看了。

外企 或者正规 remote 要口语听力好点 web3 又没有经验。

现在有点迷茫 如果是什么技术前沿 感兴趣的东西 我还比较喜欢研究 坐班没空出门玩或者打游戏就难受。老婆不上班。目前没什么存款 十几万吧

  1. 呆在上海,再找找远程 或者年假多点的工作 看了 1 个月了有点难找
  2. 实在找不到估计就只有继续面互联网公司。我可以在家里加班 不喜欢一直在公司呆在 问题是再干几年面临同样选择
  3. 去台湾找找工作了 不知道环境怎么样 还是喜欢国内环境
  4. 不干程序员不知道还有什么其他工作适合我

基础简历

智元机器人 2023 年 08 月 - 2025 年 04 月 前端开发工程师 研发部 上海

字节跳动 2020 年 05 月 - 2023 年 05 月 前端开发 非中国区 商业化广告 上海

成都小公司 2018 年 03 月 - 2019 年 10 月 前端工程师 前端 成都

Mac 能像 Windows 一样通过触控板快速切换程序吗?

By: const
14 August 2025 at 21:08
const:

手头暂时没有 windows 可以演示了,windows 触控板可以直接三指滑动调出所有平铺的程序窗口并且继续移动来切换程序(基本一步完成)。

mac 上我装了 alttab 可以做到类似的程序窗口显示方式以及键盘快捷键切换,但是它好像不支持触控板手势。

mac 原生触控板只能先上滑切换到控制中心,然后移动鼠标再点击来切换程序(至少三步完成),不知道是否有类似的工具可以做到 windows 那种切换体验?

逐渐对家人失望了,是我太幼稚不成熟的表现吗?

By: seafog
14 August 2025 at 20:57
seafog:

本人心理/精神有点问题。 表现是:经常担心不切实际的灾难事情发生,并且会非常焦虑,每次都要和别人描述事情的细节,让别人帮我确认事情不存在危险。

最近变得严重了,所以经常会跟家人描述我的灾难想法。

我逐渐发现,当我向家人求助,一字不落地讲我的担心时,我发现家人的脸色会非常差,有点“掉脸子”,然后会有点不耐烦。

家人跟我说了“没事”以后,我会下意识地继续找灾难发生性的可能性,就有点不认可我家人说的“没事”,我家人就会有点烦躁。

我想问下各位,这个是正常的嘛?

我精神出问题以前,我认为我家人很爱我,自从得了这个精神疾病以后,我有点怀疑他们到底爱不爱我了。

但是很神奇的是,平时我说我想吃什么菜,他们还是会很开心为我做。

就只是我犯病时候,才会有这种表现。

macOS 动态壁纸 是个坑?

14 August 2025 at 20:35
carrotliang: 今天手贱,设置了下动态航拍壁纸,选择了全部随机(图 1 )。

然后电脑就疯狂的网络的输出,从服务器下载了 36G 的影片(图 2 ),到目录/Library/Application Support/com.apple.idleassetsd/Customer

256G 的硬盘伤不起啊,

切换回纯色壁纸,清理这个目录,重启电脑后,又开始疯狂的网络输出,影片再次从服务器下载回来。

按网络上的操作,杀进程 idleassetsd ,活动监视器里杀 wallpaper ,均没有效果。

有大佬遇到过这个问题么。

图 1:

图 2:

Apple Books,库克的圈套

By: qiancheng
14 August 2025 at 20:34
qiancheng:

我最近十年往图书(Books)中导入了 1000+本 电子书(主要是 epub),现在发现无法直接导出来,导出来的只是一个同名的文件夹,而不是一个 file ,比如:

乔布斯传.epub

我导入的时候是个 file ,导出的时候却变成了一个文件夹,里面是松散的 metadata 。 这样是不是就只能绑定在了 iCloud 的生态了? 我最近发现 android 越来越好用了。主要是信号比较好,而且能自动屏蔽骚扰电话和设置工作日闹钟。

所以问题来了,如何批量导出 Books ?

Leger 的 Solana 应用签名报错 0x6a81 有没有 C 语言大佬给他们修修

By: renfei
14 August 2025 at 20:10
renfei: Leger 钱包绑定不上 V 站,不是 V 站的锅,是他们的锅,我在其他网站签名也会报错,烦死了。

有 C 语言的大佬给他们修修吗

issue 在: https://github.com/LedgerHQ/ledger-live/issues/11239

代码在: https://github.com/LedgerHQ/app-solana/blob/develop/src/handle_sign_offchain_message.c#L107-L131

用 Claude Code 和 v0 写了一个基于 Ollama 的本地 RAG 的库/CLI 一体的“玩具”

By: liliang
14 August 2025 at 20:02
liliang:

目前只支持嵌入文本文件和直接嵌入文字,然后本地搞了个基于 SQLite 的向量数据库,需要本地跑 Ollama 和下载 embedding 的模型,我自己测试用的 qwen3:8b 。

https://liliang-cn.github.io/rago/ “产品”介绍页

https://github.com/liliang-cn/rago 代码仓库

因为代码都是 Claude Code 写的,所以……请不要喷我😄

“产品”介绍页是蹭的 v0.app 免费的,所以也请不要喷我😄

自如租房,房东是缴纳税务的,这个市场锚定大吗?

By: TomVista
14 August 2025 at 19:56
TomVista: 新政不会直接影响自如房价,会由不交税的租房市场反向影响。
机构化租房市场一般都是交税的?存疑

在北京自如有 50%的市场占比(随手搜的),那这样的讲,新政对北京影响不大
* 已缴税占比高
* 自如高租金锚定上线
* 北京租房倾向自如,倾向高租房质量,涨租金的话难以竞争(这里有一个假定,自如质量高于其他大部分房源质量)

在一线城市机构化房源(视为缴税,存疑)占比 20-30%,未缴税房源影响有多大呢?

23 年北京城镇年收入中位数约为 8w 元,个税梯度 3% ,下一梯度 10%, 也就是说,纯算税的话,租房市场涨幅 3%-10% 基本覆盖 80%北京房主,反馈到房租上,以我为例 60-200 块/月 ,1500/月租房减税,实付 15-50/月

所以从数据上看,1500-2500 租金的租户几乎不受影响,北京房租市场上浮 3%-10%

最后,未来会不会出租房全额减税的政策呢?现在固定 1500/月

Hulo 编程语言开发 —— 包管理与模块解析

By: ansurfen
14 August 2025 at 19:42
ansurfen:

书接上回,在《 Hulo 编程语言开发 —— 从源代码到 AST 的魔法转换》一文中,我们介绍了Hulo 编程语言的抽象语法树。今天,让我们深入探讨编译流程中的第二个关键环节——模块管理。

现代化的编程语言通常都支持第三方模块的分发和依赖管理。在解析 import 语句时,需要判断模块来源的不同情况:标准库、相对路径、绝对路径、第三方依赖等。为此,模块管理成为了一个独立的组件层。

在传统的解释性语言中,模块管理往往与解释器紧密绑定。但是基于 Hulo 需要转译成目标语言的特点,转换过程中的符号信息也需要在转译器中使用,因此,模块管理被单独提取出来,作为一个独立的服务层,为解释器和转译器分别提供模块信息和符号解析服务。这种设计使得模块管理逻辑更加清晰,也便于后续的维护和扩展。

路径解析

为了避免复杂度和歧义,Hulo 的模块解析采用了简化的路径解析策略:

支持的导入方式

  • 相对路径导入: 使用 ./../ 前缀,如 import "./utils"import "../common"
  • 标准库导入: 直接使用模块名,如 import "os"import "math"
  • 第三方依赖导入: 使用完整的包名,如 import "owner/package"

不支持的导入方式

  • 绝对路径导入: 不支持以 / 开头的绝对路径
  • 隐式相对路径: 不支持不带 ./../ 的相对路径

这种简化的设计带来了以下好处:

  1. 降低复杂度: 避免了路径解析的歧义问题
  2. 提高性能: 减少了路径解析的计算开销
  3. 增强安全性: 避免了绝对路径可能带来的安全风险
  4. 简化实现: 对于非相对路径的模块名,只需要区分是标准库还是第三方依赖即可

模块解析

对于支持的三种导入方式,在解析成功后都会存储一份文件所对应的绝对路径。这样做的好处是便于全局管理文件,能够准确追踪哪些文件已经解析过了,哪些还没有解析。如果不进行这一层路径标准化转换,那么可能出现不同路径书写方式指向同一个文件,导致重复解析的情况发生。

解析过程

模块解析包含两个主要步骤:

  1. 文件解析: 将文件读取出来,然后将字符串转换成 AST 的过程
  2. 符号提取: 解析完成后还会进行一次 AST 扫描,提取出类声明、函数声明、Pub 导出等信息

符号表管理

这些提取出的信息由符号表(Symbol Table)管理,每个模块都有一份独立的符号表。符号表存储了模块中所有可访问的符号信息,包括:

  • 类声明及其方法
  • 函数声明
  • 公共导出的变量和常量
  • 类型定义

这边的解析就是将文件读取出来,然后将字符串转换成 AST 的过程。不过,解析完后还会进行一次 AST 的扫描,会提取出类声明、函数声明、Pub 导出等信息。这些信息往往由符号表(Symbol Table)管理,每个模块各一份独立的符号表。

示例

例如,我们有一个包含多个声明的模块文件 user.hl

// user.hl
pub class User {
    name: str
    age: num

    pub fn greet() -> str {
        return "Hello, " + $this.name
    }
}

pub fn create_user(name: str, age: num) -> User {
    return User{name: $name, age: $age}
}

const MAX_AGE = 120

解析后,这个模块的符号表可能是这样的:

SymbolTable {
  "User": {
    Type: "class",
    Exported: true,
    Fields: [
      { Name: "name", Type: "str", Exported: false },
      { Name: "age", Type: "num", Exported: false }
    ],
    Methods: [
      { Name: "greet", ReturnType: "str", Exported: true }
    ]
  },
  "create_user": {
    Type: "function",
    Exported: true,
    Params: [
      { Name: "name", Type: "str" },
      { Name: "age", Type: "num" }
    ],
    ReturnType: "User"
  },
  "MAX_AGE": {
    Type: "constant",
    Exported: false,
    Value: 120
  }
}

这种抽象使得模块间的依赖分析和符号解析变得更加高效和可靠。当其他模块导入这个文件时,只需要查看符号表就能快速了解可用的公共接口,而不需要重新解析整个 AST 。

包管理工具

如果说上面的 import 原理较为抽象,那么下面的包管理工具应该算是亲切的。几乎现代化编程开发,都离不开包管理工具。而它呢,简单的说就是下载依赖、移出依赖、列出项目的依赖这几个功能。

这样说的原因呢,是因为 Hulo 在实现 import 的时候已经将模块系统内置到编译器当中,而不采用分离的方式,让包管理工具去解决依赖,而是让编译器直接解决。这样做的好处是,性能更好,处理起来更方便。所以,包管理工具对于 Hulo 来说更像是一个软件包管理工具,只是提供安装和卸载的功能。

由于 Hulo 采用 Go 语言编写的缘故,很大一部分也采用了 Go Module 的思想,就是"去中心化"的仓库,没有像 maven 、npm 那样的中央仓库,完全是采用 GitHub Releases 进行存储和分发依赖。这样做的好处呢,就是不需要花钱维护中央仓库,同时充分利用了 GitHub 的生态系统。

安装

在 Hulo 中第三方依赖是以 owner/repo@version 的方式识别的,也就是拥有者和其所对应的仓库,以及指定的版本(可以不填写,默认拉取最新版本)。包管理工具在安装的时候执行的流程会从 GitHub Releases 下载包,其实就是通过 GitHub API 请求的过程。 这些 URL 路径遵循一定的规则,可以根据 owner 、repo 、version 拼接。如果不存在 version 也没关系,可以调用 GitHub 开放的 API 请求项目的最新版本。当下载下来后,它就会在本地创建缓存,按照文件路径关系 owner/repo/version 的格式存储这个源代码。

安装流程详解

  1. 解析包名: 将 owner/repo@version 格式的包名解析为 owner 、repo 、version 三个部分
  2. 获取版本信息: 如果未指定版本,通过 GitHub API 获取最新版本号
  3. 构建下载 URL: 根据 GitHub Releases 的规则构建下载链接 下载源码: 下载 ZIP 格式的源码包,支持重试机制
  4. 解压到本地: 将源码解压到 HULO_MODULES/owner/repo/version/ 目录
  5. 更新依赖配置: 在 hulo.pkg.yaml 中记录新安装的依赖

使用示例

# 安装指定版本的包
hlpm install hulo-lang/stdlib@v1.0.0

# 安装最新版本
hlpm install hulo-lang/stdlib

# 批量安装多个包
hlpm install hulo-lang/stdlib@v1.0.0 hulo-lang/utils@v0.5.0

卸载

卸载就是安装的逆过程,其实就是找到本地缓存,然后删除那个文件夹即可。包管理工具会:

  1. 从依赖配置中移除: 从 hulo.pkg.yaml 中删除对应的依赖记录
  2. 清理本地文件: 可选择是否删除本地缓存的源码文件
  3. 更新锁文件: 更新 hulo.pkg.lock.yaml 文件

使用示例

# 卸载包(保留源码文件)
hlpm uninstall hulo-lang/stdlib

# 卸载包并删除源码文件
hlpm uninstall hulo-lang/stdlib --remove-files

列出项目的依赖

项目的依赖关系就是要列出项目的所有的直接依赖和间接依赖。这也很简单,只需要读取包文件(在 Hulo 中是 hulo.pkg.yaml),里面会记录项目安装的所有的依赖以及版本号,然后根据这些数据确认依赖的存储位置,再读取它的包文件,依次递归为止。

依赖树构建

包管理工具会构建完整的依赖树,包括:

  1. 直接依赖: 项目直接声明的依赖
  2. 间接依赖: 直接依赖的子依赖
  3. 版本信息: 每个依赖的具体版本号
  4. 依赖层级: 以树形结构展示依赖关系

使用示例

# 列出所有依赖
hlpm list

# 显示依赖树结构
hlpm list --verbose

包配置文件

Hulo 使用 hulo.pkg.yaml 作为包配置文件,类似于 npm 的 package.json,包含以下信息:

name: "my-project"
version: "0.1.0"
description: "A Hulo package"
author: "Your Name"
license: "MIT"
repository: "https://github.com/owner/repo"
dependencies:
  hulo-lang/stdlib: "v1.0.0"
  hulo-lang/utils: "v0.5.0"
main: "main.hl"

缓存管理

Hulo 包管理工具会在本地维护一个缓存目录(HULO_MODULES),用于存储下载的包源码。这个缓存机制可以:

  1. 提高安装速度: 避免重复下载相同的包
  2. 支持离线使用: 已缓存的包可以在网络不可用时使用
  3. 节省带宽: 减少重复的网络传输

缓存清理

# 清理未使用的缓存
hlpm cache clean

# 查看缓存信息
hlpm cache info

符号混淆

这一部分和传统的语言不太一样,是 Hulo 增加的功能,如果不感兴趣可以直接跳过,不会影响前后连贯性。

背景

在 Hulo 中,支持现代化的模块导入语法,如:

  • import { date as d } from "time" - 具名导入并重命名
  • import * from "time" - 全量导入
  • import "time" as t - 模块别名导入

但是作为目标语言的批处理脚本对别名的支持和对模块的支持却很鸡肋,因此 Hulo 需要在编译时就解决这个导入问题。

解决方案

解决的方式说白了就是改名,将类名、函数名等符号重命名为特定的格式。Hulo 采用 _[模块 ID]_[符号类型]_[自增计数器] 这样的命名规则:

  • 模块 ID: 表示符号出现在解析的第几个模块中
  • 符号类型: 用数字表示不同的符号类型
    • 0: 函数 (Function)
    • 1: 类 (Class)
    • 2: 常量 (Constant)
    • 3: 变量 (Variable)
  • 自增计数器: 表示该模块中该类型符号的序号

示例

例如,_0_1_0 代表这个符号出现在解析的第 0 个模块中,类型 1 表示它是一个 Class 符号,0 代表它是这个模块中第一个被解析出来的 Class 。

如果后面还有 Person 类,那么它将被命名为 _0_1_1

具体例子

假设有以下导入:

import { User as MyUser, Person } from "./models"
import { date as d, time as t } from "time"
import * from "utils"

经过符号混淆后:

// 原始符号 -> 混淆后的符号
User -> _0_1_0      // 第 0 个模块,类型 1(Class),第 0 个
Person -> _0_1_1    // 第 0 个模块,类型 1(Class),第 1 个
date -> _1_0_0      // 第 1 个模块,类型 0(Function),第 0 个
time -> _1_0_1      // 第 1 个模块,类型 0(Function),第 1 个

这种符号混淆机制的优势:

  1. 避免命名冲突: 确保不同模块的符号不会冲突
  2. 简化目标代码: 生成的目标语言代码更加简洁
  3. 保持语义: 在编译时解决别名问题,运行时无需额外处理
  4. 可预测性: 混淆后的名称具有规律性,便于调试和追踪

这种情况怎么选择,要考虑回去吗?

14 August 2025 at 19:39
congcong1228:

本人 99 年,目前在杭州 12.5k ,没有公积金,平时工作比较轻松,业务也很简单,基本每天没啥事,有事也很容易处理。 最近找工作拿到了郑州数字马力的 offer ,定级 s4 ,家离郑州很近, 待遇 10k 全额公积金 试用期不打折,做的是支付宝基金方面的业务,要考虑回去吗,比较吸引的点是公积金,各位佬给个建议

GenAI 公司: C++/Go/Rust 开发/架构师

14 August 2025 at 19:26
fancyfrees: GenAI 公司:C++/Go/Rust 开发/架构师
-新加坡/香港/上海/硅谷(目前 base 在哪就申请哪里)
⚠️工程能力强( C++/Go/Rust )
⚠️ACM 竞赛获奖者
⚠️不一定要 AI 相关经验
⚠️互联网架构设计
⚠️GitHub 提交很多代码
⚠️名校( C9+海外名校)
微信:fancyfrees
❌
❌