自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 SpringMVC工作流程

MVC 是 Model — View — Controler 的简称,它是一种架构模式,它分离了表现与交互。它被分为三个核心部件:模型、视图、控制器。Model(模型):是程序的主体部分,主要包含业务数据和业务逻辑。在模型层,还会涉及到用户发布的服务,在服务中会根据不同的业务需求,更新业务模型中的数据。View(视图):是程序呈现给用户的部分,是用户和程序交互的接口,用户会根据具体的业务需求,在 View 视图层输入自己特定的业务数据,并通过界面的事件交互,将对应的输入参数提交给后台控制器进行处理。

2023-04-06 17:35:17 114

原创 学会MySQL的Explain执行计划,SQL性能调优从此不再困难

使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈。在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,并不会执行这条SQL。

2023-04-06 10:01:53 118

原创 MYSQL篇

MySQL。

2023-04-03 15:20:08 90

原创 基于redis实现分布式锁

package com.dlss.loyalty.common.util;import com.dlss.common.redis.RedisClientTemplate;import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import redis.clients.jedis

2021-09-24 15:49:43 105

原创 stream() 对Bigdecimal类型数据求和

//List对象集合List<MOrderGoods> mOrderGoodsList1;getActualPayTotalAmount属性类型为BigDecimalstream()求和BigDecimal invoiceAmount = mOrderGoodsList1.stream().map(MOrderGoods::getActualPayTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);...

2021-09-18 10:21:58 1183

原创 stream() 对BigDecimal、int、double、long 类型属性求和

stream() BigDecimal类型求和//List对象集合List<MOrderGoods> mOrderGoodsList1;//getActualPayTotalAmount属性类型为BigDecimalBigDecimal invoiceAmount = mOrderGoodsList1.stream().map(MOrderGoods::getActualPayTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);

2021-08-24 17:04:29 1879

原创 线程的实现方式及5种状态

线程的5种状态线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态新建状态当用new操作符创建一个线程时。此时程序还没有开始运行线程中的代码就绪状态一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态。处于就绪状态的线程并不一定立即运行run()方法,线程还

2021-07-12 11:16:00 182

原创 线程池详解及4中实现方式

什么是线程池Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。但是,要做到合理利用线程池,必须对其实现原理了如指

2021-07-07 09:58:15 371

原创 MySQL常见的优化方案

SQL优化的一些方法对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描例如:select id from 表名 where 字段 is null (设计表结构时,尽量把字段都设置上默认值)应尽量避免在 where 子句中使用 != 或 < > 操作符,否则将引擎放弃使用索引而进行全表扫描应尽量避免在 where 子句中

2021-07-06 12:54:55 111

原创 深入理解HashMap

HashMap特性HashMap存储键值对实现快速存取,允许key、value为null。key值不可重复,若key值重复则覆盖。非同步,线程不安全。底层是hash表,不保证有序(比如插入的顺序)HashMap的底层原理基于hashing的原理,jdk8后采用数组+链表+红黑树的数据结构。我们通过put和get存储和获取对象。当我们给put()方法传递键和值时,先对键做一个hashCode()的计算来得到它在bucket数组中的位置来存储Entry对象。当获取对象时,通过get获取到buck

2021-07-01 13:28:56 185

原创 Spring框架IOC容器和AOP解析

Spring IOC (控制反转,依赖注入)Spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则,用来消减计算机程序之间的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找IOC其实对于IOC我们一直有以下疑问:参与者都有谁?依赖:谁依赖谁?为什么需要依赖?注入:谁注入谁?什么时候注入,又注入了什么呢?控制反转:谁控制谁?控制什么?为什么叫反转呢?存在正转吗?控制反转和依赖注入是同一个概念吗?第一个问题:参与者都有谁?对象IOC/DI容器

2021-06-23 17:10:25 159

原创 谈谈对 ==、equals()、hashcode() 的理解

直入正题==对于引用对象而言,比较两个对象引用的是否是同一个对象。比较是的两个引用对象的存储地址是否一样。对于基本数据类型而言,比较的就是两个数据的值是否相等String a = "123";String b = "123";String c = new String("123");System.out.println(a==b); //trueSystem.out.println(a==c); //false分析1. String a = "aaa"这种方式的时

2021-06-22 11:09:25 91

原创 String、StringBuffer与StringBuilder之间区别

关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下三者在执行速度方面的比较:StringBuilder > StringBuffer > StringString <(StringBuffer,StringBuilder)的原因:String:字符串常量StringBuffer:字符创变量StringBuilder:字符创变量从上面的名字可以看到,String是“字符创常量”,final修饰,不可更改的对

2021-06-18 13:50:36 59

原创 浅谈 volatile 和 Lock 与 synchronized 的理解

Lock与synchronized 的区别ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情ReentrantLock获取锁定与三种方式a) lock().

2021-06-18 10:59:10 220 1

原创 Mockito无法模拟String类型的值

报错信息:水电费

2021-06-02 14:13:25 1526 3

原创 Mockito.anyString() 无法匹配null

Mockito.anyString()匹配一直以为可以用anyString(),any(Foo.class)等匹配null值,其实不行

2021-06-01 15:48:07 1250

原创 IDEA生成代码测试率覆盖报告

运行测试类

2021-05-31 10:49:41 654

原创 Springboot+H2+Mockito 单元测试,脱离外部MySQL连接

项目场景:编写代码单元测试为了保证测试环境数据稳定性,使用内嵌数据库H2来代替测试环境数据库前提:需注意MySQL导出的sql文件无法适用于H2,具体转换方式详见 https://blog.csdn.net/qionglong_jiao/article/details/117298689项目准备:H2建表语句:schema.sql-- ------------------------------ Table structure for app_alarm_year_statis.

2021-05-26 20:13:26 2174 1

原创 MySQL转H2

项目场景:在使用内嵌数据库写测试用例时,遇到的MySQL导出的 .sql 文件,无法正常写入到H2内嵌数据库代码示例: @Test public void h2(){ try { System.out.println(convert("D:\\idea\\projects\\新能源\\app_alarm_mileage_statistic_single.sql")); } catch (IOException e) {

2021-05-26 18:30:42 2056 4

原创 几种 Java8 中通过 Stream 的常用方法

项目场景:缩减日常代码冗余问题描述:stream()的一些常用方法及使用场景分组:提示:这里填写问题的分析:分组:提示:这里填写问题的分析:例如:Handler 发分组:提示:这里填写问题的分析:例如:Handler 发分组:提示:这里填写问题的分析:例如:Handler 发分组:提示:这里填写问题的分析:例如:Handler 发解决方案:提示:这里填写该问题的具体解决方案:例如:新建一个 Message 对象,并将读取到的数据存入 Me

2021-05-25 16:18:34 395 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除