自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 资源 (3)
  • 收藏
  • 关注

原创 linux shell常用的快捷键总结

陆续补充。。。。。

2023-09-07 21:19:29 226

原创 linux通过NC工具启动临时端口监听

【代码】linux通过NC工具启动临时端口监听。

2023-08-18 10:51:09 2323

原创 Git比较好用的一些操作

git stash git rebase -igit常用命令

2023-04-25 11:46:10 657

原创 kafka分区策略和压缩算法

kafka分区策略和压缩算法

2022-07-29 15:28:18 1624

原创 kafka常用的一些参数介绍

kafka常见参数参考

2022-07-29 12:40:13 389

原创 springboot整合kafka

springboot整合kafka

2022-07-26 17:57:43 694

原创 java整合kafka做消息消费

java整个kafka消费消息

2022-07-26 17:03:30 2972

原创 java整合kafka做消息生产者投递

java整合kakfa做消息的简单投递

2022-07-24 21:12:50 882

原创 kafka命令行基础命令使用

kafka命令行使用

2022-07-23 22:00:36 827

原创 快速搭建kafka单节点学习环境

kafka学习安装环境搭建

2022-07-23 14:24:44 474

原创 linux免密登录操作和原理

linux免密

2022-05-24 10:36:34 248

原创 arthas的vmtool

arthas工具vmtool命令使用

2021-12-06 11:04:48 4091

原创 ReentrantLock的lock流程

tips:阅读本文章之前请先对AQS有一个大概了解,知道state,知道他的等待队列CLH本文以其中一条非公平锁得线说起,说之前先请出AQS原理的这张图1. lock方法调用首先,sync是ReentrantLock在初始化得时候设置得,根据用户传入得参数,决定是公平锁得实现还是非公平锁得实现(true为公平锁)。 public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new Nonfair.

2021-07-03 16:46:17 352 1

原创 dubbo服务引入

dubbo版本2.7.7入口类ReferenceBean入口方法afterPropertiesSet()的getObject()方法:由于ReferenceBean实现了InitializingBean接口,所以在Bean初始化过程中会调用afterPropertiesSet()方法。

2021-06-18 11:24:36 164

原创 分库分表shardingsphere-jdbc+springboot2.x+mybatisplus

