Java

首页 标签 Java
# Java #
关注
263471内容
ArrayList扩容机制
ArrayList 添加元素时,先调用 `ensureCapacityInternal` 检查容量,首次添加时默认扩容至 10。`grow()` 方法实现自动扩容,新容量为原容量的 1.5 倍(位运算优化),确保添加高效。`length` 用于数组,`length()` 用于字符串,`size()` 用于集合。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,即泛型信息被移除,替换为原始类型(如Object或限定类型)。擦除后,List<String>和List<Integer>均变为List,导致 getClass() 相同,反射可绕过类型限制。原始类型由泛型定义决定,无限制则默认Object,有限制则取上限。擦除带来多态冲突、无法使用基本类型、静态成员不能引用类泛型等问题,编译器通过桥方法、自动强转等机制解决。类型检查基于引用,instanceof不可用于泛型类型判断,泛型方法可独立声明类型参数。
常见加载顺序
本示例展示了Java中各类代码块的执行顺序:静态代码块随类加载执行,仅一次;局部代码块在方法内按序执行;构造代码块每次创建对象前执行。输出顺序体现:静态 > 局部 > 构造。
Eclipse运行SSM/SSH项目教程
本教程介绍如何在Eclipse中配置并运行Java Web项目。涵盖JDK、Tomcat环境准备,项目导入(支持Maven与非Maven),Eclipse中绑定Tomcat服务器及项目部署步骤,最终实现本地启动与访问,适合初学者快速上手。
线程池
线程池通过复用线程减少创建销毁开销,提升多线程编程效率。Java中ThreadPoolExecutor管理核心线程、任务队列与拒绝策略;ScheduledThreadPoolExecutor继承前者,结合DelayedWorkQueue实现延时及周期任务调度,底层依赖堆结构维护任务执行顺序,确保高效准确的定时执行。
五、Executors工厂类详解
本文深入解析Java中Executors类提供的12种线程池创建方法,涵盖newFixedThreadPool、newCachedThreadPool、newWorkStealingPool及ScheduledExecutorService等,对比其核心参数、工作原理与适用场景,并结合源码分析任务调度机制、线程复用策略与队列行为,重点探讨周期任务调度延迟、死循环任务影响等实际问题,帮助开发者准确选择和使用线程池,提升并发编程能力。
|
3天前
|
从单机到集群:Redis部署全攻略
本文全面解析Redis四种核心部署方式:单机版部署简单适合开发测试;主从复制实现读写分离和数据备份;哨兵模式提供自动故障转移能力;Redis Cluster集群支持分片存储和横向扩展。文章详细阐述了每种方案的原理、部署步骤、Java代码实现及适用场景,并给出生产环境选型指南。通过对比各方案优缺点,帮助开发者根据业务需求(数据量、并发量、可用性要求等)选择最佳部署方式,同时提供参数优化建议和常见问题解决方案。
One Trick Per Day
初始化Map应避免默认容量导致的扩容开销,推荐使用Guava的`newHashMapWithExpectedSize`或手动计算初始容量。,应显式通过`ThreadPoolExecutor`定义核心参数。`Arrays.asList`返回不可变列表,不支持增删操作,且与原数组共享数据。遍历Map时优先使用`entrySet`,减少遍历次数提升性能;JDK8可用`forEach`。`SimpleDateFormat`非线程安全,禁用static修饰,建议使用ThreadLocal或JDK8新时间API。并发更新记录需加锁,可采用数据库乐观锁(version)或缓存锁机制,确保数据一致性。
生产环境发布管理
本文介绍大型团队如何通过自动化部署平台实现多环境(dev/test/pre/prod)高效发布,涵盖各环境职责、基于Jenkins+K8S的CI/CD流程、分支管理、一键发布与回滚机制,并结合Skywalking实现日志链路追踪,提升发布效率与问题排查速度。
为什么要单元测试
单元测试看似“踩刹车”,实则是让开发跑得更快。它提升代码质量、加速排错、增强重构信心,是高效研发的基石。从谷歌到阿里,实践证明:充分的单元测试能降低维护成本,支撑持续交付,让软件真正从“爬行”进化为“奔跑”。
免费试用