文章
所有已发布的文章
-
简单工厂的 if-else 越写越长?工厂方法模式来解耦!核心思想:把具体类的实例化延迟到工厂子类,新增产品只需新增工厂类,不用改原有代码。本文继续用糖果工厂的例子,对比简单工厂 vs 工厂方法的 UML 图和代码实现。附 JDK Calendar.getInstance() 源码分析,看看大佬怎么用。
-
new LemonCandy() 散落在代码各处?简单工厂模式帮你统一管理对象创建!本文用「糖果工厂生产不同口味糖果」的场景,手把手实现简单工厂:抽象糖果类 → 具体糖果实现 → 工厂类封装创建逻辑。还有两种工厂方法实现:字符串参数和 Class 参数反射创建。附 Slf4j LoggerFactory 源码分析。
-
每次打包都要手动改 spring.profiles.active?太容易出错了!本文介绍 Maven Profile + @xx@ 变量替换的优雅方案:pom.xml 定义 dev/test/prod 三套环境,application.yml 用 @profileActive@ 动态获取,mvn package -P prod 一键打包。还提供了 shell 脚本和 IDEA 可视化操作两种构建方式。
-
接口参数传 0 或 1,怎么自动转成 GenderEnum.MALE 或 FEMALE?@RequestParam 和 @RequestBody 搞不定,需要自定义 Converter。本文提供完整的通用方案:BaseEnum 接口 + ConverterFactory 工厂模式,一套代码支持所有枚举类型的自动转换,Get/Post 请求都能用。
-
想把 Git 提交时间改成跨年那天的 00:00:00?用 git commit --amend --date 就能搞定。本文记录两种场景:修改当前最新提交的时间,以及通过 commit id 修改历史提交的时间。改完记得 git push 同步到远程。GitHub 绿点补救指南。
-
Spring Boot 文件上传遇到 Nginx 413 Request Entity Too Large?原因是 Nginx 默认限制请求体大小为 1MB。解决方法很简单:在 server 块加一行 client_max_body_size 20M,然后 nginx -s reload 重启即可。一分钟解决的小问题,记录一下备忘。
-
minikube 搭建 K8s 真的傻瓜式吗?至少我遇到了两个大坑:kubectl v1.13 和 minikube 默认的 k8s v1.12 版本不匹配,以及国内网络无法拉取 k8s.gcr.io 镜像。本文记录完整的排坑过程:--kubernetes-version 指定版本、--docker-env 配置代理,VirtualBox NAT 模式下 10.0.2.2 指向宿主机的原理。
-
从北京回杭州,从执行者到产品负责人,2018 是角色转变的一年。工作上开始定 TODO-List、安排团队开发、考虑产品架构;开源上 spring-boot-demo 47 个 demo 持续更新。展望 2019:博客月更 3 篇、GitHub 日日有绿点、希望年底口袋不再空空。技术人的年终总结与自我期许。
-
还在被 Spring 的 XML 配置和依赖版本冲突折磨?Spring Boot 让这一切成为过去!本文从零开始:用 IDEA 的 Spring Initializr 创建项目,理解启动类的 @SpringBootApplication 注解,编写第一个 Controller,运行 main 函数启动内嵌 Tomcat。约定大于配置,开箱即用。
-
Node 服务一关终端就停了?用 PM2 守护进程!本文介绍 3 种后台运行 Node 服务的方式,重点推荐 PM2:支持负载均衡、进程监控、日志管理、开机自启。附完整命令速查表:start、stop、restart、logs、monit、save、startup 等,一文掌握 PM2 核心用法。