自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (8)
  • 收藏
  • 关注

原创 一步步教你解决github无法打开问题

一步步教你如何解决无法访问github问题。

2023-08-05 22:33:27 35428 30

原创 RocketMQ Broker消息存储结构图

1、CommitLog与ConsumerQueue、CommitLog与IndexFile映射关系。2、消息检索过程。

2022-04-09 14:11:16 368

原创 RocketMQ IndexFile(索引文件)

目录说明索引建立过程IndexFile文件结构总结说明RocketMQ支持根据消息的key进行消息查询,由于消息都是顺序存在MapperFile上,当需要根据指定的key进行消息查找时,只能对所有的消息进行遍历,显然这种方法是不可取的。为了提高消息查询效率,RocketMQ会为每条消息里的key建立索引,加快消息的检索。ReputMessageService,会不停地检测是否有新的消息还未建立索引,当发现某条消息还未建立索引时,会将建立索引的任务分发给CommitLogDispatcherBuildI

2022-04-09 14:08:53 1530

原创 RocketMQ ConsumeQueue(消费队列)

目录说明ConsumerQueue建立过程ConsumerQueue文件结构总结说明RocketMQ对新消息是顺序存在MapperFile上,但不同的Consumer需要订阅不同topic的数据,针对不同的Consumer,如果从原始数据进行数据拉取,这样效率非常低,有可能扫描完所有的MapperFile后,只有几条消息可供消费的。RocketMQ为了解决这种问题,引入了ConsumeQueue消费队列的概念:针对每一条消息,都会按topic和queueId进行分类。Consumer进行拉取消息时,Br

2022-04-09 14:03:32 4872 2

原创 RocketMQ Broker主从复制流程

目录复制过程连接建立Slave Broker上报复制offsetMaster Broker读取Slave Broker上报的offsetMaster Broker复制消息给Slave BrokerSlave Broker读取新数据总结复制过程Broker主从复制主要逻辑在HAService类的内部,主要涉及以下组件:1、HAClient:在Slave Broker角色才使用,其主要功能包括连接Master Broker、向Master Broker上报需要复制的offset、处理Master Bro

2022-03-26 22:47:13 993

原创 RocketMQ Broker对新消息的处理流程

目录处理流程图Broker启动入口组件初始化过程消息处理过程消息刷新到磁盘总结处理流程图NettyServer:RocketMQ基于Netty服务器,NettyServer用于接收Client的请求(这里是新消息请求)。SendMessageProcessor:对请求进行预处理(解析请求命令、解析请求内容等)DefaultMessageStore:默认消息存储器,实现关于消息的存取操作。CommitLog:具体处理消息的存储逻辑,其内部维护了一些里的MapperFile。MapperFile:

2022-03-20 14:58:42 776

原创 RocketMQ消费模式:DefaultMQPushConsumer与DefaultLitePullConsumerImpl

目录DefaultMQPushConsumerDefaultLitePullConsumerImplDefaultLitePullConsumerImpl工作过程Push与Pull模式比较DefaultMQPushConsumerDefaultMQPushConsumer在前面的章节中已经学习,由此我们知道:DefaultMQPushConsumer内部自动commit offset,无法手动commit offset,消费到的消息主动推送到Consumer的listener进行业务逻辑处理。Defa

2022-02-08 22:30:32 1966

原创 RocketMQ Consumer消息消费过程(三)、消息的处理

目录说明消息处理流程图拉取结果处理ConsumeMessageOrderlyService总结说明从上一节《Consumer消息消费过程(二)、消息的拉取》中,我们知道,拉取到消息后,会通过调用回调函数的方式对消息进行处理。在本节中,我们就学习下消息的处理过程。消息处理流程图拉取结果处理1、如果消息拉取失败,则直接调用回调函数的onException方法,该方法会重新将消息拉取请求放入PullMessageService的阻塞队列,重新放入的任务会间隔一段时间(默认3秒)后才执行2、如果拉取

