当前位置: 首页 > news >正文

Linux存储管理之核心秘密(The Core Secret of Linux Storage Management)

Linux存储管理之核心秘密

如果你来自Windows环境,那么Linux处理和管理存储设备的方式对你而言可能显得格外不同。我们知道,Linux的文件系统并不采用Windows那样的物理驱动器表示方式(如C:、D:或E:),而是构建了一个以"/"为根的统一文件树结构。本文将深入探讨Linux如何表示和管理硬盘、闪存驱动器等存储设备。

在进入技术细节之前,我们首先需要理解如何将额外的驱动器和存储设备挂载到文件系统中,最终集成到根目录"/"下。在这个语境中,"挂载"意味着将驱动器或磁盘连接到文件系统,使操作系统能够访问它们。对安全分析人员而言,深入理解文件系统和存储设备管理机制至关重要,这不仅涉及自身系统,更常见于目标系统分析。安全研究人员经常需要使用外部媒体加载数据、部署工具,有时甚至需要引导完整的操作系统。在渗透测试过程中,你需要准确定位目标系统上的敏感数据,理解如何挂载新的存储设备,以及评估数据存储的安全性。本文将全面覆盖这些主题,并详细介绍存储设备的管理与监控技术。

设备目录 /dev

Linux系统中存在一个专门用于管理设备文件的特殊目录:/dev(device的缩写)。系统中的每个设备都在这个目录下有对应的文件表示。让我们首先深入了解这个关键目录。

kali > cd /dev
kali > ls -l
total 0
crw------- 1 root root 10,175 May 16 12:44 agpgart
crw------- 1 root root 10,235 May 16 12:44 autofs
drwxr-xr-x 1 root root 160 May 16 12:44 block
lrwxrwxrwx 1 root root 3 May 16 12:44 cdrom -> sr0
drwxr-xr-x 2 root root 60 May 16 12:44 cpu

设备文件按字母顺序排列显示。其中一些设备名称如cdrom和cpu较为直观,而其他则相对晦涩。值得注意的是sda1、sda2、sda3、sdb和sdb1等条目,它们分别代表了硬盘及其分区、USB存储设备及其分区。

brw-rw---- 1 root root 8, 0 May 16 12:44 sda
brw-rw---- 1 root root 8, 1 May 16 12:44 sda1
brw-rw---- 1 root root 8, 2 May 16 12:44 sda2
brw-rw---- 1 root root 8, 5 May 16 12:44 sda5
brw-rw---- 1 root root 8, 16 May 16 12:44 sdb
brw-rw---- 1 root root 8, 17 May 16 12:44 sdb1

Linux如何表示存储设备

Linux采用逻辑标签来标识挂载到文件系统的驱动器。这些标签会根据设备的挂载时间和位置动态变化,这意味着同一个物理设备在不同时刻可能会获得不同的标识符。

早期Linux系统使用fd0表示软盘驱动器,使用hda表示硬盘。虽然在某些遗留系统中仍可能遇到这种表示方式,但现代系统已经很少见到软盘设备。采用IDE或E-IDE接口的传统硬盘仍使用hda形式的标识,而新型的SATA(串行ATA)接口驱动器和SCSI硬盘则采用sda的命名方式。

存储设备往往会划分为多个分区,这些分区在Linux中用数字标识。当系统包含多个存储设备时,Linux通过字母递增的方式为它们命名:第一个设备为sda,第二个为sdb,依此类推。这种命名规则中,sd后的字母通常被称为主编号。

设备文件

描述

sda

第一个SATA硬盘

sdb

第二个SATA硬盘

sdc

第三个SATA硬盘

sdd

第四个SATA硬盘

驱动器分区

在存储管理中,驱动器常被划分为多个分区以实现更有效的资源管理和数据隔离。例如,你可能需要将交换文件、用户主目录和根目录分别置于不同分区——这种策略有助于资源共享管理和权限控制。Linux使用设备标识符后的数字来标记各个分区。因此,第一个SATA驱动器(sda)的第一个分区表示为sda1,第二个分区为sda2,以此类推。

分区

描述

