- 博客(10)
- 资源 (2)
- 收藏
- 关注
转载 java 自旋锁(可重入且无死锁)
java自旋锁 的实现原理:如果自旋锁被另外一个线程对象持有,那么当前获取锁的线程将陷入while循环等待,直到那个持有自旋锁的线程对象释放它所持有的自旋锁,那么那些想要获取该自旋锁的线程对象 将会有一个获得该自旋锁。 基于他这种原理,等待的时候,并不释放cpu时间片,相比synchronized wait()操作,减小了释放,重新获取的消耗。 该自旋锁适用于,当前线程竞争不强烈的时候使用
2017-10-31 16:13:02 561
转载 自旋锁原理及java自旋锁
一、自旋锁的概念首先是一种锁,与互斥锁相似,基本作用是用于线程(进程)之间的同步。与普通锁不同的是,一个线程A在获得普通锁后,如果再有线程B试图获取锁,那么这个线程B将会挂起(阻塞);试想下,如果两个线程资源竞争不是特别激烈,而处理器阻塞一个线程引起的线程上下文的切换的代价高于等待资源的代价的时候(锁的已保持者保持锁时间比较短),那么线程B可以不放弃CPU时间片,而是在“原地”忙等,直到锁的持
2017-10-31 16:10:09 421
转载 Mybatis多参数传递
在使用Mybatis的时候,经常会有各种各样的参数传递,不同类型,不同个数的参数。先上个例子: public List findOfficeList(@Param("lifetouchRelease") LifetouchRelease lifetouchRelease, @Param("advertisementId") String advertis
2017-10-26 15:39:42 296
转载 基于redis分布式锁实现“秒杀”
原文:http://blog.csdn.net/u010359884/article/details/50310387最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路。业务场景所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资
2017-10-20 11:44:46 396
转载 redis使用watch秒杀抢购思路
原文:http://blog.csdn.net/chengshiep/article/details/508448101、使用watch,采用乐观锁 2、不使用悲观锁,因为等待时间非常长,响应慢 3、不使用队列,因为并发量会让队列内存瞬间升高测试代码:import java.util.concurrent.ExecutorService;import java.util.
2017-10-20 11:41:31 492
转载 学会使用临时表优化,切记不要乱用临时表(记录一)
今天检查满查询日志发现有个存储过程查询可以达17S 而且是订单列表查询,这个当然不能忍了,必须优化,接下来就是查找原因优化过程。过程使用动态语句,首先使用满查询的语句条件提取出来静态语句单独分析:提取结果如下:table1 表数据100W+ table3表数据200W+ SELECT b.*, A.value1, A.value2, A.value
2017-10-20 09:43:50 4958
转载 优化临时表使用,SQL语句性能提升100倍
【问题现象】线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用率达到100%, 执行时间长达7s左右。SQL语句如下:SELECT DISTINCT g.*, cp.name AS cp_name, c.name AS category_name, t.name AS type_name FROMgm_game g LEFT JOIN gm_cp
2017-10-20 09:39:57 2398
转载 [SpringMVC]自定义注解实现控制器访问次数限制
我们需要根据IP去限制用户单位时间的访问次数,防止刷手机验证码,屏蔽注册机等,使用注解就非常灵活了1 定义注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)@Documented//最高优先级@Order(Ordered.HIGHEST_PRECEDENCE)public @interface
2017-10-19 17:25:13 494
转载 MySQL临时表的简单用法 在大数据量时有时会加快查询速度
当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询。创建临时表很容易,给正常的CREATE TABLE语句加上TEMPORARY关键字:CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(
2017-10-19 17:09:19 1730
转载 Mysql按日期分表
一、表不存在时则创建 之前做项目实在是太赶了,很多东西都没记录。是时候补回来了 MySQL做一个大表,由于要存历史记录,所以数据量很大,查询很慢。恰好查询的时候,又不需要时间太久的冷数据。现在将其实现原理提取成一个控制台小程序。 首先,创建一个简单的数据库访问类。 public static class CommonDao { pri
2017-10-13 09:38:17 4942
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人