自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 Cookie / Session / Token / JWT:有状态、无状态,一次性讲清楚

服务端是否保存会话信息✅有状态(Stateful):服务端存储「身份凭证 ↔ 用户会话」的映射关系。每次鉴权,服务端需要去查询这份存储,确认登录状态。✅无状态(Stateless):服务端不存储任何会话记录。身份信息全部封装在凭证本身,鉴权只校验凭证合法性,不需要查询外部存储。注意:有/无状态,描述的是服务端,和客户端浏览器无关。有状态和无状态,核心看服务端是否保存会话数据。Cookie是存储载体,Session是有状态会话方案。Token是身份令牌统称:原生JWT是无状态,靠签名校验;

2026-09-23 17:04:29 140

原创 一次微信退款失败的复盘:订单号、交易号与商户号

当时的问题是,支付成功后的交易流水号没有稳定地沉淀到订单中,退款链路缺少完整的原支付上下文。排查过程中连续发现了两个问题:先是缺少支付交易流水号,补齐后又发现订单实际支付的商户号没有被正确区分。退款时,微信需要用原商户订单号或微信交易号定位原支付单。最终发现,寄存和寄送使用的是两个不同的商户号,但退款代码只按订单业务类型做了不完整的判断,部分订单退款时使用了另一个商户号的证书和配置。这次问题让我重新认识到:退款不是“拿订单号调一下接口”这么简单,它本质上是在某个特定商户号下,对一笔已支付交易发起后续操作。

2026-08-28 09:41:07 162

原创 Spring Boot 多模块服务间 API Token 鉴权排查记录

带 X-Api-Client 或 X-Api-Token 的服务间请求:不在旧 Filter 中按 JWT 拦截,继续交给 AuthInterceptor。没有普通用户 JWT,因此旧 Filter 会先拦截请求,AuthInterceptor 根本没有机会校验 API Token。这次需求是:配送端调用用户端的消息、下单、开柜接口时,不再使用普通用户登录 JWT,而是使用服务间 API Token 鉴权。业务接口返回 401/403 时,删除缓存、重新申请 token,并只重试一次。

2026-08-04 15:55:24 188

原创 Java 锁核心知识点「极简记忆版」

synchronized 升级到重量级锁时,底层依赖 JVM 的。:两者不是都靠 CAS 抢锁!

2026-05-21 12:47:58 252

原创 【JAVA】我第一个上线项目

4.独立完成项目阿里云 ECS 云服务器部署,通过 Nginx 配置反向代理、跨域处理与多端口路由,实现三端前端独立部署;1.负责文章发布核心、自动审核(阿里云内容审核服务)、延迟任务(Redis + @Scheduled + setnx分布式锁)模块的开发。)、平台管理、用户行为(redis、kafka)、热点文章(XXL-JOB,redis)的模块开发。4.负责热点文章的实时计算(kafkaStream)、文章评论(MongoDB)的模块开发。)、新增文章同步添加索引(kafka)的模块开发。

2026-05-10 11:43:11 328

原创 JAVA,以后端的视角理解前端。在全栈的路上迈出第一步。

以下是我的思考,然后在AI的讲解下.。

2026-05-05 12:54:44 345

原创 黑马头条 关于热文章实时计算的思考

xxl-job 负责每天生成基础热点,Kafka Stream 负责实时增量更新,两者配合实现 "准实时" 的热点效果。Kafka Stream 的核心价值是窗口聚合和状态管理,解决了原生 Kafka 做实时计算时数据库写入压力过大的问题。MySQL 存全量统计数据,Redis 存热点文章列表,前端通过轮询 + 下拉刷新从 Redis 获取最新数据。

2026-04-20 21:02:39 432

原创 【黑马头条】微服务架构下统一获取登录用户 ID 的完整流程(解决 ThreadLocal.getUser ()=null)

