springbootSpring Boot

JAVA && Spring && SpringBoot2.x学

2019-09-27  本文已影响0人  小胖学编程

JAVA && Spring && SpringBoot2.x — 学习目录

JAVA篇

JAVA基础篇(1)-格式化
JAVA基础篇(2)-异常
JAVA基础篇(3)-深克隆与浅克隆
JAVA基础篇(4)-Validation验证框架
JAVA基础篇(5)-POJO的命名规则
JAVA基础篇(6)-自定义注解(理论)
JAVA基础篇(7)-自定义注解(实践)
JAVA基础篇(8)-命名规则
JAVA基础篇(9)— 数组和集合优化建议
Java基础篇(10)—MultiValueMap(一个Key对应多个Value)
Java基础篇(11)— 抽象类中为什么存在构造方法
Java基础篇(12)—枚举类(枚举值对象)
Java基础篇(13)— 运算符%的使用
JAVA基础篇(14)— 接口与抽象类的区别
JAVA基础篇(15)—自定义“通用型枚举参数”校验注解
JAVA基础篇(16)-实际项目中获取集合的交集/差集
JAVA基础篇(17)—ordered接口和order注解
Java基础篇(18)—CaseInsensitiveMap(key不区分大小写)
Java基础篇(19)—正则表达式
[JAVA基础篇22]—去重字符串中的回车、换行、制表符
[JAVA基础篇23]—JAVA异常工具类ExceptionUtils的使用
[JAVA基础篇24]—Java的对象的拷贝方式集合
重写toString方法的工具类—ToStringBuilder(重写父类来影响子类toString)
[JAVA基础篇25]—反射读取枚举值上的注解信息

JAVA中实现数据压缩所有方式(适用于通信时数据压缩)
PositiveAtomicCounter(正数原子递增器-用于路由的轮询分区)

开发遇到的异常们:
lombok的@Data注解用在异常子类,导致堆栈没有打印message

集合的clear()方法引发的IndexOutOfBoundsException异常。

进阶篇

java进阶篇(1) lambda与Comparator<T>排序接口
Java进阶篇(2)—Optional类(预防空指针NPE)
Java进阶篇(3)—Optional类(是否使用Optional来代替null)
Java进阶篇(4)— JDK8新增的Map方法
Java进阶篇(5)—项目中出乎意料的空指针异常(持续更新...)
JAVA进阶篇(6)—Calendar日期类性能优化(clone创建Calendar对象)
JAVA进阶篇(7)—Java agent从0到1的踩坑过程
JAVA进阶篇(8)—TransmittableThreadLocal—父子线程间线程本地变量

JAVA进阶篇(9)—实现网络照片的上传和下载(腾讯云cos)

JAVA进阶篇(10)—Guava实现的EventBus(观察者模式)
JAVA进阶篇(11)—获取项目所在机器的IP地址和项目的jar名称
JAVA进阶篇(12)— 如何读取JVM启动参数的值

从TransmittableThreadLocal使用前调研(源码分析)

并发篇:

维护缓存时,要对什么加锁?【synchronized能否对局部变量加锁,ConcurrentHashMap提供的computeIfAbsent源码分析】

synchronized借助ConcurrentHashMap实现细粒度的对象锁

JDK1.8的ConcurrentHashMap提供的computeIfAbsent性能问题

多线程——线程池ThreadPoolExecutor
自定义实现JAVA线程池的线程工厂类——ThreadFactory

JAVA优化篇:

JAVA优化篇1-优化高并发下System.currentTimeMillis()获取当前时间
JAVA优化篇2-生成3-10之间随机数的方法(高并发下优化Random)
JAVA优化篇3-判断两个Date是否相等(高并发下优化Calendar)

JAVA序列化:

复习盘点-Java序列化方式(1)JSON序列化(温故知新-泛型)(jdk8-LocalDate序列化)
复习盘点-Java序列化方式(2)JAVA原生序列化以及Protostuff序列化

Jackson序列化(1)— [SpringBoot2.x]-Jackson在HttpMessageConverter(消息转换器)中的使用
Jackson序列化(2)— [SpringBoot2.x]-Spring容器中ObjectMapper配置
Jackson序列化(3)— Jackson中ObjectMapper配置详解
Jackson序列化(4)— Jackson“默认的”时间格式化类—StdDateFormat解析
Jackson序列化(5) — Jackson的ObjectMapper.DefaultTyping.NON_FINAL属性
Jackson序列化(6)— Java使用Jackson进行序列化
Jackson序列化(7) —使用BeanSerializerModifier定义Jackson的序列化方式(对于null,String格式要返回"")

