自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 EasyExcel中对图片大小及位置进行调整(自定义拦截器)

首先我们先丢入一张图片,这里我就直接通过URL的形式进行编写。补充:调整位置只需要对anchor进行设置即可,例如下面代码。下面进入正题(以上操作很正常插入数据的操作是相同的)需要将图片插入的操作(把图片赛进List中)在ExcelWriter中对其进行写入操作。这样拦截器就会在当中成功的调整图片的大小。如何对我们导出的图片设置大小和位置。即可对图片进行自由调整。定义一个存储图片的类。

2024-04-11 17:33:15 412

原创 EasyExcel的简单读取操作

对应自己定义类去接收数据的字段,得到的数据就可以对其进行处理。记得把对应需要的T替换出来,和我们上传的表格是一样的。如何使用EasyExcel进行简单读取的操作。在此基础上我们通过定义监听器对文件流进行处理。在Controller中对其进行使用。

2024-03-14 14:16:27 581

原创 Mybatis-plus 代码生成器(改成自己配置既用)

【代码】Mybatis-plus 代码生成器(改成自己配置既用)

2024-03-14 11:51:50 510

原创 EasyExcel 500 Internal Server Error

在使用EasyExcel的时候出现这个问题。我们根据官网配置的HttpServletResponse中设置的header里。当我们遇到“500 Internal Server Error”这个的消息时,意味着服务器遇到了意外情况,无法完成请求。如果出现 500 Internal Server Error问题,删除fileName,不传名称过去就可以了。

2024-01-30 16:43:39 722

原创 EasyExcel中自定义拦截器的运用

并且这里我们通过sheet中的 getLastRowNum()获取最后一行,最终通过CellRangeAddress来进行单元格合并,从下面源码我们可以了解到合并的规则是什么(通过int firstRow, int lastRow, int firstCol, int lastCol)我们可以在重写的方法中得到形参中的Cel,那我们可以通过调用cell.getStringCellValue()得到当前单元格的内容,判断当前单元格的内容是否是目标单元格,例如下面代码。对表头设置(自己对应表格设置对应字段)

2024-01-26 11:39:38 990

原创 MySQL中设置自增主键id从1开始

可能遇到过这种问题,当你只想新增一条数据时,发现使用Insert语句后,发现id并不是从1开始的,握草,怎么回事?其实很简单,通过执行一下SQL,对应你的表就可以解决。

2024-01-08 16:44:09 1117 2

原创 Mybatis分页问题

MyBatis 是一个流行的 Java 持久层框架,它允许开发者直接使用 SQL 语句,并通过配置文件或注解来管理 SQL 映射。通过这种方式,你可以告诉数据库从正确的位置开始返回数据,并且只返回当前页面上应该显示的那些记录。子句通常接受两个参数:第一个参数指定了结果的起始位置(即偏移量),而第二个参数指定了要返回的记录数(即页面大小)。由于数据库的偏移量是从 0 开始的(即第一条记录的偏移量是 0),而页码是从 1 开始的,所以需要进行转换。(偏移量)是一个重要的步骤。是起始位置(从0开始),

2024-01-02 09:25:53 428

原创 Mybatis中查询今天、本周、本月、半年、一年等数据

在日常开发中,可能会存在数据筛选上需要通过时间上的筛选,我们通过between and就能解决了,不过如果以本周、本月这种还得去计算时间段,没有必要浪费时间,那我们通过SQL的函数就可以解决问题。

2023-12-27 11:04:11 1122

原创 Java 字符串去掉多了一层“”的具体操作步骤

接下来,我们需要使用Java代码去掉多余的双引号。可以使用replaceAll()方法结合正则表达式来实现。正则表达式"\"(.*)\""表示匹配以双引号开头和结尾的字符串,其中(.*)表示匹配任意字符任意次数。首先,我们需要定义一个字符串变量来存储需要去掉多余双引号的字符串。最后,我们需要输出去掉多余双引号后的字符串。

2023-10-31 17:50:11 397

原创 Mysql 报错 You can‘t specify target table ‘表名‘ for update in FROM clause

翻译为:不能先select出同一表中的某些值,再update这个表(在同一语句中)多半是update在where条件后又Select了一次,所以报错。后面子查询再查询一次即可。

2023-10-12 16:11:31 2005

原创 MySQL中Having和Where的区别

Where做条件限制时,是在查询结果分组前进行的,将不符合的Where条件过滤掉,并且使用Where时不能不能包含聚组函数。Having做条件限制时,是在查询结果分组后进行的,条件中经常包含聚组函数,通常使用方式为放在Groupby后面。

