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

Objective-C语言的数据结构

Objective-C语言中的数据结构

Objective-C是一种面向对象的编程语言,其在苹果公司的软件开发中得到了广泛应用。它主要用于开发macOS和iOS应用程序。虽然Objective-C有许多丰富的特性,但在程序设计中,数据结构仍然是构建任何应用程序的基础。本文将探讨Objective-C中的几种常见数据结构,包括数组、字典、集合以及自定义数据结构,并分析它们的特性、使用场景及性能考量。

一、数组(NSArray和NSMutableArray)

1.1 NSArray

NSArray是Objective-C中不可变数组的实现。它提供了一种有序的数据集合,可以存储任何类型的对象。由于NSArray是不可变的,一旦创建就不能更改其内容。这种特性使得程序在多线程环境下更安全,因为读取的数据不会被修改。

objective-c NSArray *fruits = @[@"苹果", @"香蕉", @"橙子"]; NSLog(@"%@", fruits[0]); // 输出:苹果

使用NSArray的优点包括: - 简单易用:NSArray的API设计清晰,易于上手。 - 安全性:不可变数组避免了数据被意外修改。

然而,其缺点也很明显: - 不支持动态大小调整:如果需要向数组中添加或删除元素,则必须创建一个新的NSArray。 - 性能:由于其不可变性,频繁的插入或删除操作会影响性能。

1.2 NSMutableArray

为了克服NSArray的不可变性,Objective-C提供了NSMutableArray。NSMutableArray支持动态大小调整,可以随时添加、删除或修改元素。

objective-c NSMutableArray *dynamicFruits = [NSMutableArray arrayWithObjects:@"苹果", @"香蕉", nil]; [dynamicFruits addObject:@"橙子"]; NSLog(@"%@", dynamicFruits); // 输出:苹果, 香蕉, 橙子

使用NSMutableArray的优点包括: - 灵活性:可以根据需要动态调整数组的大小。 - 支持多种操作:支持插入、删除、替换等复杂操作。

但需要注意的是,使用NSMutableArray时,要注意线程安全问题。在多线程环境中,应当采用锁机制确保数组操作的安全。

二、字典(NSDictionary和NSMutableDictionary)

2.1 NSDictionary

NSDictionary是不可变的键值对集合。在Objective-C中,字典用于存储和查找关联数据。键必须是唯一的,而值可以是任意类型的对象。

objective-c NSDictionary *person = @{@"姓名": @"张三", @"年龄": @30}; NSLog(@"姓名: %@", person[@"姓名"]); // 输出:姓名: 张三

使用NSDictionary的优点是: - 方便查找:通过键可以快速访问对应的值。 - 不可变性:在多线程环境中更安全。

但是,它也有缺点: - 不支持动态添加或删除键值对,要进行修改必须创建一个新的字典。 - 存在性能开销:当字典的大小增大时,查找和修改性能可能会下降。

2.2 NSMutableDictionary

NSMutableDictionary是NSDictionary的可变版本。它允许动态添加、删除和更新键值对。

objective-c NSMutableDictionary *mutablePerson = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"张三", @"姓名", @30, @"年龄", nil]; [mutablePerson setObject:@"男" forKey:@"性别"]; NSLog(@"%@", mutablePerson); // 输出:{姓名 = 张三; 年龄 = 30; 性别 = 男;}

NSMutableDictionary的优点和缺点类似于NSMutableArray: - 灵活性强,可以动态调整。 - 在多线程环境下需注意线程安全问题。

三、集合(NSSet和NSMutableSet)

3.1 NSSet

NSSet是一个无序的集合,它用于存储唯一的对象。与数组不同,集合中的对象是唯一的,不允许重复。

objective-c NSSet *fruitSet = [NSSet setWithObjects:@"苹果", @"香蕉", @"橙子", @"苹果", nil]; NSLog(@"%@", fruitSet); // 输出:{苹果, 橙子, 香蕉}

使用NSSet的优点: - 自动去重:集合中的对象是唯一的,适合需要唯一性约束的场景。 - 提供了集合操作:如交集、并集等操作,非常方便。

然而,NSSet也有其局限性: - 无序性:不能通过索引访问元素。 - 性能:查找的性能大致在O(1),但与数组相比,如果需要遍历集合,可能性能会略逊。

