自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring配置那些事

接口的默认实现类是,我们简单分析它的实现原理。//...本文在第二章中介绍了Spring配置的基本使用、第三章中介绍了Spring配置原理、第四章中介绍了日常开发中配置热更新的一些实践。

2024-06-16 21:44:25 1092 1

原创 常见限流算法及其实现

在分布式系统中,随着业务量的增长,如何保护核心资源、防止系统过载、保证系统的稳定性成为了一个重要的问题。限流算法作为一种有效的流量控制手段,被广泛应用于各类系统中。本文将详细介绍四种常见的限流算法、两种常用的限流器工具,从原理、源码的角度进行分析。

2024-03-05 20:57:03 789 1

原创 Hystrix使用及原理概述

Hystrix是Netflix开源的容错库,旨在处理分布式系统中的故障和延迟。它通过实现断路器模式、请求缓存、请求合并等功能,提供了弹性和可靠的解决方案。Hystrix能够在服务之间进行隔离,当一个服务出现故障时,它可以防止故障的扩散,提高系统的可用性和稳定性。在微服务架构中,一个请求需要调用多个服务是非常常见的,较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用的不可用达到一个阈值(Hystrix是5秒20次)断路器将会被打开。

2023-12-15 23:19:14 249

原创 Spring Cloud OpenFeign源码解析

Spring Cloud OpenFeign源码解析那么,功能如此强大的Spring Cloud OpenFeign,到底是如何实现上述的功能?本文通过源码解析,对上述功能逐一解释。

2023-09-24 15:04:53 477

原创 WSL2 安装及Docker、zsh安装

一、引言WSL 可以理解为 Windows 为用户提供的官方的Linux虚拟机工具。接下来,简单介绍安装步骤二、安装WSL2参考官方步骤1. 启用适用于 Linux 的 Windows 子系统dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart2. 检查运行 WSL 2 的要求3. 启用虚拟机功能dism.exe /online /enable-feat

2022-04-15 23:23:29 649

原创 Spring Boot整合apollo客户端

1. 依赖添加依赖 <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.7.0</version> </dependency>值得说明

2021-12-26 19:52:59 499

转载 spring boot 配置中心 apollo 动态修改mysql数据源

https://www.cnblogs.com/weiqihome/p/11939180.html

2021-12-26 19:35:19 807

原创 SpringBoot 整合MyBatis

1. 依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId&

2021-12-26 18:35:56 345

原创 spring cloud 和 spring boot对应关系

https://spring.io/projects/spring-cloud#overview

2021-12-24 22:52:11 334

原创 AQS 源码分析

一、简介AQS,即AbstractQueuedSynchronizer,抽象队列同步器。简单来说,就是通过AQS对多个线程的状态进行管理,park状态、unpark状态之间进行转换。AQS内部通过双向链表实现,线程以先进先出的顺序执行。JUC的多个应用类,内部都是通过AQS实现的。以下以ReentrantLock为例进行讲解。二、ReetrantLockReentrantLock内部有三个内部类,分为公平锁和非公平锁。而它们的基类都是Sync,Sync的父类是AQSReentrant

2021-05-18 17:03:43 153

原创 JVM 垃圾回收机制

1. 判断对象可回收1.1 引用计数法每个对象都使用一个计数器,用于记录引用该对象的次数。当引用该对象的个数为0的时候,表示该对象已经没有人可以用了,是垃圾了,就可以回收了。此方法有一个严重的缺陷,当两个对象互相引用,但是又没有外面可以引用它们时,计数器还是为1,不能被垃圾回收。1.2 可达性分析算法这是JVM采用的算法。Java 虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着 GC Root对象为起点的引用链找到该对象,找不到,表示可以回收而G

2021-05-07 22:22:53 203 1

转载 JVM 体系结构

1. 程序计数器

2021-05-07 20:34:49 62

原创 IDEA 添加快捷键模板

众所周知,写代码的时候,有很多重复的代码,每次都需要一遍又一遍的敲,特别麻烦。idea提供了一种特别方便的手段,在每次要敲同一段代码的时候,直接通过快捷键将模板写出来,改一改里面的变量即可。首先打开设置,setting-> Live Templates点击加号,选择 Live Template分别填写快捷键,描述,以及模板内容。其中,不确定的内容,可以通过$Vvariables$表示。如果是Java的方法内部的代码,就勾选Statement;如果是声明方法,就勾选Declaration.

2021-05-07 01:03:58 316

转载 ActiveMQ 消息存储和持久化

