自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Lock接口

https://www.cnblogs.com/myseries/p/10784076.html

2024-06-30 12:40:43 92

原创 select for update

for update加锁是行锁还是表锁,需要看查询的where条件后面的字段,如果有索引,则加的行锁,如果是普通字段,则加的是表锁。

2024-06-02 11:31:21 207

原创 mha架构

分享篇 | MySQL MHA架构介绍 - 墨天轮MySQL 实现高可用架构之 MHA - 知乎

2024-04-06 22:08:32 120

原创 SSL/TLS协议

SSL 与 TLS — 通信协议之间的区别 — AWS什么是SSL和TLS-SSL和TSL的工作原理-SSL和TSL的概念-华为云获取 SSL/TLS 证书 | EMQX 文档

2024-04-05 21:18:10 407

原创 多数据源切换以及事务处理

SpringBoot 多数据源切换(超级简单)_springboot数据源切换_Tz.的博客-CSDN博客springboot dynamic多数据源demo以及常见切换、事务问题_一片星空~的博客-CSDN博客

2023-08-27 14:48:02 245

转载 TCP黏包

也有的说是因为UDP底层使用的可以不是IP协议,毕竟 IP 头里带了总长度,正好可以用于计算 UDP 数据的长度,万一 UDP 的底层不是IP层协议,而是其他网络层协议,就不能继续这么计算了。但我觉得,最重要的原因是,IP 层是网络层的,而 UDP 是传输层的,到了传输层,数据包就已经不存在IP头信息了,那么此时的UDP数据会被放在 UDP 的。此时读取第一个数据报的时候,会先读取到 UDP 头部,如果我说错了,请把我的这篇文章转发给更多的人,让大家记住这个满嘴胡话的人,在关注之后狠狠的私信骂我,拜托了!

2023-07-05 10:50:41 154

转载 CompletableFuture用法详解

JAVA支持的多线程开启方式根据Oracle官方出具的Java文档说明,创建线程的方式只有两种:继承Thread或者实现Runnable接口。 但是这两种方法都存在一个缺陷,没有返回值,也就是说我们无法得知线程执行结果。虽然简单场景下已经满足,但是当我们需要返回值的时候怎么办呢? Java 1.5 以后的Callable和Future接口就解决了这个问题,我们可以通过向线程池提交一个Callable来获取一个包含返回值的Future对象,从此,我们的程序逻辑就不再是同步顺序。下面是Java8实战书籍

2022-05-24 13:36:34 9029

转载 Java异步调用的几种方式

一、通过创建新线程 二、通过线程池 三、通过@Async注解 四、通过CompletableFuture日常开发中,会经常遇到说,前台调服务,然后触发一个比较耗时的异步服务,且不用等异步任务的处理结果就对原服务进行返回。这里就涉及的Java异步调用的一个知识。下面本文尝试将Java异步调用的多种方式进行归纳。一、通过创建新线程首先的我们得认识到,异步调用的本质,其实是通过开启一个新的线程来执行。如以下例子: 1 2 3 4 5 6

2022-05-24 10:58:12 4298

原创 java循环遍历手动提交事务

