Tag: java
All the articles with the tag "java".
-
MacOS 升级到 BigSur/Monterey 后,JD-GUI 打不开了?提示「No suitable Java version found」,明明装了 JDK 还报错?这是 JD-GUI 内置的 Java 检测脚本太老,不认识新版 MacOS 的问题。解决方法很简单:右键显示包内容,把 universalJavaApplicationStub.sh 替换成 GitHub 上的新版即可。三步搞定,继续愉快地反编译 Jar 包。
-
Lombok 和 MapStruct 都很香,但一起用就翻车?编译报错「找不到 getXXX() 方法」?别急,这是 Annotation Processor 执行顺序的锅。两者都在编译期生成代码,但 Maven 不知道要先跑 Lombok 再跑 MapStruct。本文带你理解问题本质,只需在 pom.xml 的 annotationProcessorPaths 里加一行配置,让 Lombok 排在 MapStruct 前面,问题迎刃而解。附完整可运行示例代码。
-
在 Quartz Job 里 @Autowired 结果 NPE?别急着怀疑人生。这是因为 Job 实例由 Quartz 内部创建,压根不在 Spring 容器管辖范围内。本文从 SchedulerFactoryBean 源码入手分析问题根因,提供两种解法:自定义 JobFactory 配合 AutowireCapableBeanFactory,或者用 SpringUtil 工具类手动获取 Bean。文末还揭秘了 Spring Boot 2.x 为什么默认就能注入——因为它用了 SpringBeanJobFactory。
-
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 序列化传输数据,动态代理让调用方无感知。三个核心技术点,附完整可运行代码。
-
不用 Spring Boot 也能快速接入第三方登录!本文演示 JFinal 框架如何通过 JustAuth 集成 QQ、GitHub、小米登录。踩坑记录:JFinal 路由不支持 /{type}/callback 格式,回调地址要改成 /callback/{type}。附完整配置文件和 Controller 代码。
-
每次打包都要手动改 spring.profiles.active?太容易出错了!本文介绍 Maven Profile + @xx@ 变量替换的优雅方案:pom.xml 定义 dev/test/prod 三套环境,application.yml 用 @profileActive@ 动态获取,mvn package -P prod 一键打包。还提供了 shell 脚本和 IDEA 可视化操作两种构建方式。
-
公司内部 Java 8 分享的完整文档!从 JDK 5 到 JDK 8 的发展历程梳理,重点讲解 Lambda 表达式、函数式接口、Stream API、Optional 类、新日期时间 API 等核心特性。每个特性都附带 Demo 代码,拿来即用。还在用 for 循环?是时候拥抱函数式编程了。
-
从零到一的 ElasticSearch 完整学习笔记!覆盖单机安装、分布式集群配置、head 插件和 ik 中文分词插件安装。详解索引、类型、文档、分片等核心概念,附带大量 RESTful API 示例:条件查询、聚合查询、复合查询。最后用 Spring Boot 整合 ES,实现增删改查和复杂搜索功能。