自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 创建型模式——前言

创建型设计模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。在这些模式中有两个不断出现的主旋律:它们都将关于该系统使用哪些具体的类的信息封装起来;它们隐藏了这些类的实例是如何被创建和放在一起的。

2023-01-05 22:45:04 58

原创 设计模式简单介绍

Christopher Alexander说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。”

2023-01-04 21:26:04 107

原创 设计模式之代理模式

代理模式代理模式(Proxy Pattern)给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,也就是说,代理对象在客户端和目标对象之间起到中介作用,我们在访问实际对象时,是通过代理对象访问的。代理模式属于结构型设计模式,使用代理模式主要有两个目的:意识保护目标对象,二是增强目标对象。代理模式的实现主要有两种:静态代理和动态代理。一、静态代理静态代理,在程序编译时各个接口、被代理类、代理类等已经确定下来,在程序运行之前就已经生成了代理类的.class文件。静态代理的实现:假设一个

2021-04-27 15:50:21 86

原创 设计模式之工厂模式

工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式的实现有三种:简单工厂模式、工厂方法模式、抽象工厂模式一、简单工厂模式简单工厂模式不属于GoF的23种设计模式。简单工厂模式是指由一个工厂对象决定创建哪一种产品类的实例,适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参

2021-04-27 12:04:06 73

原创 设计模式之单例模式

设计模式单例模式单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。其特点是:单例类只能有一个实例;单例类必须由自己来创建自己的实例;单例类必须向外部提供实例访问接口。单例模式可以保证内存里只有一个实例,减少了内存的开销,还可以避免对资源的多重占用。实现单例模式的方式主要有三种:饿汉式单例模式、懒汉式单例模式、注册式单例模式。一、饿汉式单例模式饿汉式单例模式在类加载的时候就会立即初始化并创建唯一实例对象,它是线程安全的,因

2021-04-27 09:48:18 77

原创 MySQL引擎

MySQL引擎对于什么是数据库引擎我并没有找到一个很好的定义,所以这里给一个百度百科上的定义:数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。这包括创建用于存储数据的表和用于查看、管理和保护数据安全的数据库对象(如索引、视图和存储过程)。在MySQL中常见的数据库引擎有两种:MyISAM和InnoDB,默认使用的是InnoDB。这两

2021-04-02 23:03:44 71

原创 MySQL索引

MySQL索引一、索引及其优缺点索引是一种特殊的文件,也是一种数据结构。类似于字典中的目录,我们可以根据字典的目录来快速定位到某个字在字典中的位置。索引就相当于是表的目录,根据索引可以快速查询到所需要的记录。索引的优点:使用索引最重要的原因是加快检索速度;(还有跟查询优化器有关,但是我不知道这是个什么东西)索引的缺点:创建和维护索引需要耗费额外的空间和时间,尤其使在进行增删改的时候需要对索引进行维护,这是一个开销比较大的操作。二、索引的数据结构(写在前面,这部分写的不是很好,望见谅)在MyS

2021-04-02 16:03:19 73

原创 MySQL锁机制

MySQL锁机制锁是什么?或者说为什么需要锁?当多个事务并发访问数据库的时候,为了保证数据的一致性,就需要一些机制来保证事务的访问次序,以防止造成数据不一致的问题,锁就是这样的一个机制。一、MySQL中锁的分类MySQL中的锁有这几种(锁的划分):按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实现)按照锁的粒度划分:行级锁、表级锁、页级锁按照思想来划分:悲观锁、乐观锁InnoDB中的行锁类型:Record Lock、Gap Lock、Next-key LockRecord Lock:记

2021-04-01 19:17:37 69

原创 MySQL事务

