作者: 吴汶泽

纸上得来终觉浅,绝知此事要躬行。

78 篇文章

thumbnail
Mybatis源码分析:一级&二级缓存原理
在上一篇文章中(深入认识Executor执行器),通过分析Executor的源码,发现Mybatis的缓存逻辑都在执行器中实现,本文将继续探讨Mybatis的多级缓存命中场景以及其实现原理,先来回顾一下Executor的结构: Mybatis缓存概述 在mybatis中,共存在二级缓存,分别在BaseExecutor和CachingExcutor中…
thumbnail
Mybatis源码分析:深入认识Executor执行器
接下来的很长一段时间,将深入研究mybatis框架的源码,本文的目的是疏通mybatis的整体执行流程,并重点理解Executor在其中扮演的重要作用。 JDBC执行过程 在开始了解mybatis之前,有必要先回顾一下JDBC的整体流程,因为mybatis的底层实际上就是JDBC。 final List<User> result = n…
thumbnail
SpringBoot源码分析:可执行JAR包(Fat JAR)执行原理
SpringBoot颠覆了传统的web项目启动方式,初用时很是惊艳,与传统WAR包的不同之处在于,其打包的JAR包(Fat JAR)中内置了lib目录以及WEB容器,通过简单的java -jar命令即可启动WEB项目,大大的简化了项目的发布流程。 Fat JAR包结构 在此之前,咱们需要准备一个简单的SpringBoot项目,执行 mvn clea…
thumbnail
利用策略模式来重构可以预见的if else代码
相信大家一定见过自己项目中的满屏if else魔鬼代码,对于可以预见的逻辑分支增长,在前期代码设计阶段是有必要精心设计一番的。 案例 假设有一个需求如下,A系统的某个业务操作完成后,会发送一个webhook通知给B系统,webhook消息格式如下: { "type": "type1", // 目前已知的type为type1,type2 "data"…
thumbnail
神了,SpringBoot启动仅需0.068s!
GraalVM是Oracle搞出来的一种高性能的虚拟机,可以显著的提高程序的性能和运行效率,非常适合微服务。 最近比较火的Quarkus框架默认支持,SpringBoot当前也开始跟上了步伐,在Spring Initializr网站可以看到,基于GraalVM的Spring Native已经进入了实验阶段, 这意味着,不久的将来能提供一种全新的方式…
thumbnail
杀鸡焉用牛刀?谈谈如何自己实现Api接口鉴权
现在前后端分离的趋势越来越明显了,后端正在逐渐开始做纯RESTful性质的服务,关于接口鉴权这个问题就是老生常谈了,目前常用的Spring Security + Jwt, Shiro + Jwt等极其繁琐的配置,仅仅为了实现一个小小的登陆功能,显得过于笨重繁杂了,本文来探讨一下如何自己实现一个简单优雅的JWT鉴权方案 总体方案 从一切从简…
thumbnail
在SpringBoot应用中优雅的使用EhCache缓存
SpringBoot家族提供的spring-boot-starter-cache使用JCache(JSR-107)注解统一了不同的缓存技术的使用,很是方便,本文主要说说集成EhCache的一种较为优雅的方案。 引入依赖 implementation("net.sf.ehcache:ehcache") implementation("org.spri…
thumbnail
Dataway::后端接口开发或将迎来新的变革?
概述 你是否厌烦了面向CRUD编程?近期逛Github又发现了一个神奇的开源项目[zycgit/hasor],其中有个模块甚是诱人,这里摘抄一段其官网的描述: Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。 整个接口配置、测试、冒烟、发布。一站式都通过 Data…
thumbnail
微信开发:如何实现AMR->MP3->AMR音频转码
概述 接触微信公众号开发的小伙伴一定对AMR这种音频格式不陌生,在微信公众号发送的语音,基本是这种格式,接收到后台后,还需要手动转换为MP3,这里探讨一下几种实现方式。 使用七牛提供的API 如果你使用七牛作为系统的云储存,那么音频转码将非常简单,先来看几个文档:1)普通音视频转码(avthumb) https://developer.qiniu.…