- 后端技术9
- 运维技术5
- 前端技术3
- 安全技术3
- VPS技术2
- 后端2
- 前后端分离2
- 关于我1
- 个人简历1
- 安利好物1
- 生活随笔1
- 知识库目录1
- 张若昀1
- 追剧推荐1
- 薛之谦1
- 音乐推荐1
- 科学上网1
- 前端1
- 经典漏洞1
- 技术栈1
- 操作系统1
- 系统部署1
- 实用工具1
- 雷军思想1
作为一名后端开发者,JavaWeb 是我们必须掌握的基石。本文基于我的简历技能点,对 JavaWeb 的核心内容进行梳理。
1. Servlet 与 JSP
虽然现在 Spring Boot 已经屏蔽了底层的 Servlet 细节,但理解 Servlet 生命周期(init, service, destroy)对于排查问题至关重要。
- Filter: 过滤器,用于拦截请求,处理跨域、编码、登录验证等。
- Listener: 监听器,用于监听 Session、Context 等对象的创建与销毁。
设计优雅、规范的 API 接口,能极大降低前后端沟通成本和维护难度。
1. URL 设计规范
- 名词复数: 资源通常用复数表示。
GET /users: 获取用户列表GET /users/1: 获取 ID 为 1 的用户
- 层级结构: 体现资源关系。
GET /users/1/orders: 获取用户 1 的订单列表
设计模式是解决特定问题的成熟方案。掌握它们能让代码更易扩展、更健壮。
1. 单例模式 (Singleton)
保证一个类只有一个实例。
- 场景: 数据库连接池、Spring Bean(默认单例)、配置管理器。
- 实现: 双重检查锁(Double Check Lock)。
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
随着业务复杂度增加,单体应用难以维护,微服务架构应运而生。
1. 核心组件 (Spring Cloud Alibaba)
相比 Netflix OSS,Spring Cloud Alibaba 在国内应用更广泛。
- Nacos: 注册中心与配置中心。服务启动时向 Nacos 注册,调用方从 Nacos 获取服务列表。
- Sentinel: 流量控制、熔断降级。保护服务不被突发流量打垮。
- Gateway: API 网关。统一入口,处理路由、鉴权、限流。
- OpenFeign: 声明式 HTTP 客户端。像调用本地方法一样调用远程服务。
- Seata: 分布式事务解决方案。
JWT (JSON Web Token) 是目前最流行的跨域身份验证解决方案。
1. 传统 Session vs JWT
- Session:
- 状态存储在服务器端(内存或 Redis)。
- 依赖 Cookie 传输 SessionID。
- 扩展性差(服务器集群需要 Session 共享)。
- JWT:
- 无状态,服务器不存储 Token。
- 适合分布式微服务。
- 可以在 HTTP Header 中传输,支持跨域。
深入理解 JVM 是 Java 程序员进阶的必经之路。
1. 运行时数据区
- 堆 (Heap): 存放对象实例,GC 的主要区域。分为新生代(Eden, S0, S1)和老年代。
- 栈 (Stack): 存放方法调用栈帧(局部变量、操作数栈)。线程私有。
- 方法区 (Method Area): 存放类信息、常量、静态变量。Java 8 后称为元空间(Metaspace)。
- 程序计数器: 记录当前线程执行的字节码行号。
- 本地方法栈: 为 Native 方法服务。
在后端开发中,数据库往往是系统的性能瓶颈。本文总结了我在项目中常用的 MySQL 优化策略。
1. 索引优化
索引是提升查询效率的关键。
- 覆盖索引: 尽量让查询的字段都包含在索引中,避免回表查询。
- 最左前缀原则: 联合索引
(a, b, c),查询条件必须包含a才能用到索引。 - 避免索引失效:
- 不要在索引列上做计算或函数操作。
- 避免使用
!=或<>,可能导致全表扫描。 LIKE查询尽量不要以%开头。
Redis 作为高性能的 Key-Value 数据库,是提升系统并发能力的利器。
1. 常用数据结构与场景
- String: 缓存用户信息、Session、验证码。
- Hash: 存储对象,如商品详情。
- List: 消息队列、最新文章列表。
- Set: 共同好友、抽奖去重。
- ZSet: 排行榜(如游戏积分榜、热搜)。
