自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RocketMq5 消息消费及相关源码浅阅

消费者也必须和namesvr保存长连接,consumer从namesvr每隔30s获取topic路由信息。从而根据负载策略进行消费的消费。:同一个消费者组中多个消费者不能同时消费多个主题topic,如果出现此现象,会导致部分消息无法消费,如上图。:默认消费模式就是 一个消费者组消费一个主题(使用负载均衡算法进行分配)查看mqClientFactory.doRebalance()方法实现。一个消费者组不同的消费者是否可以同时消费多个主题?不同的消费者组,是否可以消费相同同的topic?......

2022-08-18 01:36:14 777 1

原创 RocketMq4 消息发送示例及源码浅阅

根据远程调用对象remotingclient调用namesvr,获取路由信息。Remoteing底层就是netty。随机算法:根据队列的长度,获取队列长度范围的随机数,根据获得结构,返回此角标位置的队列。- 同步发送: 失败重试次数 == 设置次数(默认是2次) + 1。topicPublishInfoTable就是本地缓存数据。- 异步发送: 默认就是1次。获取namesvr路由信息。...

2022-08-17 00:05:50 298

原创 RocketMq3 架构及名词解释

Broker 部署相对复杂,Broker 分为 Master 与 Slave,一个 Master 可以对应多个 Slave,但是一个 Slave 只能对应一个 Master,Master 与 Slave 的对应关系通过指定相同的BrokerName,不同的 BrokerId 来定义,BrokerId 为 0 表示 Master,非 0 表示 Slave。Master 也可以部署多个。...

2022-08-13 00:56:19 363

原创 RocketMq2 基本理论

Topic 是一个逻辑上的概念,实际上 Message 是在每个 Broker 上以 Queue 的形式记录。从上面的图片可以总结下几条结论。也就是说每个 Topic 在 Broker 上会划分成几个逻辑队列,每个逻辑队列保存一部分消息数据,但是保存的消息数据实际上不是真正的消息数据,而是指向 commit log 的消息索引。一个消息从发送,到接收,最简单的步骤:producer,topic,consumer,先由简单到复杂的来理解它的一些核心概念消息先发到 Topic,然后消费者去 Topic

2022-08-12 23:34:10 179

原创 RocketMq1 简介及应用场景

假设三个业务节点每个使用 50 毫秒钟,不考虑网络等其他开销,则串行方式的时间是 150毫秒,并行的时间可能是 100 毫秒。日志采集客户端,负责日志数据采集,定时写受写入 消息队列,负责日志数据的接收,存储和转发 日志处理应用:订阅并消费 队列中的日志数据。小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。日志处理是指将消息队列用在日志处理中,比如 Kafka 的应用,解决大量日志传输的问题。b、并行方式,将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。....

2022-08-10 00:13:45 1355

原创 Redis9 常见缓存问题

也就是说,对不存在的key进行高并发访问,导致数据库压力瞬间增大,这就叫做【缓存穿透】

2022-07-28 00:39:55 104

原创 Redis8 实现分布式锁

Redis实现分布式锁。

2022-07-27 22:13:38 359

原创 Redis7 集群

redis3.0以后推出的redis cluster 集群方案,redis cluster集群保证了高可用、高性能、高可扩展性。Redis 集群存储图解集群中所有master参与投票,如果半数以上master节点与其中一个master节点通信超过(cluster-node-timeout),认为该master节点挂掉.什么时候整个集群不可用(cluster_state:fail)?chmod u+x start-cluster.sh命令客户端连接集群命令:注意:-c 表示是以redis集群方式进

2022-07-24 22:30:41 930

原创 Redis6 主从复制及哨兵机制

Sentinel(哨兵)进程是用于监控Redis集群中Master主服务器工作的状态在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用(HA)其已经被集成在redis2.6+的版本中,Redis的哨兵模式到了2.8版本之后就稳定了下来。......

2022-07-24 20:46:20 334

原创 Redis5 持久化

默认情况下Redis没有开启AOF(appendonlyfile)方式的持久化。开启AOF持久化后,每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件,这一过程显然会降低Redis的性能,但大部分情况下这个影响是能够接受的,另外使用较快的硬盘可以提高AOF的性能。...

2022-07-21 00:47:10 265

