基本信息
大家好!我是神马都会亿点点的毛毛张!
研究生就读于西安电子科技大学
自媒体平台见主页侧边栏
个人技能
- 熟练掌握Java基础、集合、多线程,熟悉JVM内存区域、垃圾回收、类加载等概念
- 熟练使用Spring/SpringBoot/SpringMVC等基础开发框架,了解IOC、AOP等概念,熟悉SpringMVC执行流程
- 熟练掌握MySQL,深入理解事务及其原理、存储引擎、索引、锁机制、MVCC、各种日志等
- 熟练掌握Redis,了解数据结构底层原理、RDB、AOF、缓存穿透、击穿以及雪崩及解决方案、Sentinel等知识
- 了解Docker、Git、Maven的基本使用
- 熟悉计算机网络、数据结构与算法等基础计算机原理知识
- 熟悉Python编程与PyTorch框架,熟悉多模态检索算法,已过英语四六级
- 熟悉Linux命令以及Shell编程(实习期间部署模型)
- 其它:了解大模型微调、及部署,了解PyTorch深度学习经典框架、NLP任务以及机器学习等
- 具备自媒体运营能力,运营CSDN账号累计产出原创内容100+篇,收获7000+粉丝及20w+阅读量,同步拓展B站/微信公众号等多平台运营
项目经历
技术派社区项目
技术栈:Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、RabbitMQ、MongoDB、Docker
项目描述:技术派是一个前后端分离的,面向互联网开发者的技术内容分享与交流平台,包括前端 PC和管理后台。我们通过文章、教程、A1助手等产品和服务,旨在打造一个激发开发者创作灵感,传播优质技术内容,陪伴开发者快速成长的技术社区。
责任描述:作为核心研发人员,主要负责登录认证、消息通知、文章教程、A1助手,以及管理后台的开发工作。
- 通过验证码和前端保持半长链接映射关系,当用户扫码关注公众号并输入验证码后,发起回调,识别用户信息并找到对应半长链接,实现系统自动登录;
- 将用户评论、点赞、收藏、系统消息发送到 RabbitMQ,实现消息的异步解耦
- 利用 AOP 切面技术,当系统收到新的消息时(如评论、点赞等),自动将这些消息发送至 Kafka 消息队列中。接着,通过消费者服务从 Kafka 中取出消息,并将其存储到 Redis 缓存中等待用户消费。
- 通过 Canal 框架实现了 MySQL 与 ElasticSearch 的数据同步,确保了实时搜索的准确性。
- 通过 Redis 的 zset 实现用户活跃度排行,并通过先写 MySQL,再删除 Redis 的方案来保证高并发场景下的缓存一致性。
- 基于 ThreadLocal 在登录校验拦截器中封装线程隔离的全局上下文,以便在线程内部存储用户信息,减少用户信息的数据库查询次数。
- 实现自定义的 Markdown 编辑器,通过复制粘贴即可将非同源的图片上传至 OSS 实现智能化转链,并借助线程池和异步任务 CompletableFuture 提升系统的高并发能力;
- 通过 Nginx 代理,将客户端请求转发到目标服务器的后端 API 接口,从而解决跨域问题;并配置 SSL证书以保证 HTTPS 请求的安全性,配置动静分离以提升资源的加载速度
- 采用 HandlerExceptionResolver 的全局异常处理策略,提高代码的健壮性,用户体验得到了很好的保证
- 通过 AOP +TracelD 记录接口访问日志,实现任务的追踪、监控和诊断。
- 集成本地缓存 Guava 和 Caffeine,有效提高服务的吞吐率,QPS 经过实测提升了近 30%;
- 为了满足社区在高并发场景下业务 ID 的唯一性和可追溯性,我们实现了一套基于雪花算法(nowflake)的ID 生成方案,进一步降低了ID生成的延迟。
- 通过 Liquibase 实现数据库表的自动创建和初始化,以及版本管理,并且兼容 MVSQL和其他不支持Liquibase 的数据,如 mariadb。
- 通过提前建立 Socket 链接,来解决本地服务启动时 8080 端口可能被占用的问题;
- 搭建 Redis 集群、数据库的读写分离,以实现服务的高可用和高性能;
- 引入 Caffeine + Redis 构成多级缓冲,解决热门数据(首页流媒体、专栏教程)的吞吐量瓶颈
- 通过集成 xxl-job 实现了定时任务的管理和执行,如自动清理过期文章缓存、社区数据统计等
- 借助 Redis 的 zet 数据结构实现轻量级的作者白名单,提升优秀作者发布文章的用户体验;
- 我们通过 Shell 脚本实现了一套可以在 Linux 生产环境下一键源码部署源码的成熟方案,极大缓解了社区在生产环境下热部署的压力。同时也支持 Docker 容器化部署,显著提高了社区的运维效率。
- 采用自旋锁策略优化缓存架构,针对热 key 的并发访问进行同步,防止其失效时导致的缓存击穿
- 派聪明 Al 助手通过 WebSocket 实现前后端的及时通信,并且通过异步流的方式实现消息一点一点输出的效果;
- 应用策略模式来支持多家 A1 大模型的灵活对接,目前已经成功集成了智谱 A Alltools API、讯飞星火 4.0 API和 ChatGPT 3.5 API.
- 由于 AI生成复杂响应时需要等待,所以选用了大模型的流式 Stream API 并结合 SSE 实时推送返回给前端实现消息一点一点输出的效果。
- 鉴于生成式的回答可能存在不可靠信息,所以借助敏感词校验开源库 sensitive-word 对用户输入内容和响应内容做了自定义过滤,极大保证了内容平台的合规性。
- 利用 Spring Boot Actuator 集成 Prometheus 和 Grafana 搭建一套完整的服务监控体系,确保了社区平台的稳定运行。
- 结合 MyBatis 拦截器和 DFA 算法实现了一套完善的敏感词自定义过滤方案,确保了社区内容的健康和安全
- 通过 React+Ant-Design+Vite+ECharts 完成了 Admin 端的开发工作,界面非常漂亮,并且极大地提高了项目日常的运营效率。
- 利用 RestHighLevelClient 接入 ElasticSearch 的全文搜索能力,极大提升了首页文章的关键字检索速度,同时兼容 ES 未安装时继续走 MySQL 的查询逻辑。
睿思积分商城-秒杀业务模块
技术栈:SpringBoot、Redis、MySQL、RocketMQ、MyBatis、Nginx
项目描述:睿思为西电内部使用的论坛,本项目为睿思积分商城开发了秒杀业务模块。
个人工作:
- 使用Redis的zset作为延时队列,在秒杀活动开始前一段时间将所需数据存于缓存。
- 秒杀信息验证业务中使用了秒杀大闸,创建订单业务中使用令牌桶与队列泄洪,实现了流量削峰与限流。
- 使用RocketMQ事务型消息异步同步数据库,解决了高并发下扣减商品库存带来的锁竞争问题。
- 使用Redisson对秒杀创建订单业务加锁,防止用户重复下单。
- 使用Nginx作为动静分离服务器以及反向代理服务器,实现负载均衡。