SpringBoot的HttpMessageConverter使用(1)RestTemplate中的应用
SpringBoot的HttpMessageConverter使用(2)@RequestBody和@ResponseBody中的应用
SpringBoot的HttpMessageConverter使用(3)—Feign中的使用

SpringBoot2.x之HandlerMethodArgumentResolver实战

SpringBoot2.x对http请求accept的消息转换处理

一次生产事故引发的JDK序列化思考
FastJson出现{"$ref":"$[0]"}解决方案

记一次生产事故—JIT编译与CPU使用率飙升

RestTemplate远程调用:

RestTemplate设置Interceptor拦截器

SpringBoot2.0.x中RestTemplate调用三方接口出现汉字乱码(消息转换器)

SpringBoot的HttpMessageConverter使用(1)RestTemplate中的应用

RestTemplate远程调用—复杂API极简使用(面向Map组装)
Spring—RestTemplate设置Interceptor拦截器

SpringBoot2.x下更加灵活的RestTemplate(定制化第三方接口的template)
RestTemplate如何支持泛型对象输出?

JAVA反射:
Java反射-1(理论)
Java反射-2(技巧)
Java反射-3(性能)
Java反射-4—工具类ReflectionUtils
java内省(Introspector)
java内省优化工具类BeanUtils(优化内省并防止内存泄漏)

mybatis的反射工具类—MetaObject(反射对象类)

JAVA的IO

socket通信—实现网络间的IO通信
IO学习(1)Java-BIO体系学习

SpringBoot实现http请求的异步长轮询【1】—AsyncContext【推拉结合的配置更新】
SpringBoot实现http请求的异步长轮询【2】— AsyncHandlerInterceptor方式

Lambda表达式助力开发:

lambda之函数式数据处理(2)Stream流的API方法
JDK8中List转换为Map
Stream流式编程取代普通for循环
Stream流式编程取代双层for循环(flatMap的使用)
JDK8实现多条件排序
JDK8对List进行分组操作(stream的groupby)
JDK8的Stream实现统计(求最大值最小值求和等操作)
JDK8的列表中对象分割使用,分割的字符串

Spring篇

Spring基础篇(1)-事务
Spring基础篇(2)-重试-注解版
Spring基础篇(3)-单元测试
Spring基础篇(4)-AOP
Spring基础篇(5)-restful命名规则
Spring基础篇(6)-ServletServerHttpResponse(Spring对原生Servlet的包装)
Spring基础篇(7)-TransactionalEventListener实现事务的监听
Spring基础篇(8)-Spring构造函数注入—实现子类的动态注入

Spring—ObjectProvider更加宽泛的依赖注入

Spring重试(编程式)源码+应用

spEL—基础语法+注解中动态调用Bean方法
spEL表达式—让注解更加灵活(项目埋点实战)
spEL表达式注入漏洞以及预防措施

源码篇:
Spring源码篇(1)—RequestMappingHandlerMapping(Handler的注册)
Spring源码篇(2)—RequestMappingInfo与RequestCondition(Handler—映射)

工具篇:
Spring工具篇(1)- AntPathMatcher&&UrlPathHelper(针对URL进行处理)

动态读取篇:

Spring进阶篇(2)-ApplicationContextAware(动态获取容器中Bean)
Spring基础篇(9)-普通JAVA类动态读取@Value的值

进阶篇:
Spring进阶篇(1)-AutowireCapableBeanFactory(容器外的Bean使用依赖注入)

Spring进阶篇(3)-FactoryBean(创建复杂的Bean)
Spring进阶篇(4)- BeanDefinitionRegistryPostProcessor(操纵Bean对象)
Spring进阶篇(5)- BeanPostProcessor(Bean的后置处理器)
Spring进阶篇(6)- DelegatingFilterProxy(Spring管理Filter)
Spring进阶篇(7)- TransactionSynchronizationManager(事务监听)

Spring的事件监听—ApplicationContextEvent(实现异步监听)

