-
正确计算区块哈希需严格按prevHash、data、timestamp、nonce顺序拼接字符串并用SHA-256计算,统一UTF-8编码,禁用toString()或hashCode();PoW中nonce应使用long类型并设最大尝试次数;链式校验须确保prevHash准确传递且hash字段不可变。
-
FileOutputStream的append参数决定写入是否追加到文件末尾而非覆盖,true时以O_APPEND方式打开文件确保每次write自动定位末尾,false则从开头写并覆盖;它仅在构造时生效,不可动态修改。
-
应使用net.sf.ehcache:ehcache:2.10.9并排除SpringBoot自动配置的Ehcache3,将ehcache.xml放入classpath根路径,确保CacheManagerBean名为cacheManager,且@Cacheable用于public方法并经Spring代理调用。
-
使用ScheduledExecutorService可实现任务延时或周期执行,并复用线程池资源。通过newScheduledThreadPool创建,支持schedule、scheduleAtFixedRate和scheduleWithFixedDelay三种调度方式。需调用shutdown()关闭线程池,配合awaitTermination确保优雅停机,紧急时用shutdownNow()。自定义ThreadFactory可提升线程名可读性便于调试。任务内需捕获异常防止调度终止,避免长任务影响调度精度,耗
-
Java中异常是否触发事务回滚取决于异常类型、事务配置及处理方式:默认仅RuntimeException和Error导致回滚;checked异常需显式配置rollbackFor;捕获后未重抛或未设setRollbackOnly则事务不回滚;非public方法上@Transactional无效;传播行为如REQUIRES_NEW使内层异常不影响外层事务。
-
Java不手动释放内存是因为依赖GC自动管理堆和元空间内存,避免循环引用、野指针等问题;GC不处理栈、直接内存等区域,System.gc()仅是建议且通常被忽略。
-
main方法必须是static的,因为JVM启动时未创建任何对象,需直接通过类名调用;其publicstaticvoidString[]签名是JVM规范强制要求,确保启动过程简单、确定且生态兼容。
-
TreeMap能自动排序因其底层采用红黑树,按key自然顺序或Comparator规则维护节点;key需实现Comparable或提供Comparator,不支持nullkey,非线程安全。
-
JavaWeb项目常见异常分五类:请求处理、数据库交互、配置加载、并发操作、安全校验;主因是环境配置或资源管理疏忽,定位需优先查看栈顶信息并结合日志。
-
Java变量的作用域与生命周期由四类作用域决定:类级(static变量,方法区,应用期)、对象级(实例变量,堆,对象期)、方法级和块级(局部变量,栈,块期内),对应不同内存位置与管理机制。
-
Java中Integer缓存池是享元模式的典型应用:通过预缓存-128~127范围内的Integer对象实现共享复用,valueOf()为工厂方法,newInteger()绕过缓存;该范围权衡内存开销与命中率,且仅对valueOf及自动装箱生效。
-
单等号(=)是赋值运算符,用于将右侧值存入左侧变量;双等号(==)是关系运算符,用于比较相等性并返回布尔值,二者作用、使用场景及行为(如==存在隐式类型转换)截然不同。
-
AbstractRoutingDataSource不能直接new使用,因其是抽象类,需继承并重写determineCurrentLookupKey(),配置targetDataSources和defaultTargetDataSource,并调用afterPropertiesSet(),否则启动报错或运行时NPE。
-
ReentrantReadWriteLock通过读写锁分离提升高读低写性能:读锁共享可重入,写锁独占可重入,读写互斥但读读不互斥;支持写锁降级为读锁,禁止读锁升级;适用于缓存等场景。
-
Java多环境配置核心是同一套代码读取不同配置值,关键在配置分离与激活机制;通过spring.profiles.active指定激活profile以加载对应application-{profile}.yml,支持多profile叠加,需严格遵循命名与路径规范,敏感配置应外置并用占位符注入,Bean级条件装配用@Profile注解,注意大小写一致性。