自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 静态代理模式

静态代理模式就是在不改变原有的情况,增加代码的功能,比如房东想要出租房子,原来的做法,房东在网上发布租房信息,然后带客户看房在收取租金,什么事情都要让房东一个人去干才行。有个中介机构,就把发布租房信息,带客户看房,签订合同都给中介,房东就负责收取租金。定义一个房东类实现接口。

2023-07-09 18:27:45 116

原创 多线程入门

CPU的中文名称是中央处理器,是进行逻辑运算用的,主要由运算器、控制器、寄存器三部分组成,从字面意思看就是运算就是起着运算的作用,控制器就是负责发出cpu每条指令所需要的信息,寄存器就是保存运算或者指令的一些临时文件,这样可以保证更高的速度。也就是我们的线程运行在cpu之上。进程是资源分配最小单位,线程是程序执行的最小单位。计算机在执行程序时,会为程序创建相应的进程,进行资源分配时,是以进程为单位进行相应的分配。每个进程都有相应的线程,在执行程序时,实际上是执行相应的一系列线程。

2023-07-07 16:11:47 120

原创 SpringBoot整合抽象工厂

先说一下简单工厂,简单工厂是一个工厂类创建多个实例,工厂方法是一个抽象工厂有多个实例工厂,每个实例工厂创建一个类的实例,而抽象工厂是一个抽象工厂有多个子类实例工厂,每个实例工厂创建一组实例,什么叫一组实例,这个和简单工厂有区别,简单工厂是针对同一类型的,比如说发消息,短信发送,boss发送一类的,而抽象工厂是要生成一组,比如是家具制造商,要生成出沙发、饭桌、板凳、椅子,抽象工厂就是生成出这一组家具出来。

2023-06-30 08:30:47 471

原创 SpringBoot之工厂方法模式

我们先来说一下简单工厂,简单工厂是一个工厂类创建多个实例对象,比如我们新增一个实例对象,工厂类就需要改变源代码,这违背了开闭原则。抽象工厂就是用来解决这个问题的,我们用多个工厂创建不同的实例,怎么理解呢,就好比我要发送信息,发送kafka、企业微信的信息,我们就用两个工厂类来创建kafka和企业微信的对象,这样就是不同的工厂类创建不同的实例对象,我要扩展的时候不会修改源代码了。

2023-06-29 16:47:43 684

原创 SpringBoot整合策略模式

以前我们写代码的时候会经常用到if esle if,比如要判断十多种类型,每个类型都要使用if else if来判断,判断里面又有写大量的逻辑,代码耦合性太高,不利于后期拓展。策略模式就是解决这个问题的,讲每个判断逻辑单独抽取出来,通过类型直接去执行这个逻辑的代码块。

2023-06-29 16:04:37 222

原创 SpringBoot整合简单工厂模式

什么是简单工厂模式,比如我有一个消息发送的功能,分为kafka消息发送、邮件发送、企业微信发送、boss发送,传统方式是if else做法,但是这要做太不利于扩展了,比我后期我加了其他的短信发送只能不断的if else。1、在我们的开发当中,现在基本上都是使用springboot框架了,简单工厂自然要整合springboot注解开发。4、抽象产品角色OrderService:定义子类的公共方法,可以是接口或者抽象类,也是子类的公共父类。2、定义三个角色:工厂类、抽象产品角色、具体产品角色。

2023-06-29 07:51:51 388

原创 模拟LinkedList链表

LikindList底层是一个双向链表,什么是双向链表,在内存中不是紧密相连的关系,而是分散开来的,看下图,链表分为首节点和尾节点以及中间节点,节点是怎么关联的是通过双向指针,也就是上一个节点指向下一个节点,下一个节点又指向上一个节点,链表如果只有一个节点,这个节点没有指针,即是首节点又是尾结点,如果是多个,就是属于上一个指向下一个,下一个指向上一个,尾结点只能指向上一个,不会指向下一个。把节点理解成一个对象,属性分为,上一个元素的地址、当前存入的元素、下一个元素的地址。

2023-06-28 22:29:33 38

原创 ArrayList源码

先介绍一下什么是数组,也可以叫紧密结构,在内存中数据是紧密相连的,下面图中就是数组,因为有下标,直接通过下标拿到值,增删改非常慢,比如说我删除数组一个元素,整个数组的结构会发生改变,比如删除下图中下标为2的数据,下标3和4就要往前面移动了。进入到ensureCapacityInternal方法,上面的size加了一个1,所以minCapacity传进来的就是一个1了,elementData依旧是一个空数组了。进入grow,ArrayList的扩容长度默认为10,这就是为什么为10的原因了。

2023-06-28 22:01:16 69

原创 SpringBoot自动配置原理

的标签来扫描类,在springboot里面为什么不用加标签扫描默认就可以扫描,就是使用了 这个@ComponentScan 注解默认扫描, @SpringBootApplication这个启动类在那个包路径下就扫描那个包的路径,excludeFilters这个属性就是排除不扫码那些类的。进入BasePackages类,只有一个BasePackages方法,就是用来返回配置类所在的包,提供给Spring内部使用,比如给SpringDataJPA,需要这个路径去扫码项目的pojo。

