自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黄太洪的博客

Talk is cheap,show me the code

原创 使用Docker+Gitlab+Docsify搭建公司内部文档服务

文档服务 使用Docker+Gitlab+Docsify搭建文档服务 Docker环境配置 安装Docker,Link:Centos7上安装配置Docker 安装Docker Compose,Link:Docker Compose安装与简单使用 编写DockerFile.onbui...

2019-06-15 18:23:05 2256 0

原创 Spring Security规则配置及端点(EndPoint)保护详解

匹配规则 HttpSecurity.antMatcher(...)表示该安全规则只针对参数指定的路径进行过滤 HttpSecurity.requestMatchers同上,唯一区别是可以接受多个参数【两者不能同时使用】 HttpSecurity.authorizeRequests()该方法用于配...

2019-04-25 11:18:38 2043 0

原创 Maven JAR包冲突问题排查及解决方案

前言 写这篇文章的初衷是因为今天在使用mvn dependency:tree命令时,突然想起一年前面试阿里的一道面试题。面试题是说假设线上发生JAR包冲突,应该怎么排查?我那时候的回答是IDEA有个Maven Helper的插件,可以帮忙分析依赖冲突,然后还有一种办法是如果一个类import的时...

2018-08-17 15:23:05 21294 4

原创 死磕Netty源码之Netty编解码源码解析

前言 Netty的底层是基于TCP实现的,TCP协议在传输数据的过程中一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,因此我们需要考虑Netty的粘包拆包问题 源码分析 Netty提供了拆包的基类ByteToMessageDecoder,如...

2018-07-14 20:26:12 710 0

原创 死磕Netty源码之内存分配详解(四)PoolArena全局内存分配

内存分配 关于我:http://huangth.com GitHub地址:https://github.com/RobertoHuang 免责声明:本系列博客并非原创,主要借鉴和抄袭闪电侠,占小狼等知名博主博客。如有侵权请及时联系 全局分配 内存池的初始阶段线...

2018-07-14 20:25:20 641 0

原创 死磕Netty源码之内存分配详解(三)PoolThreadCache线程缓存内存分配

内存分配 关于我:http://huangth.com GitHub地址:https://github.com/RobertoHuang 免责声明:本系列博客并非原创,主要借鉴和抄袭闪电侠,占小狼等知名博主博客。如有侵权请及时联系 线程私有分配 在介绍Pool...

2018-07-14 20:24:46 1414 1

原创 死磕Netty源码之内存分配详解(二)PoolArena内存分配结构分析

前言 在应用层通过设置PooledByteBufAllocator来执行ByteBuf的分配,但是最终的内存分配工作被委托给PoolArena。由于Netty通常用于高并发系统所以各个线程进行内存分配时竞争不可避免,这可能会极大的影响内存分配的效率,为了缓解高并发时的线程竞争,Netty允许使用...

2018-07-14 20:23:09 794 0

原创 死磕Netty源码之内存分配详解(一)(PooledByteBufAllocator)

前言 为了避免频繁的内存分配给系统带来负担以及GC对系统性能带来波动,Netty4使用了内存池来管理内存的分配和回收,Netty内存池参考了Slab分配和Buddy分配思想。Slab分配是将内存分割成大小不等的内存块,在用户线程请求时根据请求的内存大小分配最为贴近Size的内存快,减少内存碎片同...

2018-07-14 18:52:51 3306 0

原创 死磕Netty源码之ChannelPipeline源码解析(二)

前言 在上一篇博客中我们介绍了Pipeline数据结构以及节点的相关操作,在这一篇博客中将介绍Pipeline的事件传播 关于我:http://huangth.com GitHub地址:https://github.com/RobertoHuang 免责声明:本系列博...

2018-07-14 12:15:12 377 0

原创 死磕Netty源码之ChannelPipeline源码解析(一)

前言 ChannelPipeline数据管道是ChannelHandler数据处理器的容器,负责ChannelHandler的管理和事件的拦截与调度 关于我:http://huangth.com GitHub地址:https://github.com/RobertoHuang ...

2018-07-11 22:31:26 1072 0

原创 死磕Netty源码之新连接接入源码解析

