当前位置: 首页 > news >正文

JAVA基础二

一、垃圾回收机制(GC)

作用

自动回收不再使用的对象内存,避免内存泄漏。

回收对象

没有任何引用指向的对象

例如:

User u = new User(); u = null; //对象可以被GC回收

常见算法

算法说明
标记清除标记可回收对象后删除
复制算法内存一分为二,复制存活对象
标记整理标记后移动对象

特点

程序员不用手动释放内存 JVM自动管理

二、泛型(Generics)

作用

在编译阶段限制数据类型,提高代码安全性。

示例:

List<String> list = new ArrayList<>();

优点:

1 类型安全 2 避免强制类型转换 3 提高代码可读性

泛型本质:

编译期语法 运行期类型擦除

三、反射(Reflection)

作用

在运行时动态获取类的信息并操作对象

核心类:

  • Class

  • Constructor

  • Method

  • Field

示例:

Class<?> clazz = Class.forName("User"); ​ Object obj = clazz.getDeclaredConstructor().newInstance();

作用:

动态创建对象 动态调用方法 读取类信息

应用:

  • Spring

  • MyBatis

  • 框架开发


四、注解(Annotation)

作用

给程序添加额外信息,供编译器或框架使用。

示例:

@Override

常见注解:

@Override @Deprecated @SuppressWarnings

五、四个元注解

元注解:修饰注解的注解

元注解作用
@Target指定注解作用位置
@Retention指定生命周期
@Documented生成文档
@Inherited子类可继承

示例:

@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME)

六、Socket 与 WebSocket

Socket

网络通信接口 基于 TCP/UDP

作用:

客户端与服务器通信

示例:

Socket socket = new Socket("localhost",8080);

WebSocket

基于 TCP 的应用层协议

特点:

长连接 双向通信 实时通信

关系:

WebSocket ↓ TCP ↓ Socket

七、BIO / NIO / Netty

BIO

同步阻塞 一连接一线程 客户端1 → 线程1 客户端2 → 线程2

NIO

同步非阻塞 一个线程管理多个连接

核心:

Selector Channel Buffer

Netty

Netty

基于NIO的高性能网络框架

优点:

封装NIO 高并发 事件驱动

八、Java异常

异常分两种:

类型说明
Checked Exception编译时异常
Runtime Exception运行时异常

常见异常:

NullPointerException ArrayIndexOutOfBoundsException ClassCastException ArithmeticException

处理方式:

try{ }catch(Exception e){ }finally{ }

九、Object 类常见方法

所有类默认继承Object

常见方法:

方法作用
toString()返回对象字符串
equals()判断对象是否相等
hashCode()返回哈希值
getClass()获取类对象
clone()复制对象
wait()线程等待
notify()唤醒线程

十、hashCode 和 equals 的关系

规则:

equals相等 hashCode必须相等

但:

hashCode相等 equals不一定相等

作用:

主要用于:

HashMap HashSet

提高查找效率。


十一、String 常见方法

常见方法:

方法作用
length()字符串长度
charAt()获取字符
substring()截取字符串
equals()判断相等
indexOf()查找位置
contains()是否包含
replace()替换
split()分割
toLowerCase()小写

十二、String 为什么不可变

原因:

String内部使用 final char[]

源码:

private final char value[];

特点:

不可修改 线程安全 可共享

优点:

提高性能 保证安全 支持字符串常量池

十三、手写 Tomcat 核心原理

最简 Tomcat 流程:

ServerSocket监听端口 ↓ accept接收请求 ↓ InputStream读取HTTP请求 ↓ 解析请求路径 ↓ 读取文件 ↓ OutputStream返回HTTP响应

核心代码结构:

ServerSocket serverSocket = new ServerSocket(8080); ​ while(true){ Socket socket = serverSocket.accept(); }
http://www.jsqmd.com/news/478670/

相关文章:

  • ContentProvider与Uri权限:跨应用数据共享
  • 攻防世界 misc题心仪的公司
  • Linux:进程调度
  • 软件测试定义、目的、调试、需求概念、软件生命周期与测试流程
  • 学习率调度的艺术:从Warmup到余弦退火,掌握深度学习的训练节奏
  • AI 辅助编程阶段化开发 SOP
  • 大数据安全必修课:数据隐私保护的7大核心原则
  • 56767786
  • 工业缺陷检测的新范式:2025-2026年零样本检测技术全景扫描
  • 51单片机的【智能火灾报警系统】仿真设计
  • 北京营养自愈力专家亲测分享:这样找最靠谱!
  • 代码上传到gitee
  • 我不知道起什么我就是找个地方说话
  • 量化开发实战手册·第1篇:数据源选型指南——如何为你的策略找到最合适的行情接口?
  • Flutter 三方库 flutter_localized_locales 鸿蒙适配指南 - 实现工业级全球化多语言映射与区域感知实战
  • pikachu靶场——SQL-Inject—2(Kali系统)占位符
  • C++ 标准库提供了一组丰富的输入/输出功能
  • 腾讯六宫格验证码破解
  • 太猛了!用 OpenClaw-RL,AI 边聊天边自我进化,「白嫖」用户交互数据训出更强模型?
  • Flutter 三方库 angel3_cors 鸿蒙适配指南 - 实现高性能全栈跨域安全治理与通讯防护实战
  • 了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的
  • OpenClaw 彻底卸载指南:从反复踩坑到一键完美清理】
  • 江苏哪里有三防布厂家?跑断腿摸出的实体大厂
  • 编译性语言不如解释性语言跨平台性好
  • Linux 网络命令速查:告别 `ifconfig`,拥抱 `ip`
  • 告别“纸上谈兵”!场景AI助力企业数智化落地
  • 解释性语言每执行一次就要翻译一次,效率比较低
  • Flutter 三方库 shelf_router_discovery 鸿蒙适配指南 - 实现服务端路由自动注册、在 OpenHarmony 上打造极致解耦的云端治理实战
  • 联合循环——23 电厂建筑屋顶防雷,盘柜中性点地排设计说明
  • 考试技巧01:时间管理,如何分配90分钟,至少多拿15分