自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 freemarker+wkhtmltopdf生成花里胡哨的pdf记录

背景介绍业务需求需要最终生成pdf,这个pdf花里花哨的能达到二三十页之多,目录、页眉页脚、表格数据、图片等都需要根据数据的变化跟着变化,拿到这份需求内心是崩溃的太难了。开始寻找解决方案以前同事也通过api的方式生成过word文档,但那种样式简单,能变化的也只有表格的多少,还有一些基本信息,且不要求页眉页脚字体等。免费版api也就支持几页word或pdf,肯定不能支持如今的需求了,于是上收费版,但是看了眼价格2w多,瞬间想想换个方式吧。(其实主要是目前需求的样式设计很复杂,如果都夹杂到jav.

2022-05-25 17:12:42 880 1

原创 mac下IDEA2021版在插件库中找不到lombok的问题

IDEA2021版在插件库中找不到lombok的问题问题描述:第一次用mac电脑,在配置idea插件的时候发现找不到lombok插件。解决:在网上看了很多都是去lombok官网找插件,通过手动安装放进去,我感觉太麻烦了,所以去lombok官网看看,发现其实在2020.3版本以后,lombok已经集成到idea当中了,只要pom引入依赖即可。...

2021-10-14 19:00:31 1749

原创 MySQL定位及优化慢查询SQL

MySQL定位及优化慢查询SQLSHOW VARIABLES LIKE '%query%'查询慢日志相关信息slow_query_log默认是off关闭的,使用时,需要改为on 打开slow_query_log_file记录的是慢日志的记录文件long_query_time默认是10S,每次执行的sql达到这个时长,就会被记录SET GLOBAL slow_query_log = ON打开慢查询SET GLOBAL long_query_time = 1将默认时间改为1SSHOW STA

2021-10-06 00:45:26 226

原创 MySQL数据库有200w数据redis有20w数据,如何保证都是热点数据?

MySQL数据库有200w数据redis有20w数据,如何保证都是热点数据?首先计算出20w数据所需的内存空间,设置最大内存,然后选择合适的内存淘汰策略。同样是在redis.conf配置文件中,可以对最大内存进行设置,单位为bytes:当使用的内存到达指定的限制时,Redis会根据内存淘汰策略删除键,以释放空间。内存淘汰策略在Redis的redis.conf配置文件中,列出了8种策略:volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。volatile-ttl:从

2021-10-05 23:46:59 459

原创 SpringBoot中CommandLineRunner和ApplicationRunner接口

SpringBoot中提供了两个接口可以在Spring Boot启动的过程中进行一些额外的操作,比如读取配置文件、数据库操作等自定义的内容。而这些功能的实现也非常简单,直接实现这两个接口并实现其run方法,然后将该类实例化即可。以下代码便实现了CommandLineRunner接口,并在run方法内打印了对应的日志,同时,通过@Component将其注册为Spring的一个bean。 @Component @Slf4j public class Runner implements Applica.

2021-10-05 00:18:31 261

原创 Springboot项目启动原理详细解析

springboot启动类中内容 @SpringBootApplication public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }@SpringBootApplication相当于 @SpringBootConfiguration + @Com..

2021-10-05 00:00:36 124

原创 乐观锁:CAS算法

乐观锁:CAS算法CAS算法理解对CAS的理解,CAS是一种无锁算法,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。...

2021-10-04 23:48:44 77

原创 SpringBoot设置事务管理@Transactional以及事务失效的情况

SpringBoot设置事务管理@Transactional以及事务失效的情况事务介绍Atomicity(原子性):事务中的所有操作要么全做要么全不做Consistency(一致性):事务执行的结果使得数据库从一个一致性状态转移到另一个一致性状态Isolation(隔离性):一个事务的执行不受其他事务的干扰Durability(永久性):一个事务一旦提交,对数据库的影响是永久性的什么是脏读?不可重复读?幻读?脏读(Dirty Read):一个事务读取到另外一个事务未提交的数据。举例:

2021-10-04 23:46:15 499

原创 排序算法解析以及面试遇到的算法

