自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式第一课-单例模式(懒汉模式和饿汉模式)

个人理解:单例模式实际就是通过类加载的方式获取到一个对象,并且保证这个对象在使用中只有一个,不允许再次被创建。

2023-11-02 15:26:16 957

原创 ELK整合springboot(第二课)

/</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</创建一个最简单的控制层,输出日志修改application.properties默认配置,给这个项目起个名字创建logback-spring.xml文件,修改destination这个改成自己的服务器地址,端口是logstash同步es的端口,可以看第一节课</</</</</</</</</</</</</</</

2023-10-01 11:32:53 1487

原创 elasticsearch+logstash+kibana整合(ELK的使用)第一课

【代码】elasticsearch+logstash+kibana整合(ELK的使用)第一课。

2023-09-30 22:57:51 1899

原创 RocketMQ第二课-核心编程模型以及生产环境最佳实践

​ 上一章节我们从试验整理出了RocketMQ的消息模型,这也是我们使用RocketMQ时最直接的指导。

2023-08-06 16:36:57 736

原创 RocketMQ第一课-快速实战以及集群架构搭建

​ RocketMQ是阿里巴巴开源的一个消息中间件,在阿里内部历经了双十一等很多高并发场景的考验,能够处理亿万级别的消息。2016年开源后捐赠给Apache,现在是Apache的一个顶级项目。​ 早期阿里使用ActiveMQ,但是,当消息开始逐渐增多后,ActiveMQ的IO性能很快达到了瓶颈。于是,阿里开始关注Kafka。但是Kafka是针对日志收集场景设计的,他的高级功能并不是很贴合阿里的业务场景。

2023-07-25 01:28:01 2156 2

原创 kafka第三课-可视化工具、生产环境问题总结以及性能优化

https://pan.baidu.com/s/1qYifoa4 密码:el4o。

2023-07-16 23:59:07 36381 5

原创 Kafka第二课-代码实战、参数配置详解、设计原理详解

kafka有两个选举,上面那个是选举整个集群的控制器,和这个选取单个分区Partition的Leader不是一回事,不要混淆!!!

2023-07-16 14:35:55 2177

原创 kafka第一课-Kafka快速实战以及基本原理详解

​ 1、Topic是一个逻辑概念,Producer和Consumer通过Topic进行业务沟通。​ 2、Topic并不存储数据,Topic下的数据分为多组Partition,尽量平均的分散到各个Broker上。每组Partition包含Topic下一部分的消息。每组Partition包含一个Leader Partition以及若干个Follower Partition进行备份,每组Partition的个数称为备份因子 replica factor。

2023-07-11 23:44:53 1712 1

原创 zookeper第二三课-Zookeeper经典应用场景实战

优点:ZooKeeper分布式锁(如InterProcessMutex),具备高可用、可重入、阻塞锁特性,可解决失效死锁问题,使用起来也较为简单。缺点:因为需要频繁的创建和删除节点,性能上不如Redis。在高性能、高并发的应用场景下,不建议使用ZooKeeper的分布式锁。而由于ZooKeeper的高可靠性,因此在并发量不是太高的应用场景中,还是推荐使用ZooKeeper的分布式锁。

2023-07-09 23:44:36 487 1

原创 zookeeper第一课-Zookeeper特性与节点数据类型详解

同一级节点 key 名称是唯一的 已存在/lock节点,再次创建会提示已经存在创建节点时,必须要带上全路径session 关闭,临时节点清除自动创建顺序节点watch 机制,监听节点变化事件监听机制类似于观察者模式,watch 流程是客户端向服务端某个节点路径上注册一个 watcher,同时客户端也会存储特定的 watcher,当节点数据或子节点发生变化时,服务端通知客户端,客户端进行回调处理。特别注意:监听事件被单次触发后,事件就失效了。delete 命令只能一层一层删除。

2023-07-05 23:16:15 556 1

原创 rabbitmq第四课-RabbitMQ高可用集群架构详解以及生产环境最佳实践

