0%

MySQL 常用语句大全:从基础操作到系统信息查询

MySQL 提供了丰富的语句用于数据库管理、表操作及系统信息查询。本文整理了日常开发和运维中最常用的语句,涵盖数据库 / 表操作、状态查询、编码设置等场景,帮助快速掌握 MySQL 核心操作。

系统信息查询

1. 查看服务器状态与变量

1
2
3
4
5
6
7
8
-- 查看所有系统状态变量(session 级别,当前连接有效)
SHOW STATUS;

-- 查看全局系统状态变量(所有连接共享)
SHOW GLOBAL STATUS;

-- 过滤查询特定状态(如中断的客户端连接数)
SHOW STATUS LIKE 'Aborted_clients'; -- 支持通配符(% 匹配任意字符)
1
2
3
4
5
-- 查看所有系统配置变量(如字符集、连接数等)
SHOW VARIABLES;

-- 查看全局配置变量
SHOW GLOBAL VARIABLES LIKE 'max_connections'; -- 查看最大连接数

2. 版本与环境信息

阅读全文 »

Struts2 访问 Web 资源的两种方式详解

在 Struts2 框架中,Web 资源(如HttpServletRequestHttpSessionServletContext等)的访问方式分为与 Servlet API 解耦与 Servlet API 耦合两种。两种方式各有适用场景,下面详细解析其实现方式与使用场景。

与 Servlet API 解耦的方式

这种方式通过 Struts2 封装的 API 访问 Web 资源,不直接依赖 Servlet 原生类,便于进行单元测试,适合大多数业务场景。

1. 使用 ActionContext(核心方式)

ActionContext是 Struts2 的上下文对象,封装了当前请求的所有信息,可通过它间接访问 Web 资源对应的 Map 对象。

核心方法与示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import com.opensymphony.xwork2.ActionContext;
import java.util.Map;

public class UserAction {
public String execute() {
// 获取ActionContext实例(单例,与当前请求绑定)
ActionContext actionContext = ActionContext.getContext();

// 1. 获取application域(对应ServletContext)
Map<String, Object> applicationMap = actionContext.getApplication();
applicationMap.put("appKey", "全局应用数据"); // 存储数据
Object appValue = applicationMap.get("appKey"); // 获取数据

// 2. 获取session域
Map<String, Object> sessionMap = actionContext.getSession();
sessionMap.put("userName", "张三"); // 存储用户会话数据
Object user = sessionMap.get("userName");

// 3. 获取request域(需通过"request"键获取,Struts2未直接提供getRequest()方法)
Map<String, Object> requestMap = (Map<String, Object>) actionContext.get("request");
requestMap.put("msg", "请求数据");
Object msg = requestMap.get("msg");

// 4. 获取请求参数(封装为Map,键是参数名,值是参数值数组)
Map<String, Object> params = actionContext.getParameters();
String[] ids = (String[]) params.get("id"); // 适用于多值参数
String name = (String) params.get("name"); // 单值参数

return "success";
}
}
特点:
阅读全文 »

Hadoop 序列化机制:从 Writable 到 Avro

序列化是分布式计算框架的核心组件,负责将对象转换为字节流以便在网络传输或磁盘存储。Hadoop 生态系统提供了多种序列化方案,其中 Writable 接口 是最基础的实现,而 Avro、Protobuf 等则在兼容性和性能上进行了扩展。本文将深入解析 Hadoop 序列化机制的原理、应用场景及优化策略。

Writable 接口核心原理

接口定义与作用

Writable 是 Hadoop 自定义的序列化接口,所有可序列化的类必须实现该接口:

1
2
3
4
public interface Writable {  
void write(DataOutput out) throws IOException; // 对象转字节流
void readFields(DataInput in) throws IOException; // 字节流转对象
}
  • 设计目标:轻量级、高效的序列化,减少网络和磁盘 I/O 开销;
  • 应用场景:MapReduce 中 Key/Value 类型(如 IntWritableText)必须实现 Writable。

核心实现类分析:IntWritable

IntWritable 是 Hadoop 对 int 类型的封装,示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class IntWritable implements Writable {  
private int value;

public void set(int value) { this.value = value; }
public int get() { return value; }

@Override
public void write(DataOutput out) throws IOException {
out.writeInt(value); // 写入4字节整数
}

@Override
public void readFields(DataInput in) throws IOException {
value = in.readInt(); // 读取4字节整数
}
}

特性

  • 固定长度存储(4 字节),无需额外元数据;
  • 读写操作直接映射为 JDK 的 DataOutput/DataInput,性能高效。
阅读全文 »

XML 中的转义字符与 CDATA 区块

在 XML 文档中,某些字符具有特殊含义(如<>用于标记元素边界),直接使用会导致解析错误。为了正确表示这些特殊字符,XML 提供了两种解决方案:转义字符CDATA 区块

XML 转义字符

XML 预定义了 5 个转义字符(实体引用),用于表示在 XML 中有特殊含义的字符:

转义字符 对应原字符 说明
&amp; & 表示和号(AND 符号)
&lt; < 表示小于号
&gt; > 表示大于号
&quot; " 表示双引号
&apos; ' 表示单引号(撇号)

转义字符的使用场景

当文本中包含上述特殊字符时,必须使用转义字符替代,否则 XML 解析器会将其误认为 XML 语法的一部分,导致解析错误。

示例

1
2
3
4
5
6
7
8
9
<?xml version="1.0"?>
<note>
<description>
比较结果:3 &lt; 5 &amp; 10 &gt; 7 <!-- 正确:使用转义字符表示<、&、> -->
</description>
<quote>
他说:&quot;Hello World!&quot; <!-- 正确:使用转义字符表示双引号 -->
</quote>
</note>
阅读全文 »

Struts2 中的 OGNL 与值栈(ValueStack)详解

OGNL(Object-Graph Navigation Language,对象图导航语言)是 Struts2 框架默认使用的表达式语言,主要用于在视图(如 JSP)中访问 Action 中的数据,而值栈(ValueStack)则是 OGNL 的核心操作对象,贯穿整个 Action 的生命周期。下面详细解析两者的工作机制与关联。

OGNL 概述

基本概念

OGNL 是一种功能强大的表达式语言,支持:

  • 访问对象的属性(如user.name);
  • 调用对象的方法(如list.size());
  • 操作集合(如list[0]);
  • 实现类型转换(如字符串转日期);
  • 访问静态方法和属性(需通过@类全名@方法名语法)。

在 Struts2 中,OGNL 主要应用于:

  • JSP 页面中通过<s:property value="表达式"/>获取数据;
  • struts.xml中配置动态参数(如<param name="id">${userId}</param>);
  • 输入校验的表达式配置。

OGNL 的上下文环境

OGNL 的求值依赖于上下文(Context),在 Struts2 中,上下文由ActionContext维护,包含以下核心对象:

阅读全文 »