logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

第五篇:Redis 为什么不用链表保存 List?QuickList 到底是什么?

很多人记住了一句话:Redis List 底层是链表。但真正理解 Redis 的人,会知道这只是历史。LinkedList↓ZipList↓QuickList↓每一次升级,都不是推倒重来。内存占用、CPU Cache、插入效率、遍历性能之间的最佳平衡。这也是 Redis 能一直保持高性能的重要原因。《Redis String 为什么不是 String?SDS 到底解决了什么问题?《Redis 为什

文章图片
#redis#链表#list
第六篇:Redis 为什么使用跳表,而不是红黑树?

很多人第一次学习 Redis,只记住了一句话:ZSet 底层使用跳表。Redis 为什么没有选择红黑树?答案就在于 Redis 一直坚持的设计思想。它追求的,从来不是理论上最完美的数据结构,而是在性能、实现复杂度和维护成本之间,找到一个最合适的平衡点。跳表的时间复杂度和红黑树几乎一致,实现却简单得多,范围查询也更加友好,因此最终成为 Redis ZSet 的选择。对于 Redis 来说,这不是一次

文章图片
#redis#数据库#缓存
你天天用 Spring 容器,但可能根本不知道它的本质

不是:Map不是:Bean仓库甚至也不是:BeanFactory它真正本质是:对象管理中心,或者对象操作系统因为:它做的不只是,创建对象而是:定义↓创建↓装配↓增强↓生命周期管理↓销毁这才是:Spring 容器真正干的事持续拆 Spring、MySQL、Redis 底层原理,复盘真实线上问题。一起把“会用”变成“看懂”。下一篇:Bean 为什么需要生命周期?90%的人只会背流程感兴趣可以关注,避免

文章图片
#spring#java#后端
为什么 Spring 不建议自己 new 对象?一文彻底搞懂 IOC 本质

这样写有什么问题?对象不是创建出来了吗?代码不是也能跑吗?很多文章会告诉你:“这是为了降低耦合”但其实:这个解释太浅了因为:即使你自己 new,照样也可以通过接口解耦。

文章图片
#spring#java#后端
你天天用 Spring 容器,但可能根本不知道它的本质

不是:Map不是:Bean仓库甚至也不是:BeanFactory它真正本质是:对象管理中心,或者对象操作系统因为:它做的不只是,创建对象而是:定义↓创建↓装配↓增强↓生命周期管理↓销毁这才是:Spring 容器真正干的事持续拆 Spring、MySQL、Redis 底层原理,复盘真实线上问题。一起把“会用”变成“看懂”。下一篇:Bean 为什么需要生命周期?90%的人只会背流程感兴趣可以关注,避免

文章图片
#spring#java#后端
Spring 为什么如此依赖反射?因为它根本不知道你会写什么

所以:@Autowired 并不神秘?Spring 不可能提前写:new UserService(),因为它不知道以后会有什么。也就是:Class,Spring 世界里:很多时候拿着的不是对象,而是:Class。上一篇我们说:Spring 大量黑科技来自:BeanPostProcessor。但处理之前,要先知道:Bean 上有哪些字段、有哪些方法、有哪些注解。因为 Spring 根本不知道你以后会

文章图片
#spring#java#后端
为什么抛了异常,事务还是没回滚?一次 Debug 看懂 Spring 的回滚规则

发生异常↓事务回滚发生异常↓事务拦截器收到异常↓满足回滚规则↓事务回滚try-catch吃掉异常不满足rollbackFor规则ErrorrollbackFor指定异常异常↓↓↓满足规则↓rollback最后留个问题。下面代码会回滚吗?b();很多人觉得一定回滚。这又是为什么?下一篇:《为什么会有循环依赖?Spring 为什么允许两个 Bean 互相引用?

文章图片
#spring#数据库#java
为什么会有循环依赖?Spring 为什么允许两个 Bean 互相引用

所谓循环依赖。A 依赖 BB 依赖 A形成一个闭环。@Service@Autowired@Service@Autowired这种情况就属于循环依赖。很多人觉得:这是代码写错了。实际上在大型项目里非常常见。因为业务之间本来就存在关联。用户查订单。订单查用户。写着写着就形成了依赖闭环。今天我们没有讲三级缓存。而是先定位问题。通过源码可以看到:当 A 创建过程中需要 B。B 创建过程中又需要 A。循环依

文章图片
#spring#java#后端
一个 @RequestMapping 就能接收请求?Spring MVC 是怎么做到的

扫描 Controller↓解析 @RequestMapping↓生成 RequestMappingInfo↓注册到 MappingRegistry请求到达↓↓↓找到 HandlerMethod↓↓执行 Controller 方法↓返回结果所以:@RequestMapping 并不是收到请求时才解析。而是在 Spring 启动时就已经解析完成,并建立好了 URL 和方法的映射关系。请求来了以后,本

文章图片
#spring#mvc#java
第三篇:MyBatis 为什么知道该执行哪条 SQL?

执行时才去找 SQL。实际上不是。启动阶段。MyBatis 已经把所有 SQL 解析完成。保存起来。Mapper接口↓方法名↓生成 statementId↓找到 MappedStatement↓执行 SQL所以:MyBatis 之所以知道该执行哪条 SQL,本质上是因为启动时已经建立好了 Mapper 方法与 MappedStatement 的映射关系。上一篇:《Mapper 接口为什么没有实现类

文章图片
#mybatis#sql#java
    共 16 条
  • 1
  • 2
  • 请选择