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


跨平台性、面向对象、平台无关性
JVM(Java虚拟机):是实现跨平台的关键
JDK(Java开发工具包):一整套完整的JavaJDK
JRE(Java运行环境):包括Java运行需要的库以及JVM
Java一次编译到处运行,原理是加入了一个中间件——JVM,JVM中.calss文件被翻译成各个系统的机器码
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 实现全局限流 |
红黑树的根节点都是黑色的
不能重现连续的红色(红色节点的子节点必须是黑色)
所有叶子节点(NIL / null)被视为黑色
从任一节点到其所有后代叶子节点的路径上,包含相同数目的黑色节点
节点要么是红色要么是黑色
记法:左根右(二叉搜索树),根叶黑,不红红,黑路同
插入节点和正常的二叉树一样插入(默认插入的是红色的节点,红色比黑色更不容易破坏平衡),插入之后可能破坏了平衡,所以需要从下到上调整。
单体项目直接使用JVM的synchronized或ReentrantLock来保证同一时间仅有一个线程访问某个资源。但是
在分布式系统多个服务实例)中,不同节点的线程互相隔离,JVM 内的锁不再有效,需要一个跨节点的锁——分布式锁
简而言之👉分布式锁是为了解决分布式系统中多节点(多个服务实例)之间对共享资源的并发访问控制问题而产
生的一种锁机制。
例如图中如果不加任何限制同一时间可能会在三个服务器中分别创建变量A,这就会导致对共享资源(这里的变
量 A 可视为共享资源)的并发访问出现问题,比如数据不一致等
记得线程的运行一定要在main方法里面
public class MyThread extends Thread{
@Override
public void run(){
System.out.println("MyThread1");
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
LRU 是 Least Recently Used(最近最少使用) 的缩写,是一种经典的 缓存淘汰算法,核心思想是:当缓存空间已满,需要新增数据时,优先删除 “最近一段时间内使用频率最低、或最久未被使用” 的数据
accessOrder 为 true 访问顺序为最近访问,false为为插入顺序访问
loadFactor平衡因子,默认为0.75f
保证一个类只有一个实例,并且提供一个全局访问点
/**
* 饿汉式(线程安全)
* 类加载时创建实例,不管是否使用,都会创建对象
*/
public class Singleton1 {
private static Singleton1 instance = new Singleton1();
private Singleton1(){
}
private static Singleton1 getInstance(){
return instance;
}
}