自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring 数据校验

Spring与beanValidation,图片是随便扣的

2022-10-27 21:21:13 2369

原创 Bean Validation

简要介绍bean Validation的规范

2022-10-27 20:52:22 2661

原创 Poi与EasyExcel进行文件读写、模版生成

本文介绍通过Poi进行excel模板的生成,以及使用EastExcel来进行excel读写与模板生成

2022-02-20 18:07:57 2786

原创 MyBatis的注解

一、MyBatis支持的标签注解 1、增删改查 标签注解 作用 @Update 更新 @Select 查询 @Insert 插入 @Delete 删除   2、SqlProvider 标签注解 作用 @SelectProvider 提供一条查询sql语句 @InsertProvider 提供一条插入sql语句 @UpdateProvider 提供一条更新sql语句 @DeleteProvider 提供一条删除sql语句 &nb

2022-01-29 23:23:26 579 1

原创 映射接口的参数与返回值

一、映射接口的参数与映射文件的取值 参数可以是简单的数据类型,JavaBean、Map、List、Array。   参数名称解析规则: ParamNameResolver 是一个参数名解析器,用来按顺序列出方法中的虚参,并对实参进行名称标注。 ParamNameResolver 类主要的方法有两个:构造方法 ParamNameResolver 和getNamedParams方法。 构造方法 ParamNameResolver能够将目标方法的参数名称依次列举出来。在列举的过程中,如果某个参数存在@P

2022-01-29 23:02:51 1337

原创 MyBatis映射文件

一、映射文件的SQL标签 再映射文件中存在9大顶层的sql标签: SQL拼接与操作:select、delete、update、insert、sql (include) 缓存:cache、cache-ref 参数映射:parameterMap (该标签已被废除,关于参数的映射可以使用行内参数映射) 解决映射:resultMap   1、OGNL表达式与#{}、${} OGNL表达式的使用 它是 apache 提供的一种表达式语言,全称是: Object Graphic Navigation Lan

2022-01-29 22:58:40 3135

原创 MyBatis配置文件

介绍   MyBatis配置灵活,支持多种配置方式: 完全代码配置。MyBatis 提供完整的配置类,用户可以调用这些配置类完成所有配置工作。 基于xml的配置方式。 外部框架配置,比如Spring、SoringBoot。   采用xml配置配置数据信息,通常命名为mybatis-config.xml,该 XML文件的根节点为configuration,根节点内可以包含的一级节点及其含义如下所示: properties:属性信息,相当于 MyBatis的全局变量。 se

2022-01-29 22:46:19 4441

原创 三、多线程基础 - 线程的创建

一、Thread的run与start方法 class MyThread extends Thread{ @Override public void run() { System.out.println("hello word"); } } MyThread thread = new MyThread(); thread.start();   run方法内为线程所要执行的任务,直接调用thread.run(),只是串行的执行,而没有以多线程的方式来执行。

2021-11-07 22:27:44 206

原创 二、多线程基础 - 线程的状态

一、系统调度   1、进程的调度 进程调度算法   2、线程的调度 Linux的线程调度算法   抢占式的系统调度: 为每个线程分配一个时间片,当时间片用完,操作系统剥夺该线程的运行权,并给另外一个线程一个机会来运行,此时考虑线程的优先级。所有的桌面和服务器的操作系统都使用抢占式调度。   协作式的系统调度: 一个线程只有在调用yeild方法或被阻塞或等待时才失去控制权,像手机等小型设备。     二、线程的状态 1、分类 在Java中线程的状态可

2021-11-07 16:51:14 195

原创 一、多线程基础 - 线程简介

一、简介   1、并发简史 阶段一:早期的计算机中不包含操作系统,它们从头到尾只能执行一个程序,并且这个程序能够访问计算机的所有资源,在这种环境下程序不仅很难编写和运行,而且对计算机资源也是一种浪费。   阶段二:操作系统以及进程的出现,使得计算机能够同时运行多个程序,每个程序在单独的进程中运行;操作系统为每个独立的进程分配资源,包括内存、文件句柄以及安全证书;同时进程间的相互通信可以通过一些粗粒度的通信机制来交换数据,比如:套接字、信号输出器、共享内存、信号量以及文件。 进程是资源分配

2021-11-06 19:19:17 159

原创 JDK8 after时间日期api

参考:https://zq99299.github.io/java-tutorial/datetime/iso/   介绍   简介 为了解决这些问题并在JDK内核中提供更好的支持,针对Java SE 8设计了一个新的没有这些问题的日期和时间API。该项目由Joda-Time(Stephen Colebourne)和Oracle的作者在JSR 310下共同领导,出现在Java SE 8软件包中java.time。   before JDK8 时间日期Api缺点: 1️⃣ 可变性:对于时间与日期而言应该是不可

2021-10-07 19:31:51 755

原创 JDK8 before时间日期api

