摘要:
乐观锁和悲观锁 Synchronized属于 悲观锁 ,悲观地认为程序中的并发情况严重,所以严防死守。CAS属于 乐观锁 ,乐观地认为程序中的并发情况不那么严重,所以让线程不断去尝试更新。 性能对比: Synchronized关键字会让没有得到锁资源的线程进入blocked状态,而后在争夺到锁资源后 阅读全文
摘要:
判断是否点击!buttonView.isPressed()来解决 阅读全文
摘要:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数。 阅读全文
摘要:
设计一个类,我们只能生成该类的一个实例。 其实就是单利模式的实现: 阅读全文
摘要:
深入学习semaphore 控制同时访问资源线程数 访问特定资源前,先使用acquire(1)获得许可,如果许可数量为0,该线程则一直阻塞,直到有可用许可。 访问资源后,使用release()释放许可。 demo: 非公平策略 acquire实现,核心代码如下: java final int non 阅读全文
摘要:
@transactional注解在什么情况下会失效,为什么。 @Transactional的使用: 在xml中配置spring事务管理类DataSourceTransactionManager 调用含注解的方法并抛异常,执行有异常抛出,z1表新增记录、z2表无新增记录,事务失效 修改后: 在代理下( 阅读全文
摘要:
ArrayList中的remove方法(注意ArrayList中的remove有两个同名方法,只是入参不同,这里看的是入参为Object的remove方法)是怎么实现的: 执行System.arraycopy方法,导致删除元素时涉及到数组元素的移动。 删除方法1: modCount+1,涉及到ite 阅读全文
摘要:
Hashmap在并发环境下,可能出现的问题: 1、多线程put时可能会导致get无限循环,具体表现为CPU使用率100%; 原因:在向HashMap put元素时,会检查HashMap的容量是否足够,如果不足,则会新建一个比原来容量大两倍的Hash表,然后把数组从老的Hash表中迁移到新的Hash表 阅读全文
摘要:
主要优化堆,堆内存分为一个伊甸园区(Eden Space)两个幸存区(Survivor Space)。 伊甸园区为new出来的对象; 幸存区为伊甸园区满gc minorGC后进入幸存区; 幸存区 Full gc 后进入养老区 Fenure Generation Space; 最后进入永久存储区 Pe 阅读全文
摘要:
正确截取List指定位置的内容 阅读全文