自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘本龙的专栏

个人邮箱:3089008201@qq.com. 技术交流群:684457529

原创 spring boot 全局统一日志打印

欢迎关注本人公众号 概述 本文以使用spring boot或者springmvc为例。 微服务之间调用,或者controller接收请求时,为了方便排查问题,通常会将入参与出参(返回值)打印出来。 为了简化代码,这里使用AOP统一处理日志的打印。 由于比较简单,废话不多说,直接上代码: @Asp...

2020-06-05 16:52:16 16 0

原创 不要以为你用了BigDecimal后,计算结果就一定精确了

欢迎关注本人公众号 异常再现 大家应该都已经知道,涉及到金钱的计算应该使用BigDecimal,没有使用BigDecimal的已经被开除。 但是使用了BigDecimal后计算结果就一定是精确的吗?未必。 看下面测试 BigDecimal a = new BigDecimal(1.01); ...

2020-05-26 17:52:21 85 0

原创 spring boot 2.1学习笔记【十九】使用spring validation实现全局参数校验
原力计划

概述 本文介绍在Spring Boot中实现对controller请求的数据进行全局校验。 JSR303/JSR-349: JSR303是一项标准,只提供规范不提供实现,规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,位于javax.validation.const...

2020-05-09 10:53:56 166 0

原创 rabbitmq 事务消息

文章目录AMQP 事务消息confirm 事务消息生产者纯异步操作 rabbitmq支持两种模式的事务消息: AMQP confirm AMQP 事务消息 代码比较简单,开启事务txSelect,提交txCommit,回滚txRollback。 实例: 生产者 public class S...

2020-02-21 16:08:59 148 0

原创 rabbitmq消息可靠性之消息应答与持久化

文章目录消息应答ack持久化 消息应答ack 前面介绍了rabbitmq有两种ack模式 自动ack:消息从rabbitmq队列中发送给消费者则从队列内存中删除该消息。此时如果消费者宕机等原因未来得及消费完消息,则该消息丢失。 手动ack:消费者在去确定消费完消息以后再ack,rabbitmq服...

2020-02-19 22:06:43 196 0

原创 rabbitmq 7种队列实现java版

文章目录搭建maven项目引入依赖创建连接简单队列消息生产者消息消费者 搭建maven项目 引入依赖 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-clie...

2020-02-19 21:02:59 241 0

原创 rabbitmq用户及vhost配置

文章目录用户添加用户配置virtual hosts授权用户访问vhost 用户 上一节我们是通过guest用户登录的,但是实际工作中肯定不能以该账户使用,通常是会设置多个账户供不同的业务方使用。 下图中可以看到guest是administrator权限。 添加用户 我这里作为演示,添加一个adm...

2020-02-19 20:12:20 137 0

原创 windows10安装rabbitmq

文章目录安装Erlang安装rabbitmq 安装Erlang 由于rabbitMQ是Erlang语言编写的,所以要先安装Erlang语言环境,与安装java类似。 rabbitmq官网安装教程:https://www.rabbitmq.com/install-windows.html。 官网已...

2020-02-19 19:32:28 192 0

原创 java11:NoClassDefFoundError: javax/activation/MimetypesFileTypeMap

文章目录错误描述解决办法 错误描述 在 netty4.1实现http文件服务器 一文中我们有使用到javax.activation.MimetypesFileTypeMap。但是java9+对Java实行了模块化处理,有一些模块没有默认加载,所以在使用这些模块时,需要我们主动的引入。 错误信息:N...

2020-02-16 18:51:44 227 0

原创 Netty实现聊天室

文章目录 本文内容基于上一篇博客 netty实现WebSocket协议,一些基本使用请参考该博客。 本例实现的功能: 有新成员加入时,群广播消息,欢迎加入 有成员退出时,群广播消息,退出 每个成员都可以发送消息,消息广播给群内的每个人 完整的服务器代码如下: package com.examp...

2020-02-13 16:09:19 314 0

原创 netty实现WebSocket协议

文章目录WebSocket协议服务端开发客户端运行测试全双工 WebSocket协议 一般web应用都是使用的HTTP协议。HTTP协议有以下特点: 支持客户端-服务端模式 使用简单:只需要知道服务端URL,携带参数发送请求即可 支持多种传输数据类型,由消息头中content-type标识 无状...

2020-02-11 11:48:49 299 0

原创 netty4.1实现http文件服务器

概述 netty版本:4.1.45 使用netty搭建一个简单的文件服务器,使用HTTP协议对外提供服务。 如果文件不存在,返回403响应码。如果是文件夹,以超链接展示,如果是文件,支持下载。 服务器编码 /** * netty http 文件下载 服务器 */ public class ...

2020-02-10 20:30:49 227 0

原创 netty实现HTTP服务器

