MySQL015--简述mysql中索引类型有哪些,以及对数据库的性能的影响
摘要:1、普通索引:允许被索引的数据列包含重复的值。 2、唯一索引:可以保证数据记录的唯一性。 3、主键索引:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字primary key来创建。 4、联合索引:索引可以覆盖多个数据列。 5、全文索引:通过建立倒排索引,可
阅读全文
posted @
2021-11-24 09:55
Sempron2800+
阅读(251)
推荐(0)
MySQL014--什么是MySQL的主从复制
摘要:MySQL的主从复制,是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL默认使用异步复制方式。这样从节点不用一直访问主节点来更新自己的数据。数据的更新可以在远程连接上进行,从节点可以复制主节点中的所有数据库或者特定的数据库、或特定的表。
阅读全文
posted @
2021-11-24 09:48
Sempron2800+
阅读(48)
推荐(0)
MySQL013--索引的设计原则有哪些
摘要:在进行索引设计的时候,应保证索引字段占用的空间越小越好,这只是一个大的方向,还有一些细节需要注意: 1、适合索引的列是出现在where子句中的列,或者链接子句中的列。 2、基数较小的表,索引效果差,没必要创建索引。 3、在选择索引列的时候,越短越好,可以指定某些列的一部分不,没必要用全部字段的值。
阅读全文
posted @
2021-11-24 09:45
Sempron2800+
阅读(55)
推荐(0)
MySQL012--事务的四个基本特征是什么
摘要:事务的四个基本特征是:ACID 1、原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 2、一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一
阅读全文
posted @
2021-11-24 09:30
Sempron2800+
阅读(60)
推荐(0)
MySQL011--如何处理MySQL的慢查询
摘要:1、开启慢查询日志,准确定位到哪个sql语句出现了问题。 2、分析sql语句,看看是否load了额外的数据,可能是查询了多余的行并且抛弃掉了,可能是加载了许多结果中并不需要的列,对于据进行分析并改写。 3、分析语句的执行计划,然后获得其使用索引的情况,之后修改语句或者修改索引,试得语句可以尽可能的命
阅读全文
posted @
2021-11-24 09:25
Sempron2800+
阅读(48)
推荐(0)
MySQL010--MySQL执行计划怎么看
摘要:1)id 表示执行顺序,id的数字越大越先执行,如果数字一样,那么从上往下依次执行,如果为null表示这是一个结果集,不需要用它来进行查询。 2)select_type 取值 含义 simple 表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,
阅读全文
posted @
2021-11-24 09:20
Sempron2800+
阅读(352)
推荐(0)
MySQL009--MySQL为什么需要主从复制和读写分离
摘要:1、在业务复杂的系统中,有这样的场景,有一句sql语句需要锁表,导致这个表暂时不能背读取,那么就会影响其他读取的业务。使用主从复制读写分离,主库负责写,从库负责读。这样,即使主库出现了锁表的情形,也可以通过从库继续完成读操作,保证业务的正常运作。 2、主从复制还可以做数据的热备份。 3、有助于扩展,
阅读全文
posted @
2021-11-24 08:57
Sempron2800+
阅读(98)
推荐(0)
MySQL008--MySQL锁的类型有哪些
摘要:1、按照锁的粒度分类: 行级锁,表级锁,页级锁,记录锁,间隙锁,临键锁。 1.1 行级锁 (1)各种引擎使用的锁 1.MyISAM和MEMORY采用表级锁(table-level locking) 2.BDB采用页级锁(page-level locking)或表级锁,默认为页级锁 3.InnoDB支
阅读全文
posted @
2021-11-24 08:24
Sempron2800+
阅读(198)
推荐(0)
MySQL007--MySQL索引结构有哪些,各自的优劣是什么
摘要:索引的数据结构和具体存储引擎的实现有关,MySQL中使用较多的有Hash索引和B+树索引。 InnoDB引擎使用B+树索引;Memory引擎使用Hash索引。 B+树是一个平衡多叉树,从根节点到每个叶子节点的高度差不超过1,而且同层级的节点之间有指针连接,在B+树上的常规检索,从根节点到叶子节点的搜
阅读全文
posted @
2021-11-22 10:38
Sempron2800+
阅读(127)
推荐(0)
MySQL006--MySQL聚簇索引和非聚簇索引的区别
摘要:MySQL的索引类型跟存储引擎是相关的,InnoDB存储引擎数据文件跟索引文件全部房在idb文件中。 而MyISAM的数据文件房在myd文件中,索引房在myi文件中。 其实区分簇索引和非簇索引非常简单,只要判断数据跟索引是否存储在一起就可以了。 InnoDB存储引擎在进行数据插入的时候,数据必须要跟
阅读全文
posted @
2021-11-22 10:11
Sempron2800+
阅读(117)
推荐(0)
MySQL005--MySQL复制的原理是什么
摘要:1.master服务器将数据的改变记录在二进制日志文件binlog中,当master上的数据发生改变时,则将其改变写入binlog中。 2.slave服务器会在一定时间间隔内对master二进制进行探测其是否发生改变,如果发生改变,则开始一个I/O Thread,请求master的binlog。 3
阅读全文
posted @
2021-11-22 09:59
Sempron2800+
阅读(57)
推荐(0)
MySQL004--MySQL的隔离级别有哪些
摘要:SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用
阅读全文
posted @
2021-11-21 08:07
Sempron2800+
阅读(47)
推荐(0)
MySQL003--MVCC实现原理是什么
摘要:参考1:数据库基础(四)Innodb MVCC实现原理 - 知乎 (zhihu.com) 参考2:图说Mysql的MVCC原理 - 怂人不倦 - 博客园 (cnblogs.com)
阅读全文
posted @
2021-11-20 15:46
Sempron2800+
阅读(42)
推荐(0)
MySQL002--MVCC解决的问题是什么
摘要:数据库并发场景有三种: 1.读读:不存在任何问题,也不需要并发控制。 2.读写:有线程安全问题,可能会造成事务隔离性问题,可能遇到脏读、幻读、不可重复读。 3.写写:有线程安全问题,可能存在更新丢失问题。 MVCC是一种用来解决读写冲突的无锁并发控制,也就是为事务分配单项增长的时间戳,为每个修改保存
阅读全文
posted @
2021-11-20 15:27
Sempron2800+
阅读(329)
推荐(0)
MySQL001--什么是MVCC
摘要:1、MVCC MVCC全称是Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,使用更好
阅读全文
posted @
2021-11-20 15:21
Sempron2800+
阅读(67)
推荐(0)
JVM011--如何解决线上gc频繁的问题
摘要:对于线上系统突然产生的运行缓慢问题,如果导致线上系统不可用,首先导出jstack和内存信息,然后重启系统,尽快保证系统的可用性。 造成这种情况可能的原因主要有两种: 1.代码中某个位置读取数据量较大,导致系统内存耗尽,从而导致Full GC次数过多,系统缓慢。 2.代码中比较耗CPU的操作,导致CP
阅读全文
posted @
2021-11-19 16:08
Sempron2800+
阅读(511)
推荐(0)
JVM010--JVM有哪些垃圾收集器
摘要:Serial GC: 它是最古老的垃圾收集器, “Serial”体现在其收集工作是单线程的,并且在进行垃圾收集过程中,会进入臭名昭著的“Stop-The-World”状态。当然,其单线程设计也意味着精简的GC实现,无需维护复杂的数据结构,初始化也简单,所以一直是Client模式下JVM的默认选项。
阅读全文
posted @
2021-11-19 15:55
Sempron2800+
阅读(47)
推荐(0)
JVM009--JVM性能调优概述
摘要:调优的一些原则: 1.多数的java应用不需要再服务器上进行GC优化,虚拟机内部已经有很多优化来保证应用的稳定运行,不必为了调优而调优,不当调优可能适得其反。 2.在应用上线之前,先考虑将机器的JVM参数设置到最优。 3.在进行GC优化之前,需要确认项目的架构和代码等已经没有优化空间了。不能指望一个
阅读全文
posted @
2021-11-19 15:39
Sempron2800+
阅读(94)
推荐(0)
JVM008--JVM内存结构如何划分
摘要:JVM的结构如图所示: 依次介绍各部分功能: 1.程序计数器(Program Counter Register)一块较小的内存空间, 属于线程私有. 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令, 分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完
阅读全文
posted @
2021-11-19 15:06
Sempron2800+
阅读(63)
推荐(0)
JVM007--JVM8为什么要增加元空间
摘要:虚拟机栈,本地方法栈以及程序计数器为线程隔离。方法区和堆是所有线程共享的数据区域。 方法区用于存储已被虚拟机加载的类信息、常量、静态变量、动态生成的类等数据。实际上在Java虚拟机的规范中方法区是堆中的一个逻辑部分,但是它却拥有一个叫做非堆(Non-Heap)的别名。 对于方法区的实现,不同虚拟机中
阅读全文
posted @
2021-11-19 10:25
Sempron2800+
阅读(798)
推荐(0)
JVM006--Java类加载器有哪些
摘要:1、BootStrap类加载器 启动类加载器主要加载的是JVM自身需要的类,这个类加载使用C++语言实现。它没有父类,是虚拟机自身的一部分,它负责将<JAVA_HOME>/lib路径下的核心类库或-Xbootclasspath参数指定的路径下的jar包加载到内存中,注意虚拟机是根据文件名识别jar包
阅读全文
posted @
2021-11-19 10:07
Sempron2800+
阅读(114)
推荐(0)
JVM005--Happens-Before规则是什么
摘要:1.程序顺序规则:一个线程中的每一个操作,happens-before于该线程中的任意后续操作。 2.监视器规则:对一个锁的解锁,happens-before于随后这个锁的加锁。 3.volatile规则:对一个volatile变量的写,happens-before于任意后续一个volatile变量
阅读全文
posted @
2021-11-19 09:57
Sempron2800+
阅读(55)
推荐(0)
JVM004--GC如何判断对象可以被回收
摘要:垃圾回收算法: 1、引用计数法 每个对象有一个引用属性,新增一个引用时加1,引用释放时减1,计数为0得时候可以回收。 但这种计算方法无法解决循环引用的问题。 2、可达性分析算法 (1)从GCRoot开始向下搜索,搜索所走过的路径被称作引用链,当一个对象到GCRoot没有任何引用链相连时,则证明此对象
阅读全文
posted @
2021-11-19 09:50
Sempron2800+
阅读(150)
推荐(0)
JVM003--ConcurrentHashMap底层原理是什么
摘要:JDK1.7 内部主要是一个Segment数组,而数组的每一项又是一个HashEntryh数组,元素都存在HashEntry数组里。 因为每次锁定的是Segment对象,也就是整个HashEntry数组,所以又叫分段锁。 JDK1.8 与HashMap一样采用:数组+链表/红黑树 底层原理则是采用链
阅读全文
posted @
2021-11-19 09:42
Sempron2800+
阅读(198)
推荐(0)
JVM002--Class初始化过程是什么
摘要:类加载过程大致分为:加载、连接(1验证 2准备 3解析)、初始化,使用和卸载都是已经加载完之后,属于类的生命周期的两个阶段。 1.类的初始化阶段,事真正开始执行类中定义的java程序代码(字节码)并按程序员的意图去初始化变量的过程,更直接的说,初始化阶段就是执行构造器<clinit>()方法的过程。
阅读全文
posted @
2021-11-19 09:22
Sempron2800+
阅读(134)
推荐(0)
JVM001--有哪些垃圾回收算法
摘要:1、标记-清除(Mark-Sweep)算法 标记-清除算法分为两个阶段:标记阶段、清除阶段。 在标记阶段,会标记出所有需要回收的对象,标记完成后,统一回收所有被标记的对象。 缺点: (1)效率问题,标记和清除阶段效率都不高。 (2)空间问题,会产生大量的不连续的内存碎片,不利于分配较大的对象。 2、
阅读全文
posted @
2021-11-18 09:53
Sempron2800+
阅读(63)
推荐(0)
多线程012--线程的sleep、wait、join、yield如何使用
摘要:1、Sleep: sleep的作用是让目前正在执行的线程休眠,让CPU去执行其他线程。线程的状态变成阻塞状态。 注意:sleep会发生线程中断异常;sleep不会释放锁。 2、Wait: wait必须先获得对应的锁才能调用,它让线程进入等待状态,释放当前线程持有的锁,线程只有在其他线程调用notif
阅读全文
posted @
2021-11-18 08:41
Sempron2800+
阅读(285)
推荐(0)
多线程011--线程池运行原理及复用原理
摘要:线程池中的几个重要概念: 1.核心线程(corePool):线程池最终执行任务的角色肯定还是线程,同时我们也会限制线程的数量,所以我们可以这样理解核心线程,有新任务提交时,首先检查核心线程数,如果核心线程都在工作,而且数量也已经达到最大核心线程数,则不会继续新建核心线程,而会将任务放入等待队列。 2
阅读全文
posted @
2021-11-18 08:30
Sempron2800+
阅读(187)
推荐(0)
多线程010--为什么要使用线程池
摘要:java创新线程需要占用大量资源,需要JVM和操作系统配合完成大量工作。 1.必须为线程分配和初始化大量内存,其中包含至少1MB的栈内存。 2.需要进行系统调用,以便在OS中创建和注册本地线程。 Java高并发应用频繁创建和销毁线程的操作是非常低效的,而且是不被编程规范所允许的。 线程池可以降低ja
阅读全文
posted @
2021-11-18 08:15
Sempron2800+
阅读(91)
推荐(0)
多线程009--什么是守护线程
摘要:Java中线程分为两类:User Thread(用户线程)、Daemon Thread(守护线程)。 只要当前JVM实例中存在任何一个用户线程没有结束,那全部守护线程就可以存留。 当全部的用户线程都结束工作的时候,守护线程会随着JVM一同停止工作。 注意: 1.thread.setDaemon(tr
阅读全文
posted @
2021-11-18 08:08
Sempron2800+
阅读(37)
推荐(0)
多线程008--如何预防死锁
摘要:死锁发生的四个必要条件: 1.互斥条件,同一时间只能有一个线程获取资源。 2.不可剥夺条件,一个线程已经占有的资源,在释放之前不会被其他线程抢占。 3.请求和保持条件,线程等待过程中不会释放已占有的资源。 4.循环等待条件,多个线程互相等待对方释放资源。 死锁的预防,就是要打破这四个必要条件: 1.
阅读全文
posted @
2021-11-18 07:58
Sempron2800+
阅读(103)
推荐(0)
多线程007--描述一下线程安全活跃态问题,以及竞态条件
摘要:一线程活跃问题 1.线程安全的活跃性问题可以分为:死锁、活锁、饥饿。 活锁:有时线程虽然没有发生阻塞,但是仍然会存在执行不下去的情况,活锁不会阻塞线程,线程会一直重复执行某个相同的操作,并且一直失败重试。 出现的场景:异步消息队列有可能出现活锁问题,在消息队列的消费端如果没有正确的ack消息,并且执
阅读全文
posted @
2021-11-17 18:32
Sempron2800+
阅读(322)
推荐(0)
多线程006--介绍线程的生命周期和状态
摘要:Java的线程有6种状态,它们定义在java.lang.Thread.State类中。 (1)NEW状态 是指线程刚创建, 尚未启动 (2)RUNNABLE状态(ready和running) 是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待
阅读全文
posted @
2021-11-17 17:08
Sempron2800+
阅读(61)
推荐(0)
多线程005--创建线程有哪些方式
摘要:创建线程的四种方式 (1)继承Thread类 (2)实现Runnable接口 (3)实现Callable接口 (4)使用线程池 1 package com.example.concurrency; 2 3 import java.util.concurrent.Callable; 4 import
阅读全文
posted @
2021-11-17 16:59
Sempron2800+
阅读(47)
推荐(0)
多线程004--程序开多少线程合适
摘要:1.CPU密集型程序,一个完整请求,I/O操作可以在很短时间内完成,CPU还有很多运算要处理,也就是说CPU计算的比例占很大一部分,线程等待时间接近0。 单核CPU处理CPU密集型程序,不太适合使用多线程。 多核CPU理论上线程是数量为CPU(逻辑)核心数,但实际上,设置为CPU(逻辑)核心数+1。
阅读全文
posted @
2021-11-17 16:38
Sempron2800+
阅读(114)
推荐(0)
多线程003--volatile的可见性和禁止指令重排序怎么实现的
摘要:在代码种加入volatile关键字时,生成的汇编代码会出现一个locl前缀指令。 local前缀指令实际上相当于一个内存屏障,它有3个功能: 1.它确保指令重排序时不会把后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面。即在执行到内存屏障位置时,它前面的操作已全部完成。 2.它
阅读全文
posted @
2021-11-17 07:33
Sempron2800+
阅读(254)
推荐(0)
多线程002--ThreadLocal有哪些内存泄露问题,如何避免
摘要:每个Thread都有一个ThreadLocal.ThreadLocalMap的map,该map的key为ThreadLocal实例,它为一个弱引用。 弱引用有利于GC回收。 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。 在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了
阅读全文
posted @
2021-11-17 07:09
Sempron2800+
阅读(179)
推荐(0)
多线程001--synchronized和lock有哪些区别
摘要:1.来源: lock是一个接口(interface)。 synchronized是java的一个关键字,它由内置的语言实现。 2.异常是否释放锁: lock发生异常时不会主动释放锁,必须手动unlock来释放,可能引起死锁。 synchronized发生异常时会自动释放锁,不会引起死锁。 3.是否响
阅读全文
posted @
2021-11-17 06:52
Sempron2800+
阅读(180)
推荐(0)
Spring Cloud Alibaba学习08--Seata基本使用
摘要:Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。 Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 官网地址:Seata。 Seata术语: TC (Transaction Coordinator) -
阅读全文
posted @
2021-11-13 08:16
Sempron2800+
阅读(289)
推荐(0)
Spring Cloud Alibaba学习07--Sleuth基本使用
摘要:随着服务越来越多,对调用链的分析会越来越复杂。 存在的问题: 1.微服务之间的调用错综复杂,用户发送请求经历哪些服务,调用链不清楚,没有一个自动化工具来维护调用链。 2.无法快速定位调用链中哪个环节出了问题。 3.无法快速定位调用链中哪个环节比较耗时。 Spring Cloud Sleuth提供分布
阅读全文
posted @
2021-11-12 19:16
Sempron2800+
阅读(305)
推荐(0)
Spring Cloud Alibaba学习06--Gateway基本使用
摘要:Spring Cloud Gateway是基于Spring5、SpringBoot2.0和Project Reactor等技术开发的网关,目的是为微服务架构系统提供高性能,且简单易用的api路由管理方式。 优点: 1.性能强劲,是第一代网关Zuul的1.6倍。 2.功能强大,内置很多使用功能,例如:
阅读全文
posted @
2021-11-12 16:59
Sempron2800+
阅读(125)
推荐(0)
Spring Cloud Alibaba学习05--Sentinel基本使用
摘要:Sentinel的介绍 · alibaba/Sentinel Wiki (github.com) 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景
阅读全文
posted @
2021-11-12 08:20
Sempron2800+
阅读(93)
推荐(0)
Spring Cloud Alibaba学习04--Nacos基本使用(配置中心)
摘要:在微服务架构下,一般会存在大量的服务。如果每个服务的配置文件都独立存储,会有如下一些问题: 1.配置文件太分散,不便于管理。 2.太多的冗余配置,通用配置不能共享。 3.不支持配置文件的动态刷新,改了配置必须要重启服务。 Nacos可以提供配置中心的服务,提供通用配置共享的功能。 本文以cloud-
阅读全文
posted @
2021-11-11 17:15
Sempron2800+
阅读(235)
推荐(0)
Spring Cloud Alibaba学习03--OpenFeign基本使用
摘要:OpenFeight是由Spring Cloud官方开发的组件,它是一种声明式,模板化的HTTP客户端。 在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求远程服务时与调用本地方法一样的编程体验,开发者完全感知不到是在调用远程方法,更感知不到这是HTTP请求。同时OpenF
阅读全文
posted @
2021-11-11 16:14
Sempron2800+
阅读(122)
推荐(0)
Spring Cloud Alibaba学习02--Ribon基本使用
摘要:Ribon是Netflix公司开发的负载均衡组件。是一个客户端(服务消费者)负载均衡器,运行在客户端(服务消费者)上。目前已经闭源停止维护。 但目前Spring Cloud Alibaba的负载均衡解决方案,依然使用的是Ribbon。 在引入Nacos之后,可以看到依赖关系。 使用方式: 1 pac
阅读全文
posted @
2021-11-11 10:08
Sempron2800+
阅读(175)
推荐(0)
Spring Cloud Alibaba学习01--Nacos基本使用(注册中心)
摘要:1、注册中心对比: 2、下载与安装: 下载地址:Releases · alibaba/nacos (github.com) 下载后解压缩,进入config目录,打开application.properties文件,修改: ### If use MySQL as datasource: spring.
阅读全文
posted @
2021-11-10 13:36
Sempron2800+
阅读(102)
推荐(0)
B站黑马教育Java项目所用技术分析
摘要:黑马教育Java部分提供了8个项目,我将其进行了简单汇总,以了解现在主流的技术栈和解决方案。 8个项目的地址: 序号 日期 名称 时长 地址 项目实战01 2021/5/27 黑马 传智健康 38 https://www.bilibili.com/video/BV1Bo4y117zV 项目实战02
阅读全文
posted @
2021-11-10 10:17
Sempron2800+
阅读(216)
推荐(0)
MySQL高级知识总结
摘要:参考视频:黑马程序员MySQL全套教程,超详细的MySQL数据库优化,MySQL面试热点必考问题_哔哩哔哩_bilibili 时长:13.5小时。
阅读全文
posted @
2021-11-10 05:02
Sempron2800+
阅读(75)
推荐(0)
ElasticSearch学习04--使用SpringData连接ES
摘要:1、创建spring boot项目 2、在pom中添加引用: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/
阅读全文
posted @
2021-11-09 10:40
Sempron2800+
阅读(301)
推荐(0)
Spring Cloud Alibaba 知识体系
摘要:参考视频:千锋教育全新SpringCloud(Hoxton版+alibaba)全套教程丨史上最简单全面的微服务架构教程_哔哩哔哩_bilibili 时长:12小时。 Spring Cloud Alibaba的五大组件为: Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维
阅读全文
posted @
2021-11-08 10:05
Sempron2800+
阅读(996)
推荐(0)
JVM知识体系
摘要:参考视频:黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓_哔哩哔哩_bilibili 时长:18小时。
阅读全文
posted @
2021-11-07 19:13
Sempron2800+
阅读(42)
推荐(0)
JUC知识体系
摘要:参考视频:【尚硅谷】大厂必备技术之JUC并发编程2021新版_哔哩哔哩_bilibili 时长:8小时。
阅读全文
posted @
2021-11-07 18:43
Sempron2800+
阅读(62)
推荐(0)
RabbitMQ学习12--延迟队列
摘要:1、从官网链接下载插件: Releases · rabbitmq/rabbitmq-delayed-message-exchange (github.com) 本文下载的是3.9.0版本。 2、安装插件 将下载的文件rabbitmq_delayed_message_exchange-3.9.0.ez
阅读全文
posted @
2021-11-07 14:58
Sempron2800+
阅读(97)
推荐(0)
RabbitMQ学习11--死信队列(拒绝消息)
摘要:消费者可以根据信息的内容,拒绝消费这个消息。这需要手动ACK。 1、生产者代码: 1 package com.yas.deadexchange; 2 3 import com.rabbitmq.client.AMQP; 4 import com.rabbitmq.client.BuiltinExch
阅读全文
posted @
2021-11-07 10:18
Sempron2800+
阅读(185)
推荐(0)
RabbitMQ学习10--死信队列(队列达到最大长度)
摘要:队列可以设置最大接受信息的长度,如果等待被消费而排队的消息的数量,大于这个长度,就会转发给死信队列。 1、生产者代码: 1 package com.yas.deadexchange; 2 3 import com.rabbitmq.client.AMQP; 4 import com.rabbitmq
阅读全文
posted @
2021-11-07 10:07
Sempron2800+
阅读(729)
推荐(0)
RabbitMQ学习09--死信队列(TTL过期)
摘要:1、死信的概念: 死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续
阅读全文
posted @
2021-11-07 09:49
Sempron2800+
阅读(161)
推荐(0)
redis学习06--使用Spring Data调用Redis
摘要:1、建立spring boot项目,添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
阅读全文
posted @
2021-11-06 10:09
Sempron2800+
阅读(123)
推荐(0)
ElasticSearch知识体系
摘要:参考视频:【尚硅谷】ElasticSearch教程入门到精通(基于ELK技术栈elasticsearch 7.8.x版本)_哔哩哔哩_bilibili 时长:5.5小时。
阅读全文
posted @
2021-11-05 08:41
Sempron2800+
阅读(40)
推荐(0)
RabbitMQ知识体系
摘要:参考视频:尚硅谷2021新版RabbitMQ教程丨快速掌握MQ消息中间件_哔哩哔哩_bilibili 时长:11.5小时。
阅读全文
posted @
2021-11-05 08:09
Sempron2800+
阅读(59)
推荐(0)
Redis知识体系
摘要:Redis6知识体系总结: 参考视频:【尚硅谷】Redis 6 入门到精通 超详细 教程_哔哩哔哩_bilibili 时长:10.5小时。
阅读全文
posted @
2021-11-05 07:17
Sempron2800+
阅读(40)
推荐(0)
Dubbo负载均衡策略--最少活跃调用数
摘要:最少活跃调用数:相同活跃数的随机,活跃数指调用前后计数差。 使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。 在服务的消费端记录当前服务器目前被调用的数量(消费者自己维护这个数据)。 具体的执行过程如下: 1、消费者本地缓存所有服务提供者。 2、消费者在调用某一个服务时,会选择本地
阅读全文
posted @
2021-11-04 15:40
Sempron2800+
阅读(298)
推荐(0)
Dubbo负载均衡策略--轮询
摘要:1、随机(Random): 按权重设置随机概率。 在一个截面上碰撞的概率高,但调用越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。 2、轮询(RoundRobin): 按公约后的权重设置轮询比率。 存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台
阅读全文
posted @
2021-11-04 15:31
Sempron2800+
阅读(391)
推荐(0)
Dubbo常用功能10--异步调用
摘要:从dubbo的2.7.0版本,所有异步编程接口以CompletableFuture为基础。 基于NIO的非阻塞实现并行调用,服务消费方不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销教小。 简而言之,消费者通过异步调用,不用等待服务提供者返回结果就立即完成任务,待有结果之后再执行之前设定
阅读全文
posted @
2021-11-04 14:07
Sempron2800+
阅读(258)
推荐(0)
Dubbo常用功能09--参数回调
摘要:参数回调方式与调用本地callback或listener相同,只要在Spring的配置文件中声明哪个参数是callback类型即可。 Dubbo将基于长连接生成反向代理,这样就可以从提供方调用消费方的逻辑。 简而言之,就是服务提供方调用服务消费方的逻辑。 1、接口层修改: 增加一个接口和一个类: 1
阅读全文
posted @
2021-11-04 13:53
Sempron2800+
阅读(301)
推荐(0)
Dubbo常用功能08--本地存根
摘要:1、提供方配置文件: server: port: 8001 dubbo: application: name: site-service-boot-provider registry: address: zookeeper://ubu:2181 scan: base-packages: com.ya
阅读全文
posted @
2021-11-04 13:23
Sempron2800+
阅读(134)
推荐(0)
Dubbo常用功能07--服务降级
摘要:服务消费者通过Mock指定服务超时后的策略: 1、配置文件: server: port: 8001 dubbo: application: name: site-service-boot-provider registry: address: zookeeper://ubu:2181 scan: b
阅读全文
posted @
2021-11-04 12:10
Sempron2800+
阅读(79)
推荐(0)
Dubbo常用功能06--集群容错
摘要:dubbo为集群调用提供了容错方案: 1、failover:(默认,推荐) 当出现失败时,会进行重试,默认重试2次,一共三次调用,但是会出现幂等性问题。 幂等性问题可以在业务层解决: 方案1:把数据的业务id作为数据库的联合主键,此时业务id不能重复。 方案2:(推荐)使用分布式锁来解决重复消费问题
阅读全文
posted @
2021-11-04 11:43
Sempron2800+
阅读(116)
推荐(0)
Dubbo常用功能05--设置服务的timeout时间
摘要:1、服务提供者配置文件: server: port: 8001 dubbo: application: name: site-service-boot-provider registry: address: zookeeper://ubu:2181 scan: base-packages: com.
阅读全文
posted @
2021-11-04 11:30
Sempron2800+
阅读(564)
推荐(0)
Dubbo常用功能04--使用url指定服务
摘要:1、apolication.yml的配置: server: port: 8001 dubbo: application: name: site-service-boot-provider registry: address: zookeeper://ubu:2181 scan: base-packa
阅读全文
posted @
2021-11-04 10:53
Sempron2800+
阅读(1048)
推荐(0)
Dubbo常用功能03--rest协议
摘要:1、服务生产者的pom文件中修改如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch
阅读全文
posted @
2021-11-04 10:10
Sempron2800+
阅读(266)
推荐(0)
Dubbo常用功能02--protocol协议
摘要:1、修改配置: # #指定某一种协议 # protocol: # name: dubbo # port: 20882 # #指定多种协议 protocols: pro1: id: dubbo1 name: dubbo port: 20881 host: 0.0.0.0 pro2: id: dubbo
阅读全文
posted @
2021-11-04 08:41
Sempron2800+
阅读(539)
推荐(0)
zookeeper使用01--下载与配置
摘要:1、Zookeeper的下载与配置 zookeeper下载地址:Apache ZooKeeper 本文使用的是zookeeper的3.7.0版本,对应文件名为:apache-zookeeper-3.7.0-bin.tar.gz。 下载后,使用tar命令解压: tar -zxvf apache-zoo
阅读全文
posted @
2021-11-04 07:42
Sempron2800+
阅读(70)
推荐(0)
Dubbo常用功能01--version版本
摘要:version版本: version版本号用处是对于同一接口,具有不同的服务实现。 1、服务端代码: 1 package com.yas.serviceprovider.impl; 2 3 import com.yas.api.SiteService; 4 import org.apache.dub
阅读全文
posted @
2021-11-04 07:23
Sempron2800+
阅读(492)
推荐(0)
zookeeper使用02--基本命令
摘要:1、zookeeper的应用: 注册中心、配置集中管理、集群管理、分布式锁和分布式任务、队列的管理。 2、zookeeper的znode类型: 持久节点:永久保存数据。 持久有序节点:永久保存数据,会给节点添加一个有序的序号。 临时节点:当客户端和zookeeper断开连接时,节点自动删除。 临时有
阅读全文
posted @
2021-11-03 20:43
Sempron2800+
阅读(184)
推荐(0)
Dubbo管理控制台安装
摘要:参考官网地址:管理控制台安装 | Apache Dubbo 方式一 源码安装 1、安装: 需要先安装git,在ubuntu系统中使用apt安装git 和 maven: apt install gitapt install maven 需要安装node.js,并设置npm的国内镜像。 npm conf
阅读全文
posted @
2021-11-03 14:16
Sempron2800+
阅读(69)
推荐(0)
RabbitMQ学习08--消息重复消费(SpringBoot方式)
摘要:1、添加依赖 修改pom文件,添加spring-data-redis的依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www
阅读全文
posted @
2021-11-03 09:30
Sempron2800+
阅读(261)
推荐(0)
RabbitMQ学习07--消息重复消费
摘要:幂等性操作 :可以重复执行的操作,可以不用保证消息重复消费。 非幂等性,需要保证消息不会被重复消费。 重复消费原因:消费者消费了消息,但并没有向rabbitmq发送ack。 为了解决消费重复消费的问题,可以使用Redis,在消费者消费之前,先将消息的id放到Redis中, id-0(正在执行业务)
阅读全文
posted @
2021-11-03 09:14
Sempron2800+
阅读(823)
推荐(0)
RabbitMQ学习06--消息可靠性(SpringBoot方式)
摘要:1、配置文件增加如下内容: application.yml修改如下: spring: rabbitmq: publisher-confirm-type: simple #开启confirm机制 publisher-returns: true #开启return机制 2、增加配置类: 1 packag
阅读全文
posted @
2021-11-03 07:23
Sempron2800+
阅读(90)
推荐(0)
RabbitMQ学习05--消息可靠性
摘要:消息可靠性: 1.如果消息已经到达了rabbitmq,但mq宕机了,消息并不会丢失。rabbitmq有持久化机制。 2.消费者在消费消息时,没有执行完就宕机了,消息并不会从mq清除,消费者可以使用手动ack机制。 3.生产者发送消息时由于网络问题,消息没有发送到rabbitmq,可以采用以下两种机制
阅读全文
posted @
2021-11-03 07:03
Sempron2800+
阅读(103)
推荐(0)
RabbitMQ学习04--基本工作模式(SpringBoot方式)
摘要:使用SpringBoot方式开发RabbitMQ。 1、使用IDEA建立SpringBoot项目,并添加相关引用: POM文件如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/
阅读全文
posted @
2021-11-03 06:13
Sempron2800+
阅读(54)
推荐(0)
RabbitMQ学习03--基本工作模式
摘要:使用IDEA创建空的Maven项目。 1、在POM文件中添加依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o
阅读全文
posted @
2021-11-02 19:26
Sempron2800+
阅读(48)
推荐(0)
mongodb学习01--安装与配置(Ubuntu)
摘要:本文使用ubuntu 18.04系统安装mongodb。 1、下载并安装mongodb apt-get install mongodb 安装完毕后,monodb会自动启动。 启动和关闭的命令: sudo service mongodb start #启动 sudo service mongodb s
阅读全文
posted @
2021-11-02 16:23
Sempron2800+
阅读(60)
推荐(0)
RabbitMQ学习02--安装与配置(Ubuntu系统)
摘要:RabbitMQ官网:Messaging that just works — RabbitMQ 本文使用的系统是Ubuntu 18.04版本。 参考:Installing on Debian and Ubuntu — RabbitMQ #!/usr/bin/sh sudo apt-get insta
阅读全文
posted @
2021-11-02 10:50
Sempron2800+
阅读(126)
推荐(0)
RabbitMQ学习01--基本概念
摘要:MQ全程Message Queue,是在消息传输过程中保存消息的容器,多用于分布式系统之间进行通信。 1、MQ的优势: 1.应用解耦:系统耦合度越高,容错性就越低,可用性就越低。使用MQ将系统进行隔离,可以提高系统的容错性。 2.异步提速:在用户进行操作后,将信息发送到MQ后就返回。后续的业务流程通
阅读全文
posted @
2021-11-02 09:49
Sempron2800+
阅读(47)
推荐(0)
redis学习05--Redis的常见问题
摘要:1、redis的删除策略 key的生存时间到了,redis不会立即删除。 1.1 定期删除:redis每隔一段时间就会去查看redis设置了过期时间的key,会在100ms的间隔查看3个key。 1.2 惰性删除:查询一个key时,redis会先判断这个key是否设置了生存时间,是否已经过期。如果已
阅读全文
posted @
2021-11-01 18:26
Sempron2800+
阅读(70)
推荐(0)
redis学习04--Redis的主从架构
摘要:单机版redis,存在读写瓶颈的问题(11万次/秒的读取,8万次/秒的写入)。 因此可以通过主从配置,(一台主节点可以读和写,若干台从节点只可以读)来提高redis的数据处理能力。 redis的主从配置说明: 1.Redis的主从复制是异步的,但可以将主机配置为:当从机少于一定数量时,则停止主机的写
阅读全文
posted @
2021-11-01 17:17
Sempron2800+
阅读(84)
推荐(0)
redis学习03--Redis的持久化机制
摘要:1、Redis的事务 Redis的事务:以次事务,该成功的成功,该失败的失败。 开启事务,执行一系列命令,但是不会立即执行,会被放在一个队列中。 如果执行事务,那么这个队列中的命令全部执行。 如果取消了事务,则队列中的命令全部作废。 事务的相关命令: 使用redis-cli连接到服务端后 #开启事务
阅读全文
posted @
2021-11-01 10:50
Sempron2800+
阅读(49)
推荐(0)