草庐IT

day04-1群聊功能

多用户即时通讯系统044.编码实现034.5功能实现-群聊功能实现4.5.1思路分析群聊的实现思路和私聊的实现非常类似。不同的是:私聊时,服务端接收到消息后,只需要找出接收方的socket并发送消息即可群聊时,服务端在接收到消息后需要遍历集合中所有的线程,找出除了发送方的所有客户端的socket,并发送消息群聊思路:客户端-发送者:用户在控制台输入信息,客户端接收内容将消息构建成Messgae对象,通过对应的socket发送给服务器服务器:读取客户端(发送者)发送给所有用户(接收者)的消息从管理线程的集合中,遍历所有线程,获取所有socket(除了发送者本身)将Message对象转发给所有的接

day04-2发送文件

多用户即时通讯系统044.编码实现034.6功能实现-发送文件功能实现4.6.1思路分析客户端(发送者):先把文件a.jpg读取到客户端的字节数组把文件对应的字节数组封装到message对象[包含文件内容,发送者,接收者]将message对象发送到服务端服务端:接收到message对象拆解message对象的getteruid,获取接收者用户的通信线程,得到socket把message转发给指定用户客户端(接收者):在接收到包含有文件的message消息后,读取对应的文件字节数组,将该数组刷出到磁盘4.6.2代码实现1.客户端:1.修改MessageType接口在该接口中拓展消息类型Strin

day04-2发送文件

多用户即时通讯系统044.编码实现034.6功能实现-发送文件功能实现4.6.1思路分析客户端(发送者):先把文件a.jpg读取到客户端的字节数组把文件对应的字节数组封装到message对象[包含文件内容,发送者,接收者]将message对象发送到服务端服务端:接收到message对象拆解message对象的getteruid,获取接收者用户的通信线程,得到socket把message转发给指定用户客户端(接收者):在接收到包含有文件的message消息后,读取对应的文件字节数组,将该数组刷出到磁盘4.6.2代码实现1.客户端:1.修改MessageType接口在该接口中拓展消息类型Strin

day04-3服务器推送新闻

多用户即时通讯系统044.编码实现034.7功能实现-服务器推送消息功能实现4.7.1思路分析服务器推送新闻,本质其实就是群发消息在服务器启动一个独立线程,专门负责推送新闻该线程通过管理线程的集合,把所有的线程的socket拿到,并发送Messgae对象信息客户端通过接收,自然就拿到了新闻推送信息4.7.2代码实现只需要改动服务端即可1.创建Utility类该类与客户端的工具类一致,用于处理各种情况的输入packageqqserver.utlis;/***工具类的作用:*处理各种情况的用户输入,并且能够按照程序员的需求,得到用户的控制台输入。*/importjava.util.Scanner;

day04-3服务器推送新闻

多用户即时通讯系统044.编码实现034.7功能实现-服务器推送消息功能实现4.7.1思路分析服务器推送新闻,本质其实就是群发消息在服务器启动一个独立线程,专门负责推送新闻该线程通过管理线程的集合,把所有的线程的socket拿到,并发送Messgae对象信息客户端通过接收,自然就拿到了新闻推送信息4.7.2代码实现只需要改动服务端即可1.创建Utility类该类与客户端的工具类一致,用于处理各种情况的输入packageqqserver.utlis;/***工具类的作用:*处理各种情况的用户输入,并且能够按照程序员的需求,得到用户的控制台输入。*/importjava.util.Scanner;

day05-功能实现04

家居网购项目实现04以下皆为部分代码,详见https://github.com/liyuelian/furniture_mall.git10.功能09-后台管理删除家居10.1需求分析/图解需求如下:管理员进入到家居管理页面点击删除家居连接,弹出确认窗口,确认删除,取消放弃10.2思路分析10.3代码实现10.3.1dao层FurnDAO接口/***通过传入的id,删除furn表中对应的记录**@paramidid*@return返回受影响的行数*/publicintdeleteFurnById(intid);FurnDAOImpl@OverridepublicintdeleteFurnByI

day05-功能实现04

家居网购项目实现04以下皆为部分代码,详见https://github.com/liyuelian/furniture_mall.git10.功能09-后台管理删除家居10.1需求分析/图解需求如下:管理员进入到家居管理页面点击删除家居连接,弹出确认窗口,确认删除,取消放弃10.2思路分析10.3代码实现10.3.1dao层FurnDAO接口/***通过传入的id,删除furn表中对应的记录**@paramidid*@return返回受影响的行数*/publicintdeleteFurnById(intid);FurnDAOImpl@OverridepublicintdeleteFurnByI

day37-IO流04

JavaIO流044.常用的类034.4节点流和处理流024.4.5对象处理流-ObjectInputStream和ObjectOutputStream1.序列化和反序列化例子1:看一个需求将intnum=100这个int类型的数据保存到文件中,注意不是100数字,而是int100,并且能够从文件中直接恢复int100将Dogdog=newDog("小黄",3)这个Dog对象保存到文件中,并且能够从文件恢复。上面的要求,就是能够将基本数据类型或者对象进行序列化和反序列化操作序列化和反序列化序列化就是在保存数据时,保存数据的值和数据类型反序列化就是在恢复数据时,恢复数据的值和数据类型需要让某个对

day37-IO流04

JavaIO流044.常用的类034.4节点流和处理流024.4.5对象处理流-ObjectInputStream和ObjectOutputStream1.序列化和反序列化例子1:看一个需求将intnum=100这个int类型的数据保存到文件中,注意不是100数字,而是int100,并且能够从文件中直接恢复int100将Dogdog=newDog("小黄",3)这个Dog对象保存到文件中,并且能够从文件恢复。上面的要求,就是能够将基本数据类型或者对象进行序列化和反序列化操作序列化和反序列化序列化就是在保存数据时,保存数据的值和数据类型反序列化就是在恢复数据时,恢复数据的值和数据类型需要让某个对

day05-线程的应用04

7.线程的应用037.4坦克大战5.0版增加功能:我方坦克在发射的子弹消亡之后,才能发射新的子弹==>拓展:发射多颗子弹怎么办,控制一次最多只能发射5颗子弹让敌人坦克发射的子弹消亡之后,可以再发射子弹当敌人的坦克击中我方坦克之后,我方坦克消失,并出现爆炸效果7.4.1功能1plus:我方坦克连发子弹思路:要发射多颗子弹,就使用Vector保存子弹对象在绘制我方子弹的时候需要遍历Vector集合同时要修改击中判定方法hitTank修改处1:Hero类:packageli.TankGame.version05;importjava.util.Vector;/***@author李*@version