- 博客(37)
- 收藏
- 关注
原创 mysql大数据量 分页查询优化
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT=‘用户’我下面自己测了一个500万数据,取偏移量400万20条数据的例子 ,话不多说上例子。减少回表查询次数(定位到非聚簇索引树的叶子节点少,小表驱动大表等)最近我老表问我一个面试问题,如果数据量很大,分页查询怎么优化。,也就是不要用select * ,走。,不然你的id跟你的第几条数据对不上了。,叶子节点有保存了数据),优化后的sql,由于我的是。
2023-09-20 12:55:22
416
原创 springboot 整合外部jar包
springboot 整合外部jar包有时候我们在做项目的时候可能会用到第三方的一些jar包,像我在公司遇到要别人公司的sdk,那我们怎么整合他们的jar包呢下面整了个demo:<dependency> <groupId>com.platform.kangaroo</groupId> <artifactId>kangaroo-client</artifactId> <
2021-12-24 10:46:04
523
原创 用stream流 手动封装分页工具类
用stream流 手动封装分页工具类一般我们都是用mybatis-plus自带的分页直接查询我们也可能遇到前端需要展示多表的分页一般是通过主干单表分页查询后,其他需要的显示的数据也是单表查询变成map,再封装返回前端也可以通过创建视图,再直接用分页查询返回但是可能遇到更复杂的场景,像我遇到的就是 一条数据展示 一张表的不同类型,前端需要展示 最高零售价 公司零售价 会员价,他们是一张表的,我要以公司零售价为主干(还要通过其他表进行筛选,另外的则根另外表进行筛选),最后再封装回去我的思路是哪些数
2021-12-16 21:38:53
1079
原创 数值型字符串格式化工具类以及可能运用场景
工作中遇到的需求格式化数值型字符串,需求如下:1.00千克格式化为1千克。如果是3.21500元就格式化为3.215元。1.00格式化为1.如果3.21500就格式化为3.215。数值字符串去零小数点等,操作建议用BigDecimal的ap i =》stripTrailingZeros()刚开始不熟悉BigDecimal用法就用String的api进行判断,感觉不是很好。返回前端如果太长建议转为字符串返回,因为BigDecimal有一些坑就是可能第7小数后变成科学计数法,用 toPlainStri
2021-12-16 20:58:37
231
原创 sql查询求两个数值字段的和
这是一张物料库存的表,有两个库存,甲供物料,乙供物料。如下:SELECT *,(IFNULL(a_number,0) + IFNULL(b_number,0)) AS stock FROM `materiel_storage`;//注意IFNULL判空效果:
2021-08-27 18:01:58
3965
原创 mybatisplus批量插入数据
对于mybatis-plus的批量操作,一句话:少量数据可以使用,大量数据建议手写sql。不建议使用mybatis-plus批量操作,也是循环一条一条操作。废话不多说上demo。1.导入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId>
2021-08-27 17:54:44
1881
原创 springboot整合Websocket以及一种使用场景
一、websocket的执行流程借用b站大佬的图讲解下:分三步走。二、springboot整合websocket1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> <
2021-08-17 18:50:44
411
原创 接收MultipartFile直接转化为Workbook(Excel文件对象)及其应用场景
接收MultipartFile直接转化为Workbook情况1:直接这样转化//不管2003 .xls还是2007 .xlsx 都是//用 new XSSFWorkbook(file.getInputStream())将MultipartFile文件转为Workbook文件Workbook workbook = new XSSFWorkbook(file.getInputStream());情况2:(错误)刚开始以为需要2003的.xls要对应的HSSFWorkbook去接转化,2007的.
2021-07-22 14:29:47
4697
原创 springboot中如何使用ThreadLocal?
ThreadLocal的作用:用来存当前线程的局部变量,不同线程间互不干扰。拿完数据记得需要移除数据,不然JVM不会将ThreadLocal回收(可能还会被引用),多了就会出现内存泄漏的情况。springboot中如何使用ThreadLocal?其实很简单,就是将ThreadLocal变成一个bean(也就是初始化ThreadLocal),在不同层间用同一个对象就行。写一个小demo。1.初始化ThreadLocalpackage com.yblue.config;import org.spr
2021-07-13 11:45:46
3637
原创 java后台控制层接收复杂参数(对象集合,多个文件对象)
java后台控制层接收复杂参数(集合对象,多个文件对象)1.接收集合对象创建一个类,然后将要接收的集合对象作为一个属性就行,控制层加个@RequestBody代码如下:接收实体类package cn.mindgd.dto;import cn.mindgd.domain.Engineering;import io.swagger.annotations.ApiModel;import lombok.Data;import java.util.List;/** * @author J
2021-07-05 18:46:47
4055
4
原创 idea快捷键
Alt+Enter 自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+F 全局查找文本Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+Shift+Space 自动补全代码Ctrl+空格 代码提示Ctrl+Alt+Space 类名或接口名提示Ctrl+P 方法参数提示Ctrl+Shift+Alt+N 查找类中的
2021-06-25 14:42:44
100
原创 如何使用POI下载、导出Excel模板以及设置样式?
如何使用POI生成Excel模板以及设置样式?具体设置样式参考我写的工具类模板1.导入pom文件<!--ApachePOI依赖包--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</versi
2021-06-24 15:23:08
1066
原创 怎么实现同一账号只能在一台设备登录
同一账号只能在一台设备登录实现思路。注意:登录是在白名单(直接放行的接口)。生成的token携带账号信息。1.用户每次登录生成token时,将账号当成key,token当成value,以token的过期时间存入redis中。2.用户访问的时候,在拦截器解析token,获取账号,拿账号去redis中获取value,如果是value的token与当前用户携带过来的token一致就放行。如果不一致,则告诉前端重复登录,让前端清除token,跳转到登录页面。3.用户在另一台设备登录时,也是存入redis,这
2021-06-16 19:18:32
9060
8
原创 mybatis XML 中<if>、<choose>、<when>、<otherwise>等标签的使用?多条件查询该怎么处理?
mybatis XML 中if、choose、when、otherwise等标签的使用一般使用在多条查询,虽然也可以通过注解写,我比较菜,我不会。一般多条查询怎么解决?1.如果是单表间的多条件查询我是直接调用mybatis plus的api ,里面可以有直接判空条件的api。如:queryWrapper.like(StringUtils.isNotEmpty(变量参数), “表字段”,变量参数);2.如果是多表间的多条件查询,我建议用XML来做吧,当然注解也行。其实跟java的if类似,符合条件
2021-06-09 20:01:08
15997
原创 如何使用游标cursor重新转移数据到另外一张表
使用存储过程和游标将user表的数据转移到new_user表#将user表所有数据转移到new_user表中 DROP PROCEDURE IF EXISTS cursor_test;DELIMITER $ CREATE PROCEDURE cursor_test()BEGIN #声明user表存在的所有字段 DECLARE user_id INT; DECLARE user_code VARCHAR(32); DECLARE NAME VARCHAR(32); DECLARE us
2021-06-09 19:47:46
512
原创 mysql如果使用视图?在mybatis中如何使用?
mysql如果使用视图?在某些业务场景下需要的数据可能是由多张表的不同字段组成的,可以1.创建视图2.多次查不同表封装返回给前端视图的语法:##创建视图CREATE VIEW 视图名 as 要多表联查的sql语句##移除视图DROP VIEW 视图名如下:##创建视图CREATE VIEW view_test AS SELECT u.*,r.role_name,r.role_id FROM USER u,role r,user_role ur WHERE u.user_id =
2021-06-09 19:43:22
3424
原创 @Transactional可能导致失效的一种场景new出来的集合循环不报空指针
今天发现了一个导致@Transactional可能失效的问题,就是new出来的集合,循环不会报空,看图看看我遇到的业务逻辑,给角色授权逻辑是》》解除角色权限关系》》给角色添加权限解决办法想看更多精彩内容,可以关注我的博客园我的博客园...
2021-06-09 19:35:25
183
原创 @Transactional失效的一种业务场景
今天写的一个业务场景是批量导入,然后需要记录错误的数据,精确到某个单元格的记录,有重复数据或者单元格为空的就回滚,但是事务失效了。我的业务逻辑:》》插入所有数据》》在插的过程中记录哪些单元格为空或者重复数据就存在一个集合内》》 最后判断该集合是否为空,不为空就抛异常,正常抛异常事务就会回滚正是因为需要返回这个错误集合,return 这个集合 就会把抛出的异常处理了,导致@Transactional回滚失效由于我是同时导入两张表,里面的逻辑比较繁琐,后面4个单元格是另一张表,需查重后来在捕获异常
2021-06-09 19:30:41
299
原创 配置本地资源映射路径 addResourceHandlers
配置本地资源映射路径 addResourceHandlers实现 WebMvcConfigurer,重写addResourceHandlers(ResourceHandlerRegistry registry)方法addResourceHandler() 添加的是访问路径addResourceLocations()添加的是映射后的真实路径,映射的真实路径末尾必须加 / ,不然映射不到,这个问题困扰了我半天, / 适用于 windows和linux如下:package cn.mindgd.conf
2021-06-07 09:14:22
6526
原创 如何使用 BCryptPasswordEncoder 随机盐加密?如何应用到账号密码验证思路?
使用 BCryptPasswordEncoder 随机盐加密步骤:1.导入springboot的安全框架依赖: <!-- BCryptPasswordEncoder 加密--> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</art
2021-06-07 09:12:30
1627
原创 mysql 如何获取其及其所有子孙的数据或id (二)
mysql 如何获取其及其所有子孙的数据或id (二)上篇讲到了mysql8.0如何获取其及其所有子孙的数据或id,现在来讲5.7的。吐槽一下,原来公司老大跟我说用的是mysql8.0 ,然后项目部署上线后才知道是5.7,高版本到低版本总有语法不兼容的东西,所以 WITH RECURSIVE cte 用不了了。查询了很多资料mysql 8.0递归只能用存储函数了。##在创建存储函数前最好执行下这条代码,网上说开启了bin-log,不然可能会出现This function has none of D
2021-06-07 09:01:30
581
2
原创 mysql 如何获取其及其所有子孙的数据或id (一)
mysql 如何获取其及其所有子孙的数据或id (一)/* 通过组织机构i数据获取其所有子孙数据*/WITH RECURSIVE cte AS(SELECT * FROM organization WHERE organization_id = 1UNION ALLSELECT organization.* FROM organization INNER JOIN cte ON organization.parent_id = cte.organization_id)SELECT * FROM
2021-06-07 08:59:38
297
原创 字符串判空
字符串判空// String s = null;// String s = ""; String s ="测试"; if (!(s == null||s.length() <= 0)){ System.out.println("输出:"+s); }当然也可以直接使用StringUtils工具类 ,使用 isNotBlank()或者isNotEmpty()org.apache.commons.
2021-06-07 08:57:56
79
原创 Sql语句group by 异常问题 ONLY_FULL_GROUP_BY
Sql语句group by 异常问题 ONLY_FULL_GROUP_BY今天将项目部署到在服务器上测试,调用一个接口 关于 执行的SQL语句包含 group by ,然后报错。本以为是第一次使用,不会用jpa的锅,后来自己部署到自己的Linux上测试发现是下面的错误。在mysql 5.7 版本及以上版本会出现的问题:mysql 5.7版本默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了"SQL92标准"。在sql执行时,输出的结果是叫targe
2021-06-07 08:57:20
520
原创 mysql group by 字段区分大小写
mysql group by 字段区分大小写暂时只有3条测试数据,查询所有通过分组查询 group by unit_a 字段,如图可以看到我的 a栋 不见了在以什么字段分组的地方 解决 加个 关键字 BINARY想看更多精彩内容,可以关注我的博客园我的博客园...
2021-06-06 17:53:47
808
2
原创 mybatisPlus IPge 分页失效 解决方案
问题:mybatisPlus IPge 分页失效今天在测试mybatisPlus的API,然后在分页的时候遇到了IPage 设置 参数 后,分页未生效,如图解决方法配置一个分页拦截器类 PaginationInterceptor 配置类就解决了,代码如下package cn.mingdgd.config;import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;import org.springframe
2021-06-06 17:38:32
668
原创 在yml中配置map如果key中含有 /、*等特殊字符怎么处理?如何转义?
在yml配置map如果key中含有 / * 等特殊字符,key 需要加 “[ ]”filter: filterChainDefinitionMap: {"[/advertising/*]": 'perms[公告管理]', "[/hotelmanagement/*]": 'perms[入住管理]', "[/broadband/*]": 'perms[报装报修]', "[/yellowpages/*]": 'perms[黄页管理]'}创建配置类package com
2021-06-06 17:02:39
6280
2
原创 rsync linxu实时同步文件到windows
rsync linxu实时同步文件到windowsrsync 同步数据,数据的拉取和推送只能在客户端操作。即需要在客户端执行命令,在服务端配置rsyncd.conf文件,启动rsync。linxu实时同步文件到windows,所以客户端为 linux,服务端为 windows。一、服务端windows1.下载软件: cwRsyncServer下载链接: https://files.cnblogs.com/files/yblue/cwRsyncServer_4.1.0_Installer.rar
2021-06-06 16:55:03
378
原创 error: rpmdb: BDB0113 Thread/process 21537/140635654248512 failed: BDB1507 Thread died in Berkeley D
【问题:yum安装软件 error: rpmdb: BDB0113 Thread/process 21537/140635654248512 failed: BDB1507 Thread died in Berkeley DB library】【解决办法:重新构建rpm数据库】//进入文件夹 /var/lib/rpmcd /var/lib/rpm//删除 -rf __db开头的文件rm -rf __db*//安装 rebuilddbrpm --rebuilddb效果如下:想看更多精彩
2021-06-06 16:18:31
941
原创 跨域问题:CORS解决跨域原理
跨域问题:CORS解决跨域原理1.什么是跨域问题?如图1.1跨域问题需要满足以下条件1.1.1 跨域域名不同,域名相同,端口不同或者二级域名不同1.1.2 是针对ajax的一种限制跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是于当前页同域名的路径,这能有效的阻止跨站攻击2.怎么解决跨域问题2.1目前比较常用的跨域解决方案有3种:Jsonp最早的解决方案,利用script标签可以跨域的原理实现。限制:需要服务的支持只能发起GET请求nginx反
2021-06-06 16:07:02
429
原创 thymeleaf快速热部署快捷键Ctrl+Shift+F9失效
第一步在pom.xml文件中添加依赖<!-- springboot 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> 第二步在yml配置文件中关闭thymeleaf缓存一般配置了就可以了,可能存
2021-06-06 15:32:36
2092
原创 解决RabbitMQ安装计算机名或者用名为中文的方法
解决RabbitMQ安装计算机名或者用名为中文的方法1、 管理员运行cmd 然后打开RabbitMQ安装目录中的sbin目录 比如我:D:\RabbitMQ Server\rabbitmq_server-3.7.14\sbin2、然后在cmd中输入命令 rabbitmq-service.bat remove3、之后再输入以下命令set RABBITMQ_BASE=D:\RabbitMQ Server\rabbitmq_server-3.7.14\data 这个=号后面的路径是上面sbi
2021-06-06 15:25:32
871
1
原创 git快捷键
git快捷键git init 初始化本地仓库git add . 把当前目录下的所有文件添加到暂存区(后续才可以提交)git commit -m ‘提交日志’ 提交并记录日志git diff reamde 查看工作区与暂存区的区别git status 查看文件状态git log --oneline 查看日志git reset --hard 0712188 回退版本git checkout – readme.txt 撤销工作区修改git reset HEAD readme.txt 撤销暂存区修
2021-06-06 15:15:43
302
原创 了解原生js的ajax
了解原生js的ajax1.1 概念:Asynchronous JavaScript And XML 异步的JavaScript和XML以前的数据提交方式是同步的,以前我们表单提交数据给服务器。串行操作方式,如果服务器没有响应回来,浏览器不能进行任何操作,只能等待。AJAX使用异步的提交方式,后台进行数据的提交给服务器。XML文件。用来接收服务器返回的数据。1.2 同步方式与异步方式的区别同步方式:由浏览器发送请求给服务器,它们之间是串行操作,如果服务器没有响应回来,我们不能进行下一步的操作,这期
2021-06-06 14:58:40
69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人