<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chinalog的专栏]]></title><description><![CDATA[5i设计--开发是快乐的事]]></description><link>https://blog.csdn.net/chinalog</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; chinalog]]></copyright><item><title><![CDATA[ Java：SQL 注入漏洞]]></title><link>https://blog.csdn.net/chinalog/article/details/165844336</link><guid>https://blog.csdn.net/chinalog/article/details/165844336</guid><author>chinalog</author><pubDate>Fri, 18 Sep 2026 09:40:28 +0800</pubDate><description><![CDATA[务必确保 PreparedStatement、ResultSet 和 Connection 在使用后被正确关闭，推荐使用 Java 7 引入的 ‌try-with-resources‌ 语句来自动管理资源，防止内存泄漏。针对 SQL 注入漏洞的防护，最核心且推荐的优化方案是使用‌预编译语句（PreparedStatement）‌替代传统的字符串拼接。参数纯数据处理‌：当调用 setString 绑定参数时，数据库将传入的值（如 admin' --）‌严格视为纯文本数据‌，而不是 SQL 代码的一部分。]]></description><category></category></item><item><title><![CDATA[Spring MVC：HttpMessageConverter ]]></title><link>https://blog.csdn.net/chinalog/article/details/165749768</link><guid>https://blog.csdn.net/chinalog/article/details/165749768</guid><author>chinalog</author><pubDate>Thu, 17 Sep 2026 16:16:57 +0800</pubDate><description><![CDATA[关键点‌：转换器的‌注册顺序‌非常重要。因此，自定义转换器通常需要通过配置调整顺序，或者确保其 canRead/canWrite 逻辑足够精确，避免拦截默认行为。HTTP 协议传输的是字节流，而 Java 业务代码处理的是对象这一矛盾，实现了数据的序列化（Object -> HTTP Body）和反序列化（HTTP Body -> Object）在 Spring Boot 中，推荐通过实现 WebMvcConfigurer 接口来注册，这样可以保留默认转换器，仅添加新的转换器或调整顺序。]]></description><category></category></item><item><title><![CDATA[Postman：`Content-Type` 和 `charset`]]></title><link>https://blog.csdn.net/chinalog/article/details/165748874</link><guid>https://blog.csdn.net/chinalog/article/details/165748874</guid><author>chinalog</author><pubDate>Thu, 17 Sep 2026 15:54:15 +0800</pubDate><description><![CDATA[在 Postman 里，`Content-Type` 和 `charset` 是一对固定搭配：前者告诉服务器“发的是什么格式的数据”，后者告诉它“这段文本用什么字符编码”。在 Body 里选 raw → JSON，让 Postman 自动把 `Content-Type` 设成 `application/json`。中文乱码：通常是因为响应头里没声明 `charset=UTF-8`。3. 注意：`charset=UTF-8` 要紧跟分号，中间不要有空格，写成 `charset= UTF-8` 会失效。]]></description><category></category></item><item><title><![CDATA[SVN 上查找文件]]></title><link>https://blog.csdn.net/chinalog/article/details/165725115</link><guid>https://blog.csdn.net/chinalog/article/details/165725115</guid><author>chinalog</author><pubDate>Thu, 17 Sep 2026 10:52:13 +0800</pubDate><description><![CDATA[远程仓库查找：使用 `svn list -R URL` 递归列出所有文件，配合 `grep` 或 `findstr` 过滤文件名。- 查看状态：使用 `svn status` 查看本地文件与仓库的差异状态，辅助定位未纳入控制的文件。- 查看文件内容：用 `svn cat URL/文件路径` 直接查看文件内容，无需下载。- 本地文件搜索：若已检出到本地，可直接用 Windows 资源管理器的搜索功能查找。- 查看历史记录：通过 `svn log` 查看文件的提交历史，定位特定版本的文件。]]></description><category></category></item><item><title><![CDATA[AI Agent规模化]]></title><link>https://blog.csdn.net/chinalog/article/details/165619344</link><guid>https://blog.csdn.net/chinalog/article/details/165619344</guid><author>chinalog</author><pubDate>Wed, 16 Sep 2026 16:35:47 +0800</pubDate><description><![CDATA[协同调度‌：复杂任务需要多Agent分工协作，比如一个“费用报销”任务，需要单据识别Agent、合规校验Agent、预算核对Agent、支付执行Agent自动串联，无需人工介入。不同职能的Agent（财务审核Agent、运维排障Agent、业务流程Agent）自动承接不同环节的工作，形成人机协同的新型组织流程。过去企业的AI应用大多是零散的单点工具：单客服Agent、单代码生成Agent、单数据查询Agent，彼此数据隔离、上下文不互通。1. 从“单点工具”到“数字员工集群”的范式跃迁。]]></description><category></category></item><item><title><![CDATA[Jackson 反序列化字段名不匹配]]></title><link>https://blog.csdn.net/chinalog/article/details/165593731</link><guid>https://blog.csdn.net/chinalog/article/details/165593731</guid><author>chinalog</author><pubDate>Wed, 16 Sep 2026 10:53:20 +0800</pubDate><description><![CDATA[但鉴于你的字段名风格不统一（有的全大写 HIS，有的混合 ClinicCaseCode，有的 IdentID），‌此方案不适用‌，容易导致更多映射错误。检查 Recipe.java 及其内部引用的类（如 Diagnose, FeeItem 等），同样为它们的字段添加 @JsonProperty 注解，确保与 JSON 中的键名完全一致（包括大小写）。1、大小写差异‌：已知属性列表中是 ‌clinicCaseCode‌（首字母小写），而 JSON 中传的是 ‌ClinicCaseCode‌（首字母大写）。]]></description><category></category></item><item><title><![CDATA[Spring：HttpMessageConverter]]></title><link>https://blog.csdn.net/chinalog/article/details/165589700</link><guid>https://blog.csdn.net/chinalog/article/details/165589700</guid><author>chinalog</author><pubDate>Wed, 16 Sep 2026 10:17:25 +0800</pubDate><description><![CDATA[Spring 框架在处理 HTTP 请求和响应时，会使用配置的 HttpMessageConverter（消息转换器）来完成数据格式的转换。写入响应（序列化）‌：当控制器方法带有 @ResponseBody 或返回值为对象且被 ResponseEntity 包裹时，Spring 会根据请求头中的 Accept 属性（客户端希望接收的类型）和返回值类型，选择合适的 Converter 将 Java 对象转换为字节流写入响应体。Spring 按列表顺序遍历，第一个匹配的会被使用。]]></description><category></category></item><item><title><![CDATA[SpringBoot： @RequestBody String ]]></title><link>https://blog.csdn.net/chinalog/article/details/165588147</link><guid>https://blog.csdn.net/chinalog/article/details/165588147</guid><author>chinalog</author><pubDate>Wed, 16 Sep 2026 10:13:05 +0800</pubDate><description><![CDATA[如果需要使用特定的 JSON 库（如 Fastjson、Gson）进行解析，或者需要在反序列化前对原始 JSON 字符串进行预处理（如解密、验签），可以先接收为 String。// jsonBody 是原始字符串，如 "{\"name\":\"Alice\",\"age\":30}"错误理解‌：以为传入 {"name":"Alice"}，String 变量会自动变成对象或提取出 name 字段。事实‌：变量 text 的值将是完整的字符串 "{\"name\":\"Alice\"}"。]]></description><category></category></item><item><title><![CDATA[PostMan：400 Bad Request‌]]></title><link>https://blog.csdn.net/chinalog/article/details/165483988</link><guid>https://blog.csdn.net/chinalog/article/details/165483988</guid><author>chinalog</author><pubDate>Tue, 15 Sep 2026 16:39:59 +0800</pubDate><description><![CDATA[Postman 报 400 且怀疑键名大写问题时，‌90% 的情况是因为发送的键名（如 USERID）与后端期望的键名（如 userId）不匹配‌。在 Postman 中调用接口返回 ‌400 Bad Request‌，且怀疑与 ‌JSON 键名大写‌有关时，通常是因为‌客户端发送的 JSON 字段名与后端期望的字段名不一致‌。例如：后端期望 "userId"，但 Postman 发送了 "USERID" 或 "userid"，后端可能无法识别该字段，导致必填项缺失或校验失败，从而返回 400。]]></description><category></category></item><item><title><![CDATA[C#：24小时制时间]]></title><link>https://blog.csdn.net/chinalog/article/details/165474160</link><guid>https://blog.csdn.net/chinalog/article/details/165474160</guid><author>chinalog</author><pubDate>Tue, 15 Sep 2026 14:26:20 +0800</pubDate><description><![CDATA[注意区分：`HH` 是 24 小时制的小时，`hh` 是 12 小时制的小时；`MM` 是月份，`mm` 才是分钟，别写混了。- 毫秒：`yyyy-MM-dd HH:mm:ss.fff`，如 `2026-09-15 14:30:00.123`- 完整日期时间：`yyyy-MM-dd HH:mm:ss`，如 `2026-09-15 14:30:00`- 不带秒：`yyyy-MM-dd HH:mm`，如 `2026-09-15 14:30`- 只要时间：`HH:mm:ss`，如 `14:30:00`]]></description><category></category></item><item><title><![CDATA[HTTP 400 Bad Request ]]></title><link>https://blog.csdn.net/chinalog/article/details/165314629</link><guid>https://blog.csdn.net/chinalog/article/details/165314629</guid><author>chinalog</author><pubDate>Mon, 14 Sep 2026 14:43:52 +0800</pubDate><description><![CDATA[常见提示包括："Field error in object 'user' on field 'age'"（字段校验失败）、"JSON parse error"（格式错误）、"Required request body is missing"（缺少请求体）。前端传入的时间字符串格式（如 yyyy-MM-dd）与后端配置的解析格式（如 yyyy/MM/dd HH:mm:ss）不一致，且未加 @DateTimeFormat 或全局配置。、{、} 等特殊字符时，必须进行百分比编码（如空格变为 %20）。]]></description><category></category></item><item><title><![CDATA[Json:首字母大写]]></title><link>https://blog.csdn.net/chinalog/article/details/164744861</link><guid>https://blog.csdn.net/chinalog/article/details/164744861</guid><author>chinalog</author><pubDate>Wed, 09 Sep 2026 15:09:43 +0800</pubDate><description><![CDATA[Fastjson 默认遵循 JavaBean 规范，会将首字母大写的属性（如 `Name`）在序列化时转为小写（`name`）。注意：使用 `@JSONField` 时，建议将 Java 字段名本身改为小写开头（符合 Java 规范），仅通过注解控制 JSON 输出格式，以避免部分版本 Fastjson 的解析兼容性问题。// 输出: {"OrderId":"123456","UserName":"Alice"}// 字段名小写，通过注解指定JSON键名为首字母大写。]]></description><category></category></item><item><title><![CDATA[Json键名大小写]]></title><link>https://blog.csdn.net/chinalog/article/details/164743943</link><guid>https://blog.csdn.net/chinalog/article/details/164743943</guid><author>chinalog</author><pubDate>Wed, 09 Sep 2026 14:57:02 +0800</pubDate><description><![CDATA[注意：若存在仅大小写不同的键（如 "id" 和 "ID"），转换后会覆盖。处理方案分为三类：序列化/反序列化映射、运行时忽略大小写读取、批量转换键名格式。// 示例：{"Name": "Alice"} 可映射到 private String name;`org.json.JSONObject` 无内置忽略大小写方法，需遍历键名匹配。// 输出 JSON 键名为 "user_name"// 基本类型直接返回。// 键名转大写，递归处理值。// 数组元素递归处理。// 开启忽略属性名大小写。]]></description><category></category></item><item><title><![CDATA[Java：no content to map due to end of input]]></title><link>https://blog.csdn.net/chinalog/article/details/164623013</link><guid>https://blog.csdn.net/chinalog/article/details/164623013</guid><author>chinalog</author><pubDate>Tue, 08 Sep 2026 16:09:35 +0800</pubDate><description><![CDATA[no content to map due to end of input”：Jackson 反序列化时，输入流里没有任何内容可解析（比如传了空字符串 `""` 或 `null`）。- 接口返回了空内容：HTTP 响应、Kafka 消息或文件读取结果是空串/空流，直接拿去 `readValue` 就报错。Maven 里把 `jackson-databind` 升到较新版本，比如 `2.13.0` 或更高。- 数据源本身有问题：请求参数无效（比如 ID 已被删除）、服务异常或网络中断，导致返回了空响应。]]></description><category></category></item><item><title><![CDATA[VS：项目管理]]></title><link>https://blog.csdn.net/chinalog/article/details/164615770</link><guid>https://blog.csdn.net/chinalog/article/details/164615770</guid><author>chinalog</author><pubDate>Tue, 08 Sep 2026 14:26:58 +0800</pubDate><description><![CDATA[3. 找到包含 `Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}")` 且路径指向不存在文件的段落，以及 `GlobalSection(ProjectConfigurationPlatforms)` 中对应的配置项，将其删除。在 Visual Studio 中处理“不存在的项目”通常指两种情况：一是解决方案中引用了物理路径已丢失的项目（加载失败），二是项目中引用了不存在的程序集或 NuGet 包。2. 移除项目中未使用/无效的引用（NuGet 或 DLL）]]></description><category></category></item><item><title><![CDATA[C#：模态对话框]]></title><link>https://blog.csdn.net/chinalog/article/details/164587961</link><guid>https://blog.csdn.net/chinalog/article/details/164587961</guid><author>chinalog</author><pubDate>Tue, 08 Sep 2026 11:09:41 +0800</pubDate><description><![CDATA[阻止自动关闭：若需在设置 `DialogResult` 前执行额外逻辑（如保存数据），可在 `FormClosing` 事件中检查 `DialogResult` 或通过 `e.Cancel = true` 拦截，但通常建议在按钮点击事件中先执行逻辑再设置 `DialogResult`。- 仅对模态窗体有效：如果窗体是通过 `Show()` 显示的，设置 `DialogResult` 不会关闭窗体，且调用者无法通过 `ShowDialog()` 接收返回值。// 设置结果并自动关闭窗体。]]></description><category></category></item><item><title><![CDATA[C#：窗体Topmost与获取输入焦点]]></title><link>https://blog.csdn.net/chinalog/article/details/164569177</link><guid>https://blog.csdn.net/chinalog/article/details/164569177</guid><author>chinalog</author><pubDate>Tue, 08 Sep 2026 09:21:59 +0800</pubDate><description><![CDATA[2. 若需持续保持焦点（如锁屏软件），需配合 `Timer` 周期性调用 `SetForegroundWindow` 并检查 `GetForegroundWindow()` 是否为本窗口句柄。仅设置 `TopMost = true` 无法保证窗体获取键盘输入焦点。3. `TopMost` 仅控制 Z-order（显示层级），`SetForegroundWindow` 控制输入焦点，两者需配合使用。// 可选：确保内部控件也获得焦点（如TextBox）/// 调用此方法使窗体置顶并获取焦点。]]></description><category></category></item><item><title><![CDATA[Eclipse：控制台历史消息]]></title><link>https://blog.csdn.net/chinalog/article/details/164566786</link><guid>https://blog.csdn.net/chinalog/article/details/164566786</guid><author>chinalog</author><pubDate>Tue, 08 Sep 2026 09:08:35 +0800</pubDate><description><![CDATA[这样程序运行时，日志会同时显示在控制台并写入指定文件，方便随时翻查。- 取消行数限制：`Window -> Preferences -> Run/Debug -> Console`，取消勾选 Limit console output，这样控制台就不再有行数上限，能往前翻看所有输出。- 调整缓冲区大小：如果不想完全取消限制，也可以在同一设置里把 `Console buffer size (characters)` 调大，比如改成 1000000 甚至更高，效果类似。💾 自动保存到本地文件。]]></description><category></category></item><item><title><![CDATA[Java: Unable to create working directory /tmp/org.apache.cxf.jaxws.endpoint.dynamic]]></title><link>https://blog.csdn.net/chinalog/article/details/164450967</link><guid>https://blog.csdn.net/chinalog/article/details/164450967</guid><author>chinalog</author><pubDate>Mon, 07 Sep 2026 09:40:44 +0800</pubDate><description><![CDATA[确认 `/tmp` 存在且可写：执行 `ls -ld /tmp`，确保当前用户有写权限。`JaxWsDynamicClientFactory` 在动态调用 WebService 时，无法在 `/tmp` 下创建临时目录导致的，根源是 权限不足或目录不存在。- 容器环境特别提醒：如果是 Docker/K8s，默认 `/tmp` 可能为只读或空间受限，建议挂载一个可写卷，并把 `java.io.tmpdir` 指向它。- 磁盘空间：用 `df -h /tmp` 检查是否满盘。版本兼容性提示（潜在风险）]]></description><category></category></item><item><title><![CDATA[AI编程最大的“完美”陷阱]]></title><link>https://blog.csdn.net/chinalog/article/details/164372042</link><guid>https://blog.csdn.net/chinalog/article/details/164372042</guid><author>chinalog</author><pubDate>Fri, 04 Sep 2026 16:50:47 +0800</pubDate><description><![CDATA[很多人以为多写点约束就能让AI写出好架构，但研究显示：明确告诉AI“别写重复代码、别过度工程化、先规划再动手”，确实能让前两轮代码更干净，但退化速度一点没变，到最后一样烂。因为AI本质上没有“设计纪律”，它的每个决策都是“短期最优”——只为当前这轮需求最快跑通，根本不为未来几轮的维护着想。用“建议模式”替代“直接编辑”，关键分支设只读权限，AI的改动必须经过人工评审。4. 强制理解“被看见”：要求AI生成的代码必须能讲清楚“为什么这么写”，提交时加注释说明核心逻辑，倒逼自己或团队去理解，也让审查者能验证。]]></description><category></category></item></channel></rss>