3.2 NSMutableSet

NSMutableSet是可变版本的NSSet,可以动态添加、删除元素。

objective-c NSMutableSet *mutableFruitSet = [NSMutableSet setWithObjects:@"苹果", @"香蕉", nil]; [mutableFruitSet addObject:@"橙子"]; NSLog(@"%@", mutableFruitSet); // 输出:{苹果, 橙子, 香蕉}

四、自定义数据结构

在某些情况下,标准的数据结构无法满足特定需求。此时,可以考虑自定义数据结构。

4.1 链表

链表是一种简单的数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。

```objective-c @interface Node : NSObject @property (nonatomic, strong) id data; @property (nonatomic, strong) Node *nextNode; @end

@implementation Node @end

@interface LinkedList : NSObject @property (nonatomic, strong) Node *head; - (void)insertData:(id)data; - (void)displayList; @end

@implementation LinkedList

  • (void)insertData:(id)data { Node newNode = [Node new]; newNode.data = data; if (!self.head) { self.head = newNode; } else { Node current = self.head; while (current.nextNode) { current = current.nextNode; } current.nextNode = newNode; } }

  • (void)displayList { Node *current = self.head; while (current) { NSLog(@"%@", current.data); current = current.nextNode; } } @end ```

在上述示例中,我们创建了一个简单的链表和节点类。链表支持插入数据和显示数据的操作。这种数据结构适用于需要频繁插入和删除的场景。

4.2 栈

栈是一种后进先出(LIFO)的数据结构。可用于管理函数调用、表达式求值等。

```objective-c @interface Stack : NSObject @property (nonatomic, strong) NSMutableArray *elements; - (void)push:(id)data; - (id)pop; @end

@implementation Stack

  • (instancetype)init { self = [super init]; if (self) { self.elements = [NSMutableArray array]; } return self; }

  • (void)push:(id)data { [self.elements addObject:data]; }

  • (id)pop { id lastObject = [self.elements lastObject]; [self.elements removeLastObject]; return lastObject; } @end ```

4.3 队列

队列是一种先进先出(FIFO)的数据结构。可用于任务管理、线程安全操作等。

```objective-c @interface Queue : NSObject @property (nonatomic, strong) NSMutableArray *elements; - (void)enqueue:(id)data; - (id)dequeue; @end

@implementation Queue

  • (instancetype)init { self = [super init]; if (self) { self.elements = [NSMutableArray array]; } return self; }

  • (void)enqueue:(id)data { [self.elements addObject:data]; }

  • (id)dequeue { id firstObject = [self.elements firstObject]; if (firstObject) { [self.elements removeObjectAtIndex:0]; } return firstObject; } @end ```

五、总结

Objective-C提供了丰富的数据结构,以满足大多数编程需求。从基本的数组、字典、集合到自定义的数据结构,它们各自有自己的适用场景和优缺点。在选择数据结构时,应根据具体的应用场景、操作复杂度以及性能需求来做出合理的选择。

数据结构是编程的基石,掌握了数据结构,能够帮助开发者更好地组织和管理数据,提高程序的效率和可维护性。在掌握Objective-C标准数据结构的基础上,深入学习自定义数据结构的实现,将使得开发者在应用中游刃有余。

通过实践和不断探索,相信每位开发者都能为自己的项目选择最合适的数据结构,使得编程更加高效和简单。

相关文章:

Objective-C语言的数据结构

Objective-C语言中的数据结构 Objective-C是一种面向对象的编程语言,其在苹果公司的软件开发中得到了广泛应用。它主要用于开发macOS和iOS应用程序。虽然Objective-C有许多丰富的特性,但在程序设计中,数据结构仍然是构建任何应用程序的基础。…...

智能水文:ChatGPT等大语言模型如何提升水资源分析和模型优化的效率

大语言模型与水文水资源领域的融合具有多种具体应用,以下是一些主要的应用实例: 1、时间序列水文数据自动化处理及机器学习模型: ●自动分析流量或降雨量的异常值 ●参数估计,例如PIII型曲线的参数 ●自动分析降雨频率及重现期 ●…...

ETL的工作原理

ETL的工作原理 什么是ETL_云计算主题库-阿里云 ETL的工作原理可以分为三个主要的步骤:Extract(提取)、Transform(转换)、Load(加载)。 工作步骤 描述 Extract (提取)…...

