Java

首页 标签 Java
# Java #
关注
263471内容
七、ThreadLocal
ThreadLocal是线程本地变量,为每个线程提供独立的变量副本,避免线程间竞争。每个线程可独立操作自己的数据,互不干扰。适用于如任务耗时统计等场景,提升性能。子线程无法继承父线程的ThreadLocal值,但可通过InheritableThreadLocal实现数据传递。底层通过ThreadLocalMap存储,线程退出时自动清理,也可手动remove释放内存。
Linux
本文介绍如何将SpringBoot项目打包并部署至Linux服务器。包含工程搭建、JDK安装配置、应用上传启动及通过心跳接口验证服务健康状态的完整流程,适用于Java应用的Linux部署测试场景。(238字)
5-MongoDB实战演练
基于SpringDataMongoDB实现头条文章评论功能,涵盖增删改查、按文章ID查询及评论点赞。通过MongoTemplate优化点赞操作,提升性能,并利用索引提高查询效率,构建高效稳定的微服务模块。
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等,对比其核心参数、工作原理与适用场景,并结合源码分析任务调度机制、线程复用策略与队列行为,重点探讨周期任务调度延迟、死循环任务影响等实际问题,帮助开发者准确选择和使用线程池,提升并发编程能力。
|
4天前
|
从单机到集群:Redis部署全攻略
本文全面解析Redis四种核心部署方式:单机版部署简单适合开发测试;主从复制实现读写分离和数据备份;哨兵模式提供自动故障转移能力;Redis Cluster集群支持分片存储和横向扩展。文章详细阐述了每种方案的原理、部署步骤、Java代码实现及适用场景,并给出生产环境选型指南。通过对比各方案优缺点,帮助开发者根据业务需求(数据量、并发量、可用性要求等)选择最佳部署方式,同时提供参数优化建议和常见问题解决方案。
免费试用