原创 Redis4 缓存淘汰策略及事务实现乐观锁

Redis的事务是通过MULTI、EXEC、DISCARD和WATCH、UNWATCH这五个命令来完成的。Redis的单个命令都是原子性的,所以这里需要确保事务性的对象是命令集合。Redis将命令集合序列化并确保处于同一事务的命令集合连续且不被打断的执行Redis不支持回滚操作。...

2022-07-21 00:26:42 357

原创 Redis3 对象类型与类型编码

前面已经说过,Redis支持5种对象类型,而每种结构都有至少两种编码;这样做的好处在于: 一方面接口与实现分离,当需要增加或改变内部编码时,用户使用不受影响;另一方面可以根据不同的应用场景切换内部编码,提高效率。Redis各种对象类型支持的内部编码如下图所示(只列出重点的):类型编码OBJECT ENCODING 命令输出对象REDIS STRINGREDIS_ENCODING_INT“int”使用整数值实现的字符串对象REDIS STRINGREDIS_E

2022-03-28 23:13:06 356

原创 Redis2 内存划分及数据存储

一、Redis内存统计在客户端通过redis-cli连接服务器后(后面如无特殊说明,客户端一律使用redis-cli),通过info命令可以查看内存使用情况:127.0.0.1:6379> info memory # Memory #Redis分配的内存总量,包括虚拟内存(字节) used_memory:853464 #占操作系统的内存,不包括虚拟内存(字节) used_memory_rss:12247040 #内存碎片比例 如果小于0说明使用了虚拟内存 mem_fragmentati

2022-03-24 23:04:32 547

原创 Redis1 介绍及各数据结构操作总结

Redis 介绍什么是RedisRedis 是用C语言开发的一个开源的高性能键值对( key-value )内存数据库,它是一种 NoSQL 数据库。它是【单进程单线程】的内存数据库,所以说不存在线程安全问题。它可以支持并发 10W QPS,所以说性能非常优秀。之所以单进程单线程性能还这么好,是因为底层采用了【IO多路复用(NIO思想)】相比Memcache这种专业缓存技术,它有更优秀的读写性能,及丰富的数据类型。它提供了五种数据类型来存储【值】:字符串类型(string)、散列类型(hash

2022-03-21 21:33:09 489

原创 阿里云对象存储OSS使用说明

阿里云对象存储OSS介绍及创建阿里云对象存储OSS(Object StorageService)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务可用性(或业务连续性)不低于99.995%。OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。您可以使用阿里云提供的API、SDK接口或者OSS迁移工具轻松地将海量数据移入或移出阿里云OSS。数据存储到阿里云OSS以后,您可

2021-08-25 23:40:06 2152

原创 spring-cloud 配置Nacos 简述

Nacos概要Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。什么是 Nacos?以下信息来自nacos官网:https://nacos.io/zh-cn/docs/what-is-nacos.html服务(Service)是 Nac

2021-07-28 22:32:05 1753 1

原创 SpringBoot 项目配置文件中获取属性值

方式一: @Value基本类型属性注入,直接在字段上添加@Value("${xxx.xxx}")即可。配置文件URL=http://localhost:8080/test/indexNAME=name测试代码@RequestMapping("/test")public class NsfwController { @Value("${URL}") private String url; @Value("${NAME}") private String name;

2021-06-07 17:37:32 508

原创 HotSpot 虚拟机对象

对象的创建虚拟机遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,必须先执行相应的类加载过程。在类加载检查通过后,虚拟机将为新生对象分配内存。对象需要的内存大小在类加载完成后就可以确定,在堆的空闲内存中划分一块区域。内存规整—“指正碰撞”内存交错—“空闲列表”在使用Serial、ParNew等带Compact过程的收集器时,系统采用指针碰撞,而使用CMS这种基于Mark-Sweep算法的收集器

2021-02-07 17:49:40 156

原创 Java内存区域

对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个操作去写配对的delete/free代码,不容易出现内存泄露和内存溢出问题,由虚拟机管理这一切开启你都很美好。不过,也正是因为Java程序员把内存控制的权利交给了Java虚拟机,一旦出现内存泄露和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会成为一项异常艰难的工作。运行时数据区域Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和删除的时间.

2021-01-15 17:59:46 137

原创 SpringBoot 整合mybatis plus

Mybatis Plus 简介Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。封装了简单的crud方法,简单的crud只需调用方法即可,无需再写xml。springboot整合 mybatis plus核心依赖: <dependency> <groupId>org.springframework.boot</groupId> &lt

2020-12-23 18:02:01 281

原创 Swagger-diff 接口对比工具

Swagger-diff Json对比工具使用场景用于swagger文档不同版本之间进行JSON字符串对比,可输出html文件,且可追溯到每个变动的接口效果如下:注意前端弹窗html时可能因为样式影响显示效果,故要么直接修改此html自带的css文件并打包到本地或者直接新增样式如:<style>.test .POST { box-sizing: content-box !important;}.test { text-align: left;}.test .ar

2020-12-18 17:23:47 2177 3

原创 SpringBoot 定时任务及Quartz定时框架

定时任务创建方法与特点springboot定时任务主要有以下三种创建方式:1、基于注解(@Scheduled)基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响。@Configuration //标记配置类@EnableScheduling // 开启定时任务public class SaticScheduleTask { //添加定时任务 //cron表达式:cron是一个字符串,之间通过空格隔开,分割成6,7

2020-12-17 17:58:29 783

原创 swagger2 的简单应用

swagger简述它允许您使用JSON或YAML元数据描述API的属性。它还提供了一个Web UI,它可以将元数据转换为一个很好的HTML文档。此外,通过该UI,您不仅可以浏览有关API端点的信息,还可以将UI用作REST客户端 - 你可以调用任何端点,指定要发送的数据并检查响应。然而,手动编写此类文档并在代码更改时保持更新是不现实的。这就是SpringFox发挥作用的地方。它是Spring Framework的Swagger集成。它可以自动检查你的类,检测控制器,它们的方法,它们使用的模型类以及它们映

2020-12-10 23:59:42 191

原创 项目中用到的Spring注解总结

Controller层@RestController@RestController注解相当于@ResponseBody + @Controller合在一起的作用1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。例如:本来应该到success.jsp页面的,则其显示success.2)如果需要返回到指定

