自定义博客皮肤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

原创 docker/k8s(1):docker安装使用

依赖 docker使用 安装docker 使用yum安装最新版本docker yum install docker 查看docker版本 [root@localhost ~]# docker version Client: Version: 1.13.1 API version...

2020-07-01 17:46:55 17 0

原创 transmittable-thread-local:解决线程池之间ThreadLocal本地变量传递的问题

欢迎关注本人公众号 概述 当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值 一文中介绍了InheritableThreadLocal的问题:主线程变量修改后,子线程无法取到的问题。 阿里开源的transmittable-thread-local...

2020-06-30 21:26:28 45 0

原创 当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值

欢迎关注本人公众号 之前已经介绍,InheritableThreadLocal可以在子线程创建的时候,将父线程的本地变量拷贝到子线程中。 那么问题就来了,是只有在创建的时候才拷贝,只拷贝一次,然后就放到线程中的inheritableThreadLocals属性缓存起来。由于使用了线程池,该线程可...

2020-06-30 20:39:23 48 0

原创 InheritableThreadLocal:子线程继承父线程的本地变量

欢迎关注本人公众号 概述 ThreadLocal可以保存一些变量仅供当前线程使用,其他线程不可见。 实际工作中可能会由于任务复杂,父线程创建几个子线程并发致性任务,那么父线程的本地变量如何传递到子线程呢? 答案是使用InheritableThreadLocal。 代码实例 public stat...

2020-06-30 20:15:48 32 0

原创 ThreadLocal 内存泄漏 代码演示 实例演示

欢迎关注本人公众号 阅读本文前请先阅读: ThreadLocal内存泄露原因分析 不使用ThreadLocal 下面这段程序创建了一个有5个线程的线程池。 每个线程致性都申请5M大小的堆空间。 public class MyThreadLocalOOM1 { public static ...

2020-06-30 19:47:29 55 4

原创 ThreadLocal内存泄露原因分析

欢迎关注本人公众号 背景知识 引用 Object o = new Object(); 这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。 当写下 o=null时,只是表示o不再指向堆中object的对象实例,不代表这个对象实例不存在了。 强引用 ...

2020-06-30 17:59:49 77 0

转载 google aviator:轻量级Java公式引擎

文章目录常用的方法官方文档简介包依赖使用手册执行表达式使用变量exec 方法调用函数自定义函数编译表达式访问数组和集合三元操作符正则表达式匹配变量的语法糖nil 对象日期比较大数计算和精度字面量表示运算类型转换和提升decimal 的计算精度强大的 seq 库两种运行模式调试信息语法手册数据类型操...

2020-06-30 15:44:14 54 0

原创 如何让发布丝般顺滑
原力计划

欢迎关注本人公众号 文章目录欢迎关注本人公众号前言概述环境说明 前言 笔者在过去几年的工作中, 曾负责管理过多个项目,最高也负责过几百万日活的项目,十几人的研发团队,在工作中也总结了一些项目管理经验,参与制定了一些规范,提升团队的整体效率,保障服务的高可用。接下来笔者会将过去的一些经验进行总结,...

2020-06-11 21:32:21 117 0

原创 java自定义类加载器并观察类卸载过程
原力计划

欢迎关注本人公众号 文章目录欢迎关注本人公众号概述代码实现 概述 之前我写了篇博客: java自定义类加载器实现类隔离 ,里面介绍了如何自定义类加载器实现了类隔离。 通常情况下,在JSP,OSGI及其他一些支持热替换的库,都是需要进行类的卸载回收的,否则类在替换后,老的类就没用了但是还在内存中...

2020-06-11 19:49:45 104 0

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

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

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

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

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

2020-05-26 17:52:21 168 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 250 0

原创 rabbitmq 事务消息

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

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

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

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

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

原创 rabbitmq 7种队列实现java版

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

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

原创 rabbitmq用户及vhost配置

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

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

原创 windows10安装rabbitmq

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

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

原创 java11:NoClassDefFoundError: javax/activation/MimetypesFileTypeMap

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

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

原创 Netty实现聊天室

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

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

原创 netty实现WebSocket协议

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

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

转载 网关基于Netty 在Http 协议的实践

文章目录网关基于Netty 在Http 协议的实践http编解码Head 请求ByteBuf 释放,防止内存泄漏引用计数PoolThreadCache连接池连接复用接入端用Netty完全异步Tomcat 做容器Netty 实现 网关基于Netty 在Http 协议的实践 我们网关现在完全基于net...

2020-02-10 20:54:23 322 0

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

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

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

原创 netty实现HTTP服务器

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

2020-02-10 15:07:07 173 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 152 0

原创 Mac安装protobuf

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

2020-02-09 11:53:17 120 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 173 0

原创 netty 4.1.45 protobuf 编解码实现

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

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

原创 netty 4.1.45自定义编解码器

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

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

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

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

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

原创 netty 4.1.45 第一个netty程序

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

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

原创 6. rocketmq事务消息

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

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

原创 5. rocketmq延迟消息队列

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

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

原创 4. RocketMQ顺序消息

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

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

原创 3. springboot集成rocketmq

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

2020-01-21 11:56:06 345 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 209 0

原创 hbase--walgroup源码分析

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

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

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

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

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

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

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

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

原创 java自定义类加载器实现类隔离

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

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

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

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

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

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