重学设计模式(十)—— 策略模式

前言 在日常开发中,我们经常需要在相同的上下文环境中针对不同的业务主体采用不同的处理逻辑。举个简单的例子,当我们在电商网站上购物结算时,往往会根据自身会员等级的不同而享受不同的优惠政策,而从系统实现的角度来讲,需要其运行时根据不同需求决定使用某一具体算法策略。策略模式便能较好的解决这个问题,本篇...

2018-06-30 15:13:08

阅读数 87

评论数 1

Spring AOP 对象内部方法间的嵌套调用

前两天面试的时候,面试官问了一个问题,大概意思就是一个类有两个成员方法 A 和 B,两者都加了事务处理注解,定义了事务传播级别为 REQUIRE_NEW,问 A 方法内部直接调用 B 方法时能否触发事务处理机制。 答案有点复杂,Spring 的事务处理其实是通过AOP实现的,而实现AOP的方法有...

2018-06-17 00:04:56

阅读数 1467

评论数 0

Java 内存可见性

前两天面试的时候被问到 Java 内存可见性相关问题,个人感觉回答的不是很好,因此需要强化学习一下。 首先什么是内存可见性呢? 可见性 一个线程对共享变量值的修改,能够及时地被其他线程看到 谈到内存可见性,必须得先从 Java 的内存模型(JMM)说起,下图表示了 Java 的...

2018-06-13 15:44:28

阅读数 99

评论数 0

Spring 声明式事务源码分析

Spring 的声明式事务实现方式主要有2种,一种为通过使用Spring的< tx:advice >定义事务通知与AOP相关配置实现,另为一种通过@Transactional实现事务管理实现,个人认为本质上其实都一样,就是用定义的注解或者配置信息将目标对...

2018-06-06 17:27:45

阅读数 134

评论数 0

重学多线程(十)—— synchronized 原理与锁升级

前言 前几天去面试的时候,面试官问了一些关于 synchronized 关键字原理性的问题,回答得不甚理想。看来,平时对synchronized关键只能做到知其然,却不知其所以然,所以利用业余时间补习一下。 synchronized 原理 synchronized 关键字编译后会在同步块...

2018-06-02 15:48:38

阅读数 1994

评论数 0

MyBatis 缓存之Redis简单实现

前言 MyBatis 提供的缓存机制都是基于Cache 接口而实现,因此我们也可以通过实现该接口创建自定义的缓存实现。 Redis 的缓存实现 简单来说,在MyBatis开启二级缓存的前提下,通过使用自定义的缓存实现类,使用Redis完成对缓存信息的查询和更新。看一下具体实现, publi...

2018-05-27 13:07:27

阅读数 1660

评论数 2

MyBatis 分页插件

前言 日常开发中,我们经常会碰上需要列表查询的场景,如果查询结果列表过长,则需要对其进行分页。MyBatis 其实自带分页功能,通过一个RowBounds的类实现,但是存在一个非常严重的问题,那就是它会一条SQL中查询所有的结果出来,然后根据从第几条到第几天取出数据返回。如果这条SQL返回很多数...

2018-05-23 23:36:53

阅读数 304

评论数 0

Java中的转义符及在正则表达式中应用

前言 日常开发中经常遇到需要对字符进行转义的场景,比如 Windows 系统和 Linux 系统中对于文件路径符的不同表示。通常,笔者为了赶进度基本靠试而没有真正理解,现在有时间了便好好整理一番。 Java中的转义符 Java中的字符串通常有三种表示方法: 直接单字符,例如“A”; 由转...

2018-05-20 12:28:06

阅读数 540

评论数 0

重学多线程(九)—— 再谈锁机制

前言 《重学多线程(三)—— 锁》一文比较详细地介绍了 Java 中的所机制,博主最近在工作中使用锁时,经常思考几个问题——公平锁和非公平锁如何具体实现、ReentrantLock 默认情况下是否公平、共享锁和排它锁具体如何实现,现在正好有时间重新梳理一下这块内容。 锁的基础知识 我们日常开...

2018-05-15 01:09:47

阅读数 77

评论数 0

重学设计模式(九)—— 访问者模式

访问者模式(Visitor Pattern)属于对象行为型模式的一种,表示一个作用于其对象结构中的各元素的操作,它可以在不改变各元素类的前提下定义作用于这些元素的新操作。 可以这么说,访问者模式算是 GOF 23 中设计模式中最复杂的一个,在实际开发中,使用不是非常广泛。访问者模式的类图...

