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),存放离线消息
- 当有用户登录后取出该用户的离线消息并发送