自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

爱编程

记录成长

  • 博客(209)
  • 收藏
  • 关注

原创 Redis实战命令

hincrby key field increment //为hash表key中field增加increment。hsetnx key field value //存储不存在的hash表key的键值。hset key field value //存储hash表key的键值。setnx order:10000 true //返回1代表获取锁成功。setnx order:10000 true //返回0代表获取锁失败。lrange key start stop //从左边开始拿数据。

2023-11-29 08:42:33 155

原创 Redis面试常见问题

LFU算法是一种用于缓存管理的算法,它根据数据项在最近一段时间内被访问的频率来确定哪些数据应该从缓存中删除以腾出空间。LRU的具体做法是将最近最少使用的缓存块置换出去,即将最久未被访问的缓存块淘汰掉。Redis中Lua脚本的执行,可以保证并发编程中不可再拆分的这个原子性,但是没有保证数据库ACID中要么都执行要么都回滚的这个原子性。:在Redis中,热key问题指的是某个key被频繁访问,导致该key所在的数据结构增长过大,进而导致Redis性能下降甚至宕机。

2023-11-28 15:33:27 452

原创 redis集群模式

当客户端向错误节点发出命令的时候,节点发现指令的key不属于自己管理,他会向客户端发送一个特殊的跳转携带目标主机地址的操作,告诉客户端去连这个节点获取数据,客户端收到命令后,会跳转正确的节点去操作,还会同步更新纠正本地的槽位映射表缓存,后续所有操作使用新的槽位映射表。网络分区导致脑裂后多个主节点对外提供服务,一旦网络恢复,会将一个主节点变成从节点,这是会有大量数据丢失。但是在一定程度上提升了一致性,但是如果从节点都挂了,主节点就不能对外提供服务了,可用性就下降了,此配置需要权衡使用。

2023-11-28 09:52:52 158

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

定义:用户请求的缓存过期。若不断请求该数据,会导致数据库压力过大。

2023-11-27 10:22:09 216

原创 Redis的持久化

原理:redis数据保存在内存中,为避免数据丢失,将某个时间节点的数据快照保存至一个二进制文件(经过压缩),通过该文件可以还原生成RDB文件时的数据库状态。原理:AOF持久化通过保存redis服务器所有的写命令来记录数据库状态,服务器启动时,通过载入和执行aof保存的命令来还原服务器关闭之前的数据库状态。auto-aof-rewrite-min-size 64mb: 当文件达到64mb的时候,会重写命令,将垃圾命令丢弃,整合成最终的结果命令,提高效率。数据紧凑,更加安全,恢复更快。

2023-11-24 17:26:56 294

原创 Redis基本数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

2023-11-23 08:33:21 408

原创 分布式幂等

在分布式系统、网络通信和数据库操作中,幂等性是一个非常重要的概念,特别是在面对可能发生网络故障、消息重复、或者系统崩溃等情况时。举个简单的例子,考虑一个银行转账的操作。如果转账操作是幂等的,那么无论你执行这个操作一次还是多次,最终的结果都应该是相同的,即账户的余额变化应该与转账金额一致。这是因为即使在执行多次时,系统也能够检测到这个操作已经被执行过,并且不会对同一个转账请求产生重复的影响。

2023-11-23 08:14:26 726

原创 3PC(三阶段提交)

3PC(Three-Phase Commit)是一种分布式系统中用于实现事务一致性的协议,它是在2PC(Two-Phase Commit)的基础上发展而来,旨在解决2PC的一些缺点。与2PC的两个阶段(准备和提交)相比,3PC引入了一个额外的阶段,即预提交阶段。

2023-11-21 17:02:15 951

原创 TCC简介

TCC(Try-Confirm/Cancel)是一种分布式事务处理模型,旨在解决分布式系统中的事务一致性问题。

2023-11-21 08:46:53 185

原创 二阶段提交

(英语:Two-phase Commit)是指,为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种算法(Algorithm)。

2023-11-20 11:02:29 295

原创 负载均衡简介

负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是 尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。负载均衡的分类和OSI模型息息相关,请看下图OSI模型及相关解释。以便更好的理解负载均衡的分类。

2023-11-20 08:51:36 563

原创 分布式ID

日常开发中,数据需要使用唯一的ID来标识,一般情况下使用自增主键作为数据ID。但是在大数量的情况下,往往会引入分库分表,这时自增ID已经无法满足需求了,就需要一个能够生成全局唯一ID的系统。一些常见的分布式ID生成策略有:UUID、雪花算法(Twitter的Snowflake)、基于Redis的ID生成方案等。具体选择哪种方案,需要根据系统的实际需求来决定。