在当前请求线程中存储用户信息,整个请求链路(Controller→Service→Mapper)共享,且线程之间互不干扰。在微服务架构中,我们不会在每个微服务都重复解析用户 Token,而是采用 **「网关统一认证 + 微服务直接获取」:一次解析 Token,所有微服务共享,避免重复工作,统一认证入口。:把我们写的拦截器注册到 SpringMVC 中,否则拦截器不会执行。:在任何需要当前登录用户信息的地方,直接调用工具类即可,不用再传参。:拦截微服务的所有请求,从网关转发的请求头中拿到。

2026-04-10 14:06:00 77

原创 黑马头条・Admin 用户审核页踩坑全复盘:从网关不通到 Feign 双层嵌套

这几天在做黑马头条功能时,从前端请求到网关,再到 admin 远程调用 user 服务,一路踩了 N 多个坑,最后终于成功渲染出数据。把所有问题按完整复盘一遍,避免后人再踩。

2026-04-05 09:30:36 218

原创 微服务网关路径 + Feign 调用 极简总结

2)不带 StripPrefix(以 user/auth 为例)

2026-04-04 21:30:06 153

原创 从疑惑到通透:微服务跨服务调用的核心真相(附黑马头条实战感悟)

结合黑马头条的实战,以及自己的顿悟,整理出3个最实用、最贴合企业开发的原则,记下来就能避坑:数据归属原则:谁管理数据,谁提供接口;自己的 data 自己查,别人的 data 只能调接口,不能直接跨库;接口隔离原则:依赖接口不依赖表,依赖服务不依赖库,只要接口返回值不变,内部逻辑随便改;耦合禁忌原则:绝对禁止跨业务查表,否则表结构、库名、服务拆分时,你的服务一定会“炸”。

2026-04-04 15:38:09 337

原创 MyBatis 传参核心:#{ } 与 ${ } 区别详解(避坑+面试重点)

口诀:能 #{ 就 #{,实在不行才 ${}。解析:整个恶意参数被当作一个字符串(转义了单引号),MySQL 只会查询“张三' or '1'='1”这个字符串对应的频道,不会执行 `or '1'='1` 这个永真条件,避免了全表数据泄露。用 `#{name}` 最终执行的 SQL:`select * from wm_channel where name = '张三\' or \'1\'=\'1'`解析:`or '1'='1` 是永真条件,会查询出表中所有数据,造成数据泄露,这就是典型的 SQL 注入攻击。

2026-04-03 16:40:11 1169

原创 黑马头条踩坑总结:频道状态筛选前端联调失效问题

【代码】黑马头条踩坑总结:频道状态筛选前端联调失效问题。

2026-04-02 19:59:34 238

原创 黑马头条项目核心疑惑总结:nginx / 网关 / Nacos 联通逻辑 + MinIO 用途

nginx 只负责前端托管 + 请求转发到网关,靠端口直连,和 Nacos 无关网关是微服务入口,从 Nacos 获取路由和服务地址,实现请求分发Nacos 是微服务大脑,只服务于微服务,不参与 nginx 通信本地前端文件给管理员用,MinIO 存储普通用户的业务静态资源后台接口 404,优先检查 Nacos 中网关的路由配置是否匹配。

2026-04-02 19:17:54 385

原创 黑马头条敏感词功能开发全踩坑复盘:从 404 到完美跑通的血泪史

实体类直接加@TableName("库名.表名"),不用改数据源,不影响原有业务,零风险适合 admin 后台跨库查询其他模块表的场景,完美适配。

2026-03-31 19:07:33 354

原创 【JAVA】网关的管理原理和微服务的Interceptor区分

网关是通过 application.yml。

2026-03-29 13:13:11 254

原创 【JAVA】关于拦截器(Interceptor)和过滤器(Filter)的思考对比

Spring 才会把它加入拦截链。Spring 不认识它!,自动注册,自动生效!

2026-03-29 13:09:57 70

原创 [JAVA]关于异常的处理思考

类似这种,发现不对就返回信息给前端,应该说是用户吗,不对,我们的信息应该是先到前端,前端是不是要处理errorResult来封装成让用户看得懂的那种提示信息。然后我就对比想了想,这个数据的检查手段,是根据我们是否要把错误信息发给用户看,如果我们只是需要自己的业务逻辑来判断,就不需要发给用户,就。我看老师有时候写StringUtils.isNotBlank(message) 这种来检查参数对不对,对就运行 但有时候就是。一下记录日志,方便报错的时候进行排查。

