草庐IT

day03-2无异常退出

多用户即时通讯系统034.编码实现024.3功能实现-无异常退出系统4.3.1思路分析上述代码运行时,在客户端选择退出系统的时候,可以发现程序并没有停止运行,原因是:退出时,程序将循环标志loop设为false,退出了内层循环,而外层循环因为也用了loop来作为循环条件,外层循环也同样退出。此时在客户端类QQView中的主线程已经结束,但是在循环过程中,因为与服务端连接而产生的线程并没有结束,整个进程也就没有结束,因此程序仍在运行中。解决方法:客户端:在main线程中调用方法,给服务端发送一个退出系统的message对象,然后调用System.exit(0)指令,正常退出。这样整个进程就可以关

day03-3私聊功能

多用户即时通讯系统034.编码实现024.4功能实现-私聊功能实现4.4.1思路分析客户端-发送者:用户在控制台输入信息,客户端接收内容将消息构建成Messgae对象,通过对应的socket发送给服务器服务器:可以读取到客户端(发送者)发送给某个用户(接收者)的消息从管理线程的集合中,根据messgae对象的信息,获取到接收者的userId,从而获取接收者的socket最后将Message对象转发给指定客户(接收者)客户端-接收者:在接收者的线程(通信线程中),读取到发送者的message消息,并显示即可4.4.2代码实现1.客户端1.MessageClientService类这里新建一个类,

day03-3私聊功能

多用户即时通讯系统034.编码实现024.4功能实现-私聊功能实现4.4.1思路分析客户端-发送者:用户在控制台输入信息,客户端接收内容将消息构建成Messgae对象,通过对应的socket发送给服务器服务器:可以读取到客户端(发送者)发送给某个用户(接收者)的消息从管理线程的集合中,根据messgae对象的信息,获取到接收者的userId,从而获取接收者的socket最后将Message对象转发给指定客户(接收者)客户端-接收者:在接收者的线程(通信线程中),读取到发送者的message消息,并显示即可4.4.2代码实现1.客户端1.MessageClientService类这里新建一个类,

03-MyBatisPlus的CRUD 接口

一、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);//影响的

03-MyBatisPlus的CRUD 接口

一、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);//影响的

day36-IO流03

JavaIO流034.常用的类024.4节点流和处理流4.4.1基本介绍节点流可以从一个特定的数据源读写数据,如FileReader、FileWriter数据源就是存放数据的地方,比如文件、数组、字符串、管道等处理流(也叫包装流)是“连接”在已经存在的流(节点流或者处理流)之上,为程序提供更为强大的读写功能,也更加灵活,如BufferedReader、BufferedWriter节点流和处理流的区别和联系:节点流是底层流(低级流),直接和数据源相连接。处理流(包装流)对节点流进行了包装,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出。处理流对节点流进行了包装,使用了修饰器

day36-IO流03

JavaIO流034.常用的类024.4节点流和处理流4.4.1基本介绍节点流可以从一个特定的数据源读写数据,如FileReader、FileWriter数据源就是存放数据的地方,比如文件、数组、字符串、管道等处理流(也叫包装流)是“连接”在已经存在的流(节点流或者处理流)之上,为程序提供更为强大的读写功能,也更加灵活,如BufferedReader、BufferedWriter节点流和处理流的区别和联系:节点流是底层流(低级流),直接和数据源相连接。处理流(包装流)对节点流进行了包装,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出。处理流对节点流进行了包装,使用了修饰器

day03-2-应用线程02

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时,就从

day03-2-应用线程02

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时,就从

day04-应用线程03

JavaGUI-坦克大战047.线程的应用037.3坦克大战4.0版7.3.4功能3:敌方坦克自由移动功能3:让敌人的坦克也可以自由随机地上下左右移动思路:因为要求敌人的坦克自由移动,因此需要将敌人坦克当做线程使用,EnemyTank类实现Runnable接口线程的run方法的具体操作为:根据当前的方向继续移动敌坦,然后改变敌坦移动方向,再继续移动,如此不断循环。break的条件是当前的敌人坦克被击中,即enemy.isLive==false。在MyPanel类中,每创建一个敌人坦克对象就启动一个线程。EnemyTank:packageli.TankGame.version04;importj