本文将持续更新~~
历史文章:
后端项目亮点合集(1):Redis篇_后端项目有什么亮点-CSDN博客
本文的作用:
(1)简历优化:针对自己的简历,对Redis亮点进行优化升级,或者进行补充;
(2)项目设计提供参考:下文中的Redis解决方案和最佳实践可以作为项目设计的参考;
(3)搜索导向与教程查找:下文的关键词和技术点可以作为搜索相关教程和资料的搜索项;
温馨提示:
在写项目亮点的时候,尽可能地量化出结果,并且适当加粗,比如:“使用Redis缓存,将请求时间500ms降低至25ms,大大提升了系统性能”
——来自求职经验分享(1):一份合格的简历应该如何写?-CSDN博客
一、消息队列(Kafka、RabbitMQ)
- 使用消息队列(如 Kafka)实现评论功能的异步削峰,减轻系统的负载压力。
- 对评论功能进行了预加载,提高响应速度。
- 使用 Canal 结合消息队列实现数据库和缓存的同步,保证数据的一致性。
- 使用验证码 + 消息队列方式对秒杀接口进行限流,实现削峰填谷;同时使用消息队列实现异步订单处理。(适用于电商秒杀系统)
- 使用消息队列实现订单延迟关闭功能。
- 使用 RabbitMQ 的死信队列实现自动取消订单功能。
- 使用消息队列实现海量数据的异步推送。
- 使用 RabbitMQ 进行结果通知,基于延迟队列处理超时未支付订单。
二、ElasticSearch
- 基于 ElasticSearch 的机器人对话功能,通过 ElasticSearch 分词查询提高回复内容的准确性。
- 使用 ElasticSearch 结合中文分词器和拼音分词器实现搜索时自动补全功能。
- 使用 ElasticSearch 实现文章内容的快速查找。/ 使用 ElasticSearch 实现知识库。
- 使用 ElasticSearch 存储账户信息进行模糊提示。
- XX发布使用本地消息表和 XXL-Job 实现分布式事务控制,使用 Elasticsearch 为XX建立索引,提高XX检索效率。
- 使用 ElasticSearch 搜索引擎优化帖子搜索的功能,并使用 Quartz 定时计算帖子的分数,实现热帖排行。
三、MySQL
- 数据库使用 Mycat 实现分库分表,以及两主两从读写分离。
- 使用乐观锁解决超卖问题(适用于电商秒杀系统)。
- 使用主键分页和 INNER JOIN 延迟关联优化深分页问题。
- 使用 JDBC 和事务的批量操作,将数据分批插入到数据库中,以提高效率和性能。
- 修复慢查询问题,通过使用线程池将 in 子查询进行分批处理,提高查询效率。
- 使用乐观锁解决并发冲突。
- 查询千万数据,利用 SQL 事务和多线程提高大量插入的速度,避免内存溢出。
四、多线程
- 将耗时的业务逻辑封装,通过启动固定数量的线程,从队列中取出任务进行异步执行,防止接口响应超时。
- 使用 Completablefuture 线程池异步的方式实现商品的页面显示,将不同表的操作异步调用后任务结合返回数据。
- 通过 ReentrantLock+自旋锁机制解决 Token 刷新问题,避免大量用户同时请求,减少大量资金损耗。
- 使用 Disruptor 替代异步编排 Completablefuture 和线程池,解决多线程下的事件驱动问题,提高系统吞吐量。
五、文件操作
- 使用 Files.walk(source).parallel() 进行文件移动,利用多线程并行处理,减少 I/O 操作和 CPU 等待时间。(适用于需要上传文件的项目)
- 使用 NIO 中的 FileChannel 类进行文件下载,利用零拷贝特性,提高文件移动速度。
- 使用 WebUpload 中间件实现大文件的分片上传,并利用 MD5 实现重传秒传(断点续传)功能,提高文件上传速度。
- 使用 EasyExcel 实现 Excel 文件批量导入和导出。
- 使用 MinIO 高性能对象存储实现图片和视频等文件的存储。
六、安全
- 使用 JWT 实现注册分布式单点登录,以及用户信息校验,保障登录用户信息安全。
- 使用时间戳+nonce方案防止重放攻击。
- 对API接口进行签名,防止数据被篡改。
- 使用接口隐藏(接口加盐)和状态模式设计模式来实现秒杀接口的防刷限流。(适用于秒杀系统)
- 实现第三方Gitee登录。
- 使用 SpringSecurity 实现用户登录。
七、其他
- 使用预先设定好的敏感词初始化前缀树,实现对用户发布的敏感词进行过滤。
- 使用 RateLimiter 类 或者 Redis + Lua 脚本实现接口限流。
- 使用 WebSocket 实现用户下单或催单时能够给管理端进行提醒,避免了商家频繁查看订单页面。
- 使用 WebSocket 实现在线聊天功能(适用于聊天模块,如好友私聊、客服聊天)。
- 使用 SpringTask 处理超时订单,避免手动操作。
- 使用 Quartz 任务调度框架,定期更新话题浏览量。
- 使用雪花算法生成分布式 ID。
- 使用防重 Token 令牌实现接口幂等性。
- 使用 FreeMarker 自动生成增删查改代码(适用于代码生成项目)。
- 使用 Jenkins + Docker 进行自动化部署和持续集成,解决微服务项目部署繁琐的问题。
- 使用 XXL-Job 作为分布式任务调度平台,实现长任务的异步处理。
- 使用 AOP+TraceID 记录接口访问日志,实现任务的追踪、监控和诊断。
- 使用 Xxl-job 定时将新增记录更新到数据库做备份,提高系统性能和响应速度。
- 设计 API 签名认证算法,为用户分配唯一 ak/sk 以鉴权,保障调用的安全性。
- 使用 Java Runtime 对象的 exec 方法实现了对 Java 程序的编译和执行,并使用 Docker 隔离用户代码,实现了更安全的代码沙箱。(适用于 OJ 平台)
- 使用 Elastic Stack 搭建日志收集系统,对调试日志、业务日志、错误日志、接口访问日志进行分场景监控。
八、第三方集成
- 使用 SpringBoot 对接支付宝,实现支付模块。
- 使用七牛云 OSS 对象存储存储菜品图片,加快图片响应速度。
九、SpringCloud
- 使用 GateWay 网关解决跨域问题,以及路由转发。
- 各服务间通过 Fegin/Dubbo 进行同步通信。
- 使用 Sentinel 实现微服务的流控、隔离、熔断降级等功能。
- 使用 Seata 解决分布式事务问题,采用 AT 模式,构建 undolog 日志表,实现数据最终一致性。
十、设计模式
- 使用 Builder 模式构建复杂对象。
- 使用责任链模式重构请求数据准确性检验。
- 使用策略模式实现评论服务,根据不同业务场景选择合适的评论方案。
- 实现 OAuth2.0 协议时,采用策略模式为接入用户中心的应用提供三类授权服务。
后续将推出
(1)持续更新文章:消息队列、Elasticsearch、Mysql、多线程、文件操作、安全、设计模式等亮点集合;
(2)基于上述文章亮点的具体实现以及面试八股文细节;
(欢迎点赞收藏关注~~)
更多历史精彩文章:
求职经验分享(1):一份合格的简历应该如何写?-CSDN博客
求职经验分享(2):简历如何优化以及如何应对面试【后端篇】-CSDN博客
求职经验分享(3):如何找到理想的应届生求职项目?【后端篇】-CSDN博客
想要快速掌握Redis、消息队列、Elasticsearch、MySQL以及多线程等技术的最新亮点和合集吗?现在,老白特别为您准备了一份全面的技术亮点合集(持续更新中),请关注公众号后台私信“ 技术亮点合集”,即可免费获取!感兴趣的小伙伴,千万不要错过这个机会!关注我们的公众号:绝命Coding