java教程技术文章
-
使用MyBatisPlus代码生成器可大幅提升开发效率。1.引入相关依赖,包括mybatis-plus-generator、freemarker及数据库驱动;2.编写配置类设置数据源、全局配置、包名及策略,用于生成实体类、Mapper、Service和Controller;3.可选自定义模板以满足编码风格需求;4.注意常见问题如数据库连接、字段映射、注释生成等,确保配置准确以提升代码生成效果。371 收藏 -
@TransactionalEventListener默认不触发异步行为,因其本质是事务同步器而非线程池调度器,事件监听在主线程中同步执行,仅延后至事务提交后(AFTER_COMMIT);真异步需手动提交到线程池。433 收藏 -
ArrayList.trimToSize()可将内部数组容量缩至当前元素个数,释放冗余内存;适用于数据加载完成后、仅只读访问、内存敏感且数据量大的场景,调用后数组长度等于size,多余空间可被GC回收。309 收藏 -
Java规范未规定匿名类编号的生成规则,不同编译器(如javac与EclipseJDT)对同一匿名类可能生成不同数字后缀(如Foo$1vsFoo$6),因此依赖getClass().getName()作为持久化标识会导致兼容性问题。109 收藏 -
事务消息启动前须确认三件事:一要先启动NameServer再启动Broker并正确配置-n参数;二要设置brokerIP1为真实可访问IP而非127.0.0.1;三需JDK8+且JVM元空间配置合理避免OOM。130 收藏 -
不一定。Java对象排序仅在使用Collections.sort()或Arrays.sort()且不传Comparator,或放入TreeSet/TreeMap时才需实现Comparable;否则可用Comparator,尤其适合临时、多维或第三方类排序。482 收藏 -
异常链的核心价值在于重建可追溯的因果路径,通过显式关联(如raise...from)保留根因堆栈,解决异步调用中异常静默丢失、跨服务上下文割裂、日志监控信息不全及分层抽象失真等问题。100 收藏 -
不该用Stack做撤销逻辑,因其继承Vector导致无谓同步拖慢性能且违背组合优于继承原则;应使用ArrayDeque,用push()/pop()严格遵循LIFO,封装操作对象并快照必要状态。117 收藏 -
ArrayList基于动态数组,适合随机访问和读取频繁场景;LinkedList基于双向链表,适合频繁增删操作;日常优先选ArrayList,特定需求如队列用LinkedList。252 收藏 -
List<?extendsNumber>只读不可写,因编译器仅保证get返回Number子类但不确定具体类型;List<?superInteger>可写Integer但get只能赋给Object,因底层类型只能确定为Integer父类。191 收藏 -
ArrayDeque.removeFirstOccurrence()仅移除队列中第一个匹配的指定元素,返回true或false;不处理重复项批量清理,需配合removeIf()、循环调用或流式过滤实现全量删除。249 收藏 -
Java中PriorityQueue通过自定义Comparator实现动态权重排序,支持Lambda、方法引用等方式;需注意其非线程安全、遍历无序、修改已入队元素权重不触发重排序等特性。168 收藏 -
相同单词未合并是因为未统一大小写、未清除标点及空格残留,导致“Hello!”与“hello”等被视为不同键;需toLowerCase()、正则清理、判空后计数,并慎用Scanner分隔符。164 收藏 -
default是switch语句中捕获所有未被case匹配值的兜底分支,位置灵活但建议置末尾;需显式break防穿透;处理运行时未覆盖值,承担异常上报、降级、报错等健壮性职责。478 收藏 -
MyBatis嵌套查询(select)触发N+1问题,因其先查主表1次,再对每条主记录执行1次子查询;例如查100个订单关联用户,共执行101条SQL,导致连接池耗尽、慢查询增多。217 收藏