自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 收藏
  • 关注

原创 【Redis】Redis 生产问题。如何确保缓存和数据库数据的一致性? 常见的缓存更新策略?

可以在写入数据库数据时,使用布隆过滤器做个标记,然后在用户请求到来时,业务线程确认缓存失效后,可以通过查询布隆过滤器快速判断数据是否存在,如果不存在,就不用通过查询数据库来判断数据是否存在。当我们在写入数据库数据时,在布隆过滤器里做个标记,这样下次查询数据是否在数据库时,只需要查询布隆过滤器,如果查询到数据没有被标记,说明不在数据库中。缓存接收到消息后,更新对应的数据,从而保持一致性。,所以,查询布隆过滤器说数据存在,并不一定证明数据库中存在这个数据,但是查询到数据不存在,数据库中一定就不存在这个数据。

2024-03-30 20:58:10 2080

原创 【Redis】Redis 内存管理,Redis事务,bigkey和hotkey

Redis 中的事务是一组命令的集合,是 Redis 的最小执行单位。它可以保证一次执行多个命令,每个事务是一个单独的隔离操作,事务中的所有命令都会序列化、按顺序地执行。服务端在执行事务的过程中,不会被其他客户端发送来的命令请求打断。它的原理是先将属于一个事务的命令发送给 Redis,然后依次执行这些命令。Redis 事务的注意点?需要注意的点有:Redis 事务是不支持回滚的,不像 MySQL 的事务一样,要么都执行要么都不执行;

2024-03-28 21:36:26 1276

原创 【Redis】Redis 的线程模型,为什么 Redis 要把所有数据放到内存?Redis 的同步机制,Redis 持久化,RDB 持久化方式

其次现在硬件越来越便宜的情况下,Redis 的使用也被应用得越来越多,使得它拥有很大的优势。多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将 socket 产生的事件放入队列中排队,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理。RDB 就是快照/内存快照,RDB持久化是把当前进程数据生成快照保存到磁盘上的过程,由于是某一时刻的快照,那么快照中的值要早于或者等于内存中的值。多个 socket。

2024-03-27 20:41:34 706

原创 【Redis】Redis 介绍Redis 为什么这么快?Redis数据结构Redis 和Memcache区别 ?为何Redis单线程效率也高?

Redis 是一个开源(BSD 许可)、基于内存、支持多种数据结构的存储系统,可以作为数据库、缓存和消息中间件。它支持的数据结构有字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等,除此之外还支持 bitmaps、hyperloglogs 和地理空间(geospatial )索引半径查询等功能。

2024-03-24 19:02:09 1741

原创 【并发编程】AQSSemaphore(信号量) CountDownLatch (倒计时器) CyclicBarrier(循环栅栏) ThreadLocal

它的原理是通过一个计数器来实现的,计数器的初始值可以设置为任意正整数,每当一个线程完成了一定的任务,就将计数器的值减1,当计数器的值达到零时,表示所有线程都已经完成任务,等待在CountDownLatch上的线程将被唤醒。调用wait()方法的原因通常是,调用线程希望某个特殊的状态(或变量)被设置之后再继续执行。它的原理是通过一个计数器和一个屏障点来实现的,计数器的初始值可以设置为任意正整数,当线程到达屏障点时,将计数器的值减1,当计数器的值达到零时,所有等待在CyclicBarrier上的线程将被唤醒。

2024-03-24 18:59:35 831

原创 【并发编程】简述对线程池的理解?线程池的原理?线程池处理任务的流程?线程池的拒绝策略?创建方式?线程池中submit() 和 execute()区别?线程池常用阻塞队列?

的内部元素并不是按照放入的时间排序,而是会按照延迟的时间长短对任务进行排序,内部采用的是“堆”的数据结构,可以保证每次出队的任务都是当前队列中执行时间最靠前的。若多余一个任务被提交到该线程池,任务会被保存在一个任务队列中,待线程空闲,按先入先出的顺序执行队列中的任务。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。的时候,如果这时没有新的任务提交,核心线程外的线程不会立即销毁,而是会等待,直到等待的时间超过了。

2024-03-23 21:12:14 791

