自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr.Lv先生的书屋

记录一下自己平时的学习与生活。

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

原创 Dubbo-01 高级特性

1. SPI1.1 SPI简介SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现,简单来说,它就是一种动态替换发现的机制。使用SPI机制的优势是实现解耦,使得第三方服务模块的装配控制逻辑与调用者的业务代码分离。1.2 JDK中的SPIJava中如果想要使用SPI功能,先提供标准服务接口,然后再提供相关接口实现和调用者。这样就可以通过SPI机制中约定好的信息进行查询相应的接口实现。SPI遵循如下约定

2021-03-06 17:37:58 160

原创 Rabbitmq-02 工作流程和消息保障

Rabbitmq工作流程详解生产者发送消息的流程生产者连接RabbitMQ,建立TCP连接( Connection),开启信道(Channel) 2. 生产者声明一个Exchange(交换器),并设置相关属性,比如交换器类型、是否持久化等生产者声明一个队列井设置相关属性,比如是否排他、是否持久化、是否自动删除等生产者通过 bindingKey (绑定Key)将交换器和队列绑定( binding )起来生产者发送消息至RabbitMQ Broker,其中包含 routingKey (路由键)、交换

2021-03-06 14:40:07 282

原创 Rabbitmq-01 概念和结构

消息中间件概念消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。面向消息的系统(消息中间件)是在分布式系统中完成消息的发送和接收的基础软件。异步处理、流量削峰、限流、缓冲、排队、最终一致性、消息驱动等需求的场景都可以使用消息中间件。自定义消息中间件**BlockingQueue(阻塞队列)**是java中常见的容器,在多线程编程中被广泛使用。当队列容器已满时生产者线程被阻塞,直到队列未满后才可以继续put;当队列容器为

2021-03-04 23:17:48 145 1

原创 Redis-04 Redis的扩展功能

发布与订阅Redis提供了发布订阅功能,可以用于消息的传输。Redis的发布订阅机制包括三个部分,publisher,subscriber和Channel发布者和订阅者都是Redis客户端,Channel则为Redis服务器端发布者将消息发布到频道上,订阅了这个频道的订阅者就能接收到消息(有点类似Rabbitmq消息队列的生产者消费者模型)频道/模式的订阅与退订subscriber:订阅 subscribe channel1 channel2 …Redis客户端订阅频道1和频道2127.0

2021-03-04 10:05:56 116

原创 Redis-03 持久化

为什么要持久化?Redis是内存数据库,宕机后数据会消失。Redis重启后快速恢复数据,要提供持久化机制Redis持久化是为了快速的恢复数据而不是为了存储数据Redis有两种持久化方式:RDB和AOF注:Redis持久化不保证数据的完整性。RDBRDB(Redis DataBase),是redis默认的存储方式,RDB方式是通过快照(snapshotting)完成的。只保存这一刻的数据,不关注过程。触发快照的方式符合自定义配置的快照规则执行save或者bgsave命令。执行fl

2021-03-02 21:31:54 86

原创 Redis-02 缓存过期和淘汰策略

1. 缓存过期1.1 maxmemorymaxmemory:默认为0不限制。问题:超过物理内存后性能急剧下降,甚至崩溃,内存与硬盘交换(swap) 虚拟内存 ,频繁IO 性能急剧下降。当趋近maxmemory时,通过缓存淘汰策略,从内存中删除对象。设置方式:在redis.conf中maxmemory 1024mb##获取配置命令config get maxmemory1.2 expire使用expire命令设置一个键的存活时间(ttl:time to live),过了这段时间,该键就会自

2021-03-02 14:23:13 84

原创 Redis-01 数据类型与数据结构

1. Redis 简介Redis 是一个key-value的存储系统,使用ANSI C语言编写,key的类型是字符串,value的类型有:string 字符串类型list 列表类型set 集合类型sortset 有序集合类型hash类型bitmap类型geo地理位置类型stream流类型Reids的命令不区分大小写,key value 区分大小写。2. Redis底层结构2.1 RedisDB结构typedef struct redisDb { int id; //id是

2021-02-28 21:45:55 134 1

原创 TomCat-01 系统架构

1. 浏览器访问服务器的流程用户发起请求到浏览器浏览器发送TCP连接请求到Tomcat服务器Tomcat服务器接收请求并且建立连接浏览器生成HTTP格式的数据包浏览器发送请求数据包Tomcat服务器接收请求数据包并进行解析Tomcat服务器执行对应的请求(这一步设计到具体的执行流程,比较重要)Tomcat生成HTTP格式的数据包发送响应数据包给浏览器浏览器解析HTTP的数据包浏览器呈现静态数据给用户浏览器访问服务器使用的是HTTP协议,Http是应用层协议,用于定义数据通信的

2021-02-24 15:57:55 94

原创 Spring Bean怎么解决的循环依赖?

本文章借鉴了芋道源码(芋奶)的文章,再次声明。若有侵权,联系删除

2021-02-19 15:08:30 175 4

转载 使用策略模式和工厂模式干掉if-else

对于业务开发来说,业务逻辑的复杂是必然的,随着业务发展,需求只会越来越复杂,为了考虑到各种各样的情况,代码中不可避免的会出现很多if-else。一旦代码中if-else过多,就会大大的影响其可读性和可维护性。首先可读性,不言而喻,过多的if-else代码和嵌套,会使阅读代码的人很难理解到底是什么意思。尤...

2019-12-21 15:48:27 362

转载 Linux 下ZooKeeper安装

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-10-16 15:08:32 72

转载 Git如何优雅的进行版本回退:git reset 和 git revert区别

在版本迭代开发过程中,相信很多人都会有过错误提交的时候(至少良许有过几次这样的体验)。这种情况下,菜鸟程序员可能就会虎驱...

2019-10-15 15:55:36 141

转载 Scanner 与 Readable 的read()方法的关系

Scanner 与 Readable 的read()方法的关系Readable接口中的read()方法实现了将字符串读入charBuffer中,但是只有在需要输出的时候才会调用。Scanner是文本扫描器类,利用Scanner扫描并输出charBuffer中的内容的顺序:以hasNext()方法为例:第一次调用 hasNext(),由于此时charBuffer并无内容,等待输入,hasNext...

2019-09-04 15:27:45 242

空空如也

空空如也

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

TA关注的人

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