- 博客(15)
- 收藏
- 关注
原创 Mybatis拦截慢SQL日志记录
背景 通过分析MySQL慢查询日志不方便,利用数据源不直观,无法了解上下文调用关系 要求通过可配置化的操作实现日志在控制台的输出和在数据库中记录 本文利用SpringBoot和Mybatis,基于Mybatis Interceptor实现慢SQL拦截日志记录和打印输出 一、服务配置 # slow-sql # 基于interceptor slow-sql-interceptor.enabled=...
2020-04-24 11:32:58
5157
5
原创 Mybatis拦截结果集实现字段加密
业务背景 在实际开发过程中,业务上会有很多数据交互和传输,其中必然存在一些敏感数据,不能直接明文传输,需要进行加密 前端与后端数据交互时 上下游子系统之间交互时 本文基于Mybatis结果集ResultSetHandler拦截实现字段加密 一、声明注解 用于指定加密字段 @Documented @Target({ElementType.FIELD}) @Retention(Retentio...
2020-04-24 10:35:37
3605
2
原创 Mybatis大数据量Excel导出避免OOM解决方案
一、背景 动态数据导出是一般项目都会涉及到的功能。它的基本实现逻辑就是从数据库查询数据,加载到内存,然后从内存创建excel或者csv,以流的形式响应给前端,通过浏览器下载到本地 然而一旦数据量太大,达到十万级,百万级,千万级,大规模数据加载到内存必然会引起OutofMemoryError 如何解决,本文提供了完整的解决方案 二、如何避免OOM 1、产品角度 我们为什么要导出这么多数据呢?这...
2020-04-09 10:40:33
4819
4
原创 MySQL主从复制原理解析与最佳实践
一、主从复制 1、复制的基本原理 主要涉及三个线程:binlog 线程、I/O 线程和 SQL 线程 binlog 线程 :负责将主服务器上的数据更改写入二进制日志(Binary log)中 I/O 线程 :负责在主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log) SQL 线程 :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中执行 2、复制的基本原则 ...
2020-04-09 10:19:38
479
原创 MySQL批量插入1000w条数据
一、概述 在一些实际的测试、运维过程中,往往需要向数据库插入大量数据,利用存储过程是一个不错的选择 本次采用MySQL5.7,模拟实际批量插入1000w条随机数据 二、创建库 mysql -uroot -p密码 create database bigdata; use bigdata; 三、创建表 drop table if exists user; create table user...
2020-04-09 10:10:10
1915
原创 基于Zxing的二维码生成和识别
一、添加依赖 <!--导入zxing依赖--> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.1</version> </depende...
2020-04-08 17:42:44
579
原创 SpringBoot使用JWT实现登录拦截验证
一、定义 JSON Web Token(JWT)是一个开放的标准(RFC 7519) 定义了一个紧凑且自包含的方式,用于在各方之间以JSON对象安全地传输信息 信息可以通过数字签名进行验证和信任 可以使用秘密(使用HMAC算法)或使用RSA的公钥/私钥对来对JWT进行签名 二、请求流程 1、用户在浏览器中输入用户名、密码进行登录验证 2、服务端登录验证 3、成功则返回生成的JWT,失败则抛...
2020-04-08 17:34:35
2260
原创 SpringBoot发送注册激活邮件(附HTML模板)
效果展示 一、准备工作 需要开启POP3、SMTP邮件服务 需要设置客户端授权码 以网易邮箱举例如下: 二、发送模板邮件 1、添加依赖 <!--mail--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b...
2020-04-08 15:38:51
6748
原创 SpringBoot定时任务
一、@Scheduled 默认是串行的,单线程,当开启多个任务时,任务的执行时机会受上一个任务执行时间的影响 @Configuration @EnableScheduling //开启定时任务 public class ScheduleTask { //每10秒执行一次 @Scheduled(cron = "0/10 * * * * ?"...
2020-01-13 16:27:41
460
原创 SpringBoot全局异常处理
一、自定义数据统一返回对象 /** *@Author thailandking *@Date 2019/12/1 11:58 *@LastEditors thailandking *@LastEditTime 2019/12/1 11:58 *@Description 统一返回对象 */ @Data public class Response implements Serializab...
2020-01-13 16:21:47
205
原创 Java版二叉树序列化与反序列化
简介 先序序列化与反序列化二叉树 代码实现 public class SerializeTree { public static void main(String[] args){ TreeNode n1=new TreeNode(1); TreeNode n2=new TreeNode(2); TreeNode n3=new TreeN...
2018-11-26 21:52:31
428
2
原创 Java版数据结构之八大排序算法
排序算法简介 交换排序:冒泡排序、快速排序 插入排序:直接插入排序、希尔排序 选择排序:简单选择排序、堆排序 归并排序 基数排序 对比 代码实现 冒泡排序 //冒泡排序 public static void sort(int[] arr){ if(arr==null||arr.length&amp;lt;=0){ return; } ...
2018-11-04 14:28:16
962
原创 Java版数据结构之二叉树操作大全
简介 前序遍历、中序遍历、后序遍历、层序遍历 前序查找、中序查找、后序查找 获取二叉树结点数量 获取二叉树的深度 判断是否为满二叉树 获取二叉树最大宽度 判断是否为完全二叉树 代码 public class MyTree { int data;//结点的值 MyTree leftTree;//左子树 MyTree rightTree;//右子树 public ...
2018-10-31 22:34:07
294
原创 VMware安装虚拟机教程
简介 安装虚拟机 安装VMware Tools工具 简单设置虚拟机,利于使用 一、安装虚拟机 第一步,新建虚拟机 第二步 第三步 第四步 第五步 第六步 第七步 第八步 第九步 第十步 第十一步 第十二步 第十三步 第十四步 第十五步 第十六步 第十七步-开启虚拟机 第十八步 第十九步 第二十...
2018-10-31 17:56:18
517
原创 springboot使用@data注解,减少不必要代码
一、idea安装lombok插件 二、重启idea 三、添加maven依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version&...
2018-10-22 16:41:28
152911
20
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