黑马头条平台管理实战

黑马头条 08平台管理 1.开始准备和开发思路1.1.开发网关1.2编写admin-gateway 代码 2.开发登录微服务2.1编写登录微服务 3.频道管理4.敏感词管理5.用户认证审核6.自媒体文章人工审核99. 最后开发中碰到的问题汇总1.关于nacos 配置 问题2.在开发频道管理新增频道后端无法接收到前…...

电池管理系统(BMS)架构详细解析:原理与器件选型指南

BMS(电池管理系统)架构详细讲解 从你提供的BMS(Battery Management System)架构图来看,主要涉及到电池监控模块、通信模块、功率控制模块等部分。下面我将详细讲解该架构的各个功能模块及其工作原理。 1. 电池管理核…...

SpringBoot环境和Maven配置

SpringBoot环境和Maven配置 1. 环境准备2. Maven2.1 什么是Maven2.2 为什么要学 Maven2.3 创建一个 Maven项目2.4 Maven核心功能2.4.1 项目构建2.4.2 依赖管理2.4.3 Maven Help插件 2.5 Maven 仓库2.5.1本地仓库2.5.2 中央仓库2.5.3 私有服务器, 也称为私服 2.6 Maven设置国内源…...

lambda用法及其原理

目录 lambda形式lambda用法1.sort降序2.swap3.捕捉列表 习题解题 lambda形式 [capture-list](parameters)->return type{function boby}[capture-list]:[捕捉列表]用于捕捉函数外的参数,可以为空,但不能省略;(parameters) &am…...

Postgresql源码(139)vim直接修改postgresql表文件的简单实例

1 前言 PG可以用pageinspect方便的读取查看表文件。本篇介绍一种用vim查看、编辑的方法,案例比较简单,主要分享原理。 修改表文件和controlfile是非常危险的行为,请不要在生产尝试。 2 用例 简化问题,用简单编码的数据类型。 d…...

Lianwei 安全周报|2025.1.2

以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 国家数据局等五部门印发《关于促进企业数据资源开发利用的意见》 为充分释放企业…...

Vue3-跨层组件通信Provide/Inject机制详解

Vue 3 中的 Provide 和 Inject 机制是专为跨层级传递数据而设计的,适用于祖先组件和后代组件之间的通信。与props 和 emits 不同,Provide/Inject 可以跨越多个层级进行数据传递,而不需要逐层传递。 1. Provide provide 是一个在祖先组件中提…...

springcloud 介绍

Spring Cloud是一个基于Spring Boot的微服务架构解决方案集合,它提供了一套完整的工具集,用于快速构建分布式系统。在Spring Cloud的架构中,服务被拆分为一系列小型、自治的微服务,每个服务运行在其独立的进程中,并通过…...

css预处理器sass

在前端开发的世界中,CSS 是构建网页样式的基础。然而,随着项目规模的增大,纯 CSS 的编写和维护往往会变得复杂而繁琐。为了解决这些痛点,Sass(Syntactically Awesome Style Sheets)应运而生。Sass 是一种 C…...

匠人天工Ai浮雕网站创新发布了ZBrush插件,提效500%,为AI+数字雕刻行业带来新的活力

2025年1月6日,杭州——杭州仓颉造梦数字科技公司旗下产品匠人天工近日宣布推出一款创新的ZBrush插件,旨在为AI数字雕刻行业带来前所未有的效率提升。该插件通过一系列智能化功能,大幅简化了数字雕刻的建模流程,使建模效率提高了50…...

解决 Pangolin 版本不兼容导致的编译错误

在使用 Pangolin 库时,有时候会遇到由于版本不兼容而导致的编译错误。本文将通过一个具体的错误案例,展示如何识别和解决这种问题。 问题描述 在编译时,遇到如下编译错误: /usr/local/include/pangolin/gl/glsl.hpp: In member…...

day01_ Java概述丶开发环境的搭建丶常用DOS命令

编程常识 什么是编程? 所谓编程,就是人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。 编程语言的发展历程 第一代:机器语言 ,机器语言由数字组成所有指令。计算器解析运行速度,最快…...

进程间通信——网络通信——UDP