之前通过单机环境搭建起来的RabbitMQ服务有一个致命的问题,那就是服务不稳定的问题。如果只是单机RabbitMQ的服务崩溃了,那还好,大不了重启下服务就是了。但是如果是服务器的磁盘出问题了,那问题就大了。因为消息都是存储在Queue里的,Queue坏了,意味着消息就丢失了。这在生产环境上肯定是无法接受的。而RabbitMQ的设计重点就是要保护消息的安全性。所以RabbitMQ在设计之处其实就采用了集群模式来保护消息的安全。基础的思想就是给每个Queue提供几个备份。

2023-06-26 22:46:17 2123 2

原创 rabbitmq第三课-RabbitMQ高级功能详解以及常用插件实战

实际上是可以选择三种队列类型的,classic经典队列,Quorum仲裁队列,Stream流式队列。后面这两种队列也是RabbitMQ在最近的几个大的版本中推出的新的队列类型。3.8.x推出了Quorum仲裁队列,3.9.x推出了Stream流式队列。这些新的队列类型都是RabbitMQ针对现代新的业务场景做出的大的改善。最明显的,以往的RabbitMQ版本,如果消息产生大量积累就会严重影响消息收发的性能。而这两种新的队列可以极大的提升RabbitMQ的消息堆积性能。

2023-06-24 22:19:21 1977 1

原创 rabbitmq第二课-RabbitMQ核心编程模型以及消息应用场景详解

不过,SpringBoot集成RabbitMQ的方式是按照Spring的一套统一的MQ模型创建的,因此SpringBoot集成插件中对于生产者、消息、消费者等重要的对象模型,与RabbitMQ原生的各个组件有对应关系,但是并不完全相同。Producer.basicPublish方法是没有返回值的,也就是说,一次发送消息是否成功,应用是不知道的,这在业务上就容易造成消息丢失。RabbitMQ的消息可靠性是非常高的,但是他以往的机制都是保证消息发送到了MQ之后,可以推送到消费者消费,不会丢失消息。

2023-06-24 00:20:55 1730

原创 rabbitmq第一课-rabbitmq的快速安装以及核心概念

1.什么是MQ?为什么要用MQ?消息队列是一种在应用程序之间传递消息的技术。它提供了一种异步通信模式,允许应用程序在不同的时间处理消息。消息队列通常用于解耦应用程序,以便它们可以独立地扩展和修改。在消息队列中,消息发送者将消息发送到队列中,然后消息接收者从队列中接收消息。这种模式允许消息接收者按照自己的节奏处理消息,而不必等待消息发送者处理完消息。常见的消息队列包括RabbitMQ、Kafka和ActiveMQ等。消息的三大要素:异步、解耦、削峰。2.MQ的优缺点系统可用性降低。

2023-06-22 22:19:21 1361

原创 shardingsphere第四课shardingsphere-proxy的使用

由于ShardingSphere是需要操作分布式的数据库集群,所以数据库内部的本地事务机制是无法保证ShardingProxy中的事务安全的,这就需要引入分布式事务管理机制,保证ShardingProxy中的SQL语句执行的原子性。使用 ShardingSphere-JDBC,需要在业务代码中编写分库分表规则配置,这会使代码显得繁琐,且一旦规则变更,需要修改大量代码。当使用 ShardingSphere-JDBC 时,需要在代码中直接编写分库分表的逻辑,如果使用 ORM 框架,会产生冲突。

2023-06-20 00:07:09 638

原创 shardingsphere第三课各种功能点及核心源码

分片审计功能是针对数据库分片场景下对执行的 SQL 语句进行审计操作。分片审计既可以进行拦截操作,拦截系统配置的非法 SQL 语句,也可以是对 SQL 语句进行统计操作。目前ShardingSphere内置的分片审计算法只有一个,DML_SHARDING_CONDITIONS。他的功能是要求对逻辑表查询时,必须带上分片键。当该查询没有带上分片id时,就会报错带上分片id时,没有问题。

2023-06-18 19:57:10 527

原创 shardingsphere第二课-shardingsphere-jdbc的基本使用及各种分片策略

在之前的示例中就介绍了ShardingSphere提供的MOD、HASH-MOD这样的简单内置分片策略,standard、complex、hint三种典型的分片策略以及CLASS_BASED这种扩展分片策略的方法。为什么要有这么多的分片策略,其实就是以为分库分表面临的业务场景其实是很复杂的。即便是ShardingSphere,也无法真的像MySQL、Oracle这样的数据库产品一样,完美的兼容所有的SQL语句。