原创 【并发编程】锁相关公平锁和非公平锁?可重入锁锁的升级乐观锁和悲观锁版本号机制CAS 算法乐观锁有哪些问题?

当一个线程获取轻量级锁时,JVM会将锁对象的Mark Word复制一份到线程的栈帧中,并将锁对象的Mark Word指向线程的栈帧。如果一个变量 V 初次读取的时候是 A 值,并且在准备赋值的时候检查到它仍然是 A 值,这种情况并不能说明它的值没有被其他线程修改过,因为在这段时间它的值可能被改为其他值,然后又改回 A,那 CAS 操作就会误认为它从来没有被修改过。比如一个线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果是不可重入锁的话,就会造成死锁。

2024-03-23 21:11:27 905

原创 【并发编程】notify()和notifyAll()区别?sleep()和wait() 区别?volatile关键字,synchronized 关键字如何使用 synchronized?

正确的场景应该是 WaitSet中等待的是相同的条件,唤醒任一个都能正确处理接下来的事项,如果唤醒的线程无法正确处理,务必确保继续notify()下一个线程,并且自身需要重新回到WaitSet中。wait() 应配合while循环使用,不应使用if,务必在wait()调用前后都检查条件,如果不满足,必须调用notify()唤醒另外的线程来处理,自己继续wait()直至条件满足再往下执行。这段过程中,线程不会释放对象锁。当调用wait()方法的时候,线程会释放对象锁,进入该对象的等待池,只有针对此对象。

2024-03-22 17:22:01 679

原创 【并发编程】并发并行,同步异步,线程安全,线程的几种状态并发三要素?创建线程的方法?线程间的通信方式?进程的通信方式?多线程的上下文切换?CAS 算法

这种方式下,多个线程可以共享一个target对象,所以非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU、代码和数据分开,形成清晰的模型,较好的体现了面向对象的思想。上下文切换是指操作系统在执行多个线程时,将当前线程的上下文(包括寄存器状态、程序计数器、栈指针等)保存起来,然后切换到另一个线程的上下文,使得另一个线程可以继续执行。阻塞操作:当一个线程执行了阻塞操作(如等待I/O、等待锁、等待信号量等)时,操作系统会将该线程的上下文保存起来,并切换到另一个可执行的线程。

2024-03-22 17:19:53 1290 1

原创 【JVM】垃圾收集算法,垃圾收集器,调优,如何判断类是无用的类?对象一定分配在堆中吗?了解逃逸分析技术吗?

强引用如果一个对象具有强引用,垃圾回收器绝不会回收它。当内存空间不足,Java 虚拟机宁愿抛出OutOfMemoryError 错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。软引用(常用)如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。弱引用在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,

2024-03-21 18:32:43 1161

原创 【JVM】为对象分配内存的方式,死亡对象判断方法

的对象作为起点,从这些节点开始向下搜索,节点所走过的路径叫做引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的,需要被回收。把内存分配按照线程划分在不同的空间中进行,每个线程在Java堆中预先分配一小块内存,这就是TLAB(本地线程分配缓存)。,中间放着一个指针作为分界点的指示器,需要为新对象分配内存时指针就向空闲区移动到对应位置,这种分配方式就是 指针碰撞。如果Java堆内存中的内存并不是规整的,已用的内存和空闲内存相互交错,指针碰撞就不能用了,当类加载检查通过后,

2024-03-20 12:59:48 605

原创 【JVM】jvm内存模型,java类加载机制,类加载器,双亲委派模式,堆和栈的区别?对象分配规则?触发FullGC的情况?java对象创建过程?Java的对象结构?Java程序的执

但不是所有代码都是解释执行的,JVM 对此做了优化,比如,以Hotspot 虚拟机来说,它本身提供了 JIT(Just In Time)也就是我们通常所说的动态编译器,它能够在运行时将热点代码编译为机器码,这个时候字节码就变成了编译执行。动态判断对象的年龄。如果Survivor区中相同年龄的所有对象大小的总和大于Survivor空间的一半,那么年龄大于等于该年龄的对象可以直接进入老年代。遇到new指令,检查这个指令的参数能否在常量池定位到符号引用,并检查是否加载、解析、初始化过,如无,先进行类的加载。

