优惠券,生效时间。
读多写少,缓存。
----------------------------------------------------------------------8-1----------------------------------------------
生成代码。
注意我们最好是拿静态变量取代魔法值。
获取在有效期的优惠券:
public List<TCoupon> getCouponListdb(){
TCouponExample tCouponExample = new TCouponExample();
tCouponExample.createCriteria().andStatusEqualTo(Constant.USERFUL).andStartTimeGreaterThan(new Date()).andEndTimeLessThan(new Date());
return tCouponMapper.selectByExample(tCouponExample);
}
测试:
@Test
public void tetsQuery(){
List<TCoupon> list = couponService.getCouponList();
int a = 1;
}
----------------------------------------------------------------------8-2----------------------------------------------
代码:
第一步:引入依赖。
JMH:https://www.jianshu.com/p/bdfae02a9c0d
https://www.jianshu.com/p/5a501cb6403c
第二步:初始化
public static void main(String[] args) throws RunnerException {
// 预热几轮 重复执行2次 做1轮测试
Options options = new OptionsBuilder().warmupIterations(2).measurementIterations(2)
.forks(1).build();
new Runner(options).run();
}
第三步:打注解测试
@Benchmark
public void testStringAdd(){
String s = "";
for (int i = 0; i < 10; i++) {
s +=i;
}
}
@Benchmark
public void testStringBuild(){
StringBuilder b = new StringBuilder();
for (int i = 0; i < 10; i++) {
b.append(i);
}
b.toString();
}
----------------------------------------------------------------------8-3-----------8-4-----------------------------------
代码:
代码:
@State(Scope.Thread)
public class JMHSpringbootTest {
private ConfigurableApplicationContext context;
private CouponService couponService;
public static void main(String[] args) throws RunnerException {
Options options = new OptionsBuilder().include(JMHSpringbootTest.class.getName() + ".*")
.warmupIterations(2).measurementIterations(2)
// 一个线程
.forks(1).build();
new Runner(options).run();
}
/**
* setup初始化容器的时候只执行一次
*/
@Setup(Level.Trial)
public void init(){
String arg = "";
context = SpringApplication.run(CouponAppApplication.class,arg);
couponService = context.getBean(CouponService.class);
}
/**
* benchmark执行多次,此注解代表触发我们所要进行基准测试的方法
*/
@Benchmark
public void test(){
System.out.println(couponService.getCouponList());
}
}
----------------------------------------------------------------------8-5----------------------------------------------
测试结果:
我们看下druid的测试结果。
看druid:http://localhost:8088/druid/login.html
13秒完成23608次请求。
我们看很不好性能。
我们如何分析?
// 是否存在远程调用? HTTP和RPC
// 是否大量内存?
// sql执行的慢
----------------------------------------------------------------------8-6----------------------------------------------
----------------------------------------------------------------------8-7----------------------------------------------