【数据结构】1. 时间/空间复杂度
- 第 95 篇 -
Date: 2025 - 05 - 09
Author: 郑龙浩/仟墨
【数据结构 】
文章目录
- 数据结构 - 1 -
- 了解数据结构与算法
- 1 什么是数据结构
- 2 什么是算法
- 3 数据结构的重要性?
- 一 时间复杂度_空间复杂度
- 1 时间复杂度
- ① 表示方法
- ② 推导大 O 的规则:
- ③ **代码示例 **
- 2 空间复杂度
- ① 介绍:
- ② **代码示例**
数据结构 - 1 -
了解数据结构与算法
1 什么是数据结构
官方: 数据结构(Data Structure)是计算机科学中存储、组织和管理数据的方式,它使得数据可以高效地访问和修改。
大白话: 数据结构就是高效存储和管理数据的方法,学习它就是为了更快地
- 查找数据
- 插入新数据
- 删除旧数据
- 修改已有数据
- …
2 什么是算法
- 算法和数据结构是不分家的,他们两个经常合起来去说。
- 而算法就是对数据的处理。
- 比如: 动态规划(DP),排序,DFS(深搜),BFS(广搜),二叉树,红黑树…
3 数据结构的重要性?
- 考研必考(408之一) – 很重要
- 面试笔试的时候,数据结构与算法占比很大,大厂技术面试约占占比70%以上
- 学会数据结构,可以有效的提升程序的效率
一 时间复杂度_空间复杂度
复杂度是用来分析写的程序的运行的时间和空间的占用情况
说白了就是分析这个程序性能的
如果单纯的去在电脑上运行程序去看运行时间的多少来确定时间的话,是不正确的,比如一台8核16g的的电脑与一台2核4g的电脑,同一个程序,运行时间肯定不同,抛开设备去谈性能,就是耍流氓。
在做题的时候程序经常会超时,而如果会看时间复杂度和空间复杂度的话,可以在测试之前有效的节省时间,提高效率,很有用!
现代的计算机除了嵌入式以外基本上已经不关注空间了,因为现在的内存很大了。
1 时间复杂度
算法的时间复杂度是一个函数(数学中的函数,不是程序中的函数),算的不是时间,算的是程序的执行次数
① 表示方法
使用大 O 符号: 描述函数渐进行为的数学符号
可以说是就是一种估算,上边的式子可以写成
O(N^2)
② 推导大 O 的规则:
-
如果项为常数,则用
1
替代 -
只保留次数函数的最高阶项 –> 其他项去掉,对整个结果的影响不是很大,所以可以忽略,只保留影响最大的项
-
如果最高阶项的系数是非
1
,那么要把系数变为1
Eg:
F(N) = 2N^4 + N
–>O(N^4)
-
当程序复杂, 有最好最坏的不同的复杂度的时候,取最坏的复杂度,如下面的Eg4 Eg5
③ **代码示例 **
Eg 1
复杂度为: O(N^2)
// 请计算一下Func1基本操作执行了多少次?
void Func1(int N)
{
int count = 0;
// 执行次数: N^N == N^2
for (int i = 0; i < N ; ++ i) {for (int j = 0; j < N ; ++ j) {++count;}
}
// 执行次数: 2 * N
for (int k = 0; k < 2 * N ; ++ k) {++count;
}
// 执行次数: 10
int M = 10;
while (M--) {++count;
}
printf("%d\n", count);
}
所以不同的代码段加起来,Func1 总的执行的基本操作次数为: F(N) = N^2 + 2 * N + 10
实际计算时间复杂度的时候,不需要进行精确计算执行次数,只需要看出大概执行次数即可
Eg 2
// 计算Func2的时间复杂度?
// O(N)
void Func2(int N) {int count = 0;for (int k = 0; k < 2 * N; ++k) {++count;}int M = 10;while (M--) {++count;}printf("%d\n", count);
}
Eg 3
// 计算Func3的时间复杂度?
// O(N + M)
// 如果题目明确说,N > M,那么就是 O(N)
void Func3(int N, int M) {int count = 0;for (int k = 0; k < M; ++k) {++count;}for (int k = 0; k < N; ++k) {++count;}printf("%d\n", count);
}
Eg 4
// 计算Func4的时间复杂度?
// O(1)
void Func4(int N) {int count = 0;for (int k = 0; k < 100; ++k) {++count;}printf("%d\n", count);
}
Eg 5
- 最好的情况: 第一个就找到了 复杂度为: O(1)
- 平均的情况: 在中间找到: O((1/2) * N) --> 但是 1/2 通常被忽略
- 最坏的情况: 在最后一个找到: O(N)
- 取最坏的情况
// 计算strchr的时间复杂度?
// O(N)
// 查找 ch
const char *strchr(const char *str, char ch) {while (*str != '\0') {if (*str == ch)return str;++str;}return NULL;
}
Eg 6
- 外层循环 n 次,内层每次循环 n - 1 次,所以构成了等差数列
- 第一层:n - 1次,第二层n - 2次,第三层n - 3次…最后1次 --> d 为 1 的等差数列
- 根据等差数列公式得出: F(N) = (n(n-1)) / 2 --> n^2/2 - n/2
- 最坏的时间复杂度: O(N^2) --> 数组逆序的时候
- 最好的时间复杂度: O(n) --> 数组有序
- 空间复杂度: O(1) --> 原地排序,空间很小
// 冒泡排序
// 计算BubbleSort的时间复杂度?
void BubbleSort(int *a, int n) {assert(a);for (size_t end = n; end > 0; --end) {int exchange = 0;for (size_t i = 1; i < end; ++i) {if (a[i - 1] > a[i]) {Swap(&a[i - 1], &a[i]);exchange = 1;}}if (exchange == 0)break;}
}
Eg 7
这个就有点复杂了,首先来看,查找了多少次呢??
每次查找都除以2,直到找到为止,如下所示
- 第 1 次:搜索范围 =
n
- 第 2 次:搜索范围 =
n / 2
- 第 3 次:搜索范围 =
n / 4
- …
- 第 k 次:搜索范围 =
n / 2^(k-1)
最坏情况终止条件是搜索范围 <=1,也就是
n / 2^(k-1) <= 1 --> n <= 2^(k-1) * 1 --> k-1 >= log2(N) --> k >= log2(n) + 1
- 因此,最多需要
log2(n) + 1
次比较
// 计算BinarySearch的时间复杂度?
// O(log N)
int BinarySearch(int *a, int n, int x) {assert(a);int begin = 0;int end = n;while (begin < end) {int mid = begin + ((end - begin) >> 1);if (a[mid] < x)begin = mid + 1;else if (a[mid] > x)end = mid;elsereturn mid;}return -1;
}
Eg 8
n 的阶乘就是从 n 乘到 1,而这个过程中,无非就是乘了n次,所以复杂度也是 O(N) 了
也就是递归了n次或者循环了n次
// 计算阶乘递归Factorial的时间复杂度?
// 阶乘
// 时间复杂度: O(N)
// 空间复杂度: O(N)
// 递归版
long long Factorial(size_t N) { return N < 2 ? N : Factorial(N - 1) * N;
}
// 时间复杂度: O(N)
// 空间复杂度: O(1)
// 迭代版
long long Factorial(size_t N) {long long result = 1;for (size_t i = 1; i <= N; ++i)result *= i;return result;
}
Eg 9
动手画二叉树可以助于理解
第1层: fib(n) // --> 次数2^0 第2层: fib(n-1) fib(n-2) // --> 次数 2^1 第3层: fib(n-2) fib(n-3) fib(n-3) fib(n-4) // --> 次数 2^2 ... 第n层: // --> 次数 2^(n-1)
将每一层的次数放到一个序列里面,可以构成一个等比数列,q为2
根据等比公式,得出
2^n - 1
2^0 + 2^1 + 2^2 + ... + 2^(n-1) ==> 2^n - 1 ----> O(2^n)
// 计算斐波那契递归的时间复杂度?
// O(2^n)
int Fibonacci(int n) {if (n <= 1) {return n; // 基本情况:F(0)=0, F(1)=1}return Fibonacci(n - 1) + Fibonacci(n - 2); // 递归调用
}
2 空间复杂度
① 介绍:
空间复杂度不计算空间, 而是粗略计算定义的变量个数
除了嵌入式开发,一般不太在乎空间复杂度,因为嵌入式是在设备上,如果那个设备放内存条的空间很小,导致内存很小,这样的话就要优化空间复杂度
表示方法dz
与时间复杂度一样,用
O()
表示
推导大 O 的方法
空间是看的变量或固定大小的数组的个数
如果大小是常数,则用
1
代替只保留最高阶项(只保留对空间影响最大的项)
- 如果最高的项系数为非1,则将系数变为1
Eg:
F(N) = 3N + 4 --> O(N)
递归会占用栈空间,需要根据递归深度和每层的分配的额外空间计算
当空间在不同的情况下不同时,有最好和最坏复杂度,取最坏的复杂度
动态分配的孔吉纳需要根据实际占用计算 –> 动态数组,哈希表
Eg: 生成一个大小为 N 的动态数组 –>
O(N)
② 代码示例
参数,第一个为指针,第二个为变量,所以算作两个
后边总共定义了3个变量总共加起来才5个,所以空间复杂度为 O(1)
// 冒泡排序
// 计算BubbleSort的空间复杂度?
void BubbleSort(int *a, int n) {assert(a);for (size_t end = n; end > 0; --end) {int exchange = 0;for (size_t i = 1; i < end; ++i) {if (a[i - 1] > a[i]) {Swap(&a[i - 1], &a[i]);exchange = 1;}}if (exchange == 0)break;}
}
相关文章:
【数据结构】1. 时间/空间复杂度
- 第 95 篇 - Date: 2025 - 05 - 09 Author: 郑龙浩/仟墨 【数据结构 】 文章目录 数据结构 - 1 -了解数据结构与算法1 什么是数据结构2 什么是算法3 数据结构的重要性? 一 时间复杂度_空间复杂度1 时间复杂度① 表示方法② 推导大 O 的规则:③ **代码示例 ** 2 空…...
k8s存储类型:emptyDir、hostPath、nfs、pvc及存储类storageclass的静态/动态创建pv
Kubernetes存储类型详解 Kubernetes(K8s)提供了多种存储类型,满足不同的存储需求。这些存储类型包括 emptyDir、hostPath、nfs、PersistentVolumeClaim(PVC)以及存储类(StorageClass)的静态和动…...
TRAE 配置blender MCP AI自动3D建模
BlenderMCP - Blender模型上下文协议集成 BlenderMCP通过模型上下文协议(MCP)将Blender连接到Claude AI,允许Claude直接与Blender交互并控制Blender。这种集成实现了即时辅助的3D建模、场景创建和操纵。 1.第一步下载 MCP插件(addon.py):Blender插件,在…...
不拆机查看电脑硬盘型号的常用方法
要比较两个硬件的参数,首先要知道的是硬件准确的型号。不过,如硬盘这类硬件,一般都藏在电脑“肚子里”,拆下看费时又费力。那么,不拆机电脑硬盘型号怎么看呢?接下来,我们就来分享几种方法。 使…...
抖音 “碰一碰” 发视频:短视频社交的新玩法
在短视频社交的广阔天地里,抖音始终站在创新的前沿。2023 年,抖音重磅推出 “碰一碰” 功能,借助近距离通信技术,实现设备间视频的闪电分享,为短视频社交注入全新活力。本文将深入剖析这一功能背后的技术奥秘、丰富应用…...
learning ray之ray核心设计和架构
我们每天都在处理海量、多样且高速生成的数据,这对计算能力提出了前所未有的挑战。传统的单机计算模式在面对日益复杂的机器学习模型和大规模数据集时,往往显得力不从心。更重要的是,数据科学家们本应专注于模型训练、特征工程、超参数调优这…...
深入理解 JavaScript 对象与属性控制
ECMA-262将对象定义为一组属性的无序集合,严格来说,这意味着对象就是一组没有特定顺序的值,对象的每个属性或方法都由一个名称来标识,这个名称映射到一个值. 可以把js的对象想象成一张散列表,其中的内容就是一组名/值对,值可以是数据或者函数 1. 理解对象 创建自定义对象的…...
深入理解 Linux 虚拟文件系统(VFS)
在 Linux 操作系统的世界里,虚拟文件系统(Virtual File System,VFS)扮演着极为关键的角色。它就像是一座桥梁,连接着各种不同类型的物理文件系统与操作系统以及应用程序,使得我们在使用 Linux 时能够以统一…...
AI云防护真的可以防攻击?你的服务器用群联AI云防护吗?
1. 传统防御方案的局限性 静态规则缺陷:无法应对新型攻击模式(如HTTP慢速攻击)资源浪费:固定带宽采购导致非攻击期资源闲置 2. AI云防护技术实现 动态流量调度算法: # 智能节点选择伪代码(参考群联防护…...
计算机视觉——MedSAM2医学影像一键实现3D与视频分割的高效解决方案
引言 在乡村医院的傍晚高峰时段,扫描室内传来阵阵低沉的嗡鸣声,仿佛一台老旧冰箱的运转声。一位疲惫的医生正全神贯注地检查着当天的最后一位患者——一位不幸从拖拉机上摔下的农民,此刻正呼吸急促。CT 机器飞速旋转,生成了超过一…...
软件工程之软件项目管理深度解析
前文基础: 1.软件工程学概述:软件工程学概述-CSDN博客 2.软件过程深度解析:软件过程深度解析-CSDN博客 3.软件工程之需求分析涉及的图与工具:软件工程之需求分析涉及的图与工具-CSDN博客 4.软件工程之形式化说明技术深度解…...
40. 组合总和 II
题目 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candidates [10,1…...
java-多态
一、多态的来历 我们先来了解一个业务场景:请设计一个系统,描述主人喂养宠物的场景,首先在这个场景当中应该有”宠物对象“,“宠物对象”应该有一个吃的行为,另外还需要一个“主人对象”,主人应该有一个喂的…...
重构 cluster-db 选择器,新增限制字段 showDb 不影响原功能前提实现查询功能增量拓展
1.为DbSelect组件新添加showDb字段 :show-db"false"时只显示集群不显示数据库信息 重构 cluster-db 选择器,新增限制字段 showDb 不影响原功能前提实现查询功能增量拓展,。保证组件**高可用性,减少冗余方法的编写,提高整体代码复用性和维护性**。 <!-…...
Modbus RTU 详解 + FreeMODBUS移植(附项目源码)
文章目录 前言一、Modbus RTU1.1 通信方式1.2 模式特点1.3 数据模型1.4 常用功能码说明1.5 异常响应码1.6 通信帧格式1.6.1 示例一:读取保持寄存器(功能码 0x03)1.6.2 示例二:写单个线圈(功能码 0x05)1.6.3…...
新闻发稿筛选媒体核心标准:影响力、适配性与合规性
1. 评估媒体影响力 权威性与公信力:优先选择央级媒体,其报道常被其他平台转载,传播链条长,加分权重高。 传播数据:参考定海区融媒体中心的赋分办法,关注媒体的阅读量、视频播放量等指标,如阅读…...
豆包:基于多模态交互的智能心理咨询机器人系统设计与效果评估——情感计算框架下的对话机制创新
豆包:基于多模态交互的智能心理咨询机器人系统设计与效果评估——情感计算框架下的对话机制创新 摘要 随着人工智能在心理健康领域的应用深化,本文提出一种融合情感计算与动态对话管理的智能心理咨询机器人系统架构。通过构建“用户状态-情感响应-策略生成”三层模型,结合…...
坐席业绩可视化分析工具
这个交互式的坐席业绩分析工具具有以下特点: 数据导入功能:支持上传 CSV 文件,自动解析并展示数据多维度分析:可按日 / 周 / 月分析业绩数据,支持切换不同业绩指标(接通时长 / 外呼次数 / 接通次数&#x…...
MATLAB制作柱状图与条图:数据可视化的基础利器
一、什么是柱状图与条图? 柱状图和条图都是用来表示分类数据的常见图表形式,它们的核心目的是通过矩形的长度来比较各类别的数值大小。条图其实就是“横着的柱状图”,它们的本质是一样的:用矩形的长度表示数值大小,不同…...
com.fasterxml.jackson.dataformat.xml.XmlMapper把对象转换xml格式,属性放到标签<>里边
之前从没用过xml和对象相互转换,最近项目接了政府相关的。需要用xml格式数据进行相互转换。有些小问题,困扰了我一下下。 1.有些属性需要放到标签里边,有的需要放到标签子集。 2.xml需要加<?xml version"1.0" encoding"…...
在js中大量接口调用并发批量请求处理器
并发批量请求处理器 ✨ 设计目标 该类用于批量异步请求处理,支持: 自定义并发数请求节拍控制(延时)失败重试机制进度回调通知 🔧 构造函数参数 new BulkRequestHandler({dataList, // 要处理的数据列表r…...
Azure资源创建与部署指南
本文将指导您如何在Azure平台上创建和配置必要的资源,以部署基于OpenAI的应用程序。 资源组创建 资源组是管理和组织Azure资源的逻辑容器。 在Azure门户顶端的查询框中输入"Resource groups"(英文环境)或"资源组"(中文环境)在搜索结果中点击"资…...
图解gpt之神经概率语言模型与循环神经网络
上节课我们聊了词向量表示,像Word2Vec这样的模型,它确实能捕捉到词语之间的语义关系,但问题在于,它本质上还是在孤立地看待每个词。英文的“Apple”,可以指苹果公司,也可以指水果。这种一词多义的特性&…...
Jenkins linux安装
jenkins启动 service jenkins start 重启 service jenkins restart 停止 service jenkins stop jenkins安装 命令切换到自己的下载目录 直接用命令下载 wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.190.3-1.1.noarch.rpm 下载直接安装 rpm -ivh jenkins-2.190.3-…...
android 修改单GPS,单北斗,单伽利略等
从hal层入手,代码如下: 各个类型如下: typedef enum {MTK_CONFIG_GPS_GLONASS 0,MTK_CONFIG_GPS_BEIDOU,MTK_CONFIG_GPS_GLONASS_BEIDOU,MTK_CONFIG_GPS_ONLY,MTK_CONFIG_BEIDOU_ONLY,MTK_CONFIG_GLONASS_ONLY,MTK_CONFIG_GPS_GLONASS_BEIDO…...
CNG汽车加气站操作工岗位职责
CNG(压缩天然气)汽车加气站操作工是负责天然气加气设备操作、维护及安全管理的重要岗位。以下是该岗位的职责、技能要求、安全注意事项及职业发展方向的详细说明: *主要职责 加气操作 按照规程为车辆加注CNG,检查车辆气瓶合格证…...
纯Java实现反向传播算法:零依赖神经网络实战
在深度学习框架泛滥的今天,理解算法底层实现变得愈发重要。反向传播(Backpropagation)作为神经网络训练的基石算法,其实现往往被各种框架封装。本文将突破常规,仅用Java标准库实现完整BP算法,帮助开发者: 1) 深入理解…...
springboot3 + mybatis-plus3 创建web项目实现表增删改查
Idea创建项目 环境配置说明 在现代化的企业级应用开发中,合适的开发环境配置能够极大提升开发效率和应用性能。本文介绍的环境配置为: 操作系统:Windows 11JDK:JDK 21Maven:Maven 3.9.xIDE:IntelliJ IDEA…...
多模型协同预测在风机故障预测的应用(demo)
数据加载和预处理的真实性: 下面的代码中,DummyDataset 和数据加载部分仍然是高度简化和占位的。为了让这个训练循环真正有效,您必须用您自己的数据加载逻辑替换它。这意味着您需要创建一个 torch.utils.data.Dataset 的子类,它能…...
韩媒聚焦Lazarus攻击手段升级,CertiK联创顾荣辉详解应对之道
近日,韩国知名科技媒体《韩国IT时报》(Korea IT Times)刊文引述了CertiK联合创始人兼CEO顾荣辉教授的专业见解,聚焦黑客组织Lazarus在Web3.0领域攻击手段的持续升级,分析这一威胁的严峻性,并探讨了提升行业…...
5.9-selcct_poll_epoll 和 reactor 的模拟实现
5.9-select_poll_epoll 本文演示 select 等 io 多路复用函数的应用方法,函数具体介绍可以参考我过去写的博客。 先绑定监听的文件描述符 int sockfd socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serveraddr; memset(&serveraddr, 0, sizeof(struc…...
图上思维:基于知识图的大型语言模型的深层可靠推理
摘要 尽管大型语言模型(LLM)在各种任务中取得了巨大的成功,但它们经常与幻觉问题作斗争,特别是在需要深入和负责任的推理的场景中。这些问题可以通过在LLM推理中引入外部知识图(KG)来部分解决。在本文中&am…...
37-智慧医疗服务平台(在线接诊/问诊)
系统功能特点: 技术栈: springBootVueMysql 功能点: 医生端 用户端 管理员端 医生端: 科室信息管理、在线挂号管理、预约体检管理、体检报告管理、药品信息管理、处方信息管理、缴费信息管理、病历信息管理、智能导诊管理、在线接诊患者功能 (和患者1V1沟通) 用户…...
【新品发布】VXI可重构信号处理系统模块系列
VXI可重构信号处理系统模块概述 VXI可重构信号处理系统模块包括了 GPU 模块,CPU 模块,射频模块、IO 模块、DSP模块、高速存储模块、交换模块,采集处理模块、回放处理模块等,全套组件为单体3U VPX架构,可自由组合到多槽…...
React 第三十八节 Router 中useRoutes 的使用详解及注意事项
前言 useRoutes 是 React Router v6 引入的一个钩子函数,允许通过 JavaScript 对象(而非传统的 JSX 语法)定义路由配置。这种方式更适合复杂路由结构,且代码更简洁易维护。 一、基础使用 1.1、useRoutes路由配置对象 useRoute…...
Redhat 系统详解
Red Hat 系统深度解析:从企业级架构到核心组件 一、Red Hat 概述:企业级 Linux 的标杆 Red Hat 是全球领先的开源解决方案供应商,其核心产品 Red Hat Enterprise Linux(RHEL) 是企业级 Linux 的黄金标准。RHEL 以 稳…...
docker常用命令总结
常用命令含义docker info查看docker 服务的信息-------------------------镜像篇docker pull XXX从官网上拉取名为XXX的镜像docker login -u name登录自己的dockerhub账号docker push XXX将XXX镜像上传到自己的dockerhub账户中(XXX的命名必须是用户名/镜像名&#x…...
【el-admin】el-admin关联数据字典
数据字典使用 一、新增数据字典1、新增【图书状态】和【图书类型】数据字典2、编辑字典值 二、代码生成配置1、表单设置2、关联字典3、验证关联数据字典 三、查询操作1、模糊查询2、按类别查询(下拉框) 四、数据校验 一、新增数据字典 1、新增【图书状态…...
component :is是什么?
问: component :is是什么? 是组件? 那我们是不是就不需要自己创建组件了?还是什么意思?component :is和什么功能是类似的,同时和类似功能相比对什么时候用component :is…...
适老化洗浴辅具产业:在技术迭代与需求升级中重塑银发经济新生态
随着中国人口老龄化程度的不断加深,老年群体对于适老化产品的需求日益增长。 适老化洗浴辅具作为保障老年人洗浴安全与舒适的关键产品,其发展状况备受关注。 深入剖析中国适老化洗浴辅具的发展现状,并探寻助力产业发展的有效路径࿰…...
『Python学习笔记』ubuntu解决matplotlit中文乱码的问题!
ubuntu解决matplotlit中文乱码的问题! 文章目录 simhei.ttf字体下载链接:http://xiazaiziti.com/210356.html将字体放到合适的地方 sudo cp SimHei.ttf /usr/share/fonts/(base) zkfzkf:~$ fc-list | grep -i "SimHei" /usr/local/share/font…...
从AI到新能源:猎板PCB的HDI技术如何定义高端制造新标准?
2025年,随着AI服务器、新能源汽车、折叠屏设备等新兴领域的爆发式增长,高密度互连(HDI)电路板成为电子制造业的“必争之地”。HDI板凭借微孔、细线宽和高层间对位精度,能够实现电子设备的高集成化与微型化,…...
汽车制造行业的数字化转型
嘿,大家好!今天来和大家聊聊汽车制造行业的数字化转型,这可是当下非常热门的话题哦! 随着科技的飞速发展,传统的汽车制造行业正经历着一场深刻的变革。数字化技术已经不再是“锦上添花”,而是车企能否在未…...
Redis 常见数据类型
Redis 常见数据类型 一、基本全局命令详解与实操 1. KEYS 命令 功能:按模式匹配返回所有符合条件的键(生产环境慎用,可能导致阻塞)。 语法: KEYS pattern 模式规则: h?llo:匹配 hello, ha…...
【计算机网络-传输层】传输层协议-TCP核心机制与可靠性保障
📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 上篇文章:传输层协议-UDP 下篇文章: 网络层 我们的讲解顺序是&…...
对golang中CSP的理解
概念: CSP模型,即通信顺序进程模型,是由英国计算机科学家C.A.R. Hoare于1978年提出的。该模型强调进程之间通过通道(channel)进行通信,并通过消息传递来协调并发执行的进程。CSP模型的核心思想是“不要通过…...
嵌入式openharmony标准系统中HDF框架底层原理分析
1、案例简介 该程序是基于OpenHarmony标准系统编写的基础外设类:简易HDF驱动。 2、基础知识 2.1、OpenHarmony HDF开发简介 HDF(Hardware Driver Foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理、驱动消息机制和配置管理。旨在构建统一…...
238.除自身以外数组的乘积
给你一个数组,求出第 i 个元素以外的数组元素的乘积,不能使用除法,且时间复杂度O(n), 对于一个数,如果知道了前缀元素的乘积和后缀元素的乘积,就知道了这个元素以外的数组元素的乘积,所以现在的问题是如何…...
AI文旅|暴雨打造旅游新体验
今年"五一"假期,全国文旅市场迎来爆发式增长,从丈崖瀑布的磅礴水雾到城市商区的璀璨霓虹,从山野民宿的静谧悠然到主题乐园的欢腾喧嚣,处处人潮涌动。在这火热的景象背后,一股“无形之力”正悄然改变旅游体验…...
学习心得《How Global AI Policy and Regulations Will Impact Your Enterprise》Gartner
AI时代来临,然而与之对应的是海量的数据的安全性和合规性如何保障,如何平衡个人与智能体的利益,恰巧,最近Gartner发布了《How Global AI Policy and Regulations Will Impact Your Enterprise》,我们就其中的观点一起进行探讨。 战略规划假设 我们首先关注的是关键的战略…...