MySQL事务一、什么是数据库事务事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。一个经典的例子:银行转账A给B转账500元,那么A的账户就要减少500元,B的账户就要增加500,这两个操作是要么都执行成功,要么都执行失败,不能够存在A的账户减少了而B的账户没增加这样的情况。二、事务的四大特性(ACID原则)MySQL的事务要遵循ACID原则(好像关系型数据库都

2021-04-01 11:14:38 70

原创 Redis缓存雪崩、缓存击穿、缓存穿透

Redis缓存雪崩、缓存击穿、缓存穿透一、缓存雪崩现象:缓存中的key都设置了相同的过期时间,那么就会在某一时间点所有缓存的key同时失效,在这个时候又有大量的请求打进来的时候,就会导致这些请求全部打在了数据库上,造成数据库崩溃了,这就是缓存雪崩。还有一种缓存雪崩的情况就是Redis服务器突然发生宕机等意外情况,导致大量的请求打在数据库上造成缓存雪崩。解决:Redis高可用,其实就是搭建Redis集群,当一台Redis服务器挂掉之后还有另外的服务器可以用;限流降级,在缓存失效后,通过加锁或者

2021-03-31 20:35:41 57

原创 Redis主从复制与哨兵模式

Redis主从复制与哨兵模式一、主从复制简单来说,主从复制就是将一台Redis服务器中的数据单向复制到其他的Redis服务器中,注意是单向的。其中前者称为主机Master,后者称为从机Slave,一般来说,写操作是在主机Master上完成,读操作是在从机Slave上完成,从而实现读写分离。主从复制的作用主要有以下几点:数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。负载均衡:

2021-03-31 18:56:44 167 1

原创 Redis发布订阅

Redis发布订阅Redis提供了简单的发布订阅功能,使用起来也非常简单。所谓发布订阅就是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis客户端可以订阅任意数量的频道。下面是一个简单的发布订阅模型:客户端client2、client5、client1订阅了channel:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:Redis中提供的发布订阅的命令有下面几个:PSUBSCRIBE patte

2021-03-31 12:16:28 52

原创 Redis持久化

Redis持久化Redis是基于内存操作的数据库,当服务器进程停止或者遭遇宕机等意外情况,内存中的数据就会全部清空,为了应对这样的情况,Redis提供了持久化机制。在Redis中提供了两种持久化机制:RDB和AOF一、Redis持久化之RDB(Redis DataBase)RDB持久化是将当前Redis中的全部数据生成快照保存到硬盘上,生成的文件是以.rdb结尾的文件。RDB持久化可以通过命令来手动持久化,也可以通过配置文件来配置自动持久化(一般来说都是自动持久化的)。通过命令手动持久化Redi

2021-03-30 23:55:59 66

原创 Redis事务和乐观锁

Redis事务和乐观锁一、Redis的事务如果学过MySQL就知道MySQL的事务需要遵循ACID原则,其中A就表示原子性,意思就是一个事务中的所有操作要么都执行成功,要么都不执行,不存在部分执行部位未执行的情况。但是在Redis中,Redis的单条命令是保证原子性的,但是事务不保证原子性!并且没有隔离级别的概念!Redis事务的本质:简单来说Redis的事务就是一组命令的集合,它把一组命令放入到一个队列中,并没有立即执行。在发起执行命令(exec)才会按顺序执行,并且在执行的过程中,不会收到其他请

2021-03-30 15:58:12 103

原创 Redis是单线程的,并且效率非常高

Redis是单线程的,并且效率非常高一、首先我们来解决Redis为什么这么快Redis是基于内存的采用的是单进程单线程的非关系型kv数据库,底层是由C语言编写的,官方给出的性能测试结果是可以达到10w+QPS。Redis效率非常高的原因有下面几点:Redis是完全基于内存的。众所周知,在内存中读写数据是非常快的,而Redis的绝大部分操作基本上都是基于内存的操作;Redis是单线程,没有多线程间的上下文切换和线程调度等问题,也没有各种锁的问题,多线程之间保证同步是时分耗时的操作,但是由于Redi

2021-03-30 14:26:51 330

原创 springboot2.x 设置允许跨域请求

springboot2.x 设置允许跨域请求最近使用axios请求的时候出现了跨域请求被拦截的问题,如下图:找了一些解决方法,总结一下主要有两种解决方法。1.配置cors配置类,也可以说是cors过滤器,这是设置全局请求都允许跨域package com.zzdreamz.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configur

2020-11-17 12:40:54 371

空空如也

空空如也

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

TA关注的人

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