2018-05-13 14:00:24

阅读数 64

评论数 0

Java 反射机制

前言 java语言的反射机制是指能够动态获取信息以及动态调用对象的方法的功能。 一个类中包含成员变量、方法、构造方法、包等等信息,反射机制将class文件读入内存,并为之创建一个Class对象。 一句话,反射是框架设计的灵魂。 反射的使用 获取Class信息 //第一种获取...

2018-05-09 23:25:45

阅读数 52

评论数 0

RxJava 响应式编程初探

前言 最近在学习Spring Cloud Hystrix框架,发现里面的代码写法跟传统的编程思路很不一样,充满了回调和Lamda风格,于是去深入了解了一下,这便是本文的主题 RxJava 响应式编程。 RxJava 我们一般写的程序,以流程为核心的,每一行代码实际上都是机器实际上要执行的...

2018-05-06 17:58:09

阅读数 283

评论数 0

MySQL锁机制

前言 由于一直从事开发工作的原因,在个人的知识结构中,数据库算是一个很大的短板,对于数据库的认识完全停留在“会用”这个层次,对于数据库底层的一些机制大多“知其然,却不知其所以然”,最近正好有时间,把这块知识补一下。 锁 在日常的开发过程中,为了控制线程的并发肯定会用到锁机制。对于数据库而...

2018-05-04 01:20:43

阅读数 97

评论数 0

Spring Cloud 源码分析(三)—— 服务容错

前言 在微服务架构中,我们通常把一个系统分拆成若干服务单元,各单元之间通过远程调用的方式实现相互依赖,但是如果因为网络原因或是服务自身出现问题使得调用方对外服务出现延迟,如果在高并发的情况下可能会因为任务积压导致服务崩溃。 Spring Cloud Hystrix 实现了断路器、线程隔离等一系...

2018-04-28 01:33:11

阅读数 248

评论数 0

Netty框架学习之路(七)—— 零拷贝

前言 今天参加了一个面试,面试官问了关于对Netty中零拷贝的理解,答得不是很完美,因此回来后仔细研究了一下。 零拷贝 Zero-Copy 首先,零拷贝不是Netty特有的机制,传统意义上的零拷贝指的是在操作数据时,不需要将数据 buffer 从一个内存区域拷贝到另一个内存区域,因为少了一次...

2018-04-26 01:12:16

阅读数 668

评论数 1

重学多线程(八)—— ThreadLocal

ThreadLocal介绍 在日常开发中,一个线程在其声明周期内,可能穿过多个层级,多个方法,如果有个对象需要在此线程周期内多次调用,且是跨层级的(线程内共享),通常的做法是通过参数进行传递,那有没有更好的方法呢? 显然是有的,那就是ThreadLocal。ThreadLocal将变量绑定在线...

2018-04-23 23:26:21

阅读数 50

评论数 0

重学多线程(七)—— 并发框架类

前言 java.concurrent包提供了几个非常实用的并发工具类,这些工具类提供了一种非常有效的并发流程控制手段。 CountDownLatch CountDownLatch 允许一个或多个线程等待其他线程完成操作。CountDownLatch的具体实现如下: public class...

2018-04-22 02:08:06

阅读数 56

评论数 0

重学设计模式(八)—— 模板方法模式

模板方法定义了一个算法的步骤,并允许子类为一个或者多个步骤提供实现。 说起模板方法模式,笔者就想起刚开始编写数据库操作代码的场景,在无框架支持的前提下,每次跟数据库的交互都要加载驱动、创建连接、准备语句、执行语句、结果处理、关闭连接、异常处理等步骤。但是仔细观察,很多操作其实都是一样的,...

2018-04-18 01:45:53

阅读数 59

评论数 0

MyBatis的运行原理

平时在日常开发的时候,我们通常定义一个Mapper接口实现数据库操作,而不是一个包含逻辑的实现类。一般而言,一个接口是没有办法执行的,那MyBatis是怎么做到的呢? 答案就是动态代理,关于动态代理的内容,博主在之前的博文中已经详细介绍过了,此处不再赘述。 本文主要探析一下MyBatis在执行...

2018-04-14 16:46:04

阅读数 75

评论数 0

MyBatis的缓存机制

前言 MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。 一级缓存 默认情况下,MyBatis只开启一级缓存。一级缓存只是相对于同一个S...

2018-04-14 02:03:44

阅读数 342

评论数 0

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