空间换时间思想

文章讨论了在项目启动时预先实例化并加载所需对象到内存中以提高运行速度的技术,称为空间换时间。这种方法可以避免在运行时因大量数据操作导致的卡顿,但需注意内存占用。以用户表信息为例,创建一个UserStrategy类,在项目启动(@PostConstruct注解)时通过UserMapper加载用户数据。不过,若数据量过大,此策略可能导致内存问题。
摘要由CSDN通过智能技术生成

在项目启动时,将需要使用的对象,进行提前实例化,预加载存入内存中,以备之后使用时可以节省时间,这就是空间换时间,但是此方法会占用内存,如果数据量过大,不建议使用此方法,会导致内存大量被占用而运行缓慢

简单来说就是,你打lol,在团战的时候疯狂操作,需要大量数据,这个时候就会卡顿,但是空间换时间会把你操作的时候需要的数据在你刚登录LOL的时候就加载出来了,所以你操作的时候只需要从内存里拿出来用就行了,这就导致你操作的时候本来该卡顿,但是卡顿被挪到了刚登录游戏的时候,操作就丝滑不卡顿分分钟一打五五杀了

例如

我项目中很多方法都需要数据库中用户表的账号信息,那就可以写一个类来实现空间换时间将用户表中所需要的查询出来放入内存中.

设计一个类

public class UserStrategy(){
    
    @Autowired
    private UserMapper userMapper;

    private static User USER = new User();
//空间换时间,预加载数据
    @PostConstruct
    public void init() {
        USER = userMapper.select("条件字段");
    }
}

这个类在项目启动时就会预加载,查询数据存入内存中以备之后使用(这里为什么不适用static静态代码块呢?是因为如果使用静态代码块的话,会导致在自动装配之前执行,会报错,@PostConstruct注解是Java的注解,告诉系统这个方法是静态方法要启动时一起预加载)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值