2023-06-25 21:52:37 46 1

原创 Centos7服务器安装tomcat8

centos7安装tomcat8

2022-07-23 20:19:36 281 1

原创 阿里云centos8安装nginx

安装gccyum install gcc-c++安装PCRE pcre-develyum install -y pcre pcre-devel安装zlibyum install -y zlib zlib-devel安装Open SSLyum install -y openssl openssl-devel下载nginxwget http://nginx.org/download/nginx-1.17.6.tar.gz解压nginxtar -zxvf nginx-1.17.6

2022-01-28 10:47:45 210

原创 阿里云centos8安装jenkins部署springboot项目

安装jenkins之前,前提是需要安装好jdk1.8、maven、git阿里云centos8安装jdk1.8:https://blog.csdn.net/weixin_44088051/article/details/115714452阿里云centos8安装maven:https://blog.csdn.net/weixin_44088051/article/details/115721746阿里云centos8安装Git:https://editor.csdn.net/md/?articleId=

2022-01-27 11:32:38 267

原创 阿里云centos8安装Git

进入到cd /usr/localcd /usr/local下载gitwget https://www.kernel.org/pub/software/scm/git/git-2.31.0.tar.gz解压安装包tar -zxvf git-2.31.0.tar.gz安装依赖yum -y install gcc openssl openssl-devel curl curl-devel unzip perl perl-devel expat expat-devel zlib zlib-dev

2022-01-25 11:13:07 326

原创 阿里云安装Zookeeper3.5.8

zookeeper百度网盘链接:https://pan.baidu.com/s/1ksRIg6uCj8lKATYlLrP8Pg提取码:l74m解压zookeepertar -zxvf apache-zookeeper-3.5.8-bin从命名mv apache-zookeeper-3.5.8-bin/ zookeeper-3.5.8修改配置cd /usr/local/zookeeper-3.5.8/conf/cp zoo_sample.cfg zoo.cfg#编辑,修改dataDir

2022-01-18 15:12:24 227

原创 idea如何开启Run DashBoard

在workspace.xml加入以下代码<component name="RunDashboard"> <option name="ruleStates"> <list> <RuleState> <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> </RuleState>

2021-12-23 19:09:00 134

原创 Mysql执行计划Explain与索引优化

explain中的列1. id列id列的编号是 select 的序列号,有几个 select 就有几个id,id的执行顺序,如果id不相同从大到小,如果相同,就从上往下,下图就是一个id不同,按照id大小来执行的2. select_type列select_type 表示对应行是简单还是复杂的查询。(1)、simple:简单查询。查询不包含子查询和unionexplain select * from film where id = 2;(2)、primary:复杂查询中最外层的 selec

2021-12-17 14:50:08 579 1

原创 Mysql索引底层原理

一、什么是索引1.1、索引是帮助MySQL高效获取数据的排好序的数据结构1.2、我们为什么需要使用索引,我们看下图是一张数据库表,最左边的每条数据的物理地址,Col1和Col2是字段,如果我们查找Clo2=89,没有任何索引优化的情况,我们就需要在磁盘里一条一条的读取出来去内存比较那条数据是82,不要认为这些数据都在磁盘上相互紧密一起的,举个例子,今天你在A表插入了一条数据,连续几天都在B表、C表插入数据,又在A表插入第二条数据,现在肯定不是紧密相连的了,都在磁盘上分散存储的,这种情况我一条一条的从磁盘

2021-12-15 11:17:45 2746

原创 docker打包springboot项目

首先创建一个简单的springboot项目,项目结构如下使用mvn clean package打包springboot重点在Dockerfile这个配置文件# 基础镜像使用javaFROM java:8# 作者MAINTAINER wangdapeng# VOLUME 指定了临时文件目录为/tmp。# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmpVOLUME /tmp# 将jar包添加到容器中并更名为mayikt.jarADD wd

2021-12-06 12:20:44 571

原创 SpringBoot整合RabbitMQ延迟队列

