- 博客(95)
- 收藏
- 关注
原创 Spring缓存注解的陷阱:为什么@CacheEvict删不掉Redis缓存?
失效问题本质是事务边界与资源生命周期的错配。通过本文的四步解决方案:使用调整执行顺序优化连接池配置防止过早断开添加重试机制增强可靠性确保键序列化一致性开发者可以彻底解决这一典型问题。更深层次上,这提醒我们在分布式系统中,任何跨越资源边界的操作都需要显式的生命周期管理,框架的便利性不能替代对底层机制的理解。缓存的世界里,删除比创建更需要智慧——因为系统最脆弱的时刻,往往发生在你试图抹去痕迹的瞬间。
2025-06-08 23:23:41
901
原创 深入理解 Spring Cache 及其核心注解
SpringCache是缓存抽象规范,支持多种缓存技术,通过注解自动处理缓存操作。核心注解包括:@EnableCaching用于启用缓存;@Cacheable优先从缓存查询;@CachePut更新缓存数据;@CacheEvict删除缓存数据。这些注解通过简单配置即可实现缓存功能,减少数据库访问,提升系统性能,并保持缓存一致性。开发者可根据业务需求灵活选用,实现高效缓存管理。
2025-06-08 23:08:10
637
原创 Redis 缓存策略:借助缓存优化数据库性能并保障数据一致性
本文介绍了缓存加载策略与一致性维护方案。采用"业务类型_关联ID"格式设计缓存Key,优先从Redis读取,未命中时数据库查询并缓存。数据变更时主动清理缓存,包括新增、修改、状态变更和批量删除场景。提出了优化方向:精准删除代替全量清理,避免缓存穿透和雪崩。该策略有效提升高并发读场景性能,适用于电商、餐饮等业务,同时需注意监控、灰度发布等实践要点。
2025-06-05 22:18:05
1010
原创 微信小程序用户登录认证与注册服务实现
本文介绍了微信小程序用户登录认证的实现流程,主要包含三个核心环节:1)前端获取微信临时登录凭证code;2)后端通过调用微信接口验证code并获取用户openid;3)系统自动完成用户注册/登录操作并返回JWT令牌。关键技术实现包括:微信接口调用获取用户唯一标识、用户数据自动注册机制、基于JWT的身份验证令牌生成等。整个流程采用分层架构设计,通过Controller接收请求、Service处理业务逻辑,最终返回包含用户ID和认证令牌的响应数据。
2025-06-05 21:14:31
287
原创 微信小程序
这些文件类型共同构成了微信小程序的开发框架,分别负责逻辑、数据、结构和样式,分工明确且协同工作。一个变量 需要现在js内定义 js内可以定义变量,和函数实现。使用{{}}可以动态绑定。使用变量时需要先定义。
2025-05-02 21:36:23
2026
原创 HttpClient
HttpClient 是用于发送 HTTP 请求和处理响应的工具包,在不同的编程语言中都有对应的实现,下面为你分别介绍 Java 和 Python 中的 HttpClient。
2025-04-20 23:58:03
356
原创 前端用户列表与后端分页协同设计
这里将Page对象转换为自定义的PageResult简化响应结构:只返回前端需要的字段统一格式:保持API响应的一致性数据脱敏:有机会对敏感字段进行处理。
2025-04-08 19:56:37
506
原创 通过枚举、AOP、注解、反射填充公共字段
优化方案1. 使用 AOP(面向切面编程) 在数据持久化前,自动注入 `create_time`、`update_time` 等字段。 示例(Spring + AOP)
2025-04-05 20:10:36
362
原创 苍穹外卖上半部分总结
前端是请求到nginx服务器,再由nginx服务器转发到后端nginx的好处1.提高访问速度,当这条数据相同,不必要到后端去处理了,之间有nginx服务器返回数据,nginx就相当于一个缓存,redis2.进行负载均衡 ,后端可能有多个服务器,访问一个服务器,会导致服务器压力大,就由nginx把请求均匀分配给多个服务器3.保证后端服务安全,直接把后端url暴露,是不安全的行为。让前端访问nginx服务器,不暴露后端niginx配置负债均衡配置负债均衡策略配置文件。
2024-09-23 22:20:20
944
原创 Redis
Redis 是一个功能强大的工具,适用于多种不同的应用场景。它的高性能和丰富的数据结构使其成为开发人员在构建需要快速访问和处理大量数据的应用时的首选。不过,由于它将数据保存在内存中,需要考虑内存成本和数据持久化策略。
2024-09-11 13:29:51
1095
原创 在线音乐播放器项目
前端 js html css 三剑客后端 Spring Boot框架 插件有:Spring Boot DevTools、Lombok、Spring Web、MySQL Driver、MyBatis Framework、security、detect数据库有 三张表 lovemusic、music、user。
2024-09-03 11:20:11
1421
原创 在线博客项目
登录页面注册页面主页博客编写页面个人设置页面查看详情页面修改页面Spring Boot版本号3.2.6插件有Spring Boot DevTools、Lombok、Spring Web、MySQL Driver、MyBatis Framework项目目录前端文件都存放在static内所需要和数据库相匹配的三个类文章类用户类评论类。
2024-09-03 11:06:02
777
原创 Spring AOP
OOP 面向对象编程 AOP 面向切面编程主要为解耦而生AOP的组成切面、连接点、切点、通知1.切面:定义AOP业务类型 当前AOP是干嘛得2.连接点: 调用AOP得地方叫做一个连接点3.切点: 定义AOP拦截规则4.通知:定义什么时候干什么事情4.1 前置通知:拦截得目标方法之前执行的通知4.2 后置通知:拦截得目标方法之后的通知4.3 返回之后通知: 拦截的目标方法返回数据之后通知4.4 抛出异常之后的通知:拦截的目标方法抛出异常之后执行的通知。
2024-06-03 21:36:10
800
原创 Spring MVC/Web
Spring Web MVC是基于Servlet API构建的原始Web框架,也是Spring框架的一部分。它提供了灵活可扩展的MVC架构,方便开发者构建高性能的Web应用程序,并与 Spring 生态系统无缝集成。
2024-05-20 19:56:19
1069
原创 Spring Boot日志
为什么使用slf4j?:依赖于特定的日志类库可能会导致需要不同的配置,并且在维护时可能会遇到更多的麻烦。:SLF4J支持多种日志实现,包括log4j、logback和java.util.logging等。这意味着开发者可以根据项目的具体需求选择最合适的日志实现。
2024-05-15 18:06:32
288
原创 创建Spring Boot项目
2.如果是专业版,一般创建项目时就自带了,如果没有,也是去插件那,启动Spring Boot。1.如果是社区版的,到设置下的插件下 下载Spring Boot Helper。现在Spring Boot已经不支持java8了,最低也是java17。Spring Boot DevTools 是热部署的作用。选择好自己的配置,获取代码后,会有一个压缩包。解压之后,在IDE内打开,也是同样的效果。切换阿里巴巴源后,就可以使用java8。如果想用java8,那么就换国内源。spring源的兼容性会更好。
2024-05-13 14:46:14
364
原创 创建Spring项目
选择Maven Archetype,之后再Archetype选择webapp。在WEB-INF内文件下的webapp的web.xml文件内写入以下代码。打开对应的路径,用vscode打开settings.xml。若jar包出现问题,可在repostitory文件内全删除。之后在main内创建带有蓝色的java文件。之后在Maven刷新即可重新下载。若没有此文件可上网查找。这个是以后都默认勾上。
2024-04-26 19:28:45
373
原创 博客网站/部署服务器---继上篇前端页面接入后端
目录准备工作创建用户类博客类与连接数据库创建博客类创建用户类创建连接数据库工具类实现对数据库数据博客的操作实现对数据库用户的操作创建数据库语句登录页面前端后端博客列表前端注销登录写入数据判断用户是否登录替换页面用户昵称后端处理注销登录 LogoutServlet/doGet处理获取所有博客 BlogServlet/doGet处理判断用户是否登录 loginServlet/doGet处理替换页面用户昵称 UserinfoServlet/doGet博客详情页前端注销登录查询博客判断用户是否登录将博客详情页昵称替
2024-04-21 13:50:27
948
原创 Servlet实现常用功能及其他方法
之后在另一个页面,获取session中的用户名,再把计数器也取出,计数器++,并且两个打印,计数器更新后,再把更新后的计数器写入session。当页面刷新时,前端构造get方法,把数据构造成json格式,发送给后端,后端从数据库读取数据,再构造成json格式,发送给前端。当刷新页面时,会触发get请求,服务器会把数据回传给页面,页面会把数据继续显示到页面上,所以数据会依据存在。前端构造post方法,把数据构造成json格式,发送给后端,后端解析json格式,存储到数据库。读取从客户端传来的json数据。
2024-04-14 23:13:02
870
原创 Servlet测试1
测试1只需要知道客户端是如何发起请求的,服务器如何响应数据的即可。通过按钮提交get,post请求,并且后端响应数据,显示到前端。之后前端就从body内读取数据,写入,显示到页面上。后端接收到Post请求后,把数据写入到body内。后端接收到Get请求后,把数据写入到body内。
2024-04-14 00:18:32
447
原创 Servlet
Servlet 是 Java Servlet API 规范的一部分,Java Servlet API 是一个独立于平台的接口和协议,用于扩展服务器功能的 Java 技术。4.销毁:服务器调用 Servlet 的 destroy 方法,销毁 Servlet。2.初始化:服务器调用 Servlet 的 init 方法,初始化 Servlet。3.服务:服务器处理客户端的请求,调用 Servlet 的 service 方法。2.每次收到请求时,调用servlet,servlet内部调用对应的方法。
2024-04-11 13:40:38
626
原创 Maven创建项目
在pom.xml内,在project标签里打个dependencies标签,之后在这个标签里粘贴进去。复制到D:\Tomcat\apache-tomcat-8.5.100\webapps。但实际 每改代码就需要打包,部署,实在麻烦,所以我们可以直接使用插件解决。war包在D:\Servlet\MavenDemo1\target。tomcat加载一个程序时,就会先读取这个.xml文件。把war包复制到webapps文件内。往web.xml文件内添加代码。然后复制maven的标签代码。
2024-04-11 13:24:30
631
原创 博客页面---前端
这里需要放入editor.md,和JS文件的jquery.min.js的依赖,放入文章编辑的库。右侧文章只要这个页面有,所以css是单独出来的。里面包含多个css文件。
2024-03-31 21:58:44
564
原创 javaScript
JavaScript是一种高级的、解释型的编程语言。它是Web开发的核心技术之一,几乎所有的现代网页都使用JavaScript来添加交互性。JavaScript最初由Netscape公司的Brendan Eich在1995年创建,并迅速成为网页浏览器的标准编程语言。
2024-03-25 22:21:47
948
原创 赎金信..
再对ransomNote字符串进行统计,如果magazine里的某个字母不足以支撑ransomNote里的某个字母,就返回false,如果都足以支撑就返回true。用整形数组映射26个字母 当出现就在对应位置++,统计magazine的每个字母次数。HashMap不能用基本数据类型,而得用引用类型。用HashMap映射。原始类型 封装类。
2024-03-22 13:16:44
190
原创 找出第一个字符串中第一个匹配项的下标
如果其中有不相同的,结束循环,进行下一次匹配,如果判断循环正常结束,说明全部相同,返回起始位置。遍历hay字符串,如果当前下标与ne第一个字符相同时,进入循环,分别遍历两个字符串进行对比。
2024-03-21 10:51:21
151
原创 删除有序数组的重复项II
每次fast如果与slow前两个不相同时,就代表slow此时个数一定是大于2的,就把fast的值赋值给slow,如果是相同的值时,fast就不断++去找不相同的值,直到找到结尾,最后返回slow。解题思路在于 分两种情况 遇到个数大于2的和小于2的。
2024-03-19 23:55:45
175
原创 网络通信.
DNS协议 域名解析 域名网址sougou.com就是搜狗的域名域名可以通过DNS系统自动转换成对应的IP地址当电脑能使用qq,但打不开网页,多半是DNS挂了8,8,8,8明确传递的信息 数据的组织格式分隔符固定长度xnmjson。
2024-03-17 18:33:23
674
原创 HTML标签
把一个HTML文件视为文档文档内有很多“标签”(tag)每个标签也可以称为是一个“元素”同时每个元素也对应到一个对象对象里有属性,方法,这些操作可以在JS中进行操作HTML大部分是成对出现的,少部分是单标签HTML需要有head和bodyhead标签主要存放一些属性信息(元信息)body存放界面/网页上要显示的内容!快速生成html。
2024-03-17 18:02:46
941
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人