- 博客(13)
- 资源 (7)
- 收藏
- 关注
原创 缓存设计模式
Write-Through-Back Pattern是结合了Write-Through(透写缓存)和Write-Back / Write-Behind (写后缓存)模式的缓存方法。当业务侧请求数据时,如果数据不在缓存中,则从数据源加载数据并将其存储在缓存中。注:Cache-Aside Pattern/Lazy-Loading Pattern(旁路缓存),是Lazy-Loading (懒加载)的一种实现方式。如果不存在,则缓存层负责从数据源加载数据,存入缓存,并返回给业务层。:指同步缓存与数据库中的数据。
2024-05-11 14:08:37
764
原创 Mysql基础信息
xx.ibd:innodb, 表实际数据文件+数据索引文件,mysql8.0之后增加序列化字典信息(Serialized Dictionary Information,SDI),SDI被写在.ibd文件内部,它是数据字典包含的信息的一个冗余副本,作用类似于frm文件(表结构)1.当查询的字段从左开始,索引字段会匹配最左侧字段,直到匹配失败则不再走当前索引,如AB字段,则均会走索引;AC字段,则A字段会走索引;单独的A、B、C字段查询,因为只有A字段匹配上了组合索引,会走索引,B、C字段查询均不会走索引。
2024-04-22 13:30:00
921
原创 为什么MySql使用B+索引
Mysql索引和数据都存储在磁盘上,涉及磁盘必然会涉及IO问题。优化方向:1.减少IO量,2、减少IO次数。操作系统有个概念叫做磁盘预读,内存和磁盘是以dataPage(页)为基础单位,dataPage 一般为4K或者8K,是操作系统决定的。数据读取时一般会读取4K的整数倍,innodb一般读取16K.1.需要好的hash算法保证散列足够均匀,否则1.存储空间浪费,2产生hash冲突(hash碰撞)2.hash表无序,在范围查询时需要逐个遍历,效率低。
2024-04-22 11:56:45
983
原创 spring 源码学习
非必要,invokelnitMethods 会检测是否实现了InitalizingBean接口,是会存在afterPropertiesSet方法,此方法可以让用户干预bean的初始化,然后调用invokelnitMethod(基本初始化方法)方法,否会直接调用invokelnitMethod方法。所以加一层三级缓存,在获取三级缓存对象时会判断是否需要代理对象。FactoryBean:用来创建对象,可以自定义bean的创建方式,可以不通过spring的创建bean的流程。容器关闭时bean才会销毁。
2024-02-22 09:07:01
344
原创 现象:spring boot jpa 取出数据后修改数据,不调用save方法,数据最终也会更新到数据库
问题产生原因:使用JpaRepository find方法,获取到的是数据库的持久化对象,SpringDataJpa在事务完成的时候会自动持久化事务。SpringDataJpa底层是利用hibernate实现的,可以参考hibernate的实体状态帮助理解。hibernate实体状态Hibernate实体状态的定义1.瞬态:一个实体通过new操作符创建后,没有和Hibernate的Session建立关系,也没有手动赋值过该实体的持久化标识(持久化标识可以认为是映射表的主键)。此时该实体中任何属性的
2022-05-11 16:11:40
2077
原创 分布式事务学习
前言:在事务中,log的重要性远大于数据事务四大特性: ACID A:原子性 C:一致性 I:隔离性 D:持久性, A:原子性和D:持久性 依靠log实现, C:一致性 I:隔离性依靠锁实现分布式事务:分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。示例:一个服务操作多个数据库多个服务操作一个或多个数据库目的:保证分布式系统中的数据一致性解决方案:引入第三方协调者XA规范: 实现: 内部
2022-03-03 10:07:47
534
原创 2021-10-15spring boot 关于使用Filter 拦截签名校验和添加签名踩过的坑
问题产生原因:ServletRequest, ServletResponse 采用的是输入流的方式,所以只能读取一次。在使用filter拦截取值之后,后续不能再次调用问题解决方法:使用自定义bean将数据保存到bean中,实现可以重复调用自定义标签代码:/** * @description: 判断是否需要校验token和sig * @author: hyx * @create: 2021-08-23 14:50 **/@Target({ElementType.METHOD, Element
2021-10-15 11:50:44
640
原创 关于使用spring boot jpa自定义sql 多表关联查询获取多表字段
很多时候,我们在使用spring boot jpa JpaRepository时需要多表关联查询获取多表字段,但是又不想在实体类对应数据库中实现这个字段(因为实体类中存在,数据库中不存在时会抛出sql异常),更不想写hql,那么可以实现一个取巧的方法。示例 :实体类注意:实体类中没有标记表名称@Entity@Data@NoArgsConstructor@DynamicInsertpublic class ChargingJournaliseForCount implements Seriali
2020-10-10 10:08:26
1658
1
原创 关于jdk8使用stream去重
关于jdk8使用stream去重和筛选数据1.使用distinct()去重distinct是stream自带方法,根据hashCode和equals()方法进行去重,会保留第一次出现数据。示例: list.stream().distinct().collect(Collectors.toList());2.使用filterfilter是stream自带的筛选方法,需要实现自定义方法; private static <T> Predicate<T> dist.
2020-09-25 17:18:20
1108
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人