2020-12-01 23:47:53 234

原创 Java 集合的理解

集合类是Java数据结构的实现。Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。Java中的集合类可以分为两大类:一类是实现Collection接口;另一类是实现Map接口。CollectionCollect

2020-11-29 17:52:11 285

原创 面试常见问题总结

一、spring的注解方式@Controller标识一个该类是Spring MVC controller处理器,用来创建处理http请求的对象.@RestControllerSpring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式。@Service用于标注业务层组件,说白了就是加入你有一个用注解的方式把这个

2020-10-19 02:00:25 165

原创 Java8新特性

1、java8新特性

2020-10-13 01:58:55 138

原创 spring boot部署到docker的两种方式

部署spring boot之前先确保docker安装正确,可以用docker version来检测是否安装成功在这里可以先运行一个,docker可视化界面docker run -it --restart=always -d --name portainer-docker -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer然后访问9000端口,如下图一、使用idea.

2020-07-17 16:24:15 752

原创 上传本地项目文件到远端指定分支及 git 常用命令汇总

将本地分支中的项目上传到远端对应的分支下在本地已经clone远端仓库的情况下,将项目复制到clone到本地的仓库文件夹下创建并切换到新分支.git checkout -b [name]//name 为自己取得分支名本地demo分支作为远程的demo分支(在远程新建demo分支) git push origin demo:demo将项目上传到暂存区(*表示全部文件)git add *扩展:取消已经暂存的CONTRIBUTING.md(任意文件)文件git reset HEA

2020-07-14 20:17:34 859

原创 Deque 双端队列的简单分析

包:java.util接口 Deque类型参数:E - 此 collection 中保存的元素类型所有超级接口:Collection, Iterable, Queue所有已知子接口:BlockingDeque所有已知实现类:ArrayDeque, LinkedBlockingDeque, LinkedListpublic interface Deque<E>extends Queue<E>一个线性 collection,支持在两端插入和移除元素。名称 dequ

2020-06-20 16:45:05 189

原创 springmvc(2)手写springmvc框架

