自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring脑图-动态代理-静态代理-通俗易懂理解

动态代理(而在动态代理中,你可能不确定哪个代购人员会帮你购物,但你希望有人能够替你完成购物任务。在需要购物时,你会根据代购人员的可用性和能力来选择合适的人选。不同的代购人员可能有不同的购物方式和策略,以满足你的需求)静态代理(想象你委托一个特定的代购人员帮你购买所有的商品。无论你需要什么东西,你都会联系这个特定的代购人员,他会按照你预先告知的清单和方式去购买商品。)

2024-02-23 15:55:21 381

原创 `@Bean`:方法的返回值会被用作一个 Bean 实例。Spring 会使用方法返回的对象来创建一个 Bean,并将其加入到 Spring 应用程序上下文中。

3. **Bean 后处理**:Spring 会对 Bean 实例进行后处理,这可能包括应用 `@Autowired` 注解进行依赖注入、检查 `@Lazy` 注解、处理 `@PostConstruct` 和 `@PreDestroy` 注解等。5. **应用作用域**:如果 `@Bean` 注解指定了作用域(如 `singleton`、`prototype`、`request` 等),Spring 会根据指定的作用域来管理 Bean 的生命周期。

2024-09-01 11:51:06 302

原创 AOP和拦截器和过滤器相似,那它们之间有什么互相不可替代的吗

**请求/响应生命周期管理**:过滤器可以在请求的生命周期中早于或晚于业务逻辑执行,这在某些场景下是必须的,例如在请求处理之前进行安全检查。- **切面语言**:AOP 提供了一种特殊的语言来定义切面,这允许更复杂的逻辑,如基于方法调用的参数或返回值的条件逻辑。- **与业务逻辑的解耦**:AOP 允许将横切关注点与业务逻辑完全解耦,这在某些复杂的业务场景中是必要的。- **拦截器链**:拦截器可以形成拦截器链,允许在多个拦截器之间传递控制权,这在处理复杂的流程时非常有用。### 互相不可替代的场景。

2024-08-29 10:39:00 238

原创 位图和布隆过滤器

位图和布隆过滤器的使用场景和特性有所不同:位图(Bitmap):布隆过滤器(Bloom Filter):总结来说:对于负数的处理,如果需要在位图中使用,可以将其转换为非负整数(例如,通过取其绝对值或添加一个偏移量)。然而,这种转换需要在添加和查询时保持一致,以确保数据的准确性。对于布隆过滤器,由于它使用哈希函数,负数和其他类型的数据可以通过哈希函数统一处理,然后映射到位数组中。布隆过滤器(Bloom Filter)和位图(Bitmap)通常不被称为“算法”,而是数据结构。数据结构是计算机科学中用来组织、管理

2024-08-27 15:40:12 845

原创 方法区(Method Area)和元空间(Metaspace)

元空间使用的是本地内存(即非JVM内存),不再受JVM堆大小限制,也不再有固定大小,从而减少了内存溢出的风险。元空间(Metaspace)使用的是本地内存,这通常指的是操作系统的内存空间,而不是JVM堆内存。本地内存通常指的是直接由操作系统管理的内存,它不受JVM堆内存大小的限制。元空间使用本地内存来存储类的元数据,而不是JVM堆内存。类的元数据:包括类的版本信息、字段、方法、代码等。常量池:存储编译期生成的各种字面量和符号引用。元空间(Metaspace)的引入。静态变量和常量池的存储位置。

2024-08-26 14:53:03 642

原创 MySQL数据库

在标准的InnoDB存储引擎中,读操作通常不会阻塞写操作,但写操作会阻塞读操作。但是,如果写操作涉及到的行已经被其他事务加上了排他锁,那么新的读操作将不得不等待这个锁被释放。此外,如果写操作需要修改的数据行已经被其他事务加上了共享锁,写操作同样需要等待这些共享锁被释放。总的来说,虽然InnoDB的MVCC机制可以减少读写操作的冲突,但在某些情况下,写锁仍然会阻碍读操作,特别是当涉及到同一数据行的锁竞争时。:当一个事务对数据行加上排他锁时,其他事务既不能读取也不能修改这行数据,直到排他锁被释放。

2024-08-26 14:39:41 175

原创 JPA (Java Persistence API) 就是对象和数据库表进行映射关联的工具

JPA (Java Persistence API) 是一种 Java 对象关系映射(ORM)标准,它允许开发者通过 Java 面向对象编程的方式来操作数据库,而无需直接编写 SQL 语句。是 Java Persistence API (JPA) 中的一个关联映射注解,它用于一对多的关系,即一个实体可以拥有多条属于另一个实体的数据。通常用于表示一个“拥有者”类(也叫父实体)与一组“被拥有者”类(子实体)之间的联系。例如,在学生-课程的关系中,一个学生可以有多个课程,这时可以在学生实体上添加。

2024-08-26 14:18:00 118

原创 springboot 集成 aop,ProceedingJoinPoint 对象基础用法-ProceedingJoinPoint和JoinPoint的主要区别

这个proceed方法在环绕通知中起到了重要的作用,用于启动目标方法的执行。‌ProceedingJoinPoint‌具有一个特殊的方法proceed(),这是它的核心功能,用于继续执行连接点。总的来说,ProceedingJoinPoint和JoinPoint都是Spring AOP中的重要概念,前者主要用于控制方法的执行和在环绕通知中获取连接点信息,而后者主要用于记录运行数据和获取连接点的基本信息‌。它主要用于记录运行的数据,通过它可以获取连接点的信息,如方法名、参数等,但无法控制方法的执行。

