自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sql语句查询一天24小时每个小时数据,查询时间段内每天数据

统计条数 String[] countArr = new String[23]; carSumList = orderMapper.selectNowCarData(storeId,countArr);查询当天24小时 sql 语句 SELECT count( u.id ) AS `value`, s.date AS text FROM ( SELECT date_add( DATE_FORMAT( CUR.

2021-04-07 16:47:14 7111

原创 SpringBoot:JSR303数据校验统一返回异常

1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dep...

2020-04-15 16:58:38 703

原创 springboot2.x 发送邮件

配置文件spring: mail: host: smtp.163.com username: **@163.com password: ** default-encoding: UTF-8 port: 465 //注:阿里云服务器不支持25端口,所以改为465端口 properties: mail: sm...

2020-04-15 15:38:36 264

原创 JVM-垃圾收集器

GC算法(引用计数、复制、标记清除、标记整理算法)方法论,垃圾收集器就是对应的落地的实现!4种垃圾收集器1、串行(STW:Stop the World)单线程2、并行垃圾回收器(多线程工作,也会导致 STW)3、并发垃圾回收器(再回收垃圾的同时,可以正常执行线程,并行处理,但是如果是单核CPU,只能交替执行!)4、G1垃圾回收器(将堆内存分割...

2020-03-15 15:56:12 169

原创 JVM-调优参数

jvm 只有三种参数类型:标配参数、X参数,XX参数;标配参数:在各种版本之间都很稳定,很少有变化-version-help-showversionX参数(了解)-Xint # 解释执行-Xcomp # 第一次使用就编译成本地的代码-Xmixed # 混合模式(Java默认)X...

2020-03-15 15:42:42 137

原创 JVM-GC垃圾回收

GC详解GC 的作用域口诀:关于垃圾回收:分代收集算法 ==不同的区域使用不同的算法==Young代: GC频繁区域Old代:GC次数较少Perm代:不会产生GC!一个对象的历程!JVM在进行GC时,并非每次都是对三个区域进行扫描的!大部分的时候都是指的新生代!两个类型:普通GC:只针对新生代 【GC】全局GC:主要是针对老...

2020-03-14 16:58:02 323

原创 JVM-堆

堆(heap)Java 中的堆是 JVM 管理的最大的一块内存空间,主要用于存放Java类的实例对象Java7之前:堆内存在逻辑上分为三个部分:新生、养老、永久新生代 ( Young )又被划分为:Eden、From Survivor和To Survivor三个区域Java8之后:永久化为元空间!物理上只有 新生、养老;元空间在本地内存中,不在JVM中!GC 垃圾回...

2020-03-14 16:32:07 87

原创 JVM-栈

栈Stack概念1.栈(stack)栈是限制仅在表的一端(表尾)进行插入和删除运算的线性表。向栈中插入元素称为进(入)栈,从栈中删除元素称为退(出)栈。2.栈顶(top)允许进行插入、删除操作的这一端称为栈顶,又称为表尾。由于元素的进栈和退栈,栈顶的位置经常是变动的,因此需要用一个整型量top指示栈顶的位置,通常称top为栈顶指针。3.栈底(bottom)在栈中固定的一端称为栈...

2020-03-12 22:12:59 102

原创 JVM-Native方法/程序计数器/方法区

Native方法public class Test { public static void main(String[] args) { // java 真的可以开启线程吗? // private native void start0(); new Thread().start(); }}native : 只要是带了这个关...

2020-03-12 20:12:52 659

原创 JVM-类加载器

类加载器ClassLoader我们首先来看看一个类加载到 JVM 的一个基本结构:类的加载、链接和初始化(了解)加载:查找并加载类的二进制数据连接: 验证:保证被加载的类的正确性; 准备:给类静态变量分配内存空间,赋值一个默认的初始值; 解析:把类中的符号引用转换为直接引用 在把java编译为class文件的时候,虚拟机并不知道所引用...

2020-03-12 16:41:53 91

原创 JVM-初识

JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节...

2020-03-11 17:50:34 125

原创 多线程-死锁排查

死锁排查什么是死锁死锁代码编写package com.coding.lock;​import java.util.concurrent.TimeUnit;public class DeadLockDemo { public static void main(String[] args) { String lockA = "lockA"...

2020-03-11 17:37:38 124

原创 原子引用

原子引用赋值操作不是线程安全的。若想不用锁来实现,可以用AtomicReference<V>这个类,实现对象引用的原子更新。什么是ABA问题:狸猫换太子T1 100 1 (主操作:小明) A B AT2 100 1 = > 1 100 => 100 (其他人的操作:小花)原子类来解决(通过原子引用)通过增加一个版本号来解决,和乐观锁一模...

2020-03-11 17:16:20 355

原创 CAS

一、CAS(compareAndSwap)的概念CAS,全称Compare And Swap(比较与交换),解决多线程并行情况下使用锁造成性能损耗的一种机制。二、CAS(compareAndSwap)的产生 为什么需要CAS机制呢?我们先从一个错误现象谈起。我们经常使用volatile关键字修饰某一个变量,表明这个变量是全局共享的一个变量,同时具有了可见性和有序性。但是却没有原子性。比...

2020-03-11 16:46:36 129

原创 五种单例模式

单例模式一、概述单例模式的定义就是确保某一个类只有一个实例,并且提供一个全局访问点。属于设计模式三大类中的创建型模式。 单例模式具有典型的三个特点: 只有一个实例。 自我实例化。 提供全局访问点。 二、优缺点 优点:由于单例模式只生成了一个实例,所以能够节约系统资源,减少性能开销,提高系统效率,同时也能够严格控制客户对它的访问。 缺点:也...

2020-03-10 22:32:21 112

原创 多线程-Volatile

Volatile概念凡是加了Volatile的变量,其变量可以保证可见性,有序性,但不保证原子性可见性:  可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。  可见性,是指线程之间的可见性,一个线程修改的状...

2020-03-09 21:34:46 91

原创 JMM(java Memory Model)java内存模型

JMM(java Memory Model)java内存模型概念:在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。JVM在设计时候考虑到,如果JAVA线程每次读取和写入变量都直接操作主内...

2020-03-09 20:48:01 101

原创 多线程-常用辅助类

1.常用辅助类在多线程开发时有很多辅助类,今天我们选JUC包下的三个常用辅助类作一下说明。CountDownLatch(1)概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就...

2020-03-09 16:41:55 85

原创 Future

1.Future在并发编程中,我们经常用到非阻塞的模型,在之前的多线程的三种实现中,不管是继承thread类还是实现runnable接口,都无法保证获取到之前的执行结果。通过实现Callback接口,并用Future可以来接收多线程的执行结果。Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功或失败后作出相应的操作。 pu...

2020-03-07 16:36:47 104

原创 分支合并-forkjoin

1.分支合并-forkjoinForkJoin的框架的基本思想是分而治之。什么是分而治之?分而治之就是将一个复杂的计算,按照设定的阈值进行分解成多个计算,然后将各个计算结果进行汇总。相应的ForkJoin将复杂的计算当做一个任务。而分解的多个计算则是当做一个子任务。Fork/Join与传统线程池的区别!Fork/Join采用“工作窃取模式”,当执行新的任务时他可以将其拆分成...

2020-03-07 16:12:05 156

原创 Stream流

Stream 流Stream(流)是一个来自数据源的元素队列并支持聚合操作 元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。 数据源 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。 聚合操作 类似SQL语句一样的操作, 比如filter, map, reduce, find, ma...

2020-03-06 21:47:07 87

原创 四大函数式接口

1.四大函数式接口消费型接口:Consumer<T>只有一个输入参数并且无返回值;使用:public class Demo { public static void main(String[] args) { Data data = new Data(); data.consumer(); ...

2020-03-06 21:08:34 111

原创 多线程-线程池

1.线程池池化技术池化技术能够减少资源对象的创建次数,提高程序的性能,特别是在高并发下这种提高更加明显。使用池化技术缓存的资源对象有如下共同特点:1,对象创建时间长;2,对象创建需要大量资源;3,对象创建后可被重复使用。一个资源池具备如下功能:租用资源对象、归还资源对象、清除过期资源对象,接下来我们就从这几个功能点出发分别进行分析。应用:线程池、连接池、内存池、对象...

2020-03-06 16:34:52 64

原创 多线程-阻塞队列

1.阻塞队列阻塞队列阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素阻塞队列...

2020-03-06 15:07:36 466

原创 多线程-读写锁

1.读写锁ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁。 Java并发库中ReetrantReadWriteLock实现了ReadWriteLock接口并添加了可重入的特性假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线...

2020-03-05 17:06:43 877

原创 多线程下的集合

1.多线程集合的使用首先了解一下java普通的集合:Java集合主要由2大体系构成,分别是Collection体系和Map体系,其中Collection和Map分别是2大体系中的顶层接口。Collection主要有三个子接口,分别为List(列表)、Set(集)、Queue(队列)。其中,List、Queue中的元素有序可重复,而Set中的元素无序不可重复;List中主要有Ar...

2020-03-05 15:38:45 1578

原创 多线程-实例锁,类锁,与没有锁的情况

实例锁:对一个类的一个实例对象(对象A)进行加锁,防止其他线程同时访问对象A的synchronized块,但是对不同的此类的实例对象不做控制。实例锁使用Synchronized关键字修饰。类锁:对一个类的所有实例对象进行加锁,限制多线程中该类的所有实例同时访问该类的synchronized块。类锁使用Static Synchronized关键字修饰。利用8道题,搞定锁这个概念!...

2020-03-03 15:38:09 182

原创 线程通信-生产者消费者问题

1、线程通信-生产者消费者问题生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态。然后等待消费者消费...

2020-03-02 22:15:29 148

原创 JUC编程-什么是JUC

1.什么是JUCJUC:java原生并发包还有一些常用工具类2.线程基础知识并发、并行并发:多个线程操作同一个资源,交替执行的过程!并行:多个线程同时执行!只有在多核CPU下才能完成!线程六种状态新建(new) ,运行(RUNNABLE),阻塞(BLOCKED),等待(WAITING),延迟等待(TIMED_WAITING),终止(TERMINATED...

2020-03-02 19:58:04 1328 1

原创 sping boot2.x.x 实现多端口

package com.example;import org.apache.catalina.connector.Connector;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springfr...

2019-03-14 11:54:04 247

空空如也

空空如也

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

TA关注的人

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