- 博客(58)
- 资源 (26)
- 收藏
- 关注
原创 频繁Young GC 问题记录
1、问题:连续gc每10s左右发生“一组”gc,每组基本是三次,如果按组的gc频率来看还算正常,但这个“一组”连续三次gc属实不太正常。2、查看gc统计:jstat -gc 进程id 100100ms的gc统计信息:其中连续gc三次,第一次gc后,发现内存每次增加80M左右,而第一次gc时其实eden还剩余40M的内存,所以判断此时有大对象在不断的快速生成。3、jmap -histo:live 进程id |grep "cn" |head -20想通过手动查看对比对象的内存..
2021-04-25 01:43:15 7097
转载 Redis内存模型
转载:https://www.cnblogs.com/kismetv/p/8654978.html前言Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在...
2019-11-28 17:24:42 226
原创 Springmvc中@RequestMapping的实现原理
1、@RequestMapping处理方法的注册与匹配(1)重要的类、接口RequestMappingHandlerMapping 入口类RequestCondition 匹配条件接口,通过其实现类来判断是否匹配处理方法RequestMappingInfo 匹配条件信息类,实现RequestCondition,并包含多个RequestCondition实现类(2)RequestMap...
2019-10-08 16:45:46 2697
转载 接口方法上的注解无法被 @Aspect 声明的切面拦截的原因分析
转载自接口方法上的注解无法被@Aspect声明的切面拦截的原因分析前言在Spring中使用MyBatis的Mapper接口自动生成时,用一个自定义的注解标记在Mapper接口的方法中,再利用@Aspect定义一个切面,拦截这个注解以记录日志或者执行时长。但是惊奇的发现这样做之后,在Spring Boot 1.X(Spring Framework 4.x)中,并不能生效,而在Spring...
2019-08-09 17:26:18 2438
原创 《Spring源码深度解析》笔记
一、容器基础1、DefaultListableBeanFactoryDefaultListableBeanFactory是整个bean加载的核心,是spring注册即加载bean的默认实现。继承AbstractAutowireCapableBeanFactory,实现ConfigurableListableBeanFactory, BeanDefinitionRegistry。Abstrac...
2019-07-12 09:55:32 459
原创 《看透SpringMVC》笔记
第一部分:网站基础知识一、网站架构1、软件类型(1)三类:单机、CS和BS。(2)网络传输:OSI七层参考模型和TCP/IP四层参考模型。 OSI七层模型 TCP/IP四层模型 应用层、表示层、会话层 应用层 传输层 ...
2019-07-12 09:41:03 344
原创 《图解HTTP》笔记
一、网络基础1、发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。http位于应用层,tcp位于传输层,ip位于网络层。2、ARP(Address Resolution Protocol)是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。3、TCP位于传输层,为了方...
2018-11-20 15:54:46 195
原创 Mysql中锁相关解读
以下是个人对mysql数据库中锁相关的一些理解,其中如MVCC、next-key锁等具体的解释请搜索相关资料。数据库中的锁并不能用于保证在并发情况下业务数据的安全,还是需要在程序中控制数据的并发操作。1、锁的区别共享锁(读锁、s锁)和排他锁(写锁、x锁)是指加锁的类型(不同作用)。乐观锁和悲观锁是指加锁的方式(不同判断)。2、锁的粒度表锁是Mysql中最基本的锁策略,...
2018-11-12 16:46:50 146
原创 MyBatis-Spring中实现spring事务管理解析
我们在使用Mybatis时会配置SqlSessionFactoryBean用于创建SqlSessionFactory,在buildSqlSessionFactory()方法中我们就可以看到TransactionFactory的创建,TransactionFactory就是事务管理的基础。TransactionFactory也是可以在配置中配置的,如果没配置就使用SpringMana...
2018-11-04 18:16:03 1689 2
原创 spring事务传播实现源码分析
本文只是对spring事务传播实现的流程进行简单的分析,如有不对之处请指出。 配置spring事务管理时,我们会使用DataSourceTransactionManager这个类,它继承了AbstractPlatformTransactionManager,而AbstractPlatformTransactionManager实现了PlatformTransactio...
2018-11-04 17:29:11 552
原创 《MyBatis技术内幕》笔记4—高级主题
四、高级主题1、拦截器Interceptor相关模式:责任链模式Interceptor:拦截器可以改变Mybatis的默认行为,如实现sql重写之类的功能。用户自定义拦截器除了继承Interceptor接口,还需要使用@Intercepts和@Signature来指定拦截的方法列表,最后需要在mybatis-config.xml中配置添加拦截器插件。Executor、ParameterHa...
2018-11-04 12:34:12 182
原创 《MyBatis技术内幕》笔记3—接口层
接口层主要就是指MyBatis对外提供的API,平常项目中直接使用到的。三、接口层相关模式:策略模式。SqlSession接口:对外提供MyBatis常用API,定义了常用的数据库操作以及事务相关操作。SqlSessionFactory接口:负责创建SqlSession对象,通过参数指定事务隔离级别、底层使用Executor具体类型以及是否自动提交事务等方面的配置。DefaultSql...
2018-11-02 18:20:48 248
原创 《MyBatis技术内幕》笔记2—核心处理层
因为该文主要是看书的笔记(当然自己看书时也会看源码并跟踪调试),所有没有详实的源码分析,但是可以作为源码分析的流程、索引和注释。二、核心处理层1、Mybatis初始化 Mybatis初始化过程中,除了会读取mybatis-config.xml配置文件以及映射配置文件,还会加载配置文件指定的类,处理类中的注解,创建一些配置对象,最终完成框架中各个模块的初始化。相关模...
2018-11-02 17:29:33 526
原创 《MyBatis技术内幕》笔记1—基础支持层
看这边书是为了学习mybatis的实现原理,以便解决实际应用中的问题,还有就是学习里面的思想和设计模式,这本书很好的一点就是结合设计模式来讲解的,对理解设计模式也很有帮助。笔记是个人的一个小总结,也可以说是一个内容轮廓,初学勿喷,欢迎交流。一、基础支持层1、解析器模块XPathParser:封装了XPath、Document、EntityResolver(XMLMappe...
2018-10-31 11:41:07 317
原创 《第一本Docker书》笔记
看这本书是也是专业的运维同事推荐的,我主要想了解下docker,学习一下基本命令,在工作中同事说起时至少得知道大概是个什么,自己还谈不上具体应用。一、docker组件1、客服端和服务器(守护进程),docker是c/s架构的程序,提供命令行工具docker以及一整套RESTful API。2、镜像,基于联合文件系统的一种层式结构(类似于jar包)。3、容器,基于镜像启动起...
2018-10-29 17:47:50 606
原创 HystrixCircuitBreakerImpl熔断器之滑动窗口
这里主要是介绍熔断器在关闭状态下内部是如何不断的检查命令的执行结果来对应更改状态,其实就是利用Rxjava实现了一个滑动窗口,下面就在源码中看看是怎么回事。1、先还是再整体看看HystrixCircuitBreakerImplclass HystrixCircuitBreakerImpl implements HystrixCircuitBreaker { private...
2018-09-27 16:24:22 1101 2
原创 《Redis开发与运维》笔记
一、redis特性1、(1)速度快:C/内存/单线程架构;(2)丰富功能:建过期/订阅发布/Lua脚本创建新命令/简单事务/流水线(pipeline)功能;(3)持久化:RDB/AOF;(4)高可用:主从复制/哨兵/集群。2、对外数据结构由内部多种编码实现,改进内部编码对外无感知,不同编码在不同场景发挥各自优势。3、选择单线程是因为纯内存访问、非阻塞I/O、避免线程切换和竞态消耗,所以red...
2018-09-14 18:46:00 414
原创 ThreadLocal使用记录
在使用ThreadLocal时,很可能想的是把变量A放在ThreadLocal中,然后就认为ThreadLocal.get()的对象就是线程安全的了,这样想确实是错误的,因为A==ThreadLocal.get(),所有如果其它线程改变了A的值,那么ThreadLocal.get()对象值也就改变了,所以是线程不安全的。1、ThreadLocal不是解决共享变量线程安全的。2、...
2018-06-26 13:02:30 267
原创 Hystrix线程隔离模式-如何调用线程池
在线程隔离模式下,线程池在创建命令时就根据配置进行初始化,并在一个全局的ConcurrentHashMap中。本文主要是浅析下如何使用到对应的线程池的。在AbstractCommand浅析中提到subscribeOn(threadPool.getScheduler(new Func0<Boolean>(){})),threadPool.getScheduler(new Func0<...
2018-06-21 18:31:56 2172
转载 HystrixCircuitBreaker源码分析
转载:https://www.sczyh30.com/posts/Microservice/netflix-hystrix-how-it-works-summary/Hystrix中的Circuit Breaker的实现比较明了。整个HystrixCircuitBreaker接口一共有三个方法和三个静态类:其中allowRequest()方法表示是否允许指令执行,isOpen()方法表示断路器是否...
2018-06-15 15:58:58 440
原创 HystrixCommand与AbstractCommand浅析
因为hystrix的命令执行都是基于RXjava的,所以在看源码之前一定要先了解RXjava。HystrixCommand继承了AbstractCommand,HystrixCommand主要是提供了更多的构造函数和构造参数建造者以及最终调用run()实现用户业务,而AbstractCommand中就是要实现隔离、熔断等核心功能。下面我主要以注释的形式来分析,如有不对的地方欢迎指正。1、Hystr...
2018-06-15 14:36:58 2108
转载 RxJava 详解
转载:http://gank.io/post/560e15be2dca930e00da1083RxJava 到底是什么RxJava 好在哪API 介绍和原理简析1. 概念:扩展的观察者模式观察者模式RxJava 的观察者模式2. 基本实现1) 创建 Observer2) 创建 Observable3) Subscribe (订阅)4) 场景示例a. 打印字符串数组b. 由 id 取得图片并显示3....
2018-06-14 17:11:46 263
转载 Hystrix -工作流程浅析
转载:https://www.sczyh30.com/posts/Microservice/netflix-hystrix-how-it-works-summary/这篇文章里我们来总结一下 Netflix Hystrix 的工作流程(版本为 1.4.x)。这是官方提供的流程图(来自 GitHub):工作流程我们来根据流程图来分析一下工作流程。首先我们需要创建一个 HystrixCommand 或...
2018-06-12 14:26:05 253
原创 Hystrix监控
一、受监控的项目添加依赖,之前遇到的问题:访问流的连接一直获取不到数据,结果是版本问题。<dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>1.5.12&...
2018-06-12 14:24:08 185
转载 浅析I/O模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr...
2018-06-08 13:52:08 278
原创 Java并发编程:FutureTask原理解析
本文以注释的方式解析了FutureTask的源码(jdk1.7),其实源码上的很多英文注释已经很清楚了,算是加上个人的理解吧。package java.util.concurrent;import java.util.concurrent.locks.LockSupport;public class FutureTask implements RunnableFutur
2018-01-11 15:59:57 337
转载 轻量级分布式 RPC 框架
原文:https://my.oschina.net/huangyong/blog/361751RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的
2017-10-25 09:12:07 234
原创 Class.getResource()与ClassLoader.getResource()的路径问题
Class.getResource(String path)path不以’/'开头时,默认是从此类所在的包下取资源;path以’/'开头时,则是从ClassPath根下获取;与之相反Class.getClassLoader().getResource(String path)path不以’/'开头时,则是从ClassPath根下获取;path以’/'开头
2017-10-11 13:47:09 757
原创 Tomcat启动加载过程
我 是在看jvm类加载机制时突然想到我们经常使用的tomcat是如何启动?如何加载类的?于是顺藤摸瓜找了找,和大家分享下,比较粗糙,不要介意。1、start.bat是启动tomcat的脚本,查看脚本可知其实是启动catalina.bat。2、在catalina.bat中可以看到执行setclasspath.bat,setclasspath.bat是做一些变量参数设置,比如这里可以设置JVM
2017-03-24 15:20:40 1141
原创 Html5图片压缩与剪切
在任何项目中,图片的上传都是很常用的功能,那么不妨用Html5的FileReader对象来实现。 FileReader对象主要用来把文件读入内存,并且读取文件中的数据。对图片上传这里用到的是该对象的readAsDataURL方法,该方法用于将文件中的数据读取为dataURL,如图为图片转化的部分: 压缩,利用canvas的drawImage方法来绘
2017-03-23 11:00:05 1594
转载 HTTP文件断点续传的原理
原址:http://www.cnblogs.com/Creator/p/5490929.html关键点:对于断点续传,关键点是两个:1. 终端知道当前的文件和上一次加载的文件是不是内容发生了变化,如果有变化,需要重新从offset 0 的位置开始下载2. 终端记录好上次成功下载到的offset,告诉server端,server端支持从特定的offset 开始吐数据
2017-03-23 09:30:39 555
转载 springmvc 学习(二)
链接:http://www.zhihu.com/question/38459887/answer/78224340核心架构的具体流程步骤如下:1、 首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;2、 DispatcherServlet——>HandlerMappi
2016-09-20 14:49:40 336
原创 Java支付宝接口
转载:http://programer-wf.iteye.com/blog/682694网上关于Java支付宝接口的文章很多,都大同小异,但是具体到代码中,还是不太一样,对于以前没有调试的新手来说还是很费解的,这是通过调试认为比较有用的版本,贴在这里供大家参考。 1、从本站提交到支付宝: /** * 将订单提交支付宝进行网上支付 */ public ...
2016-05-17 17:18:48 218
原创 引用xml命名空间问题
红色部分是兼容性需要,最开始我还以为是注释,坑了半天。。。xmlns:v="urn:schemas-microsoft-com:vml">DEMO
2016-04-27 21:33:06 847
转载 泛型与Object
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
2016-04-27 21:13:49 656
原创 js闭包
闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭。function myFunction(){var i = 1;for(i =1; idocument.getElementById("btn_"+i).attachEvent("onclick", function a(){var v = i;function b() {alert(
2016-04-23 20:38:34 302
转载 java--自定义标签(tag、tld两种)
jsp自定义标签 Tag文件版 实现一个与上篇文章类似的Select标签功能1.在WEB-INF/tags/select.taguri="http://java.sun.com/jstl/core_rt" %> ${attrEntry.key}="${attrEntry.value }" >
2016-03-25 23:14:10 525
原创 spring中自定义注解(annotation)与获取注解
package me.lichunlong.spring.annotation;import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotat
2016-03-16 10:19:13 5089 1
原创 Java面试基础
Java基础 一、对比篇1、final, finally, finalize的区别final:如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在new一个对象时初始化(即只能在声明变量或构造器或
2016-03-16 10:08:38 354
Hystrix-dashboard+turbine-web+说明文档
2018-11-06
springmvc框架实例
2015-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人