2024-03-19 17:18:13 762

原创 【操作系统】线程、程序、进程死锁的必要条件?如何避免死锁?死锁的预防,死锁的避免(银行家),死锁的检测进程-资源分配图,死锁检测步骤,死锁的解除

是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。线程是进程划分成的更小的运行单位,也叫轻量级进程,一个进程在执行过程中可以产生多个线程。线程和进程最大的不同是各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能相互影响。线程执行开销小,但不利于资源的管理和保护;而进程正相反。

2024-03-18 19:23:08 748 1

原创 【Java】十大排序

它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。希尔排序(Shell Sort)的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录 “基本有序” 时,再对全体记录进行依次直接插入排序。希尔排序的增量序列的选择与证明是个数学难题,我们选择的这个增量序列是比较常用的,也是希尔建议的增量,称为希尔增量,但其实这个增量序列不是最优的。作为一种线性时间复杂度的排序,

2024-03-17 14:49:59 1593

原创 【Java】List, Set, Queue, Map 区别?

这样就是加大哈希值低位的随机性,使得分布更均匀,从而提高对应数组存储下标位置的随机性&均匀性,最终减少Hash冲突,两次就够了,已经达到了高位低位同时参与运算的目的;

2024-03-16 19:26:28 1305

原创 【Java】Java中的IO流概念Java 中 IO 流分为几种?BIO、NIO、AIO,Object 有哪些方法?获取类Class对象的方式?序列化和反序列化?

AIO 是异步IO的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出CloneNotSupportedException 异常,深拷贝也需要实现 Cloneable,如果其成员变量为引用类型的也需要实现 Cloneable,然后重写 clone 方法。该方法使用频率非常高。中的某个线程(同步队列中的线程是给抢占 CPU 的线程,等待队列中的线程指的是等待唤醒的线程)。

2024-03-15 18:11:53 1335

原创 【Sql】mysql数据库的性能优化,大表优化,以及什么是视图?drop、delete与truncate的区别?varchar 与 char 的区别?主键与索引区别?

视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

2024-03-14 14:14:17 812

原创 【Sql】MVCC有关问题,以及锁,日志和主从复制原理

InnoDB 一定会有一个 主键,二级索引 查找的时候,也是通过找到对应的主键,再找对应的数据行。MySQL 中锁定粒度最大的一种锁(全局锁除外),是针对非索引字段加的锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。定义:说白了Read View就是事务进行快照读操作的时候生产的读视图,在该事务执行的快照读的那一刻,会生成数据库系统当前的一个快照,记录并维护系统当前活跃事务的ID(当每个事务开启时,都会被分配一个ID, 这个ID是递增的,所以最新的事务,ID值越大)

2024-03-13 19:18:54 1098

原创 【Mysql】事务与索引

多条sql语句,要么全部成功,要么全部失败。

2024-03-12 21:26:49 994

原创 【Sql】数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别

例如,如果我们有一个“部门”表和一个“员工”表,其中“部门”表有一个主键“部门编号”,“员工”表有一个外键“部门编号”和一个非主属性“工资”。但是,如果存在一个“工资等级”表,其中有一个外键“部门编号”和一个非主属性“工资标准”,那么这个“工资标准”就间接依赖于“部门编号”,不符合第三范式的要求。因此,主键不应该过大,因为主键太大,其他索引也都会很大。例如,如果我们有一个“订单”表和一个“订单详情”表,其中“订单”表有一个主键“订单编号”,而“订单详情”表有一个外键“订单编号”和一个非主属性“商品数量”。

2024-03-11 15:16:39 1204

原创 【Http】三握四挥

HTTP 本身就是一个协议,是从 Web 服务器传输超文本到本地浏览器的传送协议。Socket 是 TCP/IP 网络的 API ,其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在Socket 接口后面。对用户来说,一组简单的接口就是全部,让 Socket 去组织数据,以符合指定的协议。

2024-03-10 18:41:00 1770

原创 【Http】HTTP缓存强制缓存和协商缓存,TCP和UDP区别TCP 如何保证可靠传输?TCP怎么实现流量控制?TCP 怎么实现拥塞控制?HTTP与TCP/IP的关系?