Date   一、简介:   时间与日期API,表示特定的瞬间,精确到毫秒。 可变类,线程不安全,可以通过setXXX()对Year、Month、Day、Minute、Sec进行修改。 Date 月份从0开始,一月是0,十二月是11。   二、API: 初始化: public void test1(){ Date date = new Date(); //当前时间的Date对象 Date date1 = new Date(200000L); //从1970, 00:00:00 GMT开始毫

2021-10-07 19:16:09 278

原创 Stream 流式计算

Stream 简介    一、Stream 概述 简介: Stream用于进行计算,是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。 Stream并不会存储数据。 Stream并不会改变数据源,它会返回一个含有结果集的Stream。 Stream是延迟加载的,在需要结果时才执行。    步骤: 创建一个流。 将初始流转换为其他流的中间操作,可能包含多个步骤。 终止操作,执行终止操作后才执行中间操作链,此后这个流就不能再使用了。    二、Stream的创建 通过java.util.Colle

2021-08-24 22:37:56 1885

原创 Optional

Optional    一、Optional概述 Optional是为了避免空指针异常,在jdk1.8,受谷歌的Guava项目引入了Optional类启发,引进了Optional类。 Option类是一个可以为null容器类,如果保存T,则表示这个值存在,如果仅仅保存null,则表示这个值不存在。 如果值存在 则isPresent()方法会返回true,调用get()方法会返回该对象。    使用场景: 比如Stream流中就存在许多返回值为Optional的方法。       二、创建Optional 方

2021-08-24 22:18:44 170

原创 Lambda 表达式

Lambda表达式    一、简介: Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 在很多其他语言中可以直接处理代码块,在java中传递一个代码块并不容易,因为java是一门面向对象的语言,所以必须构造对象,这个对象的类中有一个方法包含所需的代码。 lambda表达式时为了让java支持函数式编程的一些语法规则。 lambda是一个可传递的代码块,可以在以后执行一次或多次。    二、语法    表

2021-08-24 22:02:16 306

原创 Mybatis基础入门

一、MyBatis简介   一、MyBatis介绍 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。     二、功能流程     二、快速搭建  

2021-02-23 13:46:12 341 1

原创 Java中的异常详解

一、异常介绍   一、介绍 即程序执行过程中发生的不正常的现象(开发过程中的语法错误和逻辑错误不属于异常)。   执行过程中的异常可以分为两类:Error和Exception。   Error: Java虚拟机无法解决的严重问题。 如:JVM系统内部错误、资源 耗尽等严重情况,StackOverflowError和OOM。一般不编写针对性的代码进行处理。   Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使 用针对性的代码进行处理 例如:

2021-02-04 14:13:51 248 1

原创 (九) 面向对象 - 内部类

一、内部类介绍   一、内部类介绍 一个类定义在另一个类的内部,前者称之为内部类,后者称之为外部类。   内部类一般用在定义它的类和语句块内,在外部使用它时需要给出完整的名称,且不可以与外部类的名称相同。   使用场景为当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内 部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使 用内部类。比如:集合中的某些结构     二、内部类特点 内部类是一个编译器行为,与虚拟机无关。编译器会将

2021-02-03 18:32:59 211

原创 (八) 面向对象 - 抽象类与接口

一、抽象类   一、介绍   抽象类与抽象方法: 有时将一个对象设计的比较抽象,以至于没有具体的实例,这样的类称之为抽象类。 对于某个方法的设计不提供具体实现,而是由子类来实现这个方法,这样的方法称之为抽象方法。 含义一个或多个抽象方法的类称之为抽象类。     定义: 1、定义抽象类 与 抽象方法: public abstract class AbstractClass { .... public abstract void pri

2021-02-03 00:07:41 213

原创 (七)面向对象 - final关键字

一、final关键字介绍   1、介绍: 直译为最终的,可以修饰在类上(内部类、外部类,此两者是相对而言的)、方法上(实例方法、静态方法)、变量上(局部变量、成员变量)。   2、修饰对象的特点:   在修饰类时,修饰的类不能够被继承。例如:String, StringBuilder public final class String implements java.io.Serializable, Comparable<String>, CharSeque

2021-01-31 11:39:46 251 1

原创 (六) 面向对象 - static关键字

一、static关键字   1、介绍: 译为静态,可以作用在方法,成员变量,代码块上,内部类。 随着类的加载而加载 ,优先于对象存在。   2、作用:   作用在方法上: 访问权限允许时,可不创建对象,直接被类调用。 public class User{ ... public static void print(){ System.out.println("打印信息!"); } ... } public class Te

2021-01-30 21:39:11 283 1

原创 (五) 面向对象 - 包装类与BigInteger、BigDecimal

对于基本数据类型,有时我们需要一个基本数据类型所对应的对象,而这个对象所对应的类我们称之为包装类。   由于像float、double浮点数表示,如果小数点后面数字太多,会出现精度缺失,但对于像银行等系统,精度缺失是灾难性的,而BigInteger、BigDecimal可以解决这个问题。     一、Number抽象类   public abstract class Number implements java.io.Serializable { publi

2021-01-30 13:40:41 340

原创 (四) 面向对象 - Object类

Object类为所有类的超类,在java的每个类中都扩展了Object类。 在Object中定义了许多重要方法,下面介绍重要的方法:     一、Object方法介绍   一、方法 public final native Class<?> getClass() public native int hashCode() public boolean equals(Object obj) protected native Object clone

2021-01-29 16:23:32 278

原创 (三)面向对象 - 多态

一、多态介绍   一、多态简介   1、介绍 接口的多种不同的实现方式即为多态。 由于子类与父类之间存在"is - a"关系,这种规则的另外一种表述是替换原则(substitution principle)。因此父类对象出现的任何对象的地方都可以使用子类对象替换,简单来说即,父类型的变量可以引用子类型的对象。 public class Animal{ ... } public class People{ } public class Polymorphic{

2021-01-28 23:35:00 159 1

原创 (二) 面向对象 - 继承

一、类与类的关系   对于类与类之间的关系可以分为以下几类:   一、依赖   描述: 对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返 回值建立的对于其他对象的调用关系。   另外,依赖表示类之间的是 一种“临时、短暂”关系,这种关系是不需要保存的。   示例: public class A{ public D method(B b){ C c = new C();

2021-01-28 20:07:05 342 1

原创 (一) 面向对象 - 封装

一、对象导论   一、Java的优点   1、面向对象: 在java中万物皆对象   2、安全性: java会在牺牲一些内存和对下标进行检查,来保证安全。 同时java的垃圾回收器会监视用new创建的所有对象,辨别那些不会再使用的对象,不需要再销毁对象。   3、可移植: 无论你的机器是32位或64位,其int值都是4位,而不像 C 或 c++在位数不同的机器上int值也不同。   4、动态性: 由于反射的存在,java称得上时一门准动态语言,即你可以在运行

2021-01-28 15:03:09 110

原创 (六) JavaSE基础知识 - 数组

一、数组简介   一、特点:   1、 数组本身是引用数据类型,它可以存储任何数据类型,也就是基本数据类型,引用数据类型。 2、 创建数组对象会在内存区域内分配一块连续的内存空间,数组名中的引用是这块内存空间的首地址。 3、 数组的长度一旦确定,就不能改变。 4、 通过下标调用指定位置的元素。     二、内存分配   int[] arr = {1,3,5,23,25,37,123}     二、一维数组 没有初始化,则默认值为如下表

2021-01-27 22:38:59 218

原创 (五) JavaSE基础知识 - 变量、作用域、注释

一、变量   一、分类   1、成员变量: 位于类内部,方法外,会自动初始化,存储在堆中。   ​ 类变量: ​ 使用static修饰的成员变量,对于类变量而言,同一个类的不同对象共享该变量。 ​ ​ 实例变量: ​ 非static修饰的成员变量,同一个类的不同对象拥有不同的实例变量。 ​ 2、局部变量: 除形参外需要自动初始化,不然会报错,存储在栈中。 ​ 包括:形参、方法变量、代码块变量     二、示例 public class Salary{

2021-01-27 21:26:24 144

原创 (四) JavaSE基础语法 - 流程控制结构

对于流程控制结构大致可以分为三类: 1、顺序结构 2、分支结构 3、循环结构     一、顺序结构 即程序自上而下的执行流程   二、分支结构 用于一些分支判断,可以分为if - else、switch - case - default。   1、if - else: 语法: if(布尔表达式){ 执行代码块1; } else{ 执行代码块; }   注意: 可以通过嵌套,实现一些复杂的判断。 如果你不写{},那么对应的执行代码块只有一行。

2021-01-27 20:48:50 301 1

原创 (三) JavaSE基础知识 - 数据类型

一、Java中的数据类型分类   一、分类 可以分为两类: 基本数据类型(8中):byte、short、int、long、char、boolean、float、double。 引用数据类型:类、接口、数组等。     二、基本数据类型介绍   一、分类 注意:此处的数字表示字节数,一个字节为8位   对于基本数据类型可以分为四大类: **1、整型(4种):**byte(1)、short(2)、int(4)、long(8) **2、浮点型(2种):**floa

2021-01-27 15:46:48 270

原创 (二) JavaSE基础语法 - 标识符

一、标识符的命名规则   一、标识符包含那些?: 包名、类名、方法名、变量名、常量名等。   二、命名规则: 1、 26个英文字母、0~9数字、_、$符号组成(可以使用汉字命名,但不推荐)。 2、 不能够直接使用关键字与保留字,但可以包含关键字与保留字。 3、 不能够以数字开头。 4、 严格区分大小写,但不限定长度。   示例: 正确: $11 _11 s11 inew 错误: 1i //数字开头 new //直接使用了new关键字   三、附录: &n

2021-01-26 17:32:24 222

原创 (一) JavaSE基础语法 - 操作符

一、基本概念 1、介绍: 表达式由操作数与操作符组成,操作数可以是一个常量、变量或表达式,操作符用于指明操作数的操作方式。 比如:1 + 2,1 > 2 && true。     2、优先级: 优先级 操作符 简介 结合性 1 [ ]、.、( ) 方法调用,属性获取 从左向右 2 !、~、 ++、 – 一元运算符 从右向左 3 * 、/ 、% 乘、除、取模(余数) 从左向右 4 + 、 - 加减法 从左向右 5 <<、 &

2021-01-22 22:34:11 210 4

空空如也

空空如也

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

TA关注的人

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