利用map的特性实现同步更新操作

实习期间,为实现云上与数据库文件信息同步,最初通过四个for循环完成,后优化为仅使用一个for循环和Map遍历。通过将上传文件名作为Map的key,对比数据库文件信息,实现高效更新。
摘要由CSDN通过智能技术生成
实习期间做的是存储服务,存储文件上传到腾讯云的OSS上后,本地数据库会记录文件的相关信息。比如名称、大小、下载路径等等。时间久了,有时候会出现腾讯云上存在这个文件,但是本地数据库没有它的信息。或者本地存在某文件的信息,但是云上却没有,这就需要主动把本地多余的文件信息删除掉。这时候,就需要编写一个同步更新存储文件的接口了,实现云上和数据库的信息保持同步。
刚开始的时候,我用的是硬着来实现这个这个接口的。我是先把得到云上文件的List,本地数据库文件信息的List。先用两个for循环,向本地数据库添加云上存在而数据库不在的文件信息。接着再两个for循环把本地数据库冗余文件信息删除。用了四个for循环,现在想想都可怕。

最近需要优化的时候,才想到利用map的key值唯一性的特点来解决这个问题。上传的文件名uploadName(与原文件名不同)是唯一值的,所以可作为map的key值。

方法是先获取数据库文件信息的map集合,再与腾讯云上的文件List中的uploadName进行key值对比,对比为空的情况下证明本地数据库不存在该文件信息,需要进行插入数据库操作;不为空则证明存在该信息,map中remove掉改信息,最后map中剩下的则是云上不存在的冗余文件信息。map遍历删除即可。

//1.添加腾讯云存储上有,本地数据库没有的记录进来
// 2.remove掉map(数据库)和腾讯云存储均存在的记录,最后map剩下的是本地数据库的冗余记录
//获取数据库文件信息的map集合
Map<String, OssFileEntity> map = oss
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值