KC Blog

心之所向,身之所往.

SpringBoot Actuator配置不当导致的H2 RCE漏洞

RCE漏洞

聊一下由于SpringBoot Actuator配置不当导致的H2 RCE漏洞 背景 近期公司生产环境服务器发现了某个SpringBoot服务由于每次获取数据库连接报错导致服务发生了不可用现象,经过一段时间的排查分析发现了该问题与H2 RCE漏洞有关,遂记录下该问题复现的过程以及出现的一些必要条件。 漏洞概述 远程代码执行 (RCE) 是一类软件安全缺陷/漏洞。可以让攻击者直接...

初探java阻塞队列

java阻塞队列

理解阻塞队列的应用场景 背景 提到阻塞队列,可能好多朋友并不陌生,java中面试频率较高的的线程池相关的技术就是由阻塞队列实现的。今天就让我们一起学习一下阻塞队列这个耳熟能闻却又容易被人忽略的技术。 阻塞队列接口是 Doug Lea 大神在java 1.5版本中引入的阻塞技术,从上图中可以看到其有多种具体实现,今天我们就研究一下相对较为常用的两个具体实现ArrayBlock...

SpringBoot中web项目全局异常处理

自定义异常处理器

ControllerAdvice + ExceptionHandler + ResponseBody全局异常处理 背景 传统的spring web项目中,业务逻辑里发生异常时往往需要一个一个的进行处理,业务方法多了那对应的处理代码就会变得臃肿和重复,所以需要一个全局的统一异常处理,解耦业务代码,返回给前端友好的提示信息。本文就以SpringBoot项目为例介绍如何对项目中的异常进...

从DCL单例模式分析volatile

程序员进阶不能不了解的关键字

透过现象看本质 前言 提到java中的设计模式,大家想到最多的可能就是单例模式,但真正能够写好它的人估计并没想象中的那么多,所以这也是很多求职者在面试过程中会遇到的坑,今天就来分享一下单例模式的正确写法,同时能够大概了解java语言中voltaile关键字的作用 常见写法 以懒汉式为例,流传最多的是以下这种写法 大概流程是 私有化构造函数 对外提供获取内部实...

MyBatis Generator作为maven插件自动生成代码

最为方便的自动化生成方式

MyBatis Generator几种生成方式中的最方便的一种 背景 众所周知,Mybatis是目前orm框架中最流行和最受欢迎的一款。使用的人多了,其不方便的地方也就暴露出来了,比如说针对业务中每一个需要用到的表都要新建对应的 dao,entity,Mapper及xml文件 这对于我们开发人员来说是很多没有意义的重复劳动,这个时候 MyBatis Generator 就应运而生...

Git 代码回滚

回滚代码的正确姿势

并不适合阅读的个人文档。 git revert 和 git reset 的区别 先看图: sourceTree 中 revert 译为提交回滚,作用为忽略你指定的版本,然后提交一个新的版本。新的版本中已近删除了你所指定的版本。 reset 为 重置到这次提交,将内容重置到指定的版本。git reset 命令后面是需要加2种参数的:–-hard 和 –-soft。这条命令默认...

Git指令整理

不适合阅读的整理的一些个人常用的 Git 指令

随便整理的一些自用的Git指令 GitHub创建仓库提示代码 echo "# 项目名" >> README.md git init git add README.md git commit -m "first commit" git remote add origin git@github.com:qiubaiying/项目名.git git push -u orig...