首页 > 其他分享 >每日一记

每日一记

时间:2023-12-28 18:11:34浏览次数:12  
标签:耗时 每日 System StopWatch 一记 stopWatch println out

  • StopWatch计算代码耗时
  • 如何解决MySQL主从延时
  • BeanUtils.copyProperties

StopWatch计算代码耗时

来自:org.springframework.util.StopWatch;

public static void main(String[] args) throws InterruptedException {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start("a");
        Thread.sleep(1000); // 在这里写需要测试耗时的代码
        stopWatch.stop();

        stopWatch.start("b");
        Thread.sleep(2000);
        stopWatch.stop();

        stopWatch.start("c");
        Thread.sleep(3000);
        stopWatch.stop();

        System.out.println(stopWatch.getTotalTimeMillis()); // 输出任务总耗时
        System.out.println();
        System.out.println(stopWatch.getLastTaskTimeMillis()); // 输出最后一个任务的耗时
        System.out.println();
        System.out.println(stopWatch.prettyPrint());  // 以表格形式打印结果 单位ns

    }

任务结果:

如何解决MySQL主从延时

前置知识

  • 什么是主从延时:主从库在同一时间出现数据不一致。(个人理解)

  • 主从复制原理:

流程:写入binlog(耗时t1),传递binlog并且 从库同步到relaylog(耗时t2),

​ SQL thread 执行relaylog(耗时t3)。

其中影响最大的是t3

解决方法

  • 提高物理机性能(特别是从库所在机)

  • 避免大事务(分批执行,减少t3)

  • 优化带宽(减少t1和t2)

  • 使用Redis做一层缓存(解决主从延时就是解决主从数据库数据不一致问题)

  • 直接查询主库(核心业务场景可以使用)

  • 升级MySQL版本(高版本支持多线程复制)

BeanUtils.copyProperties 不推荐使用

理由:

  • 同一类型属性不同时会拷贝失败,但不会报错(若一个是基本类型,一个是对应包装类,会报错)

  • 已赋值属性会被覆盖

    exp:  A 类 和 B 类 都有 名字和年龄。
    A 初始化 name = null , age = 18;
    B 初始化 name = "小强", age = null;
    BeanUtils.copyProperties(A,B);
    B 的名字会改为null
    
  • 属性拷贝由方法内部实现,难以溯源

  • 内部类是无法成功拷贝

  • 该拷贝是浅拷贝

  • 底层是反射机制,效率低下。

    可以用联合上面的stopwatch来进行测试:

    public static void main(String[] args) throws InterruptedException {
            StopWatch stopWatch = new StopWatch();
            A a = new A();
            a.setName("小强");
            B b = new B();
            
            stopWatch.start("工具拷贝");
            for (int i = 0; i < 10000; i++) {
                BeanUtils.copyProperties(a,b);
            }
            stopWatch.stop();
    
            stopWatch.start("方法拷贝");
            for (int i = 0; i < 10000; i++) {
                b.setName(a.getName());
            }
            stopWatch.stop();
    
            System.out.println(stopWatch.prettyPrint());  // 以表格形式打印结果
        }
    

测试结果:

可以发现各测试10000组,绝大多数时间均由BeanUtils.copyProperties使用。效率低下。

标签:耗时,每日,System,StopWatch,一记,stopWatch,println,out
From: https://www.cnblogs.com/strind/p/17933278.html

相关文章

  • 12.28每日总结2
    今天下午接着写软件企业文化的大作业市场推广 确定目标市场:首先,你需要确定你的目标市场是谁。考虑该技术最适合哪些行业或领域,并了解这些市场的需求和痛点。深入了解竞争环境:研究类似的软件技术是否已经存在,了解竞争对手的优势和劣势。这有助于你们找到与众不同的竞争优势,并确......
  • 每日总结2023年12月28日
    昨天提交了一个软件构造的大作业,其中要求实现翻译功能和图像识别功能在web上进行开发,其中我遇到了许多问题。1.在设计前端页面时我使用的是html,在进行前后端数据传输时采用异步请求,用的fetch技术和Ajax技术。2.后端框架采用的是JFinal,使用JFinal自带的分页功能和service源码和Co......
  • 每日博客
    ASP.NET是一种用于构建Web应用程序的开发框架,它支持多种编程语言,如C#、VB.NET等。以下是一般的ASP.NET网站开发步骤:明确需求:在开始开发之前,首先需要明确项目的需求和目标。了解用户需求、功能要求以及预期的网站特性是成功开发的基础。选择开发工具和环境:选择合适的开发工......
  • 12.27每日总结
    using System; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实验1_1 {     class Program     {         static void Main(string[]args)         { ......
  • 11.27每日总结
    今日完成所有大作业实验  实验一:百度机器翻译SDK实验一、实验要求实验一:百度机器翻译SDK实验(2023.11.29日完成)  任务一:下载配置百度翻译Java相关库及环境(占10%)。    任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。    ......
  • 2023.12.26——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.软件案例分析明日计划:学习......
  • 12/27每日总结
    动手学深度学习拾遗学习完一遍后,通过基于(波士顿房价预测,叶子分类)实战将已经快遗忘的知识点进行拾遗复习softmax首先是softmax分类头的问题,softmax作为分类问题中常见的分类方法,在pytorch中并未直接实现,而是附加到了交叉熵损失函数中,所以在使用时直接进行使用就可以了正则化缓解过......
  • 12.27每日总结2
    中午的时候做了软件企业文化的大作业公司管理1公司管理体系概述在我们公司,建立一个完善的公司管理体系是为了确保公司运营高效、有序,实现长期发展目标。公司管理体系包括管理理念、目标、架构和运作机制等方面,为公司的各项管理工作提供指导和支持。  1.1公司管理理念 ......
  • 12.27每日总结
    今天早上进行了软件构造的实验作业实验二:百度图像增强与特效SDK实验一、实验要求任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。任务二:了解百度图像增强与特效相关功能并进行总结(占20%)。任务三:完成图像增强GUI相关功能代码并测试调用,要求上传自己的模糊照片进行......
  • 每日一模块:httpx解决http2
    #!/usr/bin/envpython#-*-coding:utf-8-*-#author:Cloud#datetime:2023/12/18importhttpx"""pipinstallhttpx[http2]-ihttp://mirrors.aliyun.com/pypi/simple/--trusted-hostmirrors.aliyun.com"""timeout=httpx.Time......