自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 请求头 Token 里的 Bearer 到底是什么?请求头请求体又是什么

HTTP请求报文由请求头和请求体组成,遵循固定顺序:请求头在前,请求体在后,中间用空行分隔。请求头包含元数据(如数据格式、长度、认证信息),请求体携带实际传输数据。GET请求通常无请求体,POST/PUT等请求则包含两者。认证接口需在请求头携带"Authorization: Bearer Token",其中Bearer是OAuth2.0/JWT认证的标准令牌类型标识,表示持有者凭据。这种结构确保服务端能先解析请求头获取必要信息,再处理请求体数据。

2026-04-03 10:52:11 118

原创 后端分页查询:为什么推荐用POST而非GET?

摘要: 在企业开发中,复杂查询(如订单分页)应使用POST而非GET,主要原因包括:1. GET不支持@RequestBody接收JSON参数;2. GET的URL参数长度受限且不适用于复杂条件;3. POST请求体更安全,避免隐私数据泄露;4. 符合行业规范(简单查询用GET,复杂查询用POST)。因此,订单分页等接口采用POST是正确且通用的做法。

2026-04-03 10:13:04 130

原创 SpringBoot 接口传参全攻略:新手必懂的查询参数 / 路径参数 / JSON 参数

本文系统讲解SpringBoot接口传参的核心知识点,涵盖三种标准传参方式:URL查询参数(自动封装DTO)、路径参数(@PathVariable)、JSON请求体(@RequestBody)。重点区分了DTO自动封装与@RequestParam的区别,强调GET请求不使用JSON的铁律。通过省市区联动接口的实战案例,展示如何设计多级查询接口,包括参数传递、层级判断和返回值设计。最后总结了新手常见问题和必背口诀,帮助开发者快速掌握规范化的接口开发方法。

2026-03-25 19:25:23 427

原创 登录方式:JWT(JSON Web Token), Session + Cookie 和 Opaque Token(不透明令牌/引用令牌)

本文通过游乐园的比喻形象解释了三种认证机制:Session+Cookie(记名手环)、OpaqueToken(寄存牌)和JWT(防伪门票)。从载体、存储位置、服务器压力等维度对比了三者差异,重点分析了JWT的流程和潜在问题:注销困难(建议黑名单或版本号机制)、信息过大(只存核心数据)、泄露风险(短效Token+HTTPS)。指出JWT不适合极度敏感系统、单体应用和带宽敏感场景,建议现有JWT项目检查敏感信息、过期时间设置,必要时实现RefreshToken机制。

2026-03-25 17:15:41 488

原创 IP、端口、接口、DNS 到底是什么关系?

本文通过快递送货的类比,形象解释了IP地址、端口和接口三者的关系:IP地址是设备唯一标识(如城市住址),端口是服务门牌号(如小区门牌),接口是业务功能入口(如家中窗口)。三者层级递进:先通过IP找到机器,再通过端口定位服务,最后通过接口访问具体功能。文章详细解析了三者的定义、分类及作用,并结合开发场景(如Apifox接口测试、IDEA远程调试)说明其联动关系,最后总结了三者的本质区别与数量关系,并给出排查网络问题的实用建议。

2026-03-19 11:12:54 559

原创 SPA MPA CSR SSR他们的优缺点以及相互之间的联系

本文对比分析了前端开发的三大核心维度:架构模式(SPA vs MPA)、渲染方式(CSR vs SSR)及其组合演变。传统MPA+SSR组合(如JSP/PHP)适合内容型网站,但交互体验差;SPA+CSR(React/Vue)提升用户体验但SEO差;现代同构方案(SPA+SSR)如Next.js/Nuxt.js融合了两者优势,首次访问SSR保证SEO和首屏速度,后续交互转为CSR保持流畅。选择方案需权衡SEO需求和交互体验:无SEO要求选SPA+CSR,传统内容站选MPA+SSR,现代官网推荐SPA+SSR

2026-03-19 10:54:53 423

原创 git团队协作开发流程 git rebase与git merge

团队协作开发的核心流程是:1. 初始化克隆项目(git clone) → 2. 创建功能分支(git checkout -b)开发 → 3. 日常提交(git add/commit) → 4. 推送前同步主分支(git pull) → 5. 推送功能分支(git push) → 6. 发起Pull Request进行代码审查与合并。关键原则是隔离开发环境,避免直接修改主分支。常见问题包括代码冲突(需手动解决)、推送失败(先拉取最新代码)和本地环境混乱(可用git restore或stash恢复)。协作方式建

2026-02-09 22:53:33 1361

原创 事务 (Transaction) 和 回滚 (Rollback)

事务是一组不可分割的SQL操作集合,具有ACID特性(原子性、一致性、隔离性、持久性)。Spring通过@Transactional注解管理事务,利用AOP代理机制在方法执行前后开启和提交/回滚事务。当异常发生时,Spring代理会捕获异常并调用rollback(),数据库则通过UndoLog执行反向操作恢复数据。需注意Spring默认仅对RuntimeException回滚,建议显式指定rollbackFor=Exception.class处理所有异常。整个事务处理涉及Spring代理拦截和数据库Undo

