摘要: 缓存穿透 即黑客故意去请求缓存中不存在的数据,导致所有的请求都怼到数据库上,从而数据库连接异常。解决方法: 布隆过滤器(推荐)。内部维护一系列合法有效的key,迅速判断出请求所携带的Key是否合法有效,如果不合法,则直接返回。它不一定精确,跟哈希函数的好坏有关,当布隆过滤器说某个值存在时,这个值可能 阅读全文
posted @ 2022-06-19 16:47 学海无涯# 阅读(26) 评论(0) 推荐(0)
摘要: 在分布式系统中,一致性(Consistency)、可用性(Availability)以及分区容忍性(Partition tolerance)这个三个要素最多只能同时保证两者,而分区容忍性是基本要求,所以分布式数据系统就要在一致性和可用性之间取一个平衡。对于大部分应用,并不需要强一致性,通常会采取牺牲 阅读全文
posted @ 2022-06-19 15:47 学海无涯# 阅读(1053) 评论(0) 推荐(0)
摘要: Redis过期策略 redis过期删除策略通常有三种: 定时删除 在设置某个key的过期时间同时创建一个定时器,定时器负责监视key,过期则自动删除,虽然内存及时释放,但是十分消耗CPU资源。 定期删除 Redis默认每隔100ms就随机抽取部分设置了过期时间的key,检测这些key是否过期,如果过 阅读全文
posted @ 2022-06-19 13:05 学海无涯# 阅读(308) 评论(0) 推荐(0)
摘要: Redis是什么 Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型有:字符串类型 散列类型 列表类型 集合类型,端口默认为6379。 Redis的特点 高性能:支持超过 100K+ 阅读全文
posted @ 2022-06-19 11:44 学海无涯# 阅读(246) 评论(0) 推荐(0)
摘要: 讲得很清楚: https://blog.csdn.net/tTU1EvLDeLFq5btqiK/article/details/78693323 阅读全文
posted @ 2022-06-19 10:45 学海无涯# 阅读(32) 评论(0) 推荐(0)
摘要: 数据库中字段命名一般采用下划线分割,而java中一般采用驼峰命名,两者不一致无法自动一一对应,有如下三种解决方式。 1、取别名 在每条sql语句中取别名与java字段名项对应,这种方式很麻烦。 <select id="getAll" resultType="com.chen.entity.User" 阅读全文
posted @ 2022-06-18 18:37 学海无涯# 阅读(786) 评论(0) 推荐(0)
摘要: 通常我们创建线程池有两种方式,一是通过ThreadPoolExecutor构造函数实现(推荐);二是通过Executor框架的工具类Executors来自行创建。本文主要分析ThreadPoolExecutor的执行原理,包括线程的创建、执行、销毁。在进行详细分析之前,先介绍一下ThreadPool 阅读全文
posted @ 2022-06-14 14:51 学海无涯# 阅读(137) 评论(0) 推荐(0)
摘要: 问题: 用户第一次登录之后会得到一个cookie,在以后每次的访问过程中都会携带这个cookie,后台所有的需要登录权限的controller都要先获取cookie中的token,再使用token从session中获取用户登录信息来完成用户身份认证,所以所有的controller中都加上身份认证的代 阅读全文
posted @ 2022-06-12 22:07 学海无涯# 阅读(31) 评论(0) 推荐(0)
摘要: 用户登录成功以后服务器会为每一个用户生成一个token,然后将这个token返回给浏览器;同时为了实现分布式还需要将token存入redis缓存中,这样每个服务器都可以通过redis缓存来实现用户身份认证。用户在访问页面时请求中会携带这个token,服务器利用其进行身份验证。相应代码如下: pack 阅读全文
posted @ 2022-06-12 20:38 学海无涯# 阅读(29) 评论(0) 推荐(0)
摘要: 1. @ControllerAdvice @ControllerAdvice用来声明一些全局性的东西,最常见的是结合@ExceptionHandler注解用于全局异常的处理。他有三种用法: @ExceptionHandler注解标注的方法:表示如果Controller中任何一个方法发生异常,就会被注 阅读全文
posted @ 2022-06-12 16:57 学海无涯# 阅读(52) 评论(0) 推荐(0)