版本信息(请特别注意springboot和shardingsphere-jdbc的版本,不同版本区别很大):springboot:2.1.5.RELEASEshardingsphere-jdbc-core-spring-boot-starter:5.0.0-alpha测试用库表分两个物理库demo1,demo2;每个库user表分为user_0,user_1,user_2三张表。每张表结构都相同:create table demo1.user_0( id bigint not null

2021-05-14 16:51:17 1284

原创 读写分离Springboot2.x+ShardingSphere-JDBC+mybatis爬坑实录

通过本案例测试,务必保持版本统一,不同版本差别很大,可能会出现一些莫名错误版本信息:springboot:2.1.5shardingsphere-jdbc-core-spring-boot-starter:5.0.0-alpha1. 项目依赖:<dependencies> <dependency> <groupId>org.springframework.boot</groupId> .

2021-05-07 11:11:27 605 2

原创 多线程写入百万级数据到mysql测试

数据量100W经测试这种方式不是最快的,最快的是通过jdbc的batch操作可以尝试多线程+batch(没测试过)表结构:create table mall_order( id int auto_increment comment '订单id' primary key, order_no bigint null comment '订单号', user_id varchar(64) null comment '用户id', shipping_id int null comment..

2021-05-05 21:56:07 1366

原创 Netty学习笔记-第一个HttpServer

本demo是学习netty,开发的第一个简单httpserver。1.HttpServer主类(启动类)package com.lzc.neety2;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.EventLoopGroup;import io.

2021-05-04 01:56:46 170

原创 CompletableFuture使用一些示例

aaaaaaaaaaaaaaaaaa

2021-05-02 18:21:58 2134

原创 Neety线程模型

Netty抽象出两组线程池 BossGroup专门负责接收客户端的连接,WorkerGroup专门负责网络的读写BossGroup和 WorkerGroup类型都是NioEventLoopGroupNioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环是NioEventLoopNioEventLoop表示一个不断循环的执行处理任务的线程,每个NioEventLoop都有一个selector,用于监听绑定在其上的socket的网络通讯NioEventLoop.

2021-04-27 10:17:01 217

原创 Spring循环依赖

现在有这样两个类Class A和Class B,A需要注入B,B需要注入A,那么就出现了循环依赖,如果不解决这个循环依赖关系,就会出现套娃现象,在属性注入的时候出现死循环。在Spring中通过三级缓存,也就是三个map来解决这个问题的。解决循环依赖的前提:单例bean的循环依赖Spring才解决依赖注入的方式不能全是构造器注入的方式三级缓存:singletonObjects:一级缓存,完整的单例beanearlySingletonObjects:二级缓存,刚创建出来,还没做属性赋值的be

2021-04-07 18:50:53 175

原创 grafana使用mysql时间差8小时

由于公司网络不能截图,直接文字描述了。解决办法:先配置号query,能查询出来结果然后点击query里的Edit SQL按钮,直接对Time column字段做修改sql操作。(不要直接在query里修改,容易报错)然后用mysql的日期函数date_sub(时间字段, interval -8 hour) AS "time",修改Time column字段...

2021-03-16 17:00:48 3001 1

原创 Java和Dubbo的SPI

SPI: 简单理解就是,你一个接口有多种实现,然后在代码运行时候,具体选用那个实现,这时候我们就可以通过一些特定的方式来告诉程序寻用那个实现类,这就是SPI。JAVA的SPI全称为 Service Provider Interface,是一种服务发现机制。它是约定在 Classpath 下的 META-INF/services/ 目录里创建一个以服务接口命名的文件,然后文件里面记录的是此 jar 包提供的具体实现类的全限定名。这样当我们引用了某个 jar 包的时候就可以去找这个 jar 包的 ME.

2021-03-15 00:44:17 556 1

原创 并发的一些知识点总结

今天肝了一下午还没肝完,后面继续补全。最后附上xmind地址,csdn不能直接插入附件有点恶心Xmind地址

2021-02-06 23:48:23 125

原创 GC日志参数和垃圾收集器

GC日志打印相关参数说明-XX:PrintGCDetails开启gc日志打印-Xloggc:{path}/gc.log输出gc日志到指定路径文件-Xloggc:{path}/gc.%t.logjava8以后可以用%p,%t占位符来指定gc输出文件,%p:进程pid;%t:启动时间戳-XX:+UseGCLogFileRotation启动日志循环打印-XX:NumberOfGClogFiles=5会滚动覆盖旧的gc日志,只保留最新的5个-XX:GCL

2021-01-19 21:15:14 209

原创 类的加载

类的生命周期类在jvm中的生命周期:加载、验证、准备、解析、初始化、使用、卸载类加载的:加载、验证、准备、解析、初始化加载:加载class文件的二进制字节流验证:也可以叫校验,校验class文件的合法性,是否符合jvm的要求。校验class的语义,版本号等准备:创建静态字段,并将其初始化为标准默认值(例如null或0值),并分配方法变量表,即在方法区中分配这些变量使用的内存空间(常量池在方法区中),准备阶段还未执行任何java代码。例如:public static int

2021-01-17 15:14:55 123

原创 Springboot中使用ConfirmCallback和ReturnCallback

注意:在需要使用消息的return机制时候,mandatory参数必须设置为true新版本开启消息的confirm配置publisher-confirms已经过时,改为使用publisher-confirm-type参数设置(correlated:开启;NONE:关闭)1.配置文件和核心依赖spring: rabbitmq: username: guest password: guest virtual-host: / addresses: 192.168.3

2021-01-02 19:57:16 5808 7

原创 Springboot中交换机队列的声明及绑定

配置文件和核心依赖 <!--springboot版本2.3.7.RELEASE--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>spring: rabbitmq: username: g.

2021-01-02 17:02:40 1393 1

原创 Spring的RabbitAdmin使用

RabbitAdmin类,可以让我们能很方便的操作队列,交换机。如:声明交换机,声明队列,绑定,清除消息,发送消息。而且可以注入到Spring的容器中,我们使用的时候直接@Autowired就可以使用。使用方式:配置文件和依赖tips:高版本spring-boot-starter-amqp我在测试时候报错,所以用了1.5版本springboot<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://mave

2021-01-01 01:17:17 4787 3

原创 死信队列

死信队列:当消息在一个队列中变成死信之后,它能被重新pushlish到另一个exchange,这个exchange就是死信队列(DXL)。消息变成死信几种情况:消息被拒绝nack,并且requeue=false不重回队列消息TTL过期队列达到最大长度死信队列其实也是一个正常exchange,也是需要和队列绑定使用。只是其他队列在发生死信的时候,可以指定死信消息重新push到达这个死信exchange。给一个正常业务队列,设置它的死信队列方式,是在声明queue的时候在arguments参数里

2020-12-29 22:38:57 1108

原创 消息TTL

消息的TTL指的是消息的存活时间,我们可以通过设置消息的TTL或者队列的TTL来实现。消息的TTL,对于设置了过期时间属性(expiration)的消息,消息如果在过期时间内没被消费,会过期队列的TTL,对于设置了过期时间属性(x-message-ttl)的队列,所有路由到这个队列的消息,都会设置上这个过期时间用途:消息的TTL一般可以用作延迟消息,定时任务等。演示代码:只需要生产端+控制台就可以验证消息的TTL1.如果要验证TTL队列,请给队列设置如下属性。queueArgument是声

2020-12-27 21:57:11 681

原创 消费端ack和重回队列

MQ的消费端,线上环境里都是用的手工方式进行ACK和NACK。ACK当消息正常消费,给MQ的Broker一个应答,表示消息消费完成,业务处理正常NACK当消费端消费消息,业务异常了,我们可以NACK,加上重回队列,消息会重新投递,如果多次重投后还是失败就进行补偿策略。消费端的重回队列:没有处理成功的消息,执行NACK,并且设置消息重新返回到MQ,然后可以重新投递。(重回队列是放到队列尾部)ack:channel.basicAck()nack:channel.basicNack()tips:只有

2020-12-24 23:46:53 637

原创 MQ消费端限流

MQ三大主要功能:削峰、异步、解耦,这章主要是讲削峰,可以通过MQ消费端限流来实现。消费端限流主要是为了保证消费端的服务稳定性,防止超过消费端负载,将服务打挂,卡死。rabbitmq提供了一种qos(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息(给channel或者consume设置Qos值)未被确认前,不进行消费新消息。使用:1.在消费端,通过channel.basicQos方法进行设置2.关闭自动ACK测试生产端:package com.vivo.demo1.co

2020-12-23 23:12:44 2354

原创 消费端自定义监听

之前的例子里,我们消费者监听消费消息都是下面这样写的,一个while死循环,然后consumer.nextDelivery()一个个获取消息 。(初学者傻傻方式,哈哈)后面我们就可以通过自定义消费监听者,来实现消息的消费了步骤:创建一个自定义的消息处理类(如MyConsumer类)继承DefaultConsumer重写handleDelivery方法代码:生产者package com.vivo.demo1.consumer;import com.rabbitmq.client.*;

2020-12-23 00:16:46 273

原创 消息return机制

return消息机制:用于处理一些不可路由的消息。message 从 exchange->queue 投递失败则会返回一个 returnCallback 。我们将利用这两个 callback 控制消息的最终一致性和部分纠错能力。例如:消息发送到exchange后,由于指定的路由key路由不到queue,这个时候可以用return机制监听这些不可达消息。使用:在channel上添加return消息的监听channel.addReturnListener在调用channel.basicPu

2020-12-22 23:19:58 391

原创 消息confirm机制

实现消息的confirm:在channel上开启确认模式:channel.confirm

2020-12-20 23:19:42 1299

原创 消息生产端的可靠性投递方案

生产端的可靠性投递:保证生产端消息成功发出保证mq节点成功接收发送端收到MQ的确认应答完善的消息补偿机制方案一:消息落库,对消息状态进行打标以订单模型为例 (消息状态 0:发送中;1:发送成功;2:消息发送失败)订单消息先落库,并且 要发送的消息也落库,例如落到消息日志表生产者发送消息MQ Broker如果收到这个消息,会给生产者发送一个确认,确认收到这个消息(应答)生产者需要写一个监听,监听上面的应答。再根据这个应答去操作日志记录表,将消息状态改为1(成功)定时任务定时去

2020-12-20 15:43:51 191

原创 message的properties

这一期主要讲的是,我们MQ生产者在发送消息的时候设置的properties。我们在使用channel.basicPublish()方法发送消息的时候,可以指定几个参数:交换机名称-exchange消息的路由键-routingKey消息属性-properties消息体-body消息的propertiest通过创建一个AMQP.BasicProperties的对象来配置。一下是所有可以设置的属性headers:我们有如果自定义的参数,可以封装成一个map,然后放到headers属性里e

2020-12-17 21:58:58 3187

原创 Exchange交换机-fanout模式

fanout模式:广播模式,不关心routingKey,只要和fanout类型交换机绑定的 队列,在交换机接收到消息时,会将消息转发到所有与该交换机绑定的队列消费者1:package com.vivo.demo1.fanout;import com.rabbitmq.client.*;import java.io.IOException;import java.util.concurrent.TimeoutException;/** * @author:luzaichun * @D

2020-12-16 21:30:48 613

原创 Exchange交换机-topic模式

topic模式:exchange将routingKey和某个topic进行模糊匹配,队列需要绑定一个topic*:代表匹配一个单词#:代表匹配多个或零个单词以上图为例:Q1队列和交换机x绑定密钥为*.orange.*;Q2队列和交换机x绑定密钥为*.*.rabbit和lazy.#如果我们发送消息的routingKey为 quick.orange.rabbit那么它将被路由到Q1,Q2连个队列(匹配*.orange.*和*.*.rabbit)lazy.orange.elephant那么它也

2020-12-15 23:47:32 446

ChromeDevStandaloneSetup64.exe

google浏览器离线安装包

2021-05-02

redis.xmind

redis知识点

2021-02-21

nginx-1.9.14.rar

解压即可用,windows版nginx。可以更方便的浏览nginx的配置文件,和修改 。利于前期学习使用

2020-05-17

空空如也

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

TA关注的人

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