sda1

第一个SATA驱动器的第一个分区

sda2

第一个驱动器的第二个分区

sda3

第一个驱动器的第三个分区

sda4

第一个驱动器的第四个分区

在安全分析过程中,了解系统的分区布局至关重要。我们可以使用fdisk工具来查看分区信息:

kali > fdisk -l
Disk /dev/sda: 20GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x7c06cd70Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 39174143 39172096 18.7G 83 Linux
/dev/sda2 39176190 41940991 2764802 1.3G 5 Extended
/dev/sda5 39176192 41940991 2764800 1.3G 82 Linux swap / SolarisDisk /dev/sdb: 29.8 GiB, 31999393792 bytes, 62498816 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc3072e18Device Boot Start End Sectors Size Id Type
/dev/sdb1 32 62498815 62498784 29.8G 7 HPFS/NTFS/exFAT

在这个输出中,我们可以看到sda1、sda2和sda5构成了虚拟机的20GB虚拟磁盘,包括一个交换分区(sda5)作为虚拟RAM的扩展,类似于Windows的页面文件。

第二部分显示了一个标识为sdb1的设备——字母b表明这是一个独立的设备。这里是一个64GB的闪存驱动器,使用HPFS/NTFS/ExFAT文件系统。这些文件系统类型通常见于macOS和Windows系统,在取证分析中可能提供有价值的线索,指示设备的来源系统。

字符设备和块设备

在/dev目录中,设备文件名的第一个字符(c或b)具有特殊含义。这些标识反映了设备的数据传输方式:

  • 字符设备(c):以字符为单位进行数据传输,如键盘、鼠标等输入设备

  • 块设备(b):以数据块为单位传输,如硬盘、DVD驱动器等存储设备

理解设备类型对于安全分析和性能优化具有重要意义。

使用lsblk列出块设备及其信息

lsblk命令(list block devices的缩写)能够以树状结构显示系统中所有块设备的基本信息:

kali > lsblk
Name   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0    2:0    1    4K  0 disk
sda    8:0    0   20G  0 disk
├─sda1 8:1    0 18.7G  0 part /
├─sda2 8:2    0    1K  0 part
└─sda5 8:5    0  1.3G  0 part [SWAP]
sdb    8:16   1 29.8G  0 disk
└─sdb1 8:17   1 29.8G  0 part /media/USB3.0
sr0    11:0   1  2.7G  0 rom

挂载和卸载

在大多数现代Linux系统中,存储设备连接时会自动挂载。但对安全专业人员而言,理解手动挂载过程仍然重要,因为在特殊场景下可能需要使用特定的挂载选项。

存储设备必须同时满足物理连接和逻辑挂载才能被操作系统访问。"挂载"这个术语源自早期计算机时代,当时存储介质需要物理地"挂"到计算机系统上。

设备在目录树中的连接点被称为挂载点。Linux主要使用两个标准挂载点:

  • /mnt:通常用于内部硬盘

  • /media:主要用于外部USB设备(如闪存驱动器和外部硬盘)

手动挂载存储设备

某些Linux环境下需要手动挂载驱动器。挂载命令的基本语法如下:

kali > mount /dev/sdb1 /mnt

注意:挂载点必须是空目录,否则挂载操作会暂时遮蔽该目录下的原有内容。同样,要挂载闪存驱动器sdc1到/media目录:

kali > mount /dev/sdc1 /media

系统会在/etc/fstab(文件系统表)文件中维护挂载信息,每次启动时都会读取该文件。

使用umount卸载

安全移除存储设备前需要先执行卸载操作,这与Windows/Mac中的"弹出"设备概念类似。使用umount命令(注意拼写没有'n')执行卸载:

kali > umount /dev/sdb1

重要提示:正在被访问的设备无法卸载,系统会返回错误信息。

监控文件系统

对于安全专业人员和系统管理员来说,监控文件系统状态是一项核心技能。这包括获取挂载设备信息、检查和修复错误等。

获取挂载磁盘的信息

df命令(disk free的缩写)提供了存储设备的使用情况统计:

kali > df
Filesystem      1K-Blocks      Used Available Use% Mounted on
rootfs          19620732  17096196   1504788  92% /
udev               10240         0     10240   0% /dev
/dev/sdb1      29823024 29712544    110480  99% /media/USB3.0

输出显示了每个文件系统的总容量、已用空间和可用空间。例如,根文件系统使用了92%的空间,而USB驱动器几乎已满(99%)。

检查错误

fsck命令(file system check的缩写)用于检查和修复文件系统错误:

kali > fsck
fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
/dev/sda1 is mounted
e2fsck: Cannot continue, aborting.

卸载设备进行文件系统检查

执行fsck前必须先卸载设备:

kali > umount /dev/sdb1
kali > fsck -p /dev/sdb1
fsck from util-linux 2.30.2
exfatfsck 1.2.7
Checking file system on /dev/sdb1.
File system version 1.0
Sector size 512 bytes
Cluster size 32 KB
Volume size 7648 MB
Used space 1265 MB
Available space 6383 MB
Totally 20 directories and 111 files.
File system checking finished. No errors found.

总结

深入理解Linux存储设备管理对安全专业人员至关重要。设备命名规则、挂载机制、文件系统检查等知识不仅有助于日常系统维护,更是进行安全评估和事件响应的基础。特别是在涉及数据恢复、取证分析等场景时,这些技能尤为重要。

相关文章:

Linux存储管理之核心秘密(The Core Secret of Linux Storage Management)

Linux存储管理之核心秘密 如果你来自Windows环境,那么Linux处理和管理存储设备的方式对你而言可能显得格外不同。我们知道,Linux的文件系统并不采用Windows那样的物理驱动器表示方式(如C:、D:或E:),而是构建了一个以&…...

