多用户即时通讯系统034.编码实现024.4功能实现-私聊功能实现4.4.1思路分析客户端-发送者:用户在控制台输入信息,客户端接收内容将消息构建成Messgae对象,通过对应的socket发送给服务器服务器:可以读取到客户端(发送者)发送给某个用户(接收者)的消息从管理线程的集合中,根据messgae对象的信息,获取到接收者的userId,从而获取接收者的socket最后将Message对象转发给指定客户(接收者)客户端-接收者:在接收者的线程(通信线程中),读取到发送者的message消息,并显示即可4.4.2代码实现1.客户端1.MessageClientService类这里新建一个类,
一、insert1、插入操作@RunWith(SpringRunner.class)@SpringBootTestpublicclassCRUDTests{@AutowiredprivateUserMapperuserMapper;@TestpublicvoidtestInsert(){Useruser=newUser();user.setName("Helen");user.setAge(18);user.setEmail("55317332@qq.com");intresult=userMapper.insert(user);System.out.println(result);//影响的
一、insert1、插入操作@RunWith(SpringRunner.class)@SpringBootTestpublicclassCRUDTests{@AutowiredprivateUserMapperuserMapper;@TestpublicvoidtestInsert(){Useruser=newUser();user.setName("Helen");user.setAge(18);user.setEmail("55317332@qq.com");intresult=userMapper.insert(user);System.out.println(result);//影响的
JavaIO流034.常用的类024.4节点流和处理流4.4.1基本介绍节点流可以从一个特定的数据源读写数据,如FileReader、FileWriter数据源就是存放数据的地方,比如文件、数组、字符串、管道等处理流(也叫包装流)是“连接”在已经存在的流(节点流或者处理流)之上,为程序提供更为强大的读写功能,也更加灵活,如BufferedReader、BufferedWriter节点流和处理流的区别和联系:节点流是底层流(低级流),直接和数据源相连接。处理流(包装流)对节点流进行了包装,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出。处理流对节点流进行了包装,使用了修饰器
JavaIO流034.常用的类024.4节点流和处理流4.4.1基本介绍节点流可以从一个特定的数据源读写数据,如FileReader、FileWriter数据源就是存放数据的地方,比如文件、数组、字符串、管道等处理流(也叫包装流)是“连接”在已经存在的流(节点流或者处理流)之上,为程序提供更为强大的读写功能,也更加灵活,如BufferedReader、BufferedWriter节点流和处理流的区别和联系:节点流是底层流(低级流),直接和数据源相连接。处理流(包装流)对节点流进行了包装,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出。处理流对节点流进行了包装,使用了修饰器
JavaGUI-坦克大战03-27.线程的应用027.3.坦克大战4.0版坦克大战4.0版增加功能:功能1.让敌人的坦克也能够发射子弹(可以有多个子弹)功能2.当我方坦克集中敌人坦克时,敌人的坦克就消失,如果能做出爆炸的效果更好功能3.让敌人的坦克也可以自由随机地上下左右移动功能4.控制我方坦克和敌人坦克在规定的范围内移动7.3.1功能1:敌方发射子弹功能1思路:在敌人坦克类使用Vector保存多个Shot当每创建一个敌人坦克时,就给该敌人坦克初始化一个Shot对象,同时启动Shot线程在绘制敌人坦克时,需要遍历敌人坦克对象Vector,绘制所有的子弹,当子弹isLive==false时,就从
JavaGUI-坦克大战03-27.线程的应用027.3.坦克大战4.0版坦克大战4.0版增加功能:功能1.让敌人的坦克也能够发射子弹(可以有多个子弹)功能2.当我方坦克集中敌人坦克时,敌人的坦克就消失,如果能做出爆炸的效果更好功能3.让敌人的坦克也可以自由随机地上下左右移动功能4.控制我方坦克和敌人坦克在规定的范围内移动7.3.1功能1:敌方发射子弹功能1思路:在敌人坦克类使用Vector保存多个Shot当每创建一个敌人坦克时,就给该敌人坦克初始化一个Shot对象,同时启动Shot线程在绘制敌人坦克时,需要遍历敌人坦克对象Vector,绘制所有的子弹,当子弹isLive==false时,就从
JavaGUI-坦克大战047.线程的应用037.3坦克大战4.0版7.3.4功能3:敌方坦克自由移动功能3:让敌人的坦克也可以自由随机地上下左右移动思路:因为要求敌人的坦克自由移动,因此需要将敌人坦克当做线程使用,EnemyTank类实现Runnable接口线程的run方法的具体操作为:根据当前的方向继续移动敌坦,然后改变敌坦移动方向,再继续移动,如此不断循环。break的条件是当前的敌人坦克被击中,即enemy.isLive==false。在MyPanel类中,每创建一个敌人坦克对象就启动一个线程。EnemyTank:packageli.TankGame.version04;importj
JavaGUI-坦克大战047.线程的应用037.3坦克大战4.0版7.3.4功能3:敌方坦克自由移动功能3:让敌人的坦克也可以自由随机地上下左右移动思路:因为要求敌人的坦克自由移动,因此需要将敌人坦克当做线程使用,EnemyTank类实现Runnable接口线程的run方法的具体操作为:根据当前的方向继续移动敌坦,然后改变敌坦移动方向,再继续移动,如此不断循环。break的条件是当前的敌人坦克被击中,即enemy.isLive==false。在MyPanel类中,每创建一个敌人坦克对象就启动一个线程。EnemyTank:packageli.TankGame.version04;importj
SpringMVC底层机制简单实现-03https://github.com/liyuelian/springmvc-demo.git7.任务6-完成控制器方法获取参数-@RequestParam功能说明:自定义@RequestParam注解和方法参数名获取参数。当浏览器访问Handler方法时,如果url带有参数,可以通过自定义的@RequestParam注解来获取该参数,将其值赋给Handler方法中该注解修饰的形参。如:url=http://ip:port/web工程路径/monster/find?name=孙悟空@RequestMapping(value="/monster/find"