-
Thread.sleep让兔子“睡过头”是因为它粗暴暂停线程且不释放锁,若写在循环开头则每轮固定休眠,无法模拟随机懒惰;应改用Random生成波动休眠时间,并避免在synchronized块中调用。
-
答案:基于Servlet+JSP+JDBC实现用户注册登录,需设计用户表并加密存储密码;注册时校验数据、检查用户名唯一性并用BCrypt加密;登录时通过查询数据库并比对哈希密码,验证成功后创建会话;同时应使用PreparedStatement防SQL注入、校验输入、启用HTTPS等安全措施。
-
HexFormat.parseHex无法解析带空格字符串,因默认只接受连续十六进制字符;需预处理去除空格等非十六进制字符,且输入长度须为偶数。
-
String.isEmpty()仅判断长度是否为0,对null抛异常;StringUtils.isBlank()则统一处理null和全空白字符,语义更准、更安全。
-
SpringBoot2.x默认仅暴露health和info端点;其他端点需显式配置exposure.include才启用,禁用通配符,应明确列出所需端点并配合SpringSecurity单独配置/actuator/*路径的认证授权。
-
正确使用逻辑与短路运算符&&可提升性能并避免异常。当第一个操作数为false时,后续操作不会执行,因此应将空值检查等轻量判断放左侧,方法调用或复杂计算放右侧,如if(obj!=null&&obj.getValue()>0)可防止NullPointerException。与非短路运算符&不同,&&仅在必要时计算右侧,而&始终执行两边,易导致异常或性能浪费。此外,不可依赖右侧表达式的副作用(如日志输出),因其可能不被执行。合理组织条件顺序能确保代码安全高效,核心原则是:前面为假,后面不看。
-
String.trim()仅处理ASCII空白字符('\u0000'–'\u0020'),不识别Unicode空白如全角空格'\u3000'或零宽空格'\u200B';String.strip()自JDK11起支持全部Unicode空白,调用Character.isWhitespace(),适用于多语言和用户输入场景。
-
File.listFiles()返回null而非空数组,常见于权限不足、路径不存在或非目录,需判空再遍历;Windows路径反斜杠需转义为“\\”或用正斜杠;replaceAll()第一参数是正则,字面量特殊字符须双重转义,简单替换应使用replace();renameTo()静默失败,跨磁盘移动应改用Files.move()并捕获IOException。
-
本文详解Maven项目中如何正确声明和解析仅提供POM文件(不含JAR)的依赖,避免“Couldnotresolvedependencies”错误,并提供type=pom的规范用法、常见误区及工程级替代方案。
-
受检异常包装本质是类型转换而非简单套壳,需保留原始堆栈、语义清晰、不丢失上下文;必须用带Throwable构造参数的方式包装,显式声明构造器,按SQL状态码/错误码分类转换,日志须在包装前用支持多级cause的方式记录,全局处理器避免二次包装,对外API禁止暴露原始SQL或堆栈。
-
能混用,但XML优先级高于注解,同名方法存在XML时注解自动失效;需按功能域切分使用,确保namespace与接口全限定名严格一致,并正确配置XML加载路径。
-
Java编译器按静态类型和实参字面量在编译期确定重载方法,分三步匹配:精确匹配→装箱/拆箱→可变参数;null传参会因多引用类型精确匹配而报歧义错误。
-
Swing定时任务需用javax.swing.Timer或SwingUtilities.invokeLater确保EDT更新;提醒弹窗应传null父组件并调用setAlwaysOnTop(true);日程数据推荐Properties文件。
-
反射调用接口默认方法必须使用实现类的Class对象而非接口Class,因JVM禁止在接口类型上调用invokeVirtual;需用getDeclaredMethod获取方法,传入实现类实例调用,且无需setAccessible(true)。
-
macOS中Java环境失效主因是路径配置错误、Shell未加载或sudo重置环境;需依次检查java-version、$JAVA_HOME、/usr/libexec/java_home-V等命令输出,再按zsh配置、Maven路径冲突、sudo环境隔离三类问题分别修复。