<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Hi_alan的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/Hi_alan</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Hi_alan]]></copyright><item><title><![CDATA[localhost vs 127.0.0.1 的 6 大注意事项（开发者必看）]]></title><link>https://blog.csdn.net/Hi_alan/article/details/149314536</link><guid>https://blog.csdn.net/Hi_alan/article/details/149314536</guid><author>Hi_alan</author><pubDate>Sun, 13 Jul 2025 19:50:11 +0800</pubDate><description><![CDATA[标题：localhost与127.0.0.1的6个关键区别 摘要：localhost和127.0.0.1看似等价，实际存在重要差异：1)解析机制不同，localhost依赖hosts文件；2)浏览器视为不同&quot;源&quot;；3)IPv6可能优先解析；4)防火墙规则可能区分；5)服务器配置严格识别；6)容器环境中指向不同。这些差异可能导致服务不可达、跨域问题等，建议根据场景明确选择使用方式，在容器环境中推荐使用0.0.0.0监听。(150字)]]></description><category></category></item><item><title><![CDATA[IP 地址与网络基础全面解析]]></title><link>https://blog.csdn.net/Hi_alan/article/details/149314271</link><guid>https://blog.csdn.net/Hi_alan/article/details/149314271</guid><author>Hi_alan</author><pubDate>Sun, 13 Jul 2025 19:40:57 +0800</pubDate><description><![CDATA[本文介绍了网络基础知识要点：1）IPv4（32位，点分十进制）与IPv6（128位，冒号分隔十六进制）的地址格式差异；2）特殊IP地址解析（127.0.0.1本地回环、0.0.0.0全网卡监听）；3）Linux网卡类型说明（lo回环网卡与eth0/ens33外联网卡）；4）ping命令基于ICMP协议的网络连通性测试原理；5）HTTP请求中Host字段的域名/IP访问机制及其应用场景（如强制域名访问）。内容涵盖网络协议、地址配置和实用诊断工具。]]></description><category></category></item><item><title><![CDATA[跨域请求真的很简单，一文教你轻松应对 CORS 问题]]></title><link>https://blog.csdn.net/Hi_alan/article/details/146607419</link><guid>https://blog.csdn.net/Hi_alan/article/details/146607419</guid><author>Hi_alan</author><pubDate>Fri, 28 Mar 2025 18:19:09 +0800</pubDate><description><![CDATA[问题 1：CORS 错误：Request header field <header> is not allowed by Access-Control-Allow-Headers
问题 2：CORS 错误：The value of the 'Access-Control-Allow-Origin' header must not be '\*' when the request's credentials mode is 'include']]></description><category></category></item><item><title><![CDATA[通过源码解决Field xxxMapper in xxx required a bean of type ‘xxxMapper‘ that could not be found.]]></title><link>https://blog.csdn.net/Hi_alan/article/details/144833200</link><guid>https://blog.csdn.net/Hi_alan/article/details/144833200</guid><author>Hi_alan</author><pubDate>Mon, 30 Dec 2024 20:43:39 +0800</pubDate><description><![CDATA[项目中我们经常会遇到这样的错误：`Field userMapper in com.shiqi.mybatis.bug.demo.service.impl.UserServiceImpl required a bean of type 'com.shiqi.mybatis.bug.demo.mapper.UserMapper' that could not be found.` 
今天我们就一起通过源码来探究下产生的原因。]]></description><category></category></item><item><title><![CDATA[使用Java和不同HTTP客户端库发送各种Content-Type类型请求]]></title><link>https://blog.csdn.net/Hi_alan/article/details/144738039</link><guid>https://blog.csdn.net/Hi_alan/article/details/144738039</guid><author>Hi_alan</author><pubDate>Thu, 26 Dec 2024 14:35:17 +0800</pubDate><description><![CDATA[在HTTP协议中，头用于指示请求或响应中数据的媒体类型。了解和正确设置 对于确保客户端和服务器之间正确解析数据至关重要。本文将介绍如何使用Java 和 不同的HTTP客户端发送各种 类型的请求。以下是几种常见的 类型及其应用场景：