场景:遍历一个list集合,在集合里面手动开启和提交或者回退事务@Resourceprivate PlatformTransactionManager transactionManager;for (A a :Alist){// 手动开启事务初始化TransactionStatus statu = null;statu = transactionManager.getTransaction(new DefaultTransactionDefinition());try{/

2022-04-19 13:48:32 1643

转载 centos7安装Docker详细步骤

一、安装前必读在安装 Docker 之前,先说一下配置,我这里是Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo1.查看当前的内核版本uname -r我这里是3.10 ,满足条件。2.使用 root 权限更新 yum 包(生产环境中此步操作需慎重,看自己情况,学习的话随便搞)yum -y update这个命令不是必须执行的,看个人情况,.

2022-03-11 08:38:52 978

转载 MHA高可用技术

1. 主从复制架构演变介绍1.1 基本结构(1)一主一从(2)一主多从(3)多级主从(4)双主(5)循环复制1.2 高级应用架构演变1.2.1 高性能架构读写分离架构(读性能较高)代码级别MySQL proxy (Atlas,mysql router,proxySQL(percona),maxscale)、amoeba(taobao)xx-dbproxy等。分布式架构(读写性能都提高):分库分表——cobar--->TDDL(头都大了),DRDS

2022-03-10 10:09:26 210

原创 基于docker的mysql主从复制搭建

步骤:前期准备 配置主服务器(Master) 配置从服务器(Slave) 完成Master和Slave的连接 测试配置是否成功前期准备:①下载mysql镜像:docker pull mysql:5.7.36②创建挂载目录主:mkdir /usr/local/src/mysql/mysql_master/logmkdir /usr/local/src/mysql/mysql_master/datamkdir /usr/local/src/mysql/mysql_ma

2022-03-01 16:28:34 979

原创 docker 镜像导入导出save load

导出镜像为文件,文件的存储地址为/home路径下,例子:docker save e462d4a15ad9 > /home/elk.tar将tar文件导入到linux:docker load < elk.tar标记本地仓库:docker tag 07d2f8030ad1 elk:7.15.0

2022-02-10 11:12:16 431

转载 Centos8安装docker遇到的问题:CentOS Linux 8 - AppStream 错误:为仓库 AppStream下载元数据失败

问题:如果你使用CentOS 8,你可能已经注意到,从2022年1月31日开始,安装yum包不再工作与错误镜像列表中没有url,类似如下:Error: Failed to download metadataforrepo'appstream': Cannot prepare internal mirrorlist: No URLsinmirrorlist如果你使用基于centos的Docker容器镜像,也会遇到同样的问题。原因在2022年1月31日,CentOS团队终于从...

2022-02-09 09:35:24 4290 6

原创 微服务降级和熔断的理解

以hystrix为例子:Hystrix三大作用:服务降级(Fallback):比如当服务器忙,请稍后再试,不让客户端等待并立刻返回一个友好提示,Fallback,会发生降级的几种情况:程序运行异常、超时、服务熔断触发服务降级。服务熔断(Break):类比保险丝达到最大服务访问后,直接拒绝访问,拉闸限电,然后调用服务降级的方法并返回友好提示。三个步骤先进行服务的降级、进而熔断、恢复调用链路。缺省是5秒内20次调用失败,就会启动熔断机制。实时的监控:会持续地记录所有通过Hystrix发起的请求执

2022-01-28 17:12:36 1594

转载 Spring Cloud组件那么多超时设置,如何理解和运用?

前言Spring Cloud 作为微服务解决方案 全家桶,集合了丰富的微服务组件,如Gateway、Feign、Hystrix,Ribbon、OkHttp、Eureka等等。而作为服务调用环节涉及到的几个组件:Feign、Hystrix,Ribbon、OkHttp 都有超时时间的设置,Spring Cloud 是如何优雅地把它们协调好呢?本文将为你揭晓答案。1. Spring Cloud 中发起一个接口调用,经过了哪些环节?Spring Cloud 在接口调用上,大致会经过如下几个组件配合: F

2022-01-28 17:04:23 901

转载 微服务的用户认证与授权杂谈(上)

有状态 VS 无状态几乎绝大部分的应用都需要实现认证与授权,例如用户使用账户密码登录就是一个认证过程,认证登录成功后系统才会允许用户访问其账户下的相关资源,这就是所谓的授权。而复杂点的情况就是用户会有角色概念,每个角色所拥有的权限不同,给用户赋予某个角色的过程也是一个授权过程。用户的登录态在服务器端分为有状态和无状态两种模式,在单体分布式架构的时代,我们为了能让Session信息在多个Tomcat实例之间共享,通常的解决方案是将Session存储至一个缓存数据库中。即下图中的Session Stor

2022-01-27 08:49:55 1559

转载 SpringBoot使用令牌桶算法+拦截器+自定义注解+自定义异常实现简单的限流

令牌桶 创建令牌类 初始化令牌桶 自定义注解以及异常 配置拦截器 AOP全局异常处理 测试 总结 令牌桶在高并发的情况下,限流是后端常用的手段之一,可以对系统限流、接口限流、用户限流等,本文就使用令牌桶算法+拦截器+自定义注解+自定义异常实现限流的demo。令牌桶思想大小固定的令牌桶可自行以恒定的速率源源不断地产生令牌。如果令牌不被消耗,或者被消耗的速度小于产生的速度,令牌就会不断地增多,直到把桶填满。后面再产..

2022-01-25 10:02:27 887

原创 管理系统登录密码的传输及保存

1.密码的传输。前端传过来的密码应该用密文传输,不应该用明文,此时可以有rsa算法,rsa是一个可逆的非对称加密算法,比如密码是123456,前端经过公钥加密为“pdjhdgb645”,然后把“pdjhdgb645”传给后台,后台使用私钥去解密,得到密码123456。2.密码的保存。密码保存,一般是使用MD5不可逆加密算法。后台拿到私钥解密的密码,就通过对密码进行加盐的md5加密,然后把加密后的字符串写进数据库的password字段。进行密码验证的时候,对密码进行加盐md5加密,和数据库中保存的密码进行

2022-01-25 09:13:51 4641

转载 RocketMQ之console监控平台使用详解

参考链接:RocketMQ之console监控平台使用详解(三) - 老郭种树-老郭种树二、模块1.OPS这里很容易看清楚,双击标签可以修改NameSer的IP+Port。这里我测试过修改端口,发现重新发送一样的消息,还是能消费。其实也能理解,因为NameSer改变了,也只是使得Broker不能从本地获取最新的路由信息。但是本地还是缓存了路由信息,所以一样的Topic还是能获取到路由信息,可以获取到路由信息还是能发送到Brokder。所以这里我的测试是一次失败的对照测试,

2022-01-12 10:53:38 2851

转载 RocketMQ高阶业务问题及解决方案

RocketMq全链路消息零丢失方案发送消息到mq零丢失: 事务消息 Broker 存储消息零丢失:同步刷盘+主从机制 Consumer 消费消息零丢失:手动提交offset + 自动故障转移Broker消息零丢失方案:同步刷盘 + Raft协议主从同步Broker 是负责存储消息的,怎么保证消息发送到Broker后,一定不会丢失呢?刷盘失败首先RocketMq一般情况下,为了保证高吞吐量,使用的是异步刷盘策略。但是这种策略会出现消息写入os cache成功,但是异步写入磁盘的时候失败

2021-11-29 23:25:37 743

转载 java IO流

数据流的基本概念几乎所有的程序都离不开信息的输入和输出,比如从键盘读取数据,从文件中获取或者向文件中存入数据,在显示器上显示数据。这些情况下都会涉及有关输入/输出的处理。在Java中,把这些不同类型的输入、输出源抽象为流(Stream),其中输入或输出的数据称为数据流(Data Stream),用统一的接口来表示。IO 流的分类数据流是指一组有顺序的、有起点和终点的字节集合。按照流的流向分,可以分为输入流和输出流。注意:这里的输入、输出是针对程序来说的。输出:把程序(内存)中的内容输出到

2021-11-29 23:17:09 98

转载 分布式事务与Seate框架(3)——Seata的AT模式实现原理

一、AT模式介绍  同样地,还是得先复习下分布式事务的相关理论部分:AT模式是Seata最主推的分布式事务且基于XA演进而来的解决方案,主要有三个角色:TM、RM和TC,其中TM和RM作为Seata的客户端和业务集成,TC作为Seata服务器独立部署。TM向TC注册一个全局事务,并生成全局唯一的XID;在AT模式下,数据库资源被当做RM,访问RM时,Seata会对请求进行拦截;每个本地事务提交时,RM会向TC(Transaction Coordinator,事务协调器)注册一个分支事务。  从三个角

2021-11-25 20:48:27 1264

转载 分布式事务与Seate框架(1)——分布式事务理论

一、分布式事务理论模型在介绍相应的分布式事务理论模式前,先放出如下图,对分布式事务常见的解决方案作对比:  最主要的区别就是对一致性的要求:是强一致性还是最终一致性,根据这个核心展开来介绍相关的几种理论介绍1.X/Open分布式事务模型  X/Open DTP是由X/Open组织提出的一套分布式事务的标准,这个标准提出使用了2PC(Two-Phase-Commit)来保证分布式事务的完整性。X/Open DTP包含三种角色:AP: Application 表示应用程序 RM

2021-11-25 20:46:13 599

转载 分布式事务与Seate框架(2)——Seata实践

一、实践准备工作1、框架介绍实践主要是以“订单-库存-账户”系统演示,主要的框架图如下,图中各个部分充当的分布式事务角色已标明。      具体流程:  1)用户登录XXX商品购物系统(假设已有账户),  2)点击购买某个商品,发起创建订单请求;  3)检查购买商品的库存量,如果不够则创建订单失败提示库存不足;否则锁定该商品---->减少库存--->创建订单;  4)订单创建成功后点击付款(或直接付款无需点击,实际上整个Demo中下单之后模拟立马支付,并不会点

2021-11-25 20:17:04 584

转载 单例模式模式

懒汉式,线程不安全当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样教我们的。 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Si

2021-11-24 19:14:53 77

原创 面试知识点

1.重定向和请求转发区别:1.RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。2.转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变;3.转发是服务器行为,重定向是客户端

2021-11-21 00:04:11 46

原创 Mybatis和jdbc的执行流程

JDBC(Java Data Base Connectivity, Java 数据库连接)是一种用于执行 SQL 语句的 Java API,是 Java 应用连接各种关系型数据库的基本的接口。可以为多种关系数据库提供统一访问。JDBC执行过程一:引包在执行JDBC前,首先我们要导入MySQL jar包创建文件夹lib,并导入该包二:加载驱动Class.forName(“com.mysql.jdbc.Driver”);三:建立连接connection = DriverManage

2021-11-17 21:39:07 1304

转载 redis内存淘汰算法,LRU,LFU

Redis缓存淘汰策略与Redis键的过期删除策略并不完全相同,前者是在Redis内存使用超过一定值的时候(一般这个值可以配置)使用的淘汰策略;而后者是通过定期删除+惰性删除两者结合的方式淘汰内存过期键的。这里参照官方文档的解释重新叙述一遍过期删除策略:当某个key被设置了过期时间之后,客户端每次对该key的访问(读写)都会事先检测该key是否过期,如果过期就直接删除;但有一些键只访问一次,因此需要主动删除,默认情况下redis每秒检测10次,检测的对象是所有设置了过期时间的键集合,每次从这个集合中随机检

2021-11-16 11:04:33 316

转载 TCC分布式事务的实现原理(补偿机制)

核心思想是:针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作。分为三个阶段:Try 阶段:主要是对业务系统做检测(一致性)及资源预留(准隔离性) Confirm 阶段:主要是对业务系统做确认提交,Try阶段执行成功并开始执行 Confirm阶段时,默认Confirm阶段是不会出错的。即:只要Try成功,Confirm一定成功。(Confirm 操作满足幂等性。要求具备幂等设计,Confirm 失败后需要进行重试。 ) Cancel 阶段主要是在业务执行错误,需要回滚的状态下执行的业务取.

2021-11-09 02:14:45 3438 1

转载 Mysql主从复制,高可用

参考文档:Mysql集群常见方案_一点一滴g的博客-CSDN博客_mysql集群方案mysql5.7集群方案对比_laogouhuli的博客-CSDN博客_mysql集群方案对比1 单机 =》集群随着数据量的增大,读写并发的增加,系统可用性要求的提升,单机 MySQL 出现危机:容量问题,难以扩容,考虑数据库拆分、分库分表 读写压力,QPS 过大,特别是分析类需求会影响到业务事务,考虑多机集群、主从复制 高可用性不足,易宕机,考虑故障转移、MHA/MGR/Orchestrator

2021-09-25 02:05:00 411

转载 MySQL数据库之分库分表方案

一、数据库瓶颈1、IO瓶颈2、CPU瓶颈二、分库分表1、水平分库2、水平分表3、垂直分库4、垂直分表三、分库分表工具四、分库分表步骤五、分库分表问题1、非partition key的查询问题(水平分库分表,拆分策略为常用的hash法)2、非partition key跨库跨表分页查询问题(水平分库分表,拆分策略为常用的hash法)3、扩容问题(水平分库分表,拆分策略为常用的hash法)六、分库分表总结一、数据库瓶颈↑不管是IO瓶颈,还是.

2021-09-24 23:26:03 2088

转载 数据库分库分表思路

一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操

2021-09-24 22:55:08 4268

转载 Java多线程编程基础(原子性,可见性和有序性)

文章引用:1https://www.jianshu.com/p/cf57726e77f22https://blog.csdn.net/eff666/article/details/66473088当前文章可以结合下面链接一起了解一下:https://blog.csdn.net/u013412772/article/details/80107643在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。一、原子性即一个操作或者多个操作,要么全..

2021-07-08 21:05:04 150

原创 jvm调优

调优的目的:减少full GC的执行时间和执行次数jvm调优的基本原则:JVM调优是一个手段,但并不一定所有问题都可以通过JVM进行调优解决,因此,在进行JVM调优时,我们要遵循一些原则:大多数的Java应用不需要进行JVM优化; 大多数导致GC问题的原因是代码层面的问题导致的(代码层面); 上线之前,应先考虑将机器的JVM参数设置到最优; 减少创建对象的数量(代码层面); 减少使用全局变量和大对象(代码层面); 优先架构调优和代码调优,JVM优化是不得已的手段(代码、架构层面

2021-06-25 10:22:41 735

原创 Https的原理

HTTPS 的出发点是解决HTTP明文传输时信息被篡改和监听的问题。为了兼顾性能和安全性,使用了非对称加密+对称加密的方案。 为了保证公钥传输中不被篡改,又使用了非对称加密的数字签名功能,借助CA机构和系统根证书的机制保证了HTTPS证书的公信力。Https的验证过程:证书验证+非对称加密+对称加密https://blog.csdn.net/liuxingrong666/article/details/83869161https://zhuanlan.zhihu.com/p/1.

2021-06-16 16:23:16 54

原创 nacos

简述Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。主要用来做服务治理(服务注册和发现)和配置管理,nacos=eureka+configNacos主要提供以下四大功能:1. 服务发现与服务健康检查Nacos使服务更容易注册,并通过DNS或HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防 止向不健康的主机或服务实例发送请求。2. 动态配置管理动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配.

2021-04-27 23:51:12 269

原创 微服务网关gateway

简述Spring Cloud Gateway 是 Spring Cloud 的一个子项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 的方式提供了网关基本的功能,例如:安全,监控/

2021-04-26 00:16:59 550 4

原创 微服务网关

简述API网关是一个服务器,是系统对外的唯一入口,隔离外部访问与内部系统的作用。作用类似于银行和证券领域常见的前置机系统。服务网关 = 路由转发 + 过滤器1、路由转发:接收一切外界请求,转发到后端的微服务上去;2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。为什么需要网关不同的微服务一般有不同的网络地址,而外部的客户端可能需要调用多个服务的接口才能完成一个业务需求。比如一个电影购票的.

2021-04-25 23:42:46 163

原创 RocketMQ(三)

RocketMQ如何保证不丢失数据我们将消息流程分为如下三大部分,每一部分都有可能会丢失数据。生产阶段:Producer通过网络将消息发送给Broker,这个发送可能会发生丢失,比如网络延迟不可达等。 存储阶段:Broker肯定是先把消息放到内存的,然后根据刷盘策略持久化到硬盘中,刚收到Producer的消息,再内存中了,但是异常宕机了,导致消息丢失。 消费阶段:消费失败了其实也是消息丢失的一种变体吧。Producer生产阶段①采取send()同步发消息。 有三种send方法,同步发.

2021-04-23 23:10:19 123

空空如也

空空如也

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

TA关注的人

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