1)消息识别器:
根据消息号,创建一个Builder。
2)javassist:动态修改字节码。==》用于ormtest
原生反射很慢,那我可以用javaassist来加速
3)一些框架没有实现类,是怎么实现出来的。
4)多线程与IO
5)先讲解移动。
攻击的话,就是涉及到多线程的问题。
6)A和B同时攻击C时,A和B 分别在自己的线程,因此有并发访问安全的问题。
7)多个线程操作同一份数据,数据不一致的问题。解决方案
(1)加锁 synchronized:
一个减血的函数暂时没有问题:
执行效率不高甚至都不是关键的。
但是如果有别的函数呢? attkUser(User user); 这种带来了死锁。 互砍造成了死锁!!!
jps ==》 得到进程及其对应的pid,,如自己Server的pid。
jstack 7996 ==》得到死锁信息。
数据不一致,和死锁。
减少锁的粒度,可以减少死锁(并非避免死锁)。 但是开发困难,与业务逻辑重合了。
(2)脏读:多线程操作同一份数据,脏读。
volatile也不行。它只保证2个线程是可见的。 不能是原子的。
(3)atomic:
单个操作,能保证线程安全,用cas原语保证,但是十分臃肿! 道具的id,任务的状态。。。对象太大,太臃肿的。
但是,同时操作a和b,则依然是数据不一致的问题。
来源:oschina
链接:https://my.oschina.net/u/4304002/blog/4946233