描述: 用于发送键值对数据，通常用于表单提交。传参方式: 数据以键值对的形式编码在请求体中，格式类似于查询字符串。示例:
请求头：解析前：
解析后：描述: 用于发送包含文件上传的表单数据。传参方式: 数据以多部分形式编码，每部分包含一个表单字段或文件。示例:
请求头：解析前：]]></description><category></category></item><item><title><![CDATA[深入理解 HTTP HEAD 请求：节省带宽、提高效率的秘密武器]]></title><link>https://blog.csdn.net/Hi_alan/article/details/144614453</link><guid>https://blog.csdn.net/Hi_alan/article/details/144614453</guid><author>Hi_alan</author><pubDate>Fri, 20 Dec 2024 16:44:37 +0800</pubDate><description><![CDATA[HEAD 请求是 HTTP协议中的一种请求方法，HEAD请求是与GET请求相似的一种请求方式，唯一的区别是：•	GET 请求：请求并返回资源的完整内容和响应头。•	HEAD 请求：只请求并返回资源的响应头，不返回响应体（即没有实际的数据内容）。HEAD 请求是一种非常有效的 HTTP 请求方法，适用于需要获取资源元数据而不需要完整内容的场景。它通过节省带宽、提高响应速度，成为了缓存管理、网站健康检查、API 调试等任务中的得力助手。]]></description><category></category></item><item><title><![CDATA[“Java开发者必备神器：掌握 BeanUtils，这篇就够了！”]]></title><link>https://blog.csdn.net/Hi_alan/article/details/144321629</link><guid>https://blog.csdn.net/Hi_alan/article/details/144321629</guid><author>Hi_alan</author><pubDate>Sun, 08 Dec 2024 13:37:32 +0800</pubDate><description><![CDATA[BeanUtils是Apache Commons提供的一个工具类库，专注于JavaBean的属性操作。对象属性的拷贝动态设置属性值类型转换Bean 与 Map的相互转换极大减少手动写setter/getter的繁琐提供丰富的工具方法，便于快速开发。]]></description><category></category></item><item><title><![CDATA[让调试变成艺术！掌握 Console.log 的 12 种花式玩法]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143952467</link><guid>https://blog.csdn.net/Hi_alan/article/details/143952467</guid><author>Hi_alan</author><pubDate>Thu, 21 Nov 2024 19:09:23 +0800</pubDate><description><![CDATA[在本文中，我们将介绍 12 种 console.log 的花式玩法，助你从调试“小白”进阶成调试“大师”，甚至让输出日志变成一种艺术！]]></description><category></category></item><item><title><![CDATA[打造属于你的文章发布平台，支持一键“禁止转载”设置]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143945733</link><guid>https://blog.csdn.net/Hi_alan/article/details/143945733</guid><author>Hi_alan</author><pubDate>Thu, 21 Nov 2024 15:07:26 +0800</pubDate><description><![CDATA[随着互联网的普及，原创内容变得越来越容易被复制和转载。作为创作者，我们有权利保护自己的劳动成果免受盗用。而在一个文章发布平台中提供“禁止转载”功能，能够有效提高文章内容的保护力度，减少未经授权的转载行为。在这篇文章中，我们将一步步构建一个简易的文章发布系统，并且为每篇文章增加“禁止转载”设置，保护你的原创内容。创建简易文章发布平台框架
3. 第二部分：实现文章发布界面
3.1 设计前端页面
文章发布页面包含文章标题、内容以及“禁止转载”选项。可以使用 HTML 和 CSS 创建一个简洁的表单页面。
4. 第]]></description><category></category></item><item><title><![CDATA[一键开启原创保护！教你实现网页“禁止复制转载”全套防护方案]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143944439</link><guid>https://blog.csdn.net/Hi_alan/article/details/143944439</guid><author>Hi_alan</author><pubDate>Thu, 21 Nov 2024 14:33:47 +0800</pubDate><description><![CDATA[在内容为王的时代，保护原创已成为所有创作者的共识。然而，稍不留神，你精心创作的文章可能就被复制粘贴，甚至未经授权被发布到其他平台。这不仅让人愤怒，也对你的创作权益造成威胁。那么，如何在技术层面上有效防护呢？今天，我将为你提供一整套网页“禁止复制转载”的解决方案，从基础设置到高级防护，助你轻松实现内容保护，再也不用担心你的作品被随意搬运！]]></description><category></category></item><item><title><![CDATA[90%的人不知道的秘密：网页文字禁止复制？教你7招轻松破解！]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143934088</link><guid>https://blog.csdn.net/Hi_alan/article/details/143934088</guid><author>Hi_alan</author><pubDate>Thu, 21 Nov 2024 10:35:08 +0800</pubDate><description><![CDATA[从关闭 JavaScript 到利用 OCR 技术，这7招涵盖了各种场景，让你再也不用担心无法复制网页文字。想要更多实用技能？关注我，获取更多神奇技巧！]]></description><category></category></item><item><title><![CDATA[从一次java.io.StreamCorruptedException: invalid stream header: 48656C6C 错误中学到的调试思路]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143889114</link><guid>https://blog.csdn.net/Hi_alan/article/details/143889114</guid><author>Hi_alan</author><pubDate>Tue, 19 Nov 2024 16:51:40 +0800</pubDate><description><![CDATA[在项目中，我试图使用 Java 的 ObjectInputStream 反序列化一个对象。代码逻辑看似简单：读取字节流，将其转为 Java 对象。]]></description><category></category></item><item><title><![CDATA[Shell 脚本中的大小写陷阱：为什么 ${PWD} 而不是 ${pwd}？]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143787538</link><guid>https://blog.csdn.net/Hi_alan/article/details/143787538</guid><author>Hi_alan</author><pubDate>Fri, 15 Nov 2024 10:34:45 +0800</pubDate><description><![CDATA[pwd 是一个内建命令，用于显示当前工作目录的路径，但它不会作为环境变量存在。${PWD} 是一个内建环境变量，始终指向当前工作目录的路径，使用时需要大写。]]></description><category></category></item><item><title><![CDATA[误删代码后直接推送？别慌！教你几种找回丢失代码的方法（最终靠IDEA救了一命）]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143698016</link><guid>https://blog.csdn.net/Hi_alan/article/details/143698016</guid><author>Hi_alan</author><pubDate>Mon, 11 Nov 2024 23:45:31 +0800</pubDate><description><![CDATA[有一次我开发新功能时，为了保留原始代码，手动备份了一份文件。接着，我将原文件重命名，并把新的文件重命名为原始文件名。操作完成后，我没多想，直接推送到了远程仓库。等我再次检查时，发现文件内容还是原始版本的代码，而备份文件已经被我删掉了！懵了，这意味着我的新功能代码被覆盖了，Git的历史记录中也没有这个修改版本。怎么找回丢失的代码呢？下面是我的寻找之旅，以及最终成功恢复代码的经历。]]></description><category></category></item><item><title><![CDATA[“还在四处搜IDEA快捷键？IDEA其实早给你准备好了PDF！”]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143697689</link><guid>https://blog.csdn.net/Hi_alan/article/details/143697689</guid><author>Hi_alan</author><pubDate>Mon, 11 Nov 2024 23:14:46 +0800</pubDate><description><![CDATA[还在为IDEA的快捷键到处查找？其实IDEA自带了一份 快捷键PDF，完全不需要上网费劲找，轻松一键就能看到。如何找到内置快捷键PDF？以下是导出的PDF文件。]]></description><category></category></item><item><title><![CDATA[502 Bad Gateway 错误详解：从表现推测原因，逐步排查直至解决]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143463753</link><guid>https://blog.csdn.net/Hi_alan/article/details/143463753</guid><author>Hi_alan</author><pubDate>Sun, 03 Nov 2024 12:35:06 +0800</pubDate><description><![CDATA[502 Bad Gateway 错误通常意味着服务器之间的通信失败，但导致的具体原因往往因场景而异。]]></description><category></category></item><item><title><![CDATA[4.WebSocket 配置与Nginx 的完美结合]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143449752</link><guid>https://blog.csdn.net/Hi_alan/article/details/143449752</guid><author>Hi_alan</author><pubDate>Sat, 02 Nov 2024 13:45:33 +0800</pubDate><description><![CDATA[在现代 web 应用中，WebSocket 作为一种全双工通信协议，为实时数据传输提供了强大的支持。若要确保 WebSocket 在生产环境中的稳定性和性能，使用 Nginx 作为反向代理服务器是一个明智的选择。本篇文章将带你了解如何在 Nginx 中配置 WebSocket，并验证其是否正常工作。]]></description><category></category></item><item><title><![CDATA[美定制！用Vue的:deep选择器轻松覆盖第三方组件样式]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143448138</link><guid>https://blog.csdn.net/Hi_alan/article/details/143448138</guid><author>Hi_alan</author><pubDate>Sat, 02 Nov 2024 11:26:05 +0800</pubDate><description><![CDATA[在Vue中，Scoped样式会限制样式作用范围，仅作用于组件自身。然而，第三方组件往往是以封装的方式引入的，Scoped样式无法直接穿透进入子组件。:deep选择器则解决了这个问题，它允许我们“深入”到子组件的内部样式中。]]></description><category></category></item><item><title><![CDATA[3. 探索 Netty 的粘包与拆包解决方案]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143434656</link><guid>https://blog.csdn.net/Hi_alan/article/details/143434656</guid><author>Hi_alan</author><pubDate>Fri, 01 Nov 2024 16:22:40 +0800</pubDate><description><![CDATA[在TCP传输过程中，消息并不是按“包”的概念发送的。粘包： 多条消息在接收端拼接在了一起，导致接收方在解析时无法确定消息的边界。拆包： 一条细哦西被拆分成了多个部分，导致接收方收不到完整的数据。例如，当客户端发送了两条消息“Hello"和"World"时，接收方可能收到"HelloWorld",也可能收到"Hell" 和 “oWorld" 这样的切片。Netty 提供了一套完整的解码器，帮助开发者有效解决粘包和拆包的问题。通过选择合适的解码器，你可以确保数据在不同场景下都能够稳定传输。]]></description><category></category></item><item><title><![CDATA[2. 探索 Netty 的进阶特性：解锁高性能通信的秘诀]]></title><link>https://blog.csdn.net/Hi_alan/article/details/143433131</link><guid>https://blog.csdn.net/Hi_alan/article/details/143433131</guid><author>Hi_alan</author><pubDate>Fri, 01 Nov 2024 15:32:27 +0800</pubDate><description><![CDATA[在实际项目中，传输的数据格式可能不止于简单的文本。Netty 提供了强大的编解码功能，让你能够在数据进出网络时实现自定义的格式转换，以提升传输效率和数据处理的灵活性。编码器（Encoder）：用于将消息转换为二进制数据，便于在网络中传输。解码器（Decoder）：用于将接收到的二进制数据还原为特定格式，方便业务逻辑处理。// JSON 编码器@Override// 将对象转换为字节数组// 写入 ByteBuf// JSON 解码器@Override// 读取 ByteBuf 数据。]]></description><category></category></item></channel></rss>