![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java笔记
文章平均质量分 72
Java笔记
帅大大的架构之路
坚持!努力!奋斗!
展开
-
过滤器,拦截器,监听器的区别
SpringMVC 中的Interceptor 拦截请求是通过来实现的。在SpringMVC 中定义一个Interceptor 非常简单,主要有两种方式,第一种方式是要定义的Interceptor类要实现了Spring 的接口,或者是这个类继承实现了HandlerInterceptor 接口的类,比如Spring 已经提供的实现了HandlerInterceptor 接口的抽象类HandlerInterceptorAdapter;第二种方式是实现Spring的。转载 2022-09-16 15:38:09 · 351 阅读 · 1 评论 -
FastJsonHttpMessageConverter类的作用
发送post类型的json请求,只需要在body参数中设置json字符串,而不需要设置header参数Content-Type:application/json就可以。我一度还比较纳闷,后来猜测,后台肯定做了什么配置,当接收post请求的时候,默认增加了对字符串转json的支持。接着,修改格式,添加请求头Content-Type:application/json。后来,还发现一个奇怪的问题,设置参数的时候,使用下划线或者驼峰式,后台都可以解析,这个让我有些诧异,怀疑还是转换器的作用。2、参数下划线转驼峰。转载 2022-09-15 11:43:36 · 963 阅读 · 0 评论 -
Springboot集成pagehelper-spring-boot-starter分页插件
2.application.yml配置。原创 2022-08-22 17:52:11 · 1031 阅读 · 0 评论 -
前后端分离时,获取不到session
在前后端分离的springboot项目中,进行图片验证时,第一次获取验证图片后,我将code值加密后存放到了session中,打算在下一个请求进行图片验证时直接从session中获取code值,然后进行对比。结果调试时,在第二步过程中获取的session一直为null。因此匹配结果一直false。研究了大半个小时,才找到解决办法:后台代码没有问题,需要在前端代码每次发送请求时添加。此时在后台两次请求获取的sessionId完全相同,也就是同一个session。controller层。转载 2022-08-22 08:57:42 · 1809 阅读 · 0 评论 -
Stream流详解
stream流操作是Java 8提供一个重要新特性,它允许开发人员以声明性方式处理集合,其核心类库主要改进了对集合类的 API和新增Stream操作。Stream类中每一个方法都对应集合上的一种操作。将真正的函数式编程引入到Java中,能 让代码更加简洁,极大地简化了集合的处理操作,提高了开发的效率和生产力。同时stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。............转载 2022-08-05 10:09:23 · 30560 阅读 · 3 评论 -
public static <T> List<T> asList(T... a) 原型是怎么回事?
public static List asList(T... a)转载 2022-08-04 16:25:36 · 79 阅读 · 0 评论 -
调用阿里云oss和sms服务
代码】调用阿里云oss和sms服务。原创 2022-08-04 14:30:52 · 537 阅读 · 0 评论 -
什么是幂等
以上问题,就是在单体架构转成架构之后,带来的问题。当然不是说单体架构下没有这些问题,在单体架构下同样要避免重复请求。但是出现的问题要比这少得多。为了解决以上问题,就需要保证接口的性,接口的幂等性实际上就是。有些接口可以天然的实现幂等性,比如查询接口,对于查询来说,你查询一次和两次,对于系统来说,没有任何影响,查出的结果也是一样。除了查询功能具有天然的幂等性之外,增加、更新、删除都要保证幂等性。那么如何来保证幂等性呢?...转载 2022-08-02 11:40:23 · 134 阅读 · 0 评论 -
Linux执行Jar包: no main manifest attribute
在服务器上面使用java-jar执行jar包的时候,报如下错误。需要在pom.xml中加入以下配置。然后重新打包,再执行,就没啥问题了。转载 2022-07-25 10:10:39 · 1072 阅读 · 0 评论 -
Field ‘id‘ doesn‘t have a default value 错误的解决办法
如果你在写web项目的时候,然后在写添加的方法的时候,出现Field‘id’doesn’thaveadefaultvalue这个错误,那就什么都不用看直接找到你的数据库,然后打开设计表,看下面自增递增是否勾选上了,如果没有勾上再去执行就可以了。(这个问题困扰了我半天时间)...转载 2022-07-20 23:35:48 · 18404 阅读 · 0 评论 -
23 种设计模式详解
原型模式的本质就是clone,可以解决构建复杂对象的资源消耗问题,能再某些场景中提升构建对象的效率;还有一个重要的用途就是保护性拷贝,可以通过返回一个拷贝对象的形式,实现只读的限制。当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Wrapper类,持有原类的一个实例,在Wrapper类的方法中,调用实例的方法就行。命名规则使用选择根据合成复用原则,组合大于继承。.........转载 2022-07-19 16:55:37 · 163 阅读 · 1 评论 -
JSON.toJSONString无法传递boolean
开始是按上面写的,发现state字段一直传不到前端,在网上找了很多方法,最后还是没能解决,后面听说springboot传数据给vue不需要转json,直接返回也可以接收,就改成下面这样了。在使用JSON.toJSONString转json格式的时候,后端是springboot,前端是vue,每次返回的User对象总是少一个字段state。无法将state字段传递回去,具体原因还没找到,不管是改get、set,还是。直接返回Map,在前端就可以接收到全部字段了。的时候加那些参数,都不管用~...原创 2022-07-19 10:02:41 · 861 阅读 · 0 评论 -
elment分页插件不生效
不管传的是几,后端都是1,至于其他原因导致分页插件不生效的,可参考网上其他方案。,进而导致点击分页后面几页的时候一直显示第一页,因为前端的。网上看了很多原因,但跟我的不一样,我的原因是前端data里面存的是。,而后端实体类存的是。...原创 2022-07-19 09:42:50 · 803 阅读 · 1 评论 -
SpringBoot跨域及三种解决方式
1)编写过滤器。转载 2022-07-15 15:08:22 · 432 阅读 · 1 评论 -
Process finished with exit code 1 解决方法汇总
原文在idea启动项目的时候,有时会碰到Process finished with exit code 1 的情况,这里笔者总结了几种场景和对应的解决方法,以供大家参考。转载 2022-07-12 17:25:13 · 14550 阅读 · 0 评论 -
java检索es
原文这篇博文的主题是ES的查询,因此我整理了尽可能齐全的ES查询场景,形成下面的图:本文基于elasticsearch 7.13.2版本,es从7.0以后,发生了很大的更新。7.3以后,已经不推荐使用这个client,取而代之的是。测试使用的数据示例首先是,Mysql中的部分测试数据:Mysql中的一行数据在ES中以一个文档形式存在:复制简单梳理了一下ES JavaAPI的相关体系,感兴趣的可以自己研读一下源码。接下来,我们用十几个实例,迅速上手ES的查询操作,每个示例将提供SQL语句、ES语句和Java转载 2022-07-12 15:26:55 · 4521 阅读 · 1 评论 -
java操作redis
原文目录前言一、准备步骤二、Jedis连接Redis三、基本操作3.1 操作String数据类型3.2 操作List数据类型3.3 事务操作四、SpringBoot集成Redis4.1 介绍4.2 集成Redis4.3 保存对象小结修改配置文件***redis.conf***:**(1)注以下属性,因为我们是需要进行*远程连接*的:(2)将***protected-mode*** 设置为*no*(3)设置为*允许后台连接*注意:**在*远程服务器*进行连接需要确保将以下三个步骤都完成:(1)设置服务器转载 2022-07-12 11:06:40 · 239 阅读 · 0 评论 -
BeanUtils.copyProperties() 对比 mapstruct
原文浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。假设B复制了A,修改A的时候,看B是否发生变化:如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)拷贝简单对象的时候是深拷贝拷贝复杂对象的时候(对象属性里持有对象)是浅拷贝拷转载 2022-06-29 10:58:06 · 598 阅读 · 0 评论 -
拦截器与过滤器的实现代码
1.新建一个interceptor包LoginInterceptor.java2.新建一个配置包configLoginInterceptorConfigurer.java过滤器1.建一个filter包LoginCheckFilter.java原创 2022-06-25 15:45:55 · 199 阅读 · 0 评论 -
spring中动态代理的两种方式
原文在上一篇中我们已经介绍了AOP相关的知识,并且了解了spring是通过动态代理的方式实现AOP逻辑的。在spring中动态代理也分为两种一种是JDK动态代理,一种是CGLib动态代理。下面我们看一下这两种动态代理的区别。我们首先看一下在没有动态代理时,添加事物的的逻辑处理,也就上一篇中的事例。虽然上述代码已经实现了我们的逻辑,但是在上一篇中我们已经介绍过了,上述代码的问题就是会有重复的有关事物的代码添加到业务类中,这样很不方便维护。解决的办法就是通过AOP方式来解决,下面我们分别采用JDK动态代理和CG转载 2022-06-14 16:05:04 · 3566 阅读 · 0 评论 -
Servlet基础详解
原文目录前言一、Servlet简介二、Servlet的作用三、Servlet处理的信息是什么四、Servlet的开发流程(一)、实现Servlet接口或者继承HttpServlet类(二)、重写HttpServlet类的doGet()和doPost()方法(三)、配置web.xml文件或者使用注解对servlet进行配置五、Servlet的生命周期(一)、通过web.xml文件来配置load-on-startup(启动时加载)优先级?(二)、通过注解来配置load-on-startu转载 2022-05-13 10:54:45 · 713 阅读 · 0 评论 -
JavaSE核心知识点总结
原文JavaSE核心知识点总结一:Java 概述一、简介定义:Java 是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。应用在桌面应用程序、Web应用程序、分布式系统和嵌入式系统等领域。发展历程1996年1月,Sun公司发布了Java的第一个开发工具包*(JDK 1.0)*,转载 2022-05-04 18:30:36 · 8768 阅读 · 4 评论 -
类加载顺序(没写完)
类加载顺序下面两段代码,我还没弄明白,有时间把解释加上去第一段package p1.Demo;public class Demo17 { public static void main(String[] args) { Son son = new Son(); System.out.println("----end----"); }}class Son extends Father { private int a = 1;原创 2022-05-04 15:27:09 · 251 阅读 · 0 评论 -
java中的ClassLoader详解
原文本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性加载那么多jar包那么多class,那内存不崩溃。转载 2022-05-04 14:38:23 · 5492 阅读 · 3 评论 -
Java 单例模式
原文Java 单例模式 Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。 单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免由于操作多个实例导致的逻辑错误。如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制的作用,那么单例模式也许是一个值得考虑的选择。 单例模式有很多种写法,大部分写法都或多或转载 2022-05-04 10:21:41 · 491 阅读 · 0 评论 -
Java基础之—反射
原文Java基础之—反射反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的转载 2022-04-28 16:07:01 · 119 阅读 · 0 评论 -
finally是否会影响return的值,为什么?
finally是否会影响return的值,为什么?public class Demo4 { public static void main(String[] args) { System.out.println(m1()); } public static int m1() { int i = 10; try{ i = 20; throw new RuntimeException();原创 2022-04-12 13:53:26 · 421 阅读 · 0 评论 -
Java:详解Java中的异常(Error与Exception)
原文Java:详解Java中的异常(Error与Exception)《Java:详解Java中的异常(Error与Exception)》《Java:简述Java中的自定义异常》《Java:简述throw-throws异常抛出》《Java:简述try-catch-finally异常捕获》《Java:简述try-catch-finally中return返回》一、 异常机制的概述 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执转载 2022-04-11 14:48:19 · 2164 阅读 · 0 评论 -
Java 中 >>、>>>、^、&、|
原文Java>>与>>>的区别>>:带符号右移,也叫算术移位。正数右移高位补0,负数右移高位补1。比如:4 >> 1,结果是2;-4 >> 1,结果是-2。-2 >> 1,结果是-1。>>>:无符号右移,也叫逻辑移位。无论是正数还是负数,高位通通补0。4 >>>1,结果是2;-4 >>> 1,结果是2,147,483,646。-2 >>> 1,结果是2,147,483,647,2转载 2022-04-08 14:51:24 · 1417 阅读 · 0 评论 -
Java Collection集合
原文Java Collection集合类(容器类):**用于存储数据的容器。Java 所有的集合类都位于 java.util 包下,提供了一个**表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。**接口:*表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而达到“多态”。在面向对象编程语言中,接口通常用来形成*规范。实现: 集合接口的具体实现,是重用性很高的数据结构。算法: 在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法,例转载 2022-04-07 14:31:22 · 627 阅读 · 1 评论 -
Java 中泛型 T 和 ? 的区别?浅谈类型变量 和 通配符
原文Java 中泛型 T 和 ? 的区别?浅谈类型变量 和 通配符Java 中泛型 T 和 ? 的区别泛型中 T 类型变量 和 ? 通配符 区别定义不同 :T 是类型变量,? 是通配符使用范围不同:? 通配符用作 参数类型、字段类型、局部变量类型,有时作为返回类型(但请避免这样做)T 用作 声明类的类型参数、通用方法的类型参数 (这里注意 类型参数 和 参数类型 是两个概念)通常我们使用 ? 的时候并并不知道也不关心这个时候的类型,这里只想使用其通用的方法,而且 ? 通配符是无法作转载 2022-04-07 11:47:11 · 5508 阅读 · 2 评论 -
java 中 BigDecimal 详解
原文java 中 BigDecimal 详解首先,学习一个东西,我们都必须要带着问题去学,这边我分为 【为什么?】【是什么?】【怎么用?】【为什么要用BigDecimal?】首先,我们先看一下,下面这个现象那为什么会出现这种情况呢?因为不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。注:根本原因是:十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可能不精确。只能无限接近于那个值但是,在项目中,我们不可能让这种情况出现,特别是金融转载 2022-04-06 13:45:27 · 347 阅读 · 0 评论 -
String、StringBuffer与StringBuilder之间区别
原文String、StringBuffer与StringBuilder之间区别StringStringBufferStringBuilderString的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串转载 2022-04-06 10:59:12 · 236 阅读 · 1 评论 -
Java中的Object类
原文Java中的Object类一. Object类简介Object类是Javajava.lang包下的核心类,Object类是所有类的父类,何一个类时候如果没有明确的继承一个父类的话,那么它就是Object的子类;以下两种类的定义的最终效果是完全相同的:class Person { }class Person extends Object { }使用Object类型接收所有类的对象Object 类属于java.lang包,此包下的所有类在使用时无需手动导入,系统会在程序编译期间自动导转载 2022-04-01 10:35:37 · 10470 阅读 · 2 评论 -
Java内部类详解
原文Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲:一.内部类基础二.深入理解内部类三.内部类的使用场景和好处四.常见的与内部类相关的笔试面试题一.内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类转载 2022-03-31 15:15:42 · 136 阅读 · 0 评论 -
java接口常量与枚举
原文1、常量接口程序当中,频繁使用到多次的固定值,使用接口保存这个常量。程序当中,需要有直观的含义,可以使用接口常量,红绿灯示例。interface ITrafficLIght{ public static final int RED = 1; public static final int GREEN= 2; public static final int YELLOW = 3; }public static void main(String[] args){ int c转载 2022-03-29 17:53:00 · 296 阅读 · 0 评论 -
Java接口回调详解
原文一.产生接口回调的场景 在现实生活中,产生接口回调的场景很简单,比如我主动叫你帮我做一件事,然后你做完这件事之后会通知我,"通知我"这个动作就是接口回调的动作.接口回调重在理解思就好.再举个例子用于下面的代码演示,老师让学生做课堂练习,学生做完练习后并告诉老师.二.什么是接口回调 在Java的层面简单的说一下接口回调:现有一个接口A,和它的实现类A1,和另外一个有接口A引用的类B,因为类B中有接口A的引用,在B执行完方法后,可以通过接口A的引用,告诉A执行完成了这个方法.由于A是一个接口转载 2022-03-29 15:34:12 · 3575 阅读 · 0 评论 -
java中接口(interface)详解
原文java中接口(interface)详解有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。接口定义举例public interface Runner { int id = 1 public void start() public void run(转载 2022-03-26 13:33:43 · 1011 阅读 · 0 评论 -
浅析Java中的final关键字
原文浅析Java中的final关键字一.final关键字的基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。1.修饰类当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。在使用final修饰类的时候,要注意谨转载 2022-03-25 16:45:27 · 77 阅读 · 0 评论 -
Java static关键字详解
原文Java static关键字详解static关键字在类中,用static声明的成员变量为静态成员变量,也成为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。这里要强调一下:static修饰的成员变量和方法,从属于类普通变量和方法从属于对象静态方法不能调用非静态成员,编译会报错static关键字的用途一句话描述就是:方便在没有创建对象的情况下进行调用(方法/变量)。显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名转载 2022-03-24 15:06:20 · 99 阅读 · 0 评论