js单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 静态方法实现 class SingleTon{//全局的访问点static getInstance(){// 保证一个类只有一个实例if(!this.instance){this.instancenew SingleTon()}return this.instance}}let aSingleTon.getInstance()let bSing…...

搭建一个本地轻量级且好用的学习TypeScript语言的环境

需求说明 虽然 TypeScript 的在线 Playground 很方便 https://www.tslang.com.cn/play/,但毕竟是在浏览器中使用,没有本地的 IDE 那么顺手。所以我想搭建一个本地类似 Playground 的环境,这样在学习 TypeScript 的过程中,可以更方…...

大模型(LLM)面试全解:主流架构、训练目标、涌现能力全面解析

系列文章目录 大模型(LLMs)基础面 01-大模型(LLM)面试全解:主流架构、训练目标、涌现能力全面解析 大模型(LLMs)进阶面 文章目录 系列文章目录大模型(LLMs)基础面一、目…...

入门嵌入式(七)——PWM

PWM 脉冲宽度调制PWM(Pulse-Width Modulation) 一组方波 周期 1ms 频率 1s / 周期 占空比 高电平/周期 数字信号:0/1高低电平 串口 IIC PWM都属于数字信号 模拟信号:电压值, 会受到电磁影响 ADC 模数转换 用于读取…...

Flutter 实现 列表滑动过程控件停靠效果 学习

实现一个 Flutter 应用程序,使用 Sliver 系列组件来创建具有滚动效果的复杂布局。使用 NestedScrollView 和 SliverPersistentHeader 来实现固定和动态的头部效果,以及一个可滚动的列表。 前置知识点学习 SingleTickerProviderStateMixin SingleTicker…...

STM32+WIFI获取网络时间+8位数码管显示+0.96OLED显

资料下载地址:STM32WIFI获取网络时间8位数码管显示0.96OLED 1、项目介绍 主控芯片STM32C8T6 接线:串口1:PA9 PA10 OELD :PB6 PB7 数码管使用:MAX7219 8位数码管 Max7219_pinCLK PAout(5) Max7219_pinC…...

Kivy App开发之UX控件Slider滑块

在app中可能会调节如音量,亮度等,可以使用Slider来实现,该控件调用方便,兼容性好,滑动平稳。在一些参数设置中,也可以用来调整数值。 支持水平和垂直方向,可以设置默认值,最小及最大值。 使用方法,需用引入Slider类,通过Slider类生成一个滑块并设置相关的样式后,再…...

STM32学习(十)

I2C模块内部结构 I2C(Inter-Integrated Circuit)模块是一种由Philips公司开发的二线式串行总线协议,用于短距离通信,允许多个设备共享相同的总线‌。 ‌硬件连接简单‌:I2C通信仅需要两条总线,即SCL&…...

何为“正则表达式”!

详细解释: ^:在JSON的正则表达式中,^表示匹配输入字符串的开始位置。这意味着正则表达式将从字符串的开头开始进行匹配,确保整个字符串符合后续的模式要求。例如,对于字符串"3.14",正则表达式会…...

创建Java项目,并添加MyBatis包和驱动包

一 : Mybatis和jsp使用上,只有Dao层有区别 Mybatis 使用方法: 测试类的7步骤 1.读取核心配置文件 2.构建sql会话工厂 3.开启sql会话 4.获取mapper接口 5.调用相对应的增删改查方法 6.打印 7.关闭回话 /*** 用户列表* throws IOException*/Testpublic void roleList() throws IO…...

目标检测文献阅读-DETR:使用Transformer进行端到端目标检测

目录 摘要 Abstract 1 引言 2 DETR结构 2.1 Backbone 2.2 Encoder 2.3 Decoder 2.4 FFN 3 目标检测集合预测损失 3.1 二分图匹配损失 3.2 损失函数 总结 摘要 本周阅读的论文题目是《End-to-End Object Detection with Transformers》(使用Transformer进行端到端目…...

C#里对已经存在的文件进行压缩生成ZIP文件

先要对目录下所有文件获取到: private List<string> GetXDFiles(string dirPath){//获取目录中的所有文件string suffix = "*.txt"; // 要查找的文件后缀var files = Directory.GetFiles(dirPath, suffix, SearchOption.TopDirectoryOnly).ToList();return fi…...

单片机软件定时器V4.0

单片机软件定时器V4.0 用于单片机定时执行任务等&#xff0c;比如LED GPIO等定时控制&#xff0c;内置前后台工作模式 头文件有使用例子 #ifndef __SORFTIME_APP_H #define __SORFTIME_APP_H#ifdef __cplusplus extern "C" { #endif#include <stdint.h>// #…...

【嵌入式硬件】嵌入式显示屏接口

数字显示串行接口&#xff08;Digital Display Serial Interface&#xff09; SPI 不过多赘述。 I2C-bus interface 不过多赘述 MIPI DSI MIPI (Mobile Industry Processor Interface) Alliance, DSI (Display Serial Interface) 一般用于移动设备&#xff0c;下面是接口…...

vuedraggable 选项介绍

vuedraggable 是基于 SortableJS 的 Vue 组件&#xff0c;提供了丰富的选项来定制拖拽行为。以下是 vuedraggable 常用的选项和它们的详细说明&#xff1a; 常用选项介绍 group 配置拖拽分组。多个列表可以共享同一个分组&#xff0c;允许它们之间的项目互相拖拽。 group: { na…...

OpenAI CEO 奥特曼发长文《反思》

OpenAI CEO 奥特曼发长文《反思》 --- 引言&#xff1a;从 ChatGPT 到 AGI 的探索 ChatGPT 诞生仅一个多月&#xff0c;如今我们已经过渡到可以进行复杂推理的下一代模型。新年让人们陷入反思&#xff0c;我想分享一些个人想法&#xff0c;谈谈它迄今为止的发展&#xff0c;…...

Appium(一)--- 环境搭建

一、Android自动化环境搭建 1、JDK 必须1.8及以上(1) 安装&#xff1a;默认安装(2) 环境变量配置新建JAVA_HOME:安装路径新建CLASSPath%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar在path中增加&#xff1a;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin&#xff1b;(3) 验证…...

如何查看服务器上的MySQL/Redis等系统服务状态和列表

如果呢你知道系统服务名称&#xff0c;要看状态很简单&#xff1a; systemctl status server-name 比如 systemctl status nginxsystemctl status redis # 等 这是一个nginx的示例&#xff1a; 那问题是 当你不知道服务名称时该怎么办。举个例子&#xff0c;比如mysql在启动…...

多模态论文笔记——U-ViT

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节&#xff0c;虽然没有后续的DiT在AIGC领域火爆&#xff0c;但为后来的研究奠定了基础&#xff0c;但其开创性的探索值得学习…...

08-1_队列的理论讲解

08-1_队列的理论讲解 队列概念理解 队列就是一个传送带,就是一个流水线 工人放入的数据, 放在传送带上,送给消费者, 消费者第一次拿到的数据,就是工人第一次放上的数据(类比队列,先进先出) freertos队列应用思考 队列对于消费者(取数据): (1)当队列没有数据, 消费者需要进入…...

HTML基础入门——简单网页页面

目录 一&#xff0c;网上转账电子账单 ​编辑 1&#xff0c;所利用到的标签 2&#xff0c;代码编写 3&#xff0c;运行结果 二&#xff0c;李白诗词 1&#xff0c;所用到的标签 2&#xff0c;照片的编辑 3&#xff0c;代码编写 4&#xff0c;运行结果 一&#xff0c;网…...

Proteus-8086调试汇编格式的一点心得

这阵子开始做汇编的微机实验&#xff08;微机原理与接口技术题解及实验指导&#xff0c;吴宁版本13章&#xff09;&#xff0c;中间出了挺多问题&#xff0c;解决后记录下。 先上电路图 用子电路来仿真发现仿真的时候子电路这块根本没有高低电平输出&#xff0c;只好把子电路拿…...

Python入门教程 —— 多任务

1.线程 1.1.线程安全问题 线程访问全局变量 import threading g_num = 0 def test(n):global g_numfor x in range(n):g_num += xg_num -= xprint(g_num)if __name__ == __main__:t1 = threading.Thread(target=test, args=(10,))t2 = threading.Thread(target=test, args=(…...

【笔记】算法记录

1、求一个数的素因子&#xff08;试除法&#xff09; // 获取一个数的所有素因子 set<int> getPrimeFactors(int num) {set<int> primeFactors;for (int i 2; i * i < num; i) {while (num % i 0) {primeFactors.insert(i);num / i;}}if (num > 1) {prime…...

2024年1月4日蜻蜓hr人才招聘系统v1.1.7更新-正式版发布-客户端源代码开源发布供学习-本产品完成上线正式版-修复多个bug-优雅草果果|小无

2024年1月4日蜻蜓hr人才招聘系统v1.1.7更新-正式版发布-客户端源代码开源发布供学习-本产品完成上线正式版-修复多个bug-优雅草果果|小无 前端代码开源库 关于开源说明&#xff1a;企业服务-招聘信息管理系统-前端uniapp-系统前端开放源代码仅供学习-优雅草科技-目前优雅草科…...

【网络】计算机网络的分类 局域网 (LAN) 广域网 (WAN) 城域网 (MAN)个域网(PAN)

局域网是通过路由器接入广域网的 分布范围 局域网Local Area Network&#xff1a;小范围覆盖&#xff0c;速度高&#xff0c;延迟低(办公室&#xff0c;家庭&#xff0c;校园&#xff0c;网络) 广域网Wide Area Network 大范围覆盖&#xff0c;速度相对低&#xff0c;延迟高…...

DeepSeek:性能强劲的开源模型

deepseek 全新系列模型 DeepSeek-V3 首个版本上线并同步开源。登录官网 chat.deepseek.com 即可与最新版 V3 模型对话。 性能对齐海外领军闭源模型​ DeepSeek-V3 为自研 MoE 模型&#xff0c;671B 参数&#xff0c;激活 37B&#xff0c;在 14.8T token 上进行了预训练。 论…...

MySql 通过 LOAD DATA INFILE 导入大量数据

背景&#xff1a;要在本地Mysql导入几十万-百万条数据非常耗时&#xff0c;从网上找到通过load data infile 方式可以快速导入大量数据&#xff0c;就动手尝试了。结果就是不太适合复杂的格式数据导入&#xff0c;比如字段多&#xff0c;数据格式多等&#xff0c;但对于简单的表…...

Linux系统中解决端口占用问题

在日常的 Linux 系统管理和开发过程中&#xff0c;端口占用是一个常见且令人头疼的问题。无论是部署新服务、调试应用程序&#xff0c;还是进行系统维护&#xff0c;遇到端口被占用都可能导致服务无法正常启动或运行。本文将详细介绍在 Linux 系统中如何识别和解决端口占用问题…...

两种方式实现Kepware与PLC之间的心跳检测

两种方式实现Kepware与PLC之间的心跳检测 实现Kepware与PLC之间的心跳检测1.OPCUA 外挂程序2.Kepware Advanced Tag 实现Kepware与PLC之间的心跳检测 1.OPCUA 外挂程序 这是通过上位程序来触发心跳的一种机制&#xff0c;在C#中&#xff0c;可以利用OPC UAOPCAutodll的方式…...

使用DockerCompose部署服务

由于格式或图片解析问题&#xff0c;为了更好的阅读体验&#xff0c;可前往 阅读原文 以前我们总是用命令管理每个容器的启动、停止等等&#xff0c;若有多个容器时可能还存在启动优先级的问题&#xff0c;那就要等到指定的容器启动后再去启动另一个容器&#xff0c;对于整体的…...

第P5周-Pytorch实现运动鞋品牌识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: Pytorch &#xff08;二&#xff09;具体步骤 时间…...

react-quill 富文本组件编写和应用

index.tsx文件 import React, { useRef, useState } from react; import { Modal, Button } from antd; import RichEditor from ./RichEditor;const AnchorTouchHistory: React.FC () > {const editorRef useRef<any>(null);const [isModalVisible, setIsModalVis…...

因泰立科技激光车检器,高速公路的精准流量统计专家

高速公路自由流门架激光车检器&#xff0c;专为解决高速公路交通管理中的各种挑战而设计。该产品采用先进的激光测量技术&#xff0c;能够对动态通过的车辆进行高速动态扫描&#xff0c;通过测量物体表面点的反射距离&#xff0c;迅速换算成三维空间坐标&#xff0c;实现对车辆…...

windows中,git bash 使用conda命令

1、首先在Anaconda的安装路径如/Anaconda3/Scripts下&#xff0c;打开git bash窗口&#xff0c;然后输入下面的命令。 ./conda init bash 运行之后&#xff0c;会在用户目录下面生成.bash_profile文件&#xff0c;文件内容如下&#xff1a; # >>> conda initialize…...

《繁星路》V1.8.3(Build16632266)官方中文学习版

《繁星路》官方中文版https://pan.xunlei.com/s/VODae2_2Z3QyMF02I5y321uHA1?pwdqgsh# 作为一款星际模拟游戏&#xff0c;完美融合了硬科幻元素与基地建设玩法&#xff0c;体验改造行星的恢弘与壮阔。化身人工意识AMI&#xff0c;遵照基本指示推进火星改造的各项工作&#xf…...

vscode 无法使用npm, cmd命令行窗口可以正常执行

解决方法&#xff1a; 执行命令获得命令的位置 get-command npm 得到如下 然后删除或者修改 npm.ps1文件 让其不能使用就行。然后重启vscode即可。 pnpm 同理即可 另外加速源 国内镜像源&#xff08;淘宝&#xff09;&#xff1a; npm config set registry https://regist…...

html + css 顶部滚动通知栏示例

前言 在现代网页设计中&#xff0c;一个吸引人的顶部滚动通知栏不仅能够有效传达重要信息&#xff0c;还能提升用户体验。通过使用HTML和CSS&#xff0c;我们可以创建既美观又功能强大的组件&#xff0c;这些组件可以在不影响网站整体性能的情况下提供实时更新或紧急通知。 本…...

阿里mod_asr3.0集成webrtc静音算法

alibabacloud-nls-cpp-sdk-master 先到阿里官网下载nls库的源代码&#xff0c;编译生成对应的库文件和头文件。 我编译的放到了以下目录。 /home/jp/2025/alibabacloud-nls-cpp-sdk-master/build/install/NlsSdk3.X_LINUX/include/ /home/jp/2025/alibabacloud-nls-cpp-sdk-…...

【MySQL】表的基本查询

文章目录 1. 插入 insert1.1 单行插入2.2 多行插入2.3 插入 否则更新2.4 替换 2. 查找 select2.1 select 列2.2 where 条件2.3 order by 排序2.4 筛选分页结果 3. 更新 update4. 删除 delete5. 截断 truncate6. 插入查询结果7. 聚合函数8. group by子句 我们经常说数据库就是CR…...

2025-01-07日SSH钓鱼日志

今天发现了挖矿程序部署脚本&#xff0c;可针对性排查。 时间来源类型详情20:16:08146.190.50.206:36694CHANNEL_REQUEST通道&#xff1a;1&#xff0c;类型&#xff1a;exec(command:uname -a)20:16:08146.190.50.206:36694OPEN_CHANNEL通道&#xff1a;1&#xff0c;类型&am…...

C++语言的计算机基础

C语言的计算机基础 引言 C是一种通用的编程语言&#xff0c;由Bjarne Stroustrup于1979年开发。它在C语言的基础上增加了面向对象的特性&#xff0c;使得程序设计变得更加灵活和高效。C广泛应用于系统软件、游戏开发、实时仿真等领域。本文将深入探讨C语言的基础知识&#xf…...

怎么把word试题转成excel?

在教育行业、学校管理以及在线学习平台中&#xff0c;试题库的高效管理是一项核心任务。许多教育工作者和系统开发人员常常面临将 Word 中的试题批量导入 Excel 的需求。本文将详细介绍如何快速将试题从 Word 转换为 Excel&#xff0c;帮助您轻松解决繁琐的数据整理问题&#x…...

在线商城系统设计与开发-代码(源码+数据库+文档)

亲测完美运行带论文&#xff1a;文末获取源码 文章目录 项目简介&#xff08;论文摘要&#xff09;运行视频包含的文件列表&#xff08;含论文&#xff09;前端运行截图后端运行截图 项目简介&#xff08;论文摘要&#xff09; 现代经济快节奏发展以及不断完善升级的信息化技术…...

HCIE-day10-ISIS

ISIS ISIS&#xff08;Intermediate System-to-Intermediate System&#xff09;中间系统到中间系统&#xff0c;属于IGP&#xff08;内部网关协议&#xff09;&#xff1b;是一种链路状态协议&#xff0c;使用最短路径优先SPF算法进行路由计算&#xff0c;与ospf协议有很多相…...

解决SSH连接时遇到的“远程主机身份验证已更改 (WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)”警告

文章目录 引言警告信息解读造成原因解决方案 引言 在使用SSH协议进行远程服务器管理的过程中&#xff0c;可能会遇到这样的情况&#xff1a;当尝试通过SSH连接到某个远程主机时&#xff0c;终端突然弹出一条警告信息&#xff0c;提示“远程主机身份验证已更改”。 警告信息解…...

C语言的循环实现

C语言的循环实现 C语言是一种功能强大且广泛使用的编程语言&#xff0c;其语法简单易懂&#xff0c;适用于系统软件、嵌入式系统和高性能应用程序等多个领域。在C语言中&#xff0c;控制程序执行流程的基本结构之一就是循环。循环允许程序在满足某个条件的情况下重复执行一段代…...

如何使用vue引入three.js

在 Vue.js 项目中引入和使用 Three.js 是一个常见的需求&#xff0c;Three.js 是一个用于在浏览器中创建和显示动画 3D 计算机图形的 JavaScript 库。以下是一个基本的示例&#xff0c;展示如何在 Vue 项目中引入和使用 Three.js。 1. 创建 Vue 项目 如果你还没有一个 Vue 项…...

【C++】深入理解迭代器(Iterator)

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;什么是迭代器&#xff1f;迭代器与指针的比较 &#x1f4af;std::string 中的迭代器示例代码与图示分析运行结果&#xff1a;图示说明&#xff1a; 小提示 &#x1f4af;正…...