052-25

Which three operations require undo data? (Choose three.)
A.committing a transaction
B.flashing back a transaction – 回退操作
C.recovering a failed transaction – 从失败的事务处理中进行恢复 
D.running a read-consistent query – 读取一致性查询
E.changing a tablespace status from READ ONLY to READ WRITE

Undo data 是:
• 原始的、修改之前的数据副本
• 是针对更改数据的每个事务处理所捕获的
• 至少保留到事务处理结束
• 用于支持:
– 回退操作
– 读取一致性查询
– 闪回查询、闪回事务处理和闪回表
– 从失败的事务处理中进行恢复

转载于:https://www.cnblogs.com/Babylon/p/7986819.html

### java.lang.IllegalArgumentException HTTP Request Parsing Error 解决方案 当遇到 `java.lang.IllegalArgumentException: Invalid character found in the request target` 的异常时,这通常是因为请求的目标路径或查询字符串中包含了不符合 **RFC 7230** 和 **RFC 3986** 定义的有效字符集的非法字符。以下是针对此问题的具体分析和解决方案。 #### 1. 异常原因 该异常的根本原因是高版本的 Tomcat 对 URL 中的合法字符进行了严格的校验[^1]。根据 RFC 3986 的规定,URL 中仅允许包含英文字母(a-z, A-Z)、数字(0-9),以及特定的特殊字符(如 `-`, `.`, `_`, `~`)。除此之外,某些保留字符也被严格限制,例如 `{`, `}`, `[`, `]`, `|` 等[^2]。 如果前端传递的数据中包含这些未被允许的字符,则会在服务器端触发上述异常。 --- #### 2. Spring Boot 应用中的解决方法 对于基于 Spring Boot 构建的应用程序,默认嵌入了一个 Tomcat 实例作为 Servlet 容器。因此可以通过自定义配置来放宽对 URL 字符的限制。 ##### 方法一:通过扩展 `TomcatServletWebServerFactory` 可以创建一个 Bean 来定制化 Tomcat 的行为,具体实现如下: ```java import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class TomcatConfig { @Bean public TomcatServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); tomcat.addConnectorCustomizers(connector -> { connector.setProperty("relaxedPathChars", "<>[\\]^`{|}"); connector.setProperty("relaxedQueryChars", "<>[\\]^`{|}"); }); return tomcat; } } ``` 在此代码片段中,我们设置了两个属性: - `relaxedPathChars`: 放宽对路径部分字符的限制。 - `relaxedQueryChars`: 放宽对查询字符串部分字符的限制[^2]。 --- ##### 方法二:通过实现 `WebServerFactoryCustomizer<TomcatServletWebServerFactory>` 另一种方式是利用 Spring 提供的接口 `WebServerFactoryCustomizer` 进行更灵活的配置: ```java package com.example.config; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.stereotype.Component; @Component public class TomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> { @Override public void customize(TomcatServletWebServerFactory factory) { factory.addConnectorCustomizers(connector -> { connector.setAttribute("relaxedQueryChars", "{}[]|"); }); } } ``` 这种方式同样能够满足需求,并且更加模块化[^4]。 --- #### 3. 如果使用独立部署的 Tomcat 如果是将应用部署在一个单独安装的 Tomcat 上,则可以直接修改其配置文件 `catalina.properties`,取消注释并调整以下内容: ```properties tomcat.util.http.parser.HttpParser.requestTargetAllow=| ``` 这里可以根据实际需要追加其他字符,例如大括号 `{}` 或方括号 `[]`[^3]。 --- #### 4. 建议的最佳实践 尽管可以通过以上手段解决问题,但从设计角度出发,建议尽量避免在 URL 路径或查询参数中直接携带复杂结构的数据(如 JSON 字符串)。推荐的做法是将此类数据放入 POST 请求体中传输,从而规避潜在的风险。 --- ### 总结 通过对 Tomcat 的配置进行适当放松,可以有效解决因非法字符引起的 `IllegalArgumentException` 异常。无论是采用编程方式还是直接编辑配置文件,都可以达到预期效果。然而需要注意的是,在放宽限制的同时也要兼顾安全性,防止恶意输入带来的隐患。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值