自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (5)
  • 收藏
  • 关注

原创 Soul高可用网关:配置缓存三大同步策略

作者:黄小厮、猫大人前言Soul 是一个异步、高性能、跨语言、响应式的API网关。我们希望能够有一样东西像灵魂一样,保护您的微服务。我们参考了Kong,Spring-Cloud-Gateway等优秀的网关的设计与实现,站在巨人的肩膀上,Soul由此诞生!关于更详细的介绍,请参考官方文档:https://dromara.org/website/zh-cn/docs/soul/soul.htm...

2019-08-12 11:15:48 867 4

转载 深入理解kafka 电子版

转载至https://blog.csdn.net/u013256816/article/details/90085706(扫描二维码购买电子版)自从3月8日将原本的电子版下架后已有两月有余,今日重新将电子版的《深入理解Kafka》以掘金小册的形式上线。掘金没有推广,只能我自己上了,如有打扰,还望海涵。原本的电子版在亚马逊以及京东上都短暂存在过,将他们下线是因为:1. 这2个平台的电...

2019-05-11 10:10:22 7222

原创 详解scheduleAtFixedRate与scheduleWithFixedDelay原理

前言前几天,肥佬分享了一篇关于定时器的文章你真的会使用定时器吗?,从使用角度为我们详细地说明了定时器的用法,包括 fixedDelay、fixedRate,为什么会有这样的区别呢?下面我们从源码角度分析下二者的区别与底层原理。jdk 定时器这里不再哆嗦延迟队列、线程池的知识了,请移步下面的链接延迟队列原理,http://cmsblogs.com/?p=2448线程池原理,http://...

2019-04-25 11:34:34 6644 2

原创 spring boot如何抛弃tomcat容器

我们在上一篇文章 spring boot单元测试 中提到了spring单元测试为SpringApplication指定spring容器实现类,从而达到抛弃tomcat容器的目的,我们这篇文章的目就是反其道而行,让spring boot抛弃tomcat容器。但是有些地方确实需要这么做,我们想利用spring boot为我们提供的便利,但是又不希望引入sevlet容器。解决方法网上提供了很多方法,...

2018-09-19 18:05:50 5831 3

原创 spring boot单元测试之druid NullPointException

最近在使用spring boot 对 Controller 进行单元测试时,发现 druid 竟然抛出了空指针异常。原因是,使用了druid的监控,需要经过druid的 Filter 拦截器,但是spring boot test未调用 Filter#init() 对 Filter 进行初始化。异常代码@RunWith(SpringRunner.class)@SpringBootT...

2018-09-16 22:57:06 3815

原创 Tomcat8源码分析系列-关于tomcat热加载的一些思考

在前面的文章中,我们分析了 tomcat 类加载器的相关源码,也了解了 tomcat 支持类的热加载,意味着 tomcat 要涉及类的重复卸装/装载过程,这个过程是比较敏感的,一旦处理不当,可能会引起内存泄露卸载类我们知道,class 信息存放在元数据区(1.7是 Perm 区),这一块的内存相比堆而言,只占据非常小的空间,但是如果处理不当,还是有可能会导致内存溢出。这让我回想起几年前的一...

2018-05-30 17:13:18 1770

原创 Tomcat8源码分析系列-类加载器

类加载器在分析 tomcat 类加载之前,我们简单的回顾下 java 体系的类加载器启动类加载器(Bootstrap ClassLoader):加载对象是java的核心类库,把一些的 java 类加载到 jvm 中,它并不是我们熟悉的 ClassLoader,而是 jvm 层面由 C/C++ 实现的类加载器,负责加载 $JAVA_HOME/jre/lib 目录下 jvm 指定的类库,它是...

2018-04-29 00:45:15 2476 3

原创 Tomcat8源码分析系列-Session源码解析

在 web 开发中,我们经常会用到 Session 来保存会话信息,包括用户信息、权限信息,等等。在这篇文章中,我们将分析 tomcat 容器是如何创建 session、销毁 session,又是如何对 HttpSessionListener 进行事件通知tomcat session 设计分析tomcat session 组件图如下所示,其中 Context 对应一个 webapp 应...

2018-03-29 00:29:35 2512 7

原创 Tomcat8源码分析系列-spring boot集成tomcat

spring boot集成tomcat;spring boot集成tomcat源码分析

2018-03-21 20:19:46 2356

原创 spring源码扩展点与实战(二)

在上一篇文章《spring源码扩展点》,我们简单的介绍了 spring 的几个常用扩展点,了解了 BeanPostProcessor, BeanFactoryPostProcessor, BeanDefinitionRegistryPostProcessor, ApplicationListener, ApplicationContextInitializer 的作用,接下来主要介绍下在项目中的...

2018-02-27 01:32:33 1573 6

原创 spring源码扩展点与实战(一)

前言我们在使用 spring 框架的时候,有时候需要做一些定制化开发,这个时候就有必要对 spring 进行一些个性化扩展。spring 的代码本身就是一门艺术,可以非常方便进行扩展,但是有时候应用场景比较复杂,可能会觉得无从下手,笔者也曾有这样的困惑,因此,本文总结了一些常用的扩展点,希望能起到抛砖引玉的作用,开拓大家的思路。spring 扩展点BeanPostProcess...

