springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码...

  • 多线程创建方式一:继承Thread类

  • 多线程创建方式二:实现Runnable接口

  • jdk5.0新增两种创建多线程的方式

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第1张图片 image.png e3dcb2fade46e69d5733e44aebf9290e.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第2张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第3张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第4张图片 image.png
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();
springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第5张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第6张图片 image.png ed702e8ee9c6420fa825c7c8b9474e70.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第7张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第8张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第9张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第10张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第11张图片 image.png

优先级

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第12张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第13张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第14张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第15张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第16张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第17张图片 image.png

线程安全问题

80b40b0f856b8faf734680576f433495.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第18张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第19张图片 image.png 80a1c282daad43307ef682c9d4ee8e35.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第20张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第21张图片 image.png
public 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的使用

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第22张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第23张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第24张图片 image.png

栈管运行,堆管存储

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第25张图片 image.png

新建,可运行,阻塞,等待,时间等待,死亡

什么是线程安全问题?多个线程操作共享数据,就有可能出现安全问题。

如何解决线程的安全问题?有几种方式?

同步机制:1,同步代码块;2,同步方法

重点关注两个事:共享数据及操作共享数据的代码;同步监视器(保证唯一性)

在实现Runnable接口的方式中,同步监视器可以考虑使用:this

在继承Thread类的方式中,同步监视器要慎用this,可以考虑使用:当前类.class。

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第26张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第27张图片 image.png 066b94f2fcb2223be1b8fc56b0df50a7.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第28张图片 image.png adedcdabd92ce8f8bc4efe395916e444.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第29张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第30张图片 image.png 1aa33b282a393c7d441a2a4db44dbd5a.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第31张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第32张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第33张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第34张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第35张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第36张图片 image.png 187e53b037fef62108b39873512cc173.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第37张图片 image.png 8adc56f1c779f964d368f033c5c5b029.png image.png 4fdb27fd535767cf68b7722826dce4f9.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第38张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第39张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第40张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第41张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第42张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第43张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第44张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第45张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第46张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第47张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第48张图片 image.png

时间

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第49张图片 image.png

排序

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第50张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第51张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第52张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第53张图片 image.png

在 AMap(高德地图 JavaScript API)中,pitchrotation 是与地图视角或透视关联的属性:

  1. 俯仰角(pitch):

  • pitch 属性定义了地图倾斜的角度,表示相机从上方往地图底部的视角。0 度的俯仰角表示俯视图(2D),逐渐增加的值会以三维的方式倾斜地图,提供更倾斜的视图。

旋转角度(rotation):

  • rotation 属性指定地图的旋转角度,允许您围绕地图中心旋转。旋转以顺时针度数来衡量。0 度的旋转表示无旋转,随着值的增加,地图将以顺时针方向旋转。

这些属性通常结合使用,以创建地图的三维透视和方向。它们可以根据应用程序的要求进行调整,以提供基于用户需求的自定义视图。选项 viewMode: '3D' 启用了地图的 3D 视图模式,为显示的地图特征增添了深度感。buildingAnimation 属性设置为 true 时,在建筑物出现在地图上时会启用动画效果。

amap-jsapi-loader

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
});
springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第54张图片 image.png

集合框架

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第55张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第56张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第57张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第58张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第59张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第60张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第61张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第62张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第63张图片 image.png

ArrayList

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第64张图片 image.png baeaef2a10abb21147fc85f0cbb3c5b5.png image.png 5f9769ca8231e3dee14494c95421f250.png image.png 553f08685c28cefebd0443030c2346c8.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第65张图片 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);
}
springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第66张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第67张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第68张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第69张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第70张图片 image.png acb6cfb6cc0d0c76935b7a3b66e22333.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第71张图片 image.png

泛型

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第72张图片 image.png 5ac627edc99fd8eba09e80c1bbecc5cf.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第73张图片 image.png

泛型在继承上的关系

db550a64e1c833ef7ca21e01164849f1.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第74张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第75张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第76张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第77张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第78张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第79张图片 image.png

数据结构

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第80张图片 image.png fd198883686859e37634b20a17ec4e38.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第81张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第82张图片 image.png

磁盘上不挨着的

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第83张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第84张图片 image.png

原因:com.mysql.jdbc.exceptions.jdbc4。MySQLNonTransientConnectionException:无法创建数据库服务器连接。

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第85张图片 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();

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第86张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第87张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第88张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第89张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第90张图片 image.png

ArrayList扩容

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第91张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第92张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第93张图片 image.png

服务器内存爆满和 CPU 过高可能是由多种原因引起的。下面是一些可能的解决方法:

内存问题:

  1. 内存泄漏检查: 使用工具(例如VisualVM、YourKit、MAT等)来检查应用程序中是否存在内存泄漏。确保你的应用程序在使用完对象后释放它们。

  2. JVM 配置优化: 调整 Java 虚拟机的内存参数,确保它们适合你的应用程序。可以通过修改启动脚本或使用 Spring Boot 的配置文件进行调整。

# 举例:设置最小堆和最大堆为512MB
java -Xms512m -Xmx512m -jar your-application.jar
  1. 使用内存分析工具: 使用内存分析工具识别哪些对象占用了大量内存,以便优化或解决内存问题。

  2. 代码优化: 通过优化代码,尽量避免使用复杂度高的算法和耗时的操作。确保你的代码在设计上是高效的。

  3. 并发控制: 如果你的应用程序涉及多线程,确保正确地管理线程,避免死锁和竞争条件。

  4. 负载均衡: 如果你的应用程序是通过多台服务器运行的,考虑使用负载均衡,以确保请求能够均匀地分布在不同的服务器上,防止某一台服务器负载过高。

  5. 数据库优化: 针对数据库操作,优化 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
springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第94张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第95张图片 image.png f38e6bffbb84032f4209a2d64ddf97a3.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第96张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第97张图片 image.png 37d979df429d4c777e1fc599da547f4a.png image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第98张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第99张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第100张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第101张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第102张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第103张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第104张图片 image.png springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码..._第105张图片 image.png

加群联系作者vx:xiaoda0423

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

你可能感兴趣的:(spring,boot,数据结构,java,jvm,后端)