Spring进阶篇(8)- RequestMappingHandlerMapping(Handler的注册)

Spring进阶篇(9)- MethodValidationPostProcessor 后置处理器的运用
Spring进阶篇(10)-BeanPostProcessor的注册时机

Spring精华篇(1)— druid配置导致循环依赖(自检异常)

SpringBoot篇

基础配置:
SpringBoot2.x基础篇—常用注解
SpringBoot2.x常用的ConditionalXX注解
SpringBoot2.x基础篇—Bean的生命周期方法(与容器耦合)
SpringBoot2.x基础篇—Bean的生命周期方法(实现Lifecycle接口)
SpringBoot2.x整合CORS解决跨域问题

SpringBoot2.x创建Starter项目
SpringBoot2.x 读取自定义的yml配置到各种数据结构中
定时监控:
SpringBoot2.x整合监控(1-actuator端点)
SpringBoot2.x整合监控(2-SpringBoot Admin)

SpringBoot集成钉钉报警sdk(解决Failed to introspect Class异常)
SpringBoot—实现n秒内出现x个异常报警

线程并发:
SpringBoot2.X整合线程池(ThreadPoolTaskExecutor)
SpringBoot2.X整合定时线程池(ScheduledThreadPoolExecutor)
Spring线程池—TaskDecorator线程的装饰(跨线程传递ThreadLocal的方案)

通信:

SpringBoot2.x集成HttpClient
Java中使用OkHttp进行Http通信
OkHttp调用微信小程序二维码接口照片是黑屏
SpringBoot2.x整合SMTP邮件服务(配置篇)
SpringBoot2.x整合SMTP邮件服务(使用篇)

Spring Boot 内嵌容器Undertow取代tomcat
安卓小程序http请求的header的key全部会转换成小写(Spring如何兼容)

记录一次排查okhttp3的unexpected end of stream on Connection异常(服务端长链接失效)

数据库篇:

Springboot2.x集成DataSource之druid连接池

SpringBoot2.x下durid配置导致循环依赖(自检异常)
Druid连接池的监控stat造成内存泄漏
Druid连接池在mysql的场景PS Cache是否需要开启?
SpringBoot2.x实现动态切换数据源(durid实现读写分离)

mybatis自定义拦截器(一)基本使用

mybatis自定义拦截器(二)对象详解

SpringBoot2.x—mybatis中的@MapperScan和@Mapper以及打印sql日志

SpringBoot整合Mybatis自定义拦截器不起作用解决方案!!!

mybatis的相同拦截器—切面执行的顺序

JAVA动态读取mysql表的字段名

JAVA实现mysql的binlog监听(mysql-binlog-connector)

缓存篇:

SpringBoot2.X整合Redis缓存
SpringBoot2.x中使用Redis的bitmap结构(工具类)

SpringBoot2.x—使用Redis的bitmap实现布隆过滤器(Guava中BF算法)

SpringBoot2.x—自定义Protostuff方式的RedisSerializer
SpringBoot2.x下Redis的Pipeline的使用

Jedis源码分析
JedisCluster源码分析

SpringBoot2.x—SpringCache(1)集成
SpringBoot2.x—SpringCache(2)使用
SpringBoot2.x—SpringCache(3) CacheManager源码
SpringBoot2.x—SpringCache(4)集成SpringCache保证Redis的数据一致性
SpringBoot2.x—SpringCache(5)使用多级缓存
SpringBoot2.x—SpringCache(6)缓存注意事项

google的Guava Cache的使用

LRU缓存—groovy提供的ConcurrentLinkedHashMap

将Cache操作模板化—本地缓存&&redis缓存的整合实现

SpringBoot2.x—代码实现多级缓存(Redis实现订阅发布模式)
事务:
SpringBoot2.x实现动态切换数据源(实现读写分离)
SpringBoot2.x实现链式事务(分库事务)
SpringBoot事务失效(1)—dataSource配置问题

SpringBoot2.x整合Zookeeper(实现starter)

SpringBoot2.x自定义实现PooledObjectFactory对象池
JAVA自定义实现KeyedPoolableObjectFactory对象池(netty的channel对象池)

本地缓存
guavaCache本地缓存失效方案expireAfterWrites和refreshAfterWrites
SpringBoot2.x—方法参数/返回值的注解版校验(解决方法内事务不生效)