前言 本博客主要是介绍Netty在新连接接入后的相关处理 关于我:http://huangth.com GitHub地址:https://github.com/RobertoHuang 免责声明:本系列博客并非原创,主要借鉴和抄袭闪电侠,占小狼等知名博主博客。如有侵权...

2018-07-11 21:46:47 640 0

原创 死磕Netty源码之Reactor线程模型详解(二)NioEventLoop的执行

前言 在上一篇博客介绍了NioEventLoop的启动流程,这篇博客将介绍NioEventLoop的执行流程 博客地址:http://huangth.com GitHub地址:https://github.com/RobertoHuang 免责声明:本系列博客并非原创,主要借...

2018-07-08 13:38:44 603 0

原创 死磕Netty源码之Reactor线程模型详解(一)NioEventLoop的启动

前言 Netty中最核心的就是Reactor线程,对应Netty中的代码就是NioEventLoop。NioEventLoop是通过NioEventLoopGroup进行维护的,所以在介绍NioEventLoop前我们先介绍一下NioEventLoopGroup 博客地址:http://...

2018-07-08 13:32:37 675 0

原创 死磕Netty源码之服务端启动源码解析

前言 本博客讲述的是Netty是如何绑定端口、启动服务。启动服务的过程中你将会了解到Netty各大核心组件 博客地址:http://huangth.com GitHub地址:https://github.com/RobertoHuang 免责声明:本系列博客并非原创,主要借鉴...

2018-07-08 12:47:23 571 1

原创 (九) RabbitMQ实战教程(面向Java开发人员)之SpringBoot整合RabbitMQ

SpringBoot整合RabbitMQ使用SpringBoot整合RabbitMQ非常简单,它极大程度的简化了开发成本,使用SpringBoot整合RabbitMQ需导入如下依赖<parent> <groupId>org.springframework.boot&...

2018-03-19 20:44:28 1691 6

原创 (八) RabbitMQ实战教程(面向Java开发人员)之RabbitMQ实现异步RPC

RabbitMQ实现异步RPC本系列博客源码GIT地址:https://github.com/RobertoHuang/RGP-RABBITMQ.gitRabbitMQ Java Client服务端步骤:1.服务端监听一个队列,监听客户端发送过来的消息 2.收到消息之后调用RPC服务得到调用结果 ...

2018-03-19 20:01:42 1218 1

原创 (七) RabbitMQ实战教程(面向Java开发人员)之RabbitMQ常用属性详解

RabbitMQ常用属性详解Alternate ExchangeAlternate Exchange简称AE,当消息不能被正确路由时,如果交换机设置了AE则消息会被投递到AE中,如果存在AE链则会按此继续投递,直到消息被正确路由或AE链结束消息被丢弃。通常建议AE的交换机类型为Fanout防止出现...

2018-03-19 18:06:48 1068 1

原创 (六) RabbitMQ实战教程(面向Java开发人员)之RabbitMQ消息的可靠性

消息可靠性在项目中使用RabbitMQ时,我们可能会遇到这样的问题:如一个订单系统当用户付款成功时我们往消息中间件添加一条记录期望消息消费者修改订单状态,但是最终实际订单状态并没有被修改成功。遇到这种问题我们排查的思路如下:1.消息是否已经成功发送到消息中间件 2.消息是否有丢失的情况 消息是否已...

2018-03-18 21:56:55 2575 0

原创 (五) RabbitMQ实战教程(面向Java开发人员)之RabbitMQ异常处理

RabbitMQ异常处理使用JAVA客户端整合RabbitMQ进行的许多操作都会抛出异常,我们可以自定义异常处理器进行处理,比如我们希望在RabbitMQ消费消息失败时记录一条日志,又或者在消息消费失败时发送一则通知等操作本系列博客源码GIT地址:https://github.com/Robert...

2018-03-18 00:37:33 2265 0

原创 (四) RabbitMQ实战教程(面向Java开发人员)之@RabbitListener消息消费

使用RabbitListener注解进行消息消费在前一篇博客中我们往MessageListenerContainer设置了MessageListener进行消息的消费,本篇博客将介绍一种更为简单的消息消费方式:使用@RabbitListener注解方式。使用RabbitListener进行消息的消...