文章目录概述HTTP服务器代码实现验证 概述 目前主流的Java web服务器还是采用springboot+Tomcat来实现的,底层还是基于servlet开发的。servlet不是异步的,所以性能并不是很理性,无法满足当下的快速服务器的要求。 目前spring5已经实现了基于reactor的we...

2020-02-10 15:07:07 151 0

原创 Mac升级系统后,idea中Git无法使用:xcrun: error: invalid active developer path

Mac升级了最新的系统,idea右下角提示Git无法使用的错误。完整错误信息: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library...

2020-02-10 10:34:47 131 0

原创 Mac安装protobuf

Mac上安装软件通常使用brew来安装,类似于Linux平台上的yum. 本文使用brew安装protobuf 两条命令: brew install protobuf protoc --version

2020-02-09 11:53:17 103 0

原创 mac 安装 brew(homebrew)

brew是MacOS上的包管理工具。类似RHEL/CentOS上的yum或者Ubuntu上的apt-get一样。 确认你的Mac电脑安装了ruby: ruby -v ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-dar...

2020-02-09 11:47:35 137 0

原创 netty 4.1.45 protobuf 编解码实现

文章目录PB协议简单使用netty使用PB协议进行编解码 PB协议简单使用 关于PB协议的使用介绍请移步至: protocol buffer 3 (Protobuf3) ( java 版本 ) 使用入门。 netty使用PB协议进行编解码 ...

2020-02-09 10:30:13 78 0

原创 netty 4.1.45自定义编解码器

概述 前面介绍了使用netty本身提供的LineBasedFrameDecoder、DelimiterBasedFrameDecoder、FixedLengthFrameDecoder三种编解码方案。不过实际工作中直接使用这几种编解码的还是比较少的。比如处于安全、性能、私有网络等。 这里介绍简单的...

2020-02-08 21:41:42 124 0

原创 netty 4.1.45 TCP拆包粘包原因及解决办法

文章目录异常情况模拟服务器改造客户端改造运行结果拆包粘包原因分析拆包粘包解决办法LineBasedFrameDecoder 换行符分隔消息服务端修改客户端修改运行结果原理分析DelimiterBasedFrameDecoder 固定分隔符解码器服务端修改客户端修改FixedLengthFrameD...

2020-02-08 17:31:33 196 0

原创 netty 4.1.45 第一个netty程序

概述 本系列文章介绍netty的学习。使用的版本是4.1.45 jdk采用Java11 本系列文章由浅入深,先学习使用,再研究其实现原理。 本节编写一个最简单的netty服务器。 maven依赖 <dependency> <groupId>io.netty</...

2020-02-08 15:54:51 369 0

原创 6. rocketmq事务消息

什么是事务消息 事务消息用于解决分布式系统中的事务问题,不了解分布式事务的请自行Google。 通常分布式事务可以使用两阶段,三阶段,TCC,XA,本地事务表等方式来实现强一致性或者最终一致性事务。 这里rocketmq的事务消息就是采用的最终一致性解决的分布式事务。 分布式事务的两个参与者,一方...

2020-01-21 17:26:32 149 0

原创 5. rocketmq延迟消息队列

什么是延迟消息队列 对于消息中间件来说,producer将消息发送到mq的服务器,但并不期望这条消息马上被消费,而是推迟到当前时间点之后的某个时间点后再投递到queue中让consumer进行消费。 也可以认为是定时消息。 延迟消息的使用场景很多,一种比较常见的场景就是在电商系统中,订单创建后,会...

2020-01-21 16:43:11 252 0

原创 4. RocketMQ顺序消息

什么事顺序消息 消息顺序(Message Order)有两种:顺序消费(Orderly)和并行消费(Concurrently)。顺序消费表示消息消费的顺序同生产者为每个消息队列发送的顺序一致,所以如果正在处理全局顺序是强制性的场景,需要确保使用的主题只有一个消息队列。并行消费不再保证消息顺序,消费...

2020-01-21 16:05:45 232 0

原创 3. springboot集成rocketmq

引入依赖 这里我们使用rocketmq-spring-boot-starter来访问rocketmq。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId...

2020-01-21 11:56:06 332 0

原创 2. RocketMQ安装部署

下载 请到 rocketmq官方地址 下载最新的rocketmq。 我这里下载的是 rocketmq-all-4.6.0-bin-release.zip 。 其他装备:JDK 1.8+;64位centos系统。 部署并启动服务 将下载的rocketmq-all-4.6.0-bin-releas...

2020-01-21 11:20:14 182 0

原创 hbase--walgroup源码分析

本文介绍hbase的walgroup原理及实现 开启多wal 默认情况下,一个regionserver只有一个wal文件。 在HBase-5699之后,可以配置多个wal,在hbase-site.xml中,添加以下配置,既可开启多wal(同一个RS服务中): <property> ...

2020-01-20 14:29:00 271 0