2022-01-23 12:17:50 2010

原创 RocketMQ Consumer消息消费过程(二)、消息的拉取

目录说明PullMessageService消息拉取流程图消费拉取过程总结说明从上一节《Consumer消息消费过程(一)、queue均衡》中,我们知道在Consumer启动的过程中,会触发queue均衡。queue均衡主要完成以下几个工作:1、按照一定的算法对Topic内的queue进行均衡,均衡过后就明确了当前Consumer该消费哪些queue;2、每个需要消费的queue就会封装成一个消息拉取任务PullRequest,交由PullMessageService异步执行消息拉取任务。在本节中

2022-01-23 12:05:06 2745

原创 RocketMQ Consumer消息消费过程(一)、queue均衡

目录说明均衡过程queue均衡入口均衡过程均衡规则:说明关于RocketMQ Consumer消费消息的过程,内容较多,为了能将消费过程中涉及的关键技术讲全、讲明白,所以这一部分,根据消费过程的主要处理内容,我将分三个小部分进行:1、queue的均衡:针对topic的queue,如何分配给不同的Consumer进行消费,分配的算法有哪些。2、消息的拉取:拉取消息的过程及消息处理。3、消息的消费:对拉取到的消息推送给Consumer处理。这一节,我们先学习queue的均衡流程。均衡过程为了让大

2022-01-16 18:44:43 1370

原创 RocketMQ Consumer启动过程

目录说明初始化过程启动过程总结说明RocketMQ消费者启动过程与生产者启动过程其实差不多,只是消费者在启动之前,会有一些比较重要前置的操作:订阅、注册消息监听器等。但整个过程来说,还是比较简单的,主要是对涉及的组件初始化、启动定时任务、初始化Netty客户端等。先来看一下消费者启动过程中涉及到的类的关系:主要类功能说明:1、DefaultMQPushConsumer:消费者相关操作(启动、注册消息监听器、订阅等)的总入口,依赖于DefaultMQPushConsumerImpl 实现相关的功能。

2022-01-16 18:25:32 1863

原创 RocketMQ Producer发送消息过程

目录说明消息发送入口根据Topic获取路由信息选择消息发送的目标队列发送消息到Broker说明在Producer启动完成后,就可以利用Producer向Broker发送消息,我们以最简单的发送同步消息进行流程讲解。发送消息的核心逻辑分三个步骤:1、根据Topic获取路由信息;2、选择消息发送的目标队列;3、发送消息到Broker。消息发送入口Producer发送消息的入口在DefaultMQProducer类的send()方法,DefaultMQProducer提供了很多重载的方法,这些重载方

2022-01-03 18:47:49 884

原创 RocketMQ Producer启动过程

目录说明启动过程总结说明RocketMQ Producer启动过程,其实比较简单,主要是对涉及的组件初始化、启动定时任务、初始化Netty客户端等。先来看一下Producer启动过程中涉及到的类的关系从类图中大概可以看出,一个Producer启动过程涉及哪几个类以及每个类大概的功能。从图中也可以看出,最终与服务端进行交互的,其实是NettyRemotingClient类。基于NettyRemotingClient基础之上,封装了一个对外提供操作的API操作类MQClientAPIImpl,该类大概的

2022-01-03 16:15:59 1214

原创 RocketMQ使用事务消息

目录说明原理事务消息处理流程生产端消费端说明事务消息:1、不支持延时消息和批量消息2、如果消息没有及时提交,默认check 15次,可以通过Broker的transactionCheckMax参数配置次数。如果超时15次依然没有得到明确结果,将会打印异常信息,具体的处理策略可以通过复写AbstractTransactionCheckListener类实现3、每次check的时间间隔可以通过Broker的transactionTimeout配置,也可以在消息中增加CHECK_IMMUNITY_TI

2021-12-18 17:55:23 1571

