多线程创建方式一:继承Thread类
多线程创建方式二:实现Runnable接口
jdk5.0新增两种创建多线程的方式
new Thread(new Runnable() {
public void run() {
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
}).start();
image.png image.png
image.png image.png image.png image.png image.png image.png
优先级
image.png image.png image.png image.png image.png image.png线程安全问题
image.png image.png image.png image.png image.png image.pngpublic static Bank getInstance() {
if (instance == null) {
synchronized(Bank.class) {
if (instance == null) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
instance = new Bank();
}
}
}
}
Lock的使用
image.png image.png image.png栈管运行,堆管存储
image.png新建,可运行,阻塞,等待,时间等待,死亡
什么是线程安全问题?多个线程操作共享数据,就有可能出现安全问题。
如何解决线程的安全问题?有几种方式?
同步机制:1,同步代码块;2,同步方法
重点关注两个事:共享数据及操作共享数据的代码;同步监视器(保证唯一性)
在实现Runnable接口的方式中,同步监视器可以考虑使用:this
在继承Thread类的方式中,同步监视器要慎用this,可以考虑使用:当前类.class。
image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png时间
image.png排序
image.png image.png image.png image.png在 AMap(高德地图 JavaScript API)中,pitch
和 rotation
是与地图视角或透视关联的属性:
俯仰角(pitch
):
pitch
属性定义了地图倾斜的角度,表示相机从上方往地图底部的视角。0 度的俯仰角表示俯视图(2D),逐渐增加的值会以三维的方式倾斜地图,提供更倾斜的视图。
旋转角度(rotation
):
rotation
属性指定地图的旋转角度,允许您围绕地图中心旋转。旋转以顺时针度数来衡量。0 度的旋转表示无旋转,随着值的增加,地图将以顺时针方向旋转。
这些属性通常结合使用,以创建地图的三维透视和方向。它们可以根据应用程序的要求进行调整,以提供基于用户需求的自定义视图。选项 viewMode: '3D'
启用了地图的 3D 视图模式,为显示的地图特征增添了深度感。buildingAnimation
属性设置为 true
时,在建筑物出现在地图上时会启用动画效果。
amap-jsapi-loader 是高德开放平台官网提供的地图 JSAPI 的加载器,可帮助开发者快速定位、有效避免加载引用地图 JSAPI 各种错误用法。
该加载器具有以下特性:
支持以 普通JS 和 npm包 两种方式使用;
有效避免错误异步加载导致的 JSAPI 资源加载不完整问题;
对于加载混用多个版本 JSAPI 的错误用法给予报错处理;
对于不合法加载引用 JSAPI 给予报错处理;
支持指定 JSAPI 版本;
支持插件加载;
允许多次执行加载操作,网络资源不会重复请求,便于大型工程模块管理;
AMapLoader.load({
"key": "", // 申请好的Web端开发者Key,首次调用 load 时必填
"version": "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
"plugins": [] // 需要使用的的插件列表,如比例尺'AMap.Scale'等
"AMapUI": { // 是否加载 AMapUI,缺省不加载
"version": '1.1', // AMapUI 缺省 1.1
"plugins":[], // 需要加载的 AMapUI ui插件
},
"Loca":{ // 是否加载 Loca, 缺省不加载
"version": '1.3.2' // Loca 版本,缺省 1.3.2
},
}).then(()=>{
window.AMap.xx;
window.AMapUI.xx;
window.Loca.xx
});
image.png
集合框架
image.png image.png image.png image.png image.png image.png image.png image.png image.pngArrayList
image.png image.png image.png image.png image.png@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return age == user.age && Objects.equals(name, user.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
image.png image.png image.png image.png image.png image.png image.png
泛型
image.png image.png image.png泛型在继承上的关系
image.png image.png image.png image.png image.png image.png image.png数据结构
image.png image.png image.png image.png磁盘上不挨着的
image.png image.png原因:com.mysql.jdbc.exceptions.jdbc4。MySQLNonTransientConnectionException:无法创建数据库服务器连接。
image.png从网盘导进来之前写的一个spring项目,执行的时候报错:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
翻译过来:无法创建到数据库服务器的连接。
Maven的pom.xml依赖的mysql版本与本机mysql版本不一致。
在mysql-console查询版本:select version();
ArrayList扩容
image.png image.png image.png服务器内存爆满和 CPU 过高可能是由多种原因引起的。下面是一些可能的解决方法:
内存泄漏检查: 使用工具(例如VisualVM、YourKit、MAT等)来检查应用程序中是否存在内存泄漏。确保你的应用程序在使用完对象后释放它们。
JVM 配置优化: 调整 Java 虚拟机的内存参数,确保它们适合你的应用程序。可以通过修改启动脚本或使用 Spring Boot 的配置文件进行调整。
# 举例:设置最小堆和最大堆为512MB
java -Xms512m -Xmx512m -jar your-application.jar
使用内存分析工具: 使用内存分析工具识别哪些对象占用了大量内存,以便优化或解决内存问题。
代码优化: 通过优化代码,尽量避免使用复杂度高的算法和耗时的操作。确保你的代码在设计上是高效的。
并发控制: 如果你的应用程序涉及多线程,确保正确地管理线程,避免死锁和竞争条件。
负载均衡: 如果你的应用程序是通过多台服务器运行的,考虑使用负载均衡,以确保请求能够均匀地分布在不同的服务器上,防止某一台服务器负载过高。
数据库优化: 针对数据库操作,优化 SQL 查询,使用索引等方法来提高数据库查询效率。
查看磁盘空间:df -h
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 84K 1.9G 1% /dev/shm
tmpfs 1.9G 5.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 50G 34G 14G 72% /
tmpfs 379M 0 379M 0% /run/user/0
tmpfs 379M 0 379M 0% /run/user/1002
overlay 50G 34G 14G 72% /var/lib/docker/overlay2/852d1c6c3303c7583e3bc35c1f5448c261849c8b2d140adb630ce4dce6a46bd1/merged
shm 64M 0 64M 0% /var/lib/docker/containers/02f6dbaaf309e944564e73a31725a71559f52ef33cc0ad4b54a70b29c77ce643/shm
overlay 50G 34G 14G 72% /var/lib/docker/overlay2/cc72601533b86cdd891bb01e6a596c454c76f6f4454158bf94907ae58466b608/merged
shm 64M 0 64M 0% /var/lib/docker/containers/eeb058d801e8c5707d0b86db119fde4497e0304f7930c3335b0ea6a83380bb7a/shm
image.png image.png
image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png
加群联系作者vx:xiaoda0423
仓库地址:https://github.com/webVueBlog/JavaGuideInterview