2023-08-09 14:44:13 105

原创 SpringSecurityOAuth2 中 Miss grant type问题

SpringSecurityOAuth2 登录传值的时候会出现 Miss grant type问题。没有设置content-type问题。

2023-07-08 11:33:40 556

原创 缓存雪崩、缓存穿透、缓存击穿及解决方案

(不过为了防止后期数据库有正常的数据了,应该将其缓存中key删除,重新进行赋值),在日常中,有可能这种缓存穿透是恶意的,所以一定要在API上进行一些判断,以防被攻击!在以上问题中,我们对于缓存层很可能会命中为空的情况下,应该在API上主动的对其进行互斥锁的操作,当在缓存中无法查询到值时,让其第一个请求进入数据库查询,查询到只,再进行赋值给Redis,最后解锁,这样也保证了数据库和缓存的数据一致性。缓存穿透:在Redis中大量的请求无法命中key,并且在数据库中也无法查找到数据时,就回导致缓存穿透。

2023-06-23 21:59:21 640

原创 Redis中AOF和RDB

AOF恢复数据的速度慢,并且运行效率也也没有RDB的高,而且AOF的文件通常是比RDB的文件大的。这里配置的save命令其实是代表RDB会在900秒内,发生1次key的变化就持久化一次,依次类推后面的,并且这个是不会影响的,只要满足了条件,就可以发生持久化。当将上述命令打开后,就会开启AOF持久化 ,它记录下来的命令,我们在Redis宕机后,重启Redis是可以恢复之前的数据的,而这样是RDB无法做到的,因为RDB是定时去进行持久化的,很有可能是没有及时存储到数据的。讲到这里还没说到它是如何持久化的。

2023-06-23 01:53:31 778

原创 MySQL事务

我们需要考虑实际情况,因为对于不同的隔离级别,性能的消耗也是很重要的,虽然串行化的隔离级别是最高的,但是同时性能的消耗也是最大的。②场景二:用户A正在执行查询数据的事务,用户B正在执行修改数据的事务,并且修改完成就commit了事务,这时用户A又查询数据,发现数据又被修改了,又骂骂咧咧的走了。①场景一:用户A正在执行查询数据的事务,用户B正在执行修改数据的事务,用户A再次进行查询时,发现用户A并没有操作数据,数据已经被修改了,并骂骂咧咧的走了。不能只执行当中的一段,这也就是事务的原子性。

2023-06-22 17:11:24 632

原创 深入浅出MySQL索引

索引在MySQL中是举足轻重的。在添加索引后,我们在MySQL的查询上会极大的提高我们的查询效率,这也是慢查询解决办法之一。

2023-06-22 02:17:03 1015

原创 RabbitMQ启动失败

首先,你得先确认的你得Erlang的版本和RabbitMQ的版本是否能相互兼容,如果不能,请先下载对应的Erlang版本或者RabbitMQ版本。1.在Java中使用了RabbitMQ发现不停的尝试连接,却连不上的问题先在cmd下输入erl,看一下Erlang的环境变量配没有没有上图这个结果的,先配置对应的Erlang的环境变量其次,如果已经可以配置好了的Erlang,那我们先尝试在后台使用一下启动的命令输入上述命令,看一下直接运行的时候会不会报错如果报了这样的错。

2023-05-14 14:40:19 2472 1

原创 uni-app顶部切换栏

需要vue3和typescript。

2023-03-27 10:04:26 195

原创 JS中变量提升

函数与变量的不同是,函数会在堆内存中开辟一个空间用于保存函数的执行体,会将当前地址赋值给函数变量,所以可以在函数声明上面,调用该函数。而ES6出现的const、let解决了变量提升的问题,这样修饰的变量会形成暂时性死区,无法在变量声明之前进行访问,即使全局存在一个同名变量,也无法访问。如何解冻:事实上,在JS中,对象冻结后是没有办法解冻的,只能通过克隆一个具有相同属性的新对象,通过修改属性来达到目的,并且我们可以通过Object.isFrozen来检测返回的布尔值判断是否为只读的,true就证明是。

2023-02-16 10:51:08 136

原创 cookie、LocalStorage、SessionStorage

了解到它们的异同后,我们就可以分析它们的应用场景了,cookie常用于存储登陆验证信息,而LocalStorage常用于存储不易变动的数据,减轻服务器压力(但其实基于前后端分离,最好是前端存储在这里,后端放在数据库中),SessionStorage可以用来检测用户是否刷新进入页面。②cookie的生命周期是在服务器端写入时设置好的,而LocalStorage是写入就一直存在,除非手动删除,而SessionStorage是在页面退出后,自动删除,这是从生命周期的角度分析。