进程间通信(分类):网络通信、无名管道、有名管道、信号、消息队列、共享内存、信号量集 OSI七层模型:(理论模型) 应用层 : 要传输的数据信息,如文件传输,电子邮件等 表示层 : 数…...

(六)vForm 动态表单(数据量大,下拉选卡顿问题)

系列文章目录 (一)vForm 动态表单设计器之使用 (二)vForm 动态表单设计器之下拉、选择 (三)vForm 动态表单解决下拉框无数据显示id问题 (四)vForm 动态表单自定义组件、属性 (五)vForm 动态表单文件上传、下载 文章目录 目录 前言 一、组件改造 1.添加分页所需参…...

asp.net core mvc的 ViewBag , ViewData , Module ,TempData

在 ASP.NET MVC 和 ASP.NET Core MVC 中,ViewBag 和 ViewData 是两种用于将数据从控制器传递到视图(View)的常用方法。它们都允许控制器将动态数据传递给视图,但它们的实现方式有所不同。关于 Module,它通常指的是某种…...

C#语言的软件开发工具

C#语言的软件开发工具 C#语言作为一种现代化的编程语言,凭借其强大的功能和丰富的生态系统,在软件开发领域得到了广泛的应用。随着C#语言的发展,越来越多的开发工具应运而生。本文将详细介绍C#语言常用的开发工具,包括集成开发环…...

iOS - AutoreleasePool

1. 基本数据结构 // AutoreleasePool 的基本结构 struct AutoreleasePoolPage {static pthread_key_t const key AUTORELEASE_POOL_KEY;magic_t const magic;id *next; // 指向下一个可存放对象的地址pthread_t const thread; // 所属线程AutoreleasePoolPage …...

数据仓库建设方案和经验总结

在做数据集成的过程中,往往第二步的需求就是建设数仓由于数据分散在不同的存储环境或数据库中,对于新业务需求的开发需要人工先从不同的数据库中同步、集中、合并等处理,造成资源和人力的浪费。同时,目前的系统架构,无…...

该单据从未生成交易分录

经常听到采购说,采购匹配明细表中没有xx料号的记录,没有xx供应商的记录。它们用这个报表来与供应商对账的。每每以此为借口拖延着货款不付。没有记录出来,原因各种。之前没有记录下来,想不起来。今天重新分析发现其中一个原因&…...

Flink DataSet API

文章目录 DataSet SourcesDataSet TransformationDataSet Sink序列化器样例一&#xff1a;读 csv 文件生成 csv 文件样例二&#xff1a;读 starrocks 写 starrocks样例三&#xff1a;DataSet、Table Sql 处理后写入 StarRocksDataSet<Row> 遍历遇到的坑 分类&#xff1a;…...

Bash Shell的操作环境

目录 1、路径与指令搜寻顺序 2、bash的进站&#xff08;开机&#xff09;与欢迎信息&#xff1a;/etc/issue&#xff0c;/etc/motd &#xff08;1&#xff09;/etc/issue &#xff08;2&#xff09;/etc/motd 3、bash的环境配置文件 &#xff08;1&#xff09;login与non-…...

web自动化测试环境搭建(python环境下selenium)

环境搭建步骤 安装selenium pip install selenium 安装浏览器 安装浏览器驱动 谷歌浏览器&#xff1a;chromdriver.exe ie浏览器:ieserverdriver.exe FireFox浏览器:geckodriver.exe 特别注意⚠️&#xff1a;下载驱动版本必须与浏览器版本一致 下载地址 淘宝镜像&#xff1…...

解决cursor AI编辑器控制台console中文乱码

chcp 查看当前控制台编码 936 &#xff1a; gbk编码 控制台输入&#xff1a;chcp 65001 设置为utf8...

fail api scope is not declared in the privacy agreement微信小程序uniapp 解决录音无法播放、授权

已解决 fail api scope is not declared in the privacy agreement微信小程序uniapp 解决录音无法播放、授权 没有声明内容协议导致的 微信公众平台&#xff1a;https://mp.weixin.qq.com/【1.左下角的-移动过去后会出现 “帐号设置”】 【2.基本设置->服务内容声明->修…...

ArkTs 状态管理装饰器

