文章
所有已发布的文章
-
在 Quartz Job 里 @Autowired 结果 NPE?别急着怀疑人生。这是因为 Job 实例由 Quartz 内部创建,压根不在 Spring 容器管辖范围内。本文从 SchedulerFactoryBean 源码入手分析问题根因,提供两种解法:自定义 JobFactory 配合 AutowireCapableBeanFactory,或者用 SpringUtil 工具类手动获取 Bean。文末还揭秘了 Spring Boot 2.x 为什么默认就能注入——因为它用了 SpringBeanJobFactory。
-
静态博客发布文章太繁琐?CI/CD 来解放双手!本文分享博客部署演进:v1.0 Jenkins + Travis-CI 自动构建推送 Pages;v2.0 升级 GitLab CI + Docker Swarm 容器化部署,Traefik 反向代理实现 0 配置负载均衡。附完整 Jenkinsfile、.gitlab-ci.yml 配置。
-
NIO 读写数据仍是同步的,AIO 才是真正的异步!本文使用国产框架 smart-socket 重构 RPC:异步 IO 操作,CompletableFuture 阻塞获取结果,MessageProcessor 处理请求响应。BIO → NIO → AIO,三种 IO 模型的 RPC 实战对比系列完结篇。
-
BIO 一个连接一个线程,大量连接直接崩溃!NIO 同步非阻塞如何解决?本文基于 Netty 重构 RPC 框架:ServerBootstrap 替换 ServerSocket,Channel + Handler 处理请求,事件驱动提升性能。从 BIO 到 NIO 的进化之路,附完整代码对比。
-
远程过程调用(RPC)让分布式调用像本地调用一样简单,但底层原理你了解吗?本文从零实现一个 RPC 框架:用 BIO 的 Socket/ServerSocket 做网络通信,JDK 序列化传输数据,动态代理让调用方无感知。三个核心技术点,附完整可运行代码。
-
马云说离职无非两原因:钱给少了、心委屈了。2 年时间,从技术输出到团队管理,为什么最终选择离开?需求不明确的会议、技术推广的阻力、产品质量的无奈……当努力得不到匹配回报,是时候换个环境了。疫情下的职场思考与 Q2 计划。
-
十年匆匆而过,从中考吊车尾到大学专业前三,从北漂初入职场到开源贡献者。2019 年的高光时刻:spring-boot-demo 登顶 GitHub 热门 Java 榜第一名!参与 JustAuth、发布 magic-starter……回顾这一年的工作、技术、开源与生活,展望 2020 新的 decade。
-
JustAuth 强依赖 hutool-http,想换成 OkHttp3 怎么办?simple-http 来解耦!设计思路:定义通用 Http 接口,提供 4 种默认实现(JDK11 HttpClient、OkHttp3、Apache HttpClient、Hutool)。通过 Class.forName() 自动探测依赖,也支持自定义实现。运用了代理模式、委派模式、策略模式。
-
BufferedReader、InputStream、OutputStream……JDK IO 类为什么可以层层包装?装饰者模式!本文用「购买 MacBook Pro 升级内存/硬盘套餐」的场景讲解:基础套餐 → 叠加内存装饰器 → 叠加硬盘装饰器,动态扩展功能。比继承更灵活,符合开闭原则。
-
微信朋友圈点赞,为什么所有好友都能收到通知?因为观察者模式!本文用「私信推送通知」的场景讲解:Pusher 作为被观察者发布消息,User 作为观察者订阅并接收。setChanged() + notifyObservers() 触发通知。JDK Observer、Guava EventBus、Spring ApplicationEvent 都是典型应用。