![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 52
Rd_zhaox
️
Vue
CSS3
展开
-
Weblogic上Easyexcel报com.alibaba.excel.exception.ExcelGenerateException: Can not close IO解决方案
Easyexcel在Weblogic上报com.alibaba.excel.exception.ExcelGenerateException: Can not close IO原创 2022-08-31 14:26:13 · 5737 阅读 · 0 评论 -
Spring Security 5.7.1安全过滤器链配置方法
@RequiredArgsConstructor(onConstructor_ = @Autowired)@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)public class WebSecurityConfiguration { @NonNull private AuthenticationSuccessHandler authenticationSuccessHandler; @NonNull p.原创 2022-05-31 10:54:06 · 4041 阅读 · 0 评论 -
快速修复Log4j2远程代码执行漏洞
官方给出的解决方式是升级到最新版(https://github.com/apache/logging-log4j2),但是最新版没有发到Maven仓库。最快接觉的方法是使用slf4j+logback替换注意:如果使用的是默认的日志配置也是存在Log4j-api这个依赖的移除Log4j/Log4j2的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp原创 2021-12-10 14:19:14 · 253 阅读 · 2 评论 -
Mysql查询某个时间段之间,每天中最新的一条记录
有一张表,该表存储着会员积分的变动情况,每次消费或充值后当时的积分情况。次数我们有一个需求,需要统计某段时间内,每天结束前会员的积分曲线表。 分组查询 我们的需求是统计每天最后一次的变动记录,而不仅仅是变动时间,所以这里仅仅使MAX和GROUP BY是没有办法达到我们的需求的。 这个时候,我们就可以使用GROUP_CONCAT和GROUP BY。 GROUP_CONCAT 作用:将GROUP产生的同一个分组中的值连接起来,返回一个字符串。 语法:GROUP_CONCAT( [..原创 2021-10-15 10:19:10 · 1815 阅读 · 0 评论 -
使用 Jasypt 进行 Spring Boot 配置
为什么要使用Jasypt?当我们需要在配置文件中存储敏感信息时——这意味着我们实际上是在使这些信息容易受到攻击;这包括任何类型的敏感信息,例如凭据,但肯定不止这些。通过使用 Jasypt,我们可以为属性文件属性提供加密,我们的应用程序将完成解密并检索原始值的工作。使用jasypt -spring-boot-starter我们需要向我们的项目添加一个依赖项:设置加密的盐设置加密盐的方式有几种,常用的有:application.properties中设置jasypt.enc.原创 2021-05-29 16:18:45 · 296 阅读 · 0 评论 -
如果面试官再问你Spring中的循环依赖怎么解决,就这样告诉他
什么是循环依赖?当一个bean A 依赖另外一个bean B,并且bean B也依赖于bean A时,就会发生这种情况:bean A -> bean B -> bean A当然,中间可能会有其他隐含的bean:bean A -> bean B -> bean C -> bean E -> bean ASpring中循环依赖会发生什么?当Spring上下文加载所有bean时,它会尝试按照他们完成工作所需要的顺序来创建bean。例如,如果我们没有循环依原创 2021-05-29 14:59:48 · 310 阅读 · 0 评论 -
Spring中的IoC和DI简介
什么是IoC?控制反转是软件工程中的一项原则,它将对象或者程序的部分控制权转移到容器或框架上。我们最常在面向对象编程的上下文中使用它。与我们自定义代码调用库的传统编程相比,IoC使框架能够控制程序流并调用我们的自定义代码。为了实现这一点,框架使用了带有附加行为的抽象。如果我们想添加我们自己的行为,我们需要扩展框架的类或插入我们自己的类。IoC的优点是:将任务的执行与其实现分离 更容易在不同的实现之间切换 程序的模块化程度更高 通过隔离组件或者模拟其依赖项,并允许组件通过协议进行通信,从原创 2021-05-29 09:50:51 · 497 阅读 · 0 评论 -
Springboot 使用mybatis-spring-boot-starter整合mybatis
Maven依赖包如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven原创 2021-05-25 10:02:34 · 1069 阅读 · 1 评论 -
REST API中的HTTP PUT与POST
在典型的REST体系结构中,客户端以HTTP方法的形式向服务器发送请求,以创建、检索、修改、删除资源。虽然PUT和POST都可以用来创建资源,但是它们在预期的应用程序方面却有着很大的不同。根据RFC 2616标准,应该使用POST方法来请求服务器接受包含的实体作为由Request-URI标识的现有资源的从属。这意味这POST方法将在资源集合下创建一个子资源。另一方面,应该使用PUT方法来请求服务器在提供的Request-URL下存储封闭的实体。如果Request-URI指向服务器上的现有资源,这所提原创 2021-05-24 09:25:41 · 599 阅读 · 0 评论 -
Centos把springboot的jar做成服务快速重启
cd /etc/systemd/system# 创建一个demo.servicetouch demo.service# 编辑vim demo.service修改jar路径,复制到demo.service中[Unit]# 描述 需修改Description=demo.serviceAfter=syslog.target network.target[Service]Type=simple# jar路径 需修改ExecStart=/usr/bin/java -jar /us.原创 2021-05-19 13:53:51 · 167 阅读 · 0 评论 -
史上最全、最简单的SpringBoot整合Logback日志
开始之前,说一下,不要再用什么Logback-spring.xml去配置Logback了!!!直接在application.properties里配置它不香?它不简单?logging.level.root=debug# 配置日志文件位置# 指定日志文件的目录, 默认文件名字spring.log# logging.file.path=/log# 指定日志文件的位置,配置了logging.file.name,则logging.file.path不生效logging.file.name=l原创 2021-05-17 14:23:15 · 806 阅读 · 0 评论 -
数据库与Redis缓存一致性
如今,Redis已成为最浏览的缓存解决方案之一,尽管关系型数据库带了许多很棒的功能,如ACID。但是,为了使用这些功能,数据库的性能在高负载的情况下也会有所下降。为了解决这个问题,许多公司和网站在应用层和数据访问层之间都会增加一个缓存层。通常使用内存中缓存来实现这个缓存层。正如我们所知,传统的关系型数据库的性能瓶颈通常是存储I/O。由于科技的发展和进步,主存储器的价格一直在下降,增加内存已经不是什么难事了,因此现在可以在内存中缓存一部分热点数据来提供性能。背景虽然我们可以把热点数据存储在内存中,原创 2021-04-29 13:36:15 · 174 阅读 · 0 评论 -
一文帮你整明白ContextClassLoade数据库驱动加载原理
ClassLoader的坑爹特性 - 可见性开篇,我们先讲一下ClassLoader的坑爹特性-可见性,即:父级ClassLoader加载的类对子级ClassLoader可见,反之亦然。接下来我们就对这一坑爹特性做一个验证,我们新建Java项目,项目中只有一个Test类,Test类有两个方法call1和call2:call1有两个参数 - 完整的className和一个ClassLoader。 call2有一个参数 - 完整的className。我们使用这两个方法进行验证。把该Java项目达原创 2021-04-28 15:23:00 · 270 阅读 · 0 评论 -
Java中的ClasLoader之自定义ClassLoader
自定义ClassLoader在大多数情况下,如果文件已经存在于文件系统中,内置的ClassLoader就足够用了。但是,在需要从本地硬盘驱动器或者网络中的加载类的情况下,我们就可能需要自定义一个ClassLoader。自定义ClassLoader不仅可以在运行时加载类,还有一些其他用例:修改现有的字节码 动态创造符合用户需求的类。例如:在JDBC中,通过动态的加载类完成不同驱动之前的切换 在为具有相同名称和程序包的类加载不同的字节码时,实现类版本控制机制。可以通过URLClassLoad原创 2021-04-26 11:19:19 · 799 阅读 · 0 评论 -
Java中的ClassLoader
ClassLoader简介ClassLoader负责在运行时将Java类动态加载到JVM中,而且ClassLoader是JRE的一部分。因此,由于ClassLoader的存在,JVM无需了解底层文件和文件系统即可运行Java程序。而且,ClassLoader并不会一次把所有Java类加载到内存中,而是在应用程序需要的时候加载。这就是ClassLoader发挥作用的地方,它们负责将类加载到内存中。内置的CLassLoader的类型下面是一个简单的例子,它展示了不同的类被哪种ClassLoade原创 2021-04-26 08:33:35 · 493 阅读 · 1 评论 -
你还不知道Java异或运算符的妙用?
异或(XOR)运算符当两个boolean类型的变量,locked ^ deleted,如果locked与deleted是不同的,返回true。如果两个操作数是相同的,则返回false。因此,当我们需要同时检查两个不成立的条件时,可以使用异或运算符号。假设我们有两个条件,A和B,下面显示了A ^ B 的可能值:A ^ B 操作等于 (A && !B) || (!A && B) 。在Java中使用接下来让我看一下Java中的异或操作,当然我们可以.原创 2021-04-21 17:13:26 · 460 阅读 · 3 评论 -
到底什么是POJO?
目录概述Plain Old Java Object什么是POJO?对POJO进行反射JavaBeans什么是JavaBean?EmployeePojo转换为JavaBean对JavaBean进行反射是否使用JavaBeans结论概述POJO即“Plain Old Java Object”,下面我们将POJO与JavaBean进行比较,以及如何将POJO转换为JavaBeans。Plain Old Java Object什么是POJO?一般...原创 2021-04-20 17:30:08 · 8996 阅读 · 2 评论 -
Java中如何对一个对象进行深表复制
引言在java中,当我们对一个对象进行复制时,有两种可以考虑的方式-浅复制和深复制当我们仅需要复制字段值时,依赖于原始对象进行浅复制是一种方式。在深复制中,确保树中所有的对象都被深度复制,因此该副本不依赖任何以前可能更改的现有对象。接下来,我们将比较这两种方式,并实现深复制的四种方法。Maven依赖我们将使用这三个依赖包-Gson、Jackson、Apache Commons Lang来进行不同深度复制的测试。添加这三个依赖的Maven坐标到pom.xml文件中。<dep原创 2021-04-06 14:41:10 · 268 阅读 · 0 评论 -
不是设计模式的“设计模式”-简单工厂
简单工厂其实不是一个设计模式,它是一种编程习惯。由于经常被使用,它被誉为“Head First Pattern荣誉讲”。有些开发人月经常把这个编程习惯当作“工厂模式”。原创 2021-03-24 11:12:49 · 197 阅读 · 0 评论 -
Springboot ResponseEntity 下载文件乱码
多半是因为你使用了@RestController,而不是@Controller!!!原创 2021-03-17 11:24:20 · 1098 阅读 · 1 评论 -
JAVA设计模式-观察者模式
开始了解观察者模式之前,我们先了解一下什么是设计模式、为什么我们要使用设计模式什么是设计模式? 一种针对特定问题的解决方案,这种解决方案被抽象化、模板化后就是设计模式。为什么要使用设计模式?当我们使用第三方的库、框架的是很好,利用他们的API或者组件,放到合适的地方编译成我们自己的程序。但是库与框架并无法帮助我们将应用组织成易了解、易维护、具有弹性的架构,这个时候就需要设计模式。设计是一门艺术,通常有许多可以取舍的地方,如果我们利用这些经过深思熟虑,且经过时间考研的设计模式就可以稍微领先别人了。原创 2021-03-08 14:56:15 · 97 阅读 · 0 评论 -
腾讯云实时音视频录制回调接口响应
事件消息通知协议网络协议请求:HTTP POST 请求,包体内容为 JSON,每一种消息的具体包体内容参见后文。 应答:HTTP STATUS CODE = 200,服务端忽略应答包具体内容,为了协议友好,建议客户应答内容携带 JSON:{"code":0}通知可靠性事件通知服务具备重试能力,重试间隔为60秒,总计重试3次。为了避免重试对您的服务器以及网络带宽造成冲击,请保持正常回包。触发重试条件如下:长时间(20 秒)未回包应答。 应答 HTTP STATUS 不为200。@P.原创 2021-01-19 15:14:31 · 1745 阅读 · 0 评论 -
win10配置Maven环境变量
下载maven,在D:\Program Files\目录新建一个Maven目录,解压下载后的文件。 在D:\Program Files\Maven下新建一个repo文件夹,修改D:\Program Files\Maven\apache-maven-3.6.3\conf\settings.xml 55行。新增<localRepository>D:\Program Files\Maven\repo</localRepository>配置本地仓库。 新增环境变量M2_HOME路径为D:原创 2021-01-12 12:54:28 · 330 阅读 · 0 评论 -
java中LinkedTransferQueue和SynchronousQueue区别
LinkedTransferQueue 是一种 TransferQueue,SynchronousQueue 是一种 BlockingQueue。TransferQueue和BlockingQueueBlockingQueue 是一种阻塞队列,队列是有大小的。队列满的时候,生产者会阻塞。队列空的时候,消费者会阻塞。TransferQueue在BlockingQueue提供的方法基础上,增加了 transfer 方法,就是只有生产者的消息被消费之后,才返回,否则继续阻塞。Synchronous原创 2021-01-04 11:34:29 · 408 阅读 · 0 评论 -
SecurityContextHolder.getContext().getAuthentication().getPrincipal()不能转换成当前用户对象
今天项目中使用了spring-boot-devtools,导致判断当前用户类型的时候始终为fasle,代码如下:Authentication authentication = getAuthentication(); if (authentication == null) { return null; } Object principal = authentication.getPrincipal(); if原创 2020-11-18 10:29:23 · 4169 阅读 · 4 评论 -
Lombok通过@Data注解生成get/set方法时,不生成某个字段的get/set方法
当通过Lombok的@Data注解生成get/set方法时,如果不想生成username的get/set方法时,可以在username字段上加上注解@Getter(AccessLevel.NONE) / @Setter(AccessLevel.NONE)eg:package toolkit.net.cn.entity;import lombok.AccessLevel;import lombok.Data;import lombok.Getter;import org.spring原创 2020-10-13 14:17:56 · 9423 阅读 · 0 评论 -
解决Cloud ToolKit终端乱码方法
解决方法只需要设置一下终端编码,如下图原创 2020-07-21 09:45:46 · 270 阅读 · 0 评论 -
java 打包下载
/** * 打包下载 * @param response * @param files */ private void download(HttpServletResponse response, List<Record> files) { int size = null == files || files.isEmpty() ? 0 : files.size(); if (size > 0) { SimpleDateFormat sdf .原创 2020-06-22 12:51:28 · 99 阅读 · 1 评论 -
NIO 四大Channel类-FileChannel
Channel(通道)的主要类型 Channel重要的实现有四种:FileChannel、SocketChannel、ServerSocketChannel、DatagramChannel。 说明: 1. FileChannel文件通道,用于文件数据的读写。 2. SocketChannel套接字通道,用于Socket套接字TCP...原创 2020-04-19 17:52:06 · 341 阅读 · 0 评论 -
自己实现一个顺序的线性集合
package cn.zion;public class SeqList<T> extends Object { // 对象数组,顺序表 protected Object[] element; // 数组长度 protected int n; // 有参构造方法 public SeqList(int length) { ...原创 2020-02-19 15:28:52 · 249 阅读 · 0 评论 -
Java NIO摘要
NIO 一种基于通道与缓冲区的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆里面的DirectByteBuffer对象作为这块内容的引用进行操作。能够显著提高性能,因为避免了在Java堆和Native堆中来回复制数据。...原创 2020-01-31 18:25:06 · 103 阅读 · 0 评论 -
tomcat 请求url中带有特殊符号{} | 返回400的问题
在tomcat目录/conf/catalina.properties下找到并修改tomcat.util.http.parser.HttpParser.requestTargetAllow=|,{,}原创 2017-10-30 22:20:02 · 5039 阅读 · 2 评论 -
Java 字符串List转int List
String menuIds = "1,2,3,4,5,6";List inputMenuIds = Arrays.asList(menuIds.split(","));List menuIdList = new ArrayList();CollectionUtils.collect(inputMenuIds, new Transformer() { @Overrid原创 2017-08-29 16:41:03 · 13019 阅读 · 0 评论