2024-08-23 21:44:59 805

原创 Caffeine 和 Map(如 HashMap、TreeMap)区别

总的来说,Caffeine 作为缓存库,在查询效率上与 HashMap 相当,但在缓存策略和高并发处理上提供了更多优势。Caffeine: 通常存储在堆内存中,作为一个缓存库,其底层实现基于 ConcurrentHashMap ,特别是在 JDK 8 之后, ConcurrentHashMap 引入了红黑树来解决哈希冲突问题,提高了性能。HashMap: 同样存储在堆内存中,基于数组和链表(或红黑树,在 JDK 8 之后,当链表长度超过一定阈值时会转换成红黑树)实现。提供了对数时间复杂度的查询效率。

2024-08-23 21:36:26 282

原创 redolog和binlog和relaylog和undolog的区别

2. **功能目的不同**:Redo log主要用于崩溃恢复,保证事务的ACID特性中的持久性(D),通过记录数据页的物理修改操作来实现数据的完整性保护;6. **事务提交时的写入顺序**:为了保证数据的一致性,MySQL采用了两阶段提交过程,理论上是先写Redo log,再写Binlog,两个日志都提交成功(刷入磁盘),事务才算真正的完成。1. **生成层级不同**:Redo log是InnoDB存储引擎特有的日志系统,而Binlog是MySQL Server层记录的日志,所有存储引擎都可以使用。

2024-08-23 19:37:51 561

原创 @Pointcut的@annotation()和execution/@Pointcut(value = “@annotation()||execution(* com.XX.XX.mapper.*.*

@Pointcut(value = "@annotation()||execution(* com.XX.XX.mapper.*.*CC_(..))")

2024-08-23 19:13:35 211

原创 整理自用Nginx

Nginx主要用于处理HTTP请求、负载均衡、反向代理和静态文件服务,而网关可以是各种类型,如API网关、数据库网关等,用于连接不同的网络或系统,提供统一的访问点。系统的门口有一个管理者(Gateway),他要确保外面来的任务(外部请求)分配给这些工作站时,每个工作站都有适量的任务,不会有一个工作站负载太重,而另一个工作站很轻松。现在,想象你有一家酒店,每个楼层都有不同的服务。简而言之,微服务内部负载均衡关心的是微服务内部工作的平衡,而整个微服务系统的负载均衡关心的是外部请求如何均匀地分配给不同的微服务。

2024-03-12 13:24:38 210

原创 redis常用迭代方法zscan,sscan,hscan,scan

redisClient.sscan和redisClient.zscan都是Redis的命令,用于扫描集合或有序集合中的元素。 区别在于:sscan用于扫描集合中的元素,集合是无序的,所以sscan返回的元素也是无序的。zscan用于扫描有序集合中的元素,有序集合是按照分数(score)排序的,所以zscan返回的元素是按照分数排序的。另外,sscan和zscan都支持分批次扫描,可以通过指定游标(cursor)和扫描数量(count)来控制每次扫描的元素数量。这样可以避免一次性扫描大量元素导致的性能

2024-03-02 12:26:49 763

原创 spring容器中的bean和jvm中的对象是一样的吗

虽然 Spring 中的 Bean 在概念上是对象的一种特殊形式,但它们在使用和管理上有着显著的区别。Spring 的 IoC(控制反转)和依赖注入机制使得 Bean 更加灵活,并且能够被容器所管理和控制,与普通的 JVM 对象相比,它们具有更多的特性和能力。依赖注入和配置: Spring 容器通过依赖注入机制创建和管理 Bean,可以对其进行配置、初始化、销毁等操作,而 JVM 中的对象则通常是直接实例化而来,没有经过像 Spring 那样的依赖注入过程。

2024-03-01 14:38:33 563

原创 改变小小开发习惯

具体来说,它调用了JedisUtil类的getInstance()方法来获取Jedis实例,然后使用zincrby()方法将有序集合中的元素的分数减去1,也可以为分数增加指定的值(1),并返回减少或者增加后的分数。string.concat():字符串连接起来,可以一直拼接,cancat是一种字符串或数组的拼接方法,它会创建一个新的字符串或数组,将原始字符串或数组的内容复制到新的字符串或数组中。其中,"final"关键字表示该类、方法或变量是不可修改的,即它们的值或实现不能被改变。添加重试补偿切面逻辑。

2024-03-01 14:37:27 307

原创 幂等性和唯一性关注的点不一样

的唯一性,就是同一个请求,不能重复过多的反复请求,如果系统突然卡顿,用户点击多次,导致多次重复请求,可能最终会造成数据的累加,累减。解决方法:可以由前端带一个唯一的请求Id,接口判断。

2024-02-25 11:24:36 353 1

原创 代理对象实际功能

在Spring中,你自己写的类(被称为目标对象)是真实的业务对象,而IOC容器会为你的类创建一个代理对象。这个代理对象在执行你原有逻辑的同时,也可以执行其他额外的逻辑,比如AOP中的横切关注点。

2024-02-23 15:42:08 363

原创 @Autowired爆红问题详解

使用@Autowired注解进行装配必须该类被spring ioc容器管理着并且同时存在,才可以自动注入;而@Resource不用,比如:RedisTemplate

2024-02-23 14:33:31 677

空空如也

空空如也

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

TA关注的人

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