-
HashMap最适合按学号查学生信息,因学号是天然主键;需重写equals/hashCode,key建议用String,初始化预估容量,查询返回Optional更安全,模糊查应另建索引或用专用工具,多线程需用ConcurrentHashMap或不可变视图,缓存失效策略比集合选型更关键。123 收藏 -
args是main方法接收命令行参数的字符串数组,由JVM在启动时根据空格(或双引号包裹的字符串)分割用户输入自动创建,未传参时为长度为0的非null数组。123 收藏 -
Optional.stream()返回0或1元素的Stream,用于安全接入流式处理链;它仅适用于非nullOptional,而Stream.ofNullable()可直接处理任意引用类型包括null。123 收藏 -
内存屏障是JVM插入的CPU指令,用于约束重排序、强制刷缓存、保障可见性与有序性;它解决多线程下因storebuffer和指令乱序导致的读旧值或依赖变量不同步问题。123 收藏 -
Java静态块执行时锁的是该类的Class对象,JVM在首次主动使用类时自动加锁,仅对未完成初始化的类生效,初始化完成后释放;staticfinal编译期常量不触发初始化;Class.forName默认初始化而X.class不初始化;多ClassLoader下锁互不影响。123 收藏 -
本文详解为何直接用readLine().getBytes(ISO_8859_1)再构造UTF-8字符串会导致乱码,揭示字节与字符编码的转换本质,并提供安全、可靠的编码转换方案。123 收藏 -
因为现代应用多核高并发、短期对象增多,偏向锁的单线程优化假设失效,撤销需STW导致延迟抖动;实测禁用后99%延迟降5%-10%,且维护成本高、代码复杂易出错。123 收藏 -
在Java中使用Jedis操作Redis,需引入依赖、建立连接并进行数据操作。1.引入Maven依赖:redis.clients:jedis:4.0.1或Gradle配置;2.创建Jedis实例连接Redis,远程访问需配置bind和密码认证;3.执行字符串、哈希、列表等常见数据类型操作;4.使用JedisPool连接池管理连接以提升性能,并合理配置连接参数。123 收藏 -
Files.write()写入字节数组需传Path对象,自动创建/清空文件但不建父目录,须预调Files.createDirectories();默认覆盖,追加需显式指定APPEND;大文件易OOM,应分块写。123 收藏 -
应优先用Lambda替代匿名内部类,仅在需访问外部类私有字段、需自引用且只用一次时才用newSomeInterface(){...}。123 收藏 -
Java中不能靠抛异常实现优雅退出,因为异常机制非流程控制工具,会掩盖错误、破坏调用栈、干扰监控;应使用System.exit(int)明确退出意图,或采用分层返回与外部信号协调。123 收藏 -
StampedLock的乐观读通过stamp验证替代加锁,仅在冲突时退化为悲观读;适用于读多写少、读操作极轻量场景,吞吐量可达ReentrantReadWriteLock的3–4倍。123 收藏 -
%s对应任意对象(含null),%d仅接受整数类型,%f接受浮点类型;参数类型与顺序必须严格匹配,否则抛IllegalFormatConversionException或MissingFormatArgumentException。123 收藏 -
Lambda配合CountDownLatch可简化多线程等待逻辑,需共享同一final实例、在finally中调用countDown并使用带超时的await避免永久阻塞。123 收藏 -
Java中的方法参数传递始终是值传递,基本类型传递值副本,引用类型传递引用副本,方法内可修改对象状态但无法改变原引用指向,正确理解这一机制可避免常见误区。122 收藏