-
Java类单继承且不可继承final类;私有成员存在但不可见;@Override是编译期契约,防止重写失效;多态仅适用于非static、非final、非private的实例方法,调用由运行时类型决定。
-
CopyOnWriteArrayList写操作不阻塞读,因每次修改都新建数组复制内容,读操作持老数组引用且无锁;但写开销大、迭代器不可见新元素、多方法组合非原子。
-
数组用length字段,集合用size()方法,字符串用length()方法;三者语法语义不同,混用导致编译错误,嵌套结构需逐层判断类型。
-
Lombok的@Builder注解会覆盖类中已初始化的集合字段(如privateList<Category>children=newArrayList<>();),导致调用addChild()时触发NullPointerException。根本原因在于Builder生成的构造逻辑未保留字段默认值。
-
本文探讨在不直接测试私有方法的前提下,通过端到端断言公共方法输出来间接覆盖私有逻辑,确保关键业务字段(如extras)被正确计算并注入返回对象,从而防范因代码遗漏导致的静默缺陷。
-
变量遮蔽指子类或方法内同名变量覆盖父类/成员变量,需用this访问当前对象成员、super访问父类成员;构造器中this()和super()须首行且互斥;遮蔽是静态绑定,不同于方法重写的动态绑定。
-
BCryptPasswordEncoder默认强度为10,但高并发下易致CPU飙升,推荐显式指定strength=11;必须用matches()比对密码,严禁字符串直接比较;SpringBoot3需显式配置PasswordEncoderBean,且密码长度不得超过72字节。
-
在Maven聚合项目中,若ROOT仅作为聚合(aggregation)而非父模块(parent),直接在其pom.xml中声明<dependencies>无效;但合理使用<dependencyManagement>并配合BOM导入机制,仍可统一管理子模块依赖版本。
-
本文讲解如何在Java开发中正确处理同一项目内多个public类之间的依赖关系,解决“cannotfindsymbol”编译错误,重点介绍现代构建工具(Maven/Gradle)的标准化用法,并对比说明传统手动编译的注意事项。
-
SOLID不是银弹,而是针对“改一处崩一片”的五条反思性约束;它不规定写法,只警示频繁修改多类多方法即可能违反原则。
-
@CrossOrigin未生效的根本原因是注解未正确加载,常见于加在非Controller类、被AOP拦截、或SpringMVC未扫描到该类;需确保加在@RestController/@Controller上,且注意与全局配置、SpringSecurity的协同关系。
-
LinkedList默认实现Deque接口,天然支持双端队列操作;addFirst/offerFirst等方法区别在于异常策略与返回值;空时调用removeFirst会抛NoSuchElementException,应优先用pollFirst;纯双端队列场景下ArrayDeque性能更优但不支持null。
-
SonarQube报告“未在finally中关闭ObjectInputStream”并非误报:当外层流(如FileInputStream)关闭时抛出异常,内层流(ObjectInputStream)将被跳过关闭,导致资源泄漏。本文详解兼容旧Java版本的安全关闭模式。
-
JavaAgent必须通过-javaagent参数加载,MANIFEST.MF需正确配置Premain-Class或Agent-Class;ByteBuddy拦截受限于方法可见性、JDK类权限及匹配精度;耗时监控应使用System.nanoTime()并异步采集;retransform需JVM支持且避开核心类。
-
答案是掌握JavaIO流需区分字节流和字符流:字节流以byte为单位,适用于图片、音频等二进制文件,使用FileInputStream和FileOutputStream进行读写;字符流以char为单位,专用于文本处理,通过FileReader和FileWriter自动处理编码,避免乱码;为提升性能,应使用BufferedInputStream、BufferedOutputStream及BufferedReader、BufferedWriter等缓冲流,其中BufferedReader的readLine()