2018-03-13 17:48:23 14641 0

原创 (三) RabbitMQ实战教程(面向Java开发人员)之Spring整合RabbitMQ

Spring整合RabbitMQ(Spring AMQP)Spring AMQP是对AMQP协议的抽象和封装,从官方网站上得知它是由两个项目组成的(spring-amqp和spring-rabbit)。在使用Spring整合RabbitMQ时我们主要关注三个核心接口(MessageListener...

2018-03-13 15:58:27 3036 1

原创 (二) RabbitMQ实战教程(面向Java开发人员)之Rabbit Java Client

RabbitMQ Java Client在介绍完RabbitMQ基本概念后,我们使用Java代码来模拟一套生产者和消费者的模型。Talk is cheap,直接上代码了(在Demo工程中我会尽可能的应用上常用的方法,但由于篇幅有限所以无法在代码中体现不同交换机的用法,还请多多见谅)相关代码1.创建...

2018-03-12 14:02:44 6381 1

原创 (一) RabbitMQ实战教程(面向Java开发人员)之RabbitMQ相关概念介绍

前言因为项目组需要对RabbitMQ的使用进行优化,所以系统化的学习了RabbitMQ,记录下来希望能帮助到后续使用RabbitMQ的同学少走弯路。在阅读本博客前我希望您已经对RabbitMQ有了基本的了解,因为本篇博客不是从0到1的讲解RabbitMQ,同时本篇博客主要面向Java开发人员,因此...

2018-03-12 11:15:47 9202 6

原创 03.Spring IOC源码深度解析之默认标签的解析

标签解析在Spring的XML配置里面有两大类声明,一个是默认的如<bean id=”test” class=”test.TestBean” />,另一类就是自定义的如<tx:annotation-driven />,两种标签的解析方式差异是非常大的。parseBeanDe...

2017-12-27 20:55:27 408 0

原创 02.Spring IOC源码深度解析之容器的基本实现

在搭建完Spring源码阅读环境后,大家比较困惑的应该就是从哪里开始入手阅读Spring源码了。众所周知Spring的两大特性为IOC和AOP,那我们先以IOC为例跟进Spring源码。IOC(Inversion of Control):即”控制反转”,它不是什么技术而是一种设计思想,在传统的JA...

2017-12-23 17:26:06 1489 0

原创 01.Spring源码深度解析之IDEA源码阅读环境搭建

前言相信大部分人在面试过程中都会被问到是否阅读过Spring源码 Spring底层如何实现 Spring使用了哪些设计模式等问题,通常遇到这种问题我是直接选择死亡。因为开始我觉的花时间去研究一门框架不如多学习几个开源框架性价比来的高,可能花几天时间你能用一个新框架撸码,但是花几天时间研究Sprin...

2017-12-22 13:59:10 4804 0

原创 前辈分享的经典语句

一个人的心态很重要 心量小的人 芝麻大小的事情也能在心里翻江倒海 心量大的人 即使在危机面前也能镇定自若 同样一件事情 掀起的波澜大小缺因人而异 有一句话很好 用于技术人员我觉得尤其合适 想要成为一棵大树 就不要去和草争一个人的成就 不可以用金钱来衡量 而是一生中 你善待过多少人 有多...

2017-12-21 19:49:46 729 0

原创 Java日志记录框架Logback配置详解(企业级应用解决方案)

前言Logback是现在比较流行的一个日志记录框架,它的配置比较简单学习成本相对较低,所以刚刚接触该框架的朋友不要畏惧,多花点耐心很快就能灵活应用了。本篇博文不会具体介绍Logback搭建过程,如果你是Logback初学者,强烈建议阅读Logback常用配置详解,它对Logback的配置介绍的非常...

2017-07-19 22:38:57 3777 0

原创 IntelliJ IDEA详细配置和使用教程(适用于Java开发人员)

前言正所谓工欲善其事必先利其器,对开发人员而言若想提高编码效率,一款高效的开发工具是必不可少的,相信看到该博客的朋友们都已经对IntelliJ IDEA有所了解了,所以此处就不对IntelliJ IDEA进行介绍,而是直接阐述在实际开发中应用场景。博主使用的IntelliJ IDEA版本为Inte...

2017-07-12 22:59:23 148328 26

原创 Hibernate批量处理操作(批量查询 批量删除)

前言此处以一个Student案例进行演示1.批量查询1.1 批量查询Dao层代码public List<Student> excuteBatchQuery(String sql, Map<String, List<Object>> map) { Sess...

2017-06-27 20:49:10 2791 0

原创 Linux 最常用命令和知识汇总(含思维导图)

下图是个人整理了一个Linux常用命令和知识点的汇总图片,能满足Java开发工程师基本需求,内容主要分为四部分,Linux介绍,Linux目录结构,Linux常用命令及vim详解。源文件百度云分享地址为:http://pan.baidu.com/s/1qXCLk4k 提取码为:pvez,如链接失效...

2017-06-08 09:07:35 5098 8

原创 Spring Security4.0.3源码分析之FilterChainProxy执行过程分析

在类org.springframework.web.filter.DelegatingFilterProxy的doFilter方法中可以看到,过滤器执行流程实际上是让委托执行实际的doFilter操作@Override public void doFilter(ServletRequest req...

2017-06-07 14:03:36 1085 0

原创 Spring Security4.0.3源码分析之authentication-manager标签解析

最近在学习安全框架spring Security,想弄清楚其中实现的具体步骤,于是下定决心,研究一下Spring Security源码,这篇博客的目的是想把学习过程记录下来。学习过程中主要参考了http://dead-knight.iteye.com/category/220917大神的博客,然后...

2017-05-09 23:05:45 1734 0

原创 Spring Security4.0.3源码分析之http标签解析

最近在学习安全框架Spring Security,想弄清楚其中实现的具体步骤,于是下定决心,研究一下Spring Security源码,这篇博客的目的是想把学习过程记录下来。学习过程中主要参考了http://dead-knight.iteye.com/blog/1511389大神的博客,然后在其基...

2017-05-09 22:43:43 1931 0

原创 Java调整图片大小合并PNG图片生成ICON(保持背景透明)

1.调整图片大小代码/** * * 功能描述: <br> * 〈调整图像到固定大小〉 * * @param srcImageFile 源图像文件地址 * @param descImageFile 缩放后的图像地址 * @param width 缩放后的...

2017-05-09 00:09:00 3953 0

原创 Java动态代理机制详解(JDK动态代理与CGLIB动态代理区别)

代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。在讲述动态代理前,我们先通过一个例子了解一下什么是静态代理,这里以事务控制为例。1.静态代理1.1 pom.xml文件配置<...

2017-05-08 23:04:16 713 0

原创 Hibernate DetachedCriteria方式分页查询返回总记录数

最近在使用Hibernate进行分页查询的时候,发现Hibernate分页有一个瓶颈,就是只能访问查询对应的记录,并不能返回符合条件的总条数,网上给的很多策略都是再写一个方法,通过HQL查询总记录数,个人感觉这种方式太复杂了,如果涉及到复杂查询的时候,HQL也不好写,既然Hibernate是个这么...

2017-05-03 23:40:25 5933 1

原创 FastDFS分布式文件系统简介及单机版安装步骤详解

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储,文件同步,文件访问(文件上传,文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站,视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份,负载均衡,线性扩容等机制...

2017-05-03 21:12:46 696 0

原创 ActiveMQ单机版的安装与使用详细教程

首先简单的介绍一下MQ,MQ英文名MessageQueue,中文名也就是大家用的消息队列,干嘛用的呢,说白了就是一个消息的接受和转发的容器,可用于消息推送。ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范...

2017-05-01 13:09:00 1425 0

原创 Spring Security4.0.3源码分析之FilterChainProxy初始化

最近在学习Spring Security,想弄清楚其中实现的具体步骤,于是下定决心,研究一下Spring Security源码,这篇博客的目的是想把学习过程记录下来。学习过程中主要参考了http://dead-knight.iteye.com/blog/1511389大神的博客,然后在其基础上,进...

2017-04-28 00:11:08 2380 2

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