2023-11-16 17:54:05 1424

原创 分布式锁~

分布式锁是在分布式系统中用于协调多个节点之间对共享资源的访问的一种机制。个人认为实现分布式锁,需要一个中间件例如数据库,redis等等这样的存储锁即可实现分布式锁。

2023-11-16 11:15:17 316

原创 拜占庭将军问题

拜占庭将军问题(Byzantine Generals Problem)是分布式计算中的一个经典问题,强调在存在可靠和不可靠通信的环境中,如何使得一组将军就进攻或撤退的问题达成一致的决策。问题的挑战在于,系统需要确保在存在叛徒的情况下,忠诚的将军们能够就进攻或撤退达成一致的决策,而不受到叛徒将军的影响。拜占庭将军问题的解决方案涉及到使用一些复杂的协议和算法,例如拜占庭容错算法。这类算法通常需要在保证一致性的同时,对于一部分可能是叛徒的节点提供容错能力,以确保系统的正确性。

2023-11-15 09:55:22 134

原创 BASE理论

BASE理论是指基本可用(Basically Available)、软状态(Soft State)和最终一致性(Eventually Consistent)。与CAP理论不同,BASE理论重点强调分布式系统的可用性、灵活性和实时性。BASE理论的目标是通过放宽一些要求来提高系统的灵活性和实时性。例如,在分布式缓存系统中,可能会引入一些副本冗余和数据失效机制来保证系统的可用性;同时,这种系统往往会采用异步复制的方式来进行数据同步,以提高响应速度和吞吐量。

2023-11-15 08:45:24 150

原创 CAP理论

CAP理论指出,在网络分区的情况下(即P条件),系统必须在保持一致性和可用性之间做出选择,无法同时满足。这意味着在出现网络分区时,分布式系统不得不权衡是保持一致性还是可用性。

2023-11-14 15:18:00 36

原创 分布式系统

(distributed)是指在多台不同的服务器中部署模块,通过远程调用协同工作,对外提供服务。(cluster)是指在多台不同的服务器中部署或服务模块,构成一个集群,通过负载均衡设备对外提供服务。

2023-11-14 11:16:33 159

原创 微服务思维导图

2023-11-13 10:29:16 32

原创 JavaIO流

什么是流,流是有序的数据序列。

2023-11-10 16:43:54 55

原创 Java枚举

Java中的枚举(Enumeration)是一种特殊的数据类型,它是一种包含固定常量的类型。枚举是一种更加类型安全和更易维护的方式来定义常量,它包含了一组命名的值。enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性。在Java中,被 enum 关键字修饰的类型就是枚举类型。形式如下:如果枚举不添加任何方法,。以 Color 枚举类型举例,它的枚举常量依次为 RED:0,GREEN:1,BLUE:2。:可以将常量组织起来,统一进行管理。:错误码、状态机等。

2023-11-10 16:42:30 67

原创 微服务架构图

2023-11-10 16:23:37 27

原创 微服务治理

是一种,用于管理和监控分布式系统中的服务。它旨在确保服务能够在整个生命周期内可靠地运行、可维护、可扩展和符合业务需求。服务治理涉及一系列的实践、策略和工具,用于管理和优化服务的交付和运行。像我们知道的服务的注册与发现,服务的熔断和降级,服务负载均衡,服务的流控,链路追踪,服务监控等等都是服务治理的一部分。

2023-11-10 16:21:00 230

原创 微服务概念

引用来自https://www.martinfowler.com/articles/microservices.html简言之,微服务架构风格是一种将单个应用程序开发为一套小型服务的方法,每个服务都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)通信。这些服务是围绕业务能力构建的,并通过完全自动化的部署机制进行独立部署。这些服务的集中管理是最低限度的,可以用不同的编程语言编写,并使用不同的数据存储技术。。

2023-11-10 10:59:24 845

原创 MySQL权限

MySQL 允许客户端用户连接到服务器并访问服务器管理数据,MySQL 用户权限系统的主要功能是对给定主机连接的用户进行身份验证,并将该用户与数据库的权限相关联。在 MySQL8 之前,授权表使用 MyISAM 并且是非事务性的,在 MySQL8 中,授权表使用 InnoDB 存储引擎并且是事务性的。服务器在启动时将授权表的内容读入内存,您可以通过命令重新加载。

