-
Java类设计核心是将现实问题抽象为“概念+属性+行为”的模型,强调从问题域出发识别实体与职责边界,通过封装、组合优先于继承、访问控制等原则构建高内聚低耦合的类结构。
-
static静态代码块适用于类加载时轻量级核心初始化,如JDBC驱动注册、本地配置加载、不可变常量构建等,但严禁用于网络IO、连接池创建或依赖容器上下文的操作。
-
使用LIKE'%keyword%'可实现不限位置的全字段模糊匹配,但性能较差且需注意大小写敏感性、SQL注入防护及多字段匹配需分别书写条件。
-
volatile关键字解决多线程下的可见性和有序性问题,通过强制主内存读写保证变量修改对其他线程立即可见,并通过内存屏障防止指令重排序,适用于状态标志、双重检查锁定等场景;但它不保证复合操作的原子性(如i++),因无法将多个步骤绑定为不可中断的整体,需借助synchronized或原子类实现原子性。
-
Java简易问卷系统用内存集合实现“问题—选项—用户回答”链路:Question存题干/题型/选项,Answer存用户ID/题目ID/回答,SurveySystem管理题库、收集答案并统计;支持单/多/简答,输入校验与索引越界防护。
-
Linux搭建Java环境需安装JDK、配置JAVA_HOME与PATH环境变量、验证java-version及路径。推荐OpenJDK17/21,Ubuntu用apt,CentOS用yum/dnf,手动安装则解压至/opt/java并设权限,环境变量写入/etc/environment或/etc/profile,最后逐项验证生效。
-
直接返回Collections视图(如subList、asList、keySet)会导致视图与源集合共享底层数据,修改源集合会静默影响所有关联视图,引发ConcurrentModificationException或异常值,是典型的“静默型”Bug。
-
SpringBoot整合MyBatisPlus可通过以下步骤实现:1.添加MyBatisPlus和数据库连接器依赖;2.配置数据源信息;3.创建与表对应的实体类;4.创建继承BaseMapper的Mapper接口;5.编写Service调用Mapper方法;6.创建Controller提供API接口。此外,可使用MyBatisPlus代码生成器自动生成代码,通过配置生成器参数并运行生成代码。分页查询可通过引入Page对象并在Mapper中调用selectPage方法实现。自定义SQL注入器需创建继承Def
-
synchronized修饰静态方法时锁的是当前类的Class对象,等价于synchronized(MyClass.class),所有线程串行执行,与实例无关;而实例方法锁this,二者互不干扰。
-
putIfAbsent方法在键不存在或值为null时插入键值对,避免覆盖原有数据,适用于安全初始化场景。
-
生产环境禁止e.printStackTrace(),须用SLF4J记录带业务标识的日志;禁用空catch;受检异常仅用于调用方必须恢复的场景;finally中避免抛异常,优先用try-with-resources;异常信息需含可行动上下文并脱敏敏感数据。
-
三元运算符中基本类型字面量与可空包装类型混用会触发JVM强制拆箱导致NPE;应改用if-else、显式包装或Optional避免隐式类型转换。
-
模块描述文件强制依赖分层的核心是将架构约束转为机器可验证契约,在编译或CI阶段拦截越界访问;需选对载体(如ArchUnitDSL、ArchGuard配置或Java模块元数据),覆盖字段、方法参数、泛型、注解四类变量级依赖场景,并配套CI卡点、IDE提示与修复模板。
-
避免死锁需打破四个必要条件,核心是按固定顺序加锁(如ID升序)、使用带超时的tryLock、缩小锁范围、避免锁内调用外部方法。
-
答案是使用equals()方法比较字符串内容,因为==比较的是引用地址。应避免使用==判断字符串值,推荐用equals()或equalsIgnoreCase()处理大小写,注意null值防护,如"str".equals(input)防止空指针异常。