前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码...

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

作者头像
达达前端
发布2024-01-17 09:13:53
980
发布2024-01-17 09:13:53
举报
文章被收录于专栏:达达前端达达前端
  • 多线程创建方式一:继承Thread类

  • 多线程创建方式二:实现Runnable接口
  • jdk5.0新增两种创建多线程的方式
2e425f9f947ce3b108c7b727b666747c.png
2e425f9f947ce3b108c7b727b666747c.png

image.png

e3dcb2fade46e69d5733e44aebf9290e.png
e3dcb2fade46e69d5733e44aebf9290e.png

image.png

2c2f8fadc2bbba460a805ef223f78f38.png
2c2f8fadc2bbba460a805ef223f78f38.png

image.png

6dda6e226f0dc3b3261621b70a42449e.png
6dda6e226f0dc3b3261621b70a42449e.png

image.png

0cc8c23b19d9c48cfa52f79781c6c6b4.png
0cc8c23b19d9c48cfa52f79781c6c6b4.png

image.png

代码语言:javascript
复制
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();
f5d471ded2410e2e20f813a7c843c791.png
f5d471ded2410e2e20f813a7c843c791.png

image.png

595d9c8a9cb6edefc0c80fa842b5df82.png
595d9c8a9cb6edefc0c80fa842b5df82.png

image.png

ed702e8ee9c6420fa825c7c8b9474e70.png
ed702e8ee9c6420fa825c7c8b9474e70.png

image.png

348e9f99be17fa8dfd9c250ba053171f.png
348e9f99be17fa8dfd9c250ba053171f.png

image.png

f71e692d68371246400e95de7131b0e9.png
f71e692d68371246400e95de7131b0e9.png

image.png

e5b607451644c8341d2075147e3d97a7.png
e5b607451644c8341d2075147e3d97a7.png

image.png

3aec1087797b7ddf3e887fb764b992b3.png
3aec1087797b7ddf3e887fb764b992b3.png

image.png

4b1c4c5af9d4d80c898d4ed84faa4a35.png
4b1c4c5af9d4d80c898d4ed84faa4a35.png

image.png

优先级

af63a71ea9b35ea51728e87fc6e327ef.png
af63a71ea9b35ea51728e87fc6e327ef.png

image.png

07a7ecc3686e45e0637ee52c2cba0535.png
07a7ecc3686e45e0637ee52c2cba0535.png

image.png

ec4497d132233f76ac8fadb205df106b.png
ec4497d132233f76ac8fadb205df106b.png

image.png

dacabedc417682a5322114e374b0a58c.png
dacabedc417682a5322114e374b0a58c.png

image.png

09220e006ceae0158bbb874626aaf79d.png
09220e006ceae0158bbb874626aaf79d.png

image.png

1fad66a7754e2733fab2125940db953f.png
1fad66a7754e2733fab2125940db953f.png

image.png

线程安全问题

80b40b0f856b8faf734680576f433495.png
80b40b0f856b8faf734680576f433495.png

image.png

c9c0a97e57dcc069fb90b65756db0291.png
c9c0a97e57dcc069fb90b65756db0291.png

image.png

833aa59c98a649d16a5e766ea5ea2627.png
833aa59c98a649d16a5e766ea5ea2627.png

image.png

80a1c282daad43307ef682c9d4ee8e35.png
80a1c282daad43307ef682c9d4ee8e35.png

image.png

caebb147fc1e65f6c72bf64493a73d98.png
caebb147fc1e65f6c72bf64493a73d98.png

image.png

da4de8aa8e7ef7448cdef466049304b7.png
da4de8aa8e7ef7448cdef466049304b7.png

image.png

代码语言:javascript
复制
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的使用

8d3322ec9a43423a7b18e02bd808a915.png
8d3322ec9a43423a7b18e02bd808a915.png

image.png

94a2e3682c0b4ff22543fa6022f9b8f7.png
94a2e3682c0b4ff22543fa6022f9b8f7.png

image.png

8895dfa0f0fcf2be936bfef4cb3918d8.png
8895dfa0f0fcf2be936bfef4cb3918d8.png

image.png

栈管运行,堆管存储

8e3722a0323b5c43a55ef4b57b1a7b8b.png
8e3722a0323b5c43a55ef4b57b1a7b8b.png

image.png

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

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

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

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

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

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

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

a0022a39812b16faf9753ff22484054d.png
a0022a39812b16faf9753ff22484054d.png

image.png

ab2f9bf1caf6227f5f9036ccea91dbcc.png
ab2f9bf1caf6227f5f9036ccea91dbcc.png

image.png