在构建页面多为静态界面&#xff0c;如果希望构建一个动态的&#xff0c;有交互的界面&#xff0c;就需要引入‘状态’的概念。 一.基本概念 1.状态变量&#xff1a;被状态装饰器装饰的变量&#xff0c;状态变量值的改变或引起UI的渲染更新 2.常规变量&#xff1a;没有被状态…...

Linux CentOS 7系统如何修改panel 重新打开最小化的界面/软件/程序

CentOS 7系统下&#xff0c;部分用户可能一开始打开界面没有类似Windows的下方菜单栏&#xff0c;只有一个浮动的panel。一旦打开软件&#xff0c;然后点击最小化后&#xff0c;找不到重新打开的方法。 右键panel&#xff0c;点击Add New Items… 选择以下三个基本就可以了&am…...

猫的眼睛有几种颜色?

在猫咪神秘而迷人的世界里&#xff0c;它们的眼睛犹如璀璨星辰&#xff0c;闪烁着各异的光芒&#xff0c;颜色丰富多样&#xff0c;令人着迷。 猫眼睛的颜色&#xff0c;粗略一数&#xff0c;常见的便有黄色、蓝色、绿色、棕色&#xff0c;还有那神秘的异瞳。这些色彩并非无端生…...

200道Java面试题(2025)

Java 基础 1. JDK 和 JRE 有什么区别&#xff1f; JDK&#xff1a;Java Development Kit 的简称&#xff0c;Java 开发工具包&#xff0c;提供了 Java 的开发环境和运行环境。 JRE&#xff1a;Java Runtime Environment 的简称&#xff0c;Java 运行环境&#xff0c;为 Java …...

ros2笔记-2.5.3 多线程与回调函数

本节体验下多线程。 python示例 在src/demo_python_pkg/demo_python_pkg/下新建文件&#xff0c;learn_thread.py import threading import requestsclass Download:def download(self,url,callback):print(f线程&#xff1a;{threading.get_ident()} 开始下载&#xff1a;{…...

openwrt nginx UCI配置过程

openwrt 中nginx有2种配置方法&#xff0c;uci nginx uci /etc/config/nginx 如下&#xff1a; option uci_enable true‘ 如果是true就是使用UCI配置&#xff0c;如果 是false&#xff0c;就要使用/etc/nginx/nginx.conf&#xff0c;一般不要修改。 如果用UCI&#xff0c;其…...

【数据结构】双向循环链表的使用

双向循环链表的使用 1.双向循环链表节点设计2.初始化双向循环链表-->定义结构体变量 创建头节点&#xff08;1&#xff09;示例代码&#xff1a;&#xff08;2&#xff09;图示 3.双向循环链表节点头插&#xff08;1&#xff09;示例代码&#xff1a;&#xff08;2&#xff…...

《Python游戏编程入门》注-第9章8

2 游戏信息的显示 在游戏窗口的上部会显示游戏分数、游戏关卡、剩余砖块数以及剩余小球数等信息,如图12所示。 图12 游戏信息显示 使用如图13所示的代码实现以上功能。 图13 显示游戏信息的代码 其中,print_text()函数MyLibrary....

起重机检测数据集VOC+YOLO格式2316张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2316 标注数量(xml文件个数)&#xff1a;2316 标注数量(txt文件个数)&#xff1a;2316 …...

20250106面试

rabbitmq如何保证消息不丢失 my&#xff1a; 持久化&#xff0c;包括消息持久化和队列持久化&#xff0c;重启不丢失。持久化到磁盘中的。 消息确认 死信队列&#xff1a;消费失败&#xff08;业务异常/未确认&#xff0c;重试后&#xff0c;会放死信队列&#xff09;&…...

【大数据】(选修)实验4 安装熟悉HBase数据库并实践

实验4 安装熟悉HBase数据库并实践 1、实验目的 (1)理解HBase在Hadoop体系结构中的角色; (2)熟练使用HBase操作常用的Shell命令; (3)熟悉HBase操作常用的Java API。 2、实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 HBase版本:1.1.2或以上版本 JDK版…...

使用Python类库pandas操作Excel表格

Date: 2025.01.02 20:33:30 author: lijianzhan 简述&#xff1a;pandas 是处理 Excel 文件的强大工具&#xff0c;它提供了简单易用的接口来读取、操作和写入 Excel 数据。以下是使用 pandas 处理 Excel 文件的详细指南&#xff0c;包括常见操作和示例代码。 安装依赖,pandas …...

