-
选用ArrayList而非普通数组,因其支持动态扩容及add()、remove()等便捷方法;商品类需定义id、name、price、quantity并实现Serializable;购物车用ArrayList<Product>泛型声明,增删改查需按ID操作、合并数量、避免强转与并发问题。
-
本文介绍在SpringREST场景下,针对一个父请求包含10–50个动态子请求的场景,通过线程安全的并行HTTP调用(如CompletableFuture或并发集合)显著提升响应性能,并解决parallelStream()中无法修改非final变量的核心问题。
-
优先用if判断权限,因其可安全处理null;非空固定角色可用switch但需default;字符串比较用Objects.equals或equalsIgnoreCase;权限逻辑应分层,Controller做粗粒度校验,Service处理行级规则;推荐用enum替代String提升类型安全与可维护性。
-
字符串拼接有多种方式:简单场景用+,循环中推荐StringBuilder,线程安全选StringBuffer,集合拼接用String.join或Collectors.joining,格式化用String.format或.formatted,Stream场景用joining收集器。
-
Collection接口与原生数组操作对象完全不同:Collections只能操作Collection实现类,Arrays专为原生数组设计;排序行为、类型支持、线程安全及不可变包装等方面存在显著差异。
-
不用——但写代码、编译、调试仍需本地JDK;Docker镜像自带JDK仅解决运行时隔离,IDE和mvn等构建工具依赖本地JDK;省掉的是服务器JDK安装,非开发机。
-
封装的核心是接口与实现分离,而非仅用private修饰符;它要求外部仅通过稳定接口操作,无需知晓内部存储、计算或状态维护细节,如BankAccount的deposit()和getBalance()方法。
-
ReentrantLock提供比synchronized更灵活的线程同步控制,支持可中断、超时获取、公平锁及Condition协作,需显式加锁并确保finally中释放,适用于复杂并发场景。
-
CompletableFuture解决了传统Future无法链式处理、组合任务、非阻塞回调、异常统一处理等硬伤,支持thenApply/thenCompose/anyOf/allOf等编排能力,并提供handle/whenComplete/exceptionally等语义明确的回调机制。
-
接口是公开、抽象、可组合的行为契约,表达“能力”而非“身份”,支持多实现与向后兼容演进;abstractclass表达纵向类型继承,仅单继承。
-
Safepoint是JVM中线程可安全暂停的特定位置,用于保障GC可达性分析等STW操作的准确性,并支撑类重定义、偏向锁撤销、反优化及线程诊断等运行时服务,通过协作式轮询机制实现,避免强制中断。
-
Arrays工具类提供排序、查找、比较、填充和复制等操作,提升开发效率。1.sort()支持基本类型和对象数组排序,对象数组可结合Comparator实现降序;2.binarySearch()需在有序数组上执行,否则结果不可预测,查找失败返回负值表示插入点;3.equals()比较一维数组内容,deepEquals()用于多维数组深度比较;4.fill()可全量或范围填充数组;5.copyOf()和copyOfRange()简化数组复制。注意使用前提如排序状态和引用类型匹配,避免误用。
-
ArrayIndexOutOfBoundsException是运行时异常,发生在访问数组越界时,可通过try-catch捕获或索引检查预防。
-
抽象类可包含抽象方法、具体方法、成员变量、构造方法、静态成员、内部类、final方法及私有或受保护方法,支持代码复用与多态。
-
BlockingDeque是Java中支持双端阻塞操作的队列接口,常用实现为LinkedBlockingDeque,适用于多线程环境下的生产者-消费者模型。1.它提供add、offer、put等插入方法,对应异常、返回false和阻塞等待三种失败处理方式;移除和检查操作也遵循类似命名规则。2.基本使用示例展示了从头部和尾部添加与取出元素的过程。3.多线程示例中,生产者通过putLast向尾部添加任务,消费者用takeFirst从头部获取并处理,实现线程间安全协作。4.使用建议包括设置合理容量防内存溢出,优