当资源过期了,发现响应头中具有 Last-Modified 声明,则再次发起请求的时候带上 Last-Modified 的时间,服务器收到请求后发现有 If-Modified-Since 则与被请求资源的最后修改时间进行对比(Last-Modified),如果最后修改时间较新(大),说明资源又被改过,则返回最新资源,HTTP 200 OK;:TCP 为了保证不发生丢包,就给每个包一个序列号,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据就可以实现数据包去重。

2024-03-09 11:50:41 808

原创 【Http】HTTP vs HTTPS区别,HTTP 协议通信过程,SSL/TLS对称加密,HTTP 1.0 、1.1、2.0HTTP长连接与短连接操作步骤

这其实是一种懒政,有状态协议会更加复杂,需要维护状态(历史信息),而且如果客户或服务器失效,会产生状态的不一致,解决这种不一致的代价更高。HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。使用 SSL/TLS 进行通信的双方需要使用非对称加密方案来通信,但是非对称加密设计了较为复杂的数学算法,在实际通信过程中,计算的代价较高,效率太低,因此,SSL/TLS 实际。减少连接建立和断开的开销:长连接在建立后可以持续使用,避免了每次请求都需要建立和断开连接的开销,减少了网络通信的延迟和资源消耗。

2024-03-08 19:30:24 1392

原创 【Http】OSI 和 TCP/IP,OSI,TCP/IP为什么网络要分层?

问题化小 : 分层可以将复杂的网络间题分解为许多比较小的、界线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。 这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义。

2024-03-07 17:37:25 674

原创 【Java】关于ZooKeeper的原理以及一致性问题,协议和算法和ZooKeeper的理论知识和应用 场景

ZooKeeper由Yahoo开发,后来捐赠给了Apache,现已成为Apache顶级项目。ZooKeeper是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于Paxos算法的ZAB协议完成的。其主要功能包括:配置维护、分布式同步、集群管理、分布式事务等。简单来说,ZooKeeper是一个分布式协调服务框架。分布式?协调服务?这啥玩意?🤔🤔其实解释到分布式这个概念的时候,我发现有些同学并不是能把分布式和集群这两个概念很好的理解透。

2024-03-06 18:32:00 1143

原创 【Java】CAP理论以及它的实际应用案例

CAP也就是Consistency(一致性)Availability(可用性)Partition Tolerance(分区容错性)这三个单词首字母组合。CAP 理论的提出者布鲁尔在提出 CAP 猜想的时候,并没有详细定义三个单词的明确定义。因此,对于 CAP 的民间解读有很多,一般比较被大家推荐的是下面 👇 这种版本的解。一致性(Consistence): 所有节点访问同一份最新的数据副本可用性(Availability): 非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)。

2024-03-05 14:14:36 1349

原创 【Java】Base理论的核心思想和理论三要素

BASE是Basically Available(基本可用)Soft-state(软状态)和Eventually Consistent(最终一致性)三个短语的缩写。BASE 理论是对 CAP 中一致性 C 和可用性 A 权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于 CAP 定理逐步演化而来的,它大大降低了我们对系统的要求。ACID 是数据库事务完整性的理论,CAP 是分布式系统设计理论,BASE 是 CAP 理论中 AP 方案的延伸。

2024-03-04 20:58:42 1062

原创 【Java】AQS_原理,什么是AQS 及其应用CountDownLatch (倒计时器)和CyclicBarrier(循环栅栏)

AQS 的全称为(AbstractQueuedSynchronizer),这个类在 java.util.concurrent.locks 包下面。AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 ReentrantLock,Semaphore,其他的诸如 ReentrantReadWriteLock,SynchronousQueue,FutureTask(jdk1.7) 等等皆是基于 AQS 的。

2024-03-03 15:56:50 1207

原创 【SpringBean】bean的作用域和bean的生命周期

在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean。简单地讲,bean 就是由 IOC 容器初始化、装配及管理的对象,除此之外,bean 就与应用程序中的其他对象没有什么区别了。而 bean 的定义以及 bean 相互间的依赖关系将通过配置元数据来描述。Spring中的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢?