springmvc手写框架前置阶段:DispatcherServlet初始化spring容器getBeansByTypeAware和BeanFactoryWare初始化了HandlerMapping集合初始化处理器类和url的映射关系初始化了HandlerAdapter集合1.如何编写处理器代码制定标准(接口)HttpRequestHandler接口SimpleControllerHandler接口2.如何编写处理器映射器代码BeanNameURLHandlerMappi

2020-05-10 23:38:50 306

原创 springmvc(1)springmvc核心概念及适配器模式

B/S下的相关概念介绍B/S:浏览器、服务器B/S是如何通信的呢?socketweb容器(http协议)—tomcat去封装了socket,实现了浏览器和服务器直接的通信,程序员不需要自己去进行socket编程了tomcat:web容器,Servlet容器tomcat说了,我只会调用Servlet接口的实现类代码。Servlet接口是JavaEE推出的web编程的服务器程序的标准接口。Servlet的实例,是由tomcat来创建的,是由程序员来编写的代码。Servlet对象什么时候被创

2020-05-10 20:20:11 362

原创 Spring(4.1)Spring aop 动态代理----代理对象的产生和执行流程

动态代理模式(spring默认JDK动态代理模式)jdk动态代理模式(有接口的目标对象)如何产生代理对象Object proxy =Proxy.newProxyInstance(classloader,interfaces,InvocationHandler);classloader —作用是加载jdk帮我们写出来的代理类的字节码 interfaces — 目标类的接口数组Inv...

2020-04-23 23:05:00 3148

原创 Spring(4)Spring循环依赖问题 And Spring Aop核心概念

spring循环依赖问题搞清楚什么是循环依赖?依赖:引用、成员变量 ClassA类---->ClassB类 ClassB类—>ClassA类依赖注入有两种注入方式:构造方法\setter方法注入循环依赖分为:构造方法setter方法循环依赖的例子class OrderService{ UserService userService; saveOrde...

2020-04-18 23:16:43 394

原创 Spring(3)手写Spring ioc模块(第三版)

整体思路1、读取bean.xml文件2、解析bean文件,将bean信息封装到BeanDefinition对象中加载并注册BeanDefinition流程XmlBeanDefinitionReader:整体就是负责读取Document对象XmlBeanDefinitionDocumentReader:整体就是负责BeanDefinition的注册工作解析bean标签以及自定义标签...

2020-04-15 23:26:38 294

原创 Spring(2)手写Spring ioc模块(第二版)

手写spring IOC模块(第二版)—面向过程基于第一版实现查询用户的功能,要求编写业务层、持久层以及使用数据源去获取连接**UserDao UserDaoImpl UserService UserServiceImpl UserBasicDataSource**spring ioc模块的V2版本基于以上需求,我们通过ioc这种控制反转的思路去优化对象的创建...

2020-04-09 00:05:32 169

原创 Spring(1)Spring核心理解与手写Spring ioc模块

spring核心理解spring和spring boot、springcloud等的关联和区别spring.ioSpring基础部分(IoC、DI、AOP)spring boot:更加简单自动配置起步依赖(maven依赖更加简洁)领配置文件(spring配置文件)spring framework(就是我们要学习的spring,这里面包含springmvc模块)分成很多组件...

2020-04-08 23:11:31 263

原创 设计模式(3)模板方法模式和策略模式

抽象模板设计模式由抽象出来的父类来编写代码中不变的部分。将变化的部分交给子类去完成。通过抽象方法让子类必须去完成抽象模板方法是遵循了里式替换设计原则,是对继承的一种优秀的使用经验例子:把大象装冰箱,分三步这是抽象模板方法设计模式中抽象出来的父类的描述方式(第一步:把冰箱门打开、第二步:把大象装进去、第三步:把冰箱门关上)具体的第二步需要先把大象XXX,然后xxx,再然后xxx...

2020-04-07 16:30:56 236

原创 设计模式(2.1)单例模式的实现

单例模式的实现单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。单例模式分成两种实现方式:懒汉式、饿汉式饿汉式和饿汉式饿汉式: 初始化的时候将单例对象创建出...

2020-04-04 23:27:37 260

原创 设计模式(2)浅谈创建型设计模式

设计模式概述设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码...

2020-04-03 23:01:03 200

空空如也

空空如也

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

TA关注的人

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