java
文章平均质量分 91
努力敲代码买猪脚啃
这个作者很懒,什么都没留下…
展开
-
JVM学习笔记之-JVM性能监控-JVM监控及诊断工具-GUI方式-Visual VM-JProfiler-Arthas
00-谈GUI工具前的补充补充1:内存泄漏内存泄漏的理解与分类何为内存泄漏( memory leak)可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题(让JVM误以为此对象还在引用中,无法回收,造成内存泄漏)。内存泄漏( memory leak)的理解严格来说,只有对象不会再被程序用到了,但是GC又不能回收他们的情况,才叫内存泄漏。但实际情况很多时候一些不太好的实践(或疏忽)会导致对象的生命周期变原创 2021-12-21 11:15:14 · 1101 阅读 · 0 评论 -
JVM学习笔记之-JVM性能监控-JVM监控及诊断工具-命令行方式
性能优化的步骤第1步(发现问题):性能监控一种以非强行或者入侵方式收集或查看应用运营性能数据的活动。监控通常是指一种在生产、质量评估或者开发环境下实施的带有预防或主动性的活动。当应用相关干系人提出性能问题却没有提供足够多的线索时,首先我们需要进行性能监控,随后是性能分析。列如:GC频繁 cpu load过高 OOM 内存泄漏 死锁 程序响应时间较长第2步(排查问题)∶性能分析一种以侵入方式收集运行性能数据的活动,它会影响应用的香吐量或响应性。性能分析是针对性能问题的答复结果,关注原创 2021-12-20 10:23:42 · 512 阅读 · 0 评论 -
学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot
Activiti71.1工作流介绍工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现。2.1Activiti 介绍 BPM 介绍Alfresco 软件在 2010 年 5 月 17 日宣布 Activiti 业务流程管理(BPM)开源项目的正式启动,其首席架构师由业务流程管理 BPM 的专家 Tom Baeyens 担任,Tom Baeye原创 2021-11-22 10:47:53 · 3994 阅读 · 8 评论 -
学习笔记之-MongoDB简介,Docker安装MongoDB,MongoDB基本常用命令,MongoDB索引-Index,SpringDataMongoDB的基本使用
1.MongoDB相关概念1.1 业务应用场景传统的关系型数据库(如MySQL),在数据操作的“三高"需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高"需求:·High performance -对数据库高并发读写的需求。·Huge Storage -对海量数据的高效率存储和访问的需求。·High Scalability && High Availability-对数据库的高可扩展性和高可用性的需求。而MongoDB可应对“三高”需求。具体的应用场景如原创 2021-11-15 11:44:52 · 564 阅读 · 0 评论 -
学习笔记之-分库分表概念,分库分表带来的事务,关联查询,分页,排序,主键避重等问题,Sharding-JDBC解决分库分表后所引发的部分问题
Sharding-JDBC分库分表1 概述1.1.分库分表是什么随着公司业务快速发展,数据库中的数据量猛增,访问性能也变慢了,优化迫在眉睫。分析一下问题出现在哪儿呢﹖关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。方案1 :通过提升服务器硬件能力来提高数据处理能力,比如增加存储容量、CPU等,这种方案成本很高,并且如果瓶颈在MySQL本身那么提高硬件也是有限原创 2021-11-09 16:35:54 · 3721 阅读 · 6 评论 -
Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁
1.NoSQL数据库1.1 NoSQL数据库概述NoSQL(NosQL = Not Only sQL ),意即“不仅仅是sQL”,泛指非关系型的数据库。NoSQL不依赖业务逻辑方式存储,而以简单的 key-value模式存储。因此大大的增加了数据库的扩展能力不遵循SQL标准。不支持ACID。远超于SQL的性能。1.2NoSQL适用场景对数据高并发的读写海量数据的读写对数据高可扩展性的1.3.NoSQL不适用场景需要事务支持基于sql的结构化查询存储,处理复杂的关系,需原创 2021-10-20 15:41:18 · 670 阅读 · 0 评论 -
学习笔记之-java8的新特性-函数式接口,lambda表达式,方法引用,Stream API,Optional类
1.Lambda表达式为什么使用Lambda表达式?Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以与出史间白、史灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。一、Lambda表达式的基础语法:Java8中引入了一个新的操作符“->”该操作符称为箭头操作符或Lambda操作符箭头操作符将Lambda表达式拆分成两部分:左侧:Lambda表达式的参数列表右侧:Lambda表达式中所需执行的功能,原创 2021-07-22 22:00:22 · 630 阅读 · 8 评论 -
JVM学习笔记之-垃圾回收相关概念 System.gc()的理解 内存溢出与内存泄漏 STW 垃圾回收的并行与并发 安全点与安全区域 再谈引用:强引用 软引用 弱引用 虚引用 终结器引用
System.gc()的理解在默认情况下,通过System.gc()或者Runtime. getRuntime ( ).gc ()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。然而system.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。JVM实现者可以通过System.gc ()调用来决定JVM的GC行为。而一般情况下,垃圾回收应该是自动进行的,无须手动触发,否则就太过于麻烦了。在一些特殊情况下,如我们正在编写一个性能基准,我们可以在运行原创 2021-07-08 21:48:31 · 402 阅读 · 1 评论 -
JVM学习笔记之-拉圾回收概述,垃圾回收相关算法
拉圾回收概述什么是垃圾垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收?如何回收?垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场景,对垃圾收集提出了新的挑战,这当然也是面试的热点。什么是垃圾( Garbage)呢?原创 2021-07-01 21:44:31 · 261 阅读 · 1 评论 -
JVM学习笔记之-StringTable String的基本特性,内存分配,基本操作,拼接操作,intern()的使用,垃圾回收 ,G1中的String去重操作
String的基本特性string:字符串,使用一对""引起来表示。String s1 = “”; //字面量的定义方式String s2 = new String(“Hello”);·string声明为final的,不可被继承string实现了serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示string可以比较大小string在jdk8及以前内部定义了final char[ ] value用于存储字符串数据。jdk9时改为byte [ ]St原创 2021-06-28 21:59:07 · 277 阅读 · 0 评论 -
JVM学习笔记之-执行引擎(Execution Engine)
执行引擎概述执行引擎概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被原创 2021-06-25 21:59:10 · 201 阅读 · 1 评论 -
JVM学习笔记之-对象的实例化,内存布局与访问定位,直接内存(Direct Memory)
对象的实例化对象的内存布局图解对象的访问定位句柄访问好处reference中存储稳定句柄地址,对象被移动(垃圾收集时移动对象很普遍)时只会改变句柄中实例数据指针即可,reference本身不需要被修改。直接指针(hotspot采用)直接内存(Direct Memory)概述不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO,通过存在堆中的DirectByteBuffer操作Na原创 2021-06-25 21:27:39 · 218 阅读 · 3 评论 -
JVM学习笔记之-方法区,栈、堆、方法区的交互关系,方法区的理解,设置方法区大小与OOM,方法区的内部结构,方法区使用举例
栈、堆、方法区的交互关系运行时数据区结构图从线程共享与否的角度来看栈,堆,方法区的交互关系方法区的理解设置方法区大小与OOM方法区的内部结构方法区使用举例方法区的演进细节方法区的垃圾回收总结...原创 2021-06-10 20:25:41 · 1363 阅读 · 1 评论 -
JVM学习笔记之-堆,年轻代与老年代,对象分配过程,Minor GC、Major GC、Full GC,堆内存大小与OOM,堆空间分代,内存分配策略,对象分配内存,小结堆空间,逃逸分析,常用调优工具
堆的核心概述设置堆内存大小与OOM年轻代与老年代对象分配过程Minor GC、Major GC、Full GC堆空间分代思想内存分配策略为对象分配内存:TLAB小结堆空间的参数设置堆是分配对象的唯一选择吗原创 2021-06-02 20:00:47 · 990 阅读 · 2 评论 -
JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈
运行时数据区概述及线程概述内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。Java虚拟机定义了若千种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着原创 2021-05-11 15:50:46 · 365 阅读 · 3 评论 -
JVM学习笔记之-类加载子系统,类的加载与类的加载过程,双亲委派机制
类加载器与类加载过程原创 2021-05-04 09:01:09 · 223 阅读 · 0 评论 -
设计模式之java-学习笔记
设计模式简介本笔记是根据尚硅谷java设计模式视频学习得设计模式七大原则1设计模式的目的编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好1)代码重用性 (即:相同功能的代码,不用多次编写)2)可读性 (即:编程规范性, 便于其他程序员的阅读和理解)3)可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)4)可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)5)使程序呈现原创 2021-03-31 15:20:16 · 714 阅读 · 2 评论 -
Netty-案例 WebSocket与netty实现长连接案例(代码注释详解)
NettyNettyServerpackage com.fs.netty.simple;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel;import io.netty.channel.socket.nio.NioServerS原创 2021-01-07 21:45:24 · 608 阅读 · 2 评论 -
Nginx的动态代理,负载均衡,动静分离的简单使用
nginx一 Nginx介绍1.1 为什么要学习Nginx问题1: 客户端到底要将请求发送那台服务器问题2:所有客户端的请求都发送给了服务器1问题3:客户端发送的请求可能是申请静态资源的,也有可能是访问动态资源的1.2 Nginx介绍特点:1.稳定性极强,7*24小时不间断运行2.Nginx提供了非常的配置实例3.占用内存小,并发能力强二 Nginx安装2.1 安装version: '3.1'services: nginx: restart: always原创 2020-09-23 13:17:48 · 918 阅读 · 5 评论 -
分布式事务解决方案之 Alibaba Seata1.3.0 seata-server 1.3.0
分布式事务解决方案之 Alibaba Seata1.3.0一 Seata 是什么?Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。详情查看官方文档https://seata.io/zh-cn/docs/overview/what-is-seata.html术语TC (Transaction Coordinator) - 事务协调者维护全局和分支事务的状原创 2020-09-22 11:45:07 · 577 阅读 · 2 评论 -
ElasticSearch,docker 安装ElasticSearch,Springboot 使用 ElasticSearch JavaAPI
什么是 ElasticSearch ?数据库查询存在的问题:性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低关键字模糊查询比较麻烦ElasticSearch概念• ElasticSearch是一个基于Lucene的搜索服务器• 是一个分布式、高扩展、高实时的搜索与数据分析引擎• 基于RESTful web接口• Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎• 官网:https://www.elas原创 2020-09-06 09:43:43 · 986 阅读 · 2 评论 -
RabbitMQ,Springboot整合RabbitMQ实现 消息可靠性投递,Consumer ACK,TTL,死信队列,使用TTL+死信队列=延迟队列
搭建SpringBoot项目,用于演示springboot版本 <!-- spring boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId>原创 2020-09-04 20:03:39 · 1229 阅读 · 0 评论 -
RabbitMQ,RabbitMQ 的工作模式,Spring 整合 RabbitMQ,Springboot 整合RabbitMQ
什么是RabbitMQ1.1 MQ概述MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。⚫ MQ,消息队列,存储消息的中间件⚫ 分布式系统通信两种方式:直接远程调用 和 借助第三方 完成间接通信⚫ 发送方称为生产者,接收方称为消费者1.2 MQ 的优势和劣势优势应用解耦:提供了程序的可扩展性 系统的耦合性越高,容错性就越低,可维护性就越低。异步提速:提高了系统的性能 提升用户体验和系统吞吐量(单位时间内处理请求的数原创 2020-09-01 23:35:08 · 359 阅读 · 0 评论 -
SpringCloud微服务架构,Config 分布式配置中心,Bus 消息总线, Stream 消息驱动,Sleuth+Zipkin 链路追踪
Config分布式配置中心Config 概述概述• Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护。• 好处:• 集中管理配置文件• 不同环境不同配置,动态化的配置更新• 配置信息改变时,不需要重启即可更新配置信息到服务Bus 消息总线Bus 概述• Spring Cloud Bus 是用轻量的消息中间件将分布式的节点连接起来,可以用于广播配置文件的更改或者服务的监控管理。关键的思想就是,消息总线可以为微服务做监控,也可以实现应用程序之间相通信。原创 2020-08-31 22:31:14 · 588 阅读 · 0 评论 -
SpringCloud微服务架构之,Hystrix 熔断器,Gateway 网关
Hystrix 概述Hystix 是 Netflix 开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败(雪崩)。pom依耐 <!-- hystrix --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-star原创 2020-08-29 22:52:41 · 1303 阅读 · 1 评论 -
SpringCloud微服务架构,Spring Cloud 服务治理(Eureka,Consul,Nacos),Ribbon 客户端负载均衡,RestTemplate与OpenFeign实现远程调用
什么是SpringCloud微服务架构• "微服务”一词源于 Martin Fowler的名为 Microservices的博文,可以在他的官方博客上找到http://martinfowler.com/articles/microservices.html• 微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间一般通过 HTTP 的 RESTfuLAPI 进行通信协作。• 被拆分成的每一个小型服务都围绕着系统中的某一项或原创 2020-08-28 23:16:02 · 447 阅读 · 0 评论 -
浅谈:Spring Boot原理分析,切换内置web服务器,SpringBoot监听项目(使用springboot-admin),将springboot的项目打成war包
浅谈:Spring Boot原理分析Condition⚫ 自定义条件:① 定义条件类:自定义类实现Condition接口,重写 matches 方法,在 matches 方法中进行逻辑判断,返回boolean值 。 matches 方法两个参数:• context:上下文对象,可以获取属性值,获取类加载器,获取BeanFactory等。• metadata:元数据对象,用于获取注解属性。② 判断条件: 在初始化Bean时,使用 @Conditional(条件类.class)注解⚫ Sprin原创 2020-08-25 20:20:09 · 382 阅读 · 0 评论 -
浅谈SpringBoot的基本概念与简单的使用与yml文件的基本使用, 整合Redis,整合MyBatis
SpringBoot什么是SpringBootSpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。2014 年 4 月,Spring Boot 1.0.0 发布。Spring的顶级项目之一(https://spring.io)。SpringBoot 功能1) 自动配置Spring Boot的自动配置是一个运行时(更准确地说,是应原创 2020-08-25 08:29:09 · 377 阅读 · 0 评论 -
浅谈Java锁,与JUC的常用类,集合安全类,常用辅助类,读写锁,阻塞队列,线程池,ForkJoin,volatile,单例模式不安全,CAS,各种锁
浅谈JUC的常用类JUC就是java.util.concurrent…包下的类回顾多线程Java默认有几个线程? 2 个 mian、GCJava 真的可以开启线程吗? 开不了,点击源码得知:本地方法,底层的C++ ,Java 无法直接操作硬件线程有几个状态public enum State { NEW,//新生 RUNNABLE,//运行 BLOCKED,//阻塞 WAITING,//等待,死等原创 2020-08-15 12:41:22 · 370 阅读 · 0 评论 -
浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除
浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除MyBatis-Plus官方文档连接什么是MyBatis-Plus请点击上面官方文档查看代码演示:代码注释为功能详细解释数据库创建maven项目,基于springboot,mvc请参考官网pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xml原创 2020-08-11 22:15:51 · 376 阅读 · 0 评论 -
使用Freemarker来页面静态化,与Spring整合使用
页面静态化介绍页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页,这样用户在访问网页时,服务器直接给用户响应静态html页面,没有了动态查询数据库的过程。那么这些静态HTML页面还需要我们自己去编写吗?其实并不需要,我们可以通过专门的页面静态化技术帮我们生成所需的静态HTML页面,例如:Freemarker、thymeleaf等。FreeMarker什么是FreeMarker?实际上用程序语言编写的程序就是模板。 F原创 2020-08-10 17:12:38 · 284 阅读 · 0 评论 -
SpringSecurity的简单使用使用案列说明
SpringSecuritySpring Security是 Spring提供的安全认证服务的框架。 使用Spring Security可以帮助我们来简化认证和授权的过程。官网:https://spring.io/projects/spring-security搭建maven项目pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xml原创 2020-08-10 13:43:14 · 325 阅读 · 0 评论 -
Spring整合定时任务组件Quartz的简单使用
Quartz介绍Quartz是Job scheduling(作业调度)领域的一个开源项目,Quartz既可以单独使用也可以跟spring框架整合使用,在实际开发中一般会使用后者。使用Quartz可以开发一个或者多个定时任务,每个定时任务可以单独指定执行的时间,例如每隔1小时执行一次、每个月第一天上午10点执行一次、每个月最后一天下午5点执行一次等。官网:http://www.quartz-scheduler.org/简单使用(使用步奏与解释在代码注释中)搭建maven工程pom.xml&原创 2020-08-10 11:19:37 · 266 阅读 · 0 评论 -
Zookeeper常用命令操作,javaAPI操作之Curator框架 API
浅谈:ZookeeperZookeeper 概念• Zookeeper 是 Apache Hadoop 项目下的一个子项目,是一个树形目录服务。• Zookeeper 翻译过来就是 动物园管理员,他是用来管 Hadoop(大象)、Hive(蜜蜂)、Pig(小 猪)的管理员。简称zk• Zookeeper 是一个分布式的、开源的分布式应用程序的协调服务。• Zookeeper 提供的主要功能包括:• 配置管理:用于管理服务信息,ip,端口,提供服务功能接口等,• 分布式锁:用于控制服务资源,锁住原创 2020-07-27 22:16:56 · 338 阅读 · 0 评论 -
浅谈Git的基本工作流程与简单的Git命令
浅谈Git的基本工作流程与简单的Git命令什么是GIT?定义:是一个开源的分布式版本控制工具功能:代码备份版本控制协同开放代码追溯场景:团队协同开放项目Git仓库工作流程Git常用命令版本的回滚git reset --hard 分支ID 回滚到指定的版本git reset --hard^ 回滚到上一个版本git reset --hard~2 回滚2个版本revert指令git mergegit addgit commit分支的原创 2020-07-24 18:45:41 · 127 阅读 · 0 评论 -
SSM整合之纯注解方式,注解实现事务,异常,与拦截器
SSM整合之纯注解方式Spring,SpringMVC,Mybatis使用纯注解的方式,整合ssm,sql语句与数据表在上一篇SSM整合之XML方式中有,创建maven项目删除web.xml文件jdbc.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://192.168.93.132:3306/testjdbc.username=rootjdbc.password=root配置类ServletConta原创 2020-07-23 13:15:24 · 688 阅读 · 0 评论 -
spring控制事务:声明式事务(XML)事务的传播行为
声明式事务(XML)使用spring提供的专用于mybatis的事务管理器在xml中声明式事务声明式事务需要使用到的标签tx配置进行<tx 标签的使用需要倒入命名空间xmlns:tx="http://www.springframework.org/schema/tx" http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd< tx:attribu原创 2020-07-18 13:09:07 · 310 阅读 · 0 评论 -
spring中AOP动态代理的两种方式
AOP动态代理的两种方式Spring AOP动态代理的方式(spring的AOP默认是JDK Proxy)浅谈这两种动态代理JDK的动态代理,需要有实现接口动态代理——JDK Proxy⚫ JDKProxy动态代理是针对对象做代理,要求原始对象具有接口实现,并对接口方法进行增强在aop动态代理的时候发现这个类是实现接口的类,就选择JDK的动态代理,从ioc中获取这个动态代理的实现类就需要按照接口.class去获取CGLIB动态代理方式,继承方式动态代理——CGLIB⚫ CGLIB(Code原创 2020-07-17 20:16:19 · 1156 阅读 · 0 评论 -
spring的AOP配置之@注解方式
AOP配置(注解)spring的AOP概念在spring的AOP配置之XML方式这骗博客中详细介绍了,这篇博客就直接开始介绍AOP配置需要那些注解AOP注解详解@Aspect 标志为一个切面类⚫ 名称:@Aspect⚫ 类型:注解⚫ 位置:类定义上方⚫ 作用:设置当前类为切面类⚫ 格式:@Aspectpublic class AopAdvice {}⚫ 说明:一个beans标签中可以配置多个aop:config标签@Pointcut 使用当前方法名作为切入点引用名称⚫ 名称:原创 2020-07-17 18:34:51 · 576 阅读 · 0 评论 -
spring的AOP配置之XML方式
AOP概念⚫ AOP(Aspect Oriented Programing)面向切面编程,一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构⚫ AOP弥补了OOP的不足,基于OOP基础之上进行横向开发◆ OOP规定程序开发以类为主体模型,一切围绕对象进行,完成某个任务先构建模型◆ AOP程序开发主要关注基于OOP开发中的共性功能,一切围绕共性功能进行,完成某个任务先构建可能遇到的所有共性功能(当所有功能都开发出来也就没有共性与非共性之分)⚫ “AOP联盟”AOP作用⚫ 伴随着AOP时原创 2020-07-17 13:47:06 · 256 阅读 · 0 评论