-
已实现基于ArrayList与Task类的命令行待办系统,支持add/list/done/delete/quit五种操作,含ID自增、内存管理、文本持久化(tasks.txt)及用户友好提示。
-
控制台项目初期不应分模块,建议前两周所有类平铺在一个包中;待核心流程跑通后再按职责切分,优先合并状态强耦合类;main()应避免裸while循环,改用命令解析+业务调用分离;状态统一由HallContext单例管理并序列化持久化;Windows下需统一编译、运行及IDE终端编码为UTF-8。
-
因为SequenceInputStream的构造器接收Enumeration,若该Enumeration在首次遍历后已耗尽,则后续文件无法读取;需确保每次调用都提供未耗尽的新Enumeration实例。
-
JDK15起默认禁用偏向锁,因其在多核高并发场景下收益为负:易触发STW撤销、内存开销大、短命对象导致初始化成本超收益,而轻量级锁+自旋已更优。
-
本文详解如何用printf的格式化字符串精准控制Java控制台或文件输出的列宽、对齐方式与间距,解决因字段长度不一导致的表格错位问题,并提供可直接复用的健壮格式掩码设计方法。
-
substring的两个参数是索引位置,beginIndex为起始保留位置(含),endIndex为首个不保留位置(不含),区间为左闭右开。
-
FixedThreadPool适合CPU密集型任务,线程数固定且资源可控,但遇IO阻塞易导致队列堆积和拒绝异常;CachedThreadPool适合短平快异步任务,但高并发下易OOM;SingleThreadExecutor仅保证串行执行,不保证线程安全;ScheduledThreadPoolExecutor是唯一可靠的定时方案,需注意任务幂等性和延时策略选择。
-
Java中用static修饰的方法叫静态方法,它属于类本身,不依赖对象实例就能调用,只能直接访问静态成员,不能使用this或super,也不能调用非静态成员。
-
死锁典型模式是多线程以不同顺序获取同一组锁,导致相互等待;预防需统一加锁顺序、使用tryLock超时机制及lockInterruptibly响应中断,并辅以jstack和ThreadMXBean检测。
-
JavaSwing开发备忘录应用需手动搭建:用JFrame作窗口、JTextArea编辑、JFileChooser选文件,配合FileReader/FileWriter读写UTF-8文本;须用JScrollPane支持滚动,pack()布局,EDT外异步I/O,窗口关闭监听防丢数据,并采用临时文件原子保存。
-
StringJoiner原生支持分隔符、前缀和后缀,创建时指定三参数即可自动包裹元素;空集合返回前缀+后缀(如“[]”),无需判空;支持链式调用、merge合并及与Collectors.joining无缝对应。
-
CompletableFuture异步异常处理需可感知、可分类、可恢复:exceptionally()用于统一兜底;handle()支持成功/异常双路径精细化处理;whenComplete()专注副作用清理;组合策略实现分层捕获与主动恢复。
-
Semaphore的核心作用是限制并发数而非保证线程安全;它通过acquire/release控制资源配额,需成对调用且置于finally块;公平模式启用FIFO排队防饥饿但性能略低;acquire(n)要求原子性扣减n个许可。
-
Stream.filter不改变原List,因返回新Stream且惰性求值;必须collect才能落地结果,toList()返回不可变列表,需可变时用toCollection(ArrayList::new);filter不自动处理null,应显式检查。
-
静态方法中不能使用this,因为this指向具体对象实例,而静态方法属于类本身、无需实例即可调用,其字节码签名不含this参数,编译期即被禁止。