前三篇我吹了多少牛,这一篇就要打多少脸。我给缓存装了自动补货员、分了保质期、配了用户专属储物柜——然后发现货架上摆的全是过期面包,而补货员,根本没被叫醒过。 🤯 开场:先讲讲我这一路是怎么“膨胀”的 第 2 篇结尾,LruLink 上线,缓存会自己补货,我志得意满。 第 3 篇结尾,吉祥物会游泳了,页面切换丝滑了,我感觉自己已经是博客界的架构师。 然后第 4 篇,现实给我上了一课——这一课的名字叫 InMemoryCache。 但在讲这个大坑之前,得先交代一个“前菜”:为了让页面切换丝滑,我做了一次 SPA 化改造,里面有两个非常精彩的翻车瞬间,值得先聊聊。 🚀 前菜…
~/$ whoami
你好,Web 朋友 👋
记录技术、生活与一切有趣的东西
置顶推荐
随机推荐
Recent Posts
第 2 篇的灶台 3,那道叫 mc-live2d 的菜,今天端上来给你看看。点菜时我以为端上来的是二次元立绘,结果后厨端上来一个……方块人。还会游泳。 🤯 开场:一次“货不对板”的请客 先说结论:这个吉祥物,我请了两天,换了两次“技术方案”,最后它学会游泳了。 事情要从一个很朴素的愿望说起——我想给博客右下角放一个会动的小人,当吉祥物(就是那种网站角落的看板娘,mascot,站点形象代言人)。 然后我打开搜索框,输入了“Live2D”。 这是我今天犯的第一个错误。 因为我的“吉祥物素材”,是 Minecraft 皮肤——一张 64×64 像素的平面 PNG …
第 1 篇我们说到:我决定给博客换张皮,结果换了 15 天。这一篇是其中最“高级”的一天——我给缓存仓库配了个自动补货员,然后三个功能分支同时开火。 🤯 开场:缓存这回事,我整整打了三次脸 先交代一下时间线。第 1 篇结尾我埋了个伏笔:缓存方案被推倒重来了一次。 其实准确说是三次: 版本策略结局v1(ADR-0003)三层缓存 + 主动失效(每次保存都清缓存)一周后全删v2(ADR-0015)分层缓存:低变动缓存 + 实时不缓存手动 Map,伪 LRUv3(ADR-0024)LruLink:会自己补货的缓存仓库就是本篇主角 三次折腾的教训浓缩成一句话: 缓存不是“存起来”这么简单——…
我本来只想给博客换个皮肤。结果 15 天后,我有了一个 enterprise 级博客、29 份架构决策文档,和一颗想回到“只改改样式”那天的心。 🤯 开场:这博客到底经历了什么 事情是这样的——我有个基于 WordPress 的老博客,跑着一个叫 Argon 的主题。它很好,但我手痒了。 于是我决定“重构”一下。就是那种“我就改改样式”的重构。 15 天之后: 前端的 WordPress 主题没了,变成了 Astro 7 + React 19 的 headless 架构 项目名字从一开始就是 Maltose(麦芽糖)——没什么宏大叙事,就是觉得可爱又好听,以后我养的猫也要叫这…
你有没有见过一个 WPF 窗口,背景是动态视频,而且这个视频不是外部文件,而是编译在 EXE 里面的? 今天我们就来实现这个骚操作。 一、需求:你要卷,就要卷到底 事情的起因是这样的: 我写了一个 WPF 程序,想要一个动态视频背景——不是那种循环播放 GIF 的复古感,是真·MP4 视频,丝滑循环,毛玻璃 UI 浮在上面那种高级感。 常规做法:把 background.mp4 丢在 exe 旁边,MediaElement.Source = new Uri("background.mp4")。完事。 但是不行。甲方说了: "我不要外部文件,你把这个视频给我编进 EXE 里面。用户拿到手就…
前言 虽然可以为jupyter安装 jupyter-lsp 插件,实现 python 的 lsp 相关功能,但是编码体验仍然不如我平时使用的 neovim,在查阅github后,发现已有neovim插件实现了这方面的功能,不过配置起来略微有些繁琐,顾决定将操作步骤记录下来,以便于后者学习参考。 前置环境 我的系统和相关工具链版本 OS: macOS 15.3 arm64 Kernel: 24.3.0 Packages: 171 (brew) Shell: zsh 5.9 NVIM v0.10.4 Pyenv 2.4.23 + Python 3.12.8 博主 neo…
😇 前言 大数据课的坑娃实录:当 Hue 遇上 "薛定谔的环境,本以为 Docker 是避风港,结果它把我推向了更深的技术深渊..." 对象大数据课要求部署 Hue 可视化工具,看着官方 GitHub 上明晃晃的Dockerfile,我拍着胸脯说 "这有何难"—— 毕竟 Docker 的 slogan 不就是 "一次构建,到处运行" 嘛?结果她电脑复杂的环境,差点让我原地轮回。以下是一些问题实录。 🕵️♂️ 坑娃破案时刻实录 🔧 Docker 镜像编译历险记:当 Hue 遇上 DNS 迷局 💥 经典剧情:我就知道会出问题 官方说支持 ARM 但不给镜像?没关系,我自己造!—— 直到…
前言 最近在折腾改造我们的宿舍,用 docker 搭建了 HomeAssistant,接入米家和一些 esp 设备。我用 frp 技术将 HA 发布到了公网上,以便于我远程控制设备和接受与设备相关的通知。不过为了安全起见,我通过 nginx 为 HomeAssistant 配置了 HTTPS 加密访问。不过,在配置完成之后,出现了一些小问题,这篇博客用来记录一下解决过程 正文 400 Bad Request server { listen $port ssl; server_name HomeAssistant_https; client_max_body_size …
昨天看了《震耳欲聋》,片如其名,激起了我对法律本质内涵的思考,以下思考带有部分剧透,未看此影片的同志可以观看后一起思考讨论。 从内涵看,马克思主义法学强调法的本质是阶级统治工具与社会经济结构的统一,法是统治阶级意志的体现,这样的定义毫无疑问是公式化的,没有人情味。而我们生活中的每一个人都是鲜活的存在,各自心中都有自己的道德尺度,都对法律的公平正义有着最朴素的理解与期待,影片的多处情节通过法律与人们心中朴素期待之间的矛盾勾起了我心中难过的情绪,泪水无声宣泄着对片中既得利益者得意的愤怒和对受害者无力发声的同情。 李淇(檀健次饰)与汤宇轩(王戈饰)在最初毫无疑问是市侩律师和坚守法理纯真本质律师的代表。但仔细回溯看李淇的心理发展…
🚨 事故现场:当SDKMAN遇上java_home 我使用 sdkman 来管理多个 java 版本,每次在终端输入java -version时都岁月静好,直到今天使用 gradle 编译项目时,却突然举着告示牌抗议:「找不到JDK,罢工了!」 重新查看日志,原来是 macos 自带的 /usr/libexec/java_home 程序不识别 sdkman 安装的 java,所以需要我们通过一些小 trick 来骗过 macos,使得 sdkman 安装的 java 也能被系统识别到。 为了增强文章阅读的趣味性,这篇文章我试着使用 ai 来润色和生成文本,今后我的博客也会更多的借助 aigc 的力量,来辅助我讲…








