Java 基础 - 集合

接口和接口之间是什么关系?

继承关系,而非实现关系。(其实很好想,如果接口实现了接口,那为什么方法仍然只有方法体?)

interface A {
void methodA();
}

interface B {
void methodB();
}

interface C extends A, B {
void methodC();
}

Java 并发 - JVM

MySql

Redis

消息队列

计算机网络-操作系统

其他(JWT,Spring,SpringBoot,SpringSecurity,ES搜索引擎,设计模式等)

介绍一下 JWT

JWT 是 JSON Web Token 的缩写,它是一种基于 JSON 的开放标准(RFC 7519),用于在网络应用之间安全地传递信息。
1.结构
JWT 由头部载荷签名组成。

  • 头部:通常包含两部分信息,一是令牌的类型,即 JWT;二是所使用的签名算法,如 HMAC SHA256 或 RSA 等。例如:{“alg”:”HS256”,”typ”:”JWT”}。
    -载荷:是 JWT 的核心部分,包含了实际需要传递的信息,也称为声明(Claims)。这些声明可以是用户的身份信息、权限信息、过期时间等。例如:{“sub”:”1234567890”,”name”:”John Doe”,”admin”:true,”exp”:1677610000},分别表示主题、用户名、是否为管理员以及过期时间。
  • 签名:是通过使用头部中指定的签名算法,对头部和载荷进行签名生成的。它的作用是确保 JWT 在传输过程中没有被篡改,并且能够验证发送者的身份。

2.工作原理

  • 生成令牌:当用户登录成功后,服务器会根据用户的信息生成一个 JWT,然后将其返回给客户端。
  • 携带令牌:客户端在后续的请求中,会将 JWT 放在请求头的 Authorization 字段中,通常使用 Bearer 模式,例如:Authorization: Bearer ,将令牌发送给服务器。
  • 验证令牌:服务器接收到请求后,会从请求头中提取 JWT,并使用相应的密钥和签名算法对其进行验证。如果验证通过,服务器就可以从 JWT 的载荷中获取用户的信息,并根据这些信息来授权用户访问相应的资源。