自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

乐昊的博客

专注Spring、Vue、数据库、大数据领域创作者

  • 博客(55)
  • 资源 (3)
  • 收藏
  • 关注

原创 springboot保存图片到数据库和从数据库获取图片到前端

需求:业务场景:图片在前端上传到服务器进行保存,然后读取到前端进行展示。实现方式说明:该业务场景有多种实现方式,我们根据不同的场景选择合适的实现方式。本篇主要介绍的是图片由前端调用接口传递给后端后,由后端直接保存到数据库中保存,读取时后端直接将图片以流的方式返回给前端来实现;本篇只列举后端代码,保存图片时既保存了原图,也保存了缩略图;实现步骤:1、前期准备1.1 创建可以保存图片的表结构图片是以blob的类型在数据库进行保存的,考虑到原图有可能会比较大,所以采用了longbl

2020-12-09 19:40:22 29747 40

原创 mybatisplus添加真正的批量新增、批量更新

使用mybatis-plus来进行批量新增和更新时,你会发现其实是一条条sql执行,下面进行优化。1.添加InsertBatchMethod和UpdateBatchMethod类import com.baomidou.mybatisplus.core.injector.AbstractMethod;import com.baomidou.mybatisplus.core.metadata.TableInfo;import lombok.extern.slf4j.Slf4j;import or

2020-12-08 16:11:12 20543 9

原创 Mybatis plus条件构造器QueryWrapper基础方法解释

一、条件构造器关系介绍介绍 :上图绿色框为抽象类abstract 蓝色框为正常class类,可new对象 黄色箭头指向为父子类关系,箭头指向为父类wapper介绍 :Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示 AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column...

2020-11-14 15:21:34 6258

原创 mybatisplus中selectPage、selectMapsPage的QueryWrapper传参方法

