- 博客(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
原创 基于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.anyString() 无法匹配null
Mockito.anyString()匹配一直以为可以用anyString(),any(Foo.class)等匹配null值,其实不行
2021-06-01 15:48:07 1250
原创 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关注的人