# chatRoomDev多人聊天室
一直没有用心开发项目,决定趁这次机会为开源社区持续贡献绿色
想来想去做了一个基于springboot开发的聊天系统,感觉网络编程这一块比较能学到技术,其中大部分借鉴于大佬**Kanarien** 的开源版本,做了适当改进QwQ
贴出大佬的github地址(づ ̄ 3 ̄)づhttps://github.com/Kanarienvogels
参考博客https://segmentfault.com/a/1190000015681145
[TOC]
## 1.项目技术支持
>开发工具:IDEA2019.3
>
>JDK:jdk1.8
>
>浏览器:chrome浏览器
>
>数据库:mysql5.7,redis
>
>其他技术
>
>>springboot
>>
>>mybatis
>>
>>Netty 4
>>
>>WebSocket + HTTP
>>
>>JQuery
>>
>>Bootstrap 3 + Bootstrap-fileinput(前端不太会写,原封不动搬QvQ(大佬对不起
>>
>>Maven
## 2.项目设计
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。
Netty,为了尽可能提升性能,Netty采用了串行无锁化设计,在I/O线程内部进行串行操作,避免多线程竞争导致的性能下降。表面上看,串行化设计似乎CPU利用率不高,并发程度不够。但是,通过调整NIO线程池的线程参数,可以同时启动多个串行化的线程并行运行,这种局部无锁化的串行线程设计相比一个队列-多个工作线程模型性能更优。——摘取自《Netty高性能之道》
选netty来处理网络事件的连接和业务处理主要是为了提高服务器性能QvQ,不然我这菜鸡项目撑不了太多并发

Websocket是html5提出的一个协议规范,是为解决客户端与服务端实时通信而产生的技术。websocket协议本质上是一个基于tcp的协议,是先通过HTTP/HTTPS协议发起一条特殊的http请求进行握手后创建一个用于交换数据的TCP连接,此后服务端与客户端通过此TCP连接进行实时通信。
WebSocket API最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。 浏览器和服务器只需要要做一个握手的动作,在建立连接之后,服务器可以主动传送数据给客户端,客户端也可随时向服务器发送数据。
选择websocket做通信协议是因为这样可以建立持久的浏览器服务器连接,而且服务器还可以主动向浏览器发送消息,这样像是群组聊天,服务器可以主动检测所有在线用户逐个发送消息

数据库的选择
除了用传统的mysql我还用了redis用来保存离线消息和群组消息缓存
Redis特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供String,list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
## 3.项目结构

B/S架构,配置文件(config),dao,mapper(持久层),model(实体类),service(服务层),util(工具类),web(控制层,拦截器,服务器业务设计)
## 4.项目展示
先从配置文件配置数据库参数和文件保存地址
文件上传路径

mysql数据库

redis数据库

导入mysql数据库文件(chatroom.sql),保存了用户的信息,用来登录

启动入口

开两个浏览器线程,一个登录001,另一个002

001向在线的002发送消息

002接收回复

001向共享群聊发送消息(群聊消息被缓存,方便下次查看)

002向离线的003发送消息(因为003离线,消息缓存)

003上线,看到新消息并接收



功能展示完成
## 5.结语
以上是聊天室的全部功能,还有很多可以改进的地方,欢迎提交bug,此项目将长期维护并用于开源学习
没有合适的资源?快使用搜索试试~ 我知道了~
java毕业设计 基于SpringBoot+Mybatis开发的聊天系统的设计与实现+详细文档+全部资料(优秀项目)

共163个文件
png:58个
java:41个
jpg:17个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 201 浏览量
2024-04-17
11:12:52
上传
评论
收藏 1.55MB ZIP 举报
温馨提示
【资源说明】 java毕业设计 基于SpringBoot+Mybatis开发的聊天系统的设计与实现+详细文档+全部资料(优秀项目)java毕业设计 基于SpringBoot+Mybatis开发的聊天系统的设计与实现+详细文档+全部资料(优秀项目) 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕设项目、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 3、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论



























收起资源包目录





































































































共 163 条
- 1
- 2
资源评论


不走小道
- 粉丝: 3396
- 资源: 5048
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 创建一个Flutter todolist应用
- 2025年销售工作计划.docx
- 厦门大学大数据团队详述:大模型技术及其在多领域的应用与展望
- script2.ipynb
- TEMU官方API文档资源包(2025/03/10)
- 公司人事管理信息系统小程序
- js微信小程序花麻将胡牌分数计算器源码!
- 管家婆辉煌ERP H3 13.11.zip
- 管家婆辉煌ERP H5 V1311.zip
- 管家婆辉煌ERP V13.02.zip
- 水火箭————————————————————————
- elastcsearch-7.10.2 docker镜像压缩包
- 教育管理教研组全维发展蓝图:全景学术成长体系优化与命名策略设计 这篇文章详细分析并优化了原有的“全景学术成长体系”名称,旨在创建一个更具吸引力且准确反
- 姓名+新员工花名册.xlsx
- 5G接入网架构基础及其相关部署方法
- kernel-uek-3.8.13-44.1.1.el6uek.x86_64.rpm
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
