自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我的程序人生(亦山札记)

Software Engineer, The Artist of Simulating the World.

原创 英雄帖-Alibaba-企业智能事业部-技术专家/高级Java工程师

前言如题,本文是招贤纳士帖。岗位和博主一个团队,欢迎大家一起过来搞事情!如果你对我有想法,简历甩过来吧,我们可以成为同事;如果你对Alibaba 有想法,简历也请甩过来吧,我来给你内推!如果面试通过,我请你吃大餐 ,大餐,大餐~职位 : 企业智能事业部-技术专家/高级Java工程师-杭州(P6/P7)发布时间:2019-07-31工作地点:杭州工作年限:三年以上...

2019-08-08 17:21:21 2191 6

原创 《Spring设计思想-事务篇》2.数据库隔离级别

0. 前言数据库的事务隔离级别是关系型数据库事务的理论基础,本文将从资源互斥的角度从上到下依次进行阐释。1.数据库的事务隔离级别1.1 事务的隔离级别,隔离的是什么?在阐述数据库事务的隔离级别时,我们首先应当明确一下,这个隔离,到底隔离的是什么。什么是事务?从数据库的事务定义来看,其具备ACID特性(即Atomic,原子性,Consistency一致性,Isolation,隔离性,D...

2019-07-10 11:55:00 2032 9

原创 Alibaba Sentinel RESTful 接口流控处理优化

0.前言笔者最近打算使用Sentinel替换掉之前的Hystrix作为微服务架构的熔断/断路组件。整体上,Sentinel的设计比Hystrix要易用很多。在实际使用的过程中,也存在了一些问题。本文将介绍Sentinel 在处理RESTful 风格的web项目过程中存在的问题。问题描述:在Spring Cloud架构下,如果Http请求格式是按照RESTful风格设计的,当大规模的Http...

2019-06-12 21:50:33 3139 3

原创 《深入理解RocketMQ》- MQ消息的投递机制

0. 前言RocketMQ的消息投递分分为两种:一种是生产者往MQ Broker中投递;另外一种则是MQ broker 往消费者 投递(这种投递的说法是从消息传递的角度阐述的,实际上底层是消费者从MQ broker 中Pull拉取的)。本文将从模型的角度来阐述这两种机制。1. RocketMQ的消息模型RocketMQ 的消息模型整体并不复杂,如下图所示:一个Topic(消息主题)可能对...

2019-06-10 12:19:47 3557 1

原创 《Spring设计思想-事务篇》1.数据库连接和Java线程的关系

0. 前言Spring作为Java框架王者,当前已经是基础容器框架的实际标准。Spring 除了提供了 IoC、AOP特性外,还有一个极其核心和重要的特性:数据库事务。事务管理涉及到的技术点比较多,想完全理解需要花费一定的时间,本系列《Spring设计思想-事务篇》将通过如下几个方面来阐述Spring的数据库事务:数据库连接java.sql.Connection的特性、事务表示、以及和Jav...

2019-06-03 22:33:56 2359 9

原创 Spring Cloud组件那么多超时设置,如何理解和运用?

前言Spring Cloud 作为微服务解决方案 全家桶,集合了丰富的微服务组件,如Gateway、Feign、Hystrix,Ribbon、OkHttp、Eureka等等。而作为服务调用环节涉及到的几个组件:Feign、Hystrix,Ribbon、OkHttp 都有超时时间的设置,Spring Cloud 是如何优雅地把它们协调好呢?本文将为你揭晓答案。1. Spring Cloud 中发...

2019-05-31 22:57:12 1549 1

原创 Spring Cloud Hystrix设计原理

0. Hystrix是什么?Hystrix的本意是指 豪猪 的动物,它身上长满了很长的较硬的空心尖刺,当受到攻击时,通过后退的方式使其尖刺刺入敌方的身体。作为这种特征的引申,Netflix公司在分布式微服务架构的践行下,将其保护服务的稳定性而设计的客户端熔断和断路器的解决方案,称之为Hystrix。Hystrix的设计目的是将应用中的远程系统访问、服务调用、第三方依赖包的调用入口,通过资源控...

2019-05-24 00:50:04 1667 2

原创 Spring Cloud OkHttp设计原理

Spring Cloud 框架最底层核心的组件就是服务调用方式,一般Spring Cloud框架采用的是HTTP的调用框架,本文将在 Spring Cloud应用场景下,介绍组件OkHttp3的设计原理。1. Spring Cloud的接口调用工作模式Spring Cloud作为组合式的分布式微服务解决方案,再服务调用上,至少需要解决如下几个环节:面向接口的编程形式接口调用过程,除了拼...

2019-05-22 00:20:07 1121

原创 RocketMQ 添加监控和系统告警通知

前言最近由于RocketMQ在使用过程中,发现在某些时候消息堆积,并且还是长时间堆积不消费,这种情况下没能及时发现,导致客户投诉,所以就有给RocketMQ增加监控,当出现特定异常时,能够及时告警,及时处理。首先提出我们的监控诉求,出现如下情况时,希望能够及时接收到系统告警通知:RocketMQ 服务宕机RocketMQ 消费者下线RocketMQ 消息出现长时间或者大量堆积本文将...

2019-03-02 17:27:01 4850 5

原创 Spring Cloud- Ribbon设计原理

Ribbon 是netflix 公司开源的基于客户端的负载均衡组件,是Spring Cloud大家庭中非常重要的一个模块;Ribbon应该也是整个大家庭中相对而言比较复杂的模块,直接影响到服务调度的质量和性能。全面掌握Ribbon可以帮助我们了解在分布式微服务集群工作模式下,服务调度应该考虑到的每个环节。本文将详细地剖析Ribbon的设计原理,帮助大家对Spring Cloud 有一个更好的认...

2018-10-15 16:08:10 4088 3

原创 Spring Cloud-Feign设计原理

什么是Feign?Feign 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。Feign支持文本方式下的调用。Feign解决了什么问题?封装了Http调用流程,更...

2018-09-26 15:42:50 12050 5

原创 《Spring设计思想》AOP实现原理(基于JDK和基于CGLIB)

在上篇文章《Spring设计思想》AOP设计基本原理 中阐述了Spring AOP 的基本原理以及基本机制,本文将深入源码,详细阐述整个Spring AOP实现的整个过程。读完本文,你将了解到: 1、Spring内部创建代理对象的过程 2、Spring AOP的核心---ProxyFactoryBean 3、基于JDK面向接口的动态代理JdkDynamicAopProxy生成代理对象 4、基于Cglib子类继承方式的动态代理CglibAopProxy生成代理对象

2016-04-16 19:10:58 27371 24

原创 《Spring设计思想》AOP设计基本原理

Spring 提供了AOP(Aspect Oriented Programming) 的支持, 那么,什么是AOP呢?本文将通过一个另外一个角度来诠释AOP的概念,帮助你更好地理解和使用Spring AOP。读完本文,你将了解到: 1. Java程序运行在JVM中的特征 2. Java程序的执行流【了解AOP、连接点(Join Point)、切入点(point cut) 的概念 】 3. 引入了代理模式的Java程序执行流(AOP实现的机制) 4.

2016-04-10 20:36:07 36246 40

原创 《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程

一、Java语言的跨平台性的含义Java语言之所以说它是跨平台的、可以在当前绝大部分的操作系统平台下运行,是因为Java语言的运行环境是在Java虚拟机中。 Java虚拟机消除了各个平台之间的差异,只要操作系统平台下安装了Java虚拟机,那么使用Java开发的东西都能在其上面运行。如下图所示:         Java虚拟机对各个平台而言,实质上是各个平台上的一个可

2016-01-23 19:17:23 26961 39

原创 《Maven进阶》1.maven 项目生命周期与构建原理

maven是一个非常经典的和通用的项目管理工具,虽然现在热炒gradle将作为下一代 项目管理工具来取代maven,但是 由于maven强大和健全的功能,maven还有很强的生命力。 本文将介绍maven对于项目生命周期的设计以及原理。 读完本文,你将了解到: 一、maven对项目生命周期的抽象--三大项目生命周期 二、maven对项目默认生命周期的抽象 三、maven指令与生命周期阶段的关系 四、maven生命周期各个阶段的行为与maven默认行为

2016-01-15 14:19:34 10285 13

原创 《Java虚拟机原理图解》4.JVM机器指令集

1. Java虚拟机运行时数据区JVM 位每一个线程在内存中分配了一个虚拟机栈,来表示线程的运行状态和信息,如下所示:为了给读者一个直观的感受,我们定义一个简单的Java类,然后执行这个运行这个类,逐步分析整个Java虚拟机的运行时信息的组织:package org.louis.jvm.codeset;/** * JVM 原理简单用例 * @author louis

2016-01-08 20:53:38 15567 10

原创 Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码

Intellij IDEA 14 作为Java IDE 神器,接触后发现,非常好用,对它爱不释手,打算离开eclipse和myeclipse,投入Intellij IDEA的怀抱。     然而在使用的过程中会发现Intellij IDEA也有一些不尽如意的地方,难免会有些不爽:Intellij IDEA 的插件库远不及eclipse的丰富。 mybatis-generator在eclipse

2015-01-27 13:01:50 34565 6

原创 [Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨

Map作为键值对Entry的的容器,对其内部 键值对Entry 的遍历总归是要有一个顺序的。      本文重点讨论HashMap及其子类LinkedHashMap的遍历机制,总结出两者的特点和适用情况。1.HashMap的遍历机制              HashMap提供了两个遍历访问其内部元素Entry的接口:              1.       Set

2015-01-22 15:08:43 24059 10

原创 高性能缓存库Memcached 基础教程

高性能缓存库memcached基础教程,读完本文,你将学习到: 1.memcached 的安装 2. memcached 的启动和关闭 3. memcached 各种数据指令操作

2015-01-07 14:21:04 7181 1

原创 如何细粒度地控制你的MyBatis二级缓存(mybatis-enhanced-cache插件实现)

本文介绍如何细粒度地控制你的MyBatis二级缓存,以及对应的mybatis-enhanced-cache插件实现

2014-12-09 11:31:00 19140 14

原创 [Java基础要义] HashMap的设计原理和实现分析

读完本文,你会了解到: 1. HashMap的设计思路和内部结构组成 2. HashMap中的一些概念: 什么是阀值?为什么会有阀值?什么是加载因子?它们有什么作用? 3. HashMap的性能问题以及使用事项 4. HashMap的源码实现解析 5. 为什么JDK建议我们重写Object.equals(Object obj)方法时,需要保证对象可以返回相同的hashcode值?

2014-11-30 14:07:58 13266 18

原创 [Java基础要义] Java语言中Object对象的hashCode()取值的底层算法是怎样实现的?

Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来提高对HashMap、Hashtable哈希表存取对象的使用效率。      关于Object对象的hashCode()返回值,网上对它就是一个简单的描述:“JVM根据某种策略生成的”,那么这种策

2014-11-27 18:06:18 6589 4

原创 《深入理解mybatis原理》 MyBatis缓存机制的设计与实现

本文主要讲解MyBatis非常棒的缓存机制的设计原理,给读者们介绍一下MyBatis的缓存机制的轮廓,然后会分别针对缓存机制中的方方面面展开讨论。

2014-11-23 13:57:29 52606 17

原创 《深入理解mybatis原理》 MyBatis的二级缓存的设计原理

MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。本文将全面分析MyBatis的二级缓存的设计原理。

2014-11-23 13:53:26 39258 34

原创 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项

MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。MyBatis提供了一级缓存、二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能。本文的目的则是向读者详细介绍MyBatis的一级缓存,深入源码,解析MyBatis一级缓存的实现原理,并且针对一级缓存的特点提出了在实际使用过程中应该注意的事项。 读完本文,你将会学到: 1、什么是一级缓存?为什么使用一级缓存? 2、MyBatis的一级缓存是怎样组织的?(即SqlS

2014-11-21 23:01:28 41471 51

原创 《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的

读完本文,你将会学到:1、类中定义的method方法是如何在class文件中组织的2、method方法的表示-方法表集合在class文件的什么位置3、类中的method方法的实现代码---即机器码指令存放到哪了,并初步了解机器指令4. 为什么没有在类中定义自己的构造函数,却可以使用new ClassName()构造函数创建对象5. IDE代码提示功能的基本原理

2014-11-17 17:56:58 13754 20

原创 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的

读完本文,你将会学到:1、类中定义的field字段是如何在class文件中组织的2、不同的数据类型在class文件中是如何表示的3、static final类型的field字段的初始化赋值问题

2014-11-14 00:00:00 31445 63

原创 《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合

讲完了class文件中的常量池,我们就相当于克服了class文件中最麻烦的模块了。现在,我们来看一下class文件中紧接着常量池后面的几个东西:访问标志、类索引、父类索引、接口索引集合。

2014-11-12 16:23:17 9375 20

原创 《Java虚拟机原理图解》 1.2.3、Class文件中的常量池详解(下)

NO9.  类中引用到的field字段在常量池中是怎样描述的?

2014-11-11 15:31:38 14185 18

原创 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。

2014-11-04 16:44:53 140681 51

原创 《Java虚拟机原理图解》 1.2、class文件中的常量池

了解JVM虚拟机原理 是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的。感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成《Java虚拟机原理图解》 这个系列,以图解的形式,将抽象的JV

2014-10-16 15:40:09 10839 6

原创 《Java虚拟机原理图解》 1.2.2、Class文件中的常量池详解(上)

了解JVM虚拟机原理 是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的。感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成《Java虚拟机原理图解》 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助。

2014-10-16 15:38:35 18970 23

原创 《Java虚拟机原理图解》3、JVM运行时数据区

JVM运行时数据区(JVM Runtime Area)其实就是指JVM在运行期间,其对计算机内存空间的划分和分配。本文将通过以下几个话题来讨论JVM运行时数据区。Topic 1. JVM运行时数据区里有什么?Topic 2. 虚拟机栈 是什么?虚拟机栈里有什么?Topic 3.栈帧是什么?栈帧里有什么?Topic 4. 方法区是什么?方法区里有什么?

2014-10-13 14:50:08 22571 22

原创 《Java虚拟机原理图解》 1.1、class文件基本组织结构

本文以图解的形式讲述class文件的基本组织结构,让你轻松掌握class文件 的整体结构~~

2014-10-09 14:06:04 27133 35

原创 基于HTML5 Canvas和jQuery 的画图工具的实现

HTML5 提供了强大的Canvas元素,使用Canvas并结合Javascript 可以实现一些非常强大的功能。本文就介绍一下基于HTML5 Canvas 的画图工具的实现。废话少说,先看成品:

2014-08-12 13:17:02 18834 1

原创 Javascript 的逻辑运算符的使用技巧和其内在逻辑

Javascript是一个弱类型的语言,也体现在了对表达式的逻辑计算上。对于Java等强类型的语言,进行逻辑判断时,如 if(condition) 中condition所表示的表达式,其结果必须是返回的为true或false的表达式,而javascript 则不然,它可以允许condition是 Number,String,或者Object对象,也可以是undefined 或null的变量,在这方面体现了很大的灵活性。JavaScript引擎会对if(condition) 中condition 的值先进行T

2014-07-26 21:50:43 3394

原创 《深入理解mybatis原理》 MyBatis事务管理机制

MyBatis作为Java语言的数据库框架,对数据库的事务管理是其非常重要的一个方面。本文将讲述MyBatis的事务管理的实现机制。首先介绍MyBatis的事务Transaction的接口设计以及其不同实现 JdbcTransaction 和 ManagedTransaction;接着,从MyBatis的XML配置文件入手,讲解MyBatis事务工厂的创建和维护,进而阐述了MyBatis事务的创建和使用;最后分析JdbcTransaction 和ManagedTransaction的实现和二者的不同特点。

2014-07-20 22:09:57 54320 12

原创 《深入理解mybatis原理》 Mybatis初始化机制详解

对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 1.MyBatis的初始化做了什么 2. MyBatis基于XML配置文件创建Configuration对象的过程 3. 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象 4. 涉及到的设计模式

2014-07-18 21:54:14 37408 17

原创 《深入理解mybatis原理》 Mybatis数据源与连接池

对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。    本文首先会讲述MyBatis的数据源的分类,然后会介绍数据源是如何加载和使用的。紧接着将分类介绍UNPOOLED、POOLED和JNDI类型的数据源组织;期间我们会重点讲解POOLED类型的数据源和其实现的连接

2014-07-10 23:32:51 64197 42

翻译 Junit 4 Tutorials(Junit 4 教程) Junit4 七、超时测试

Junit 4超时测试可以被用来测试can be used to test execution time of method. Junit 4 Timeout Test can be performed onany single method of class using @Timeout Annotationall methods of class using Timeout Rule

2014-07-08 17:06:37 4202 1

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