自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java事务认识整理(更新中)

一、什么是事务       事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。二、事务的传播1. 不使用事务(1)创建StuService 类@Servicepublic class StuServiceImpl implements StuService { @Autowired private StuMapper stuMapp

2021-09-27 08:07:31 1251

原创 认识RabbitMQ

一、RabbitMQ工作模式1.Work queue工作队列模式      多个消费端共同消费同一个队列中的消息。应用场景:      对于任务过重或任务较多情况使用工作队列可以提高任务处理的速度。...

2021-06-06 14:39:25 163

原创 数据结构与算法(二)——高级排序

前言      在上一篇简单排序中,包括冒泡排序,还有选择排序,插入排序等,并且对它们在最坏情况下的时间复杂度做了分析,发现都是n的平方,而平方阶通过算法分析我们知道,随着输入规模的增大,时间成本将急剧上升,所以这些基本排序方法不能处理更大规模的问题,接下来我们学习一些高级的排序算法,争取降低算法的时间复杂度最高阶次幂。一、希尔排序      希尔排序是插入排序的一种,又称“缩小增量

2020-08-18 21:27:54 299

原创 数据结构与算法(一)——简单排序

一、冒泡排序二、选择排序1.需求      排序前:{4,6,8,7,9,2,10,1}      排序后:{1,2,4,5,7,8,9,10}2.排序原理      (1)每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某个索引的值,则假定其他某个索引处的

2020-08-16 00:07:32 205

原创 MySQL(四)——MySQL锁机制

一、概述1、定义      锁是计算机协调多个进程或线程并发访问某一资源的机制。      在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。2、锁的分类(

2020-08-04 00:31:20 110

原创 MySQL(三)——慢查询日志

一、是什么MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。由它来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合之前explain进行全面分析。二、怎么玩1.说明默认情况下,MySQL数据库没有开启慢查询日志

2020-08-02 19:19:40 282

原创 MySQL(二)——查询优化

一、exists和in(1)当B表的数据集小于A表的数据集时,用in优于exists      SELECT * from A WHERE id in (SELECT id from B)等价于:      for select id from B      for select * from A where A.id

2020-08-02 16:18:31 124

原创 MySQL(一)——索引

一、索引简介1.是什么      MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构。(可以得到索引的本质:索引是数据结构)。      数据库本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。   &nbs

2020-08-01 17:22:33 123

原创 设计模式(二十三)——责任链模式

一、责任链模式介绍责任链模式基本介绍1)职责链模式(Chain of Responsibility Pattern),又叫责任链模式,为请求创建了一个接收者对象的链(简单示意图)。这种模式对请求的发送者和接收者进行解耦。2)职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。3)这种设计模式属于行为型模式。4)职责链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这

2020-07-23 20:51:17 227 1

原创 设计模式(二十二)——策略模式

一、策略模式介绍一、策略模式应用

2020-07-22 23:44:31 112

原创 设计模式(二十一)——状态模式

一、状态模式介绍状态模式基本介绍1)状态模式(State Pattern):它主要用来解决对象再多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一 一对应的,状态之间可以相互转换。2)当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。状态模式的原理类图      对原理类图的说明-即(状态模式的角色及职责)1)Context类为环境角色,用于维护ConcreteState实例,这个实例定义当前状态。

2020-07-22 07:53:40 101

原创 设计模式(二十)——解释器模式

一、解释器模式介绍二、解释器模式应用

2020-07-21 00:50:58 99

原创 设计模式(十九)——备忘录模式

一、备忘录模式介绍备忘录模式基本介绍1)备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。2)可以这样理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作。3)备忘录模式属于行为型

2020-07-19 17:09:38 82

原创 设计模式(十八)——中介者模式

一、中介者模式介绍中介者模式基本介绍1)中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间地交互。2)中介者模式属于行为型模式,使代码易于维护。3)比如MVC模式,C(Controller)是M(Model模型)和V(View视图)的中介者,在前后端交互时就起到了中间人的作用。中介者模式类图      对原理类图的说明

2020-07-19 10:44:55 142

原创 设计模式(十七)——观察者模式

一、观察者模式介绍观察者模式:对象之间多对一的一种设计方案,被依赖的对象subject,依赖的对象为Observer,Subject通知Observer变化。观察者模式好处1)观察者模式设计后,会以集合的方式来管理用户,包括注册,移除和通知。2)增加观察查者,不需要去修改核心类,不会修改代码,遵循了OCP原则。二、观察者模式应用应用实例      天气预报项目需求,具体要求如下:1)气象站可以将每天测量的温度,湿度,气压等等以

2020-07-18 16:18:49 201

原创 设计模式(十六)——迭代器模式

一、迭代器模式介绍迭代器模式基本介绍1)迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式2)如果我们的集合元素是用不同的方式实现的,有数组,还有Java的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。3)迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。迭代器模式的原理类图  &nb