2018-02-26 00:29:15 3030

原创 Spring类型转换源码分析

前言 本文基于 spring 4.3.13 版本在项目中我们经常使用 spring 提供的 IOC 功能,目前主要有两种方式:xml、注解,而这两种方式的原理是不同的,xml 的注入主要依赖 BeanWrapperImpl 进行属性注入,而注解是依赖 BeanPostProcessor 进行注入。在使用 IOC 功能的时候,经常需要利用 spring 提供的类型转换功能,比如 Str...

2018-02-20 17:31:37 1672 1

原创 Tomcat8源码分析系列-启动分析(四) webapp

前言上一篇文章中我们分析了 Service、Engine、Host、Pipeline、Valve 组件的启动逻辑,在 HostConfig 中会实例化 StandardContext,并启动 Context 容器,完成 webapp 应用程序的启动,这一块是最贴近我们开发的应用程序。在这一篇文章中,我们将要分析 tomcat 是如何解析并初始化应用程序定义的 Servlet、Filter、L...

2018-02-15 14:14:53 3135

原创 Tomcat8源码分析系列-启动分析(三) Catalina启动

在上一篇文章中,我们分析了tomcat的初始化过程,是由Bootstrap反射调用Catalina的load方法完成tomcat的初始化,包括server.xml的解析、实例化各大组件、初始化组件等逻辑。那么tomcat又是如何启动webapp应用,又是如何加载应用程序的ServletContextListener,以及Servlet呢?我们将在这篇文章进行分析我们先来看下整体的启动逻辑,to...

2018-02-02 23:40:01 1560

原创 spring websocket性能测试

业务背景触屏版在线客服使用WebSocket技术替代传统的 Ajax 轮询方案,为了验证触屏版在线客服架构优化,预估架构优化后的性能是否可实现预期效果,避免及预防风险,因此对触屏版进行压力测试至关重要。项目中使用了Spring websocket + SockJs + Stomp技术,虽然是基于websocket协议,但是对其进行了封装,数据传输格式有一定的差异,因此需要额外编写脚本来完成...

2018-01-15 23:01:19 10559 1

原创 spring websocket性能调优

由于之前的排版较混乱,现重新整理发布TProfiler工具TProfiler是一个可以在生产环境长期使用的性能分析工具。它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点、对象创建热点、线程状态分析等数据,为查找系统性能瓶颈提供数据支持。TProfiler在JVM启动时把时间采集程序注入到字节码中,整个过程无需修改应用源码.运行时会把数据写到日志文件,一般情况下每

2018-01-14 09:45:48 9678

原创 spring websocket项目实践

本文基于spring websocket总结的项目实践经验,希望能够帮助大家Websocket、sockjs、stomp简介websocketWebSocket protocol是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duple)。一开始的握手需要借助HTTP请求完成,在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,...

2018-01-13 23:57:09 7616 4

原创 Tomcat8源码分析系列-启动分析(二) Catalina初始化

# Bootstrap Tomcat运行是通过Bootstrap的main方法,在开发工具中,我们只需要运行Bootstrap的main方法,便可以启动tomcat进行代码调试和分析。Bootstrap是tomcat的入口,它会完成初始化ClassLoader,实例化Catalina以及load、start动作。在这一篇文章中,我们将会对tomcat初始化过程进行分析。main方法首...

2018-01-13 14:57:09 2638

原创 Tomcat8源码分析系列-启动分析(一) Lifecycle

Lifecycle在其他框架中也很常见,比如spring,它常用于具有生命周期的组件,由Lifecycle控制组件的初始化、启动、销毁等动作,方便应用程序获取、释放某些资源,或者是触发某些特定的事件。Tomcat也是如此,在学习整个启动流程之前,我们先行了解下Lifecycle的实现机制,便于理解整个流程。LifecycleLifecycle接口是一个公用的接口,定义了组件生命周期的一...

2018-01-13 14:53:49 6465 2

原创 Tomcat8源码分析系列-tomcat框架设计

