-
活锁是线程持续运行但业务无进展的状态,表现为反复tryLock失败后主动让出并重试,如迎面行人不断侧身却无法错开;其根源在于对称退避逻辑导致负反馈循环,需通过随机退避、重试上限和使用JDK并发工具来破局。
-
HandlerInterceptor的preHandle不生效主因是未注册到SpringMVC拦截器链,需用@Component标记并实现WebMvcConfigurer重写addInterceptors方法显式注册。
-
在Thymeleaf模板中引用Java多级静态嵌套类(如L1.L2.L3.MyEnum)时,必须使用$符号替代.作为嵌套层级分隔符,否则会因类名解析失败而抛出“Typecannotbefound”错误。
-
答案是开发Java员工考勤管理系统需通过面向对象设计与数据库结合实现,包含员工管理、打卡记录、查询统计等功能。系统划分为员工管理、考勤打卡、记录查询、出勤统计和数据存储模块;采用MySQL设计employee和attendance表;Java分层结构包括Entity、DAO、Service和Main类;打卡功能通过LocalDate/Time记录并判断是否首次打卡;统计功能基于标准时间用SQL聚合分析迟到早退;初期通过控制台菜单交互,后期可扩展为图形界面;技术要点涵盖JDBC连接、PreparedStat
-
SpringMVC应用启动后访问控制器返回404,常因Spring框架各模块版本不兼容(如SpringWebMVC6.0.x与Thymeleaf3.1.x不匹配)或DispatcherServlet配置失效导致,需重点核查依赖版本一致性与组件注册完整性。
-
ByteBuffer.wrap()不等于入池,它仅创建共享原数组的非池化HeapByteBuffer;真正入池需用Netty等框架的PooledByteBufAllocator分配并拷贝数据。
-
Runnable描述“要做什么”,Thread负责“用什么去执行”;Runnable无start()方法,仅Thread可启动线程并回调其run();推荐优先使用Runnable以避免单继承限制、支持复用与线程池。
-
DelayQueue是Java中基于优先级队列实现的无界阻塞队列,用于存放Delayed对象,按延迟时间排序,仅当延迟到期后才能取出,适用于定时任务、缓存过期等场景。
-
抽象类用abstract修饰,不能实例化,用于定义通用结构和行为,子类必须实现其抽象方法;可含构造器、字段、普通方法等,适合“is-a”关系和共享代码场景。
-
商品类必须实现Comparable接口或提供Comparator,价格字段必须用BigDecimal,多条件排序用Comparator.comparing()链式调用,TreeSet去重需谨慎以防误删同价不同品商品。
-
使用@ControllerAdvice统一处理异常,通过自定义BusinessException区分业务与技术异常,结合@ExceptionHandler对不同异常返回对应状态码,并记录日志以提升排查效率。
-
Java的Base64类仅用于二进制与ASCII文本转换,非加密工具;禁用sun.misc.BASE64Encoder,须改用java.util.Base64并显式指定UTF-8字符集。
-
接口是契约声明而非模板,只定义行为(方法签名、常量、default/静态方法),不提供实现;解耦依赖接口而非具体类,需配合依赖注入(如构造器注入、工厂、ServiceLoader、Spring@Autowired)落地;default和private方法影响演进自由度,小而专的接口更利于组合与隔离;测试暴露设计缺陷,异常应抽象为业务语义而非技术细节。
-
NEW表示线程对象已创建但未调用start();RUNNABLE指已就绪或正在运行(含OS调度队列中等待);BLOCKED特指因synchronized锁竞争而挂起。
-
public可在任意位置访问,private仅限声明类内部使用,protected允许同包内所有类或不同包的子类自身实例访问(不可通过父类引用调用),默认修饰符仅限同包访问。