2023-02-07 13:47:10 116

原创 Mysql中char与varchar的区别

char的查询效率高的原因在于,两者在存储结构上的不同,这里说明一下,varchar在进行存储数据时,会将数据的第一位填充当前数据的长度,尾部会填充一个空格隔开下个数据的长度位,而char中存储数据就直接将数据放进去,就没有这么复杂,所以查询效率就会高。定长:char:有定长,中间不足限制长度使用影藏空格填充 ,varchar:不定长。使用空间 : char :会浪费空间 ,varchar:不会浪费空间。查询效率 : char:查询效率高 ,varchar:查询效率低。

2023-01-15 17:29:23 295

原创 Sa-token角色权限认证

配置这个类实现StpInterface接口就可以使用了,这里需要说明下,我们是添加角色的,所以在重写的接口中,我们访问数据库,每次进来的是什么人进来,这里就需要和数据库进行交互,然后再和@SaCheckRole进行搭配,就可以在每次获取用户是什么角色的时候,判断在这个注解的value中没有就可以进行拦截了。在平常使用Sa-token中可能会出现管理员和普通用户,管理员能用的接口,普通用户不能用这种场景,就需要用到我们的角色权限认证,这样可以更快捷的区分不同的用户角色。官网上是这样说明这种情况的。

2023-01-12 13:05:08 854

原创 @NotEmpty、@NotBlank、@NotNull 区别和使用

这里提醒一点,我们通常在使用@RequestParam的时候,通常接受的是前端直接传过来的字段,这里就要求前端字段和接受的字段必须相同,但是传入过来的参数比较多时,达到4个以上,更推荐的做法是将其字段新构建一个类用于接受和判断,这样才Controller下也就没有这么多代码,而这种也方便后期的维护。当你的接口能够是通的时候,但是数据却被拦截,这里就需要注意可能是这三个注解用错的问题了,这里提醒一点在使用这个接口的时候,需要使用注解@Validated,表示需要进行校验。之后 size > 0。

2023-01-03 23:51:00 2233 2

原创 application.yml文件中配置Redis

【代码】application.yml文件中配置Redis。

2023-01-02 15:19:36 3349

原创 解决微信小程序报错getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json

纵使这些都配置好了,高德API的key也配置好了,但是还是会报错,后来我索性去看了小程序中的app.json文件,发现根本没有配置的permission和requiredPrivateInfos,我把HBuilder X中的manifest.json文件的配置的permission和requiredPrivateInfos给复制过去后,就正常使用了,已经很久没有使用的uni.getLocation报错,这个是之前写好了的,但是移过来后该配置的都配置了,真的奇怪。偷个懒直接复制过去,在pages下。

2022-12-30 15:50:16 3852

原创 前端请求发送至后端,数据正常发送过来,但前端statue为404

正常情况下,前端报404错误是指没有找到接口。我们前端发送的请求如下,我这里是开发的uni-app发送过去的数据用后端发现是接收了的,但是前端会报错。

2022-12-30 00:13:30 2438

原创 sa-token开发常用

Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。等一系列权限相关问题。

2022-12-28 15:12:11 432

原创 封装Uni-app中uni-request之typescript

换成自己的接口就可以直接用了,使用的时候是是使用的promise来进行异步操作的,所以使用promise...then这种用法即可。这里推荐这种写法是,大多数后端处理完,还需要success的回调函数,所以用这种写法比较方便。发请求常封装的,这里就封装好了ts用的,直接cv大法即可。下面这个直接将API管理到一起,这样好用一点。

2022-12-15 15:29:31 614 1

原创 Java和JavaScript中时间戳于时间相互转换

直接复制后封装在一个工具类中,要用的时候,直接传参就可以使用的那种,先说时间转时间戳的。这个是当前时间的,如果是前端传过来的,更改一下里面的数据即可,很简单。一样的很简单,在前端处理,直接调用Date中的方法。这里是时间戳转换为时间的。

2022-11-24 15:52:01 721

原创 Uni-app中使用uni.navigateTo跳转失败

②还有可能的是即使添加了这个也会报错,这可能是因为路径的问题,在输入url的时候会自动的从src路径下开始,这样也是可能会失败的,我们只需要从page层开始就ok了。第一个问题就是没有在pages.json的文件中添加当前的/pages/Approval/rules这个路径。在初次使用navigateTo的时候,难免会出现一些小的问题,已经使用了但是频繁的跳转失败。③还有我看到也有没有在路径中添加/,这是细节问题,注意就行。改为第一张图片那种,把src去除就可以正常的使用了,这是出现的第一个错误。

