缘由
在大学生活中,我发现很多同学虽然渴望社交,却苦于没有合适的渠道。传统的社交平台要么信息过载,要么匹配机制粗糙。于是,我萌生了开发 weconnected 的想法——一个让用户通过自定义标签(如“摄影”“考研”“Java后端”)快速找到志同道合伙伴的轻量级社交平台。
💡 项目初衷:降低高质量社交的门槛,让“找人”变得更精准、更自然。
项目概览
- 核心功能:
- 用户注册/登录(含密码加密)
- 自定义兴趣标签(可增删改)
- 基于标签的用户匹配与展示
- 简易个人主页
- 技术栈:
- 后端:Spring Boot 3 + MyBatis + MySQL + Redis
- 安全:盐值 + MD5 加密(可后续升级为 BCrypt)
- 工具:Knife4j(API文档)、Lombok、Maven
- 前端:Vue 3 + Vite + Vue Router + Axios(借助 CLI 脚手架 + AI 辅助)
后端设计亮点
1. 标签系统设计
- 用户标签存储在表
user中,支持一对多关系。 - 查询“相同标签用户”时,使用 SQL 的
JOIN实现高效匹配。 - 为提升性能,对高频查询(如热门标签用户列表)引入 Redis 缓存,设置合理过期时间。
2. 安全实践
- 密码采用 盐值 + MD5 加密存储(说明:MD5 已不推荐用于生产,但作为学习项目可接受;后续可替换为 Spring Security + BCrypt)。
3. API 文档与调试
- 集成 Knife4j,自动生成美观的 Swagger UI,方便前后端联调。
前端实现简述
由于我主要专注后端开发,前端借助 Vue 3 官方脚手架(Vite) 快速搭建,并使用 AI 工具辅助编写组件逻辑(如标签选择器、用户卡片渲染)。虽然界面较为简洁,但功能完整、交互流畅。
🙏 欢迎前端高手提 PR 或建议!项目开源地址:https://github.com/darkyellowcat/weconnected
遇到的挑战与收获
挑战1:如何高效实现“标签匹配”?
→ 最初用全表扫描,性能差;后改用 Redis 缓存热门标签用户 ID 列表,QPS 提升明显。收获:完整走通一个全栈项目流程,加深了对 Spring Boot、Redis 缓存策略、RESTful API 设计的理解。
下一步计划
- 引入 WebSocket 实现实时聊天
- 用 Spring Security 重构认证模块
- 添加单元测试(JUnit + Mockito)
- 优化前端 UI/UX
结语
weconnected 不仅是一个技术练手项目,更是我对“技术如何解决真实问题”的一次尝试。如果你也在做类似的项目,欢迎交流!也欢迎 Star / Fork 项目,一起让它变得更好 🌟