Spring Boot 的 Maven 插件不写 Dockerfile 也能出镜像,代价是 JRE 版本、堆大小、镜像里装不装 shell 全由 buildpack 替你定,512MB 的容器会直接起不来。
AWS 的 gateway endpoint 和 interface endpoint 怎么选
两种 VPC endpoint 只有在 S3 和 DynamoDB 上才有得选,其余服务只有 interface 一种。一个靠路由表里的 prefix list 生效,一个靠子网里的 ENI 和私有 DNS,分界在请求来源和客户端连的名字上。
NAT Gateway 的三笔冤枉钱
私有子网的默认路由指向 NAT 之后,钱会从三个地方漏出去:没人用的网关一直计小时费,S3 和 ECR 镜像层绕公网按 GB 收费,SaaS 的公网域名让 peering 闲着。三笔各自的成因、对应解法和回本点。
Confluent Cloud 的 ACL 只认 service account,不认 API Key
一个 producer 八小时没写进消息,根因是有人给同一个 service account 加了一条 DENY。Confluent Cloud 上 API Key 只做认证,ACL 认的是账号,一次权限改动的作用面是账号名下所有 key。
给 Hugo 静态站接 WebMCP
静态站没有后端,也能用 document.modelContext.registerTool 把搜索索引挂成浏览器里的 agent 能直接调的工具。代价是一张 origin trial token 和 2026-11-17 的到期日,好处落在访客那边。
Kubernetes 1.37 升级前要过一遍的东西
Kubernetes 1.37 在 2026-08-26 发布,67 项 enhancement 里真正影响升级的不多:四条 ACTION REQUIRED、一批默认值翻开的 Beta gate、三条带版本期限的弃用。
用 external-dns 自动创建 DNS 记录:source、target、所有权登记,以及两个偏危险的默认值
hostname 已经写在 Ingress 或 HTTPRoute 里,再去 DNS 那边手建一条记录,等于给集群状态留了一份要同步维护的副本。交给 external-dns 的代价是自己定三件事:读哪种资源、target 指向哪里、哪些记录归这个实例。
UUIDv4 / UUIDv7 / ULID 当主键的取舍:键宽和递增性在四种部署形态下的收益和代价
选 UUIDv4、UUIDv7 还是 ULID 当主键,真正在选的只有键宽和同一毫秒内有没有顺序。InnoDB 上一个写入者时递增键少近四成的页,四个写入者只剩两成、文本主键反而更差;按主键范围分片的库上递增变成写热点,按 hash 分布的库不看这一项。
Spring Boot fat jar 下 Class.forName 只在部分线程上找不到类:打包形态和线程来源各管一关
同一句 Class.forName 在 IDE 里跑得好好的,打成 fat jar 就报找不到类:看打包形态给的是哪个 application class loader,也看这条线程的 TCCL 是继承创建者的还是被 ThreadFactory 设过。
分页查询慢了 40 秒:两张明细表同层 JOIN 乘出 396 万行,聚合又压回 1,220 行
两张明细表只共享半个唯一键,同层 JOIN 之后才聚合,分页接口那 40 秒慢查询就出在中间被 DISTINCT 压回去的那些行上;拆成三步后这组参数下结果逐行一致。