2020-07-18 12:09:17 118

原创 设计模式(十五)——访问者模式

一、访问者模式介绍访问者模式基本介绍1)访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。2)主要将数据结构于数据操作分离,解决数据结构和操作耦合性问题。3)访问者模式的基本工作原理:在被访问的类里面加一个对外提供接待访问者的接口。4)访问者模式主要应用场景:需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联),同时需要避免让这些操作“污染”这些对象的类,可以选用访问者模式解决。访问者

2020-07-17 07:55:27 95

原创 设计模式(十四)——命令模式

一、命令模式介绍基本介绍1)命令模式(Command Pattern):在软件设计中,我们经常需要向某些类发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计。2)命令模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。3)在命令模式中,会将一个请求封装为一个对象,以便使用不同参数来表示不同的请求(即命名),同时命令模式也支持可撤销的操作。4)通俗易懂的理解:将军发布

2020-07-16 20:51:31 159

原创 设计模式(十三)——模板方法模式

一、模板方法模式介绍二、模板方法模式应用应用实例      编写制作豆浆的程序,说明如下:制作豆浆的流程:选材—》添加配料—》浸泡—》放到豆浆机打碎通过添加不同的配料,可以制作出不同口味的豆浆选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的(红豆豆浆、花生豆浆。。。)类图代码...

2020-07-15 23:47:41 134

原创 设计模式(十二)——代理模式

一、代理模式介绍二、代理模式应用

2020-07-15 00:23:56 85

原创 设计模式(十一)——享元模式

一、享元模式介绍基本介绍1)享元模式也叫蝇量模式:运用共享技术有效地支持大量细粒度地对象;2)常用于系统底层开发,解决系统地性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个;3)享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需要总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率;4)享元模式经典的应用场景就是池技术了,String常量池、数据库连接池、缓冲

2020-07-13 07:53:25 112

原创 设计模式(十)——外观模式

一、外观模式介绍装饰者模式定义1)外观模式(Facade),也叫“过程模式”:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用;2)外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。外观模式注意事项外观模式对外屏蔽了子系统的细节,因此外观模式降低了客户端对子系统使用的复杂性;外观模式对客户端与子系统的耦合关系,让子系统内部的模块更易维护和扩展;通过合理的使用外

2020-07-12 16:32:33 132

原创 设计模式(九)——组合模式

一、组合模式介绍组合模式基本介绍1)组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示(“整体-部分”)的层次关系;2)组合模式依据树形结构来组合对象,用来表示部分以及整体层次;3)这种类型的设计模式属于结构型模式;4)组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的处理方式处理个别对象以及组合对象。组合模式的原理类图对原理结构图的说明-即(组合模式的角色及职责)Component:这是组合

2020-07-12 09:21:28 112

原创 设计模式(八)——装饰者模式

一、桥接模式介绍装饰者模式定义1)装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp);2)这里提到的动态的将新功能附加到对象和ocp原则。二、应用1.装饰模式应用实例      星巴克咖啡订单项目(咖啡馆):1)咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡);2)调料:Milk、Soy(

2020-07-08 08:38:42 89

原创 设计模式(七)——桥接模式

一、桥接模式介绍基本介绍1)桥接模式是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变;2)是一种结构型设计模式;3)Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。桥接模式原理类图原理类图说明:1)Client类:桥接模式的调用者;2)抽象类(Abstraction):维护Imple

2020-07-07 07:58:59 129

原创 设计模式(六)——适配器模式

一、类适配器模式介绍基本介绍1)适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。2)适配器模式属于结构型模式。3)主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。工作原理1)适配器模式:将一个类的接口转换成另一种接口,让原本接口不兼容的类可以兼容;2)从用户的角度看不到被适配者,是解耦的;3)用户调用适配器转化出来的目标接口方法,适配器

2020-07-06 21:37:21 101

原创 设计模式(六)——建造者模式

一、建造者模式介绍基本介绍建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式的四个角色1)Product(产品角色):一个具体的产品对象。2)Builder(抽象建造者):创建一个Product对象的各个部件指定的接

2020-07-05 17:25:35 86

原创 设计模式(五)——抽象工厂模式

一、抽象工厂模式基本介绍1)抽象工厂模式:定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类;2)抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合;3)从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象);4)将工厂抽象为两层,AbsFactory(抽象工厂)和具体实现的工厂子类。程序员可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂类变成了工厂簇,更利于代码的维护和扩展。二、应用类图代码1)抽象披萨类public

2020-07-03 08:16:33 124

原创 设计模式(四)——工厂方法模式

一、工厂方法模式介绍      工厂方法模式:定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。二、应用在简单工厂模式的应用上,用工厂方法模式进一步修改:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现。类图3. 代码1)抽象披萨类public abstract class Pizza { protected String name; //名字 /

2020-07-02 23:22:05 93

原创 设计模式(三)——简单工厂模式

一、基本介绍简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品的实例。简单工厂模式是工厂模式家族中最简单实用的模式。简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)。在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式。二、...