2023-06-18 01:16:05 1116

原创 shardingsphere第一课-前置课程-Mysql的集群搭建以及多数据源管理

不足:dynamic数据源无法保证多个事务情况,但是我们自己也可以拓展,查看源码,他只是针对一个数据源的链接执行的提交事务或者回滚事务,我们可以拓展获取到所有的数据源事务,一起提交或者回滚,MyBatis-Plus框架的开发者就开发了这样的一个框架DynamicDataSource,可以简化多数据源访问的过程。MASTER_HOST对应ip地址,实际是master的mysql。MASTER_LOG_POS对应的游标,从哪复制主数据,看2.5。MASTER_USER配置的master上的从用户,

2023-06-17 17:29:44 851

原创 Redis第十章 Redis HyperLogLog与事务、Redis 7.0前瞻

HyperLogLog 基于概率论中伯努利试验并结合了极大似然估算方法,并做了分桶优化。实际上目前还没有发现更好的在大数据场景中准确计算基数的高效算法,因此在不追求绝对准确的情况下,使用概率算法算是一个不错的解决方案。概率算法不直接存储数据集合本身,通过一定的概率统计方法预估值,这种法可以大大节省内存,同时保证误差控制在一定范围内。目前用于基数计数的概率算法包括:Linear Counting(LC):早期的基数估计算法,LC 在空间复杂度方面并不算优秀;

2023-06-11 17:43:20 798

原创 redis第九章-Redis队列Stream、Redis6多线程详解

反应”器名字中”反应“的由来:“反应”即“倒置”,“控制逆转”,具体事件处理程序不调用反应器,而向反应器注册一个事件处理器,表示自己对某些事件感兴趣,有时间来了,具体事件处理程序通过事件处理器对某个指定的事件发生做出反应;这种控制逆转又称为“好莱坞法则”(不要调用我,让我来调用你)

2023-06-10 22:01:07 728

原创 redis第五第六章-redis并发缓存架构和性能优化

由于缓存层承载着大量请求, 有效地保护了存储层, 但是如果缓存层由于某些原因不能提供服务(比如超大并发过来,缓存层支撑不住,或者由于缓存设计不好,类似大量请求访问bigkey,导致缓存能支撑的并发急剧下降), 于是大量请求都会打到存储层, 存储层的调用量会暴增, 造成存储层也会级联宕机的情况。解释:当线程1更新了数据库,此时因为网络或者业务逻辑等各种原因,还没有更新缓存,这时线程2也更新了这条数据,并且更新了缓存,最后线程1才更新了缓存,这样就会出现数据不一致的情况。

2023-06-05 00:21:33 769

原创 redis第四章-redis下redisson分布式锁原理和源码分析

如图,当线程1获得锁之后,会执行业务流程代码,将锁的持有时间设置为30秒,同时每隔10秒检查是否还持有锁,如果业务流程代码没有执行完,就会延长持有锁时间再到30秒,直到执行完成释放锁。因为传入的KEYS[1]代表的是传入的锁key,ARGV[1]代表的是时间,看下图,可以看到默认的是30秒,ARGV[2]代表的是线程id+唯一标识uuid组合,方便删除锁使用的。,这个用了juc的信号量,简单理解就是会在这里等待25s,这25s是等待状态,不会占用cpu,当25s过后,就会再次执行while循环。

2023-06-04 01:19:50 489

原创 redis第三章-redis集群redisCluster

Redis Cluster集群搭建及原理

2023-06-03 00:42:58 534

原创 redis第二章-第二课-主从模式和哨兵模式原理

5.总结,实际这是个伪主从复制,使用的同一个redis,只是不同配置罢了,但大体配置都是一样的,就是改日志文件,存储路径这些,当如果是多台服务器的话,或者一台服务器两个redis的话,是不需要改这些文件配置的,只需要配置第3步,指定主节点的地址和端口号就行了。1.复制redis有个sentinel.conf文件,也是将port,daemonize(后台启动),pidfile,logfile,dir改为对应端口号的地址。2、修改该文件,修改端口号,线程文件,日志文件,以及指定文件存放目录。

2023-06-01 22:36:49 637

原创 redis第二章-第一课-持久化rdb和aof以及混合模式

