随笔分类 - java
摘要:背景介绍 某次在 SpringBoot 2.2.0 项目的一个配置类中引入了这么一行代码: InetAddress.getLocalHost().getHostAddress() 导致项目启动明显变慢。同时报出了相关的警告信息: 2022-10-03 23:32:01.806 [TID: N/A]
阅读全文
摘要:No application config found or it's not a valid config!
阅读全文
摘要:后端同学基本都会见过这种场景:在同一个工程中,有些页面使用jsp模版渲染,同时还有其他接口提供Json格式的返回值。为了同时支持这两种场景,我们一般是如何处理的呢? 其实非常简单: 1、在项目中为 SpringMvc 指定视图解析器 ViewResolver,并引入 jstl 和 apache-js
阅读全文
摘要:本文结合项目经验,整理一份大纲,供参考。 常用指标 RT(Response Time):响应时间。可能会衍生出 TP999、TP99、TP95、TP90等指标。一般在几毫秒到几百毫秒之间。 QPS(Query Per Second):每秒查询量。这是我们最常说的一个指标了。视业务复杂度不同而不同,轻
阅读全文
摘要:前言 在 SpringBoot 项目中,我们经常会使用两种占位符(有时候还会混用),它们分别是: @*@ {*}变成 @*@了,更好一点的答案会引用 SpringBoot官网
阅读全文
摘要:
源码解析:四种Maven依赖调解机制的实现。
阅读全文

摘要:本文是系列文章《Maven 源码解析:依赖调解是如何实现的?》第七篇,也是最后一篇,主要做个总结。请按顺序阅读其他系列文章,系列文章总目录参见:hhttps://www.cnblogs.com/xiaoxi666/p/15583241.html。 总结 在本系列文章中,我们搭建了一个简单的多模块项目
阅读全文
摘要:本文是系列文章《Maven 源码解析:依赖调解是如何实现的?》第六篇,主要介绍 dependencyManagement 版本锁定原则。请按顺序阅读其他系列文章,系列文章总目录参见:https://www.cnblogs.com/xiaoxi666/p/15583241.html。 场景 我们在根模
阅读全文
摘要:本文是系列文章《Maven 源码解析:依赖调解是如何实现的?》第五篇,主要介绍同一个文件内声明,后者覆盖前者的原则。请按顺序阅读其他系列文章,系列文章总目录参见:https://www.cnblogs.com/xiaoxi666/p/15583241.html。 场景 这次我们让 A 直接依赖 X,
阅读全文
摘要:本文是系列文章《Maven 源码解析:依赖调解是如何实现的?》第四篇,主要介绍依赖调解的第二条原则:传递依赖,第一声明者优先。请按顺序阅读其他系列文章,系列文章总目录参见:https://www.cnblogs.com/xiaoxi666/p/15583241.html。 场景 路径最近者优先原则不
阅读全文
摘要:本文是系列文章《Maven 源码解析:依赖调解是如何实现的?》第三篇,主要介绍依赖调解的第一条原则:传递依赖,路径最近者优先。**本篇内容较多,也是开始源码分析的第一篇,请务必仔细阅读,否则后面的文章可能就看不懂了。**系列文章总目录参见:https://www.cnblogs.com/xiaoxi
阅读全文
摘要:本文是系列文章《Maven 源码解析:依赖调解是如何实现的?》第二篇,主要介绍如何调试 Maven 源码和插件源码。系列文章总目录参见:https://www.cnblogs.com/xiaoxi666/p/15583241.html。 有了源码包和 Demo 项目,我们就能够着手分析了。那么问题来
阅读全文
摘要:本文是系列文章《Maven 源码解析:依赖调解是如何实现的?》第一篇,主要做个开头介绍。并为后续的实验做一些准备。系列文章总目录参见:https://www.cnblogs.com/xiaoxi666/p/15583241.html。 前言 相信久经沙场的 Java 开发同学们,一定对 Maven
阅读全文
摘要:背景 有时,我们需要删除Java源代码中的注释。目前有不少方法,比如: 实现状态机。该方式较为通用,适用于多种语言(取决于状态机支持的注释符号)。 正则匹配。该方式容易误判,尤其是容易误删字符串。 利用第三方库。该方式局限性较强,比如不同语言可能有不同的第三方库。 本文针对Java语言,介绍一种利用
阅读全文
摘要:基本概念 权限系统设计模型分析(DAC,MAC,RBAC,ABAC) 权限控制和OAuth How is OAuth 2 different from OAuth 1? Oauth 1.0,1.0a 和 2.0 的之间的区别有哪些? 几类框架 shiro 极客学院-跟我学 Shiro 或 W3Csc
阅读全文
摘要:前言 在实际开发项目中,日志永远是一个绕不开的话题。本系列文章试图以slf4j和log4j2日志体系为例,从源码角度分析日志工作原理。 学习日志框架,首先要熟悉各类日志框架,这里推荐几篇文章,就不再赘述了。 https://www.cnblogs.com/rjzheng/p/10042911.htm
阅读全文
摘要:A Callable is "A task that returns a result, while a Supplier is "a supplier of results". In other words a Callable is a way to reference a yet-unrun
阅读全文
摘要:前言 之前看源码一直忽略了这个现象,按理说HashMap的父类AbstractMap已经实现了Map,它为什么还要实现一次呢?遂上网查了一下,背后原因让人大跌眼镜。 原因 这是类库设计者的拼写错误,其实HashMap不应实现Map的。其他容器如List、Set也有这个问题。 参考 为什么HashMa
阅读全文
摘要:看几个例子,回顾一下执行顺序 例子1 无异常,finally中的return会导致提前返回 public static String test() { try { System.out.println("try"); return "return in try"; } catch(Exception
阅读全文
摘要:计算机原理 题目一:请说出”-1 >>> -3”的结果,并说明原理。 提示:本题其实是考察对“移位为负数”这种情况的理解。 答案:若移位值为负数,则实际的移位个数不是后面的直接数字,而是直接数字的最低n位所代表的值。对于int型,n为5;对于long型,n为6。之所以这样,是因为5位最大表示31,移
阅读全文