- 一个是运算符一个是方法
- ==是运算符,当两个变量使用==号相比时,当变量为基本类型的时候比较的是变量的值,当变量为引用类型时比较的是变量的内存地址
- equals方法比较的是对象的内容,此方法存在于Object类中,如果子类实现了此方法就使用子类的方法,如何没有则使用Object类中方法相当于==
文章作者: Stone
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 From Zero to Hero!
相关推荐
2025-06-10
java学习路线
学习Java的路线有很多,但是大多数人都建议从Java SE基础开始,然后学习MySQL、JDBC和Java Web1。在学习过程中,一定要理论结合实践,不要只看书,一定要多动手看代码、写代码2。可以通过看书和视频结合的方式学习,视频会更生动,不会那么枯燥2。 在掌握了基础知识后,可以学习一些更高级的技术,比如Maven、Spring、SpringMVC、MyBatis、Redis、SpringBoot和SpringCloud等3。在学习过程中,可以参考一些项目实战,以便更好地理解和应用所学知识。
2025-12-05
高并发不是开更多线程:Spring Boot 应对上万并发的现代实践指南
高并发不是开更多线程:Spring Boot 应对上万并发的现代实践指南 在构建 Web 应用时,我们常听到“高并发”这个词。很多人第一反应是:“是不是要开很多线程?”——这是一个根深蒂固但过时的误解。 现代高并发系统早已超越“一个请求一个线程”的模型。本文将带你厘清高并发的本质,并介绍在 Spring Boot 中应对上万并发(C10K+)的三种主流方案:从传统优化、响应式编程,到 Java 21 的革命性新特性——虚拟线程(Virtual Threads)。 一、误区澄清:Web 框架真的为每个连接开一个线程吗? 早期 Java Web 容器(如 Tomcat 在 BIO 模式下)确实采用 “一个请求 = 一个线程” 的阻塞 I/O 模型。但这在高并发下会遇到严重瓶颈: 默认线程池仅 200 个线程; 每个线程约占用 1MB 栈内存,1 万个线程 ≈ 10GB 内存; 线程上下文切换开销巨大; 阻塞操作(如数据库查询)会浪费线程资源。 ❌ 结论:盲目开大量线程不可行,也不被现代框架推荐。 二、方案一:传统模型优化(适用于中小规模并发) 如果你使用 Spring...
2025-06-10
JVM
Java虚拟机(JVM, Java Virtual Machine)是Java语言的核心组件,它是一个抽象的计算机,专门为执行Java字节码而设计。Java源代码经过Java编译器编译后生成与平台无关的字节码文件(.class文件),这些字节码可以在任何安装了Java运行环境(JRE)的设备上运行,这是因为不同的平台上都有对应的JVM实现来解释或即时编译这些字节码。 JVM的主要作用和特征包括: 跨平台性: JVM为Java程序提供了跨平台的能力。开发者只需要编写一次Java代码,就可以在任何支持Java的系统上运行,这得益于JVM对不同操作系统和硬件架构的支持以及统一的字节码格式。 类加载机制: JVM通过类加载器(ClassLoader)将.class文件从硬盘加载到内存中,进行验证、准备、解析和初始化等步骤,使得类可以被JVM识别并使用。 内存管理: JVM内部有自己的一套内存模型,包含方法区、堆、栈、程序计数器和本地方法栈等多个区域。JVM负责自动管理内存分配与回收,尤其是垃圾收集机制(Garbage...
2025-06-10
JVM性能调优
JVM性能调优主要涉及内存管理、垃圾回收、线程管理和编译优化等方面,以下是一些常见的调优策略: 内存配置与调整: -Xms 和 -Xmx 参数用于设置JVM堆内存初始大小和最大大小,合理设置可避免频繁的内存扩容和缩容带来的性能损耗。 -Xmn 设定年轻代大小,调整新生代、老年代的比例有助于优化垃圾回收效果。 -XX:PermSize 和 -XX:MaxPermSize (在Java 8及以前版本中)或者 -XX:MetaspaceSize 和 -XX:MaxMetaspaceSize(Java 8及以后版本)控制元空间/永久代的大小。 垃圾回收调优: 选择合适的垃圾收集器,比如G1、ZGC、Shenandoah等,并根据应用特点调整其相关参数,如 -XX:+UseG1GC 等。 调整年轻代晋升阈值 -XX:NewRatio 和 -XX:SurvivorRatio,优化对象在各代间的分布。 对于并发标记扫描(CMS)垃圾收集器,可以调整 -XX:CMSInitiatingOccupancyFraction 来设定触发并发收集的堆占用率。 线程优化: 合理设置...
2025-06-10
Java虚拟机(JVM)内存模型
Java虚拟机(JVM)内存模型,也称为Java内存模型(Java Memory Model, JMM),是Java程序在运行时数据存储和交互的抽象模型。它定义了线程如何共享和交互内存区域中的变量,以及如何确保并发环境下的内存一致性。 JVM内存主要分为以下几大区域: 堆内存 (Heap) 堆是所有线程共享的一块内存区域,主要用于存放对象实例。所有的对象都在堆中分配内存。 当一个对象不再被任何引用指向时,垃圾回收器会对其进行回收以释放内存。 根据对象生命周期的不同,堆内存通常又细分为新生代、老年代等区域,并采用不同的垃圾回收策略进行管理。 方法区 (Method Area/元空间 Metaspace) 方法区同样是一个各个线程共享的内存区域,存储已经被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 在Java 7及以前版本,方法区有时被称为“永久代”,但在Java 8及之后,HotSpot VM移除了永久代,将类元数据存放在本地内存的元空间中。 虚拟机栈 (Java...
2025-06-10
字节码与执行引擎
Java虚拟机(JVM)字节码与执行引擎是Java平台实现“一次编写,到处运行(Write Once, Run...