自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

缓存雪崩、击穿和穿透是 Redis 缓存中常见的问题,它们可能导致缓存系统不稳定,甚至影响后端数据库的性能。通过采取相应的预防措施,可以有效地避免这些问题的发生,提高系统的稳定性和性能。具体的方法包括分散失效时间、使用互斥锁、空值缓存、布隆过滤器等。正确配置和使用这些策略可以帮助构建更加健壮的 Redis 系统。

2024-09-15 18:27:49 313

原创 Redis的缓存淘汰策略

Redis 的内存淘汰策略是为了在内存资源有限的情况下,合理地管理和释放内存空间。通过选择合适的内存淘汰策略,可以有效地管理和优化 Redis 的内存使用,从而提高系统的整体性能和稳定性。正确配置和使用这些策略可以帮助构建更加健壮的 Redis 系统。

2024-09-15 17:56:54 456

原创 Redis集群

Redis 的主从复制(Replication)机制是一种常见的数据冗余方案,用于提高数据的可用性和容错能力。通过主从复制,可以将数据从一个 Redis 实例(称为“主节点”或“Master”)复制到一个或多个其他实例(称为“从节点”或“Slave”)。从节点可以用来处理读取请求,从而减轻主节点的压力,并且在主节点发生故障时,可以从节点中选择一个来替代主节点的角色,以确保服务的连续性。

2024-09-15 16:51:03 1159

原创 Redis的持久化方式

● RDB:快照式的持久化机制,适合需要快速备份和恢复的场景。● AOF:日志式的持久化机制,适合需要更高数据安全性的场景。根据应用场景的不同,可以选择适合的持久化机制,也可以结合使用两者来达到更好的效果。

2024-09-15 15:24:52 903

原创 Mysql日志

这是因为有一个线程只能同时有一个事务在执行的设定,所以每当执行一个 begin/start transaction 的时候,就会默认提交上一个事务,这样如果一个事务的 binlog 被拆开的时候,在备库执行就会被当做多个事务分段自行,这样破坏了原子性,是有问题的。事务执行过程中,先把日志写到 binlog cache(Server 层的 cache),事务提交的时候,再把 binlog cache 写到 binlog 文件中,并清空binlog cache。undo log 记录的是数据页的变化。

2024-09-13 14:06:39 1087

原创 Mysql事务

