05 2018 档案
摘要:深入学习semaphore 控制同时访问资源线程数 访问特定资源前,先使用acquire(1)获得许可,如果许可数量为0,该线程则一直阻塞,直到有可用许可。 访问资源后,使用release()释放许可。 demo: 非公平策略 acquire实现,核心代码如下: java final int non
阅读全文
posted @ 2018-05-24 10:10
西北野狼
摘要:@transactional注解在什么情况下会失效,为什么。 @Transactional的使用: 在xml中配置spring事务管理类DataSourceTransactionManager 调用含注解的方法并抛异常,执行有异常抛出,z1表新增记录、z2表无新增记录,事务失效 修改后: 在代理下(
阅读全文
posted @ 2018-05-09 11:12
西北野狼
摘要:ArrayList中的remove方法(注意ArrayList中的remove有两个同名方法,只是入参不同,这里看的是入参为Object的remove方法)是怎么实现的: 执行System.arraycopy方法,导致删除元素时涉及到数组元素的移动。 删除方法1: modCount+1,涉及到ite
阅读全文
posted @ 2018-05-09 08:50
西北野狼
摘要:Hashmap在并发环境下,可能出现的问题: 1、多线程put时可能会导致get无限循环,具体表现为CPU使用率100%; 原因:在向HashMap put元素时,会检查HashMap的容量是否足够,如果不足,则会新建一个比原来容量大两倍的Hash表,然后把数组从老的Hash表中迁移到新的Hash表
阅读全文
posted @ 2018-05-08 14:57
西北野狼
摘要:主要优化堆,堆内存分为一个伊甸园区(Eden Space)两个幸存区(Survivor Space)。 伊甸园区为new出来的对象; 幸存区为伊甸园区满gc minorGC后进入幸存区; 幸存区 Full gc 后进入养老区 Fenure Generation Space; 最后进入永久存储区 Pe
阅读全文
posted @ 2018-05-07 00:34
西北野狼