
获得徽章 1
#青训营笔记创作活动#
2月17日 打卡day23
今日学习 死锁是指两个或两个以上的线程(或进程)在运行过程中,因为资源竞争而造成相互等待、相互僵持的现象当死锁问题出现时,MySQL会自动检测并介入,强制回滚结束一个“死锁的参与者(事务)锁超时机制:事务/线程在等待锁时,超出一定时间后自动放弃等待并返回。
外力介入打破僵局:第三者介入,将死锁情况中的某个事务/线程强制结束,让其他事务继续执行。
2月17日 打卡day23
今日学习 死锁是指两个或两个以上的线程(或进程)在运行过程中,因为资源竞争而造成相互等待、相互僵持的现象当死锁问题出现时,MySQL会自动检测并介入,强制回滚结束一个“死锁的参与者(事务)锁超时机制:事务/线程在等待锁时,超出一定时间后自动放弃等待并返回。
外力介入打破僵局:第三者介入,将死锁情况中的某个事务/线程强制结束,让其他事务继续执行。
展开
评论
点赞
赞了这篇文章
#青训营笔记创作活动#
2月16日 打卡day22
今日学习 StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。
RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。用BitMap实现实现布隆过滤器,幂等:一个操作,不论执行多少次,产生的效果和返回的结果都是一样的,1.客户端先调用获取token的接口,后台生成一个token,返回给前端同时存储在redis里面,设置一定时间过期
2.客户端带上token调用支付接口,后台判断是否有这个token,有则说明是第一次访问
3.第二次访问的时候,检测到没有token,则不允许执行
2月16日 打卡day22
今日学习 StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。
RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。用BitMap实现实现布隆过滤器,幂等:一个操作,不论执行多少次,产生的效果和返回的结果都是一样的,1.客户端先调用获取token的接口,后台生成一个token,返回给前端同时存储在redis里面,设置一定时间过期
2.客户端带上token调用支付接口,后台判断是否有这个token,有则说明是第一次访问
3.第二次访问的时候,检测到没有token,则不允许执行
展开
评论
点赞
#青训营笔记创作活动#
2月15日 打卡day21
今日学习 缓存的内存有限时靠两个机制处理:数据过期和数据淘汰(缓存空间满了),缓存雪崩是由于设置的过期时间相同,集中失效,将缓存失效时间随机打散,缓存击穿是缓存中没有,请求直接到达数据库,通过设置热点时间续期或者分布式锁来防止, 或者将冷数据加热进缓存并设置过期时间,缓存穿透是大量无效请求打进缓存和数据库中均没有,用布隆过滤器等解决,在读多写少并发要求不高的时候采用事务+先更新数据库再更新缓存来达到一致性,对于数据库更新+缓存删除策略,对于并发要求高,数据一致性要求好时采用先更新数据库,后删除缓存,并结合删除重试+补偿逻辑+缓存过期ttl等来处理
2月15日 打卡day21
今日学习 缓存的内存有限时靠两个机制处理:数据过期和数据淘汰(缓存空间满了),缓存雪崩是由于设置的过期时间相同,集中失效,将缓存失效时间随机打散,缓存击穿是缓存中没有,请求直接到达数据库,通过设置热点时间续期或者分布式锁来防止, 或者将冷数据加热进缓存并设置过期时间,缓存穿透是大量无效请求打进缓存和数据库中均没有,用布隆过滤器等解决,在读多写少并发要求不高的时候采用事务+先更新数据库再更新缓存来达到一致性,对于数据库更新+缓存删除策略,对于并发要求高,数据一致性要求好时采用先更新数据库,后删除缓存,并结合删除重试+补偿逻辑+缓存过期ttl等来处理
展开
评论
点赞
#青训营笔记创作活动#
2月14日 打卡day20
今日学习 MySQL实际上是对B+树做了改变,最底层的叶子节点是双向链表,不是单向的,MyISAM引擎的表数据写入.MYD文件,表结构写入.frm,索引数据写入.MYI文件,不支持聚簇索引;InnoDB表结构写入.frm,表数据和索引数据写入.ibd,支持聚簇索引。InnoDB的行数据关联的是聚簇索引的索引键,所以InnoDB的非聚簇索引在查询时需要回表
2月14日 打卡day20
今日学习 MySQL实际上是对B+树做了改变,最底层的叶子节点是双向链表,不是单向的,MyISAM引擎的表数据写入.MYD文件,表结构写入.frm,索引数据写入.MYI文件,不支持聚簇索引;InnoDB表结构写入.frm,表数据和索引数据写入.ibd,支持聚簇索引。InnoDB的行数据关联的是聚簇索引的索引键,所以InnoDB的非聚簇索引在查询时需要回表
展开
评论
点赞
#青训营笔记创作活动#
2月13日 打卡day19
今日学习 索引的数据结构大小是16k,存放页的最小主键id和页号,b+树结构,叶子节点存放数据,非叶子节点存放索引数据,mysql的表数据以页形式存放,页的空间是16k,超过2kw数据可能造成b+树层级变高,影响查询效率
2月13日 打卡day19
今日学习 索引的数据结构大小是16k,存放页的最小主键id和页号,b+树结构,叶子节点存放数据,非叶子节点存放索引数据,mysql的表数据以页形式存放,页的空间是16k,超过2kw数据可能造成b+树层级变高,影响查询效率
展开
评论
点赞
#青训营笔记创作活动#
2月12日 打卡day18
今日学习 跨域问题本质是浏览器防止恶意攻击的保护机制,但给不同站点间的调用带来阻碍,跨域三种问题:协议,域名和端口不同,解决方法:通过注解实现跨域@crossOrigin,参数是*;通过配置文件实现webmvcconfigurer接口重写addcorsMappings方法实现全局跨域
2月12日 打卡day18
今日学习 跨域问题本质是浏览器防止恶意攻击的保护机制,但给不同站点间的调用带来阻碍,跨域三种问题:协议,域名和端口不同,解决方法:通过注解实现跨域@crossOrigin,参数是*;通过配置文件实现webmvcconfigurer接口重写addcorsMappings方法实现全局跨域
展开
评论
点赞
#青训营笔记创作活动#
2月11日 打卡day17
今日学习 实现接口的访问限制类 先写限制的访问接口,再写一个类定义before方法添加注解around,并写上接口的全路径名,然后写实现方法:获取注解参数,当前请求的ip和方法,获取redis中的count数量并判断,超出限制则拒绝访问,然后spring自动装配并将项目打包,最后在需要的类上添加注解即可
2月11日 打卡day17
今日学习 实现接口的访问限制类 先写限制的访问接口,再写一个类定义before方法添加注解around,并写上接口的全路径名,然后写实现方法:获取注解参数,当前请求的ip和方法,获取redis中的count数量并判断,超出限制则拒绝访问,然后spring自动装配并将项目打包,最后在需要的类上添加注解即可
展开
评论
点赞
#青训营笔记创作活动#
2月10日 打卡day16
今日学习 单机数据库的存储能力,连接数是有限的,通过分库分表提升性能,从垂直和水平纬度进行拆分,垂直分库一般按照业务和功能进行拆分,不同业务放在不同数据库中,垂直分表对业务字段查询比较多的大表进行拆分,水平分库把同一个表按一定规则拆分到不同数据库,水平分表是在同一个库中进行,把一张大数据量的表切分多个结构相同的表通过算法决定数据存在哪个库中,如取模算法,范围限定算法
2月10日 打卡day16
今日学习 单机数据库的存储能力,连接数是有限的,通过分库分表提升性能,从垂直和水平纬度进行拆分,垂直分库一般按照业务和功能进行拆分,不同业务放在不同数据库中,垂直分表对业务字段查询比较多的大表进行拆分,水平分库把同一个表按一定规则拆分到不同数据库,水平分表是在同一个库中进行,把一张大数据量的表切分多个结构相同的表通过算法决定数据存在哪个库中,如取模算法,范围限定算法
展开
评论
1