官方链接:http://activemq.apache.org/persistence之前已经简单地聊过了在代码层面,如何选择是否消息持久化链接,而在这一篇,将着眼于ActiveMQ的持久化的底层实现的选择。1. 概述持久化,就是将消息存储在本地数据文件或者数据库当中,实现关机、掉电数据也不会损失的技术。而针对ActiveMQ 来说,有几种常见的技术:AMQ Message StorekahaDBJDBC消息存储LevelDB消息存储JDBC Message Store with .

2021-05-06 20:41:07 201

转载 ActiveMQ 传输协议

这篇笔记,主要是基于尚硅谷的ActiveMQ课程,以及这位大佬的笔记。本人初学,在一边学的基础上,一边加上自己的理解写一些笔记,如果有写得不好的地方,请多担待。1. 简述ActiveMQ支持的client-broker通讯协议有:TVP、NIO、UDP、SSL、Http(s)、VM。其中配置Transport Connector的文件在ActiveMQ安装目录的conf/activemq.xml中的<transportConnectors>标签之内。vim conf/activemq.

2021-05-06 17:18:19 143

转载 Spring、Spring Boot整合Active MQ

通过Spring以及Spring Boot使得Active MQ的发送以及接收更加简单。更多的对象通过自动配置、自动注入的方式进入到IOC容器中,而我们只需要在容器中加入一些我们个性化定制的内容,比如说要发送的消息、监听器的行为等,就可以让实现自己的想要的功能。1. Spring整合Active MQ1.1 引入依赖<!-- activemq核心依赖包 --><dependency> <groupId>org.apache.activemq</.

2021-05-06 16:01:48 139

转载 消息中间件 JMS 规范

这篇笔记,主要是基于尚硅谷的ActiveMQ课程,以及这位大佬的笔记。本人初学,在一边学的基础上,一边加上自己的理解写一些笔记,如果有写得不好的地方,请多担待。1. 基本概念JMS,即Java消息服务Java消息服务指的是,两个应用程序之间进行异步通信的API,它为标准协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持Java应用程序开发。在JavaEE中,当两个应用程序使用JMS进行通信时,它们之间不是直接相连的,而是通过一个共同的消息收发服务组件关联起来以达到解耦/异步.

2021-05-06 10:12:28 99

转载 ActiveMQ Java API 入门

与其他框架一样,ActiveMQ也有一套Java的操作api。1. JMS编码总体规范JMS,即Java消息服务,与MySQL一样,有着一套编码的规范。消息(也就是图中的Msg)由生产者(也就是图中的Message Producer)发出,发送到队列(Queue)或者主题(Topic)中(也就是图中的Destination);消费者(也就是图中的Message Consumer)通过Destination接收发过来的Msg。而无论是生产者还是消费者,都要通过ConnectionFactory.

2021-05-04 20:34:47 161

转载 ActiveMQ 安装

安装很简单,ActiveMQ就是用Java写的。因此,只要linux环境下有java 1.8的环境,将activemq的包下下来,就能直接打开用了。官网下载或者在linux环境下,用wget操作wget https://mirrors.bfsu.edu.cn/apache//activemq/5.15.15/apache-activemq-5.15.15-bin.tar.gz解压tar -xvzf apache-activemq-5.15.15-bin.tar.gz进入bin文件夹,开启服.

2021-05-04 18:20:25 323

转载 消息中间件MQ 入门概述

1. 背景在微服务的背景下,项目被拆分成多个模块,模块之间可能需要互相调用。因此,RPC框架(远程调用框架)就应运而生。然而,在大型的分布式系统中,系统间的RPC交互繁杂,一个功能背后可能有上百个接口,就此就会产生一些问题...

2021-05-04 16:42:03 163

转载 Zookeeper curator框架

1. 简介curator框架在zookeeper原生API接口上进行了包装,解决了很多zooKeeper客户端非常底层的细节开发。提供zooKeeper各种应用场景(比如:分布式锁服务、集群领导选举、 共享计数器、缓存机制、分布式队列等)的抽象封装,实现了Fluent风格的API接口,是最好用,最流行的zookeeper的客户端。1.1 原生zookeeperAPI的不足连接对象异步创建,需要开发人员自行编码等待连接没有自动重连超时机制watcher一次注册生效一次不支持递归创建树形节点

2021-05-03 21:54:31 114

转载 Zookeeper 集群

1. 集群搭建本次实验基于三台CentOS主机搭建,稍改单机版搭建过程即可。首先,修改conf/zoo.conf文件,检查一下有没有这些配置信息。dataDir是用于存放数据文件的地方,按照实际情况来。下面的server用来配置集群中所有服务器的信息。该文件集群中所有文件都可以一样,只要目的地址没变就可以。#服务器对应端口号 clientPort=2181#数据快照文件所在路径 dataDir=/home/zookeeper/zookeeper-3.4.10/data#集群配置信息 #s

