自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangyoo

所谓技术就是个无底洞

  • 博客(28)
  • 资源 (4)
  • 收藏
  • 关注

原创 基于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 4819

原创 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 2987 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 586

原创 解析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 2218 2

原创 什么是spring容器和容器初始化

相信做java开发的同学对“spring容器”一词并不陌生,但是spring容器到底是个什么东西,每个人的理解又不一样,这样对于初学者就比较尴尬了,总是糊里糊涂的。所以,接下来咱们从spring容器如何初始化角度来分析,这样能更好的帮助大家理解什么是spring容器,相信你通过这篇说明会对spring容器有更为清晰的认识。在分析spring容器如何初始化之前,我们需要有几点说明,因为这将对初始化过程的理解更有帮助。1.概念说明(1)ServletContext在servlet的规范当中,se

2021-08-04 19:56:46 844

原创 java.util.concurrent包并发集合及关键点简述

java.util.concurrent包并发集合,及关键点简述,如下图。

2021-07-29 10:36:20 140

原创 java分析集合框架原理汇总

目录一、List二、Set三、Map首先来一份集合框架图一、List1.ArrayList(数组)1)初始化无参数 jdk1.7,默认容量为10;jdk1.8,初始化为空数组,add数据时,初始化容量为10。有参数,根据设置的容量值进行初始化。 2)原理,add时,先判断是否扩容,再存储值,扩容过程有对数组进行复制、移动,代价比较高。...

2021-07-27 17:49:14 170

原创 分析HashTable、HashMap、ConcurrentHashMap的结构、初始化及扩容机制

前沿相信很多同学对HashTable、HashMap以及ConcurrentHashMap的原理和区别总是一知半解,问到的话,可以说上一些,但是深入问的话,那就茫茫然了。所以,基于这三个方面,我做了一个系统的总结,希望对大家有所帮助。通过本篇文章,大家可以有以下几点收获:了解HashTable的结构、初始化、扩容机制; 了解HashMap在jdk1.7和jdk1.8各自在数据结构、如何初始化、扩容机制的区别; 了解ConcurrentHashMap在jdk1.7和jdk1.8各自在数据结构、

2021-07-22 16:57:43 1318

原创 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 2119

原创 spring源码分析之分析入口

1.引言只要做过java开发的IT人,基本都听过或者用过spring框架,为了实现快速开发,方法有很多,比如从网上下载一个ssm框架或者自己搭建一个ssm框架,再者使用当下非常流行的springboot框架。对于现在的java开发人员,spring对开发过程提供了很多方便。但是,你真的了解spring吗?在使用spring相关方法时,可能你会根据自己的需求,到搜索引擎直接搜索如何使用该方法,会出现很多你想要的答案,而你只需要选择最合适的,以此来完成功能的开发。但是,这些答案你有深入剖析其中的原理吗?O

2020-07-01 11:51:14 1533

原创 解决saturn失效分片立即执行后后台分片项显示不正确问题

