- 博客(47)
- 问答 (1)
- 收藏
- 关注
转载 poi导出报错
报错原因是说poi中缺少POIXMLTypeLoader。对于poi 4.1.0和4.1.2来说,应该使用ooxml-schemas-1.4.jar而不再直接依赖org.apache.poi.*。(poi升级后对很多内部的定西做了修改,所以很多问题都是版本不一致导致的)。1、报错:java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader。平常做项目时,使用POI的频率还是蛮高的,所以在这篇博客中记录一下中间踩过的坑。
2023-01-12 09:20:58
6016
1
原创 ThreadLocal
如果使用强引用,当ThreadLocal 对象的引用(强引用)被回收了,ThreadLocalMap本身依然还持有ThreadLocal的强引用,如果没有手动删除这个key ,则ThreadLocal不会被回收,所以只要当前线程不消亡,ThreadLocalMap引用的那些对象就不会被回收, 可以认为这导致Entry内存泄漏。ThreadLocal,本地线程变量,ThreadLocal中填充的是当前线程的变量,该变量对其他线程来说是封闭且隔离的。强引用:普通的引用,强引用指向的对象不会被回收;
2023-01-05 09:11:23
585
原创 MySQL常用函数
注:后面的YEAR,也可以是quarter 季;second 秒;②datediff(date1,date2),两个日期相减,date1减去date2得到两个日期相差的天数。YEAR() 函数返回的年份值范围为 1000 到 9999,如果日期为零,YEAR() 函数返回 0。date_sub('2019-07-27', interval 30 day) 表示往前推30天。YEAR() 函数需要接受 date 参数,并返回日期的年份。date日期是本周的第几天,这个函数从周日开始为第一天;
2022-09-02 09:43:42
326
原创 MySQL connection-control限制登录次数插件安装
注意:如果数据库是放在Linux服务器上,执行上述SQL;如果是Windows系统,执行下面的SQL。如果想要了解更多关于此插件的知识,请查看MySQL中文文档!
2022-08-25 09:18:55
2350
原创 深度复制和浅度复制
有一个地方需要注意的是:实体类我们用的是Lombok的@Data注解,修改前equals返回的是true,但是通过上面的内容我们可以了解,两个对象的内存地址和引用地址都不相同,可以判断Lombok中重写了equals方法;注意:这里使用的是spring的BeanUtils类,不是Apache的,Apache的这个方法性能较差,具体的分析可查看下面地址的文档。可以看到两个类的地址并不相同,用==进行比较也是false,说明这两个类的内存地址不同,引用地址也不同,是深度复制;回归正题,直接上测试代码。...
2022-08-15 16:45:44
668
转载 mybatis-plus saveBatch批量保存失效
一顿Step Into后进入了这个doUpdate方法,看了一下,if体内的应该就是批量拼接sql的关键,走了几个循环发现我的代码都是从else体里走了,那他为什么不进if呢,看了下判断条件,每次进来。statement都是一个,那问题就出在。上面,我比对了下第二个实体的sql和第一个实体的sql,很快就发现了问题,他们竟然不!定位到了问题,那就也便于解决了,问题原因是生成插入sql时,对null值的处理策略造成的。...
2022-08-15 10:56:49
2872
1
原创 MySQL 一对多表结构,查询一的同时统计多的数量
insp_duty_status_name`varchar(50)CHARACTERSETutf8COLLATEutf8_general_ciDEFAULT''COMMENT'监察业务状态名称',`insp_org_name`varchar(50)CHARACTERSETutf8COLLATEutf8_general_ciDEFAULT''COMMENT'检验单位名称',
2022-07-18 15:51:57
2109
转载 mysql #和$的区别
1、#和$的区别mybatis中使用ParameterType向sql语句传参,在sql语句中引用这些参数的时候,有两种方式#parameterName,$parameterName两者的区别:使用#parameterName方式引用参数的时候,Mybatis会把传入的参数当成是一个字符串,自动添加双引号。$parameterName引用参数时,不做任何处理,直接将值拼接在SQL语句中。#是一个占位符,$是拼接符2、如何防止SQL注入使用#能够防止SQL注入,$不能避免注入攻击#的方式引用参数,mybati
2022-07-04 16:51:44
2335
转载 关于Java中的assert关键字
Java中有一个不太常用的关键字assert,是jdk1.4中加入的,平时开发中见的很少,不过在一些框架的源码里面的测试类里面,出现过不少它的踪迹。assert意为断言的意思,这个关键字可以判断布尔值的结果是否和预期的一样,如果一样就正常执行,否则会抛出AssertionError。assert的作用类似下面的一段代码:等于下面的代码:assert有两种用法:(1)asset expression1;(2)asset expression1 : expression2;第一种用法在刚才的例子里面
2022-06-29 13:41:25
3185
原创 Spring注解
今天在看源码时遇到两个注解:@FunctionalInterface@Nullable源码如下:特此记录一下在讲这个注解之前,我们首先要了解一个概念:函数式接口①什么时函数式接口所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。②关于@FunctionalInterface注解Java 8为函数式接口引入了一个新注解@FunctionalInterface,主要用于编译级错误检查,加上该注解,当你写的接口不符合函数式接口定义的时候,编译器会报错。③@Funct
2022-06-29 11:08:07
368
转载 序列化与反序列化
(1)Java序列化就是指把Java对象转换为字节序列的过程 Java反序列化就是把字节序列恢复为Java对象的过程(2)序列化最重要的作用: 在传递和保存对象时,保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。 反序列化最重要的作用: 根据字节流中保存的对象状态和描述信息,通过反序列化重建对象。 总结:核心作用就是对象的保存和重建(整个过程核心点就是字节流中保存的对象状态和描述信息)在数据传输(网络传输)前,
2022-06-29 09:52:18
56
转载 spring是如何解决循环依赖的
循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图:如何理解“依赖”呢,在Spring中有:结果:项目启动失败,发现了一个cycle:结果:项目启动成功 field属性注入循环依赖(prototype)结果:项目启动失败,发现了一个cycle。现象总结:同样对于循环依赖的场景,构造器注入和prototype类型的属性注入都会初始化Bean失败。因为@Service默认是单例的,所以单例的属性注入是可以成功的
2022-06-15 14:37:58
179
1
转载 Rabbit MQ如何保证消息不丢失
上面的图是官网中关于一条消息发送的整个流程,消息会经历下面几个流程:通过上面的RabbitMQ发送消息的模型我们可以知道在下面几个过程中消息可能会丢失:上面这几种情况都是消息在向不同的模块传递时失败导致消息丢失了,如果上面的情况都能解决就真的消息不会丢失了吗?然而结果并非如此,如果RabbitMQ服务宕机了,如果这些消息没有被持久化,等RabbitMQ服务重启之后,这些没有持久化的消息也将丢失。分析了这么多的情况可能会导致消息丢失,下面将根据各种情况对应的分析来解决。对于网络原因导致消息发送到Exchang
2022-06-14 10:10:06
3673
原创 微服务相关面试题
1、什么是微服务2、微服务之间是如何独立通讯的3、Spring Cloud和Dubbo有哪些区别4、对Spring boot和Spring Cloud的理解5、
2022-06-09 15:31:38
361
转载 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘xin
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xinwu_carnation.pm.moplan_time' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by执行S
2021-08-18 14:14:49
252
原创 mybatis 返回Map<String,List<Entity>> 格式数据
1、创建实体类@Datapublic class DisabilityManageVo1{ private String disabilityManageId; private List<DisabilityManageVo> list;}2、mapperpublic List<DisabilityManageVo1> selectCompletionTime1(List<String> idList);3、XML
2021-08-18 14:08:33
5124
原创 Windows10每次开机都会安装软件
1、打开本地组策略编辑器①快捷键 Windows + R②输入gpedit.msc 点击确定③双击windows Installer,找到禁止用户安装,双击④选择已启用,用户安装行为 选择 隐藏用户安装,点击确定2、我的电脑,右击,管理,①双击服务和应用程序②双击服务③找到Windows Installer,双击④点击启动,点击应用和确定...
2021-07-22 15:23:03
3781
转载 索引在哪些情景下会失效
虽然你这列上建了索引,查询条件也是索引列,但最终执行计划没有走它的索引。下面是引起这种问题的几个关键点。列与列对比某个表中,有两列(id和c_id)都建了单独索引,下面这种查询条件不会走索引select * from test where id=c_id;这种情况会被认为还不如走全表扫描存在NULL值条件我们在设计数据库表时,应该尽力避免NULL值出现,如果非要不可避免的要出现NULL值,也要给一个DEFAULT值,数值型可以给0、-1之类的, 字符串有时候给空串有问题,就给一个
2021-07-01 13:32:16
195
原创 Eureka服务注册与发现
1、是什么主管服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,类似于Dubbo的注册中心,如Zookeeper2、原理讲解
2021-06-02 14:30:05
50
转载 lombok @Accessors用法
@AccessorsAccessor的中文含义是存取器,@Accessors用于配置getter和setter方法的生成结果,下面介绍三个属性fluentfluent的中文含义是流畅的,设置为true,则getter和setter方法的方法名都是基础属性名,且setter方法返回当前对象。如下...
2021-06-01 15:23:03
76
转载 @JsonFormat与@DateTimeFormat注解的使用
背景:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题,其次,另一个问题是,我们在使用WEB服务的时,可能会需要用到,传入时间给后台,比如注册新用户需要填入出生日期等,这个时候前台传递给后台的时间格式同样是不一致的,而我们的与之对应的便有了另一个注解,@DataTimeFo
2021-05-28 11:08:04
258
原创 CSS样式学习汇总
1、overflow定义:当内容溢出元素框时发生的事情默认值 visible 继承性 no(这里不知道是啥意思) 版本 CSS2 可能的值值 描述 visible 默认值。内容不会被修剪,会呈现在元素框之外。 hidden 内容会被修剪,并且其余内容是不可见的。 scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余...
2021-05-27 22:03:02
47
原创 YAML配置文件学习
1、YAML不是一种标记语言,以空白符号和分行来分隔资料2、采用的配置格式不像properties的配置那样以单纯的键值对形式来表示,而是以类似大纲的形式来表示。下面是 一端YAML配置信息environments: dev: url: http://dev.bar.com name: Developer Setup prod: ...
2019-11-14 10:23:27
200
原创 如何设置本地域名
打开C:\Windows\System32\drivers\etc路径下的文件夹,找到host文件并打开如上图所示,添加127.0.0.1 以及后面的对应的域名即可
2019-11-12 10:07:33
1765
转载 RPC框架
1、原理本地过程调用RPC就是要像调用本地的函数一样去调远程函数。在研究RPC前,我们先看看本地调用是怎么调的。假设我们要调用函数Multiply来计算lvalue * rvalue的结果:1 int Multiply(int l, int r) {2 int y = l * r;3 return y;4 }5 6 int lvalue = 10;7 int ...
2019-09-25 13:27:27
116
1
转载 Spring中propagation的7种事务配置
一、在声明式的事务处理中,要配置一个切面,其中就用到了propagation,表示打算对这些方法怎么使用事务,是用还是不用,其中propagation有七种配置,REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED。默认是REQUIRED。二、Spring中七种Propagation类的事务属性详解:RE...
2019-09-17 15:47:36
201
1
转载 sql优化方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询...
2019-09-11 13:22:00
108
转载 ApplicationContextAware使用
问题背景在我们的web程序中,用spring来管理各个实例(bean), 有时在程序中为了使用已被实例化的bean, 通常会用到这样的代码:ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext-common.xml"); AbcService abcService ...
2019-09-10 16:44:26
166
原创 浅谈LinkedBlockingQueue
1、简介在集合框架里,想必大家都用过ArrayList和LinkedList,也经常在面试中问到他们之间的区别。ArrayList和ArrayBlockingQueue一样,内部基于数组来存放元素,而LinkedBlockingQueue则和LinkedList一样,内部基于链表来存放元素。LinkedBlockingQueue实现了BlockingQueue接口,这里放一张类的继承关系图...
2019-09-10 10:30:32
772
原创 mybatis insert插入数据,返回插入数据的ID
向数据库中插入一条数据,获取到这条插入数据的主键ID。在DAO层的XML文件中,在insert语句中增加两个字段useGeneratedKeys="true" keyProperty="id"完成以后,这条数据对应的实体类中主键ID也会随之更新,变为数据库中的主键ID。再通过实体类的get方法即可获得主键ID。...
2019-08-20 14:11:13
125
原创 http请求415,报错Unsupported Media Type
背景:做一个项目的接口对接,用Getman\postman等接口调试工具都是可以的。用程序运行就报415.原因:根据接口所传参数的不同,post请求的Content-type有四种:application/x-www-form-urlencoded(默认)application/xmlapplication/jsonmultipart/form-data我所对接的接口所传的...
2019-07-17 14:21:53
112256
2
原创 json字符串和map之间的相互转换
1、json字符串转map Map<String,Object> map = new HashMap<String, Object>(); Gson gson = new Gson(); map = gson.fromJson(result,map.getClass());Gson所在的包...
2019-07-17 13:53:50
465
转载 如何在idea maven项目中导入本地jar包
1、打开右侧的maven,点击图中的图标2、在command line输入框中输入指令指令格式:install:install-file -Dfile=<Jar包的地址> -DgroupId=<Jar包的GroupId> -DartifactId=<Jar包的引用名称> ...
2019-07-11 10:40:54
4480
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人