Linux普通分区挂载

在Linux中挂载新硬盘是一个常见的操作,可以让你的系统识别并使用这个硬盘。下面是一步步指导如何挂载新硬盘:

  1. 查找新硬盘

首先,你需要找到新硬盘的标识。可以使用lsblk或fdisk -l命令来查看所有可用的存储设备。

lsblk

或者

sudo fdisk -l

这些命令会列出所有存储设备,包括分区和未分区的硬盘。注意新硬盘的名称,比如/dev/sdb。

  1. 创建分区(如果需要)

如果你还没有为硬盘创建分区,你需要先创建一个。使用fdisk或gparted工具来创建分区。这里以fdisk为例:

sudo fdisk /dev/sdb

在fdisk提示符下,输入n来创建一个新分区,然后按照提示操作(选择分区类型、分区大小等)。创建分区后,输入w保存更改并退出。

  1. 格式化分区(如果需要)

如果你需要给这个分区一个文件系统,可以使用mkfs命令。例如,如果你想创建一个ext4文件系统:

sudo mkfs.ext4 /dev/sdb1

  1. 创建挂载点

选择一个目录作为挂载点。例如,你可以创建一个名为/mnt/newdisk的目录:

sudo mkdir /mnt/newdisk

  1. 挂载硬盘

使用mount命令将新硬盘挂载到刚才创建的挂载点:

sudo mount /dev/sdb1 /mnt/newdisk

  1. 验证挂载

使用df -h或查看挂载点内容来验证硬盘是否成功挂载:

df -h

或者

ls /mnt/newdisk

  1. 持久化挂载(可选)

如果你希望在每次重启后自动挂载硬盘,你可以编辑/etc/fstab文件:

sudo nano /etc/fstab

在文件的末尾添加一行,指定挂载信息,例如:

/dev/sdb1 /mnt/newdisk ext4 defaults 0 0

保存并关闭文件。之后,每次启动系统时,系统会自动挂载这个硬盘。

  1. 使用UUID而非设备名(推荐)

为了防止设备名称改变导致挂载失败,最好使用UUID而不是设备名。首先,查找UUID:

sudo blkid /dev/sdb1

注意输出的UUID值。然后编辑/etc/fstab,使用UUID代替设备名:

UUID=your-uuid-here /mnt/newdisk ext4 defaults 0 0

这样即使硬盘设备名改变,系统也能正确挂载。

[Server] Plugin mysqlx reported: ‘Setup of socket: ‘/var/lib/mysql/mysqlx.sock’ failed, can’t create lock file /var/lib/mysql/mysqlx.sock.lock’

2025-05-15T12:31:13.701072Z 0 [ERROR] [MY-011300] [Server] Plugin mysqlx reported: ‘Setup of socket: ‘/var/lib/mysql/mysqlx.sock’ failed, can’t create lock file /var/lib/mysql/mysqlx.sock.lock’

因为移动了默认的数据目录导致/var/lib/mysql目录不存在,创建对应的目录即可

mkdir /var/lib/mysql/ && chown mysql:mysql /var/lib/mysql && chmod 755 /var/lib/mysql

[Warning] [MY-011068] [Server] The syntax ‘slave_skip_errors’ is deprecated and will be removed in a future release. Please use replica_skip_errors instead.

2025-05-15T12:24:59.648560Z 0 [Warning] [MY-011068] [Server] The syntax ‘slave_skip_errors’ is deprecated and will be removed in a future release. Please use replica_skip_errors instead.

使用replica_skip_errors替代

replica_skip_errors=’1062,1032,1008′

php switch 不加 break 会怎么样?

在PHP中,switch语句如果不加break会导致”case穿透”现象。具体表现如下:

当匹配到某个case后,如果没有break语句,代码会继续执行后续所有case中的语句,直到遇到break或switch结束

这种特性有时会被故意利用来实现多个case共享同一段代码的逻辑

示例说明:

switch ($value) {
  case 1:
    echo "这是1";
    // 这里没有break
  case 2:
    echo "这是2";
    break;
  case 3:
    echo "这是3";
    break;
}

当$value=1时,输出会是:
“这是1这是2”

因为匹配到case 1后,没有break阻止,所以继续执行了case 2的代码。

建议:除非有特殊需求,否则每个case后都应该加上break语句以避免意外行为。