066b94f2fcb2223be1b8fc56b0df50a7.png
066b94f2fcb2223be1b8fc56b0df50a7.png

image.png

47c4b78e7441903cc343dbd26b7317dc.png
47c4b78e7441903cc343dbd26b7317dc.png

image.png

adedcdabd92ce8f8bc4efe395916e444.png
adedcdabd92ce8f8bc4efe395916e444.png

image.png

3905b2d452b384729710a9b9ab476d12.png
3905b2d452b384729710a9b9ab476d12.png

image.png

c512c0ba64f5126764fee3355289850b.png
c512c0ba64f5126764fee3355289850b.png

image.png

1aa33b282a393c7d441a2a4db44dbd5a.png
1aa33b282a393c7d441a2a4db44dbd5a.png

image.png

a8e7bfffd22a410187f8c23294c9f4f8.png
a8e7bfffd22a410187f8c23294c9f4f8.png

image.png

cced9be91a712e766ca1096282a9cd11.png
cced9be91a712e766ca1096282a9cd11.png

image.png

ac709019554cca44adf002f0a7daa55f.png
ac709019554cca44adf002f0a7daa55f.png

image.png

593e66222abc165da3372411943748f3.png
593e66222abc165da3372411943748f3.png

image.png

87305829d4fad69bb776f8d31b3e7d93.png
87305829d4fad69bb776f8d31b3e7d93.png

image.png

0c337b6b88b3e06ac301226379df3886.png
0c337b6b88b3e06ac301226379df3886.png

image.png

187e53b037fef62108b39873512cc173.png
187e53b037fef62108b39873512cc173.png

image.png

ac843ed75d915e2a30a717c0047105ad.png
ac843ed75d915e2a30a717c0047105ad.png

image.png

8adc56f1c779f964d368f033c5c5b029.png
8adc56f1c779f964d368f033c5c5b029.png

image.png

4fdb27fd535767cf68b7722826dce4f9.png
4fdb27fd535767cf68b7722826dce4f9.png

image.png

09b2af69ca850625096e2aa003abf539.png
09b2af69ca850625096e2aa003abf539.png

image.png

ed1d162a295b84a48a5ae73280ffedbb.png
ed1d162a295b84a48a5ae73280ffedbb.png

image.png

dde354da21d1219c6535393f6cd26f75.png
dde354da21d1219c6535393f6cd26f75.png

image.png

c57ccabeb69189b2cc4fc31261f64fa5.png
c57ccabeb69189b2cc4fc31261f64fa5.png

image.png

c2b259c8346f31de115692427950ef11.png
c2b259c8346f31de115692427950ef11.png

image.png

124148ff867a6b1de077773936e45245.png
124148ff867a6b1de077773936e45245.png

image.png

2cf8a36fb8685f545a601ab9ac669ed9.png
2cf8a36fb8685f545a601ab9ac669ed9.png

image.png

ee5a7732d6c0aaf573162efebd706fd7.png
ee5a7732d6c0aaf573162efebd706fd7.png

image.png

bd6b4da83e39fb4df1e770e0b58d644e.png
bd6b4da83e39fb4df1e770e0b58d644e.png

image.png

42555f608b495ac64ad25f421af71c71.png
42555f608b495ac64ad25f421af71c71.png

image.png

892da24df316c91a53eed5ce9cce0b52.png
892da24df316c91a53eed5ce9cce0b52.png

image.png

时间

13db2faa948b1b75c0c6077af1557dfa.png
13db2faa948b1b75c0c6077af1557dfa.png

image.png

排序

bf8b23b2ba3f5ce8a5dbaa8539d73c53.png
bf8b23b2ba3f5ce8a5dbaa8539d73c53.png

image.png

f3a3e1b40159cdf0787ccf580c70839a.png
f3a3e1b40159cdf0787ccf580c70839a.png

image.png

a5cc4c93feb0f1b7a242f499ac07fca4.png
a5cc4c93feb0f1b7a242f499ac07fca4.png

image.png

3e37b305696dd7257b1a481ea3aab9c1.png
3e37b305696dd7257b1a481ea3aab9c1.png

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 版本;
  • 支持插件加载;
  • 允许多次执行加载操作,网络资源不会重复请求,便于大型工程模块管理;
代码语言:javascript
复制
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
});
18919285559617346b50978136628791.png
18919285559617346b50978136628791.png

image.png

集合框架

32f6b6ff0c0e3e6ba2a71cc7a3facf78.png
32f6b6ff0c0e3e6ba2a71cc7a3facf78.png

image.png

3853e9029706138c0cb82bc111b66526.png
3853e9029706138c0cb82bc111b66526.png

image.png