这种读取方式通常涉及到锁定机制(通过 next-key lock(记录锁+间隙锁)方式解决了幻读,以确保读取的数据在读取过程中不会被其他事务修改。当前读主要用于那些需要锁定数据的操作,如带有FOR UPDATE或LOCK IN SHARE MODE的SELECT查询,以及UPDATE和DELETE操作。快照读是指在读取数据时,读取的是某个事务开始时刻的数据库状态的一个快照。换句话说,快照读返回的是在读取操作开始时已经提交的数据版本,即整个事务过程中读取到的数据都是事务启动时的数据。记录中的两个隐藏列。

2024-09-10 11:59:59 984

原创 MySQL索引

1. B+Tree 索引2. Hash 索引3. Full-text 索引1. 聚簇索引(Clustered Index)2. 二级索引(Secondary Index)1. 主键索引(Primary Key Index)2. 唯一索引(Unique Index)3. 普通索引(Index)4. 前缀索引(Prefix Index)1. 单列索引(Single-column Index)2. 联合索引(Composite Index)使用InnoDB存储引擎的Mysql:

2024-09-08 11:23:34 1239

原创 MySQL的存储结构

InnoDB 是 MSQL默认的存储引擎,所以,本文主要以 InnoDB存储引擎来介绍MySQL 数据库的文件存放在 /var/lib/mysql/ 目录里面每创建一个目录就会多一个以数据库名为名称的文件夹,该文件夹中包括三类文件。

2024-09-06 07:09:57 1062

原创 数据库执行select语句的流程

MySQL 服务收到 SQL 语句后,就会解析出 SQL 语句的第一个字段,看看是什么类型的语句。如果 SQL是查询语句(select 语句),MySQL就会先去查询缓存(QueryCache)里查找缓存数据,看看之前有没有执行过这一条命令,这个査询缓存是以 key-value 形式保存在内存中的,key 为 SQL 查询语句,value 为 SQL语句查询的结果。如果查询的语句命中查询缓存,那么就会直接返回 value 给客户端。

2024-09-05 19:26:54 337

原创 差分隐私入门

之所以做这样的要求就是为了保证算法输出对于当某个数据受到修改后并不会受太大影响,由此攻击者反推算法就不能确定该数据是否存在于数据集中。由于拉普拉斯机制用于数值型数据,当不是数值型数据时,可以使用随机化回答机制,它可用于数据采集。原始数据集D在算法A中输出0的概率与加入噪音的数据集在算法A输出0的概率相比的值在e的-攻击者并不能从随机化的输出反推出输入到底是“yes”还是“no”具体来说,我们可以往查询结果中加入一个服从拉普拉斯分布的噪声。首先,如果我们修改一个病患的数据,则上述查询结果最多改变3。

2024-08-31 11:36:14 792

原创 JUC

JUC与JVMjuc(java.util .concurrent)集合类不安全List的底层是Object数组,java中初始值为0,调用add方法后变为10,每次扩容原值的一半,(使用Arrays.copyof实现)HashMap初始值为16,每次扩容原值的一倍当进行多线程时故障现象java.util.ConcurrentModificationException导致原因多线程并发争抢同一个资源类且未加锁解决方法使用已经实现加锁的集合(vector)Collectio

2021-02-16 10:15:15 147

原创 设计模式(六)

19、解释器模式基本介绍在编译原理中,一个算术表达式通过 词法分析器 形成词法单元,而后这些词法单元再通过 语法分析器 构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器解释器模式(Interpreter Pattern):是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,使用该解释器来解释语言中的句子(表达式)应用场景• 应用可以将一个需要解释执行的语言中的句子表示为一个抽象语法树• 一些重复出现的问题可以用一种简单的语言来表达

2021-02-14 22:55:52 145

原创 设计模式(五)

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

2021-02-14 22:51:40 169

原创 设计模式(四)

11、代理模式基本介绍代理模式:为一个对象==提供一个替身,==以控制对这个对象的访问。即通过代理模式访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种静态代理、动态代理(JDK代理、接口代理)和Cglib代理(可以在内存动态的创建对象,而不需要实现接口,它是属于动态代理的范畴)静态代理基本介绍静态代理在使用时,需要定义接口或者父类,被代理对象(

2021-02-13 23:02:15 169

原创 设计模式(三)

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

2021-01-27 23:48:18 205

原创 设计模式(二)

1、单例模式基本介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。单例模式八种方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程安全,同步代码块)双重检查静态内部类枚举饿汉式(静态常量)步骤如下:构造器私有化(防止new)类的内部创建对象向外暴露一个静态的公共方法优缺点说明:优点:这种写法比较简单,就是在类装载

2021-01-27 17:12:36 168

原创 八大排序算法

八大排序算法分类内部排序指将需要处理的所有数据都加载到==内存存储器(内存)==中进行排序外部排序数据量过大,无法全部加载到内存中,需要借助==外部存储(文件等)==进行排序常见的排序算法分类1)稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;2)不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;3)内排序:所有排序操作都在内存中完成;4)外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;5)时间

2021-01-24 16:48:41 879

原创 设计模式(一)

设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同

2021-01-18 18:31:28 153

原创 赫夫曼

赫夫曼赫夫曼树基本介绍给定n个权值作为n个叶子结点,构造一棵二叉树,该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(HuffmanTree)赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近赫夫曼树几个重要概念和举例说明路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根节点到第L层结点的路径长度为L-1**结点的权及带权路径长度:**若将树中结点赋给一个

2021-01-17 21:59:45 140

原创 Java前后端分离项目部署

前后端分离项目部署使用阿里云服务器,购买不再叙述一、前端项目部署一、使用Nginx进行代理一、首先使用docker命令安装nginx镜像docker pull nginxdocker images二、运行nginx镜像(配置文件进行挂载)创建挂载目录mkdir -p /home/mydata/mynginx/{conf,html,logs}创建nginx.conf文件然后对nginx.conf进行编写,具体配置如下:user root;worker_processes

2020-12-03 15:05:16 1429

空空如也

空空如也

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

TA关注的人

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