
Java基础
文章平均质量分 68
Java基础知识
想养一只萨摩耶~
请在合适的地方掉头并重新规划路线
展开
-
Java8中的LocalDateTime获取当天的开始和结束时间
【代码】Java8中的LocalDateTime获取当天的开始和结束时间。原创 2023-01-30 15:29:00 · 1561 阅读 · 0 评论 -
cookie和session的区别
cookie是一小段的文本信息,客户端请求服务器,如果服务器需要记录该状态,就使用response向客户端颁发一个Cookie。session:session是一种记录客户状态的机制,不同的Cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器的时候,服务把客户端的信息以某种形式记录在服务器上。每个用户访问服务器都会建立一个session,那么服务器是如何标识用户的身份,就是用户与服务器建立连接的时候,服务器会自动为其分配一个sessionId(存在cookie中)。原创 2023-01-18 14:32:14 · 962 阅读 · 0 评论 -
如何自定义SpringBoot中的starter,并且使用它
SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁琐的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就自动扫描到要加载的信息并启动相应的默认配置,starter让我们摆脱了各种依赖库的处理,SpringBoot会自动通过classpath路径下的类发现需要的bean,并注册进IOC容器,SpringBoot提供了针对日常企业研发应用研发各种场景的spring-boot-starter依赖模块。原创 2022-12-08 15:45:02 · 688 阅读 · 0 评论 -
easyexcel的导出
之前用easypoi的导出用到了表头多层嵌套时,发现很麻烦,需要些很多的代码,所以今天看了一下easyexcel的导出,发现表头情况不复杂时和easypoi的难易程度是一样的,但是涉及到多层嵌套时,easyexcel就非常简单了。原创 2022-11-07 19:40:56 · 5365 阅读 · 1 评论 -
easypoi多层嵌套导致合并单元格失效
所以自己在网上找了很多很多都没有解决这个问题,而自己的数据已经看了,封装的没有毛病。所以只有一种可能,就是easypoi的问题,于是我就讲当前版本升级到了最新的版本,就解决了这个问题。这个注解,最近需要导出表格里面有多层嵌套,所以就用到了这个,但是最后导出的结果却不如人意,不仅表头不对,而且对应的数据也对应不上(数据已经是封装好的)。大家可以看到我上面标红的红框,它应该是和“人工标注”是合并单元格的,但是并没有,而且看标箭头的地方,表头是空的(我自己代码中明确有,代码太多,这里不再展示)。原创 2022-11-04 14:19:28 · 3398 阅读 · 0 评论 -
什么是跨域
当请求的url和当前页面的url在域名、协议、端口三者之间有一个不相同就会产生跨域问题。当前页面url被请求url是否跨域跨域原因index.html否域名、协议、端口都相同是协议不同(http/https)是主域名不同(baidu/test)是子域名不同(baidu/test)是端口不同(8080/7890)原创 2022-11-01 20:09:48 · 1274 阅读 · 1 评论 -
springBoot读取resource下的文件( cannot be resolved to absolute file path because it does not reside in th)
今天在测试下载文件导入时,有一个导入模板下载的部分遇到了问题,在本机上测试的很顺利,但是打成jar包在服务器上却报错了。只能通过以流的方式读取文件。原创 2022-10-26 19:22:18 · 1954 阅读 · 0 评论 -
过滤器和拦截器的区别
可能有些小伙伴们在接手公司的项目时,经常看到公司的项目中既有过滤器又有拦截器,那么它们既然都拦截的作用,那么各自扮演着什么样的角色呢?要想搞懂它们所扮演的角色,就需要搞懂它们各自有什么作用了。原创 2022-10-24 09:29:21 · 6763 阅读 · 0 评论 -
java过滤器(Filter)
filter也称之为过滤器,它是javaWeb三大组件之一(Servlet程序、Listener监听器、Filter过滤器)既可以对请求进行拦截,也可以对响应进行处理。权限检查,日记操作、拦截请求、过滤操作、对请求字符设置编码。要想介绍filter,就必须介绍Filter中的三个方法。/*** web应用启动时,web服务器将创建Filter的实例对象,并调用init方法,读取web.xml的配置,完成对象的初始化功能,原创 2022-10-19 19:45:18 · 40969 阅读 · 3 评论 -
拦截器(HandlerInterceptor)
拦截器是相对于Spring中来说的,它和过滤器不一样,过滤器的范围更广一些是相对于Tomcat容器来说的。拦截器可以对用户进行拦截过滤处理。请求进入Controller之前,通过拦截器执行代码逻辑Controller执行之后(只是Controller执行完毕,视图还没有开始渲染),通过拦截器执行代码逻辑Controller完全执行完毕(整个请求全部结束),通过拦截器执行代码逻辑。原创 2022-10-12 19:53:28 · 24287 阅读 · 2 评论 -
java的4种引用类型
java中的4种引用类型,强引用、软引用、弱引用、虚引用。说这4种引用之前,需要先说一下垃圾回收机制中的finalize()方法,finalize()方法是Object中的方法,它只有一个空的方法体,并且被protected修饰:当一个java对象被当成垃圾回收的时候,垃圾回收器会负责调用finalize()方法。原创 2022-09-30 13:27:07 · 2602 阅读 · 2 评论 -
SpringBoot 缓存之 @Cacheable介绍
目录1 概述2@Cacheable注解使用详细介绍 2.1 @Cacheable注解使用2.2Cacheable注解的属性1 概述 Spring高版本引入了cache的注解技术。该技术是一种规范。Redis的cache技术,底层使用的是Spring Data Redis。cache技术的使用需要掌握的有@EnableCaching、@Cacheable、@CacheEvict、@Caching、@CacheConfig注解的使用,这...原创 2022-02-05 17:52:13 · 18020 阅读 · 2 评论 -
Spring循环依赖产生原理
获取bean时先从单例池获取,如果没有则创建并添加到单例池原创 2022-02-11 14:26:38 · 1784 阅读 · 0 评论 -
mysql排名函数应用row_number()、rank()、dense_rank()
我们通常需要在sql中去处理一些排名的问题,因为将数据全部查询出来在内存中去出来排名这样很耗费内存并且严重影响服务器运行速度。近期在开发中就遇到了类似的问题,所以以此来记录下。函数名称作用易错点场景按照顺序依次编号依次编号返回列表时,增加序号rank()按照顺序编号、有间隔有间隔给字段增加排名,排名相同时下个排名自动跳过按照顺序编号、无间隔无间隔给字段增加排名,排名相同时下个排名不会跳过。原创 2022-09-23 13:16:23 · 602 阅读 · 0 评论 -
mysql排名函数应用row_number()、rank()、dense_rank()
我们通常需要在sql中去处理一些排名的问题,因为将数据全部查询出来在内存中去出来排名这样很耗费内存并且严重影响服务器运行速度。近期在开发中就遇到了类似的问题,所以以此来记录下。函数名称作用易错点场景按照顺序依次编号依次编号返回列表时,增加序号rank()按照顺序编号、有间隔有间隔给字段增加排名,排名相同时下个排名自动跳过按照顺序编号、无间隔无间隔给字段增加排名,排名相同时下个排名不会跳过。原创 2022-09-23 13:16:23 · 602 阅读 · 0 评论 -
atomicInteger.getAndIncrement()
可以发现它只是将原先的值进行了一个加1,但是返回的加1之前的值。那如果想要返回相加之后的值,应该调用,如下方法。大家可以先猜想一下这个输出的是几,我之前一直以为是1,但是今天发现好像并不是。可以发现这个才是返回后相加的值。原创 2022-09-22 14:49:50 · 2463 阅读 · 0 评论 -
BigDecimal简单介绍
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。原创 2022-09-08 16:36:16 · 456 阅读 · 0 评论 -
java8中list转map两个字符串变量组成一个key的问题
想要将GradeClassRelation 中的className和gradeName作为key,classId作为value,刚开始时如下写的。但是发现不行,提示了如下错误。原创 2022-09-06 15:56:29 · 4719 阅读 · 0 评论 -
添加编辑时数据不可重复验证
当时想的是:编辑时,直接判断传过来的值是否在数据库中已经存在,这样乍一看是可以的,但是后来发现不行,因为这样,你原有的数据就保存不进去了,因为既然是编辑,那么在数据库中肯定是早已存在的。比如我在编辑的时候,要判断我这个编辑后校企名称是否重复,如果按照之前的逻辑所想,那么肯定是不行的,因为这条数据肯定早已存在。首先先将根据名称将数据查询出来,然后判断id与传过来的id是否一样,如果不一样并且名称也不一样那么肯定就是重复的数据了。1 今天在编辑时,发现了一个问题,想了很一会时间。...原创 2022-08-31 10:08:39 · 573 阅读 · 0 评论 -
PageHelper分页和mybatis分页的相互转换
因为此时我们放入PageInfo对象中的数据并不是分页之后的数据(PageHelper需写在进行需要分页的上面),而是对分页之后的数据再次进行的处理,所以它并不能够进行自动的分页。于是想要看其他之前的代码是如何进行操作的,但是发现他们用的都是自己封装过的,而我的接口接口已经与前端完成了联调,像别人那样改动就必须让前端也进行相应的修改,索性就自己封装依然按照原有的参数去进行返回。碰巧,今天在进行分页查询时,发现总是查询10条数据,其余的数据查询不出来。...原创 2022-08-26 15:51:56 · 980 阅读 · 0 评论 -
继承和实现该如何选择
如果项目中的模块都遵循于一个规范,这个规范每个模块的实现参数都不同,那么可以将这些参数都提取到接口中,其他模块实现此接口定义自己的相关功能即可。这样的一个接口,可以发现接口中定义了一套规则(没有具体的方法体,只有方法和参数),当有其他的类想要用到这套规则时自己实现该接口就好。如果说项目中有重复的代码块,可以将这些重复的代码块收提取出来放到一个公共类中,让其他的模块继承这个类。所以说:当有重复的代码块时,将其抽取出来放到一个公共类中,使其子类继承这个类即可。......原创 2022-08-05 10:55:50 · 427 阅读 · 0 评论 -
lombok的注解@Accessors
大家平时在看代码时可能会发现实体类上写有这样一个注解@Accessors,那么它是什么意思,并且有什么作用呢?原创 2022-07-18 13:27:30 · 348 阅读 · 0 评论 -
spring-boot-configuration-processor(生成自定义配置的元数据信息)
平时在我们的springBoot项目中,可能会有许多的配置文件。如下图图中红色框框住的地方显示和我们的yml文件是不一样的,没有被我们的spring管理。此时可以点击File>>>ProjectStructure之后点击我们的spring配置后选择+号,然后选择自己想要被spring管理的配置文件但是此时我们配置文件中自定义的属性点击不会跳转。如你在yml文件中点击port或其他属性都会自动跳转。但是你在自己的配置文件下点击确不会有任何反应。...原创 2022-07-18 09:12:24 · 1031 阅读 · 0 评论 -
TCP和UDP的区别(简单明了)
目录1 前言2 TCP2.1 TCP如何保证可靠传输3 UDP 你知道什么是TCP和UDP吗?你知道TCP和UDP有什么区别吗?可能大家平时总是听说过TCP和UDP,但是一直不知道它们是怎么回事。今天就给大家介绍一下。我们常用的网络通讯、软件聊天、以及大家平时所看的视屏都是通过这两种协议来进行数据传输的,那它们又是如何工作呢,又有什么区别呢。注:本篇文章也是在B占看别的博主视频总结写的TCP和UDP都是在传输层,在程序之间传输数据,TCP是基于连接的,UDP是基于非连接的。如果将进程与进程之间原创 2022-07-12 14:38:52 · 14743 阅读 · 4 评论 -
接口和抽象类灵活运用
举例:大家都知道,Java是面向对象的,而对象又是根据类去关联的。我们创建一个动物类,并在这个类中创建动物对象,但是当提到动物类时,你并不知道我说的是什么动物,只有看到具体的动物,你才知道了这是什么动物,所以动物指的是一个抽象的事务并不具体,所以我们不应该在动物类中给出具体实现,而是给出一个声明即可。(抽象就是从多个事务中将共性的,本质的内容抽取出来)问题1:以上说法抽象类和普通类有什么区别呢,普通类也可以实现上述要求。看到有篇博主写的比较通俗,拿来借鉴下:Java——为什么要有抽象类的概念?_奔跑的狮子a原创 2022-07-11 17:04:13 · 367 阅读 · 0 评论 -
@ConfigurationProperties和@Value的区别
目录1 前言2 @ConfigurationProperties和@value的区别3 用法3.1 @ConfigurationProperties3.2 @Value 4 指定配置文件在平时开发中,我们会将大量的参数配置在application.properties或者application.yml文件中,通过@ConfigurationProperties注解或者@value注解可以很方便的拿到这些值。两种注解斗能够读取配置文件中属性并绑定到javaBean中,但两种存在以下不同1)使用位置不同@Con原创 2022-06-30 16:30:37 · 6979 阅读 · 1 评论 -
泛型的介绍
目录1 前言2 泛型类3 泛型擦除4 泛型通配符大家平时在编程的过程中,可能都看过泛型。我目前对于泛型的了解也不是很深刻,所以这里先简单介绍下 。那么在介绍泛型之前:先讲解两个小例子,让大家更好的理解泛型。例子1:大家肯定都知道,这样写运行时肯定会报错,因为lis集合中,一个放了String类型,一个放了数值类型。在循环中都用String类型强行转换时就会报转换异常。但是要是将List集合刚开始声明时就加上类型,那么就会在编译阶段报错。如下图:例子2:泛型只在编译阶段有效: 大家看如上代码:认为原创 2022-06-14 15:08:20 · 2466 阅读 · 0 评论 -
oss上传图片
在公司中,上传图片和视屏可以说是很常见的操作了。通常会将图片和视屏保存到阿里云上进行存储。所以需要阿里云的4个参数(站点、acess_key_id、acess_key_secret、bucket_name)。 //上传的固定值 //站点 private static final String END_POINT = "http://oss-cn-hangzhou.aliyuncs.com"; //获取acess_key_id private stati..原创 2022-05-30 09:40:13 · 1043 阅读 · 0 评论 -
根据map的key进行排序
1 升序排序Map.Entry.comparingByKey() Map<LocalDateTime, List<ExerciseReport>> twelveReportMap = twelveReportDataList.stream() .collect(Collectors.groupingBy(ExerciseReport::getCreateDate)); System.out.println(原创 2022-05-27 15:54:17 · 19793 阅读 · 1 评论 -
Java8计算两个日期相差的天数
1 获取总的相差间隔 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate now = LocalDate.now(); System.out.println("now:"+now); LocalDate startDate = LocalDate.parse("2021-05-26",formatter); S原创 2022-05-26 14:33:38 · 5193 阅读 · 0 评论 -
枚举类中Enum的values方法
枚举可以说是在我们平常开发中用的很多了,它里面有一个values方法算是比较特殊的。今天特意简单的说一下它的使用。public enum TestEnum { A(0,"正常"), B(1,"异常"), C(2,"有点不正常"); private Integer code; private String msg; public Integer getCode() { return code; } public voi原创 2022-05-13 09:59:14 · 2322 阅读 · 3 评论 -
mybatisPlus代码生成器
1 前言mybatisPlus的代码生成器可以帮助我们省去很多需要手动去写的配置如:Entity、Mapper、Mapper XML、Service、Controller模块代码2 实操1)创建一个springBoot项目(这里不再演示)2)引入相关依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:原创 2022-05-08 14:27:28 · 925 阅读 · 0 评论 -
spring事务失效的11种场景
1 访问权限问题:java的访问权限有4种:private、default、protected、public,它们的权限从左到右,以此变大。如果在开发中,将事务方法定义了错误的访问权限,则事务功能会失效。@Servicepublic class EmpService { @Transactional private void add(UserModel userModel){ saveData(userModel); }}如上:add方法的权限被定原创 2022-04-28 16:43:57 · 8612 阅读 · 5 评论 -
Spring中@Component注解和@Bean的区别是什么
1 概述@Component:表名一个类会作为组件类,并告知spring要为这个类创建bean@Bean:告知spring这个方法会返回一个对象,这个对象需要注册为Spring上下文中的bean,通常方法体包含了最终产生bean实例的逻辑2 相同点与不同点相同点:都是为spring注册bean对象不同点:1)作用对象不同:@Component注解作用于类@Bean作用于方法2)使用方法不同:@Component注解直接标注在类声明上即可@Componentpu原创 2022-03-31 22:36:48 · 5495 阅读 · 1 评论 -
@Autowired和@Resource的注入过程/区别
目录1 前言2 demo演示2.1 @Autowired注解2.1.1 ByType>>>ByName2.2.2 ByType>>>autowireCandidate>>>ByName2.2.2 ByType>>>autowireCandidate>>>Qualifier>>>ByName2.2.4ByType>>>autowireCandidate.原创 2022-03-30 15:29:39 · 2171 阅读 · 1 评论 -
时间筛选遇到的问题
记录下今天开发遇到的一个小问题同事用代码生成器生成了对应的实体类;其中表中用到的create_time是date类型。MyBatisPlus代码生成器生成该对应字段的create_time实体类字段类型为:LocalDate。然后根据时间筛选时,发现有点小bug。测试代码如下数据库中数据:实体类: private Integer id; private String name; private LocalDate createTime; priva原创 2022-03-15 18:25:32 · 2473 阅读 · 0 评论 -
BeanUtils深拷贝,浅拷贝
1 深拷贝,浅拷贝浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝。深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。2 BeanUtils.copyProperties注意:避免使用Apache Beanutils进行属性copy。因为Apache Beanutils性能较差,可以使用其他方案如:Spring BeanUtils,Cglib BeanCopier,注意均是浅拷贝。接下来用代码验证上述原创 2022-03-10 15:59:50 · 7729 阅读 · 0 评论 -
使用idea查看Java字节码
1. 使用idea自带的工具直接配置一个External Tools,在idea中找到位置File->Setting->Tools->External Tools点击绿色+号(因为我的已经配置过了,所以不是绿色的)点击之后。配置的三个参数:Program:D:\jdk1.8\bin\javap.exe(找到自己jdk中bin目录下是javap.exe)Arguments: -v $FileClass$Working directory:$OutputP.原创 2022-03-10 10:58:22 · 3043 阅读 · 0 评论 -
String常见面试题
首先我们需要了解一下==和equals的区别1. == :既可以比较基本数据类型,也可以比较引用数据类型。比较基本数据类型时比较的是值,引用数据类型比较的是地址。2. equals:只能比较引用数据类型。如果该引用数据类型没有重写Object类中的方法,equals比较的是地址,重写后的比较的是值。具体可以参考:双等号==和equals的区别_IT盛夏的果实的博客-优快云博客_双等号和equals的区别、...原创 2022-03-09 22:20:18 · 932 阅读 · 0 评论 -
对象和字符串之间的相互转换
相关依赖:<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.74</version></dependency>实体类:Employeepackage com.liubujun.entity;import lombok.Data;/**原创 2022-03-09 16:26:55 · 2344 阅读 · 0 评论