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,則依然是數據不一致的問題。