- 博客(34)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 7、spring核心源码解析之aop概况流程2
文章目录1. 源码分析aop的切面@Aspect解析2. 源码分析aop使用jdk代理还是cglib动态代理?3. spring中jdk动态代理和aop动态代理4. Advice通知MethodIntercept方法拦截织入代理时许图1. 源码分析aop的切面@Aspect解析 前文分析spring ioc源码时,了解到,spring 解析内部注解,通常通过后置处理器进行解析,上文提到 aop注入的后置处理器AnnotationAwareAspectJAutoProxyCreator。在进行切面解析
2020-05-24 13:37:46
317
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 全文搜索引擎solr环境搭建
文章目录1. 全文搜索引擎solr环境搭建1.1下载solr7.7.21.2 解压solr文件1.3 启动solr1.4新增配置core1.4.1创建core2. 增加ik中文分词器2.1增加ik中文分词器的jar包3. 配置core中的字段4. solr dataImport配置数据(全量)增量导入1. 全文搜索引擎solr环境搭建1.1下载solr7.7.2目前最新版本solr 8.2.0 最新发行版本是 Solr 7.7.2。本系统搭建的是solr7.7.2下载地址https://lucene
2020-05-19 22:14:46
434
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 jmeter+ant+jenkins自动化接口测试搭建
自动化接口测试搭建文章目录**自动化接口测试搭建**1. 环境介绍 jmeter+ant+jenkins1.1 jmeter介绍1.2 ant介绍1.3 jenkins介绍2. 总体设计思路3. jmeter 的实现3.1 准备工作3.2 具体实现4.jmeter集成ant的实现1. 环境介绍 jmeter+ant+jenkins1.1 jmeter介绍 Apache JMeter™应用程序是开放源码软件,它是一个100%纯Java应用程序,用于加载测试功能行为和度量性能。它最初是为测试Web应用
2020-05-19 21:31:14
700
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 微服务日志监控系统ELK之docker-compose搭建ELK
docker-compose搭建日志监控系统ELK1、基础环境文章目录docker-compose搭建日志监控系统ELK1、基础环境环境要求2、环境配置3、配置启动docker-compose.yml4.spring booot输出日志到ELK环境要求服务器:centos 7.0环境: docker、dockers-compose内存: 4G2、环境配置elasticsearch需要设置系统内核参数,否则会因为内存不足无法启动。# 改变设置sysctl -w vm.max_map_cou
2020-05-19 20:56:15
1295
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 6、spring核心源码解析之aop概况流程1
文章目录前情1.spring aop和aspects的基本概念2.aop设计一个统计方法的执行时间注解2.1开启spring aop功能@EnableAspectJAutoProxy2.2编写切面2.3通过@EnbleLogger注解导入切面3.spring之aop运行的整体流程分析前情 前面写了五篇又过于spring ioc与DI的文章,并且都通过源码进行了一些分析。从前文中,我们可以看到,spring内部解析@Configuration、@Autowired等注解也是通过Bean的后置处理器进行解
2020-05-17 18:16:41
429
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 5、spring核心源码解析之DI依赖注入、自动装配@Autowired和@Resource
文章目录前情1.依赖注入之setter注入2.依赖注入之构造方法注入3.依赖注入之自动装配之@Autowired、@Resource等注解详解4.依赖注入源码分析5.@Autowired和@Resource的应用与分析6.ioc小结前情 spirng 的DI(dependency injection )依赖注入是我们在开发中最常用的,如setter注入、构造方法注入,还有我们的自动装配@Autowired、@Resource注入,它可以帮助我们更好的关注我们的业务开发,而无需关注DI依赖注入的
2020-05-17 10:16:29
452
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 4、spring核心源码解析之自定义bean三种方式@import、ImportSelector、ImportBeanDefinitionRegistrar
文章目录前言1. 自定义注册bean之@Import的使用2. 自定义注册bean之ImportSelector的使用3. 自定义注册bean之ImportBeanDefinitionRegistrar的使用4. 自定义注册bean之spring经典实现--spring开启动态代理功能@EnableAspectJAutoProxy5. 自定义Bean三种方式的源码解析前言 随着spring boot的流行,@Enable*设计模式渐渐兴起,通常一个注解就可以帮我们完成一个很使用功能。而在大多数
2020-05-15 23:28:53
426
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 3、spring核心源码解析之@Configuration注解详解
前情 哎,感觉挤出来的时间仍旧不够用,前天的文章写到深夜一点了,很想定期(原计划每天,感觉不太现实)发一篇高质量的源码解析的博文。 个人的源码解析思路是想从spring核心源码解析作为起点,后续陆续分析mybatis、spring boot 、dubbo源码,这些也都是本人接触并深入过的框架(至于spring cloud全家桶,项目中用过,但并没有深入),感觉还挺有挑战的,希望自己能坚持下去。 本文主要是以@Configuration注解标注的bean是如何实例化的,它和@Co
2020-05-14 00:12:57
770
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 1、如何读取JVM中动态生成的代理类(如CGLIB)
1.运行java自带的工具HSDB在cmd命令行下执行:>java -classpath "%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB2.查看正在运行的java类进程号将java程序在合适的地方打下断点,直接在cmd命令行下,使用jps命令(java自带的命令)。3.将自己正在运行的程序进程id输入到HSDB中然后在点击tools -> Class Browser,就可以搜索一下jvm正在运行的类了。(目前这个截图是我搜索sp
2020-05-12 22:16:30
508
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 2、spring源码解析之单例bean的实例化
文章目录前言1.refresh之实例化单实例bean2.解决循环依赖3.依赖注入之setter注入前言上文讲到了整体流程、以及配置类的BeanDefinition注册到ioc容器中。 其实bean的实例化是一件非常复杂的事情,因为不同的bean实例化的方式都是有一些差别的。而且bean在实例化过后会经历很多后置的处理(BeanPostProcess),所以本文我会核心讲如何实例化我们的单例bean。 本文暂时不会涉及到很多有关于后置处理器的核心点(后续可能会讲到),本文暂时着重bean是如何实.
2020-05-12 01:06:51
773
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 1、spring源码解析之概况流程
文章目录概要1.程序入口:加载配置类2.注解配置上下文AnnotationConfigApplicationContext3.刷新上下文4、核心类AnnotationConfigApplicationContext的类图结构5.跟踪源码进入ioc概要 以前总是很忙,没有时间写博客,现在挤出时间写一些总结性及实用性的博客。 首先聊一下,之所以开始看源码,是因为随着自身对java的理解不断加深,感觉自己对技术架构方面很感兴趣。所以想深入了解一下开源框架的本质,看各种开源框架、jdk源码有一段时间了
2020-05-10 21:02:08
1676
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 4.源码中的HashMap与JUC之ConcurrentHashMap
文章目录1.HashMap源码分析2.ConcurrentHashMap源码分析1.HashMap源码分析首先了解一下jdk1.8 HashMap的存储原理:链表加数组,并且可自动扩容。一张图加源码搞定HashMap源码原理分析图://hashmap源码public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; ...
2020-04-07 13:58:54
163
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 3.线程池的使用
文章目录1.线程池的出现2.线程池原理3.线程池线相关api4.合理设置线程数1.线程池的出现java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小为1M,线程过大,会消耗很多的内存。线程池的出现,就是为了方便控制线程数量。2.线程池原理理解 线程池管理器、工作线程、任务接口、任务队列。线程池管理器:用于创建并管理线程池,包括线程池的创建、销毁、添加新...
2020-04-07 12:06:42
153
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 2.线程封闭之Threadlocal
文章目录ThreadLocal变量使用场景ThreadLocal变量 是java里特殊的变量他是一个线程级别的变量,每个线程都有一个ThreadLocal,就是每个线程都拥有了自己独立的一个变量,竞争条件被消除,在并发模式下是绝对安全的变量。示例://会自动在每个线程创建一个T的副本,副本之间相互独立,互不影响ThreadLocal<T> var = new Thread...
2020-04-07 11:04:31
209
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 1、docker安装及国内镜像源配置
文章目录1.安装2.切换国内镜像源1.安装参照官网安装安装前先移除 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-lat...
2020-04-01 11:09:00
318
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 2、synchronized关键字
2、synchronized关键字文章目录1.引出synchronized2.synchronized用法3.synchronized原理分析1.引出synchronized在java中,当使用多线程操作共享资源时,很容易出现数据不一致问题。场景: 当售票时,很多窗口同时售票,但去往一个目的的票数总共只有100张,当200人同一时间买该目的地票时,如何控制不会出现超卖、少卖的情况呢?...
2019-11-03 19:36:40
135
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 1、理解jvm与jmm
1、理解jvm与jmm文章目录1、理解jvm与jmm1.Java虚拟机(jvm)1.1 jvm内存模型2.java内存模型(jmm)2.1 java内存模型(jmm)标题![在这里插入图片描述](https://img-blog.csdnimg.cn/20191016213127288.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGV...
2019-10-16 21:35:33
687
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 docker容器自定义网络,使容器之间更容易通信
docker引入网络新特性之后,内置了dns server,dns顾名思义域名解析,通过这个方式给容器指定ip和域名,可以让容器间访问使用自定义的ip和域名。docker 自定义网络给容器指定ip、域名有以下几种新特性1.让容器的网络基于dns的域名解析2.拥有与宿主机之间安全的隔离环境3.自由的选择或放弃一个网络4.支持以-link给容器定义别名(通过–net-alias也可以设...
2018-09-16 20:57:14
4186
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 docker容器的三种通信方式bridge、host、none
docker容器之间通信的三种方式上一篇讲述了如何使用docker部署spring boot微服务,那么多个容器中spring boot微服务之间是如何进行通信的呢,在本篇中只涉及到单机情况下,首先探索docker容器之间三种通信方式。在docker没有引进网络新特性之前,单机容器间通信采用-link(bridge)即可满足需求。新特性主要是内置dns server,只有在创建自定义...
2018-09-16 20:55:54
7989
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 docker 部署spring boot 微服务
spring boot 应用在docker容器之间的通信接触docker有大概半年时间了,一直没有具体去系统的学习,了解的不多,本次在开发中,项目刚启动,采用docker部署微服务,目前一直在研究,首先简单介绍docker部署spring boot微服务应用,由于篇幅较大,涉及到单机,还有跨主机等多种方式通信,so 分几次发出来。1 使用docker容器中部署spring boot应用...
2018-09-16 20:53:46
926
2
原创 spring boot 集成 elasticsearch cr(u)d 、分页聚合查询
文章目录1 添加maven依赖2. 在yml文件中增加配置3. spring elasticsearch具体使用1 添加maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
2020-06-24 21:52:15
596
2
原创 docker启动常用组件redis,mysql、elasticsearch、zookeeper
开发中常用的一些命令组件的分享docker相关国内镜像源sudo vi /etc/docker/daemon.json{ "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ]}生效sudo systemctl daemon-reloadsudo syst.
2020-06-24 15:34:16
309
原创 redis的使用及应用场景
文章目录1.redis的特征2.redis的5种常见的数据结构3.redis的使用场景4.根据key查询redis值的真实存储结构1.redis的特征内存级别高速缓存。k -v 键值对存储。单线程 串行化(worker)。io模型 epoll。二进制安全的存储,字节的存储(客户端需要确定统一编码)。value有类型,每个类型具有本地方法。底层是使用C写的,实际数据的存储结构都可以从C文件看到。2.redis的5种常见的数据结构这几种数据的存储结构,数据库底层对于value的存储是基于数
2020-06-07 12:28:12
336
原创 windows安装elasticsearch 7.4和head控制台、ik
文章目录1. elasticsearch下载2. elasticsearch安装3. 安装中文分词器ik4. elasticsearch-head控制台安装5. head控制台的简单使用1. elasticsearch下载推荐下载 7.4.0版本,目前最新7.7.0版本,因为最新版本的中文分词器ik在github上找不到现成可用的。建议直接从官网下载。也可以从我的资源附件进行下载,附件内容如下。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sBl5zCF7-159
2020-06-04 23:28:40
911
原创 工厂设计模式
文章目录1. 工厂模式是什么2. 简单工厂模式3. 工厂方法模式4. 抽象工厂模式5. spring中的BeanFactory1. 工厂模式是什么在面向对象的编程中,工厂就是用来生产对象的。因为对象的创建往往都很复杂,工厂对外提供创建对象的接口,将对象的实例化逻辑细节进行封装。就像生活中,工厂产生商品,商家只需要拿到商品去做生意就行了,不关心商品生产的细节。常见的工厂模式由,简单工厂模式、工厂方法模式、抽象工厂模式。2. 简单工厂模式简单工厂基本概念:SimpleFfactory:简单工厂
2020-05-26 20:58:52
1228
原创 最优雅的单例设计模式
文章目录1.单例设计模式是什么。2.常见的几种单例创建方式2.1 饿汉式2.2 懒汉式 lazy loading(双重检查)2.3 静态内部类2.4 枚举实现3.应用场景1.单例设计模式是什么。单例设计模式就是一个类,只生成一个对象 ,给予其他类调用。所以至少至少要保证三点:构造器私有化。类本身创建对象。提供获取对象的方法2.常见的几种单例创建方式2.1 饿汉式在类加载到内存,就实例化一个实例。jvm保证线程安全简单实用,简单以用,线程安全。缺点:不管是否用到,类加载时
2020-05-25 22:15:57
291
原创 RabbitMQ 安装和使用
RabbitMQ 安装和使用一、安装依赖环境在 http://www.rabbitmq.com/which-erlang.html 页面查看安装rabbitmq需要安装erlang对应的版本在 https://github.com/rabbitmq/erlang-rpm/releases 页面找到需要下载的erlang版本,erlang-*.centos.x86_64.rpm就是centos版本的。复制下载地址后,使用wget命令下载wget -P /home/download htt
2020-05-19 23:09:11
193
原创 面向对象的设计原则SOLID
面向对象的设计原则也被称为SOLID,它们是任何软件设计开发的一种设计思想。SOLID(稳定的)原则包括单一职责原则,开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则。单一职责原则(Single Responsibility Principle) : 是一种面向对象的设计原则,该原则指出软件模块应该只有一个被修改的理由。在大多数情况下,编写java代码时都会将单一职责原则应用于类。开闭原则(Open Closed Principle): 模块、类和函数应该对扩展开发,对修改关闭。里
2020-05-19 22:59:56
132
原创 CAS compareAndSet(old,new) 对比旧值,设置新值
CAS compareAndSet(old,new) 对比旧值,设置新值CAS(compareAndSet): 是java.util.concurrent.atomic 每个原子类都有的一个方法compareAndSet,此方法的操作是原子性的,具体是有jvm底层和硬件去保证原子性的。CAS操作需要输入两个值,一个旧值(期望操作前的值)和一个新值,再操作期间先比较旧值有没有发生变化,如果没有发...
2020-04-07 23:39:06
528
原创 3、volatile关键字
3、volatile关键字文章目录1.分析volatile1.1 volatile的定义1.2 volatile的理解1.3 volatile的原理2.使用volatile2.1、状态的开关标志2.2、双重检查锁定(double-check-locking DCL)3.volatile与synchronized的区别1.分析volatile1.1 volatile的定义 volatil...
2020-04-07 23:20:33
145
原创 1.java线程状态和线程通信
文章目录1.线程状态2.线程中止3.线程通信1.线程状态 java中定义的线程状态有6种,从jdk的源码类java.lang.Thread.State中可以看到,一张图搞定java中线程的状态。 线程在其执行生命周期中,状态是在不停变得,符合大学中操作系统的线程运行状态切换,不详述。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RGOjTr0h-1586...
2020-04-07 00:33:11
173
原创 linux下maven 3.5.4安装
前言maven安装和jdk安装类似可以参考前面jdk安装。1.下载maven,官网下载或者wget下载wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz2.tar -vxf apache-maven-3.5.4-bin.tar.gz3.配置环...
2018-09-21 23:07:09
1352
原创 Centos 7.x下安装jdk1.8
1.首先下载jdk,进官网下载jdk,或者linux下通过 wget下载.官网地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html2解压jdk,执行命令tar -vxf jdk-8u161-linux-x64.tar.gz3.配置环境变量,vi /etc/prof...
2018-09-21 22:59:22
170
原创 git生成公钥私钥和ppk
1.打开gitbash,cd ~/.ssh,然后ls,看本机是否存在2.若无,则ssh-keygen 生成,一直回车生成的如图,默认在C:\Users\HUAWEI.ssh目录下3.使用puttygen,Conversions—&amp;amp;gt;import key—&amp;amp;gt;generate—&amp;amp;gt;保存私钥,将私钥放在生成ppk文件。注意:不停的在空白地方滑动,这样可以生成的很快最终结
2018-09-19 22:10:14
3469
1
elasticsearch.zip
2020-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人