Java日知录

一个坚持原创,有态度的博客!

0%

孔乙己说:回字有四种写法。

飘乙己也说,list转tree也有4种写法,你用的是哪种?

需求场景

有下面一张区域表,典型的树形结构设计。

阅读全文 »

大家好,我是飘渺!

相信各位在面试时,通常会被问到“什么是索引?” 而你肯定可以脱口而出:索引是提升查询速度的一种数据结构。而索引之所以能提升查询速度,在于它在插入时对数据进行了排序。

在实际业务中,我们会遇到很多复杂的场景,比如对多个列进行查询。这时,可能会要求用户创建多个列组成的索引,如列 a 和 b 创建的组合索引,但究竟是创建(a,b)的索引,还是(b,a)的索引,结果却是完全不同的。

今天,我们就来聊聊更贴近业务实战的组合索引,一起来感受一下组合索引的威力。(当然咯,文章中讲的索引指的是B+树索引,就是那个矮胖子啦)

阅读全文 »

MVC三层架构

我们在刚刚成为程序员的时候,就会被前辈们 “教育” 说系统的设计要遵循 MVC(Model-View-Controller)架构。它将整体的系统分成了 Model(模型),View(视图)和 Controller(控制器)三个层次,也就是将用户视图和业务处理隔离开,并且通过控制器连接起来,很好地实现了表现和逻辑的解耦,是一种标准的软件分层架构。

阅读全文 »

在Spring中进行事务管理非常简单,只需要在方法上加上注解@Transactional,Spring就可以自动帮我们进行事务的开启、提交、回滚操作。甚至很多人心里已经将Spring事务与@Transactional划上了等号,只要有数据库相关操作就直接给方法加上@Transactional注解。

不瞒你说,我之前也一直是这样,直到使用@Transactional导致了一次生产事故,而那次生产事故还导致我当月绩效被打了D…

阅读全文 »

大家好,我是飘渺。

前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的!阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数校验Validator,以及参数校验的高阶技巧(自定义校验,分组校验)。

此文是依赖于前文的代码基础,已经在项目中加入了全局异常校验器。(代码仓库在文末)

首先我们来看看什么是Validator参数校验器,为什么需要参数校验?

阅读全文 »

在互联网技术面试中,考察分布式技术已经是面试的标配了。无论你是高阶程序员,还是架构师,都要掌握分布式系统设计。今天我们就先来看一看在面试中怎么回答分布式的基础理论,才能抓住面试官的芳心。

案例背景

CAP 理论是分布式系统中最核心的基础理论,虽然在面试中,面试官不会直白地问你 CAP 理论的原理,但是在面试中遇到的分布式系统设计问题,都绕不开你对 CAP 的理解和思考。

而且在面试中,针对面试不同岗位的候选者,面试官的要求也会不一样,要求你回答的深度也不一样。所以在这一讲中,我会针对初中级研发工程师高级研发工程师两个不同的角度,分析面试思路。

阅读全文 »