利用mybatisplus中的selectPage、selectMapsPage可以实现自主添加条件分页查询,使用起来挺方便的。在使用selectPage、selectMapsPage,主要是不知道QueryWrapper如何使用,其实可以QueryWrapper有很多的方法,比如常见的 = 、 < 、 >、 like、 != 、 in等,直接调用,然后填入需要处理的字段和值即可;下边是一些常见的例子: taskQueryWrapper.and(wrapper ->..

2020-11-12 14:03:37 16781

原创 springboot+websocket的实现

本文章利用一个小的对话demo来展示springboot+websocket的实现。下面开始简单的实现过程:我的项目结构:一、首先,创建springboot项目,在pox.xml中加入(下面是我的pom.xml的dependencies里的全部依赖,因为,这个是最简单的入门例子,所以只有主要的websocket和web依赖) <dependencies> <dependency> <groupId>org.springframewor

2020-11-09 16:17:21 8148 6

原创 springboot定时任务

目录序言一、静态:基于注解阅读正文:序言使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:一、基于注解(@Scheduled) 二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。 三、基于注解设定多线程定时任务一、静态:基于注解基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一......

2020-08-05 11:43:35 93453

原创 Springboot配置连接两个或多个数据库

背景:项目中需要从两个不同的数据库查询数据,之前实现方法是:springboot配置连接一个数据源,另一个使用jdbc代码连接。为了改进,现在使用SpringBoot配置连接两个数据源实现效果:一个SpringBoot项目,同时连接两个数据库:比如一个是pgsql数据库,一个是oracle数据库(啥数据库都一样,连接两个同为oracle的数据库,或两个不同的数据库,只需要更改对应的driver-class-name和jdbc-url等即可)注意:连接什么数据库,要引入对应数据库的包

2020-07-31 16:08:00 24236

原创 sql实现查询两个时间之间每月的数量

在工作中,我们有时候会出现需要根据某个时间字段进行区分,按照一定的时间区间来统计每个时间区间内的数量,多用于给折线图、柱状图提供数据的情景,之前遇到过一次,找到了一个比较好的处理方法,只需要使用sql语句就可以实现了。我们最终需要给如下图供数据:组件要求提供的数据模型如下图: 我们已单表为例,时间字段为create_time,然后根据该字段的时间,计算出当年每个月有多少条数据,上sql。感觉想法不错,将create_time格式化为只有月,然后再根据这个月进...

2020-06-24 17:39:52 5873

原创 Axure RP Extension for Chrome解决办法

在谷歌预览原型的时候发现需要下载插件才能预览,但是谷歌自己的下载不了。我现在将网上查阅各路大神的解决方案,找到这一种比较使用的,整理如下。直接点击下载安装插件1、打开原型文件夹,依次点开resources->chrome,找到axure-chrome-extension.crx。2. 把axure-chrome-extension.crx后缀改为zip,然后解压,得到一个文件夹。

2023-03-22 10:40:46 5936 1

原创 Python推导式创建数列

推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的Python风格。

2023-03-20 17:14:05 245

原创 SQL优化常用的几种方式

mysql 客户端/服务端通信阶段 -》查询缓存阶段-》查询优化处理阶段-》查询执行引擎阶段-》返回客户端阶段。- 业务驱动:根据业务反馈来确定哪些sql可能出现问题。- 测试驱动:通过测试确定哪些sql出现问题。- 慢查询日志:通过日志记录的方式查找执行效率慢的sql。慢日志查询配置:show variables like 'slow_query_log' //--查看是否开启慢日志保存set global slow_query_log = on //-- 打开慢日志set global

2022-06-22 09:02:50 1873 1

原创 MyBatis三种分页方式

分页是我们在开发中绕不过去的一个坎!当你的数据量大了的时候,一次性将所有数据查出来不现实,所以我们一般都是分页查询的,减轻服务端的压力,提升了速度和效率!也减轻了前端渲染的压力!注意:由于 java 允许的最大整数为 2147483647,所以 limit 能使用的最大整数也是 2147483647,一次性取出大量数据可能引起内存溢出,所以在大数据查询场合慎重使用!语法:在实际项目中我们一般会加上为空为null判断,如下:业务层代码:执行结果:注 意 文末有:7701页互联网大厂面试题 传入0,1

2022-06-21 10:58:56 455

原创 SQL分组取最值

我们写SQL时,经常会遇到这个逻辑,按某个字段分组然后从每组按某个字段取出最大的一条纪录,我们在oracle、mysql分别探讨一下实现的方法,现在我们开始吧。新建一张表 exam_results想得到的数据是 按照 type 分组 然后取出每组中 results 最大的那几条纪录。结果应该是这三条纪录:方法一: 直接使用聚合函数查出来的结果如下: 这种比较简单,但是有个问题,查询结果不能展示出来class字段(其实也不能不可以,就是比较麻烦,需要修改数据库配置文件或

2022-06-17 15:29:39 11369

原创 Mysql数据库自动备份

一、情景在做数据库修改或删除操作中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库。本篇文章主要讲述Navicat for MySQL定时备份数据库和数据恢复等功能。之前也参照其他同学的博客但一些设置过程具有不稳定行,于是个人对于设置加以完善,从而避免了一些系统环境而导致任务的设置与执行成功等问题。如果觉得可以还望多多点赞~嘻嘻……二、提前Navicat for MySQL工具 win下的任务计划程序三、备份流程1、首先,创建测试数据库test,表tests,主要

2022-05-25 09:45:13 7531 2

原创 Java实现微信小程序登录(服务端)

微信小程序的登录,这里只涉及到后端代码,所以默认你是申请了一个小程序并且有了appid和secret。不管怎么说,还是放上官方的文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.htmlhttps://links.jianshu.com/go?to=https%3A%2F%2Fdevelopers.weixin.qq.com%2Fminiprogram%2Fdev%2Ffram........

2022-05-01 16:05:38 15844 16

原创 搭建SpringCloud项目

一.微服务基础这里会介绍很多基础知识,直接想开始搭建微服务的可以看第二章,微服务的搭建。直接看第二章不会有什么影响,可以先学会开车再学习车的构造的,看个人习惯来。1.什么是SpringCloud?SpringCloud官网:Spring Cloud以前的服务器就好像,一个会语数外全能的老师,为学生提供服务,这个老师生病了,那全校停课。现在微服务流行后,学校有了数学教研组,语文教研组,外语教研组,每个教研组有一群老师具体负责某科的教学,缺了谁,学校都照样运转。而这个变化中,那些改变历史的程序员

2022-04-14 15:22:58 5818 1

原创 mysql基础整理

数据类型这里就只列出我们常用的一些类型吧:1、数值类型:(INT 整形 DECIMAL 非整形(浮点型))2、字符串:VARCHAR(45) 变长的字符串 最多保存45个字(字:不区分中英文)CHAR(45) 定长的字符串 (固定容量45)VARCHAR是有上线的,超过后TEXT3、二进制类BLOB (Binary Large OBject)4、时间和日期DATE 年月日:(2021-04-01)TIME 时分秒:(12:12:12)DATETIME 年月日+时分秒TIMES

2022-04-12 17:02:42 118 1

原创 springboot配置redis

Redis 安装Windows 下安装下载地址:https://github.com/tporadowski/redis/releases。Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为redis。打开文件夹,内容如下:打开一个cmd窗口 使用 cd 命令切换目录到C:\redis运行:redis-server.exe redis.......

2022-04-12 16:04:53 5062

原创 SpringCloud核心组件

目录一、业务场景介绍二、Spring Cloud核心组件:Eureka三、Spring Cloud核心组件:Feign四、Spring Cloud核心组件:Ribbon五、Spring Cloud核心组件:Hystrix六、Spring Cloud核心组件:Zuul七、总结概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不

2022-04-12 15:49:38 332 1

原创 springboot配置logback

近期自己的项目想要一个记录日志的功能,而springboot本身就内置了日志功能,然而想要输入想要的日志,并且输出到磁盘,然后按天归档,或者日志的切分什么的,自带的日志仅仅具有简单的功能,翻了翻之前的项目,总结如下,适合大多数的应用场景用到的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-lo...

2022-04-08 11:24:55 1237

原创 idea右侧的maven框消失

首先打开项目的父pom文件; 在右侧鼠标右键选择 Add as Maven Project 如下图所示,点完这两部,maven就会顺利的出来了,如下下图所示

2021-09-15 10:24:25 159

原创 springboot返回按照首字母分组排序数据

需要实现的效果图如下:一、实现思路1、将数据list 进行排序Collections,排序后是按照汉字字母排序的。2、循环找出26个字母,以字母为key,以list中相同首字母的数据为值(集合)。二、开发准备1、这里需要用到pinyin4j-2.5.0.jar这个汉字转拼音的jar包,大家可点击下载我上传到CSDN的jar包资源;pinyin4j-2.5.0.jar2、将该jar包导入到maven项目中1)在项目中新建lib文件,将jar包复制粘贴到该文件中2)在

