一、Java核心基础
1、语言特性与平台优势
Java作为一门经典的编程语言,具备以下显著特点:
1. 语法简洁:类C语法设计降低学习门槛
2. 纯面向对象:支持封装、继承、多态三大特性
3. 跨平台能力:基于JVM实现"一次编写,到处运行"
4. 并发支持:内置多线程编程模型
5. 健壮性:自动内存管理与完善的异常处理机制
6. 安全防护:提供多层级的安全控制体系
7. 高效执行:JIT编译器优化运行性能
8. 网络编程:丰富的网络API支持
9. 混合执行:编译与解释并存的运行方式
深度解析:
"Write Once, Run Anywhere"的理念曾让Java风靡一时。但随着容器技术的发展,跨平台已不再是Java的独家优势。如今Java最强大的竞争力在于其完善的生态系统,包括:
- 丰富的开源库支持
- 成熟的开发框架
- 稳定的企业级解决方案
- 活跃的开发者社区
1.1、Java平台版本对比
- Java SE:标准版,包含语言核心类库和基础组件,适合开发桌面应用和简单服务端程序
- Java EE:企业版,在SE基础上增加企业级开发规范(如Servlet、JPA等),适用于构建分布式系统
- Java ME:微型版(已逐渐淘汰),曾用于嵌入式设备开发
2、JVM体系解析
2.1、核心组件关系
JVM:Java虚拟机,负责执行字节码。不同操作系统有对应的JVM实现,确保跨平台兼容性。
JRE:Java运行时环境,包含运行Java程序必需的JVM和核心类库。
JDK:Java开发工具包,在JRE基础上增加编译器(javac)、调试工具等开发组件。
从JDK 9开始引入模块化系统,开发者可以使用jlink工具定制运行时环境,只包含程序所需的模块,显著减小应用体积。
3、字节码技术
字节码(.class文件)是JVM可理解的中间代码,具有以下优势:
- 平台无关性
- 执行效率优于纯解释型语言
- 支持即时编译优化
执行流程:
1. Java源码编译为字节码
2. 类加载器加载字节码
3. 解释器逐行执行
4. 热点代码由JIT编译为机器码缓存
这种混合执行模式平衡了启动速度和运行效率。
二、面向对象编程
1、三大核心特性
1.1 封装
通过访问修饰符控制对象成员的可见性,示例:
class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
if(name != null) {
this.name = name;
}
}
}
1.2 继承
实现代码复用和扩展:
class Animal {
protected String name;
public void eat() {
System.out.println(name + " is eating");
}
}
class Dog extends Animal {
public void bark() {
System.out.println(name + " is barking");
}
}
1.3 多态
同一接口的不同实现:
interface Shape {
void draw();
}
class Circle implements Shape {
public void draw() {
System.out.println("Drawing circle");
}
}
2、方法重载与重写
重写(Override):
- 子类重新定义父类方法
- 必须保持相同的方法签名
- 访问权限不能更严格
- 不能抛出更宽泛的异常
重载(Overload):
- 同一类中同名不同参的方法
- 与返回值类型无关
- 参数类型、数量或顺序必须不同
三、集合框架
1、ArrayList vs LinkedList
ArrayList:
- 基于动态数组实现
- 随机访问效率高(O(1))
- 尾部操作高效,中间插入/删除较慢
LinkedList:
- 基于双向链表实现
- 插入删除效率高(O(1))
- 随机访问需要遍历(O(n))
2、HashMap原理
数据结构:
- JDK8前:数组+链表
- JDK8后:数组+链表/红黑树(链表长度>8时转换)
解决哈希冲突:
- 链地址法:冲突元素组成链表
- 再哈希法:使用第二个哈希函数
- 开放定址法:寻找下一个空槽
四、并发编程
1、线程生命周期
状态转换:
NEW → RUNNABLE → BLOCKED/WAITING/TIMED_WAITING → TERMINATED
2、线程安全解决方案
- 同步代码块:
synchronized(lock) {
// 临界区代码
}
- 并发工具类:
- CountDownLatch
- CyclicBarrier
- Semaphore
五、JVM调优
1、内存区域划分
- 方法区:存储类信息、常量等
- 堆:对象实例存储区
- 虚拟机栈:方法调用栈帧
- 本地方法栈:Native方法调用
- 程序计数器:线程执行位置指示器
2、GC算法
- 标记-清除:产生内存碎片
- 复制算法:空间利用率低
- 标记-整理:综合性能较好
- 分代收集:新生代(复制)、老年代(标记-整理)
六、Spring生态
1、Spring Boot优势
- 自动化配置
- 内嵌服务器
- 起步依赖管理
- 生产级监控端点
- 无代码生成/XML配置
2、Spring Cloud组件
- 服务注册:Eureka/Nacos
- 负载均衡:Ribbon
- 服务调用:Feign
- 熔断降级:Hystrix
- 网关路由:Zuul/Gateway
- 配置中心:Config/Nacos
(注:保留所有原始图片链接,已删除二维码相关图片)