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

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

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

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

image.png

image.png

image.png

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

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

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

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)中,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
});

image.png

集合框架

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

ArrayList

image.png

image.png

image.png

image.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);
}

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

image.png

image.png

image.png

image.png

image.png

ArrayList扩容

image.png

image.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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • amap-jsapi-loader
    • 错误原因:
      • 解决问题:
        • 内存问题:
        相关产品与服务
        云服务器
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档