
1. Java语言有哪些特性
跨平台性、面向对象、平台无关性
2. JVM、JDK、JRE有什么区别
JVM(Java虚拟机):是实现跨平台的关键
JDK(Java开发工具包):一整套完整的JavaJDK
JRE(Java运行环境):包括Java运行需要的库以及JVM
3. 说说什么是跨平台,原理是什么
Java一次编译到处运行,原理是加入了一个中间件——JVM,JVM中.calss文件被翻译成各个系统的机器码


跨平台性、面向对象、平台无关性
JVM(Java虚拟机):是实现跨平台的关键
JDK(Java开发工具包):一整套完整的JavaJDK
JRE(Java运行环境):包括Java运行需要的库以及JVM
Java一次编译到处运行,原理是加入了一个中间件——JVM,JVM中.calss文件被翻译成各个系统的机器码
程序在运行阶段可以拿到某个对象的所有信息
Class 是 Java 中“描述一个类本身的对象”
JVM为每个加载的class及interface创建了对应的Class实例来保存class及interface的所有信息;
获取一个class对应的Class实例后,就可以获取该class的所有信息;
通过class实例获取class信息的过程就叫“反射”
获取class实例Class的方法
Java中的InputStream和OutputStream是以字节为基本单位的,InputStream代表输入字节流,OutputStream代表输出字节流
Java中的Reader和Writer是以字符为基本单位的,Reader代表字符输入流,Writer代表字符输出流
将对象转换为可存储或可传输的字节流或其他数据格式的过程。
依赖FastJSON的序列化(序列化为JSON)
public static void main(String[] args) throws Exception {
User user = new User();
user.setAge(18);
user.setUserName("张三");
String jsonString = JSONObject.toJSONString(user);
File file = new File("user.json");
Files.write(file.toPath(), jsonString.getBytes(StandardCharsets.UTF_8));
System.out.println(file.length());
}
用户 → Redis GEO 筛选附近用户 → ES 排序(标签+距离+活跃时间) → 返回结果
版本选择
| 组件 | 版本 |
|---|---|
| JDK | 1.8 |
| Spring Boot | 2.7.18 |
| MyBatis-Spring-Boot-Starter | 2.3.1 |
| Spring Web | 2.6.13 |
MySQL8.0+不显示bind-address = 127.0.0.0
sudo nano /etc/my.cnf[mysqld]中加入bind-address = 0.0.0.0sudo ufw statussudo ufw allow 3306/tcp特点:
| 场景 | 说明 | 示例 |
|---|---|---|
| 接口防刷 | 限制单个用户或IP访问频率 | 登录接口、短信验证码接口 |
| 秒杀系统 | 控制并发请求数,保护库存与数据库 | “双11”秒杀抢购接口 |
| 网关层限流 | 控制整体流量、防止突发流量打垮后端 | Nginx、Spring Cloud Gateway、Zuul |
| 服务间调用限流 | 控制下游依赖的访问频率 | 微服务调用:A → B,每秒最多 100 次 |
| MQ消费者限速 | 控制消费速率,避免下游处理不过来 | 消费 Kafka/RabbitMQ 数据 |
| 分布式系统全局限流 | 统一限制整个系统的请求速率 | Redis + Lua 实现全局限流 |