type
status
date
slug
summary
tags
category
icon
password
@ZZHow(ZZhow1024)
参考课程:
【韩顺平 循序渐进学Java】
本章 Project:
0685_项目开发流程
- 项目开发流程:
需求分析 → 设计阶段 → 编码实现 → 测试阶段 → 实施阶段
- 具体流程:
- 需求分析
- 需求分析师:懂技术 + 懂行业
- 出需求分析报告(白皮书),该项目功能,客户具体要求
- 设计阶段
- 架构师/项目经理
- 设计工作(UML 类图,流程图,模块设计,数据库,架构)
- 原型开发
- 组建团队
- 实现阶段
- 程序员/码农
- 完成架构师的模块功能
- 测试自己模块
- 测试阶段
- 测试工程师
- 单元测试,测试用例,白盒测试,黑盒测试,集成测试
- 实施阶段
- 实施工程师(开发能力/环境配置部署能力)
- 项目正确的部署到客户的平台,并保证运行正常
- 身体好
- 维护阶段
- 发现 bug 解决/项目升级
0686_多用户通信需求
- 需求分析
- 用户登录
- 拉取在线用户列表
- 无异常退出
- 私聊
- 群聊
- 发文件
- 服务器推送新闻
0687_通信系统整体分析
- 功能实现 - 用户登录
- 功能说明
人为规定 userID = admin,password = 000 登录,后面使用 HashMap 模拟数据库,可以多个用户登录
0688-0694_QQ用户登录
- 完成通讯的类和对象:
User
类、Message
类 和MessageType
接口
- 完成登录界面:
QQView
类
- 完成客户端连接服务器端:
UserClientService
类 和 与服务器端保持通信的线程ClientConnectServerThread
类
- 客户端登陆成功后启动
ClientConnectServerThread
线程,完成管理客户端连接服务器端的线程的类:ManageClientConnectServerThread
类
- 服务器端验证登录
QQServer
类,与客户端保持通信的线程ServerConnectClientThread
类
- 服务器端完成管理服务器端连接客户端的线程的类
ManageServerConnectClientThread
类
- 测试登录功能,使用
ConcurrentHashMap
模拟数据库存储合法用户的 userID 和 password
0695-0697_拉取在线用户
- 客户端和服务器端扩充
MessageType
接口中的消息类型
客户端
UserClientService
类中新增 onlineFriend()
方法用于向服务器端请求在线用户列表,ClientConnectServerThread
类中增加对 MESSAGE_RES_FRIEND
类型消息的响应- 服务器端
ServerConnectClientThread
类中新增对MESSAGE_GET_FRIEND
类型消息的响应,ManageServerConnectClientThread
类中新增getOnlineUsersList()
方法用于获取在线用户列表
0698-0699_无异常退出系统
- 客户端
UserClientService
类中新增logout()
方法用于向服务器端发送登出消息并退出客户端程序
- 服务器端
ManageServerConnectClientThread
类中新增removeServerConnectClientThread
方法从集合中移除已登出的用户线程对象,ServerConnectClientThread
类中新增对MESSAGE_CLIENT_LOGOUT
类型消息的响应并优化客户端发生异常时的处理
0701-0702_私聊代码实现
- 客户端新增
MessageClientService
类提供与消息相关的服务,ClientConnectServerThread
类中新增对MESSAGE_COMMON
类型消息的响应
- 服务器端
ServerConnectClientThread
类新增对MESSAGE_COMMON
类型消息的响应
- 服务器端增加对接收方在线状态的判断,客户端增加对服务器端提醒消息的响应
0703_群发分析实现
- 服务器端和客户端
MessageType
接口扩充MESSAGE_TO_ALL
类型消息
- 客户端
MessageClientService
类新增sendMessageToAll
方法用于发送群发消息到服务器端,ClientConnectServerThread
类新增对MESSAGE_TO_ALL
类型消息的响应
- 服务器端
ManageServerConnectClientThread
类新增getHashMap()
方法,ServerConnectClientThread
类新增对MESSAGE_TO_ALL
类型消息的响应
0705-0706_发文件实现
- 客户端新增
FileClientServer
类并提供sendFileToOne
方法用于发送文件信息包
- 服务器端和客户端
MessageType
接口扩充MESSAGE_FILE
类型消息,Message
类新增文件消息相关属性
- 服务器端
ServerConnectClientThread
类新增对MESSAGE_FILE
类型消息的响应,客户端ClientConnectServerThread
类新增对MESSAGE_FILE
类型消息的响应
0707_服务端推送新闻
- 服务器端新增
SendNewsToAll
线程用于服务器推送新闻,在QQServer
的构造方法中启动该线程
- 客户端
ClientConnectServerThread
类中优化收到服务器端消息的提示
0708_离线留言和发文件
- 扩展功能
- 实现离线留言,如果某个用户没有在线,当登录后,可以接收离线的消息
- 实现离线发文件,如果某个用户没有在线,当登录后,可以接收离线的文件
- 思路
- 服务器端创建集合(ConcurrentHashMap, key → receiver, value → ArrayList),存放离线消息
- 当有用户登录后取出该用户的离线消息并发送