2026-02-04 13:51:27 748

原创 redis中String和zset的底层数据结构详解

Redis底层数据结构深度解析:String采用SDS实现,具有O(1)长度查询、二进制安全等特性,根据长度使用int/embstr/raw三种编码;ZSet则采用ZipList/SkipList+Dict的混合结构,兼顾内存效率与查询性能。SkipList作为ZSet核心,通过多级索引实现O(logN)复杂度,相比红黑树更易实现且范围查询更优。Redis通过智能编码切换和结构组合,在内存效率与操作性能间取得平衡,体现了其作为高性能KV数据库的设计精髓。

2026-02-03 22:44:45 753

原创 垃圾回收算法GC

Java垃圾回收机制可分为基础算法和具体实现两大层次。三大基础算法包括:标记-清除(易产生碎片)、标记-复制(适合存活率低的年轻代)、标记-整理(适合老年代但耗时)。JDK中的具体回收器(如Parallel、CMS、G1、ZGC)根据分代特性组合这些算法:年轻代主要采用标记-复制,老年代则选用标记-清除或标记-整理。JDK版本演进反映了GC发展历程:JDK8默认ParallelGC注重吞吐量,JDK9-11转向G1实现可控停顿,JDK17+的ZGC通过着色指针技术实现亚毫秒级停顿。不同回收器在STW策略、算

2026-02-01 21:28:58 823

原创 什么是 RESTful?

摘要:RESTful是一种基于HTTP协议的软件架构风格,其核心思想是将网络资源抽象化,通过标准HTTP方法(GET/POST/PUT/DELETE)进行操作。主要特征包括:URL仅包含名词表示资源、HTTP方法定义操作、无状态设计。相比传统RPC风格接口,RESTful通过/users/1形式的URL和对应HTTP方法实现CRUD操作,使接口更规范统一。在Java实现中,使用Spring MVC的@RestController、@GetMapping等注解,配合ResponseEntity返回状态码和JS

2026-02-01 14:42:48 1489

原创 5. GET 和POST 的区别

GET和POST是HTTP请求的两种基本方法,主要区别体现在:1)作用不同:GET用于获取资源,POST用于提交/修改资源;2)参数位置:GET参数在URL中,POST在请求体中;3)安全性:POST相对更安全;4)数据长度:GET受限,POST无限制;5)缓存特性:GET可缓存,POST默认不缓存。GET请求参数可通过QueryString或PathVariable传递,适合幂等操作;POST请求则适合非幂等操作,如提交表单数据。开发者应根据实际需求选择合适的方法。

2026-01-27 23:57:49 356

原创 哈希(Hashing)究竟是什么,为什么这么多地方都提到了哈希

哈希摘要 哈希是一种将任意长度输入转换为固定长度输出的算法,建立数据内容到存储位置的直接映射,实现O(1)高效查找。核心应用是哈希表,通过数组和冲突解决策略(链地址法或开放寻址法)存储数据。进阶应用中,布隆过滤器通过位数组和多个哈希函数实现高效去重;一致性哈希优化分布式系统负载均衡;GeoHash将地理位置编码为一维字符串,支持邻近查询。哈希的四大优势包括极速查找、数据压缩、均匀分布和单向隐匿。在Java中,重写equals()需同时重写hashCode()以保证哈希表正确性,而ThreadLocal采用开

2026-01-26 22:51:49 712

原创 java后端面试中经常涉及的JVM知识点

JVM核心知识点速览:内存模型分为线程私有区(虚拟机栈、本地方法栈、程序计数器)和共享区(堆、方法区)。垃圾回收采用可达性分析算法,主要算法包括标记-清除、标记-复制和标记-整理,常用收集器有CMS和G1。类加载采用双亲委派机制保障安全,流程包括加载、验证等7个阶段。OOM排查需生成堆转储文件,使用MAT等工具分析大对象和引用链。面试重点包括内存分区、GC原理、类加载机制及实际故障排查经验。

2026-01-26 10:51:04 770

原创 Spring MVC 全流程深度解析:从请求到响应的暗中流程

摘要:本文深入解析SpringMVC处理HTTP请求的核心机制。通过"米其林餐厅"类比,阐述DispatcherServlet、HandlerMapping等组件分工。详细拆解请求7个关键步骤:从拦截请求到响应返回,重点说明Controller业务处理和视图解析过程。同时指出前后端分离架构下ViewResolver被HttpMessageConverter替代的变化,并提示Controller单例模式的线程安全问题。文章揭示了SpringMVC通过组件化解耦实现高效请求处理的原理,为理解

2026-01-25 18:01:17 687

原创 Spring Boot 自动配置原理详解:告别 XML

SpringBoot自动配置机制解析:通过@EnableAutoConfiguration注解触发,利用AutoConfigurationImportSelector扫描META-INF/spring.factories或AutoConfiguration.imports文件获取候选配置类。采用@Conditional系列注解(如OnClass、OnMissingBean、OnProperty)实现按需加载,确保只有满足条件的配置类才会生效。该机制基于Java SPI和Spring条件装配,通过"

2026-01-25 16:39:01 926

空空如也

空空如也

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

TA关注的人

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