0%

动态代理是 Java 反射的一种使用场景,只要有一个接口,就能在运行时动态生成类型安全的字节码文件,可实现资源延迟加载(同传统代理模式的能力)、切面增强等功能,可以说是 Spring 的基石之一。

这篇文章主要介绍 Java 动态代理的使用,JDK 提供的与动态代理有关的类库等。

阅读全文 »

事物 Transaction 用于确保数据库的一致性。当需要更新多条(两条及以上)数据时,可以确保两次更新同时成功或同时失败;当数据被并发的读和修改时,可以确保读线程访问到完整的更新后数据或更新前数据。

阅读全文 »

MyBatis 的动态 SQL 功能可以帮助我们根据不同条件拼接 SQL 语句,并自动处理 SQL 语法,动态 SQL 功能通过 OGNL(Object-Graph Navigation Language) 表达式和以下几个标签实现,下方详细介绍。

阅读全文 »

Redis 可以理解为一个大号的 Map,其中所有的数据都采用 key:value 的形式维护,在 Redis 中,一个 key 总是对应一个 value。其中 key 永远是字符串,而一般提到 Redis 的数据类型,指的是其存储的 value 的数据类型。下面介绍 Redis 常见的数据类型,并简单介绍常见的相关指令。

阅读全文 »

此前面试遇到了单例问题,本以为已经背的滚瓜烂熟,没想到被问单例如何避免被反射和序列化破坏,虽然后来还是等到了通知,但还是复习一下单例的实现方式,并学习防止反射和序列化破坏的手段。

阅读全文 »

运行时数据区是指对 JVM 运行过程中涉及到的内存根据功能、目的进行的划分。最近在阅读《深入理解 Java 虚拟机》之后终于了解这方面知识,于是写一篇相关内容的学习总结。

阅读全文 »

除了使用阶段外,Spring 将 bean 的生命周期定义为实例化、属性填充、初始化和销毁四个阶段,并为每个阶段提供了多个拓展点用于自定义 bean 的创建过程。这篇文章介绍了 bean 的生命周期和其各个拓展点,通过图示生动的展示,并结合一个实例来演示全过程。

阅读全文 »

记录一下工作半年之后发现的现象和对应的思考。

  • 项目最终一定会成为“屎山”
  • 百分之八十的代码是特殊或异常情况处理
  • 参数校验是一把双刃剑
阅读全文 »