word批量转pdf .vbs

需要安装ms office

Set objWord = CreateObject("Word.Application")
objWord.Visible = False
Set fso = CreateObject("Scripting.FileSystemObject")
For Each objFile In fso.GetFolder("D:\working\z99f\").Files
If LCase(fso.GetExtensionName(objFile)) = "doc" Then
Set objDoc = objWord.Documents.Open(objFile.Path)
pdfPath = Replace(objFile.Path, ".doc", ".pdf")
objDoc.SaveAs pdfPath, 17 '17为PDF格式代码
objDoc.Close

' Set objDoc = objWord.Documents.Open(objFile.Path)
' pdfPath = Replace(objFile.Path, ".doc", ".docx")
' objDoc.SaveAs pdfPath, 16 '16为docx格式代码
' objDoc.Close
End If
Next
objWord.Quit

MySQL 索引核心知识点总结

MySQL 索引核心知识点总结

一、索引基本概念

  • 定义:索引是帮助 MySQL 高效获取数据的数据结构(如 B+树、Hash),通过减少磁盘 I/O 次数提升查询效率‌。
  • 类比:类似于书籍的目录,通过快速定位数据行实现高效检索‌。
  • 存储引擎差异
    • InnoDB/MyISAM 默认使用 B+树索引‌。
    • Memory 引擎使用 Hash 索引(仅支持等值查询)‌。

二、索引类型

  1. 按功能分类
    • 主键索引(PRIMARY KEY):唯一且非空,InnoDB 中为聚簇索引(数据与索引存储在一起)‌。
    • 唯一索引(UNIQUE):列值唯一,允许空值‌。
    • 普通索引(INDEX):无唯一性限制,仅加速查询‌。
    • 复合索引:包含多列,需遵循最左前缀匹配原则‌。
    • 全文索引(FULLTEXT):适用于文本类型字段的模糊匹配(如 LIKE '%keyword%')‌。
    • 前缀索引:对文本字段前 N 个字符建立索引,节省空间‌。
  2. 按存储结构分类
    • 聚簇索引:数据行与索引存储在一起(如 InnoDB 主键索引)‌。
    • 非聚簇索引:索引与数据行分离(如 MyISAM 索引)‌17

三、索引的优缺点

  • 优点
    • 降低查询的 I/O 成本,提升检索效率‌。
    • 减少排序和分组操作的 CPU 消耗‌。
  • 缺点
    • 占用额外磁盘空间,索引文件可能比数据文件更大‌。
    • 增删改操作需维护索引,降低写性能‌。

四、索引底层结构(B+树)

  • 特点
    • 多路平衡搜索树,树高度低,适合磁盘存储‌。
    • 叶子节点存储实际数据或主键值(非聚簇索引需回表查询)‌。
    • 支持范围查询和排序操作‌。

五、索引失效场景

  1. 违反最左前缀法则:复合索引未从第一列开始使用‌。
    • 例:索引 (a, b, c),查询条件为 b=1 或 c=1 时失效。
  2. 范围查询右侧列失效:范围查询后的索引列无法使用‌。
    • 例:索引 (a, b),条件 a>1 AND b=2 中 b 可能失效。
  3. 对索引列进行运算或函数操作:如 WHERE YEAR(date_column)=2025‌。
  4. 头部模糊匹配:如 LIKE '%abc'‌。
  5. OR 连接非索引列:若 OR 条件中包含未索引字段,全表扫描‌。
  6. 隐式类型转换:如字符串字段未加引号(WHERE id='123' vs WHERE id=123)‌。

六、使用建议

  1. 适用场景
    • 频繁作为查询条件的字段(WHERE、JOIN)。
    • 需要排序或分组的字段(ORDER BY、GROUP BY)。
  2. 避免滥用
    • 数据量小的表无需索引。
    • 频繁更新的字段谨慎建索引。
  3. 优化策略
    • 优先选择区分度高的字段(如唯一性高的列)。
    • 控制复合索引的列数(一般不超过 5 列)‌。
    • 定期分析慢查询,调整索引策略‌。

七、操作语法示例

sqlCopy Code-- 创建索引  
CREATE INDEX idx_name ON table_name(column1, column2);  
-- 查看索引  
SHOW INDEX FROM table_name;  
-- 删除索引  
DROP INDEX idx_name ON table_name;