- 博客(12)
- 收藏
- 关注
原创 Nginx为何拦截带下划线的请求头?
🔍 Zuul请求头下划线问题解析 问题:通过Zuul转发含auth_user_id请求头时,后端无法接收,但改为authuserid或auth-user-id则正常。 原因: HTTP协议允许头字段含下划线,但Nginx默认会丢弃带_的请求头(早期CGI规范的安全限制)。 ✅ 解决方案: 推荐:改用连字符命名(如auth-user-id),兼容性最佳,无需额外配置。 若必须用下划线,可在Nginx中配置underscores_in_headers on;(需权衡安全风险)。 📌 最佳实践: 统一使用ke
2025-08-06 10:14:06
606
原创 IntelliJ IDEA配置Tomcat UTF-8终极指南
摘要:解决IntelliJIDEA中Tomcat乱码问题需多层级配置。在VM选项添加-Dfile.encoding=UTF-8;修改Tomcat的server.xml配置URIEncoding="UTF-8";web应用层需设置字符编码过滤器和JSP页面声明。配置后重启服务,通过响应头验证UTF-8编码是否生效。若仍存在乱码需检查代码中的字符转换逻辑
2025-07-01 20:04:01
341
原创 HTTP状态码分类与使用指南
HTTP状态码分类与使用指南 HTTP状态码分为五类:1xx(临时响应)、2xx(成功)、3xx(重定向)、4xx(客户端错误)和5xx(服务器错误)。
2025-07-01 14:54:54
768
原创 优雅处理Java集合空指针的3种方案
针对Java开发中常见的集合空指针问题,提出三种优化方案:1)使用Apache Commons Collections的CollectionUtils工具类,通过isNotEmpty判断或emptyIfNull方法处理空集合;2)采用Optional.ofNullable配合字符串分割,实现健壮的字符串转List操作;3)结合Java8的Optional和Stream API,对可能为null的集合进行安全过滤操作。这些方案有效提升了代码的健壮性,简化了空值处理逻辑,适用于各类集合操作场景。
2025-07-01 14:51:51
134
原创 避免返回值:3种变量状态共享方案
文章摘要:本文介绍了三种在Java中通过引用类型包装基本计数变量的方法:使用数组、AtomicInteger和自定义包装类。数组方案简单但类型不安全;AtomicInteger提供线程安全操作,适合并发场景;自定义类扩展性更强。所有方案都通过引用传递机制,使方法内修改直接影响原始对象状态。建议根据实际需求选择,并发环境优先考虑AtomicInteger。
2025-07-01 14:49:30
147
原创 Web工程路径:绝对路径优先原则
Web开发中路径处理的核心要点:1)优先使用绝对路径避免相对路径的不确定性;2)区分浏览器和服务器对"/"的不同解析规则(浏览器解析为根URL,服务器解析为工程路径);3)注意结尾斜杠的语义差异(/表示目录);4)重定向需包含工程路径;5)使用ServletContext.getContextPath()动态生成路径。开发时应遵循:服务器端用/开头结合工程路径,客户端用JSP动态标签,确保路径准确性。
2025-06-23 15:49:44
414
原创 Vue渲染技巧:v-if与v-show对比
Vue中v-if和v-show的区别:v-if在条件为false时不会渲染元素,适合不频繁切换的场景;v-show通过CSS隐藏元素但仍保留在DOM中,适合频繁切换的情况。v-if可以和v-else-if、v-else配合实现多条件分支。性能优化建议:频繁切换用v-show,静态内容用v-if。注意v-for优先级高于v-if,建议分开使用。这两种指令可根据实际场景选择使用,以达到最佳性能表现。
2025-06-23 14:53:55
147
原创 Git三区一库核心解析
摘要:Git版本控制系统包含四个核心概念:工作区是直接修改代码的本地目录;暂存区临时存储准备提交的变更;本地仓库永久保存项目历史记录;远程仓库用于团队协作共享代码。开发者通过git add将修改加入暂存区,用git commit提交到本地仓库,再通过git push/pull与远程仓库同步更新。(148字)
2025-06-23 11:45:25
281
原创 突破Arrays.asList限制的2种高效方案
Arrays.asList()返回固定长度List,可通过两种方案解决其修改限制:1)使用new ArrayList<>(Arrays.asList())创建独立可修改的List;2)Java8+用Arrays.stream().collect()转换。需注意原始数组与asList()结果相互影响,修改包装List不影响原数组,也可用Collections.unmodifiableList()主动创建不可变List。
2025-06-23 11:38:05
248
原创 MyBatis中#与$的终极对决
摘要:MyBatis中#和$均用于动态参数替换。#采用预编译方式(替换为?),能防SQL注入,适用于条件值等常规场景;$直接拼接参数值,存在注入风险,仅用于动态表名/列名等特殊需求。#可缓存提升性能,$每次生成新SQL。建议优先使用#,$需严格校验参数安全性。(148字)
2025-06-23 11:35:38
179
原创 MybatisPlus更新踩坑:int变Integer轻松解决
摘要:MybatisPlus更新int类型字段时默认0值会被纳入SQL,导致非预期更新。建议将int改为Integer包装类型,通过null值区分未赋值情况。优化方案包括:1)使用@TableField(updateStrategy=NOT_NULL)注解;2)在XML中添加非空条件判断;3)全局配置更新策略为not_null。这些方法可有效避免基本类型默认值引发的更新问题。(135字)
2025-06-20 11:43:29
250
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人