【Java】工具

本文介绍了Java开发中常用的工具和框架,包括单元测试、CGLIB、Thrift、日志系统(SLF4J、log4j2、logback)、Jackson、Lombok、Apache HttpClient、Guava、Reactor等,并深入探讨了Mybatis的配置、拓展和Mapper使用,以及数据库中间件如MySQL和Druid的配置与实践。

单元测试

Junit官网
Java之JUnit4的学习

CGLIB

Cglib及其基本使用

Thrift

Thrift入门
mac安装用brew

export THRIFT_HOME=/usr/local/Cellar/thrift
export PATH=$PATH:$THRIFT_HOME/bin

日志系统

common-log和slf4j是门面框架,真正进行日志处理的是后面的实现框架。

SLF4J

Simple Logging Facade for Java (SLF4J)
SLF4J 使用手册
只看原理即可,因为里面slf4j配log4j的第一版本,log4j-slf4j-impl这个配的是第二版本。
Log4j2与Slf4j的最佳实践
相当于在pom里引用了这两个包,然后调用的时候使用的是slf4j的功能,但slf4j底层调用的是log4j的功能。

MDC是什么?用法、源码一锅端

log4j2

Apache Log4j 2 官网
log4j2使用教程
聊一聊log4j2配置文件log4j2.xml
log4j2配合slf4j使用
Layouts 布局 里面可以找配色
idea中应用log4j2彩色日志

logback

Setting the location of the configuration file via a system property Chapter 3: Configuration
可以通过往System.gerProperties里放值,来完成${xxx}表达式替换

logback的使用和logback.xml详解
RollingFileAppender的排版有点问题
Logback配置
Chapter 6: Layouts
Logback中使用TurboFilter实现日志级别等内容的动态修改
LogBack 日志等级设置无效,原因竟然是因为这个?!
java logback手动加载配置文件

Jackson

jackson 入门教程
Jackson JSON Tutorial
jackson github
Jackson Date

如果web的返回数据里多了"$ref": "$.data.autoDashboardDetailDTOs[1]",那么就说明列表里存在重复对象;

lombok

Lombok 看这篇就够了
lombok里还提供了@Slf4j,会自动给类添加一个log对象,通过看其编译的类可以看出,其相当于用slf4j来创建logger是一样的private static final Logger log = LoggerFactory.getLogger(Clazz.class);
lombok @EqualsAndHashCode 注解的影响
Omitting one Setter/Getter in Lombok
Error compiling Java/Scala mixed project and Lombok
给scala代码配lombok注解会失效


Lombok 之 Constructor

Apache HttpClient

官网
HttpClient-4.5.2官方教程完整翻译
HttpClient连接池的使用
HttpClient连接池的一些思考

Guava

Guava github
Google Guava Cache 全解析

Reactor

响应式Spring的道法术器(Spring WebFlux 教程)

Apache commons lang

java 生成随机字符串

JCommander

JCommander参数解析

Hutool

hutool doc

高性能队列——Disruptor

高性能队列——Disruptor

数据库中间件

mysql

JDBC元数据操作(一)-- DatabaseMetaData接口详解
DatabaseMetaData类
JDBC报错Public Key Retrieval is not allowed终极解决方案

Mybatis

配置

useColumnLabel配置的功能
Mybatis设置sql超时时间
【Java开源框架】持久层框架mybatis与spring/spring boot整合

MyBatis技术原理浅析:使用MyBatis+Druid连接MySQL数据库
提供了logPrefix和logImpl配置项来帮助配置日志框架
mybatis打印sql日志

拓展

Mybatis类型转换TypeHandler介绍

mapper

mybatis的association以及collection的用法
mybatis中association和collection的column传入多个参数问题
association之中的property代表着这个association生成的对象需要被赋给User对象的card属性,而column字段只在嵌套association+select的时候会用到,具体可以看mybatis的文档

MyBatis循环Map(高级用法)
Mybatis中传入的参数为Map嵌套List
mybatis之foreach用法
mybatis常用jdbcType数据类型以及对应的JavaType
mybatis学习之路----insert主键返回 selectKey使用
Mybatis批量插入返回插入成功后的主键id
Mybatis中#{}与${}的区别
21. Mybatis 的三种执行器
用batch的时候一定要/一定要执行commit,否则数据库中不会插入数据/

MyBatis Generator

MyBatis Generator
神器
MyBatis Generator实现MySQL分页插件
这种方式是通过修改输出的xml来进行limit分页

MyBatis 分页插件 PageHelper
该插件可以影响sqlSesionTemplate的selectList(“xxx”,param, new RowBounds(1,10))方法,在执行的sql后面自动加上limit。也可以直接影响Mapper类的select(param,new RowBounds(1, 10))方法

记mybatis-generator生成实体类继承基类的一个大坑
并且对基本类型默认使用包装类,mbg认为包装类与基本类型不一致,所以有些属性不会继承,而是会在pojo里再生成一遍,解决方案就是columnOverride

mybatis-generator 自定义插件
mybatis generator为实体类生成自定义注释
其实默认的commentgenerator已经相当够用了。

Druid

Druid配置参数详解-maxWait
DruidDataSource配置
数据库连接池配置(案例及排查指南)
Druid 自定义拦截器

Freemarker

FreeMarker 快速入门

Redis

Redis高级客户端Lettuce详解
Lettuce连接池
Jedis使用教程完整版
有关lettuce连接池的疑问
【小家Spring】Redis序列化、RedisTemplate序列化方式大解读,介绍Genericjackson2jsonredisserializer序列化器的坑

Reactor

使用Reactor进行反应式编程
使用 Reactor 进行反应式编程

okhttpclient

OkHttp

拦截器

OkHttp拦截器获取GET/POST请求参数并添加公共参数
Okhttp拦截器统一异常处理并多次读取response.body().string()

Netty

超详细Netty入门,看这篇就够了

Netty中的Option和ChildOption参数解析
背景:一个服务端接收请求的时候,实际上是有两类线程,一类线程是用于监听,也就是说关注accept事件;java的nio里,当accept事件发生后,会返回一个channel,而监听这个channel之后的read和write事件,就是第二类线程做的事了;
而在netty里,线程是由EventLoop表示,用于监听的线程,就被称为parent,用于read和write的线程,就是child

定时任务

netty中的定时机制HashedWheelTimer

SnakeYaml

Yaml文件的解析工具----SnakeYaml快速入门
SnakeYaml快速入门
Parsing YAML with SnakeYAML

Mockito

单元测试之Mockito+Junit使用和总结(完整)
在软件开发领域,mock(模拟) 是一种测试技术,用于创建轻量级的替代对象(称为 mock 对象),来替代真实组件或服务的行为。Mock 对象可以模拟真实对象的接口和响应,帮助开发者在隔离环境中测试代码逻辑。
比如说我现在有个接口需要测试,但是这个接口的input特别不好造,比如说是jdbc的ResultSet对象,这种对象光new出来一个是没法用的,那么就可以mock一个这个对象,这个对象“长得像鸭子,叫的像鸭子”,那就可以认为他是个鸭子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值