f33945c0c7256cdc82897a7d5612fa33.png
f33945c0c7256cdc82897a7d5612fa33.png

image.png

df3764dcb96ce9b11c19b56f0f3a0bc8.png
df3764dcb96ce9b11c19b56f0f3a0bc8.png

image.png

4b2495f1e36b9f1eadf3c58c9400682a.png
4b2495f1e36b9f1eadf3c58c9400682a.png

image.png

079111326a8b7b7c1a7a1180589e748b.png
079111326a8b7b7c1a7a1180589e748b.png

image.png

6629f4f0f36a4685f20094f2e9aa4b48.png
6629f4f0f36a4685f20094f2e9aa4b48.png

image.png

c847e66fc606d0635407f0db65cabc5b.png
c847e66fc606d0635407f0db65cabc5b.png

image.png

89be40ecd3e06d1bc9f5b8237cda7937.png
89be40ecd3e06d1bc9f5b8237cda7937.png

image.png

ArrayList

96914ac9dfa2c76431ec2e295edc843d.png
96914ac9dfa2c76431ec2e295edc843d.png

image.png

baeaef2a10abb21147fc85f0cbb3c5b5.png
baeaef2a10abb21147fc85f0cbb3c5b5.png

image.png

5f9769ca8231e3dee14494c95421f250.png
5f9769ca8231e3dee14494c95421f250.png

image.png

553f08685c28cefebd0443030c2346c8.png
553f08685c28cefebd0443030c2346c8.png

image.png

d772cbba2fa7de9271c3c44123faec61.png
d772cbba2fa7de9271c3c44123faec61.png

image.png

代码语言:javascript
复制
@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);
}
aa73192b97b74de26fb07c522c8b18fb.png
aa73192b97b74de26fb07c522c8b18fb.png

image.png

cb479cab25565e89bdf880fd65c09047.png
cb479cab25565e89bdf880fd65c09047.png

image.png

fa2e302ae0bc06f758cf483f2d9da9de.png
fa2e302ae0bc06f758cf483f2d9da9de.png

image.png

381c069174e060dedae4f072c87a1736.png
381c069174e060dedae4f072c87a1736.png

image.png

4e191f2521e64e7651034ed1cc7ea062.png
4e191f2521e64e7651034ed1cc7ea062.png

image.png

acb6cfb6cc0d0c76935b7a3b66e22333.png
acb6cfb6cc0d0c76935b7a3b66e22333.png

image.png

b6d3c6ce44b4a19488167cb414f52332.jpeg
b6d3c6ce44b4a19488167cb414f52332.jpeg

image.png

泛型

12cb1d76e65af027003f9c33b48d9809.png
12cb1d76e65af027003f9c33b48d9809.png

image.png

5ac627edc99fd8eba09e80c1bbecc5cf.png
5ac627edc99fd8eba09e80c1bbecc5cf.png

image.png

283f777d09e0072b256519ce9a137871.png
283f777d09e0072b256519ce9a137871.png

image.png

泛型在继承上的关系

db550a64e1c833ef7ca21e01164849f1.png
db550a64e1c833ef7ca21e01164849f1.png

image.png

1cede56431a435f456a325d19c8f2e9b.png
1cede56431a435f456a325d19c8f2e9b.png

image.png

2970ef2ea1d556076c0aeb5ac538f320.png
2970ef2ea1d556076c0aeb5ac538f320.png

image.png

6782a3b052dc86ec8f5cc8f9b3cff069.png
6782a3b052dc86ec8f5cc8f9b3cff069.png

image.png

cef047d666c9dd94c2d6e9d2ce28901c.png
cef047d666c9dd94c2d6e9d2ce28901c.png

image.png

982589a1eabdca628d68483502cd826f.png
982589a1eabdca628d68483502cd826f.png

image.png

c90fe3e219527f434af4f24858503eb8.png
c90fe3e219527f434af4f24858503eb8.png

image.png

数据结构

e09a3b430ae8e3649bdcb782a719be12.png
e09a3b430ae8e3649bdcb782a719be12.png

image.png

fd198883686859e37634b20a17ec4e38.png
fd198883686859e37634b20a17ec4e38.png

image.png

7ef84570e97574cc2a1981366806f274.png
7ef84570e97574cc2a1981366806f274.png

image.png

ed7a8a37b94be88cf2c4735f11dba34d.png
ed7a8a37b94be88cf2c4735f11dba34d.png

image.png

磁盘上不挨着的

11cdcb00bf1aa179a3846ff82833bf88.png
11cdcb00bf1aa179a3846ff82833bf88.png

image.png

a4adc2f585e3beb77b18b728b76c968f.png
a4adc2f585e3beb77b18b728b76c968f.png