2026-03-28 14:37:13 48

原创 论mysql的redo_log和bin_log,redis的RDB和AOF的类似记忆

但它们,只是。

2026-03-23 19:48:26 87

原创 面试问题controller和service能不能互相替换

摘要:Spring注解@Controller、@Service、@Repository虽然底层都是@Component,语法上可以互换,但实际项目中绝对不能替换。原因在于:@Controller被SpringMVC管理用于接收请求;@Service支持事务和AOP增强;@Repository专用于数据库操作。互换会导致接口失效、事务异常、架构混乱,违背职责分离原则。面试时应强调框架赋予的特殊功能差异,而非仅看语法兼容性。

2026-03-22 19:10:23 428

原创 京东商品搜索结果爬取(特定关键词)

href = li.ele('css:.p-name a').attr('href') # 详情页。shop_name = li.ele('css:.hd-shopname').text #店铺。title = li.ele('css:.p-name a em').text # 标题。commit = li.ele('css:.p-commit a').text #评价。描述实验的设计和步骤,包括选择的爬虫工具、爬取的网站、爬取的数据类型等。dp.ele('css:#key').input('手机')

2025-01-11 09:38:12 1126

原创 创建单列设计模式——饿汉式

【代码】创建单列设计模式——饿汉式。

2024-11-27 10:03:43 168

原创 得到文件的后缀,所对应的个数

【代码】得到文件的后缀,所对应的个数。

2024-11-09 12:15:05 402

原创 键盘录入一个文件路径

【代码】键盘录入一个文件路径。

2024-11-09 12:14:19 188

原创 stream流题

【代码】stream流题。

2024-11-07 19:30:05 298

原创 拼图游戏(项目)(2)

【代码】拼图游戏(项目)(2)

2024-10-19 20:13:19 160

原创 拼图游戏(项目)(1)

【代码】拼图游戏(项目)(1)

2024-10-19 20:12:26 280

原创 学生工具类返回最大年龄

【代码】学生工具类返回最大年龄。

2024-09-19 15:49:41 174

原创 【Java】数组求和工具ArrayUtil

【代码】【Java】数组求和工具ArrayUtil。

2024-09-19 15:25:17 251

原创 学生管理系统升级版,加入登录注册功能

【代码】学生管理系统升级版,加入登录注册功能。

2024-09-18 14:56:56 281

原创 学生管理系统

【代码】学生管理系统。

2024-09-15 17:08:24 195

原创 文字格斗游戏

【代码】文字格斗游戏。

2024-08-26 09:28:51 161

原创 双色球彩票系统

【代码】双色球彩票系统。

2024-08-17 13:08:10 176

原创 编写QQ的环境变量,更快更简单打开QQ(学习记录)

这样就能快速打开QQ(指在cmd中)可以用此方法打开一些隐秘的文件或软件。

2024-07-10 08:43:56 217

原创 用CMD打开QQ(学习记录)

首先找到QQ的路径,可以右键属性查看目录。最后输入qq.exe,就能打开。再打开cmd,切换到对应目录。

2024-07-10 08:32:44 769

原创 模仿电影信息系统(练习)

二 MovieOperator。MovieOperator(操作系统)Movie(定义成员变量)

2024-07-03 09:39:14 344 1

原创 学生管理系统

2024-06-27 20:39:23 265

原创 用户管理系统

登录名:admin 密码:123456。

2024-05-27 19:57:32 443

原创 登录页面与科技可持续发展

【代码】登录页面与科技可持续发展。

2024-05-17 13:52:48 369

原创 设计一个主题为数据隐私保护的页面(不是)

实验目的:掌握flex布局、掌握css中字体和文本相关属性,掌握css中背景和列表相关属性。

2024-05-07 21:12:09 402 1

学生管理系统代码具体内容

学生管理系统代码具体内容

2024-06-27

MySQL和数据表操作

MySQL和数据表操作

2024-05-01

编写一个公益项目,但是老大

编写一个公益项目,但是老大

2024-04-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除