原创 RocketMQ 消息过滤

目录说明生产端消费端说明消息过滤的两种方式:Tag和SQL表达式。生产者:对Message设置Tag、用户属性消费者:subscribe时指定Tag、SQL表达式生产端@Test public void sendMessage() throws Exception { DefaultMQProducer defaultMQProducer = RocketMqUtil.getDefaultMQProducer(); Message msg = new Me

2021-12-18 17:22:18 318

原创 RocketMQ使用批量消息

目录说明生产端消费端遗留问题说明批量发送消息条件:1、发送到同一个topic2、等待同一个发送结果3、不允许使用定时消息4、不支持半事务特性5、同一批消息大小不能超过1MB,否则需要自己进行切割发送批量消息,最主要的区别是在发送消息的send方法入参一个List。生产端@Test public void sendMessage() throws Exception { DefaultMQProducer defaultMQProducer = RocketMqUt

2021-12-18 16:24:18 1199

原创 RocketMQ使用延迟消息

目录说明生产端消费端运行结果示例延迟级别与延迟时间对应关系说明1、延时消息不是延迟发送,消息是实时发送的,只是消费者延迟消费2、延迟消息主要通过对Message设置延迟级别实现,生产者和消费者按照正常逻辑进行生产和消费。生产端@Test public void sendMessage() throws Exception { DefaultMQProducer defaultMQProducer = RocketMqUtil.getDefaultMQProducer();

2021-12-18 14:14:51 1815

原创 RocketMQ使用广播消息

目录说明生产端消费端总结说明RocketMQ消息模式主要有两种:(1)、MessageModel.CLUSTERING:集群模式。同一消费者组内的每个消费者,只消费到Topic的一部分消息,所有消费者消费的消息加起来就是Topic的所有消息。(2)、MessageModel.BROADCASTING:广播模式。同一消费者组内的每个消费者,都消费到Topic的所有消息。如Topic有100条消息,则同个消费者组下的所有消费者都能消费到100条消息。消息广播,主要配置在于消费者通过配置消息模式Mess

2021-12-01 17:28:50 7095

原创 RocketMQ使用顺序消息

目录说明生产端消费端总结说明RocketMQ与其它消息队列一样,一个Topic利用多个队列来存储数据,单个队列内的数据是顺序存储的,但队列间的数据无法保证顺序性。RocketMQ目前支持保证某类数据或部分数据的顺序性。核心思想是:发送消息时,可以通过实现MessageQueueSelector接口,选择消息发送到哪个队列,从而保证某类数据的顺序性。同时,可以在send方法中指定入参,方便MessageQueueSelector接口内部根据入参选择指定的队列。生产端@Testpublic void

2021-12-01 17:20:43 657

原创 RocketMQ发送同步、异步、单向消息

目录说明基础工具类测试代码效果展示说明后续打算根据RocketMQ官网的例子,也对各种类型的消息进行简单的使用。在熟悉基本使用,了解各类消息的特点之后,再抽时间进行内部原理剖析。基础工具类在接下来的例子中,都会用到以下工具类RocketMqUtil,其主要作用是封装了RocketMQ的NameServer地址、Topic、生产者或消费者。所以这里先贴上该工具类的代码:package com.lzj.rocketmq;import org.apache.rocketmq.client.consu

2021-11-12 00:07:20 3237

原创 RocketMQ服务端安装

目录说明环境准备安装架构图Name Server安装Broker安装查看集群节点情况问题说明为了尽量模拟实际应用场景,我们以集群的方式安装RocketMQ。从RocketMQ的组成中可以知道,RocketMQ包括Producer、Consumer、Name Server和Broker四个部分,但Producer和Consumer属于客户端,所以服务端安装只需要安装Namer Server和Broker即可。环境准备服务器:三台CentOS 7.4 64位系统的虚拟机,IP分别为:192.168.6.

2021-10-26 23:57:36 480

原创 RocketMQ基础知识

RocketMQ基础知识RocketMQ架构概述Name ServerBrokerProducerConsumerRocketMQ客户端如何找到Name ServerRocketMQ架构概述Apache RocketMQ(阿里巴巴贡献给Apache)是一个分布式消息和流媒体平台,具有低延迟、高性能、高可靠、万亿级容量和灵活的可扩展性。它包括四个部分:Name Server、brokers、producers和consumers。每一个部分都可以水平扩展,不存在单点故障问题。Name Server

2021-10-26 23:32:29 279

原创 乐观锁及mybatis-plus实现

乐观锁及mybatis-plus实现乐观锁与悲观锁乐观锁的实现方式乐观锁数据冲突处理办法乐观锁的使用基于版本号的乐观锁使用条件判断方式的乐观锁使用乐观锁与悲观锁乐观锁:在修改数据时,总是持乐观态度,认为数据不会被其他人修改,只在真正进行数据更新前进行数据冲突的检测。如果发生冲突,则将异常结果向上层反馈(比如数据库更新返回0代表无数据更新),由上层逻辑进行处理。乐观锁适合读多写少的场景,可以提高程序的吞吐量。悲观锁:在修改数据时,总是认为数据很可能会被其他人修改,所以在进行逻辑处理前,就对后续要更新的数

2021-09-14 10:15:00 1301

原创 Post提交大数据量,接收端接收不到数据的解决方法

相信很多人都知道post提交是不限制提交的数据量大小的,这是事实。但是,在实际的开发中还是会遇到post提交大数据量,接收端接收不到的问题。最近我就遇到了这么一个问题,折腾了好久最后没办法,于是求救老大,老大稍微点拨一下,就发现了问题所在,后来通过查询资料,才搞明白原因所在。好吧,先说下原因:post提交本身提交的数据量是不限制大小的,但是会受限于接收数据的服务器的配置影响,更具体点,如果使用的是

2018-01-27 11:38:12 19656

原创 jpa常用注解讲解

本文主要讲解jpa中常用的注解,如果在平时的使用中用到了新的注解,也会及时更新,方便查阅及复习。@Entity:该注解标注在类上,以标识该类为一个实体类,可以交由jpa进行管理。@Table:该注解同样是标注在类上,主要作用是定义该实体对应的数据库表的表名、索引等信息。表名通过该注解的name属性指定,索引通过该注解的indexes属性指定。@Column:标注在类的属性上,该注解可以指

2017-11-27 23:54:25 741

原创 JPA+Hibernate+Maven环境搭建

JPA(Java Persistence API)并不是一套持久层的框架,而是一套规范,它提倡以面向对象的方式来对对象进行持久化操作,而不是面向数据库的方式持久化对象,开发人员不再需要编写SQL语句来实现实体的持久化操作。基于JPA规范上去实现持久层,这才形成了一套持久层的框架(例如Hibernate、TopLink、JDO这些都是实现了JPA规范的的持久层框架)。也就是说,实现了JPA规范的持久层

2017-10-22 13:13:59 1424

原创 kettle5.3源码部署

网上有很多关于kettle源码部署的相关资料,本文主要是记录自己的部署过程,以备日后查看。1、源码下载 部署kettle源码,首先需要到github上下载kettle的源码包,可以到这个地址去下载:https://github.com/pentaho/pentaho-kettle/。可以视自己的情况下载相应的版本,我这里下载的是5.3版本: 2、项目创建 部署kettle源码,需要在IDE中创

2017-06-15 11:27:18 1837

原创 关于axis2发布服务,用cxf在同个进程调用不同服务时出现数组下标越界问题

有时候我们在同一个方法调用多个webservice的时候,有可能会报数组下标越界问题,出现该问题主要是因为发布webservice时在service.xml使用了同样的schemaNamespace导致的。问题重现: (1)、在axis2中发布了两个webservice:query_log_lzj和insert_log_lzj: 并且这两个webservice的service.xml配置文件的s

2017-05-04 15:24:47 1412

原创 如何使用mule message

在mule的组件与组件之间、流与流之间是通过消息进行交互的,在mule中称为mule message。这篇博客将结合官方给的例子,给大家介绍一下如何设置mule message中的pay Load内容。关于mule message的具体结构,将在后续博客中介绍。首先需要在Anypoint studio中新建一个项目,我这里取名为workwithmulemessage。创建好项目后,从组件列表中拉取一

2017-04-16 01:00:31 2334

原创 Mule的消息结构

mule message在mule的组件与组件之间、流与流之间的是通过消息进行交互的,在mule中称为mule message,结构如下: mule message主要包含两个部分: 消息头:主要指该消息的一些元数据; 消息体:该部分在mule中称作payload,主要传递一些业务数据。mule message 包含在消息对象(message object)中,一个消息对像除了可以包含mule

2017-04-15 23:53:03 1467

原创 mule第一个示例-hello mule

最近公司在使用mule组件,之前又没怎么接触过,所以打算通过官网系统的学习下mule这个东西,在网上也比较少关于mule的资料,所以打算把自己的学习过程记录下来,以供各位参考学习。什么是mule mule是一个以java为核心的轻量级的消息框架和整合平台。其内部包含一系列的组件可供使用,整合逻辑就由这些组件共同作用而实现。这些组件可以是POJO、javaBean等。比如说需要监听一

2017-04-15 20:37:33 1351

原创 java 读取文件路径空格、“+”和中文的处理

有时候在java代码中读取文件,如果文件所在路径包含空格、”+“号或者是中文的时候,由于这些特殊的字符会被进行编码转译,所以就会报没有发现文件的错误,那么遇到这种错误,我们就要把编码过后的路径进行解码,这样才能正确的找到文件。主要的解决方法有一下三种方法:解决方法 1、替换法 比如文件路径如果存在空格,那么会被转译成“%20”,那么就可以利用字符串替换,把“%20”传化成空格,这样就能正

2017-03-18 12:50:47 6148 2

原创 docker 基本使用

该篇文章将介绍docker的基本使用,包括docker的安装、镜像拉取、镜像推送以及自主制作镜像等内容。由于目前时间的问题,先一点点记录自己的学习过程,晚点将会陆续更新内容。一、docker的安装 本人是在CentOS7系统下安装docker,并且CentOS7系统安装在虚拟机中。docker的安装方式可以采取不同的安装方式,我这里是采用yum安装的方式,因为yum安装可以帮我们处理一些依

2017-03-18 11:55:35 617

原创 SSH+Dubbo+zookeeper集成

这篇文章将介绍基于SS(struts+spring,hibernate暂时没用,所以暂未集成进去)框架的项目与dubbo和zookeeper进行集成,由于先前搭建过SS框架,所以这里就基于SS与dubbo和zookeeper进行集成,当然也可以使用spring mvc与dubbo和zookeeper进行集成。搭建这样的框架就包括三部分: 1、SS框架:该部分是基于SS搭建的项目框架,具体搭

2017-03-01 23:49:01 2618

原创 配置dubbo-admin的管理平台

dubbo是阿里巴巴公司开源的分布式服务框架,它提供了RPC远程调用服务的解决方案,提供服务的称为服务提供者,调用服务的称为服务消费者;有时候我们需要管理这些服务、服务提供者、服务消费者等信息,功能有点类似于tomcat的管理平台,那么dubbo也提供相应的这种管理平台,这个管理平台需要部署到服务器中才能进行访问,按照官方的部署方案,是把tomcat服务器下的webapps/ROOT删除后,然后再进

2017-03-01 15:12:51 1226

原创 zookeeper集群搭建

zookeeper是一款分布式协调服务,其可以对公共配置、公共服务等进行管理,关于zookeeper的更详细信息,大家可以在网上查看更多的信息,此处主要介绍如何搭建zookeeper集群。首先说一下我本地的实验环境: 宿主主机:linux redhat 系统; 三台zookeeper服务器:三台zookeeper服务器共用同一台宿主主机,ip为192.168.81.129,以不

2017-03-01 12:42:29 1091

原创 使用redis问题汇总

这里汇总下在学习redis中遇到的问题,并给出我个人的解决办法。给出的解决办法是我遇到问题的解决办法,一个问题的原因可能是多种多样的,所以给出的办法不一定对大家都有效,但是可以尝试。后续遇到的问题都会更新在这。1、利用jedis连接redis的哨兵时,报:Can connect to sentinel, but mymaster seems to be not monitored错误:

2016-11-21 11:45:45 2377

原创 redis配置读写分离以及利用哨兵sentinel进行自动主从切换

redis利用哨兵(sentinel)进行主从切换,断断续续,自己终于通过配置验证了一下该功能,其中遇到过一些的问题,也是耗费了大量的时间才解决,接下来分享下配置的过程以及遇到的问题和解决方法。希望对各位有所帮助。 首先说一下实验环境: redis软件:redis-3.2.1(安装在虚拟机的linux系统中) 宿主主机:windo

2016-10-20 11:09:58 12240 2

原创 java连接linux里的redis数据库报:Could not get a resource from the pool解决方法

实验环境:物理机为win8.1系统;虚拟机为linux系统,并且在该linux系统上正确安装了redis数据库。对于连接redis数据库,如果安装完不进行设置,是无法连接redis数据库的,会报无法从连接池中获取连接。对于这个问题的解决方法可以分为三个步骤:1、确定linux服务器上的telnet服务已经正确安装并且服务已经启动。telnet服务有telnet和telnet-server两个服务,

2016-09-23 11:03:25 3674

原创 Ajax实现跨域的三种方法-java示例

Ajax可以异步请求后台并且在不刷新整个网页的情况下可以对网页的局部内容进行刷新,但是在开发的过程中,有可能需要访问另外一个域的数据,那么就会遇到Ajax的跨域问题。对于其它域的信息,Ajax是不能直接访问的,这是因为基于安全的考虑,Ajax只能访问本地的资源,而不能跨域访问。下面列出了一些属于跨域的情况(图片摘录于互联网): 存在跨域问题,那么自然也存在解决办法。目前比较业界比较常用的有三种解决

2016-09-22 15:12:47 6355

rocketmq-console.rar

RocketMQ Web管理控制台

2021-11-11

SecureCRTandSecureFXv7.3.3x86x64build779正式版-附带注册机.zip

SecureCRT是一款SSH(SSH1和SSH2)的终端仿真程序,是Windows下登录UNIX或Linux服务器主机的软件。

2015-10-13

compat-libstdc++-33-3.2.3-47.3.i386.rpm

linux依赖的的rpm包,根据个人使用情况收集了多个在linux下安装软件依赖的rpm包

2015-10-13

Linux下的mysql-5.6.4-m7

Linux下的mysql安装包,tar.gz格式

2013-11-04

Linux系统下的libcrypto.so.4

Linux系统下的libcrypto.so.4

2013-11-04

mysql-connector-java-5.1.26.tar.gz

linux 的mysql数据库驱动,tar.gz文件格式

2013-11-04

物联网应用如何实现环境监测

物联网被誉为断计算机,互联网与移动通信网之后的又一次信息产业浪潮,它被广泛的应用与环境保护中,这里分析了物联网是如何在环境监测中发挥它庞大的作用,为环境监测部门从治疗提高到预防,大大提高监测水平的。

2013-02-01

学生成绩管理系统源代码

这是一个学生成绩管理系统的代码文件,有注册,成绩的录入,删除,修改等功能

2012-10-01

空空如也

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

TA关注的人

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