image.png

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

16e616f0d66c6d347c4dcc7fc61c2e6c.png
16e616f0d66c6d347c4dcc7fc61c2e6c.png

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();

fbb067f400dd90054c0aba1942d6897e.png
fbb067f400dd90054c0aba1942d6897e.png

image.png

78971ca4de24c0a4cdb29d2b0c2f96c6.png
78971ca4de24c0a4cdb29d2b0c2f96c6.png

image.png

74d7cf49745d9784af23aa53c09f3cba.png
74d7cf49745d9784af23aa53c09f3cba.png

image.png

46c067a8b7d5b844ca6dc806671ce7d6.png
46c067a8b7d5b844ca6dc806671ce7d6.png

image.png

d657a8be0b9064e4bbc274ee4db74d72.png
d657a8be0b9064e4bbc274ee4db74d72.png

image.png

ArrayList扩容

c956427db3c9a7ce4ae1674cff4f4702.png
c956427db3c9a7ce4ae1674cff4f4702.png

image.png

33978035625cc93947bfdd5f33d6b9ca.png
33978035625cc93947bfdd5f33d6b9ca.png

image.png

1c94131ac06d9a45e47843271741ada6.png
1c94131ac06d9a45e47843271741ada6.png

image.png

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

内存问题:
  1. 内存泄漏检查: 使用工具(例如VisualVM、YourKit、MAT等)来检查应用程序中是否存在内存泄漏。确保你的应用程序在使用完对象后释放它们。
  2. JVM 配置优化: 调整 Java 虚拟机的内存参数,确保它们适合你的应用程序。可以通过修改启动脚本或使用 Spring Boot 的配置文件进行调整。
代码语言:javascript
复制
# 举例:设置最小堆和最大堆为512MB
java -Xms512m -Xmx512m -jar your-application.jar
  1. 使用内存分析工具: 使用内存分析工具识别哪些对象占用了大量内存,以便优化或解决内存问题。
  2. 代码优化: 通过优化代码,尽量避免使用复杂度高的算法和耗时的操作。确保你的代码在设计上是高效的。
  3. 并发控制: 如果你的应用程序涉及多线程,确保正确地管理线程,避免死锁和竞争条件。
  4. 负载均衡: 如果你的应用程序是通过多台服务器运行的,考虑使用负载均衡,以确保请求能够均匀地分布在不同的服务器上,防止某一台服务器负载过高。
  5. 数据库优化: 针对数据库操作,优化 SQL 查询,使用索引等方法来提高数据库查询效率。
  • 查看磁盘空间:df -h
代码语言:javascript
复制
# 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
1766dbf138e54827c33bc0e45d8c1e1a.png
1766dbf138e54827c33bc0e45d8c1e1a.png

image.png

c67d086e59fab07b9f33b2f30705dbe1.png
c67d086e59fab07b9f33b2f30705dbe1.png

image.png

f38e6bffbb84032f4209a2d64ddf97a3.png
f38e6bffbb84032f4209a2d64ddf97a3.png

image.png

6b1f31e1c5b8b9ad120b10924448a01b.png
6b1f31e1c5b8b9ad120b10924448a01b.png

image.png

ebfc2c37a80da6995e2222f70d3f0500.png
ebfc2c37a80da6995e2222f70d3f0500.png

image.png

37d979df429d4c777e1fc599da547f4a.png
37d979df429d4c777e1fc599da547f4a.png

image.png

1c2a71060854674bde3bd21f79a5634c.png
1c2a71060854674bde3bd21f79a5634c.png

image.png

65fcf950e1c00ea14c6a58160155bb9c.png
65fcf950e1c00ea14c6a58160155bb9c.png

image.png

4fba5b8ed8f804d128d84cc5b4942f38.png
4fba5b8ed8f804d128d84cc5b4942f38.png

image.png

8b176e3d1b393dfdc0fecfe75d2a779b.png
8b176e3d1b393dfdc0fecfe75d2a779b.png

image.png

117e5440086eaf89ce6cf5b04531e529.png
117e5440086eaf89ce6cf5b04531e529.png

image.png

9150fb8b683246e9fe9c354662fa442d.png
9150fb8b683246e9fe9c354662fa442d.png

image.png

cb9294b074815c127be913e3a367e2dc.png
cb9294b074815c127be913e3a367e2dc.png

image.png

ccaaf0c77fc53a39a6f67a42ecc1f27e.png
ccaaf0c77fc53a39a6f67a42ecc1f27e.png

image.png

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • amap-jsapi-loader
    • 错误原因:
      • 解决问题:
        • 内存问题:
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档