总体架构tomcat的总体架构如下图所示(摘自http://blog.csdn.net/jiaomingliang/article/details/47393141) 如上图所示,tomcat由Server、Service、Engine、Connerctor、Host、Context组件组成,其中带有s的代表在一个tomcat实例上可以存在多个组件,比如Context(s),tomcat...

2018-01-13 14:51:06 5658 5

原创 Tomcat8源码分析系列-环境搭建

前言为什么要学习tomcat源码?tomcat是目前非常流行的web容器,其性能和稳定性也是非常出色的,学习其框架设计和底层的实现,不管是使用、性能调优,还是应用框架设计方面,肯定会有很大的帮助tomcat版本该系列博客的tomcat版本是8.5.24下载源码从apache官网下载tomcat源码包,本人以8.5.24版本为例,http://tomcat.apa...

2018-01-13 14:46:57 2824 1

原创 浅谈Spring设计模式

浅谈Spring设计模式,工厂模式、单例模式、适配器模式、装饰模式、观察者模式、策略模式、代理模式、责任链模式、建设者模式、模板模式

2017-12-24 00:10:20 9861 4

原创 DruidDataSource源码解析

DruidDruid是java语言中最好的数据库连接池之一,经常在项目中使用。本文基于目前最新的版本1.1.6,探索下Druid连接池的实现原理。因为涉及到各种复杂逻辑,暂未想到比较好的图示来描述源码,因此本文更多的是代码+文字,大家见谅哈首先,提出几个问题,我们带着这几个疑问去学习druid连接池源码 - druid常用的参数 - druid如何创建连接的 - connection

2017-12-23 01:07:42 18966 5

转载 objenesis

转自http://blog.csdn.net/codershamo/article/details/52015206objenesis简介:objenesis是一个小型Java类库用来实例化一个特定class的对象。使用场合:Java已经支持使用Class.newInstance()动态实例化类的实例。但是类必须拥有一个合适的构造器。有很多场景下不能使用这种方式实例化类,比如:构造器需要参数构造器

2017-08-26 23:38:37 4160

原创 resteasy自定义参数解析

resteasy源码扩展,支持自定义参数解析

2017-08-21 21:58:09 1915

原创 spring resteasy单元测试

mock框架在web项目中进行单元测试非常方便,resteasy作为一个优秀的rest框架,也为我们提供了mock测试工具,但是并没有替我们集成spring,因此我们编写的Resource类无法完成bean的注入,进行单元测试时比较麻烦。我们希望像springmvc那样非常方便地进行单元测试(http://blog.csdn.net/dwade_mia/article/details/774516...

2017-08-21 20:23:30 940

原创 springmvc mock单元测试

springmvc mock单元测试,提高单元测试效率

2017-08-21 16:42:22 726

原创 springmvc参数注入源码剖析&源码扩展

项目中使用json传递数据,定义了一套统一的格式,如下所示,但是实际上业务层面只需要处理data节点的数据,sign、signType参数由框架层面进行验签处理。项目中的web层使用了springmvc、resteasy框架,为了方便接收data节点的json数据,笔者扩展了springmvc的源码,添加了自定义的HandlerMethodArgumentResolver。{ "s

2017-08-21 15:43:32 931

原创 mybatis拦截器开发-分表插件

相关源码已上传至我的github,对应的插件代码在src/main/java/net/dwade/plugins/mybatis目录 https://github.com/huangxfchn/dwade/tree/master/framework-plugins项目背景  项目中使用oracle数据库 + mybatis框架,由于数据量较大,需要使用日表。而我们又不希望对mybat

2017-08-18 16:35:06 1929

原创 maven个人实战总结&FAQ

解决pom报错使用maven经常会碰到这样或者那样的问题,解决的思路只有一个!弄清楚为什么报错,然后解决它,就是这样么简单。简单的报错,直接找到对应的pom.xml,将鼠标移至对应的错误提示即可,但是对于复杂的,可以根据下面的思路进行解决。注意,如果一个项目报错,往往会引起其它依赖的项目报错,因此需要优先解决父模块、公共模块的报错,这是一个原则。调出myeclipse的problems操作面板,w...

2017-08-16 23:48:52 2173

原创 mybatis-generator扩展-自定义代码注释

最近在使用mybatis generator自动生成dao代码的时候,发现生成的dao实体类的注释可读性非常差,只会注释对应哪个数据库字段名,我的诉求是生成的javabean的属性注释对应数据库中表字段的comments

2017-08-16 22:20:43 714

原创 myeclipse eclipse 常用插件&疑难杂症

一、MyEclipse疑难杂症经常会碰到些莫名其妙的错,但是在界面上无法查看原因,可以在工作空间中的.metadata目录下找到.log日志,其中有报错的明细记录,例如我的这个日志就在F:\JavaWorkspace\WorkspaceForMyEclipse\.metadata\.log。1、右键项目卡死可能是由于jvm内存太小了,可以适当提高,另外还可以对MyEclipse进行优化,这里不详述...

2015-12-29 15:37:57 1252

subclipse插件

Eclipse的svn插件subclipse,支持MyEclipse

2015-12-29

m2e maven插件

maven整合svn的插件,从svn中直接导入maven项目。 安装该插件,需要先安装subclipse插件

2015-12-29

Hibernate v3中文api

Hibernate v3中文api 1. Hibernate入门 2. 体系结构(Architecture) 3. 配置 4. 持久化类(Persistent Classes) 5. 对象/关系数据库映射基础(Basic O/R Mapping) 6. 集合类(Collections)映射 7. 关联关系映射 8. 组件(Component)映射 ……

2015-01-07

java颜色控制代码

通过滑动条的滚动,以及文本框的输入值,调整窗口的背景色

2014-05-24

java图片浏览器

Java图片浏览器源码,主要实现了鼠标滚轮对图像进行缩放的功能,请从Browser.java启动

2014-05-24

空空如也

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

TA关注的人

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