-
MessageDigest不能加密,只生成不可逆的固定长度摘要;SHA-256是推荐算法,MD5和SHA-1已不安全;需注意线程不安全、编码一致性和digest()自动重置状态等关键细节。
-
隐式类型转换是Java中自动将小范围数据类型向大范围类型转换的过程,遵循byte→short→int→long→float→double的顺序,char可转为int及以上类型;赋值和运算时低精度类型会自动提升为高精度类型,如int与double运算时int被提升为double;byte、short、char在运算中默认提升为int,不可直接赋回byte等窄类型;该转换仅限安全方向,反向需强制转换。
-
答案:NoSuchFieldException在Java反射访问不存在字段时抛出,常见于拼写错误或访问权限不当。通过try-catch捕获异常、封装字段存在性检查方法及设计层面预防(如使用常量、避免硬编码)可有效提升程序健壮性。
-
安装JDK后配置JAVA_HOME环境变量并选择IntelliJIDEA或VSCode等IDE,最后通过编译运行HelloWorld程序验证Java开发环境。
-
线程安全指多线程并发访问时程序仍保持正确行为,需通过同步机制避免数据不一致。常见方式包括synchronized、volatile、显式锁、原子类和ThreadLocal;并发工具如ConcurrentHashMap、BlockingQueue等提升效率;合理使用锁顺序和高级工具可避免死锁并优化性能。
-
static是绑定到类本身的内存与语义标记,字段和方法在类加载准备阶段分配内存并设默认值,初始化阶段执行<clinit>按文本顺序赋值;static方法无this,故不能直接访问非static成员。
-
Java分页查询核心是合理协同分页参数传递、SQL构造与结果封装:1.前端传page/size需校验并规范封装;2.数据库优先用limit+offset,大数据量改游标分页;3.Java层应返回含总数、总页数等元信息的封装对象。
-
Java有8种基本数据类型,分为四类:整数类型(byte、short、int、long)、浮点类型(float、double)、字符类型(char)和布尔类型(boolean),它们直接存储在栈内存中,是数据处理的基础。
-
伪共享是多核CPU缓存一致性导致的性能问题:同一缓存行(64字节)内不同变量被多线程修改时,引发频繁缓存行无效化;Java中典型表现为相邻long字段“连坐”,可用@Contended注解或手动long填充解决。
-
Java项目单元测试环境配置的核心是JUnit5+Maven/Gradle+IDE集成,需添加junit-jupiter依赖(scope为test)、遵循src/test/java目录约定、测试类以Test结尾、方法用@Test标注且publicvoid无参,运行assertTrue(2+2==4)验证成功即就绪。
-
break终止整个循环,continue跳过本次迭代;二者均不改变循环条件,支持带标签用于多层嵌套,且只能在循环或switch内使用。
-
可以,Java中构造方法支持重载,判断依据仅为参数列表(类型、数量、顺序)不同;修饰符、访问权限等差异不构成重载;this()调用必须为首行且唯一;默认无参构造在自定义构造后消失。
-
Keycloak升级至20.0.3后,因移除/auth路径前缀导致RESTAPI调用返回404错误;修复方式是更新KeycloakAdminClient的基础URL,显式剔除/auth。
-
答案:通过设计Book类和BookInventory管理类,实现图书信息存储与库存增减、查询及统计功能。示例中添加图书后进行补货、借出操作,最终输出所有图书信息和总库存量,支持扩展如持久化、预警等。
-
字节码偏移量是javap-c输出中每条指令前的数字,表示该指令在方法字节码数组中的下标(从0开始),异常表中的from、to、target均为此偏移量;from包含、to不包含,范围为[from,to),用于JVM异常跳转定位。