![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java web
java web学习过程中的一些笔记
dyjs.akcnzssa.s.
这个作者很懒,什么都没留下…
展开
-
一个切面类的定义
【代码】一个切面类的定义。原创 2024-03-26 18:05:34 · 103 阅读 · 0 评论 -
redisson解决redis服务器的主从一致性问题
实际开发中我们会搭建多台redis服务器,但这些服务器分主次,主服务器负责处理写的操作(增删改),从服务器负责处理读的操作,当从主务器坏了,会从次服务器中选出一个服务器重新作为主服务器。当主服务器宕机时,次服务器还没有接收主服务器同步过来的信息,这时其他java线程来获取锁(存入锁信息成功就是能获取锁)时,会出现直接获取锁的情况。redission直接不分主服务器和从服务器了,所有redis服务器都是主,都能处理读写操作,这时java线程想成功获取锁,必须在所有的。原创 2024-03-10 15:27:24 · 380 阅读 · 0 评论 -
缓存击穿问题
缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。原创 2024-03-07 18:45:53 · 150 阅读 · 0 评论 -
缓存雪崩的概念
给业务增加多级缓存(多个地方都添加缓存,如浏览器)给不同的key添加随机的ttl值。原创 2024-03-07 15:33:03 · 106 阅读 · 0 评论 -
缓存穿透概念
缓存穿透 :缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,3.增加id复杂度,使攻击者难以伪造不存在的id进行攻击。5.加强用户权限校验(有些业务不让常规用户访问)4.对id的格式进行规格,不合规的直接pass。,这些请求都会打到数据库。原创 2024-03-07 15:13:41 · 96 阅读 · 0 评论 -
redis缓存更新策略
线程1查询到数据库中的数据10后,还没更新缓存,就切换到线程2,线程2更新数据库数据为20,同时删除缓存,这时切回线程1,更新缓存为10。推荐删除缓存,因为如果数据库一直更新,缓存也随之更新,但是这期间根本没人来查数据,那这些更新都是无用的。对于高一致性需求的业务:推荐主动更新,由缓存的调用者更新数据库的同时更新缓存(删除缓存)。最终把数据库旧值20查询出来,同时把缓存更新为20,这时切回线程1,把数据库数据更新为10。线程1删除缓存后,这时切换到线程2,线程2去查询缓存,没有查到就去数据库中进行查询,原创 2024-03-06 19:45:47 · 313 阅读 · 0 评论 -
基于redis实现用户登陆
2.用户输入验证码,发送请求(携带参数手机号,参数验证码)进行登陆,后端从redis查询是否有对应的手机号,验证码。有就登陆成功,根据手机号查询用户信息,随机生成登陆凭证token,把token和用户信息存入redis。3.之后用户每次发送请求都携带登陆凭证token,用户发送的请求会被拦截器拦截(之前的login服务不会被拦截),拦截后根据token查询redis中是否有对应的用户信息,有就把用户基本信息存入ThreadLocal中以供本次请求使用,然后放行请求。调用第三方平台把验证码发到用户手机。原创 2024-03-06 13:31:40 · 1074 阅读 · 0 评论 -
基于session实现登陆
2.用户根据输入获取的验证码登陆,发送登陆请求时,请求头携带jsessionid 服务器端根据jsessionid获取到指定session,然后对比session中手机号和验证码是否正确。3.用户每发送一个请求,都会触发拦截器(之前的登陆操作不会触发拦截器),拦截器根据请求行携带的jsessionid查询服务器端对应的session中是否有用户信息,有就说明当前用户正在登陆。服务器端没有,或清除了某个session中用户的信息,服务器端就认为这个用户退出登陆了。被人为退出登陆清除了,原创 2024-03-05 20:52:42 · 188 阅读 · 0 评论 -
第三方工具包hutool,用hutool中的工具类生成手机验证码
【代码】第三方工具包hutool,用hutool中的工具类生成手机验证码。原创 2024-03-05 17:36:32 · 468 阅读 · 0 评论 -
根据请求,设计出接口,实现接口
P27实现。原创 2024-03-05 17:03:34 · 83 阅读 · 0 评论 -
spring注解
在Spring框架中,@Configuration 注解的主要作用是指示Spring容器,该类是一个配置类,它包含了一个或多个Spring容器所需的bean定义。在一个类上添加 @Configuration 注解后,Spring 会将该类识别为配置类,并且会在该类中查找 @Bean 注解来创建 Bean 对象。@Configuration下的@bean被称为是Full mode(完全模式)。@Component下的@bean被称为是Lite Mode(轻量模式)。原创 2024-03-03 14:33:46 · 226 阅读 · 0 评论 -
计算机硬件,内核,操作系统 ,系统应用
*系统应用:**如mysql应用本来在ubuntu上运行,这时把他迁移到centos上,这时应用去调用一个系统函数,发现这个函数在centos上根本不存在所以应用不能跨操作系统运行。docker把应用,应用所需的系统函数库和依赖封装在一起,因为有了系统函数库,就不需要管什么操作系统了,直接用系统函数库操作内核,内核直接访问硬件,从而实现应用跨系统运行。系统应用调用操作系统函数,操作系统函数调用内核指令,内核指令调用内核直接操作计算机硬件。系统函数就是把这些内核指令组装,然后封装为函数。原创 2024-02-26 13:47:57 · 132 阅读 · 0 评论 -
yml文件编辑注意事项
4.使用#表示注释,idea中可能出现中文注释错误的情况,去设置里file encodings中更改为utf-8即可。1.缩进禁止用tab,最好用空格(idea中或许可以用tab),缩进的空格数不重要,相同层级的元素左对齐就行。原创 2024-02-23 10:25:09 · 465 阅读 · 0 评论