自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (2)
  • 收藏
  • 关注

原创 spring事务管理

spring事务:一、什么是事务:事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败.二、事务特性:4种原子性:要么全部完成,要么全部失败一致性:一旦事务完成(不管成功还是失败),必须确保业务处于一致的状态,而不是部分成功或者失败隔离性:不同事务处理相同数据,需要把每个事务分开来,防止数据损坏持久性:一旦事务完成,不管发生什么系统错误,结果都不受到影响,事务结果通常写到持久化储存器种三、隔离级别:4种隔离级别:定义了一个事务可能受其他并发事务影响的程度。并发事务

2020-10-24 23:47:04 147

原创 springboot

项目打包0、设置打包方式为war在这里插入图片描述1、配置打包排除test测试类 org.apache.maven.plugins maven-surefire-plugin true 12345672、排除tomcat依赖 org.springframework.boot spring-boot-starter-web org.springframework.

2020-10-24 23:40:19 162

原创 单例模式(多线程下最佳方案)

public class Singleton { //volatile防止指令重排序(理想状态是 内存分配  初始化 返回对象引用) //保证不会出现内存分配、返回对象引用、初始化这样的顺序(因为前两步骤就能使得对象!=null,其他线程拿到错误的对象) private volatile static Singleton singleton; public static Singleton getInstance(){ if(singleton==

2020-10-16 11:38:37 219 2

原创 springboot中redis使用一条龙

redis使用 <!--redis--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <dependency> <groupId>org.red

2020-10-13 11:10:10 396 4

原创 认证服务器搭建(jwt)

认证服务器搭建(jwt)思路一、认证服务端创建配置类继承AuthorizationServerConfigurerAdapter(授权服务器配置器适配器)重写三个方法第一个主要是api的配置认证,校验令牌,对所有服务器的访问的权限设置@Override public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { super.configure(secur

2020-10-10 17:56:12 1127

原创 jdk1.8新特性(lambda)

一、条件:必须有接口,有且仅有一个抽象方法:函数式接口@FunctionalInterface:标记是否为函数式接口二、接口类型1.comsumer接口(消费接口)对应的方法是acceptvoid accept( T);有参无返回值Consumer<String> consumer = s-> System.out.println(s);consumer.accept("传入消费的数据");eg:forEach(s-> System.out.println(s))

2020-10-10 16:26:56 165 1

原创 模板方法模式(前置过滤器实例)

模板方法模式一、简述主要是自己创建一个抽象类,让这个抽象类实现一个接口或抽象接口,重写接口或抽象类中的一部分方法(这一部分方法可能是不怎么使用的或者实现基本确定),这样我们使用的时候直接创建类继承我们创建的抽象类,然后再重写我们需要自定义的方法二、项目使用(zuul中使用过滤器)因为做登录认证的时候,在zuul中需要使用前置过滤器,如果直接继承ZuulFilter抽象类,会重写四个方法指定过滤器的类型,前置还是后置public String filterType()设置过滤器执行时间publ

2020-09-29 17:36:00 185 1

原创 Spring的bean生命周期

spring中bean的生命周期一、单实例和多实例:1、创建单实例:在容器启动的时候创建对象多实例:在每次获取的时候创建对象2、初始化对象创建完成,并赋值好,调用初始化方法3、销毁单实例:容器关闭的时候多实例:容器不会管理这个bean,容器不会调用销毁方法;二、自定义1、指定初始化和销毁方法@Configurationpublic class MainConfigOfLifeCycle { @Bean(initMethod = "init",destroyMethod

2020-09-28 18:44:34 105 2

原创 两个线程交替打印3次(每次运行5次)

public class MyThread { public static void main(String[] args) { final Bus bus=new Bus(); new Thread(()->{ for (int i = 0; i < 3; i++) { bus.subMethod(); } },"子线程").start(); /

2020-09-23 19:05:54 297

原创 时间类LocalDateTime

时间类LocalDateTimenow() 从指定的时钟获取当前的日期时间。 of(int year, int month, int dayOfMonth, int hour, int minute) 从年,月,日,小时和分钟获得 LocalDateTime的实例,将第二和纳秒设置为零。 getYear() 获取年份字段。 getDayOfMonth() 获取月份字段。getMinute() 获取小时字段。。。。。。。格式化时间 public static void

2020-09-22 19:50:47 195

原创 redis 安装(linux未用docker)

redis安装(未用docker)一、安装步骤:cd /usr/local yum install wget –ywget http://download.redis.io/releases/redis-4.0.8.tar.gztar xzvf redis-4.0.8.tar.gzcd redis-4.0.8makecd srcyum -y install gcc gcc-c++ libstdc++-devel make MALLOC=libcmake instal

2020-09-18 00:51:30 63

原创 redis缓存雪崩,缓存穿透等(全)

Redis一、缓存穿透1、概念:主要是大量请求数据时发现redis中没有数据,于是大量请求直达mysql数据库,mysql并发承受很低一般在2000左右,所以可能导致数据库扛不住2、解决方法:方法一 :(没查到的也存起来)将访问的空值也存储起来,当访问redis和数据库都没有数据时,将空的也存储起来,然后设置过期时间(一般10分钟以内),这样在过期时间以内请求都不会直达数据库代码实现: @Override public ResultCommon getById(long id) {

2020-09-18 00:04:22 93 1

原创 分布式中id解决方案(含雪花算法)

分布式id解决方案一、从mysql本身出发专门用一张表记录最后一次的idselect last_insert_id()每个mysql的库中自增的值不一样A库 从0开始每次增加2B库 从1开始每次增加2同2相似A库 从1开始每次增加1B库 从100万开始每次增加1二、通过生成的UUID存值String s = UUID.randomUUID().toString();数字生成为32位,浪费资源;且生成的值没有规律,不好储存取值三、使用redis于redis生成全

2020-09-14 14:53:55 377 2

原创 Nginx(1、反向代理)

Nginx一、概念主要是 访问普通的服务器(TomCat),当存在高并发访问时(大量访问),tomcat承受不住(1-200左右的人算完美),这时就不能用Tomcat作为直接访问的路径,所以就引进了Nginx服务器,据统计大约能承受50000次并发请求,然后通过 分配给Tomcat(tomcat集群)二、反向代理2.1、概念客户访问的最终是tomcat请求里面的服务器,但是访问Nginx服务器就能可到数据,客户端没有配置Nginx(配置了就属于正向代理),就是用了反向代理,这里可以看成(Ng

2020-09-12 17:15:46 90 1

原创 Nginx(2、负载均衡)

负载均衡一、概念将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。这样服务器压力就减少了二、宏观图以600个访问为例,如果不采用负载均衡的话,同时访问一个服务器就会导致服务器宕机,所以均衡分配到3个服务器上,每个只承受200访问量,完美运行,这就达到了负载均衡的目的...

2020-09-12 17:13:08 90

原创 多线程高级进阶

多线程一、volatilejmm存储三大特性可见性,有序性,原子性volatile 解决了可见性和有序性package com.thread.study.volatiles;/** * @ClassName * @Description TODO * @Author ZQS * @Date 2020/9/8 0008 16:22 * @Version 1.0 **/public class Singleton { private static Singleton

2020-09-11 15:11:34 154 1

原创 CompletableFuture(异步编程详解)

CompletableFuture一、runAsync1.1、runAsunc(一个Runnable接口)package com.thread.study.jdksyn;import java.util.concurrent.*;/** * @ClassName * @Description TODO * @Author ZQS * @Date 2020/9/9 0009 14:29 * @Version 1.0 **/public class CompletableFuture

2020-09-09 19:01:30 693

原创 Quartz定时体系

quartz框架一、 简单介绍quartz主要是一个做定时任务的框架,主要是由监听器和插件来完成工作二、使用2.1、依赖因为在springboot集成了quartz所需依赖,所以不需要导入以下依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1<

2020-09-07 17:21:04 126

原创 springboot异步编程

异步编程一、异步编程的理解参考文档:https://blog.51cto.com/stevex/1284437二、实现步骤1、开启异步编程支持在启动类加上下面注解,表示整个项目都可使用,也可以在单独的类上面加,表示只有该类支持@EnableAsync2、在service层编写业务时,方法上加 @Async注解package com.hm.sringboot.service;import com.hm.sringboot.pojo.User1;import lombok.exter

2020-09-05 17:18:56 241

原创 springboot日志(Logback)配置

创建logback-spring.xml文件<?xml version="1.0" encoding="UTF-8"?><!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --><!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --><!-- scanPerio

2020-09-05 15:04:43 114

原创 springboot热部署及原理

一、作用防止改变一个模块中的数据,使得所有模块都编译造成启动变得很慢二、实现步骤1、导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</option

2020-09-05 14:38:50 227

原创 springboot 使用时注意点

1、配置文件中不能用username作为前缀这样会以定义的@Author 的值为username**2、properties文件乱解决spring.banner.charset=UTF-8server.tomcat.uri-encoding=UTF-8server.servlet.encoding.charset=UTF-8server.servlet.encoding.enabled=trueserver.servlet.encoding.force=truespring.mess

2020-09-05 14:18:19 193

原创 springboot(使用druid)

springboot中使用druid一、导入依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter&lt

2020-09-02 11:11:08 665

原创 swagger注释使用(基于springboot框架)

swagger注释使用一、导入swagger所需依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>

2020-09-01 23:42:57 595

原创 springboot整合(过滤器、拦截器、切面编程)

一、springboot整合过滤器1.1、创建过滤器filter(实现Filter接口)这里用两个过滤器举例过滤器 1package com.zqs.springboot.filter;import javax.servlet.*;import java.io.IOException;/** * @ClassName * @Description TODO * @Author ZQS * @Date 2020/9/1 0001 18 * :58 * @Version 1.0

2020-09-01 20:17:46 229

原创 springboot文件上传(附工具类)

文件上传步骤1、配置file.properties文件(用来存储文件位置的前缀)upload.path=E://upload//2、读取配置文件package com.zqs.springboot.properties;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotati

2020-08-31 23:48:43 1302

原创 SpringBoot自定义线程池管理

自定义线程池一、是有线程池的优点1、使用线程池可以减少线程的创建和销毁,提高性能!!2、,每次启动线程,springboot都会从新创建一个线程,线程不重用,显然效率太低,这是因为spring boot自带线程池过于简单,所以在开发中,都会自己配置线程池的属性二、配置原理@Configurationpublic class AsyncPoolConfig implements AsyncConfigurer { //把这个方法的返回对象 交给spring ioc管理 @B

2020-08-31 22:57:19 1798 1

原创 Springboot邮箱发送(附多线程发送工具类)

Springboot邮箱发送一、导入所需依赖<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</ar

2020-08-31 19:32:06 359

原创 Mysql数据库的(难点剖析)

mysql数据库一、理解上的1、删除操作drop table xxxxtruncate table xxx三者区别(加上delete三个,这是考点需要掌握):drop:删除表所有数据与表的数据结构,也就是表之间不存在了(无法回滚)truncate: 会清空表中所有的数据,速度快,不可回滚;实质是删除整张表包括数据再重新创建表(一旦提交不可回滚)当然,涉及到删除数据delete语句也是删除数据,这儿就一起说了delete: 逐行删除数据,每步删除都是有日志记录的,可以回滚数据;实质是逐行删

2020-08-29 15:07:51 912

原创 责任链模式(springMvc放行资源实例)

责任链模式一、责任链模式1、定义:就是当http发送的请求有多个处理者的时候,(一般会挨个去找每个处理者看能不能处理,如果不能处理就找下一个处理者处理,一直到找到,如果没有最后都没找到就抛出异常),这时为了避免请求者和多个处理者的高度耦合,将所有的处理者练成一条线,每个处理者都会有下一个处理者的引用,这样就能连成一条线2、优点:降低了请求端与处理端对象的高度度耦合主要是请求端只需要将请求发送过来,可以不管处理端是怎样处理处理端能得到更好的扩展主要是处理端全部实现同一接口(该

2020-08-28 13:31:29 276

原创 Spring框架注解开发

Spring框架注解一、@Component 和@Value@Component : 给类生成对象,类注解,对象名默认是类名(首字母小写),也可以自己定义名字!例如:@Component(“p1”)@Value: 给对象的属性赋值将对象教给Spring管理@Data@NoArgsConstructor@AllArgsConstructor@Component("d1")public class Dog { @Value("小白") private String name

2020-08-26 00:24:13 146

原创 java自带的元注解

元注解一、@Target注解作用的位置(类、方法、字段……)1、@Target(ElementType.TYPE)主要是作用在类上面2、FIELD主要是作用在字段(也就是在对象属性上)3、METHOD主要作用在方法上面4、PARAMETER主要是作用在方法中参数的位置5、CONSTRUCTOR( constructor)主要是作用在构造函数上面6、LOCAL_VARIABLE (variable)主要作用在局部变量中7、ANNOTATIO

2020-08-26 00:23:36 85

原创 ArryList深度剖析

ArryList深度剖析一、底层数据结构1、增删改查增: 是先new一个新数组,然后将老的数组复制过去,在将新增内容填上删:也要new一个新数组,然后将数组中要删除的元素的索引位置移除改和查都不会new新数组2、是List的可变数组的实现二、继承实现关系2.1、实现Serializable接口可以序列化:将对象写到文件中可以反序列化:将文件中的对象信息读取出来2.2、实现Cloneable接口如果要实现clone方法必须有两个条件实现Cloneable的接口

2020-08-22 17:20:46 1027

原创 Spring使用和主要的对象注入

Spring单独使用一、依赖 <!--Spring的依赖--> <!--Spring的核心jar包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version

2020-08-22 15:17:30 134

转载 Spring的jar包作用

Spring各个jar包作用Spring各jar包详解spring.jar 是包含有完整发布模块的单个jar 包。但是不包括mock.jar,aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。spring-src.zip就是所有的源代码压缩包。除了spring.jar 文件,Spring 还包括有其它21 个独立的jar 包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar 包,而不必引入整个sprin

2020-08-22 14:13:10 435

原创 Mybatis框架配置使用

Mybatis配置一、poox.xml文件(依赖)<?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.org/POM/4.0.0 http

2020-08-22 09:57:01 107

原创 MybatisPlus框架配置

Mybatis-Plus框架一、依赖 <!-- 依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </de

2020-08-22 09:54:54 196

原创 Map集合_HashMap

HashMap高级特性一、简介无序键值都可以为空,但是只能有一个键为空1.1、jdk1.8版本前后1、在jdk1.8之前, 主要存储的方式是数组+链表的结构 ,数组作为主体。链表主要解决hash值冲突问题(两个对象在调用hashcode()方法计算出一个相同的hash值,导致数组的索引一样,这时就要用到链表存储)2、在调用构造方法时就会创建一个16长度的数组,Entry[]table 存储键值对数据在jdk1.8之后 ,引入了红黑树存储 (当链表长度超过阈值【或者红黑树的

2020-08-20 22:39:04 162

原创 List集合_LinkedList深度剖析

List集合_LinkedList一、链表底层是由链表组成Node节点是由两部分组成1、存储的数据2、Node下一个节点的地址(用来生成链表)Node元素不连续(因为生成的地址不连续)LinkedList存储的内容1、存储链表的长度(size)2、存储第一个节点的地址(First Node)删除元素1、是将上一个元素节点指向的地址变为下下一个节点的地址2、将删除的元素Node指向的地址设置为null(断节点)二、方法2.1、查找get( int index

2020-08-20 22:36:52 221

原创 Docker(命令、镜像、容器)

Docker常见的命令1、安装yum install docker2、查看安装后的版本docker -v3、启动dockerservice docker start4、停止dockerservice docker stop5、重启dockerservice docker restart6、查看docker状态service docker status7、开机启动chkconfig docker on8、查看docker概要信息docker info9、查看docker帮助

2020-08-18 23:32:27 127

Postman.zip

是一种网页调试与发送网页http请求的chrome插件。我们可以用来模拟get或者post或者其他方式的请求来调试接口。常见模拟场景有:get请求、post/k-v、post/json、添加cookie、添加header、上传文件。

2020-09-01

writeSpringMvc.zip

spingMvc的简单的构架,包含spring容器的创建,和注解的创建、对请求的分配 ,里面有一些值得优化的地方,包括对参数的匹配处理(req和resp)

2020-08-14

空空如也

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

TA关注的人

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