2022-11-21 11:27:56 4746

原创 uni-App获取地图address与高德地图API配合

uni-App获取地图address与高德地图API配合,网上也有很多不靠谱的,本文章不用下载任何sdk

2022-11-15 15:47:08 963 2

原创 CSS常用(1)背景、字体、链接

有四个状态,分别是: ①正常,未访问过的链接②用户已访问过的链接③当用户鼠标放在链接上时④链接被点击的那一刻,这里需要注意!text-decoration很多时候是用来删除链接的下划线,这样使用a标签的时候就没有下划线了,不过也有其他的文本装饰方式,overline、line-through、underline设置文本的下划线分别在上面、里面、下面。text-shadow,给文本设置阴影,设置的阴影可以根据后面的参数进行调整,第一个参数为横向的阴影位置,第二个为阴影的纵向位置,第三个参数为阴影的颜色。

2022-11-06 23:46:08 80

原创 Update语句进行多表关联

刚开始可能会有使用先复合语句的写法,就是写update中又select,想法是对的,将查出的语句中的值做为条件给update使用,不过一旦使用了,就可能会出现下面这种情况。这就是SQL中不能先select出同一表中的某些值,再update这个表(在同一语句中),这样就有了下面的这种解决方案。

2022-11-03 10:57:26 4079

原创 JS中localStorage的使用

理论上来说是永久有效的,即不主动清空的话就不会消失,即使保存的数据超出了浏览器所规定的大小,也不会把旧数据清空而只会报错localstorage为标准的键值对(Key-Value)的数据类型,简单但也易扩展,只要以某种编码方式把想要存储进localstorage的对象给转化成字符串,就能轻松支持。

2022-10-30 23:59:56 2869

原创 Java中Vector和ArrayList主要区别

这里补充一下,由于Arraylist和Vector都是由数组实现的,所以他们有一个共同点,索引,这就提供了在进行查找的时候,速度就相对会快一些,不过在考虑查询的时候,又要考虑两者之间的线程问题(Vector会慢一些),但在增加的时候,同样是由List接口实现而来的LinkList不同的是,LinkList的底层是由双向链表实现而来的,所以在插入、删除、修改操作时,使用LinkList的速度又会比Arraylist和Vector都快!首先先讲解一下Java中vector。

2022-10-26 00:08:09 1783

原创 深拷贝与浅拷贝的区别

浅拷贝:对于基础数据类型:直接复制数据值;对于引用数据类型:只是复制了对象的引用地址,新旧对象指向同一个内存地址,修改其中一个对象的值,另一个对象的值随之改变。深拷贝:对于基础数据类型:直接复制数据值;对于引用数据类型:开辟新的内存空间,在新的内存空间里复制一个一模一样的对象,修改其中一个对象的值,不会影响另一个对象。深拷贝相比于浅拷贝速度较慢。

2022-10-24 17:03:07 123

原创 微信小程序动态获取时间

在微信小程序中如何实现动态的获取时间呢?在这里我将直接提供代码,直接复制进去后就可以直击使用了。

2022-10-22 21:28:22 2102

原创 String a = new String(“a“)创建几个字符串对象

当我们在创建字符串的时候会出现这两种情况,一种是常量池中已经有该字符串,一种是常量池中没有该字符串。当没有的时候会先在常量池中先创建一个字符串对象,然后再在堆中也创建一个字符串对象,然后将常量池中的对象内容拷贝到堆中的字符串对象,在堆内存中的字符串对象返回该地址,所以一共是创建了两个对象,但如果常量池中已经有了字符串对象,就不会在常量池中创建,所以创建了一个对象。所以创建1或者2个对象。

2022-10-18 22:54:57 335 1

原创 Mybatis-plus

(简称 MP)是一个的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2022-10-12 11:29:09 399

原创 Java中热部署

在安装好上诉的坐标后,我们更新代码只需要执行Build后即可自动更新(ctrl+f9也可以执行),这个Build和Debug的区别在于重载是重新加载jar包、加载base类加载器,而重启是重新加载代码、类、配置文件等、加载restart加载器。在平常开发项目中,我们通常是修改完代码后就希望看到结果,所见即所得,为了避免我们后期项目较大时,需要不断的重启服务器,所以热部署由此而出。停止热部署可以在ym文件中通过devtools:restart:enabled设置为false。首先安装热部署的坐标。

2022-10-09 11:30:48 1168

空空如也

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

TA关注的人

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