2021-05-14 15:13:51 1949 6

原创 springboot配置MybatisPlus

前言:mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。一、mybatis-plus简介:Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特

2021-05-06 16:00:04 13949 1

原创 mysql常见函数

目录MySQL 字符串函数MySQL 数字函数MySQL 日期函数MySQL 高级函数MySQL 有很多内置的函数,以下列出了这些函数的说明。MySQL 字符串函数函数 描述 实例 ASCII(s) 返回字符串 s 的第一个字符的 ASCII 码。 返回 CustomerName 字段第一个字母的 ASCII 码: SELECT ASCII(CustomerName) AS NumCodeOfFirstCharFROM Custom

2021-04-20 14:27:45 139

原创 linux命令基础

1、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:cd /root/Docements # 切换到目录/root/Docementscd ./path # 切换到当前目录下的path目录中,“.”表示当前目录 cd ../path # 切换到上层目录中的path目录中,“..”表示上一层目录2、ls命令这是一个非常有用的查看文件与目录的命令,list之意,它的参...

2021-04-20 14:09:33 214

原创 Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系

目录一、前言1. 历史版本图二、查看版本关系三、如何选择SpringBoot与SpringCloud版本号1. 引入SpringCloud版本管理2. 使用Spring Boot四、SpringBoot、SpringCloud、SpringCloudAlibaba版本对应关系1. 毕业版本依赖关系(推荐使用)五. Spring Cloud Alibaba与组件版本关系1. 组件版本关系六、依赖管理1. RELEASE 版本Spring Cloud H.