一、什么是延迟队列即消息进入延迟队列后,不会立即消费,会到达指定时间之后在消费。应用场景:用户下单后半个小时,需要判断订单是否支付金额,没有支付就取消订单新用户注册七天后,需要发送短信问候二、延迟队列的实现延迟队列是由TTL+DLX(死信交换机)一起组成实现的。TTL是设置队列消息的过期时间,有两种设置方式:方式1:设置整个队列的过期时间,整个队列都统一过期时间,设置参数x-message-ttl,单位ms(毫秒)。方式2:对单个消息设置过期时间,设置参数expiration,单位ms(毫

2021-11-16 11:17:11 2077

原创 SpringBoot整合RabbitMQ

一、SpringBoot整合RabbitMQ的五种工作模式五种工作模式的作用场景这里就不一一叙述了,可以参考上一篇RabbitMQ入门与五种工作模式,链接地址:https://blog.csdn.net/weixin_44088051/article/details/121160214项目结构:在pom.xml加入 <dependencies> <dependency> <groupId>org.springframew

2021-11-15 15:11:56 298

原创 RabbitMQ入门与五种工作模式

一、MQ 的基本概念1.1 MQ概述MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息进行持久化的容器。多用于分布式系统之间进行通信,比如在分布式系统中,多个项目就可以使用MQ来进行通信,A项目的数据发送MQ容器中,B项目在通过MQ容器拿到消息1.2 应用解耦上图可以看出库存、支付、物流、都依赖于订单系统,如果库存系统挂了势必会影响订单系统,如果订单系统也挂了,库存、支付、物流都会挂掉,如果我增加一个X系统也依赖于订单系统,也会挂掉,耦合性太高了,下面我们用MQ来解耦

2021-11-05 14:26:44 2150

原创 SpringSecurity入门案例

此文是模仿尚硅谷所教的笔记视频链接:https://www.bilibili.com/video/BV15a411A7kP?p=2&spm_id_from=pageDriver1. SpringSecurity 框架简介1.1 概要Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。正如你可能知道的关于安全方面的

2021-08-13 13:47:15 499 1

原创 Centos7安装RabbitMQ3.8.8

一、RabbitMQ3.8.8的下载1.1、下载对应的erlang,可参考https://www.rabbitmq.com/which-erlang.html1.2、下载erlang安装包:https://github.com/rabbitmq/erlang-rpm/releases1.3下载、https://github.com/rabbitmq/rabbitmq-server/tags选择tags下载二、安装RabbitMQ2.1、创建rabbitmq mkdir rabbit

2021-07-31 21:45:41 526 1

原创 JAVA基础多线程核心API与Lock锁使用

join方法调用了join方法会先执行另外一个线程,在等待的过程中释放对象锁,底层是基于wait()方法封装的。三个线程 T1,T2,T3,怎么确保它们按顺序执行?创建Thread01类,包名:com.wdp.thread02.testpackage com.wdp.thread02.test;public class Thread01 { public static void main(String[] args) { Thread t1 = new Thread(()

2021-06-14 13:16:34 1261 1

原创 JDK8新特性lambda与stream

Java8新特性开始之前先建立一个maven项目接口中默认方法修饰为普通方法在jdk8之前,interface之中可以定义变量何方法,变量必须是public、static、final的,方法必须是public、abstract的,由于这些修饰符都说默认的。接口定义方法:public抽象方法需要子类实现接口定义变量:public、static、final在JDK1.8开始支持使用static何default修饰可以写方法体,不需要子类重写。方法:普通方法 可以有方法体抽象方法 没有方法体

2021-05-02 23:28:10 283

原创 阿里云centos8安装Redis

1、安装gcc依赖由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 yum install -y gcc 2、下载并解压安装包(1)、创建/usr/local/softmkdir /usr/local/soft(2)、soft目录下载rediswget http://download.redis.io/releases/redis-5.0.3.tar.gz(3)、解压redistar -zxvf redi

2021-04-17 17:36:40 692

原创 阿里云centos8安装mysql5.7.26

启动: service mysql start关闭: service mysql stop状态: service mysql status

2021-04-16 21:37:29 233

原创 阿里云centos8安装maven

1、使用Xshell7连接阿里云服务器2、进入maven官网http://maven.apache.org/download.cgi下载安装包上图箭头里面就是maven的版本号下面在找到3.6.1点binaries点击第一个下载3、使用xftp6上传到 /usr/local/java的目录4、解压maven安装包tar -zxvf maven安装包名称5、配置环境变量使用vim /etc/profile进入配置环境变量vim /etc/profile在最后加入下面两句

2021-04-15 14:00:46 570

原创 阿里云centos8安装jdk1.8

1、首先通过Xshell7连接阿里云服务器的地址2、创建安装目录mkdir /usr/local/java/3、使用Xftp 6上传linux版本的jdk1.84、进入安装目录进行解压cd /usr/local/javatar -zxvf jdk-8u221-linux-x64.tar.gz 5、设置环境变量vim /etc/profile在末尾添加export JAVA_HOME=/usr/local/java/jdk1.8.0_221export JRE_HOME=${J

2021-04-15 06:59:10 200

原创 dockerFile的含义

DockerFile 解析docker 安装tomcat 案例1、首先需要一个镜像文件,tomcat 镜像文件2、镜像文件 如何组成的镜像文件就是由Dockerfile组成的1.Dockerfile---- 依赖下载镜像 环境配置封装;比如下载tomcat的镜像文件,jdk的环境配置这些2.Dockerfile文件打包成一个镜像文件;3.使用容器运行镜像文件;1.需要手动的编写一个dockerfile镜像文件,在该镜像文件中有描述环境配置等。2.在需要将dockerfile文件 dock

2021-03-08 21:20:52 139

原创 Docker入门

Docker简介与概述1.Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。2. Docker的主要目标是‘build ,ship and run any app,anywhere’,也就是说通过对应用程序组件的封装,分发,部署,运行等生命周期的管理。使用户的app(可以是一个web应用程序或者数据库应用等)及其运

2021-03-03 21:27:21 117

空空如也

空空如也

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

TA关注的人

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