排序算法解析主要是记录一些常用算法的时间复杂度和一些常用算法冒泡排序 public int[] bubbling(int[] ints) { for (int i = 0; i < ints.length; i++) { for (int j = 0; j < ints.length - i - 1; j++) { if (ints[j] > ints[j + 1]) { int num = i

2021-10-04 23:21:25 93

原创 java读取外部properties文件

java读取外部properties文件第一步:实现EnvironmentPostProcessor类public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor { @Override public void postProcessEnvironment(ConfigurableEnvironment configurableEnvironment, SpringApplication applicat

2021-08-18 13:17:28 344

原创 如何使用tomcat配置数据源和多数据源

使用tomcat jndi配置数据源和多数据源先在tomact路径下找到conf文件夹下中的server.xml,context.xml两个xml文件。第一步:在tomcat的server.xml中Service下配置<Context path="jdbc/1" reloadable="true"></Context><Context path="jdbc/2" reloadable="true"></Context>注意path的值需要和

2021-08-18 00:58:05 6624

原创 java.net.NoRouteToHostException: Cannot assign requested address.

java.net.NoRouteToHostException: Cannot assign requested address.是由于linux分配的客户端连接端口用尽, 无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放, 而是处于TIME_WAIT状态, 默认等待60s后才释放。查看linux支持的客户端连接端口范围, 也就是28232个端口:cat /proc/sys/net/ipv4/ip_local_port_range32768 - 61000解决方法:

2021-08-17 23:54:14 408

原创 AES加密遇到的问题 aes加密后变成空格 空格是“+“号

AES加密遇到的问题 aes加密后变成空格项目中使用aes加密传递数据的时候,发现数据根据aes密钥无法解密,于是开始寻找解决方案。在分析加密数据的时候发现数据有些地方会产生空格,于是怀疑可能是空格的问题。最后发现后台只要遇到“+”的字符串就会变为空格。解决方案:将空格替换成"+"号原因分析:get请求会过滤特殊字符导致数据差异,post请求就不会有这种情况。参考链接: AES加密遇到的问题...

2021-08-17 23:07:21 5445 2

原创 一个Tomcat下部署多个项目异常UnableToRegisterMBeanException

一个Tomcat下部署多个项目异常UnableToRegisterMBeanException异常情况:在测试服务器上Tomcat下部署两个Spring boot项目,总是一个能启动成功,另一个启动不成功。这两个war包单独部署均能正常启动。查看日志:启动时报出 org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean 的异常。解决方法:在两个项目的application.prop

2021-08-17 23:00:18 332

原创 MultipartFile转File

MultipartFile转Fileimport org.springframework.web.multipart.MultipartFile; import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;public class MultipartFileToFile { /** * MultipartFile 转 F

2021-08-17 22:54:28 86

原创 mysql是否有必要使用外键约束?

mysql是否有必要使用外键约束?如果使用外键后,mysql需要额外的开销来检测数据的完整性和一致性检测,容易造成死锁,mysql处理性能势必会下降。如果对数据的要求不是那么严格, 建议不要使用外键约束,如果一定要保证完整性,可通过其他方法实现,如实体完整性通过逐渐或唯一索引来实现,域的完整性通过限制列的数据类型、格式或值的范围来实现,参照完整性可通过编写触发器来实现或者通过代码的逻辑判断来实现。...

2021-08-17 22:50:27 687

原创 java init是什么

java init是什么init()函数是内核代码的一部分,在内核态运行,是独立的可执行代码的一部分。public void init()由浏览器或 applet viewer 调用,通知此 applet 它已经加载到系统中。在多线程运用中,在启动一个线程之前要对一个对象进行一些初始化操作的话,那么你可以把代码写在init方法来里!applet是一种特殊的JAVA程序,允许带有Java技术的浏览器能够从Internet下载它并运行。applet是典型的bai嵌入到网页里面并在浏览器上下文中运行

2021-08-17 22:49:10 8340

原创 为什么在Java中原始数据类型不能为“null“?

为什么在Java中原始数据类型不能为"null"?基本类型就是数据。另一方面,我们所谓的对象只是指向数据存储位置的指针。例如:Integer object = new Integer(3);int number = 3;在这种情况下,object它只是指向值恰好为3的Integer对象的指针。也就是说,在存储变量对象的内存位置,您所拥有的只是对数据实际位置的引用。number另一方面,存储的存储位置直接包含值3。因此,您可以将设置object为null,但这仅表示该对象的数据为null(即未分配)。您

2021-08-17 22:45:56 986

原创 mysql的执行顺序

mysql的执行顺序别名应该是先定义后使用才对,所以首先要了解sql的执行顺序sql执行顺序如下:(1)from(2)join(3)on(4)where(5)group by(开始可以使用select的别名,后面的也行)(6)avg,sum…(7)having(8)select(9)distinct(10)order by(11)limit这个最好记下来,要注意的是from是最先执行的,而select在having之后才执行。...

2021-08-17 00:14:32 84

原创 Nginx 出现 413 Request Entity Too Large的解决方法

Nginx 出现 413 Request Entity Too Large的解决方法系统在测试阶段上传视频的时候报错了,查看日志报413 Request Entity Too Large,查找原因发现是nginx不允许上传过大的文件,所以把nginx的上传大小配置调高就好。打开nginx主配置文件nginx.conf, 找到http{}段并修改以下内容:http { include mime.types; default_type application/octet-stream;

2021-08-17 00:09:03 373

原创 mysql关于exists和in分析

mysql关于exists和in分析select * from user a where name='liuwenhe' and exists (select stuid from department b where depname='yunwei' and a.stuid =b.stuid );select * from user where name='liuwenhe' and stuid in(select stuid from department w

2021-08-16 23:46:57 50

原创 RestTemplate用法

RestTemplate用法RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自 InterceptingHttpAccessor 并且实现了 RestOperations 接口,其中 RestOperations 接口定义了基本的 RESTful 操作,这些操作在

2021-08-16 23:43:52 124

原创 SpringBoot解决跨域的方法

SpringBoot解决跨域的方法什么是跨域?Url的一般格式:协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址例如:https://www.dustyblog.cn:8080/say/Hello 是由https + www + dustyblog.cn + 8080 + say/Hello组成。只要协议,域名,端口号这三项组成部分中有一项不同,就可以认为是不同的域,不同的域之间互相访问资源,就被称之为跨域。域名:  主域名不同  http://www.baidu.c

2021-08-16 21:11:05 88

原创 SpringBoot静态资源映射的实现

SpringBoot静态资源映射的实现(实现WebMvcConfigurer方式)新建WebMvcConfigurer类实现WebMvcConfigurer,重写addResourceHandlers方法@Configurationpublic class MyWebAppConfigurer implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry

2021-08-16 19:15:38 189

原创 关于国际化时报org.springframework.context.NoSuchMessageException错

关于国际化时报org.springframework.context.NoSuchMessageException错,具体到No message found under code '键名' for locale 'zh_CN'.的解决方案 使用IntelliJ IDEA开发工具解决方案:总结原因,解决方案:在使用messageSource.getMessage方法时,参数1的键名跟属性文件中键名不一致,比如Controller中是name ,而配置文件中却是names因为使用springMv

2021-08-16 15:49:23 1004

原创 清除Redis缓存

清除Redis缓存Windows下清除Redis缓存进入Redis根目录运行redis-cli.exe执行:dbsize执行:flushall执行:exitLinux系统清除Redis缓存进入目录redis下src目录。#cd redis-2.8.17/src执行redis-cli文件#./redis-cli执行命令:flushall,出现OK代表执行成功#flushall退出命令exit#exit参考链接: 清除Redis缓存...

2021-08-16 15:43:02 86

原创 Tomcat虚拟路径访问本地图片失败的问题

Tomcat虚拟路径访问本地图片失败的问题开发过程中,把图片放在本地一个磁盘的路径下。可以使用tomcat虚拟路径访问本地图片。这样就不用把图片放在整个项目的webapp目录下了。找到tomcat的server.xml文件2.在该文件Host节点下加入:< Context path="/upload" docBase=“E://images//upload” reloadable=“true” />其中path是webapp下的文件夹,docBase是真实图片路径3.可以直接

2021-08-16 15:38:54 191

原创 mysql在windows下是不区分大小写的,而linux下是区分大小写的。

mysql在windows下是不区分大小写的,而linux下是区分大小写的。项目在本地测试阶段没有问题,当使用sit环境测试时系统始终运行不起来,查看日志报错找不到表,当时很奇怪,这些表在数据库中是存在的,而且本地测试也没有问题,后来找到了答案,是因为mysql在windows下是不区分大小写的,而linux下是区分大小写的。解决方案修改linux的mysql的lower_case_table_names参数,为0时区分大小写,为1时不区分大小写。在linux的mysql下输入:

2021-08-16 12:55:56 776

原创 若依框架整合PageHelper,本地内置tomcat测试正常,部署到服务器独立tomcat出现“多个分页插件”错误。

若依框架整合PageHelper,本地内置tomcat测试正常,部署到服务器独立tomcat出现“多个分页插件”错误。我当初遇到这个问题也很头疼,不知道如何下手,按说程序都是一切正常的不会出现问题的。问题的解决这个问题主要是因为项目中存在多个Application启动类,也导致了PageHelper多次加载,导致项目无法分页而报“多个分页插件”错误。可以尝试全局搜索@SpringBootApplication这个注解,将多余的启动类删去或注释掉,便可解决错误。@SpringBootAppl

2021-08-16 12:33:52 383

原创 @NotBlank等类似注解的使用方法

@NotBlank等类似注解的使用方法@NotNull:不能为null,但可以为empty@NotEmpty:不能为null,而且长度必须大于0@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0案例1.String name = null;@NotNull:false@NotEmpty:false@NotBlank:false2.String name = "";@NotNull:true@NotEmpty:false@NotB

2021-08-16 00:15:53 736

原创 使用BeanUtils.copyProperties进行对象之间的属性赋值

使用BeanUtils.copyProperties进行对象之间的属性赋值使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get、set方法一个一个属性的赋值/** * 对象属性拷贝 <br> * 将源对象的属性拷贝到目标对象 * * @param source 源对象 * @param target 目标对象 */ public

2021-08-15 23:37:16 93

转载 Java接口中的default方法

Java接口中的default方法default接口中可以添加使用default或者static修饰的方法,在这里我们只讨论default方法,default修饰方法只能在接口中使用,在接口中被default标记的方法为普通方法,可以直接写方法体。实现类会继承接口中的default方法如果接口A中有default方法:// 如果接口A中有default方法:public interface A { public default void a(){ System.out.pr

2021-08-15 22:46:21 10656 3

原创 什么是token及怎样生成token

什么是token及怎样生成token什么是tokenToken是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。基于 Token 的身份验证1.使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。流程是这样的:2.客户端使用用户名跟密码请求登录3.服务端收到请求,去验证用户名与密码4.验证成功后,服务端会签发一个 Tok

2021-08-15 18:31:27 3083

原创 Mybatis的mapper.xml文件中的常用标签

Mybatis常用标签#{} 和 ${} 的区别:相同点: #{}:可以获取map中的值或者pojo对象属性的值。 ${}:可以获取map中的值或者pojo对象属性的值。不同点:#{}:是以预编译的形式,将参数设置到sql语句中,防止sql注入。${}:取出的值直接拼装在sql语句中,会有安全问题。因此大多情况下,我们取参数的值都应该去使用#{},除了一些特定场景,需要在预编译前拼接sql语句的情况,比如按照年份分表查询。同时#{}它支持更丰富的用法:规定参数的一些规则:jav

2021-08-15 18:08:14 1990

原创 Java中关于Date,LocalDate,LocalDateTime总结

Date,LocalDate,LocalDateTime总结 // LocalDate 主要关心的是日期 不关注具体的时间 // LocalTime 只包括时间 // LocalDateTime 包括日期和时间 LocalDate today = LocalDate.now(); // 该日期的年份 int year = today.getYear(); // 该日期的月份 in

2021-08-15 00:44:48 442

原创 Java开发中什么情况才使用base64传图片?

什么情况才使用base64传图片?如果仅从加载速度上来说,小图片使用base64毫无疑问会更快,因为可以减少一次http请求,但是如果图片较大,转换后的解析需要更长的时间,有可能会造成页面阻塞,效率上应该不如直接放图片,而且使用base64无法缓存﴾除非直接缓存整个文件﴿。总结:分场景使用,小图标/icon使用base64效率一定更高,大图片使用默认方式加载(资源映射),可以充分利用缓存,渲染解析效率高。...

2021-08-14 22:54:34 365

原创 Java Map集合的遍历方式及一些用法

Map集合的遍历方式及一些用法 Map<String, String> map1 = new HashMap<>(10); Map<String, String> map2 = new HashMap<>(10); map1.put("甲", "张三"); map1.put("乙", "李四"); map1.put("丙", "王五"); map2.put("一", "一一

2021-08-14 17:34:20 104

转载 MySQL 如何查看及修改数据库引擎

MySQL 如何查看及修改数据库引擎查看mysql支持的引擎有哪些show engines查看当前默认的引擎show variables like 'default_storage_engine'修改指定表的引擎 alter table xf_card engine=innodb;修改mysql默认的数据库引擎打开配置文件my.ini,将“default-storage-engine=MYISAM”改为你想设定的,然后重启即可参考链接...

2021-08-01 23:30:14 89

原创 java ==,equals(),equalsIgnoreCase()的区别

“==”,equals(),equalsIgnoreCase()的区别== :是比较八大基本数据类型的字面值,和引用类型的内存地址。equals():只能比较引用数据类型,且需要重写equals()方法。在没有重写equals()方法时,比较的是内存地址,而重写equals()方法后比较引用类型的值是否相等。equalsIgnoreCase():equalsIgnoreCase()只能通过String对象进行调用,主要作用是比较字符串在不区分大小写的情况下是否相等。当使用equals()去比较的时

2021-07-29 23:27:11 4148

原创 Spring @Qualifier注解使用

Spring @Qualifier注解使用@Autowired是根据类型进行自动装配的。如果当Spring上下文中存在多个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。补充:当一个service有多个impl实现类的时候,使用@Autowired注解来注入service的时候

2021-07-19 23:10:41 154

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除