2021-05-03 18:15:34 61

转载 Zookeeper 分布式锁

分布式锁有多种实现方式,比如通过数据库、redis都可实现。作为分布式协同 工具ZooKeeper,当然也有着标准的实现方式。设计思路每个客户端往/Locks下创建临时有序节点/Locks/Lock_00000x客户端取得/Locks下子节点,并进行排序,判断排在最前面的是否为自己,如果自己的锁节点在第一位,代表获取锁成功如果自己的锁节点不在第一位,则监听自己前一位的锁节点。例如,自己锁节点 Lock 000000001,则监听前一个锁节点Lock 000000000监听客户端重新执行第2步.

2021-05-03 16:33:24 72

转载 Zookeeper 生成分布式唯一ID

在过去的单库单表型系统中,通常可以使用数据库字段自带的auto_increment 属性来自动为每条记录生成一个唯一的ID。但是分库分表后,就无法在依靠数据库的 auto_increment属性来唯一标识一条记录了。此时我们就可以用zookeeper在分布式环 境下生成全局唯一ID设计思路连接zookeeper服务器指定路径生成持久有序节点取序列号及为分布式环境下的唯一ID1. 实验public class GloballyUniqueId implements Watcher, Clo.

2021-05-03 14:09:03 469

转载 Zookeeper Java API

1. 概述可以通过Java的AIP作为zookeeper客户端,实现与zookeeper服务器的交互。客户端应该遵循以下步骤,与服务器进行清晰和干净的交互连接到zookeeper服务器。zookeeper服务器为客户端分配会话ID。定期向服务器发送心跳。否则,zookeeper服务器将过期会话ID,客户端需要重新连接。只要会话ID处于活动状态,就可以获取/设置znode。所有任务完成后,断开与zookeeper服务器的连接。如果客户端长时间不活动,则 zookeeper服务器将自动断开客户端

2021-05-03 13:22:43 773

转载 Zookeeper 常见命令

1. 查看节点1.1 get最简单的命令,和key value 键值对命令很像,就是用get命令。如果存在就返回值及状态。如果不存在,那就表示节点不存在。get /hadoop1.2 stat与上面的命令类似,但只是用来查询状态,不查询数据。stat /hadoop1.3 znode状态解释1.4 查看节点列表即查看节点的所有子节点ls /可以查看当前根路径的所有子节点查看某个节点的所有子节点ls /node查看某个节点的所有子节点,顺便看节点的状态l

2021-05-02 16:28:25 244

转载 Zookeeper 简介

1. what大数据生态系统里的很多组件的命名都是某种动物或者昆虫,比如hadoop就是 ????,hive就是????。zookeeper即动物园管理者,顾名思义就是管理大数据生态系统各组件的管理员2. wherezookeeper 是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调存储服务。应用场景有:维护配置信息、分布式锁服务、集群管理、生成分布式唯一ID2.1 维护配置信息以往通过配置文件保存配置信息,目前因为

2021-05-02 14:10:18 102

转载 Nginx 动静分离

1. 概念为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

2021-05-01 22:16:51 51

转载 Nginx 负载均衡