2024-03-02 19:58:07 864

原创 【Java】 一文搞懂 RabbitMQ 的重要概念以及安装

这部分参考了 《RabbitMQ实战指南》这本书的第 1 章和第 2 章。RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息。RabbitMQ 发展到今天,被越来越多的人认可,这和它在易用性、扩展性、可靠性和高可用性等方面的卓著表现是分不开的。RabbitMQ使用一些机制来保证消息的可靠性,如持久化、传输确认及发布确认等。

2024-03-01 18:25:26 1182

原创 【ZooKeeper 】安装和使用,以及java客户端

这篇文章简单给演示一下 ZooKeeper 常见命令的使用以及 ZooKeeper Java客户端 Curator 的基本使用。介绍到的内容都是最基本的操作,能满足日常工作的基本需要。如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!

2024-02-29 18:14:18 1157

原创 【Dubbo】什么是Dubbo?它的架构和负载均衡策略,以及zookeeper宕机与dubbo直连的情况

Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo 是由阿里开源,后来加入了 Apache。正式由于 Dubbo 的出现,才使得越来越多的公司开始使用以及接受分布式架构。

2024-02-28 14:12:03 1044

原创 【Java 并发】基础常见面试题总结

进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。如下图所示,在 windows 中通过查看任务管理器的方式,我们就可以清楚看到 window 当前运行的进程(.exe 文件的运行)。

2024-02-27 16:44:12 629

原创 【Java】线程池总结——干货满满!!!

Executor 框架是 Java5 之后引进的,在 Java 5 之后,通过 Executor 来启动线程比使用 Thread 的 start 方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助于避免 this 逃逸问题。补充:this 逃逸是指在构造函数返回之前其他线程就持有该对象的引用. 调用尚未构造完全的对象的方法可能引发令人疑惑的错误。

2024-02-26 15:19:47 1006

原创 【Node.js】自动生成 API 文档

如何在Node.js项目中使用 Swagger 来自动生成 API接口文档,使用生成方式有很多种。本文基于快速实现。

2024-02-25 18:43:37 1181

原创 【Spring】事务总结

事务是逻辑上的一组操作,要么都执行,要么都不执行。Guide 哥:大家应该都能背上面这句话了,下面我结合我们日常的真实开发来谈一谈。我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。事务能否生效数据库引擎是否支持事务是关键。比如常用的 MySQL 数据库默认使用支持事务的innodb引擎。但是,如果把数据库引擎变为myisam,那么程序也就不再支持事务了!

2024-02-25 16:25:08 1060

原创 【Java】基础——反射(Reflection)基础

本篇对反射基础进行了讲解。什么是Java语言的反射机制?反射都提供了什么功能?反射有什么作用?反射如何获取Class对象?反射如何创建类对象?反射如何获取类的成员变量和类的成员方法?

2024-02-24 15:16:44 756

原创 【SpringBoot】Spring常用注解总结

Hibernate Validator 是 Hibernate 团队最初的数据校验框架,Hibernate Validator 4.x 是 Bean Validation 1.0(JSR 303)的参考实现,Hibernate Validator 5.x 是 Bean Validation 1.1(JSR 349)的参考实现,目前最新版的 Hibernate Validator 6.x 是 Bean Validation 2.0(JSR 380)的参考实现。所以,自己索性花了大概 两天时间简单总结一下了。

2024-02-24 10:33:26 1432

原创 【JAVA】中的静态代理、动态代理以及CGLIB动态代理

代理模式是java中最常用的设计模式之一,尤其是在spring框架中广泛应用。对于java的代理模式,一般可分为:静态代理、动态代理、以及CGLIB实现动态代理。对于上述三种代理模式,分别进行说明。

2024-02-23 18:44:58 381

原创 【Spring】常见问题总结

Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性。。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是:核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。比如:Core Container 中的 Core 组件是Spring 所有组件的核心,Beans 组件和 Context 组件是实现IOC和依赖注入的基础,AOP组件用来实现面向切面编程。

2024-02-23 16:03:10 1357

空空如也

空空如也

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

TA关注的人

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