【银河麒麟高级服务器操作系统】服务器异常重启故障分析及处理建议

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://document.kylinos.cn 服务器环境以及配置 系统环境 物理机/虚拟机/云…...

香橙派5plus单独编译并安装linux内核无法启动的原因分析与解决记录

1 说明 我依照官方手册编译单独编译linux内核&#xff0c;安装后重启出现内核启动失败的问题,编译和安装步骤如下&#xff1a;# 1. 克隆源码 git clone --depth1 -b orange-pi-6.1-rk35xx https://github.com/orangepi-xunlong/linux-orangepi# 2 配置源码 make rockchip_linu…...

iOS - 消息机制

1. 基本数据结构 // 方法结构 struct method_t {SEL name; // 方法名const char *types; // 类型编码IMP imp; // 方法实现 };// 类结构 struct objc_class {Class isa;Class superclass;cache_t cache; // 方法缓存class_data_bits_t bits; // 类的方法…...

ChatGPT 是通用人工智能吗

ChatGPT 目前并不是通用人工智能&#xff08;AGI, Artificial General Intelligence&#xff09;。它是一种专用人工智能&#xff08;Narrow AI&#xff09;&#xff0c;具体来说是一种基于大规模语言模型&#xff08;如 GPT-4&#xff09;的生成式人工智能&#xff0c;专注于处…...

Bash语言的函数实现

Bash语言的函数实现 引言 Bash&#xff08;Bourne Again SHell&#xff09;是一种在Unix和类Unix系统中广泛使用的命令行解释器。它不仅作为命令行工具使用&#xff0c;同时也被广泛应用于自动化脚本的编写。通过Bash&#xff0c;用户可以创建复杂的脚本&#xff0c;以执行一…...

Haskell语言的多线程编程

Haskell语言的多线程编程 在现代计算机科学中&#xff0c;多线程编程已经成为了提升程序性能的一个重要手段。尤其在我们处理计算密集型任务或 I/O 密集型任务时&#xff0c;合理地利用多核 CPU 的能力可以显著提升程序的执行效率。Haskell作为一种纯函数式编程语言&#xff0…...

Unity的四种数据持久化方式

目录 什么是数据持久化 数据持久化之PlayerPrefs 概述 API及用法 电脑中存放的位置 优缺点 主要用处 封装PlayerPrefs 数据持久化之XML XML是什么 读取XML信息 C#读取XML的方法有几种 读取xml文件信息 读取元素和属性信息 总结 写入XML信息 选择存储目录 存储…...

“霍普夫分岔”理论

庞加莱-安德罗诺夫-霍普夫分岔理论&#xff0c;通称为“霍普夫分岔”理论1&#xff0c;是首先由庞加莱在1892年对平面系统进行研究的2&#xff0c;然后由亚历山大安德罗诺夫&#xff08;Aleksandr Andronov&#xff0c;1901-1952&#xff09;及其合作者在1930年进行了完善和细化…...

10-C语言项目池

C语言项目池 《个人通讯录》 《火车订票系统》 管理员用户1录入火车票信息区间查询/购票2显示火车票信息打印购票信息3查询火车票信息退票4修改火车票信息5添加火车票信息 《学生学籍管理系统》 1录入学生信息2添加学生信息3显示学生信息4查找学生信息5删除学生信息6修改学…...

03、MySQL安全管理和特性解析(DBA运维专用)

03、MySQL安全管理和特性解析 本节主要讲MySQL的安全管理、角色使用、特定场景下的数据库对象、各版本特性以及存储引擎 目录 03、MySQL安全管理和特性解析 1、 用户和权限管理 2、 MySQL角色管理 3、 MySQL密码管理 4、 用户资源限制 5、 忘记root密码处理办法 6、 SQ…...

Ubuntu 下测试 NVME SSD 的读写速度

在 Ubuntu 系统下&#xff0c;测试 NVME SSD 的读写速度&#xff0c;有好多种方法&#xff0c;常用的有如下几种&#xff1a; 1. Gnome-disks Gnome-disks&#xff08;也称为“Disks”&#xff09;是 GNOME 桌面环境中的磁盘管理工具&#xff0c;有图形界面&#xff0c;是测试…...