1. 概念当单个服务器无法承载巨大的访问量时,横向增加服务器数量就能解决该问题。简单来说,就是将一台服务器的承载量,分摊到多台服务器上。而将请求分发到各个服务器的过程,就叫做负载均衡。2. 实验与反向代理的方式很类似,只不过这次转发到的目标地址会有多个配置文件http {... upstream myserver { server localhost:8080; server localhost:8081; }... server { listen 80; ser

2021-05-01 20:27:34 71

转载 Nginx 配置文件

nginx 安装目录下,其默认的配置文件都放在这个目录的 conf 目录下,而主配置文件nginx.conf 也在其中,后续对 nginx 的使用基本上都是对此配置文件进行相应的修改配置文件分为三个部分:全局块、events 块、http块1. 全局块从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及.

2021-05-01 19:45:47 142

转载 Nginx 安装

安装相关依赖yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre下载nginx安装包,并解压wget https://link.zhihu.com/?target=http%3A//nginx.org/download/nginx-1.12.2.tar.gztar -xvzf nginx-1.12.2.tar.gz安装cd nginx-1.12.2./configuremake &am.

2021-05-01 19:28:27 44

转载 Redis 企业级解决方案

1. 缓存预热问题:服务器启动后迅速宕机排查:1. 请求数量较高 2. 主从之间数据吞吐量较大,数据同步操作频度较高1.1 解决方案1.1.1 前置准备工作日常例行统计数据访问记录,统计访问频度较高的热点数据利用LRU数据删除策略,构建数据留存队列例如:storm与kafka配合1.1.2 准备工作:将统计结果中的数据分类,根据级别,redis优先加载级别较高的热点数据利用分布式多服务器同时进行数据读取,提速数据加载过程热点数据主从同时预热1.1.3 实施:使用脚本程

2021-04-29 19:33:17 53

转载 Redis 集群

1. 基本概念业务发展过程中遇到的峰值瓶颈。当一台服务器的内存不足以存放所有数据时,集群就发挥作用了。集群架构:使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果作用:分散单台服务器的访问压力,实现负载均衡分散单台服务器的存储压力,实现可扩展性降低单台服务器宕机带来的业务灾难2. Redis集群结构设计其实就是利用hash,将hash的结果分割成16384个,分别存放在多台主机里面。当有数据进来的时候,先计算一下哈希值,然后决定放在哪台主机的

2021-04-29 18:07:13 60

转载 Redis 哨兵模式

1. 简介万一master宕机了,谁来决定谁来接管master?以上工作,就由哨兵来决定。1.1 哨兵哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master1.2 哨兵的作用监控:不断地检查master和slave是否正常运行。master存活监测、master与slave运行情况监测通知:当任意一台哨兵发现被监控的服务器出现问题了,就向其他哨兵、客户端发送通知自动故

2021-04-29 16:59:41 40

转载 Redis 主从复制

1. 简介主从复制即,将master中的数据,及时、有效地复制到slave中特征:一个master可以拥有多个slave,一个slave只对应一个master职责,读写分离,master负责写数据的任务,并且及时将出现变化的数据同步到slave上;slave负责承载读数据的任务。1.1 背景为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服务器上,连接在一起,并保证数据是同步的。即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redi

2021-04-29 15:24:01 60

转载 Redis 高级数据类型

1. Bitmaps这个底层的数据结构,应该就是一个一个bit。通过每一个bit,给每一位个体存储一个True或者False的状态。因此,写操作就是,给某个key的第offset个位设置值,为1或者0。读操作就是,取出来,看是1还是0,表示true或者false1.1 操作写操作。设置指定key对应偏移量上的bit值,value只能是1或0setbit key offset value读。获取指定key对应偏移量上的bit值getbit key offset对多个key进行交、并、

2021-04-29 10:14:53 31

转载 Redis 删除策略

1. 数据删除策略对于设置了有时效性的key来说,过期了,什么时候去删除,也有多种策略。有可能,有一个定时器,到期了,立马去删除。有可能,有人要用的时候,检查一下过期没有,过期了那就顺便把它删除了。也有可能,定期去随机删除。1.1 定时删除创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作优点:节约内存,到时就删除,快速释放掉不必要的内存占用缺点:CPU压力很大,无论CPU此时负载量多高,均占用CPU,会影响redis服务器响应时间和指令吞吐

2021-04-29 09:40:45 84

转载 Redis 事务

redis事务就是将一系列命令打包成一个队列之后,一起执行。中间不允许其他命令打断。1. 基本操作开启事务。此后所有命令,都会放进队列里面。multi执行事务。一次性将队列里面所有事务都执行了。exec取消事务。终止当前事务的定义,发生在multi之后,exec之前discard2. 注意事项如果在定义事务期间,出现语法错误,就直接整个事务崩了。最后也没办法执行。redis的事务没有回滚操作,执行了就是执行了。即使中间出错了,前面执行的也不会回滚。3. 锁3.1.

2021-04-28 23:21:19 51

转载 Redis 持久化

为了防止数据的丢失,确保数据安全性,将数据已不同的形式,通过文件保存下来。将当前数据状态进行保存,快照形式,存储数据结果,存储结果简单,关注点在数据。(也就是RDB)将当前数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程。(AOF)1. RDB1.1 配置相关配置文件dbfilename dump.rdb,指定该服务器保存RDB文件的文件名,一般设置为dump-端口号.rdbdir,指定保存data的文件夹(路径),通常创建一个文件夹,叫data。RD.

2021-04-28 21:36:03 55

转载 Mysql 复制

1. 复制概述复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。2. 复制原理MySQL 的主从复制原理如下从上层来看,复制分成三步:Master 主库在事务提交时,会把数据变更作为时间 Events 记录在二进制日志文件 Binlog 中。主库推送二进制日志文件 Binlog 中的

2021-04-28 10:33:25 62

空空如也

空空如也

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

TA关注的人

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