![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 83
哼哼爸比
这个作者很懒,什么都没留下…
展开
-
基于spring-boot-starter-data-elasticsearch实现的ES API插件
1.背景在使用spring-boot-starter-data-elasticsearch过程中,基本可以满足业务的大部分需求,但是会发现几个问题,1.多个业务线都需要使用ES组件的时候,都要重复的引入初始化文件,这样代码重复率很高2.不同索引都要创建自定义的Repository,但是自定义Repository中不需要任何自定义的业务逻辑,导致代码量无故增加3.spring-boot-starter-data-elasticsearch提供多种api,容易导致开发乱用,不便于统.原创 2022-03-29 15:12:48 · 4878 阅读 · 0 评论 -
SpringBoot整合Mybatis源码解析
目录一、示例代码1.核心依赖2.配置(application.yml)3.核心代码二、源码分析SpringBoot整合Mybatis的过程1.SpringBoot集成Mybatis2.创建MapperScannerConfigurer的bean定义及扫描mapper接口3.实例化SqlSessionFactory、SqlSessionTemplate及mapper三个bean3.1. 实例化SqlSessionFactory3.2. 实例化sqlSessionTemp原创 2021-10-06 14:49:01 · 3134 阅读 · 2 评论 -
JDK动态代理和CGLIB代理源码分析
目录一、使用方式1.业务方法类2.实现代理方法3.使用场景分析3.1.使用CGLIB代理执行非接口实现类HelloWorld3.2.使用CGLIB代理执行接口实现类UserServiceImpl3.3.使用JDK动态代理执行接口实现类UserServiceImpl3.1.使用JDK动态代理执行非接口实现类HelloWorld二、源码分析1.JDK动态代理源码分析1.1创建代理对象1.2调用代理对象2.CGLIB代理源码分析2.1创建代理对象2.2调原创 2021-09-07 16:37:00 · 609 阅读 · 0 评论 -
解析Spring Boot的AOP原理
目录一、概述二、示例三、Spring AOP如何进行初始化?1.添加@EnableAspectJAutoProxy注解2.IOC容器初始化,执行refresh()方法3.执行registerBeanPostProcessor()4.执行finishBeanFactoryInitialization(beanFactory)4.1. 情况一:如果此时的bean是切面类(标注@Aspect)。4.2. 情况二:此时的bean是需要被切的类(即@Pointcut("a.b.原创 2021-08-27 11:47:34 · 2272 阅读 · 2 评论 -
什么是spring容器和容器初始化
相信做java开发的同学对“spring容器”一词并不陌生,但是spring容器到底是个什么东西,每个人的理解又不一样,这样对于初学者就比较尴尬了,总是糊里糊涂的。所以,接下来咱们从spring容器如何初始化角度来分析,这样能更好的帮助大家理解什么是spring容器,相信你通过这篇说明会对spring容器有更为清晰的认识。在分析spring容器如何初始化之前,我们需要有几点说明,因为这将对初始化过程的理解更有帮助。1.概念说明(1)ServletContext在servlet的规范当中,se原创 2021-08-04 19:56:46 · 858 阅读 · 0 评论 -
java.util.concurrent包并发集合及关键点简述
java.util.concurrent包并发集合,及关键点简述,如下图。原创 2021-07-29 10:36:20 · 141 阅读 · 0 评论 -
java分析集合框架原理汇总
目录一、List二、Set三、Map首先来一份集合框架图一、List1.ArrayList(数组)1)初始化无参数 jdk1.7,默认容量为10;jdk1.8,初始化为空数组,add数据时,初始化容量为10。有参数,根据设置的容量值进行初始化。 2)原理,add时,先判断是否扩容,再存储值,扩容过程有对数组进行复制、移动,代价比较高。...原创 2021-07-27 17:49:14 · 174 阅读 · 0 评论 -
分析HashTable、HashMap、ConcurrentHashMap的结构、初始化及扩容机制
前沿相信很多同学对HashTable、HashMap以及ConcurrentHashMap的原理和区别总是一知半解,问到的话,可以说上一些,但是深入问的话,那就茫茫然了。所以,基于这三个方面,我做了一个系统的总结,希望对大家有所帮助。通过本篇文章,大家可以有以下几点收获:了解HashTable的结构、初始化、扩容机制; 了解HashMap在jdk1.7和jdk1.8各自在数据结构、如何初始化、扩容机制的区别; 了解ConcurrentHashMap在jdk1.7和jdk1.8各自在数据结构、原创 2021-07-22 16:57:43 · 1366 阅读 · 0 评论 -
linux安装hadoop3.1.4操作步骤
安装hadoop新版本遇到好几个坑,查阅的资料有的说明不是很准确,所以记录下这次的安装过程,希望可以帮助大家节约时间。谨记一点:遇到问题首先看日志一.安装jdk1.8,此处省略比如java安装目录:/opt/jdk/openjdk-1.8.0_92二.hadoop集群搭建1.准备事项资源需求4C8G3台,节点分配为1主2从,即主:hadoop1从:hadoop2,hadoop3比如IP列表为:192.168.11.11192.168.11.12192.168.11.13原创 2020-12-09 10:36:02 · 2241 阅读 · 0 评论 -
解决saturn executor失败分片转移立即执行之源码分析
最近在项目使用saturn过程中,遇到了一些原框架解决不了的问题,好在这个框架是开源的,通过对源码做了分析,找到了解决办法,有点啰嗦了,来点直接的。首先,saturn使用的版本是3.3.1,源码自行下载:https://github.com/vipshop/Saturn/releases问题如下: 序号 课题 调研结果 ...原创 2019-05-17 16:25:45 · 2428 阅读 · 1 评论 -
JVM内存管理及JAVA性能调优相关笔记
JVM篇1.JVM内存分配:方法区、Java栈、本地方法栈、堆、程序计数器。方法区:在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。Java栈:用来存储方法中的局部变量(包括在方法中声明的非静态变量以及函数形参)。对于基本数据类型的变量,则直接存储它的值,对于引用类型的变量,则存的是指向对象的引用。局部变量表的大小在编译器就可以确定其大...原创 2018-12-21 21:05:17 · 199 阅读 · 0 评论 -
java泛型应用详解
在平时的开发过程中,很多哥们不清楚泛型的概念以及用法,所以很多时候,写了很多没必要的代码,又或者,看到别人在使用泛型的时候,感觉对方很牛逼。。。其实,泛型没你想象的那么难,follow me一、为什么要使用泛型我们来看个简单的实例public class Test { public static void main(String[] args) { List li...原创 2018-12-26 15:45:37 · 169 阅读 · 0 评论 -
开发约束补充
1.try...catch时分清稳定代码和非稳定代码稳定代码指的是无论如何不会出错的代码,对于非稳定代码尽可能区分异常类型,再做对应的处理,不要对大段代码进行try...catch2.单元测试最好覆盖所有的测试用例(UC)为更方便地进行单元测试,业务代码应避免以下情况:(1)构造方法做的事情过多;(2)存在过多的全局变量和静态方法;(3)存在过多的外部依赖;(4)存在过多的条件语句;3...原创 2018-12-13 15:13:38 · 238 阅读 · 1 评论 -
java多线程实例--newFixedThreadPool线程池
废话不多说,直接上代码,如下package com.nj.nfhy.test;import java.util.concurrent.ThreadFactory;import java.util.concurrent.atomic.AtomicInteger;public class TestHandlerThreadFactory implements ThreadFactory...原创 2018-12-13 10:12:48 · 598 阅读 · 0 评论