如果开启了混合持久化,AOF在重写时,不再是单纯将内存数据转换为RESP命令写入AOF文件,而是将重写这一刻之前的内存做RDB快照处理,并且将RDB快照内容和增量的AOF修改内存数据的命令存在一。起,都写入新的AOF文件,新的文件一开始不叫appendonly.aof,等到重写完新的AOF文件才会进行改名,覆盖原有的AOF文件,完成新旧两个AOF文件的替换。么,这块数据就会被复制一份,生成该数据的副本。注意,如果执行带过期时间的set命令,aof文件里记录的是并不是执行的原始命令,而是记录key过期的。

2023-05-31 21:17:27 604

原创 redis的使用第一章

Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。Redis的IO多路复用:redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。

2023-05-30 22:53:00 493

原创 强软弱虚引用~趴的尚硅谷周杨老师的代码,给自己留个笔记

JUC强软弱虚引用

2022-11-14 18:37:57 70

原创 docker常用命令

运行centos docker run -it centos /bin/bash

2021-06-13 23:54:41 136 1

原创 window查询被占用的端口

一 查找被占用的端口解决办法如下:按win+R输入cmd打开控制台,输入netstat -ano|findstr 8080二在任务管理器结束对应的pid,上图标红的就是pid,结束任务即可

2021-06-08 10:24:19 112

原创 jdk安装和卸载(linux)

安装jdk的npm包rpm -ivh jdk-8u291-linux-x64.rpm测试java -version查询jdk的信息rpm -qa|grep jdk卸载 后面是自己对应的jdkrpm -e --nodeps jdk1.8.0_121-1.8.0_121-fcs.x86_64

2021-06-06 16:32:18 161

原创 docker的安装步骤(centos)

第一:卸载旧版本yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \

2021-06-06 15:18:07 261

原创 idea显示所有的打开文件

2021-06-02 14:33:07 5130

原创 刷新

curl -X POST “http://localhost:3344/actuator/bus-refresh”

2021-05-15 23:03:55 70

原创 consul启动命令

consul --version #查看版本命令consul agent -dev #启动命令

2021-05-05 12:22:40 1697

原创 springboot整合swagger

创建一个springboot工程,导入web包和swagger需要的包<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

2021-04-17 23:15:44 89

原创 GIt在Idea常用操作以及常用命令

Git中Idea常用的命令,方便使用,做个记录1.提交到暂存区E:\IdeaProject\gitstudy>git add .2.提交到本地仓库E:\IdeaProject\gitstudy>git commit -m "第三次代码提交"3.提交到远程仓库(码云)(origin是当前用户,master是分支)E:\IdeaProject\gitstudy>git push origin master想要和远程仓库进行绑定的操作办法1.将代码下载到一个目录$ git

2021-04-15 13:55:42 140

原创 Nginx配置反向代理和负载均衡(简单配置)

编辑打开nginx.conf配置文件

2021-04-14 17:02:39 59

原创 nginx常用命令(window和linux)

windows常用命令当前目录下1、启动:start nginx或nginx.exe2、停止:nginx.exe -s stop 或nginx.exe -s quitstop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。3、重新载入Nginx:nginx.exe -s reload4、如果停止命令还是能够访问端口号,就执行以下命令打开CMD输入:taskkill /fi "imagename eq nginx.EXE" /

2021-04-14 16:25:17 108

原创 rabbitMq绑定关系关系

rabbitMq(随手记录,防止忘记)rabbitmq的三种绑定关系fanou:所有消费者都可以获取direct:绑定路由key,相当于sql语句的 =topic:绑定通配符key,消费者根据通配符获取对应的消息headers:根据key-value进行绑定,消费者可以根据多个key进行获取消息...

2021-04-11 11:56:34 475

原创 rabbitMq的常用命令和安装方法

借用狂神说的视频,此次纯属为了以后自己回忆,如有侵权,请联系我删除,有的命令直接复制报错,如对您有所帮助,请您照着敲,不可直接复制https://www.bilibili.com/video/BV1dX4y1V73G?p=8&spm_id_from=pageDriver常用命令#启动rabbitmq[root@renxh rabbitmq]# systemctl start rabbitmq-server #查看rabbitmq的状态[root@renxh rabbitmq]# s

2021-04-10 22:24:17 183

空空如也

空空如也

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

TA关注的人

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