# 校园Team **Repository Path**: zhouzhishan/campus_team ## Basic Information - **Project Name**: 校园Team - **Description**: 关于校园组队需求对接 - **Primary Language**: Unknown - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 1 - **Created**: 2020-08-07 - **Last Updated**: 2024-06-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 校园Team ## 一、介绍 关于校园组队需求对接。 本项目实现了高校内各种组队需求的对接功能,用户可以发布组队需求,发布的需求类型分为预约型和非预约型,可以编辑和删除已发布的组队需求,点赞和收藏其他用户发布的需求,取消已参加的组队预约,可以通过省份城市学校筛选找到自己学校的相关各种组队:比如竞赛组队、体育运动组队、游戏组队等,也可以跨校组队,用户通过组队信息的联系方式联系队长参与组队。 ## 二、灵感来源: 对于一个已经经历大学三年摸爬滚打的老油条,发现校园内的组队现象还是比较多的。 1. 竞赛为例子,各种各样的学生竞赛群数不胜数,如果想参加比赛却不知去哪里寻找队伍,是否有一个平台可以浏览各种比赛的组队需求,查看队伍信息,选择自己感兴趣的比赛参加? 2. 对于想考研的你,是否想寻找一个研友互相激励互相监督,这时候又该上哪里去寻找 3. 抑或是“外面的世界那么大,我想出去看看”,有什么渠道可以在校园内寻找可靠的驴友?或者是想跟隔壁学校的驴友一起组队呢? 4. 实习生、毕业生在这里找同学合租也是个不错的选择 。。。。 越想越不安,再加上新事物的好奇,于是在一个夜深人静的夜晚打开了墨刀,粗略进行了原型设计(直男UI惨不忍睹)、表的设计,然后就开始了。。 ## 三、功能预览 ### 1、首页浏览: ​ 在首页可以预览所有的校园组队需求信息,可以通过地域的三级联动查询查找自己感兴趣的同一省份校园的组队、同一城市校园的组队、指定学校内的组队 ![image-20200807232648761](README.assets/image-20200807232648761.png) ### 2、详情页: ​ 对于感兴趣的组队信息可以点击进来查看具体的组队要求、组队目的,如果想参加可以联系发布人,对于“需预约”的组队信息,无需联系,只要人数未满,可自行点击预约。 ![123](README.assets/123.png) ### 3、发布页: ​ 如果自己有缺队友也可以自己发布组队需求 ![image-20200807233711017](README.assets/image-20200807233711017.png) ### 4、我的页面: ​ 我的页面主要包含用户的基本信息、以及三大栏目:我的收藏、我的组队、我的预约 ![image-20200807233834052](README.assets/image-20200807233834052.png) ### 5、我的收藏: ​ 浏览过程中有自己心仪想要参加的组队可以先收藏下来,待会再看 ![image-20200807233925219](README.assets/image-20200807233925219.png) ### 6、我的组队: ​ 这里面包含了用户自己发布的组队信息,可以在这里删除或重新编辑自己的组队需求信息 ![image-20200807234006155](README.assets/image-20200807234006155.png) ### 7、我的预约: ​ 包含了用户所预约的所有组队信息 ![image-20200807234043503](README.assets/image-20200807234043503.png) ## 四、技术亮点分析: ******************************* 以上功能似乎只需要平凡的CRUD操作,但是关键在于把平凡的事情做的不平凡                                                                                                                    ——zzs ****************** 1. **预约的并发操作:** 问题:如果某个需预约的组队信息只剩下一个名额,此时有多名用户争抢,需要防止出现预约人数超过预期设定的总人数 解决方案:通过锁控制,在service层方法直接加锁,模仿ConcurrentHashMap的设计,设置一个大小为16的数组, 每个数组分配一个对象Object,对于预约的线程请求,将预约的组队信息进行分段, 根据组队信息的id对16进行取余,映射到Object的数组位置,去获取对应的锁。 Jmeter并发测试: 现在总人数14人,已有人数13人,还剩一个名额 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200618232735875.png) Jmeter设置1000个线程在1S内请求 ![在这里插入图片描述](https://img-blog.csdnimg.cn/202006182328419.png) 设置测试的预约接口 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200618232918304.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE1NzQ2OQ==,size_16,color_FFFFFF,t_70) 查看测试结果:不会出现人数过增的情况 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200618233107663.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200618233116995.png) 2. **Redis缓存** 对于部分常用而又不修改的数据使用Redis进行缓存:比如三级联动查询的省份、城市、学校 ## 五、结尾 Idea是美好的,然而现实是残酷的,当写完代码,后端部署到服务器时,小程序审核的噩耗来了。。 毕竟借用人家的平台,受限于人! ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200618233721876.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE1NzQ2OQ==,size_16,color_FFFFFF,t_70)