2023-11-07 16:54:30 104

原创 Mybatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2023-11-07 14:34:34 786

原创 证明char是定长的?

CHAR 在存储时会在右边填充空格以达到指定的长度,检索(查询)时会去掉空格。在PAD_CHAR_TO_FULL_LENGTH会显示出空格。大部分博客都在讲解char和varchar区别的时候都谈到char为定长,varchar为变长。在上面的示例中,name列被定义为CHAR(10),表示它将始终占用10个字符的空间。:接下来,您可以插入不同长度的数据,并检查存储占用的空间。:首先,创建一个CHAR列,指定其长度。至此,终于是把char为定长证明出来了。在查询char类型字段的长度。下面是我证明的过程。

2023-11-03 17:40:22 142

原创 explain详解

char(n)和varchar(n),5.0.3以后版本中,**n均代表字符数,而不是字节数,**如果是utf-8,一个数字 或字母占1个字节,一个汉字占3个字节。索引最大长度是768字节,当字符串过长时,mysql会做一个类似左前缀索引的处理,将前半部分的字符提取出来做索引。using filesort:将用外部排序而不是索引排序,数据量大,需要在磁盘完成排序,数据量小,在内存完成排序。using where:使用where语句来处理结果,并且查询的列违背索引覆盖,这种语句可能需要优化。

2023-11-03 09:31:30 41

原创 binlog、redolog和undolog

在MySQL中,redo log和undo log只适用于InnoDB存储引擎,因为要支持事务。而不适用于MyISAM等其他存储引擎。而binlog则适用于所有存储引擎。

2023-11-03 09:03:54 207

原创 数据库死锁

死锁是指两个或更多的线程(或进程)被永久阻塞,等待对方所持有的资源,导致程序无法继续执行下去。

2023-11-02 09:00:33 132

原创 分库分表分区

数据库分库、分表和分区是水平切分数据库的策略,有助于提高数据库性能、可伸缩性和负载均衡。

2023-11-02 08:54:44 341

原创 MySQL索引

索引是帮助MySql高效获取数据的排好序的。

2023-11-01 08:53:33 270

原创 数据库的锁

数据库的锁是为了支持对共享数据的并发访问,提供数据的完整性和一致性。

2023-11-01 08:42:03 151

原创 当前读和快照读

当前读(Current Read)是数据库操作中的一种读取方式,它指的是从数据库中获取实时数据,即获得最新的已提交数据。在当前读操作中,您将看到其他事务已经提交的更改,因此具有实时数据可见性。这意味着当执行当前读操作时,您可以访问数据库中最新的数据状态,包括最近提交的事务所做的修改。简而言之,,所以,加锁的 SELECT,或者对数据进行增删改都会进行当前读。比如当前读适用于需要实时数据可见性和高一致性的应用场景。例如金融产品,库存系统等要求实时性较高。

2023-10-31 10:18:57 754

原创 事务隔离级别

事务是数据库管理系统中的一个基本单位,它代表了一组数据库操作。事务是一个不可分割的工作单元,要么全部成功执行,要么全部失败回滚。事务的目标是确保数据库的一致性、隔离性、持久性和原子性(ACID属性)。

2023-10-31 09:08:09 310

原创 MySQL执行计划

表示select查询的序列编号,即在查询中执行select语句或操作表的顺序,查询出来的id有两种情况,可同时存在id相同,执行顺序为从上到下。

2023-10-30 09:15:12 143

原创 JVM思维导图

2023-10-27 16:03:01 152

原创 MySQL事务

事务是一组数据库操作,它被视为一个不可分割的工作单元。事务,保证了数据库的一致性。通常,事务操作包括插入、更新、删除等,它们一起构成了一个逻辑操作单元。

2023-10-27 11:19:53 458

原创 EasyPoi

/</</</

2023-10-27 11:05:12 101

原创 数据库范式

在关系数据库设计中,数据库范式是一组,用于组织数据以降低数据冗余、提高数据完整性和减小数据操作的复杂性。

2023-10-26 14:39:58 86

原创 MySQL存储引擎

MySQL支持多种存储引擎(Storage Engine),每种引擎都有其自身的特点和适用场景。存储引擎是MySQL架构中的一个核心组件,它负责数据的物理存储、索引结构、并发控制以及事务处理。

2023-10-26 14:20:02 240

oracle驱动,支持19c

oracle驱动

2023-03-01

空空如也

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

TA关注的人

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