7.线程的应用037.4坦克大战5.0版增加功能:我方坦克在发射的子弹消亡之后,才能发射新的子弹==>拓展:发射多颗子弹怎么办,控制一次最多只能发射5颗子弹让敌人坦克发射的子弹消亡之后,可以再发射子弹当敌人的坦克击中我方坦克之后,我方坦克消失,并出现爆炸效果7.4.1功能1plus:我方坦克连发子弹思路:要发射多颗子弹,就使用Vector保存子弹对象在绘制我方子弹的时候需要遍历Vector集合同时要修改击中判定方法hitTank修改处1:Hero类:packageli.TankGame.version05;importjava.util.Vector;/***@author李*@version
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
Java集合0815.HashTable15.1HashTable的基本介绍存放的元素是键值对:即K-VHashTable的键和值都不能为nullHashTable的使用方法基本上和HashMap一样HashTable是线程安全的(synchronized),HashMap是线程不安全的HashTable是无序的例子:Hashtable的底层底层有数组HashTable$Entry[]的初始化大小为11临界值threshold8=11*0.75扩容:原来容量*2+1packageli.map.hashtable;importjava.util.Hashtable;@SuppressWarnin
Java集合0815.HashTable15.1HashTable的基本介绍存放的元素是键值对:即K-VHashTable的键和值都不能为nullHashTable的使用方法基本上和HashMap一样HashTable是线程安全的(synchronized),HashMap是线程不安全的HashTable是无序的例子:Hashtable的底层底层有数组HashTable$Entry[]的初始化大小为11临界值threshold8=11*0.75扩容:原来容量*2+1packageli.map.hashtable;importjava.util.Hashtable;@SuppressWarnin
21|流量回放:保障业务技术升级的神器什么是流量回放?流量就是指在某个时间段内的所有请求,我们通过某种手段把发送到A应用的所有请求录制下来,然后把这些请求统一转发到B应用,让B应用接收到的请求参数和A应用保持一致,从而实现A接收到的请求在B应用里面重新请求了一遍,这个过程,我们称为“流量回放”。当我们对应用逻辑有改动,但在做了单元测试和回归测试之后,因为线上环境更加复杂,为了降低出错的概率,可以尝试使用流量回放。传统QA测试不能满足要求的根本原因就是在于改造后的应用在上线后出现跟应用上线前不一致的行为。我们测试的目的就是为了保证改造后的应用跟改造前应用的行为一致,我们测试Case也应该尽力去模
21|流量回放:保障业务技术升级的神器什么是流量回放?流量就是指在某个时间段内的所有请求,我们通过某种手段把发送到A应用的所有请求录制下来,然后把这些请求统一转发到B应用,让B应用接收到的请求参数和A应用保持一致,从而实现A接收到的请求在B应用里面重新请求了一遍,这个过程,我们称为“流量回放”。当我们对应用逻辑有改动,但在做了单元测试和回归测试之后,因为线上环境更加复杂,为了降低出错的概率,可以尝试使用流量回放。传统QA测试不能满足要求的根本原因就是在于改造后的应用在上线后出现跟应用上线前不一致的行为。我们测试的目的就是为了保证改造后的应用跟改造前应用的行为一致,我们测试Case也应该尽力去模
声明式事务-023.事务的传播机制事务的传播机制说明:当有多个事务处理并存时,如何控制?比如用户去购买两次商品(使用不同的方法),每个方法都是一个事务,那么如何控制呢?也就是说,某个方法本身是一个事务,然后该方法中又调用了其他一些方法,这些方法也是被@Transactional修饰的,同样是事务。问题在于:里层方法的事务是被外层方法事务管理?还是它本身作为一个独立的事务呢?这就涉及到事务的传播机制问题。3.1事务传播机制种类事务传播的属性/种类:传播属性说明REQUIRED(默认)如果有事务在运行,当前的方法就在这个事务内运行,否则,就启动一个新的事务,并且在自己的事务内运行REQUIRES_