2020-07-02 20:56:35 89

原创 设计模式(二)——设计模式类型&单例模式

一、设计模式类型设计模式分为三种类型(共23种):      1)创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式;      2)结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式;      3)行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中

2020-07-01 07:24:51 136

原创 设计模式(一)——基本概念

一、设计模式的目的      软件编写过程中,程序员面临着来自耦合性、内聚性以及可维护性、可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好的代码重用性(即:相同功能的代码,不用多次编写);可读性(即:编程规范性,便于其他程序员的阅读和理解)可靠性(即:当需要增加新功能的时候,非常的方便,成为可维护)易扩展性(即:当我们增加新的功能后,对原来的功能没有影响)高内聚、低耦合二、设计模式七大原则单一职责

2020-06-30 07:11:34 270

原创 大厂面试必备(四)——Java线程内存模型(JMM)

一、什么是JMM    Java线程内存模型跟CPU缓存模型类型,是基于CPU缓存模型来建立的,Java线程内存模型是标准化的,屏蔽掉了底层不同计算机的区别。JMM数据原子操作read(读取):从主内存读取数据;load(载入):将主内存读取到的数据写入工作内存;use(使用):从工作内存读取数据来计算;assign(赋值):将计算好的值重新赋值到工作内存中;store(存储):将工作内存数据写入主内存;write(写入):将store过去的变量值

2020-06-14 10:15:48 507

原创 大厂面试必备(三)——JVM(Java虚拟机)

一、运行时数据区-帧栈详解    完整的Java虚拟机是由三部分组成的:类装载子系统、运行时数据区(内存模型)、字节码执行引擎。其中运行时数据区包含了堆、栈(线程)、本地方法栈、方法区(元空间)、程序计数器。    栈的主要作用是放各个线程的局部变量。那么栈是如何存放这些局部变量的,这就涉及到另一个词——栈帧。比如一个类有多个方法,当一个线程执行到一个方法的时候,虚拟机会马上给这个方法分配一个独立的一块内存区域(即栈帧),

2020-06-10 22:46:56 133

原创 虚拟机安装Centos7,ping不通百度

一、虚拟机网络配置    网络适配器选择桥接模式,不勾选复制物理网络连接状态。二、配置静态IP1、首先,查看宿主机的IP和网关2、配置静态ip的文件地址及修改命令如下:vi /etc/sysconfig/network-scripts/iifcfg-ens33文件修改及添加的内容如下BOOTPROTO=staticONBOOT=yesIPADDR=192.168.31.21(这个ip是设置的静态ip地址,ip不会再下次重启之后发生变化,前三

2020-06-10 01:09:30 4448 1

原创 安装mysql8.0,Navicat连接MySQL出现2059 authentication plugin caching_sha2_password

一、问题    mysql版本8安装后,直接用navicat去连接mysql数据库时报错:2059 - authentication plugin ‘caching_sha2_password’二、解决方法打开mysql 8.0 Command Line Client输入安装时设置的密码使用 MySql 数据库自带的命令行客户端工具登录数据库,输入use mysql输入:ALTER USER ‘root’@'localhost’IDENTIFIED WI

2020-06-08 22:19:06 233

原创 Kubernetes(k8s)入门(二)——k8s概述

一、 前期准备二、 集群安装

2020-06-05 08:05:37 202

原创 大厂面试必备(二)——数据库存储引擎

一、MYISAM存储引擎索引实现      存储引擎形容的是数据库还是形容表的?答案是表。      在mysql中,数据库的数据最终是存储在我们电脑指定的磁盘位置上,找到mysql对应的data文件夹。如果某张表的索引是MyISAM,通过查看data里面的文件我们可以看到,这张表大概有对用的三个文件:表名.frm、表名.MYD、表名.MYI。   &n

2020-06-02 22:58:41 160

原创 Docker入门(六)——Docker常用安装

一、总体步骤搜索镜像拉取镜像查看镜像启动镜像停止容器移除容器二、安装tomcatdocker hub上面查找tomcat镜像docker search tomcat从docker上拉取tomcat镜像到本地docker pull tomcatdocker images查看是否有拉取到的tomcatdocker images使用tomcat镜像创建容器(也叫运行镜像)docker run -it -p 8080:8080 tomcat -p 主机端

2020-05-31 13:43:48 657

原创 Docker入门(五)——DockerFile解析

一、是什么1、概念      Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。2、构建三步骤      (1)编写Dockerfile文件;(2)docker build;(3)docker run3、文件什么样      类似maven一样,我们可以去到网站:hub.dock

2020-05-31 00:57:44 163

空空如也

空空如也

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

TA关注的人

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