优惠券项目---------------第八章

优惠券,生效时间。

读多写少,缓存。

----------------------------------------------------------------------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----------------------------------------------

发布了374 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_28764557/article/details/104780270