04 2012 档案
摘要:NioSocketAcceptor,新建一个acceptor:(1)取其DefaultIoFilterChainBuilder,并且在里面设置各种filter。(2)为其设置handler(3)为其绑定端口和地址。(4)取其sessionConfig,可以setReadBufferSize和setIdleTime()等。session.write()session.close()Set<IoSession> sessions = Collections.synchronizedSet(new HashSet<IoSession>());通过:telnet, localh
阅读全文
摘要:[这篇博文,多亏cnblogs的管理员GG帮忙恢复,才得以重见天日,特在此拜谢!]在使用set/map时,一个可爱的小bug:java.util.ConcurrentModificationException【错误场景1】:set容器,边遍历,边add/remove元素Set<String> set = new HashSet<String>();for (int i = 0; i < 10000; i++) { set.add(Integer.toString(i));}for (String str : set) { //或使用iterator来循环,JDK5
阅读全文
摘要:ConcurrentHashMap vs. HashMap/SynchronizedMap/HashTable什么时候用ConcurrentHashMap(),读写并发。较HashMap好在其并发性上,读不锁,写的时候锁粒度减小为segment而不是整张表,也就意味着一定程度上可以进行“并发写”。貌似自从有了Concurrent,hashMap就不得宠了。。ConcurrentHashMap,不要轻易用.size(),因为它会锁整张表;ConcurrentHashMap,不要轻易用.remove(),因为它会涉及到hashTable中该entry之前的所有元素都要进行拷贝操作(为什么要拷贝呢?
阅读全文
摘要:今天,学习了一些Java反射机制,简单记录一下。按我的理解,就是在运行时,运态的获取对象相关的一些信息:对象的“类”型、哪些成员变量、哪些方法、成员变量的值、新建一个某个类的对象,等等;目前,我能想到的一些应用场景:各种对象(无论子类、父类、对接口的任一种实现)都扔进来,显式调用其方法等,不关心其内部具体实现。“扔进来,调,一视同仁,去个性化”给一个对象,“制造仿品”,即新建类型的对象(对象数组等);突破那个类对对象/方法的访问权限控制,破掉封装性(可访问private变量、方法),很黄很暴力;【1】获得“类”型Class<?> classType = Class.forName(
阅读全文