自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

坤的博客

学习java全栈中

  • 博客(85)
  • 资源 (1)
  • 收藏
  • 关注

原创 ssm整合layui

ssm整合-layui-增删改查1.配置文件第一步:导入依赖(就是我们说的jar包,可以根据下方的依赖名称去下载jar)<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId&g...

2020-03-31 09:28:46 1277

原创 easyexcel封装工具类以及简单使用

<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency>封装工具类package com.lk.util;import com.alib.

2021-09-18 16:34:13 1198

原创 swagger整合 gateway实现文档集中化

swagger的公用配置@ConfigurationProperties("my.swagger")@Getter@Setterpublic class SwaggerProperties { /** * swagger2默认的url后缀 */ private String swagger2Url = "/v2/api-docs"; private String oas30Url = "/v3/api-docs"; private Stri.

2021-06-21 17:20:18 324

原创 Spring Boot多数据源配置

这里的案例使用的 mysql数据源以及clickHouse数据源创建Spring Boot项目引入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.

2021-06-16 15:10:47 225

原创 @ConfigurationProperties以及@NestedConfigurationProperty的使用详解

创建一个springboot应用(默认忽略)application.properties的自定义配置spring.datasources.test.username=adminspring.datasources.test.password=123456spring.datasources.test.url=urlspring.datasources.test.driver=com.mysqlspring.datasources.duration=5@ConfigurationPropert

2021-06-16 10:22:44 3504 1

原创 springboot 敏感信息加密

1. 引入依赖jar包这个jar是一个人基于 jasypt 进行封装的starter主要的作用是 实现敏感信息的加密 <!--springboot加密--> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId

2021-05-05 11:28:51 170

原创 hutool中的字段验证器-Validator

作用验证给定字符串是否满足指定条件,一般用在表单字段验证里。此类中全部为静态方法使用boolean isEmail = Validator.isEmail("loolly@gmail.com")表示验证给定字符串是否复合电子邮件格式。异常验证Validator.validateChinese("我是一段zhongwen", "内容中包含非中文");...

2021-01-05 09:48:06 5815

原创 hutool中身份证工具-IdcardUtil

身份证工具-IdcardUtilString ID_18 = "321083197812162119";String ID_15 = "150102880730303";//是否有效boolean valid = IdcardUtil.isValidCard(ID_18);boolean valid15 = IdcardUtil.isValidCard(ID_15);//转换String convert15To18 = IdcardUtil.convert15To18(ID_15);As

2021-01-05 09:46:36 3214

原创 hutool中的字符串工具类

字符串工具类String a="db dg";// 判断是否为空// hasBlank 和 hasEmpty的区别// hasBlank 判断是否为null或者空字符串和不可见的字符也所做是空boolean b = StrUtil.hasBlank(a);// hasEmpty 只会判断 是否为null或者是空字符串boolean b1 = StrUtil.hasEmpty(a);// 去掉指定的前缀String c=a+"dddd";String s = StrUtil.remov

2021-01-05 09:45:14 3856

原创 hutool中资源流相关操作

举例:jdk中读取properties文件中的操作 // 读取到资源文件 .properties 默认不需要写后缀 ,还可以实现国际化和本地化 ResourceBundle resourceBundle = ResourceBundle.getBundle("test"); // 获取所有的key Enumeration<String> keys = resourceBundle.getKeys(); while (keys.ha

2021-01-05 09:44:31 3200 1

原创 hutool中的日期时间工具的使用

日期时间工具-DateUtil的使用由来考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位(一个月前等等)。对于Date对象,为了便捷,使用了一个DateTime类来代替之,继承自Date对象,主要的便利在于,覆盖了toString()方法,返回yyyy-MM-dd HH:mm:ss形式的字符串,方便在输出时的调用(例如日志记录等)具体使用DateUt

2021-01-05 09:42:33 8304

原创 hutool 中自定义转换器

由来Hutool中类型转换最早只是一个工具类,叫做“Convert”,对于每一种类型转换都是用一个静态方法表示,但是这种方式有一个潜在问题,那就是扩展性不足,这导致Hutool只能满足部分类型转换的需求。解决为了解决这些问题,对Hutool中这个类做了扩展。思想如下:Converter 类型转换接口,通过实现这个接口,重写convert方法,以实现不同类型的对象转换ConverterRegistry 类型转换登记中心。将各种类型Convert对象放入登记中心,通过convert方法查找目标类

2021-01-05 09:40:30 1045

原创 hutool的类型转换类-convert的使用

第一步:导入依赖的maven<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.5.6</version></dependency>类型转换工具类-Convert为什么我们要使用这个工具类?在Java开发中我们要面对各种各样的类型转换问题,尤其是从命令

2021-01-04 18:41:42 6729 2

原创 Hutool工具类的使用简介

简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。

2021-01-04 18:36:06 1636

原创 Java 实现定制二维码

创建一个maven项目<dependencies> <!-- 添加 google 提供的二维码依赖 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</ver

2020-10-26 16:59:00 273

原创 前后端分离通用返回json

通用的返回类package com.aaa.cache.common.lang.util;import com.aaa.cache.common.lang.enums.ResultCode;import lombok.Data;import java.io.Serializable;/** * 通用的 返回数据 */@Datapublic class R<T> implements Serializable { private Integer code;

2020-10-22 23:21:50 467

原创 springboot2.3.4自定义实现CacheManager

/** * 不能序列化对象 如果需要序列化对象请修改 ? 所在的地方 * new Jackson2JsonRedisSerializer<?>(?.class) * @param redisConnectionFactory redis的连接工厂 * @return */ @Bean("myCustomizeCacheManager") RedisCacheManager cacheManager(RedisConnecti.

2020-10-22 23:07:47 606

原创 docker整合各种中间件

docker安装mysql# 拉取镜像- docker pull mysql# 运行镜像- docker run -d -p 3306:3306 --name myqla -e MYSQL_ROOT_PASSWORD=root mysql:tag# 然后就可以使用客户端工具连接了# 如果想修改配置文件 - docke run -d -p 3306:3306 --name \ - -e MYSQL_ROOT_PASSWORD=root -v /opt/docker_mysq

2020-08-19 13:50:38 635

原创 docker安装rabbitmq

docker安装rabbitmq​ 在dockerhub中搜索rabbitmq在linux中新建一个Dockfile文件FROM daocloud.io/library/rabbitmq:3.7.26-management # 镜像EXPOSE 5672 # 暴露的端口号EXPOSE 15672VOLUME ["/var/lib/rabbitmq", "/etc/rabbitmq/rabbitmq.conf"] # 新建容器中的数据卷# 使用 构建命令构建docker

2020-08-18 17:03:43 166

转载 ES系列:解决Exception in thread “main” java.nio.file.AccessDeniedException

chown -R es:es /opt/elasticsearch-6.8.0 为这个用户设置权限

2020-08-09 00:57:44 2470

原创 反射机制

反射机制​ 通过java语言中的反射机制可以操作字节码文件。​ 类似于黑客(可以读和修改字节码文件)​ 通过反射机制可以操作代码片段(class文件)反射机制的相关类在那个包下?​ java.lang.reflect.*;反射机制相关的重要的类有哪些java.lang.Class: 代表整个字节码,代表一个类型,代表一个类java.lang.reflect.Method:代表字节码中的方法字节码。java.lang.reflect.Constructor:代表字节码中的构造方法字节

2020-08-02 21:08:46 123

原创 多线程详解

多线程的概述什么是进程?什么时线程?进程是一个应用程序(1个进程是一个软件)。线程是一个进程中的执行场景/执行单元。一个进程可以启动多个线程进程和线程是什么关系?阿里巴巴:进程​ 公司的每个员工就是阿里巴巴的每个线程京东:进程​ 强东:京东的一个进程​ 妹妹:京东的一个线程进程可以看作是现实生活当中的公司。线程可以看作是公司当中的某个员工。注意:进程A和进程B的内存独立不共享​ 进程A和进程B在java语言中​ 线程A和线程B,堆内存和方法区共享内存​

2020-08-01 22:05:58 131

原创 生产者和消费者

第一:wait和notify方法不是线程对象的方法, 是java中任何一个java对象都有的方法,因为这两个方式是Object类自带的方法。wait方法和notify方法不是通过线程对象调用的。 ## wait()方法的作用?Object o=new Object();o.wait();表示: 让正在o对象上活动的线程进入等待状态,无期限等待,## notify()方法作用?Object o=new Object();o.notify();表示: 唤醒正在o对象上等待的 线程.

2020-08-01 22:03:22 487

原创 jdk8实现线程方式

实现Callable接口。(jdk8新特性)这种方式实现的线程可以获取线程的返回值(一开始的那两种不能获取返回值)缺点:效率低package com.aaa;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;public class FutureTaskTest { public st.

2020-08-01 17:28:45 1230

原创 死锁的实现

死锁的理解图代码实现package com.aaa.syntest;/** 死锁的实现方式* */public class DesdLock { public static void main(String[] args) { Object o1=new Object(); Object o2=new Object(); //这两个线程共享o1,o2 Thread thread=new Threads(o1,o2);

2020-08-01 11:14:17 87

原创 常用的8款Idea插件

GenerateAllSetter:可以帮助我们一键生成对象所有的set方法,不需要我们手动的一个去写set。Properties to YAML Converter 将项目中的properties文件转化成yaml文件。lombok :使用lombok注解就可以使代码变得美观Alibaba Java Coding Guidelines 阿里代码规范检测maven helper 可以帮助我们检测那些包发生了冲突GsonFormat 格式化jsonsequenceDiagram :梳理业务逻辑,

2020-07-31 19:04:22 113

原创 HashMap排序题

已知一个 HashMap<String,Integer>集合,要求对 HashMap 中的 Integer类型进行倒序排序。排序时 key=value 键值对不得拆散。注意:要做出这道题必须对集合的体系结构非常的熟悉。HashMap本身就是不可排序的,但是该题偏偏让HashMap排序,那我们就得想在API中有没有这样的 Map 结构是有序的,我们不难发现其中LinkedHashMap就具有这样的结构,是链表结构有序的,更可喜的是他是 HashMap的子类,我们返回LinkedHashMap&

2020-07-31 10:41:50 243

原创 序列化和反序列化

序列化和反序列的理解[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nvbbZ1IY-1596105242544)(D:\pic\Typora-pic\image-20200730171552575.png)]序列化的实现参与序列化和反序列的对象必须实现Serializable接口Serializable接口只是一个标志接口(这个接口中什么代码都没有),起到标志的作用,java虚拟机看到这个类实现了这个接口,可能会对这个类进行特殊待遇,每个实现序列化接口的类中都会

2020-07-30 18:35:48 87

原创 java中流的基本使用

(IO)流Io流的理解通过IO可以完成硬盘文件的读和写/** 文件的输入和输出都是基于内存为参照物的* 文件的输入就是硬盘中的文件读到内存中* 文件的输出就是内存中的文件写的硬盘中*/IO 分类有多种分类方式:一种方式是按照流的方向进行分类:以内存作为参照物往内存中去,叫做输入(Input)。或者叫做读从内存中出来,叫做输出(Output)或者叫做写另一种方式是按照读取数据方式不同进行分类有的流是按照字节的方式读取文件,一次读取一个字节,等同于一次读取

2020-07-30 16:02:25 1137

原创 泛型的高级使用

泛型的使用public class Fan<T> { private Integer id; private String username; private List<T> data;//Fan前边的这个T 与后边传入参数的T相对应、//Fan后边的这个T代表的是返回值的类型public <T> Fan<T> add(List<T> date){ Fan<T> tFan = new Fa

2020-07-30 10:24:11 284

原创 数组的扩容

Java数组扩容的原理1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。2)利用数组复制方法可以变通的实现数组扩容。3)System.arraycopy()可以复制数组。4)Arrays.copyOf()可以简便的创建数组副本。5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容。使用Arrays.copyOf: int [] ints= new int[10]; System.out.println(ints.length); /

2020-07-29 15:13:51 2022

原创 jQuery过滤器

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>过滤器</title> <script type="text/javascript" src="jquery-3.4.1.js"></script></head><body> <div >我是divone

2020-07-26 16:56:02 50

原创 jQuery和JavaScript的转换

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>jQuery和javaScript的转换</title> <script type="text/javascript" src="jquery-3.4.1.js"></script></head><body><inp

2020-07-26 15:51:07 446

原创 js中全选和全不选

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>操作复选框</title></head><body><input type="checkbox" id="quan"> 全选<br><input type="checkbox" name="aihao">游戏&lt

2020-07-26 10:08:12 253

原创 js常用事件

js中的常用事件 click 鼠标单击 dblclick 鼠标双击 blur 失去焦点 focus 获得焦点 keydown 键盘按下 keyup 键盘弹出 change 改变事件 load 页面加载 mousedown 鼠标按下 mouse

2020-07-25 23:10:10 91

原创 Object类型的使用

js中object类型中有一个重要的属性是prototype使用这个属性可以动态的扩展一个对象的函数或者属性例如:function User(a,b,c){ this.sno=a; this.sname=b; this.sage=c;}//获取上述的如果用new User来获取说明上述是一个对象,否则是一个函数//第一种方式获取值 var user=new User(1,'张三',23); console.log(user.sno); console.log(user.sname);

2020-07-25 22:51:48 239

原创 前后端分离中将后端中的值进行本地存储

前后端分离中如何获取服务端中保存的值:在前端中使用//设置浏览器中的缓存信息把后端的值转为json字符串 localStorage.setItem("user",JSON.stringify(response.user))在另一个页面中获取var item = localStorage.getItem("user"); var parse = JSON.parse(item); 安全退出:清除localStorage中的键即可localStorage.remove

2020-07-25 09:30:02 562

原创 springboot操作redis中的哨兵机制

SpringBoot中的配置#哨兵机制 管理主从复制spring.redis.sentinel.master=你自定义的哨兵的名称spring.redis.sentinel.nodes=这里是一个数组,多个用逗号隔开 要求是 ip:port 示例:127.0.0.1:26379说明:启用哨兵机制的前提是在服务器中搭建好主从复制的环境自定义/myredis目录下新建sentinel.conf文件在配置文件中填写内容sentinel monitor mymaster 127.0.

2020-07-24 17:06:13 633

原创 redis中缓存雪崩

什么是缓存雪崩?定义:在系统运行的某一时刻,突然所有的缓存全部失效,恰好在这一时刻涌来大量的客户端请求,导致所有模块的缓存无法利用,大量的请求涌向数据库导致极端情况,数据库阻塞或者挂起。缓存雪崩怎么出现的?设置了业务模块的缓存的超时时间。缓存雪崩的解决方法有哪些?设置缓存永不超时(不推荐)【会占用内存】为不同的业务模块设置不同的超时时间(根据客户的访问的某个模块的频率进行设置)...

2020-07-24 13:53:45 82

原创 redis中的缓存穿透(缓存击穿)

什么是缓存穿透(击穿)? 定义:客户端查询了一个数据库没有的数据记录导致缓存在这种情况下无法利用,称之为缓存穿透或者缓存击穿mybatis中Cache解决了缓存穿透的问题。如果解决:将数据库中没有的数据记录也进行缓存...

2020-07-24 13:45:35 69

阿里EasyExcel的操作.pdf

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便

2020-08-04

空空如也

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

TA关注的人

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