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

  • 博客(73)
  • 资源 (9)
  • 收藏
  • 关注

原创 状态机的基本原理以及SSM实践

零、写在前面“状态” 算是 人们对事物一个很基本的抽象理解了,在现实世界里,“状态” 无时无刻不体现在我们的生活和工作之中;现实中客观存在的事物,我们总可以给它定义出几个状态来。 而在软件领域,也很早就形成了基于状态的行为模型范式,即 有限状态机(Finite-State Machine)。 本文将 结合状态机的实现框架Spring State Machine (aka. SSM, 下面的内容将直接使用此简称),介绍下状态机的基本原理,以及在实践中遇到的一些坑。一、什么是状态机?1.1 事物的态本

2022-02-07 10:14:52 4494 4

原创 康威定律对架构设计的指导意义

什么是康威定律?Conway’s law: Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.– Melvin Conway(1967)设计系统的架构受制于产生这些设计的组织的沟通结构。组织设计背后的生产关系逻辑动物界有个非常有趣的现象,群居性动物,为了保证群体的稳

2021-06-01 21:46:16 1073

原创 socket-io的底层实现设计原理

前言上一篇文章 《漫谈socket-io的基本原理》 用了现实非常浅显的例子,尽可能地阐释非阻塞、阻塞、多线程、多路复用poll和 epoll 背后演进的整体思考脉络,将有助于读者从宏观的角度把握住socket-io的本质。本文将聚焦在JDK socket-io 的多路复用 poll/epoll 的实现原理,可能比较枯燥复杂,为了降低理解成本,作者尽可能循序渐进,控制每个步骤的信息量。如果文章不错,欢迎分享转载,关注公众号:亦山札记(louluan_note)现实生活中的例子上一篇文章 《漫谈

2021-04-01 00:29:01 1496

原创 漫谈socket-io的基本原理

大纲前言小本经营的餐馆前言socket-io 机制是服务端高性能通信的基石,只有彻底弄清楚socket-io原理,才能真正理解一些高性能框架如rocketmq、netty、以及web容器的底层到底做了什么。作者也思考了很久,想通过一个简单易懂的故事,来表达和理解各种晦涩难懂的概念,接下来我将通过开餐馆的过程,来阐述各种socket-io的基本原理。小本经营的餐馆大龄程序员 亦山 因年龄过大,不能加班被公司向社会输出了。总归要养家呀,就找了个档口,开了个小餐馆儿。由于资金有限,只能请得起一个服务员Am

2021-03-29 01:14:41 7755 4

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

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

2019-07-10 11:55:00 3849 14

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

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

2019-06-12 21:50:33 8809 6

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

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

2019-06-10 12:19:47 10183 3

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

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

2019-06-03 22:33:56 5251 12

原创 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 2710 1

原创 Spring Cloud Hystrix设计原理

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

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

原创 Spring Cloud OkHttp设计原理

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

2019-05-22 00:20:07 2628

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

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

2019-03-02 17:27:01 10417 7

原创 Spring Cloud- Ribbon设计原理

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

2018-10-15 16:08:10 6170 4

原创 Spring Cloud-Feign设计原理

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

2018-09-26 15:42:50 33961 12

原创 《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 31756 27

原创 《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 40793 41

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

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

2016-01-23 19:17:23 32611 42

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

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

2016-01-15 14:19:34 12566 17

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

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

2016-01-08 20:53:38 18312 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 36350 6

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

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

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

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

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

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

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

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

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

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

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

2014-11-30 14:07:58 15200 19

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

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

2014-11-27 18:06:18 8033 5

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

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

2014-11-23 13:57:29 57746 19

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

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

2014-11-23 13:53:26 44737 36

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

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

2014-11-21 23:01:28 51556 60

原创 《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 16307 23

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

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

2014-11-14 00:00:00 33257 63

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

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

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

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

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

2014-11-11 15:31:38 16710 19

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

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

2014-11-04 16:44:53 174643 64

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

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

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

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

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

2014-10-16 15:38:35 26446 25

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

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

2014-10-13 14:50:08 26552 24

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

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

2014-10-09 14:06:04 32620 37

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

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

2014-08-12 13:17:02 22764 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 3841

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

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

2014-07-20 22:09:57 64203 15

mybatis-enhanced-cache源码和jar包

mybatis缓存增强插件,提供细粒度管理缓存的功能

2014-12-09

深入理解Java虚拟机 JVM高级特性与最佳实践(第2版).pdf,完整,

深入理解Java虚拟机 JVM高级特性与最佳实践(第2版).pdf,完整,带书签, 完整版

2014-11-17

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

基于HTML5 Canvas和jQuery 的画图工具的实现 参考博文: http://blog.csdn.net/luanlouis/article/details/38490589

2014-08-13

junit-4-tutorials_code.zip Junit4教程源码

Junit 4 Tutorials(Junit 4 教程) source code

2014-07-08

Java Persistence with MyBatis 3(中文版).pdf

国外优秀的《Java Persistence with MyBatis 3》的中文翻译版本,供大家学习和参考,共同进步!

2014-06-28

[Packt Publishing] Java Persistence with MyBatis 3.pdf

国外的一本关于MyBatis的优秀教程。一本很好的参考书!

2014-06-28

mybatis3_code.zip

国外流行的MyBatis教程《Java Persistence with MyBaits 3》源码

2014-06-26

mybatis关联查询问题(一对多、多对一)

mybatis关联查询问题(一对多、多对一) 博客系统源码

2014-06-05

空空如也

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

TA关注的人

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