Lombok 拾遗
Created|Updated
|Word Count:43|Reading Time:1mins|Post Views:
sneakyThrow
1 | |
Author: magicliang
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles

2020-03-11
Java Logging
log 历史 阶段 阶段 阶段 阶段 阶段 log4j apache commons logging(JCL) log4j2 JUL simple log logback + slf4j 多个项目使用不同的 logging 库 + 传递依赖等于依赖管理不规范,日志库泛滥以至互斥。 具体框架与门面 所谓的日志框架,指的是日志输出的具体实现,常见的日志框架包括但不仅限于 JUL(Java Util Logging)、Log4j、Log4j2 和 Logback。这些框架的功能不尽相同,比如有些框架支持友好地打印异常,有些不支持,有些框架不支持,不同的框架的日志级别也各有差异。 因此,诞生了日志门面。所谓的门面,就是“使用一个中间层解耦”这一具体思想的应用。使用了门面,可以屏蔽日志使用者对于具体差异的依赖,既让代码变得整洁,而且可以简单地切换实现而不需要修改代码。没有日志门面,不足以统一日志框架的使用。 log facade(定义 interface,早期的 JCL 时代,facade 也被叫做接口)-> log imp...

2022-03-16
Idea 的小技巧
调试的时候的断点 Suspend Policies Specifies whether to pause the program execution when the breakpoint is hit. Non-suspending breakpoints are useful when you need to log some expression without pausing the program (for example, when you need to know how many times a method was called) or if you need to create a master breakpoint that will enable dependent breakpoints when hit. The following policies are available for the breakpoints that suspend program execution: All: all threads are suspended when...

2022-05-10
一个隐藏了17年的 JDK Bug
摘要 本文介绍了发现JDK-8286463 : DiscardPolicy may block invokeAll forever的全过程。 问题起因 因为工作需要,笔者最近考虑利用 Java 标准文档里的标准 API做一个批量执行任务的框架: 这个 API 的语义是: 批量执行任务。 在任务执行完成(不管任务是被正常终止还是异常终止)后,批量返回一个持有任务状态的 Future 列表。 我们团队内部的代码里已经有了一个自定义线程池的工厂方法,大义是: 1234567891011121314151617181920212223242526272829303132333435363738394041/** * 一个有缺陷的线程池构造器 * * @param corePoolSize the number of threads to keep in the pool, even * if they are idle, unless {@code allowCoreThreadTimeOut} is ...

2026-02-17
Gradle 完全指南
Gradle 完全指南 全景导图 mindmap root((Gradle)) 核心概念 Project模型 Task系统 生命周期 插件机制 依赖管理 Configuration 依赖解析 版本冲突 传递依赖 构建脚本 Groovy DSL Kotlin DSL 多项目构建 插件生态 Java插件 Spring Boot插件 自定义插件 性能优化 构建缓存 并行构建 增量构建 测试管理 单元测试 集成测试 覆盖率 什么是 Gradle Gradle 是新一代的自动化构建工具,基于 Apache Ant 和 Apache Maven 的概念发展而来。与 Maven 使用 XML 配置不同,Gradle 采用基于 Groovy 或 Kotlin 的领域特定语言(DSL)来声明项目配置,大幅简化了...

2020-04-20
Spring 概览
Spring 起源于 2003 年,它作为 Java EE 平台规范的补充,而不是完全拥抱 specification。 Spring 可以指的是 entire family of projects。也可以单指 Spring Framework(换言之,Spring Framework 本身也只是 family 的一部分)。 Spring Framework 被模块化了,它的核心只包括 core container(主要解决依赖注入问题)。但是针对不同的应用架构,它提供不同的支持,包括 messaging、transactionl、persistence 和 web。这些模块原本命名为 “spring-core” 和 “spring-context”,在 Java 9 的 jigsaw 项目来临之时,也开始支持 module path,生成“自动模块名”清单项,并且定义语言级别的模块名,如"spring.core"、“spring.context”。 Spring 支持的 JSR 有: Servlet API (JSR 340) WebSocket API ...

2020-02-23
泛型拾遗
基本设计原则 how codes should vary in different types. compatible with other release. before generic class,generic programming was achieved with inheritance:在所有后来使用T的地方使用Object或者Object数组。经典的猫狗列表问题的来源。 基本语法 java 的泛型没有 template 关键字。表面上(superficially)看和 C++ 并无二致,实际上有大量差别 三种基本概念: Type Parameter(类型形参):在泛型类、接口或方法声明时使用的标识符。 class Box<T> 中的 T。 但是在 Java 核心技术中,List<String>中的String也经常被描述为 Type Parameter。Container.class.getTypeParameters()得到的也是T。 Type Variable(类型变量):类型参数在代码中的引用。 可以认为是类型参数的一...
Contents