logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Go 内存逃逸分析:什么时候变量跑到堆上

你写了个函数返回局部变量的指针,C 程序员看了直冒冷汗——那不是返回栈上野指针吗?但 Go 里这么写完全合法,程序跑得好好的。原因是 Go 的编译器帮你做了「逃逸分析」:它自己判断这个变量该放栈还是放堆。问题是,这个「自动」有时会把你以为在栈上的东西悄悄挪到堆上,带来额外的 GC 压力。这篇教你怎么看清、怎么控制变量的去向。

#golang#算法#开发语言 +1
Java 并发:ThreadPoolExecutor 参数到底怎么配

很多人用线程池图省事,直接或,上线后要么内存溢出,要么请求被莫名其妙丢弃,排查半天才发现是线程池参数没配对。阿里的《Java 开发手册》甚至明确禁止用Executors快捷方法创建线程池。这篇讲清楚七个参数各自的作用、任务进来后的执行流程,以及生产环境到底该怎么配。

#java#开发语言#jvm +1
Kubernetes 探针实战:liveness、readiness、startup 到底怎么配

线上 Pod 明明 Running,流量打进去却报 502;或者应用启动慢,还没起来就被 K8s 反复杀掉重启,陷入 CrashLoopBackOff。这两类问题十有八九是探针没配对。Kubernetes 有三种探针:liveness、readiness、startup,名字相近但职责完全不同,配错了比不配还糟。这篇讲清楚每种探针管什么、什么时候用、怎么配。

#kubernetes#容器#云原生 +1
Spring Boot 全局异常处理:@ControllerAdvice 实战

/ 业务状态码,不是 HTTP 状态码// 给前端/用户看的提示// 成功时的数据r.code = 0;return r;return r;// getter/setter 省略// 只管抛,怎么转成响应交给全局处理器throw new BusinessException(40401, "用户不存在");Controller 干净了,不用再关心异常怎么变成 HTTP 响应。

#spring boot#后端#java
Java CompletableFuture 实战:异步编排、组合与那些让你线上翻车的坑

很多人对异步的印象还停留在「 + 」。但会阻塞,一旦要「查完用户再并行查订单和积分,最后合并返回」这种编排,代码立刻变成一堆嵌套的线程池和阻塞等待,又丑又容易出错。(JDK 8 起)就是来解决这件事的:它让你像串珠子一样把异步任务链起来,不用手动阻塞。这篇从「串行链式」讲到「并行合并」,再到三个真实会让你线上翻车的坑。最基础的两个方法:(有返回值)和 (无返回值)。拿到结果后用做转换:和的区别:前

#java#python#前端
JVM 内存模型与 GC 日志怎么看

线上服务突然变慢,接口 P99 从 50ms 飙到几秒,CPU 却不高。老手第一反应是:看看是不是 GC 出问题了。但很多人打开 GC 日志一看,满屏的、一堆数字,完全不知道哪个是关键。这篇不堆理论,目标很明确:讲清楚 JVM 运行时内存分哪几块、对象在里面怎么流动,然后手把手教你读一段真实的 GC 日志,知道该盯哪几个数字判断健康与否。

#jvm#java#开发语言
Docker 多阶段构建:把镜像从 1.2GB 砍到 15MB

你有没有遇到过这种情况:一个 Go 或 Node 服务,代码没多少,打出来的镜像却一两个 G,推到镜像仓库慢、拉到生产环境也慢。问题几乎都出在——。这篇用一个 Go 服务和一个前端项目为例,讲清楚多阶段构建(multi-stage build)怎么把镜像体积砍掉 95% 以上,以及几个能进一步压榨体积、还能加速构建的实战技巧。

#docker#容器#运维
Spring 事务失效的 8 种场景:@Transactional 加了却没生效怎么排查

我明明加了,为什么异常抛出后数据没回滚?」这是 Spring 面试和线上事故里的高频问题。事务注解看起来简单,但它是靠 AOP 代理实现的,一旦绕过了代理,注解就成了摆设——不报错,悄悄失效,最后线上数据对不上账才发现。这篇把最常踩的 8 种失效场景一次讲清,每种都给出「为什么失效」和「怎么修」,最后教你一招快速自查。

#spring#java#后端
GitHub Actions 实战:从构建、测试到自动部署的完整流水线

很多人对 GitHub Actions 的印象还停留在「加个 CI 跑跑测试」,但真正让它值钱的是。这篇不讲概念,直接带你搭一条能用于生产的流水线:代码推上去 → 装依赖 → 跑测试 → 构建镜像 → 推到镜像仓库 → SSH 到服务器滚动更新。中间会踩的坑(缓存不生效、secret 泄露、部署一半挂了没人知道)一个个填掉。

#github
用 Redis + Redisson 实现分布式锁:从踩坑到生产可用

单机部署时,一个就能锁住临界区。但服务一旦扩到多实例,JVM 级别的锁就完全失效了——两个实例各自持有自己的锁,谁也拦不住谁,超卖、重复下单立刻就来了。这时候就需要一把所有实例都认的「分布式锁」。Redis 是最常见的实现载体。很多人上手直接写SETNX,结果在生产上锁死、锁被别人释放、锁提前过期各种问题轮番上演。这篇我们从最朴素的写法一路踩坑,最后落到用 Redisson 的生产级方案。

#redis#分布式#junit
    共 19 条
  • 1
  • 2
  • 请选择