原创 jdk11源码--LongAdder源码分析原理分析

概述 针对JDK中的原子类,想必大家都熟悉AtomicInteger,AtomicLong等类。他们都是采用CAS乐观锁方式来实现的。 但是这种方式是否还有继续优化的空间呢?答案是肯定的。 CAS乐观锁对临界区的数据(也就是atomicLong中的volatile long value属性)进行修...

2020-01-10 16:07:34 151 0

原创 Intellij idea 2019.3.1 代码提示忽略大小写

最近idea升级了版本。有的配置发生了变化。本文介绍最新的Intellij idea 2019.3.1版本如何修改配置,让代码提示忽略大小写。 so easy:

2020-01-10 14:24:00 447 0

原创 java自定义类加载器

网上java自定义类加载器很多容易找到,但是都是加载的单个类,如果被加载的类,有引用了其他类怎么办呢?接下来看一下如何来处理这种情况

2019-12-18 10:43:14 68 0

原创 java类加载机制:到底能不能自己自定义java.lang.String类

文章目录概述网络上的错误(不准确)答案jdk11jdk8可否直接使用自定义的java.lang.String?自定义类加载器参考资料 概述 这个是一个经典的面试题:java类加载机制:到底能不能自己自定义java.lang.String类 主要考察java的类加载机制。 网络上的错误(不准确)答案...

2019-12-17 15:56:39 161 0

原创 计算权重随机数

import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; /*** * java 权重随机数生成。 * 如抽奖,每个奖项获奖概率...

2019-12-16 18:44:43 94 0

原创 Java对象占用堆内存大小计算

概述 最近在看hbase源码,里面有对象占用内存大小的计算。正好笔记记录一下。 一般来说,int占4个字节,long占8个字节,等等。但是对象在队中的存储不止其包含的字段所占用的空间,还包括对象头,对齐填充等信息。接下来就结合hbase源码分析一下对象在堆中的存储情况。 原生类型(primitiv...

2019-11-27 17:57:40 214 0

原创 hbase/hadoop异常:No lease on /hbase/archive/data/... File is not open for writing

问题描述 我在进行hbase快照拷贝时报了以下错误: ./hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot "MODEL.THIRD_PARTY_KV-11211752-snapshot" -copy...

2019-11-21 19:11:36 377 0

原创 hbase 预分区Pre-splitting 解决热点问题

预分区 在创建表时我们可以指定分区数量及规则等信息。 最简单的方法是在创建表时指定分割点数组。 请注意,将字符串文字指定为拆分点时,它们将基于字符串的基础字节表示形式创建拆分点。 因此,当指定分割点“ 10”时,实际上是在指定字节分割点“ \ x31 \ 30”。 分割点将定义n + 1个区域,其...

2019-11-05 19:59:17 95 0

原创 hbase集群滚动重启Rolling Restart

概述 在我们修改了regionserver的配置后,需要对某个或所有的regionserver进行重启。 或者在集群升级到新的版本时进行滚动升级。 以上都需要尽可能的不影响业务,集群保持存活可用。 当然最简单的方法是停止整个集群,修改完后再重启,但是显然不适用。下面看看如何使用rolling-re...

2019-11-05 11:59:44 318 0

原创 HBASE手动触发major_compact

定时执行脚本 #!/bin/bash source /etc/profile sh ./hbase shell <<EOF major_compact 'table_name' EOF major_compact 语法: #Compact all regions ...

2019-11-05 11:26:52 235 0

原创 hbase扩容 缩容

初始化集群 初始化集群:hadoop三个DataNode,HBASE集群只有一个regionserver。 后面我们不停服的情况下,动态添加一个机器node4,在node4上启动Hregionserver服务。 hbase动态扩容 配置regionservers 配置每台机器的regionse...

2019-11-04 19:38:37 575 0

原创 hbase 负载均衡

概述 hbase 有多个regionserver,固需要负载均衡。本文讲述hbase的负载均衡如何使用。 以下命令都是在hbase shell 控制台使用的。 balance_switch hbase(main):001:0> help 'balance_switch' ...

2019-11-04 19:32:22 109 0

原创 hadoop 动态扩容 缩容

初始化集群 初始化集群:hadoop三个DataNode,HBASE集群只有一个regionserver。 后面我们不停服的情况下,动态添加一个机器node4,在node4上启动DataNode和Hregionserver服务。 hadoop动态扩容 准备工作 准备工作与新搭建集群类似,这里参...

2019-11-04 19:09:44 176 0

原创 hbase源码调试

为了调试源码,我们最好只启动一个regionserver。 hbase集群配置 为了避免在调试过程中由于请求超时而导致地调试中断,可以适当的延长请求的超时时间,修改hbase-site.xml文件中的zookeeper.session.timeout和hbase.zookeeper.propert...

2019-10-31 19:47:03 95 0

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