SpringCloud概述
Spring Cloud是微服务的统一解决方案,具备约定优于配置、组件丰富、开箱即用等特点,完美支持云原生。其版本以地铁站命名,避免与子项目冲突。Spring Cloud Alibaba融合阿里系中间件如Nacos、Sentinel、Seata等,弥补Netflix组件停更短板,经大规模验证,成为主流技术栈首选。
推荐书籍
本清单涵盖Java学习全路径经典书籍:从《Head First Java》入门到《Java编程思想》进阶,深入JVM、并发、算法、数据库及系统设计,覆盖开发必备核心知识,适合各阶段程序员提升技能。
为什么要单元测试
本文探讨单元测试如何让软件开发“加速”而非“踩刹车”。通过剖析测试体系演进、测试金字塔理念,阐明单元测试在提升代码质量、调试效率、重构信心和研发效能方面的核心价值,助力项目长期高效迭代。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,所有泛型信息被移除,仅保留原始类型(如Object或限定类型)。例如,List<String>和List<Integer>在运行时均为List,导致getClass()相等。反射可绕过泛型限制,因实际调用的是原始类型方法。类型检查发生在编译期,针对引用而非对象本身。获取泛型值时自动插入强制类型转换,无需手动处理。泛型不支持基本数据类型,静态成员不能使用类的泛型参数,因静态上下文独立于实例化类型。
为什么要单元测试
单元测试看似拖慢进度,实则是提升研发效率的关键。它通过快速反馈、精准定位问题、提升代码质量,支撑软件长期高效迭代,是现代开发不可或缺的基石。
MyBatis映射关系(1-1 1-n n-n)
本文介绍了MyBatis中四种核心关联映射:一对一(属性与字段映射)、一对多(如用户关联多个角色,使用`<collection>`)、多对一(如博客关联作者,使用`<association>`)和多对多(通过中间类实现,如用户与部门)。适用于解决实体间复杂关系映射问题。
ArrayList扩容机制
ArrayList添加元素时,先调用ensureCapacityInternal()确保容量,首次添加时默认扩容至10。add()实质为数组赋值。grow()扩容机制为:新容量=原容量1.5倍(位运算优化),不足最小需求则取需求值,最大不超过Integer.MAX_VALUE。size()用于集合元素计数,length为数组属性,length()为字符串方法。
需求开发人日评估
敏捷开发中,工时评估是关键环节。人日指1人完成任务所需天数,如1/人日即1人1天。开发3人日需求,自测约0.3~0.5倍,联调与测试各约0.5倍,发布约2小时。参考:Excel导入导出2人日,单表增删改查1人日,远程调用或MQ消费各3人日,需考虑依赖方进度。
为什么要单元测试
刹⻋是降低了⻋速还是提升了⻋速?我们通常认为写单测费⼒耗时、耽误研发进度,仿佛在给项⽬“踩刹⻋”。⼤家不妨带着这个问题往下看,详细聊聊为什么单元测试可以让软件开发跑得更快。
什么是单元测试
⼤家对于单测应该并不陌⽣,截取⼀段维基百科的定义帮⼤家唤醒⼀下记忆:
在计算机编程中,单元测试(Unit Testing)⼜称为模块测试,是针对程序模块(软件设计的最⼩单位)来进⾏正确性检验的测试⼯作。
单元测试的理念其实⼀直是编程的⼀部分。我们第⼀次编写计算机程序时,肯定会输⼊⼀些样本数据,查看其是否按照你的期望执⾏。如果结果不符合预期,你肯定在代码⾥穿插过⼤量的System.out.println
ArrayList扩容机制
本文深入解析Java中ArrayList的add及扩容机制。首次添加元素时,通过ensureCapacityInternal确保容量,默认扩容至10;每次grow()使容量变为原来的1.5倍,利用位运算提升效率。详述了size、length等易混淆概念的区别,帮助理解动态扩容原理。