项目实战15—登录之后我加入的课程调用接口报错

简介: 项目实战15—登录之后我加入的课程调用接口报错

现象1:

一天之内都会出现登录之后我加入的课程调用接口报错的情况,排查发现了域名不全的问题

而为什么会一天之内一直出现呢?首先存入redis的域名是不全的,是错误的,当然从redis中查询出来的也是错误的。下面的红框的代码里设置了存入redis失效的时间是一天。

那么域名为什么不全呢?

如下图,这里遇到了一个非线程安全的全局变量ArrayList,当new了一个显得ArrayList,向里面存值,但是ArrayList中之前的值还没有及时被清空,所以拼接出来的地址是错的。

问题清楚了,那么如何解决呢?

1.用线程安全的全局变量替换ArrayList。

线程安全的变量是什么目前还不太了解,后续更新……

2.加锁,保证同一时刻只能有一个线程访问变量

在多线程的情况下,有的线程在修改数据,有的线程在读取,所以读取出来的可能是错的,ArrayList线程是不安全的,所以出现了这种情况,可以选择加synchronized锁。

同时为了避免ArrayList内数据积累越来越多,而这些数据已经是没用的,所以下一次调用要及时用ArrayList.removeAll清空掉。

现象2:

每一次登录,都会重新创建一个对象,放到公共变量中,如果遇到了并发,这里的对象将会被大量创建,然后上一个对象会失去引用,等待垃圾回收器回收,这个等待期间可能会导致cpu飙升。

相关文章
|
7月前
|
前端开发 数据库 Nacos
|
存储 数据安全/隐私保护 开发者
小白必看系列之图书管理系统-登录和注册功能示例代码
小白必看系列之图书管理系统-登录和注册功能示例代码
158 1
|
NoSQL Java Redis
【项目实战典型案例】15.登录之后我加入的课程调用接口报错
【项目实战典型案例】15.登录之后我加入的课程调用接口报错
【项目实战典型案例】15.登录之后我加入的课程调用接口报错
|
Java 数据库 开发者
AutoCloseable 接口| 学习笔记
快速学习 AutoCloseable 接口
287 0
AutoCloseable 接口| 学习笔记
|
Java 开发者 索引
CharSequence 接口|学习笔记
快速学习 CharSequence 接口
165 0
CharSequence 接口|学习笔记
|
SQL 运维 分布式计算
阿里云相关产品操作演示 | 学习笔记
快速学习阿里云相关产品操作演示。
阿里云相关产品操作演示  |  学习笔记
|
敏捷开发 PHP 开发者
接口|学习笔记
快速学习接口,理解接口概念,掌握接口的价值和定义方式。
接口|学习笔记
|
SQL 开发者 微服务
课程详情功能接口(2) | 学习笔记
简介:快速学习课程详情功能接口(2)
课程详情功能接口(2) | 学习笔记
|
数据安全/隐私保护 开发者 微服务
登录功能(接口问题解决) | 学习笔记
快速学习登录功能(接口问题解决)
登录功能(接口问题解决) | 学习笔记
|
前端开发 JavaScript API
课程详情功能前端整合 | 学习笔记
简介:快速学习课程详情功能前端整合
104 0
课程详情功能前端整合 | 学习笔记
下一篇
DataWorks