![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
一棵栗子树
一失足 千古恨 龙游浅滩遭虾戏;
君莫悔 待重头 卷土重来未可知。
展开
-
springboot 启动报错[extShutdownHook]
参考springboot 启动报错[extShutdownHook] - 门口问 - 博客园主要原因是包导入错误没有导入或者导入了错误的web启动器处理方法如下:pom文件中导入如下配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</ar原创 2021-09-15 16:48:13 · 2274 阅读 · 0 评论 -
MyBatis踩坑记录 Column count doesn‘t match value count at row 1
今天遇到Column count doesn‘t match value count at row 1 这个问题, 提示我列数不正确然而...我的列数是正确的事实上是因为<foreach collection="list" item="item" index="index" separator="," open="(" close=")">的原因造成的,open和close:open="(" close=")会在最外层在包一层括号参考资料:https://blo...原创 2021-06-24 18:02:39 · 338 阅读 · 0 评论 -
Filter 与 OncePerRequestFilter
运行原理当客户端向服务器端发送一个请求时,如果有对应的过滤器进行拦截,过滤器可以改变请求的内容、或者重新设置请求协议的相关信息等,然后再将请求发送给服务器端的Servlet进行处理。当Servlet对客户端做出响应时,过滤器同样可以进行拦截,将响应内容进行修改或者重新设置后,再响应给客户端浏览器。在上述过程中,客户端与服务器端并不需要知道过滤器的存在。在一个Web应用程序中,可以部署多个过滤器进行拦截,这些过滤器组成了一个过滤器链。过滤器链中的每个过滤器负责特定的操作和任务,客户端的请求在这些过滤器原创 2021-06-15 15:51:03 · 4088 阅读 · 2 评论 -
Springboot autoconfigure 的相关常用注解
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。参考:https://www.cnblogs.com/duanxz/p/7493276.html@AutoConfigureBefore 和 @AutoConf.原创 2021-06-09 14:41:29 · 137 阅读 · 0 评论 -
@ResponseStatus注解 与 自定义异常
@ResponseStatus加在自定义运行时异常上示例代码:@ResponseStatus(HttpStatus.BAD_GATEWAY)public class BadGatewayException extends RuntimeException { public BadGatewayException() { } public BadGatewayException(String message) { super(message); .原创 2021-06-06 17:40:55 · 830 阅读 · 0 评论 -
Java @Min(0)的意义
它来自javax.validation 注解@Min 验证 Number 和 String 对象是否大等于指定的值@Max 验证 Number 和 String 对象是否小等于指定的值javax.validation 详细内容可以参考https://blog.csdn.net/weixin_42546729/article/details/89364431?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlo.原创 2021-04-21 17:56:56 · 3994 阅读 · 0 评论 -
SpringBoot 配置类 @Configuration和@Bean的使用
基本介绍Spring Boot推荐使用java配置完全代替XML配置,java配置是通过@Configration和@Bean注解实现的。二者作用如下:@Configration 注解:声明当前类是一个配置类,相当于Spring中的一个XML文件 @Bean 注解:作用在方法上,声明当前方法的返回值是一个Bean配置类的加载spring容器在启动的时候会去扫描@Configuration,并将相关的类进行加载。它将在resources目录下的META-INF...原创 2021-04-13 16:55:30 · 10873 阅读 · 0 评论 -
Lombok的@Setter @Getter注解
@Setter @Getter :可以为相应的属性自动生成Getter/Setter方法示例代码1,作用于整个类,为所以成员产生set和get1方法import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class Person { String name; int age; boolean sex;}示例代码2,作用于某一成员,为该成员产生set和getpublic class原创 2021-04-11 19:41:34 · 1333 阅读 · 0 评论 -
Java8 optional的使用
Optional类是Java8为了解决null值判断问题,使用Optional类可以避免显式的null值判断(null的防御性检查)这是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。代码示例of 和ofNullableof方法通过工厂方法创建Optional类。需要注意的是,创建对象时传入的参数不能为null。如果传入参数为null,则抛出NullPointerException 。ofNullable为指定的值创建.原创 2021-04-11 18:27:36 · 366 阅读 · 0 评论 -
Java中的Properties类
参考资料:https://www.matools.com/api/java8https://blog.csdn.net/amosjob/article/details/82747733https://blog.csdn.net/zw1_csdn/article/details/101440040?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefa原创 2021-04-11 10:16:13 · 135 阅读 · 0 评论 -
SpringBoot使用@Value读取配置文件
配置文件SpringBoot使用一个全局的配置文件,配置文件名是固定的。 application.properties application.yml 配置文件放在src/main/resources目录或者类路径/config下。 用法@Value("${spring.application.name:default}")private String appName;含义:如果能找到spring.application.name,找不到spring.applicat原创 2021-04-10 22:40:31 · 1288 阅读 · 0 评论 -
Lombok的@Builder注解
参考资料:https://blog.csdn.net/zzti_erlie/article/details/93602964?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.non原创 2021-04-10 21:59:02 · 211 阅读 · 0 评论 -
Lombok的@Data注解
@Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法在实体类的编写过程中,常常需要应用大量的get、set方法,需要写大量的重复代码,即有的工具有自动生成功能,当时也会使实体类中产生大量冗余代码.Lombok为我们提供了相应注解可以解决这类问题----@Data示例代码:import lombok.Data;@Datapublic class Person { String name; in原创 2021-04-10 21:35:47 · 1677 阅读 · 0 评论 -
java的四种元注解@Retention @Target @Document @Inherited
java中元注解有四个: @Retention @Target @Document @Inherited;@Retention表示在什么级别保存该注解信息@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含,(注解将被编译器丢弃)@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,(注解在class文件中可用,但会被VM丢弃 )@原创 2021-04-09 00:08:47 · 312 阅读 · 1 评论 -
IDEA 安装 ParentUML插件 绘制uml图
安装ParentUML插件打开 idea->preference->plugins搜索UML点击install安装绘制UML图新建一个.puml文件vim ump.puml输入如下代码:@startumlinterface parent {}interface son extends parent {}@enduml用ParentUML打开该文件,看到如下UML图绘制完成!...原创 2021-04-08 19:22:08 · 427 阅读 · 0 评论 -
Mac 通过homebrew安装Java8
安装homebrew参考这篇博客:https://blog.csdn.net/flyconley/article/details/115284264安装Java8打开terminal,输入如下命令brew tap AdoptOpenJDK/openjdkbrew install adoptopenjdk8 #此处写java8会提示找不到检查是否安装成功新建 HelloWorld.java 文件,其中 .java 为拓展名,输入如下代码public class HelloWo原创 2021-03-28 18:04:55 · 5322 阅读 · 0 评论 -
从零开始学Java(十七) String
String 类是不可变类,也就是说 String 对象声明后,将不可修改 public class StringTest01 { public static void main(String[] args) { String s1 = "a"; String s2 = "b"; s1=s1 + s2; //ab //new String(“a”); System.out.println(s1); } }String 对象赋值后不能再修改,这就是不可变对象,如果对字原创 2021-03-13 12:26:28 · 212 阅读 · 0 评论 -
从零开始学Java(十六) 包装类
需要包装类的原因Java是一个面相对象的编程语言,但基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。比如,当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。包装类的继承关系用法public class IntegerTest01 {原创 2021-03-13 12:07:03 · 67 阅读 · 0 评论 -
从零开始学Java(十五) 日期类
常用日期类: java.util.Date java.text.SimpleDateFormat java.util.Calendarimport java.util.Date;import java.text.SimpleDateFormat;import java.util.Calendar;public class DateTest01 { public static void main(String[] args) throws Exception{ //取得今.原创 2021-03-12 20:23:26 · 63 阅读 · 0 评论 -
从零开始学Java(十四) 枚举
参考博客:https://www.cnblogs.com/singlecodeworld/p/9887926.html//使用枚举类型,能够限定取值的范围//使程序在编译时就会及早的返现错误//这样程序会更加健壮public class EnumTest03 { public static void main(String[] args) throws Exception{ Result r = method1(10, 2); if (r == Resul原创 2021-03-12 20:15:08 · 71 阅读 · 0 评论 -
从零开始学Java(十三) 数字类
java.text.DecimalFormat 和 java.math.BigDecimalimport java.text.DecimalFormat;public class DecimalTest01 { public static void main(String[] args) throws Exception{ //加入千分位,保留两位小数 DecimalFormat df = new DecimalFormat("###,###.##"); System.out.prin原创 2021-03-12 20:06:58 · 56 阅读 · 0 评论 -
从零开始学Java(十二) 产生随机数Random
Random 位于 java.util 包下,可以产生随机数import java.util.Random;public class RandomTest01 { public static void main(String[] args) throws Exception{ Random r = new Random(); for (int i=0; i<5; i++) { System.out.println(r.nextInt原创 2021-03-11 21:55:33 · 169 阅读 · 0 评论 -
从零开始学Java(十一) 数组
基本概念数组是一种引用数据类型,在内存中存储示意图如下: 1. 数组是一组数据的集合 2. 数组作为一种引用类型 3. 数组元素的类型可以是基本类型,也可以是引用类型,但同一个数组只能是同一种类型 4. 数组作为对象,数组中的元素作为对象的属性,除此之外数组还包括一个成员属性 length,length 表示数组的长度 5. 数组的长度在数组对象创建后就确定了,就无法再修改了 6. 数组元素是有下标的,下标从 0 开始,也就是第一个元素的下标为 0,依次类推最后一个元.原创 2021-03-11 21:50:28 · 93 阅读 · 0 评论 -
从零开始学Java(十) final
final表示不可改变采用 final 修饰的类不能被继承 public class FinalTest01 { public static void main(String[] args) { } }final class A1 { public void test1() { } }//不能继承 A1,因为 A1 采用 final 修饰了class B1 extends A1 { public void test2() { } .原创 2021-03-11 20:04:20 · 72 阅读 · 0 评论 -
从零开始学Java(九) super
super 和 this 的对比① this this 是一个引用,保存内存地址指向自己。 this 出现在实例方法中,谁调用这个实例方法,this 就代表谁,this 代表当前正在执行这个动作的对象。 this 不能出现在静态方法中。 this 大部分情况下可以省略,在方法中区分实例变量和局部变量的时候不能省略。 “this(实际参数列表)”出现在构造方法第一行,通过当前的构造方法去调用本类当中其它的构造方法。 ② super 严格来说,sup...原创 2021-03-11 18:31:45 · 75 阅读 · 0 评论 -
java编译目录下的所有.java文件
在生成头文件的时候,发现在某个java文件中,使用了其他的自己定义的类,此时无法通过我们熟悉的javac xx.java 来直接编译处理方法是:javac -d ./ ./*.java-d 指明类层次的根目录./ 表示为当前目录./*.java表示当前目录下的所有.java后缀的文件...原创 2021-03-11 17:52:06 · 2147 阅读 · 0 评论 -
从零开始学Java(八) 继承
java继承的特性① B类继承 A类,则称 A类为超类(superclass)、父类、基类,B类则称为子类(subclass)、派生类、扩展类。 ② java 中的继承只支持单继承,不支持多继承,C++中支持多继承,这也是 java 体现简单性的一点,换句话说,java 中不允许这样写代码:class B extends A,C{ }。 ③ 虽然 java 中不支持多继承,但有的时候会产生间接继承的效果,例如:class C extends B,class B extends A,也..原创 2021-03-11 17:47:47 · 268 阅读 · 0 评论 -
从零开始学Java(七) private this static
private在 java 语言中封装的步骤应该是这样的:需要被保护的属性使用 private 进行修饰,给这个私有的属性对外提供公开的 set 和 get 方法,其中 set 方法用来修改属性的值,get 方法用来读取属性的值。其中 set 方法有一个参数,用来给属性赋值,set 方法没有返回值,一般在 set 方法内部编写安全控制程序, 因为 set 方法是修改内部数据的,而 get 方法不需要参数,返回值类型是该属性所属类型。 set 方法和 get 方法都不带 stati..原创 2020-11-25 22:47:25 · 165 阅读 · 0 评论 -
从零开始学Java(六) 类和对象
类的定义[修饰符] class 类名 { 类体 = 属性 + 方法 } public class Student { int no; String name; int age; boolean sex;}对象的创建与使用public class StudentTest { public static void main(String[] args) { int i = 10; Studen...原创 2020-11-23 23:09:04 · 88 阅读 · 0 评论 -
从零开始学Java(五) 方法
方法的定义与调用定义/声明方法的语法格式:[修饰符列表] 返回值类型 方法名(形式参数列表) { 方法体; } public class MethodTest { public static void main(String[] args) { MethodTest.sumInt(100, 200); MethodTest.sumDouble(1.0, 2.0); } public static v...原创 2020-11-21 22:40:32 · 91 阅读 · 0 评论 -
从零开始学Java(四) 运算符 控制语句
运算符注意:比较两个字符串是否相等,不能使用“==”,必须调用 equals 方法逻辑运算符赋值运算符x += 1 和 x = x + 1 真的是完全相同吗?byte b = 10;//b = b + 1; 编译不通过b += 1; //编译通过并可以正常运行//所以实际上 b += 1 等同于:b = (byte)(b + 1);java 对于扩展类的赋值运算符进行了特殊的处理,所有的扩展赋值运算符,最终都不会改变运算的结果类型,假设前面的变量是 byte 类型原创 2020-11-21 21:38:32 · 102 阅读 · 0 评论 -
从零开始学Java(三) 标识符与关键字 变量 数据类型
标识符与关键字标识符命名规则① 标识符只能由数字、字母、下划线“_”、美元符号“$”组成,不能含有其它符号。 ② 标识符不能以数字开始。 ③ java 关键字和保留字不能作为标识符。 ④ 标识符严格区分大小写。 ⑤ 标识符理论上没有长度限制。 标识符命名规范遵循驼峰命名方式:可以很好的分隔单词,每个单词之间会划清界限,同样也是增强程序的可读性,例如:getName 则表示获取名字,UserService 则表示用户业务类; 类名、接口名首字母大写,后面每个单词首字母.原创 2020-11-20 23:32:53 · 102 阅读 · 0 评论 -
从零开始学Java(二) JDK 的下载与安装 及 HelloWorld程序
下载JDKJava 语言由 Sun(Sun Microsystems)公司开发,2009 年被 Oracle(甲骨文)公司收购, 所以目前 JDK 需要从 Oracle 官网https://www.oracle.com/cn/index.html 下载立即下载Java 这里选择JDK8安装JDK一直下一步即可配置环境变量环境变量->系统变量->新建在系统变量中找到Path->新建添加两条环境变量%JA...原创 2020-10-06 22:19:21 · 145 阅读 · 0 评论 -
从零开始学Java(一) Java 简介
JavaSE、JavaEE、JavaMEJava 包括三大块,分别是 JavaSE(Java Platform,Standard Edition)、JavaEE(Java Platform,Enterprise Edition)、JavaME(Java Platform,Micro Edition),JavaEE 和 JavaME 都包含 JavaSE。实际上,这三大块就是 Java的三大版本, JavaSE 是 Java的标准版,是学习JavaEE 和 JavaME 的基础,JavaEE 是企业版原创 2020-10-06 20:39:32 · 166 阅读 · 0 评论