2021-04-08 09:35:36 20479 4

原创 springboot的异常统一管理

这篇文章主要介绍了Spring注解@RestControllerAdvice原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下前言前段时间部门搭建新系统,需要出异常后统一接口的返回格式,于是用到了Spring的注解@RestControllerAdvice。现在把此注解的用法总结一下。用法首先定义返回对象ResponseDto 1 2 3 4 5 6 7 8 9

2021-03-31 11:02:34 238

原创 MySQL的IF、IFNULL、NULLIF、ISNULL函数

在MySQL中可以使用IF()、IFNULL()、NULLIF()、ISNULL()函数进行流程的控制。1、IF()函数的使用IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。 SELECT IF(TRUE,'A','B'); -- 输出结果:A SELECT IF(FALSE,'A','B'); -- 输出结果:B 2、IFNULL()函数的使用IFNULL(exp.

2021-01-21 15:38:49 316

原创 activiti 配置项详解

asyncExecutorEnabled属性设置设置true后将代替那些老的Job executorspring.activiti.async-executor-enabled=falsespring.activiti.job-executor-activate=falseasyncExecutorActivate是指示activiti在流程引擎启动就激活AsyncExecutor,异步spring.activiti.async-executor-activate=校验流程文件,默认校验r

2021-01-13 15:55:01 1877

原创 activiti表结构

1Activiti数据库表结构1.1 数据库表名说明 Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头。并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配。uACT_GE_*: “GE”代表“General”(通用),用在各种情况下;uACT_HI_*: “HI”代表“History”(历史),这些表中保存的都是历史数据,比如执行过的流程实例、变量、任务,等等。Activit默认提供了4种历...

2021-01-13 11:01:08 276

原创 Windows10清理C盘

一、序言hi大家好,日常使用中,电脑C盘空间随着时间越来越小,一不小心就见红了。很多朋友装好系统后,直接就用,很少进行一些设置和日常维护。今天就和大家分享一下,简单几步,释放海量C盘空间,不用买新硬盘!分基础和进阶方法两部分步骤详细,所以内容较长,实际操作非常简单易懂,难度低,时间短,很快就能设置好。二、基础清理方法1、清理C盘系统过期文件系统大版本更新,平常使用,都有各种文件遗留下来,时间一长,C盘空间就小了。①我的电脑在C盘上右键,属性→点击磁盘清理。...

2020-12-24 17:27:25 8929 4

原创 SpringBoot中VO,DTO,DO,PO的概念、区别和用处

VO(View Object):视图层,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的时为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式条用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。PO(Persistent Ob

2020-12-17 09:11:38 2493 1

原创 Mybatis中动态sql详解

目录1、动态SQL:if 语句 2、动态SQL:if+where语句 3、动态SQL:if+set 语句 4、动态SQL:choose(when,otherwise) 语句 5、动态SQL:trim 语句 6、动态SQL: SQL 片段 7、动态SQL: foreach 语句 8、总结  前面几篇博客我们通过实例讲解了用mybatis对一张表进行的CRUD操作,但是我们发现写的 SQL 语句都比较简单,如果有比较复杂的业务,我们需要写复杂的 SQL 语句,往往需要拼接,而拼接 S..

2020-12-15 15:44:19 242

原创 Mybatis调用sql语句的方式

方式一:将简单的sql语句写在注释中,mapper.xml文件中不需要做任何处理。 方式二:将相对复杂的sql语句写到一个类中Mapper处的写法为下图,调用另外一个类,在@Param中添加参数,该类返回一个sql字符串调用的类为下图,返回一个sql字符串即可方式三:正常的mybatis在mapper.xml文件中写sql语句删除(1)删除:根据id删除需要删除的数据改(1)根据id去修改本数据中的一个列查询(1)当前端传过来一个对象,后台sql.

2020-12-15 15:03:25 1730

原创 SpringBoot自定义返回code值

关于HttpStatus在SpringBoot中关于状态码有一个枚举类型,如下。public enum HttpStatus { CONTINUE(100, "Continue"), SWITCHING_PROTOCOLS(101, "Switching Protocols"), PROCESSING(102, "Processing"), CHECKPOINT(103, "Checkpoint"), OK(200, "OK"), ...}通

2020-12-07 10:06:48 3415 1

原创 springboot集成shiro安全框架

一、引入maven配置 1 2 3 4 5 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency>...

2020-12-04 16:38:37 476

原创 数据库事务原理和锁机制

思维导航:Mysql中的锁 按颗粒度划分 按种类划分 其他种类 四种隔离级别的实现 读已提交和可重复读的实现 MVCC机制 读未提交和可串行化实现 不同隔离级别下加锁情况 1、读未提交级别 2、读已提交级别 3、可重复读级别 4、可串行化级别 MySQL对幻读的解决 “快照读”幻读 “当前读”幻读 死锁文章正文:本文主要总结 MySQL事务几种隔离级别的实现和其中锁的使用情况。在开始前先简单回顾事务几种隔离...

2020-12-01 11:19:22 1123

原创 MySQL的五种索引

本文从如何建立mysql索引以及介绍mysql的索引类型,再讲mysql索引的利与弊,以及建立索引时需要注意的地方首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='css',如果要拿这条数据的话需要些的sql是 SELECT * FROM award WHERE nickname = 'css'一般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描10W条数据找这条数据,如果我在nickname上建立索引,那么mysql只需要扫描一行数据及为我们找到这条nic

2020-12-01 08:58:48 482

原创 SpringBoot手动添加事务回滚

首先添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>添加事务管理的注解(没变化)添加依赖成功后,事务就默认开启了,只需要在需要的方法和类上添加注解@Tra

2020-11-27 15:50:03 1163

原创 java开发中应养成的好习惯

按照我的理解,在开发过程中如果养成一定的好习惯,遇到这些情况时就按照习惯中的方式去写,既能减少bug的出现,也能带给用户很好的使用体验;1、要对参数进行去空格处理在开发接口时,前端传过来的参数要进行去空格处理,主要是非空、首去空格、尾去空格,这即提现在对参数进行判断时,也用于放入sql语句时进行预处理;事例代码:在这个方法中,name、director、address是参数,我们需要将这三个参数放到sql中去查询,但是在放入sql之前,我们还需要做四步,1:判断参数是否为空,如果为空

2020-11-25 15:12:59 248

Axure谷歌浏览器插件axure-chrome-extension下载

Axure谷歌浏览器插件axure_chrome_extension下载

2023-03-22

SpringCloudAlibaba笔记

Spring Cloud Alibaba为分布式应用开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件,可以轻松地使用Spring Cloud开发应用程序。 使用Spring Cloud Alibaba,只需添加一些注解和少量配置,即可将Spring Cloud应用连接到Alibaba的分布式解决方案中,并使用Alibaba中间件构建分布式应用系统。

2022-06-09

pinyin4j-2.5.0.zip

该工具包用于将汉字转拼音jar文件,在开发根据汉字排序的时候很有用,还有类似通信录那样根据收个汉字拼音的首字母进行分组很有帮助。

2021-05-14

csv1.6.exe

经典版局域网CS,安装简单,使用简单,全是经典地图,是我们学生时代娱乐的美好回忆,分享给大家还念一下,没有广告什么的,用起来比较舒心。

2020-11-18

空空如也

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

TA关注的人

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