背景:官方的saturn组件,在失效分片后不能立即执行任务,需要等当前正常的分片执行完之后才可以执行,而且失效分片单个executor上一个一个执行,而我们的需求是立即执行,且是并行执行失效分片。解决方案见:解决saturn executor失败分片转移立即执行之源码分析问题:解决如上问题之后,发现saturn后台,在执行完失效分片之后,单个作业的分片项显示不正确(经代码分析,确实没有...

2019-07-08 10:06:53 974

原创 解决saturn executor失败分片转移立即执行之源码分析

最近在项目使用saturn过程中,遇到了一些原框架解决不了的问题,好在这个框架是开源的,通过对源码做了分析,找到了解决办法,有点啰嗦了,来点直接的。首先,saturn使用的版本是3.3.1,源码自行下载:https://github.com/vipshop/Saturn/releases问题如下: 序号 课题 调研结果 ...

2019-05-17 16:25:45 2386 1

原创 Elasticsearch升级之River替代方案(分布式任务调度与动态解析日志)

近期在项目中遇到一个问题,解决此问题,需要改变架构方案,以下为方案具体内容目录1.痛点2.如何解决3.替代river技术方案调研4.saturn运行原理5.动态解析方案6.saturn结合spring-boot测试实例7.遇到的问题及解决8.环境部署最低要求9.补充测试executor扩容、缩容/宕机、重启恢复场景:1.痛点前置:通过river消费k...

2019-04-25 10:19:24 2553

原创 mysql更新死锁问题

最近在使用ThreadPoolTaskExecutor实现多线程过程中,在对数据表的更新操作时,遇到了行级锁问题,即多个更新的语句同时执行时,出现了因并发导致一条更新占用了该行的锁,导致另一条更新无法获取锁,更新失败。表结构如下CREATE TABLE `batch_job_seq` ( `ID` bigint(20) NOT NULL, `UNIQUE_KEY` char(1) NO...

2019-04-12 09:38:17 808

原创 基于elasticsearch官方提供的组件实现增删查等操作

目前主要的使用连接elasticsearch的组件有:transport,jest和官方的java high level rest client三种,这三种的对比如下图: Java high level rest client jest transport 版本 官方的,每个e...

2019-02-28 20:16:30 693

原创 elasticsearch低版本根据时间范围删除数据实例

今天遇到一个有趣的问题,那就是如何实现在elasticsearch低版本删除某段时间范围内的es数据。高版本的ES(比如elasticsearch:5.5)有_delete_by_query方法,详细请看api:https://www.elastic.co/guide/en/elasticsearch/reference/5.5/docs-delete-by-query.html当前解决的ES...

2019-01-23 17:25:34 3495

转载 javascript原型详解(转载)

一、原型原型是 JavaScript 面向对象特性中重要的概念,在绝大多数的面向对象语言中,对象是基于类的(例如 Java 和 C++ ),对象是类实例化的结果。而在JavaScript 语言中,没有类的概念①,对象由对象实例化。打个比方来说,基于类的语言中类就像一个模具,对象由这个模具浇注产生,而基于原型的语言中,原型就好像是一件艺术品的原件,我们通过一台 100% 精确的机器把这个原件复制出...

2018-12-27 16:53:14 339

原创 mysql乐观锁和悲观锁详解

相信很多朋友在面试的时候,都会被问到乐观锁和悲观锁的问题,如果不清楚其概念和用法的情况下,相信很多朋友都会感觉很懵逼,那么面试的结果也就不言而喻了。那么乐观锁和悲观锁到底是个什么东西,用它能来做什么呢?相信大家都遇到这种场景,当很多人(一两个人估计不行)同时对同一条数据做修改的时候,那么数据的最终结果是怎样的呢?这也就是我们说的并发情况,这样会导致以下两种结果:更新错误,你修改之后的数据...

2018-12-27 12:08:47 15343 6

原创 java泛型应用详解

在平时的开发过程中,很多哥们不清楚泛型的概念以及用法,所以很多时候,写了很多没必要的代码,又或者,看到别人在使用泛型的时候,感觉对方很牛逼。。。其实,泛型没你想象的那么难,follow me一、为什么要使用泛型我们来看个简单的实例public class Test {    public static void main(String[] args) {        List li...

2018-12-26 15:45:37 162

转载 MyBatis框架及原理分析(转载)

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情:封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转换MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力。MyBatis的配置MyBatis框架和其他绝大部分...

2018-12-25 12:06:10 196

原创 JVM内存管理及JAVA性能调优相关笔记

JVM篇1.JVM内存分配:方法区、Java栈、本地方法栈、堆、程序计数器。方法区:在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。Java栈:用来存储方法中的局部变量(包括在方法中声明的非静态变量以及函数形参)。对于基本数据类型的变量,则直接存储它的值,对于引用类型的变量,则存的是指向对象的引用。局部变量表的大小在编译器就可以确定其大...

2018-12-21 21:05:17 192

原创 开发约束补充

1.try...catch时分清稳定代码和非稳定代码稳定代码指的是无论如何不会出错的代码,对于非稳定代码尽可能区分异常类型,再做对应的处理,不要对大段代码进行try...catch2.单元测试最好覆盖所有的测试用例(UC)为更方便地进行单元测试,业务代码应避免以下情况:(1)构造方法做的事情过多;(2)存在过多的全局变量和静态方法;(3)存在过多的外部依赖;(4)存在过多的条件语句;3...

2018-12-13 15:13:38 236 1

转载 spring事务隔离级别、传播机制以及配置实现

我觉得自己写的未必有别人的好、全,所以直接把别人链接贴过来:https://blog.csdn.net/zht741322694/article/details/78676964

2018-12-13 11:30:44 255

原创 spring定时器quartz的实现实例

废话不多说,直接上代码,如下xml配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:sche...

2018-12-13 10:54:01 135

原创 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 592

原创 最全Spring常用注解详解

我们在开发的时候,会看到各种的注解,如果不细细研究下,傻傻的分不清楚,更谈不上怎么合理的利用了,接下来我们一起看下。研究顺序,从最常用的来,follow me1.@Controller注解用于标注控制层组件(如struts中的action)。如果@Controller不指定其value【@Controller】,则默认的bean名字为这个类的类名首字母小写,如果指定value【@Contr...

2018-12-12 16:06:26 5359 3

原创 Spring三大核心思想详解

spring核心思想分三大类:控制反转(IOC),依赖注入(DI)和面向切面(AOP)。控制反转通俗讲,控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。也就是说,正常我们都是新建对象,才可以调用对象。现在不需要了,交给容器来管理,我们只需要通过一些配置来完成把实体类交给容器这么个过程。这样可以减少代码量,简化开发的复杂度和耦合度。这里,我要解释下几个概念:1.控制反转只是一个...

2018-12-10 19:25:28 16768 1

原创 继续写博客的缘由

记得第一次创建博客是2013年9月的时候,当时自己申请的域名和购买虚机,当初建博客的目的,就是把学习网站搭建和运营相关的知识应用起来,平时写写技术文章跟大家一起分享。网站上线之初,很是兴奋,把自己学习的技术知识发到博客上。不得不承认,写文章是个很累人的活,但是那种把学到的知识跃然于博客之后,那种成就感让人很兴奋。但是像大多博主一样,坚持了两年,后面也是断断续续的写博文,久而久之,也...

2018-12-07 11:32:59 181

jdk-8u181-linux-x64

解压后有个jdk-8u181-linux-x64.tar.gz ,直接在liunx中使用 jdk-8u181-linux-x64.tar

2019-04-26

hadoop各版本--hadoop.dll,以及winutils.exe,亲测

缺少winutils.exe回报如下错误: Could not locate executable null \bin\winutils.exe in the hadoop binaries 缺少hadoop.dll 错误如下: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable 解压文件,winutils.exe ,hadoop.dll两个文件都要copy放在hadoop/bin/目录下即可

2018-10-29

php参考手册.chm

php开发必备秘籍,在开发过程中可作为参考文件,让你的代码更规范完整无误!

2014-01-20

ThinkPHP3.2完全开发手册CHM

ThinkPHP3.2完全开发手册CHM是ThinkPHP框架开发的必备秘籍!

2014-01-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除