消息中间件

SpringBoot2.x集成RabbitMQ
SpringBoot2.x整合Rabbit(1)connection和channel的区别
SpringBoot2.x整合Rabbit(2)消费者消息获取--推模式+拉模式
SpringBoot2.x整合Rabbit(3)生产者如何确保消息的不丢失
SpringBoot2.x整合Rabbit(4)消费者消息获取及异常处理的实现
SpringBoot2.x下RabbitMQ的并发参数(concurrency和prefetch)
使用Redis实现分布式双端列表解决RabbitMq顺序消费
SpringBoot中RabbitMQ动态创建队列以及绑定关系(AmqpAdmin)

拦截机制:
SpringBoot2.x拦截器&&过滤器&&AOP
SpringBoot2.x整合Interceptor拦截器(1-定义拦截器)
SpringBoot2.x将Filter过滤器添加到容器
SpringBoot2.x整合Filter拦截器
SpringBoot2.x过滤器OncePerRequestFilter(Spring内置Filter)

SpringCloud-feign调用时使用RequestInterceptor设置request对象
Spring—RestTemplate设置Interceptor拦截器

SpringBoot整合Mybatis自定义拦截器不起作用解决方案!!!

SpringBoot全局异常处理器与Filter和HandlerInterceptor的关系
SpringBoot2.x 利用Filter打印pv日志

SpringBoot2.x中HandlerInterceptor与注解搭配使用(骚套路)

日志框架:
JAVA中的日志slf4j从0到1
SpringBoot2.x整合logback日志框架(1)
SpringBoot2.x整合logback日志框架(2)—layout和MDC机制
maven打jar包供其他项目使用(记一次logback引发的线上bug)
SpringBoot2下log4j2和logback实现异步打印
logback日志使用if...else逻辑判断

SpringBoot2.x-自定义log.info()打印日志
SpringBoot2.x下使用log4j2打印JSON日志(支持ELK机制)

log.error()输出的异常栈没有“关键”信息解决方案

SpringBoot2.x+Sentry实现跨线程的异常汇总

后置处理器实战运用
SpringBoot2.x—方法参数/返回值的注解版校验

SpringMVC相关
SpringBoot2.x—定制HandlerMapping映射规则

MongoDB

SpringBoot2.x集成Mongodb
SpringBoot2.x下的Spring Data Mongo源码二次开发(1-动态切库)
记一次mongodb的生产事故—项目线程数彪升

文件存储:

SpringBoot2.x整合(cos,oss,本地挂载盘)文件存储的小而美的项目实现

Spring AOP源码分析

SpringBoot2.x下“AOP自动代理”实战—注解版日志打印
SpringBoot2.x下“后置处理器”完成AOP代理实战—注解版日志打印
SpringBoot2.x下Advice和MethodInterceptor的区别

SpringAOP联盟(9)-自动代理器的注册(EnableXxx的作用)

AOP-@EnableRetry实现的原理(源码存在瑕疵)

validate校验

JAVA基础篇(4)-Validation验证框架
SpringBoot2.x—方法参数/返回值的注解版校验
JAVA基础篇(15)—自定义“通用型枚举参数”校验注解
SpringBoot2.x—方法参数/返回值的注解版校验(解决方法内事务不生效)
SpringBoot项目启动时校验@ConfigurationProperties注解(对于内部类的支持)
Spring进阶篇(9)- MethodValidationPostProcessor 后置处理器的运用
项目实战—@Valid+自定义校验注解+全局异常处理器实现敏感词过滤
Validation验证框架—动态的返回所有字段的异常信息

elasticSearch

Es封装RestHighLevelClient和BulkProcessor的工具类
Es7.x使用RestHighLevelClient的3种分页实现
Es7.x使用RestHighLevelClient进行增删改和批量操作
Es7.x使用RestHighLevelClient进行查询操作

apm框架

skywalking(1)MAC版本安装
skywalking(2)自定义插件【okhttp插件-监控cos的sdk调用】

prometheus:

SpringBoot2.x整合Prometheus收集RestTemplate/feign远程调用信息

推荐github的项目:

分布式高效ID生产黑科技(sequence)
Hutool是一个小而全的Java工具类库

上一篇 下一篇

猜你喜欢

热点阅读