Skip to main content

David LiuAbout 2 min

并且,我注重学习与实践相结合,参加了十余项科创比赛。我将主要分享以下两个竞赛经历

我参与设计并开发了一款基于地点的增强现实ios应用,选用SpringBoot, Redis等技术,包含放置ar留言板、连续签到、装扮抢购等功能。去年在浙大,获得了中国高校计算机大赛移动应用创新赛全国二等奖。

右边就是在实地放置AR留言板的演示视频。

在实现方面,我使用了Redis-ZSet存储用户点赞信息,将点赞日期作为score值,并通过 BitMap 实现用户连续签到统计功能,只需要长度为31位的二进制数,就可以存储一个月登陆与否的信息。

🌟点赞日期作为score值;用户id,存的是他关注的人,每个用户id+业务前缀作为key,key下面存set集合,存放所有关注他的人的id,取交集;用户每个月是一个bitmap,只需要长度为31位的二进制数,就可以存储一个月登陆与否的信息,只需要4bit以内(一个int空间),判断是否连续登陆

rabbitmq下单的时候使用自行封装的RedisIDWorker生成id,通过消息队列将id发送给创建订单的队列,消费者依次读取id,生成id订单;同时给延迟交换机发送任务,过期后自动失效。

RedisIDWorker采用时间戳结合当日的字增ID拼接而成,保证递增性和唯一性。

发送创建的同时给延迟交换机发送延迟任务40mins后校验id键,是否已经支付状态,否则改为已失效状态。

另外,我还参与了字节跳动第四届青训营,也是负责后端数据存储等工作,在用户图片数据方面,我使用腾讯云 COS 存储,并通过限制大小、校验后缀等方式预防文件上传漏洞;用户密码方面,我使用 MD5 以及随机加盐算法保证用户密码安全性。

🌟接受文件的类型 MultipartFile,调用方法,获取文件大小、名称后缀,防止文件过大或者用户上传错误文件。