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

【C】初阶数据结构15 -- 计数排序与稳定性分析

本文主要讲解七大排序算法之外的另一种排序算法 -- 计数排序 


目录

1  计数排序

1) 算法思想

2) 代码 

3) 时间复杂度与空间复杂度分析 

(1) 时间复杂度

(2) 空间复杂度

4) 计数排序的优点与缺点

(1) 优点

(2) 缺点

2  排序的稳定性

1) 稳定性的定义

2) 七大排序算法的稳定性分析

3) 七大排序算法时空复杂度与稳定性总结

3  总结


1  计数排序

        计数排序是排序算法中最简单的一种算法,不需要借助递归等算法,不过需要一点哈希表的思想(哈希表是一种数据结构,后面 C++ 部分会有相应的讲解,本质就是通过一个函数将元素值转化为其对应的映射,从而快速找到其值的一个数据结构)。


1) 算法思想

        计数排序的算法思想如同其名字一样,就是计算出其每个元素出现的次数,然后进行排序,其算法过程如下:

a. 先找出其数组中的最大值 maxnum 与 最小值 minnum,然后动态开辟一个 maxnum - minnum + 1 空间大小的数组 count

b. 然后用一个变量 i 遍历原数组,假设原数组为 arr,然后每次让 count[arr[i] - minnum]++

c. 再用一个变量 i 遍历 count 数组,再创建一个 index 下标,初始为 0,如果 count[i] != 0,那就让arr[index] = i + minnum,然后 index++,count[i]--,直到 count[i] 变为 0 为止。

其算法思想本质就是通过 arr 数组中每个元素减去最小值计算出 arr 数组中每个元素在 count 数组中的下标映射,然后越小的元素就在 count 数组中处于越前面的位置,count[i] 就记录了每个元素出现的次数。其执行过程如下:
(1) count 数组变化的过程:

(2) arr 数组变化过程:


2) 代码 

void CountSort(int* arr, int n)
{//先找最大值和最小值int maxnum = 0, minnum = INT_MAX;for (int i = 0; i < n; i++){if (maxnum < arr[i]) maxnum = arr[i];if (minnum > arr[i]) minnum = arr[i];}//开辟数组空间int* count = (int*)calloc(maxnum - minnum + 1, sizeof(int));if (count == NULL){perror("malloc fail!\n");exit(1);}//遍历原数组,count记录出现次数for (int i = 0; i < n; i++){count[arr[i] - minnum]++;}//再遍历count数组,将元素放到 arr 数组中int index = 0;for (int i = 0; i < maxnum - minnum + 1; i++){while (count[i]){arr[index++] = i + minnum;count[i]--;}}
}

这里有个需要注意的一点,就是动态开辟 count 数组空间的时候,要使用 calloc 函数,因为 count 数组里面的值必须全都初始化为 0,如果用 malloc 函数的话里面是随机值,是会发生错误的。

测试用例:

#include<stdio.h>
#include<stdlib.h>int main()
{int arr[] = { 6, 3, 10, 7, 2, 5, 12, 4, 1, 8, 11 };int n = sizeof(arr) / sizeof(arr[0]);CountSort(arr, n);for (int i = 0; i < n; i++){printf("%d ", arr[i]);}printf("\n");return 0;
}

3) 时间复杂度与空间复杂度分析 

(1) 时间复杂度

        从代码来分析,尽管有里面有两层循环,但是里面的 count[i] 循环仅有常数次,假设这里的 maxnum - minnum + 1 = k,计数排序的时间复杂度为 T(n) = O(n + k)

(2) 空间复杂度

        假设 maxnum - minnum + 1 为 k,由于动态开辟了 k 个空间,所以空间复杂度为 S(n) = O(k)


4) 计数排序的优点与缺点

(1) 优点

        计数排序的优点特别明显,就是其时间复杂度比较低,执行效率很高;前面的七大排序算法最快的时间复杂度就是 O(nlogn),所以计数排序的执行效率是比前面任何一个排序的执行效率都快。

(2) 缺点

        但是计数排序也有明显的缺点,由于在排序过程中需要动态开辟 maxnum - minnum + 1 的空间,所以如果 maxnum 与 minnum 相差很大时,需要动态开辟的空间就很大,会浪费很多空间;所以如果 arr 数组中的数据相差很大,比较离散时,计数排序的消耗就会很大。

        综合来说,计数排序的应用场景比较有限,如果 arr 数组中的数据很集中时,应用计数排序就很合适,效率很高;但如果数据比较离散的话,计数排序就不太适合了,消耗会比较大


2  排序的稳定性

1) 稳定性的定义

        一个排序算法是否稳定是指:如果对于一组数据,其中有相等的值,如果进行排序之后,之前相等的值的相对位置保持不变,那就称该排序算法是稳定的,否则就是不稳定的。比如:有一组数据 1 8 5 8 7,假设第一个 8 为 num1,第二个数据为 num2,排序之前 num1 排在 num2 之前,排完序之后,该组数据变为 1 5 7 num1 num2,num1 还是排在 num2 之前,就称该排序算法是稳定的;假如排完序之后,num1 排在了 num2 之后,那么该排序算法就是不稳定的。


2) 七大排序算法的稳定性分析

冒泡排序:假设一组数据为 8 8 2 1,第一个 8 为 num1,第二个 8 为 num2(num1 num2  2 1),那么根据冒泡排序的算法思想,第一轮排序的结果应该为 num1 2 1 num2,第二轮为 2 1 num1 num2,第三轮排序结果为 1 2 num1 num2。经过排序之后,发现 num1 还是排在 num2 之前,所以冒泡排序算法是稳定的。

 直接插入排序:还是假设数据为 num1 num2  2 1(同冒泡排序),经过第一轮排序,结果仍为 num1 num2 2 1,第二轮排序结果为 2 num1 num2 1,第三轮排序结果为 1 2 num1 num2。排完序之后,num1 依然排在 num2 之前,所以直接插入排序也是稳定的。

归并排序:依然假设数据为 num1 num2  2 1,num1 与 num2 合并之后依然是 num1 num2,2 与 1 合并之后结果为 1 2,然后两个子数组再进行合并,结果为 1 2 num1 num2。排完序之后,num1 依然排在 num2 之前,所以归并排序也是稳定的。

直接选择排序:假设一组数据为 num1 8 num2  2 9 (5 8 5 2 9),第一轮排序之后结果为 2 8 num2 num1 9,发现 num1 跑到 num2 之后了,所以直接选择排序是不稳定的。究其原因,就是因为直接选择排序会将最大的与每轮排序中的最后一个位置交换,将最小的和每轮排序中的第一个位置交换,就有能会使相同元素的相对位置发生变化。​

希尔排序:假设一组数据为 num1 8 2 num2  9 (5 8 2 5 9),第一轮排序 num1 2 9 一组,8 num2 一组,排完序之后结果就变为了 2  num2  num1  8  9,此时 num2 与 num1 相对位置发生了变化,所以希尔排序也是一种不稳定的排序算法。

堆排序:假设一组数据为 num1  num2  num3  num4 (2  2  2  2),第一次排序会将 num1 与 num4交换(堆顶元素与最后一个元素交换),此时结果变为了 num4  num2  num3  num1,相对位置发生了变化,所以堆排序也是一种不稳定的排序算法。

快速排序:假设一组数据为 5  num1  num2  4  num3  8  9  10  11(5  3  3  4  3  8  9  10  11),第一次排序,key值为 5,cur 在后面找比 5 小的元素然后和 ++prev 位置交换(双指针算法找 key 值),所以第一次排序之后结果为 num3  num1  num2  4  5  8  9  10  11,此时相对位置发生了变化,所以快速排序算法也是一种不稳定的排序算法。


3) 七大排序算法时空复杂度与稳定性总结

 以下表格是对七大排序的时空复杂度以及稳定性的总结:
 

七大排序算法总结
排序算法时间复杂度空间复杂度稳定性
直接插入排序O(n^2)O(1)稳定
直接选择排序O(n^2)O(1)不稳定
希尔排序O(n^1.3)O(1)不稳定
冒泡排序O(n^2)O(1)稳定
堆排序O(nlogn)O(1)不稳定
快速排序O(nlogn)O(logn) ~ O(n)不稳定
归并排序O(nlogn)O(n)稳定

3  总结

        到这里,初阶数据结构的知识就已经结束了,我们来回顾一下:在初阶数据结构里面,我们学习了顺序表、链表、栈、队列以及二叉树这五种数据结构,学习了 8 种排序算法;不仅通过具体代码实现了每个数据结构,而且还通过具体题目来加深了对于数据结构的理解,相信在学习完初阶数据结构之后,代码能力肯定会提升很多。

        在之后,我们会开启新的模块的学习,包括 C++语言、Linux操作系统以及高阶数据结构和各种经典算法,比如递归、回溯、动态规划、双指针算法等,在后面的文章中会交叉更新不同内容,后面的难度也肯定会呈不断递增的趋势,但是只要继续学下去,肯定就会收获满满,所以不要放弃哦!

相关文章:

【C】初阶数据结构15 -- 计数排序与稳定性分析

本文主要讲解七大排序算法之外的另一种排序算法 -- 计数排序 目录 1 计数排序 1&#xff09; 算法思想 2&#xff09; 代码 3&#xff09; 时间复杂度与空间复杂度分析 &#xff08;1&#xff09; 时间复杂度 &#xff08;2&#xff09; 空间复杂度 4&#xff09; 计…...

@PostConstruct @PreDestroy

PostConstruct 是 Java EE&#xff08;现 Jakarta EE&#xff09;中的一个注解&#xff0c;用于标记一个方法在对象初始化完成后立即执行。它在 Spring 框架、Java Web 应用等场景中广泛使用&#xff0c;主要用于资源初始化、依赖注入完成后的配置等操作。 1. 基本作用 执行时…...

2025数维杯数学建模A题完整限量论文:空中芭蕾——蹦床运动的力学行为分析

2025数维杯数学建模A题完整限量论文&#xff1a;空中芭蕾——蹦床运动的力学行为分析 &#xff0c;先到先得 A题完整论文https://www.jdmm.cc/file/2712067/ 蹦床&#xff08; Trampoline &#xff09;是一项运动员利用蹦床的反弹&#xff0c;在空中展示技能 技巧的竞技运动&…...

Kubernetes Gateway API 部署详解:从入门到实战

引言 在 Kubernetes 中管理网络流量一直是一个复杂而关键的任务。传统的 Ingress API 虽然广泛使用,但其功能有限且扩展性不足。Kubernetes Gateway API 作为新一代标准,提供了更强大的路由控制能力,支持多协议、跨命名空间路由和细粒度的流量管理。本文将带你从零开始部署…...

移动设备常用电子屏幕类型对比

概述 LCD 家族 &#xff08;TN、STN、TFT、IPS、VA&#xff09;依赖背光&#xff0c;性能差异主要来自液晶排列和驱动方式。OLED 以自发光为核心优势&#xff0c;但成本与寿命限制其普及。E-Paper 专为低功耗静态显示设计&#xff0c;与传统屏幕技术差异显著。 参数LCD&#…...

HarmonyOS开发-组件市场

1. HarmonyOS开发-组件市场 HarmonyOS NEXT开源组件市场是一个独立的插件&#xff0c;需通过DevEco Studio进行安装&#xff0c;可以点击下载&#xff0c;无需解压&#xff0c;直接通过zip进行安装&#xff0c;具体安装和使用方法可参考HarmonyOsNEXT组件市场使用说明。Harmony…...

效果图云渲染:价格、优势与使用技巧

对于做3D设计来说&#xff0c;渲染效果图会占用设计电脑的资源&#xff0c;如果能免去这个环节就好了。用设计电脑渲不仅拖慢电脑速度&#xff0c;遇到紧急情况无法快速渲染出来还可能耽误进度。而云渲染的出现&#xff0c;正是针对这个点——渲的快&#xff0c;价格便宜&#…...

OptiStruct实例:声振耦合超单元应用

如图10-11所示&#xff0c;本例采用一个简化的整车模型&#xff0c;模型分为车身&#xff08;含声腔&#xff09;与底盘两部分。首先分别运用CMS与CDS方法对车身&#xff08;含声腔&#xff09;模型进行缩聚&#xff0c;生成.h3d格式的CMS超单元和cps超单元&#xff0c;然后进行…...

排序算法-插入排序

插入排序是一种简单直观的排序算法&#xff0c;其核心思想是将未排序部分的元素逐个插入到已排序部分的正确位置&#xff0c;类似于整理扑克牌。 插入排序步骤 初始化&#xff1a;将序列的第一个元素视为已排序部分&#xff0c;其余为未排序部分。 选择元素&#xff1a;从未排…...

Uniapp Android/IOS 获取手机通讯录

介绍 最近忙着开发支付宝小程序和app&#xff0c;下面给大家介绍一下 app 获取通讯录的全部过程吧&#xff0c;也是这也是我app开发中的一项需求吧。 效果图如下 勾选配置文件 使用uniapp开发的童鞋都知道有一个配置文件 manifest.json 简单的说一下&#xff0c;就是安卓/ios/…...

【RAG】index环节中 关于嵌入模型和 ColBERT

1. 什么是嵌入模型&#xff1f;是不是把数据源转换为向量表示的模型&#xff1f; 是的&#xff0c;嵌入模型&#xff08;Embedding Model&#xff09;的核心功能就是将各种类型的数据&#xff08;例如&#xff0c;文本、图像、音频等&#xff09;转换成低维、稠密的向量表示。…...

一文掌握 LVGL 9 的源码目录结构

文章目录 &#x1f4c2; 一文掌握 LVGL 9 的源码目录结构&#x1f9ed; 顶层目录概览&#x1f4c1; 1. src/ — LVGL 的核心源码&#xff08;&#x1f525;重点&#xff09;&#x1f4c1; 2. examples/ — API 示例&#x1f4c1; 3. demos/ — 综合演示项目&#x1f4c1; 4. do…...

ROS1 和 ROS2 在同一个系统中使用

一、环境变量设置 echo "ros noetic(1) or ros2 foxy(2)?" read edition if [ "$edition" -eq "1" ]; thensource /opt/ros/noetic/setup.bash elsesource /opt/ros/foxy/setup.bash fi 二、针对不同的ROS版本创建不同的工作空间work space...

Redis 8.0携新功能,重新开源

01 引言 Redis从7.4版本起&#xff0c;将开源许可证改成 RSALv2&#xff08;Redis 源代码可用许可证&#xff09;与 SSPLv1&#xff08;服务器端公共许可证&#xff09;的双重授权策略。简单来说&#xff0c;就是不能随意商用。为了抵制Redis&#xff0c;Redis的替代品Valkey、…...

AD原理图复制较多元器件时报错:“InvalidParameter Exception Occurred In Copy”

一、问题描述 AD原理图复制较多元器件时报错&#xff1a;AD原理图复制较多元器件时报错&#xff1a;“InvalidParameter Exception Occurred In Copy”。如下图 二、问题分析 破解BUG。 三、解决方案 1、打开参数配置 2、打开原理图优先项中的通用配置&#xff0c;取消勾选G…...

【wpf】12 在WPF中实现HTTP通信:封装HttpClient的最佳实践

一、背景介绍 在现代桌面应用开发中&#xff0c;网络通信是不可或缺的能力。WPF作为.NET平台下的桌面开发框架&#xff0c;可通过HttpClient轻松实现与后端API的交互。本文将以一个实际的HttpsMessages工具类为例&#xff0c;讲解如何在WPF中安全高效地封装HTTP通信模块。 二、…...

从概念表达到安全验证:智能驾驶功能迎来系统性规范

随着辅助驾驶事故频发&#xff0c;监管机制正在迅速补位。面对能力表达、使用责任、功能部署等方面的新要求&#xff0c;行业开始重估技术边界与验证能力&#xff0c;数字样机正成为企业合规落地的重要抓手。 2025年以来&#xff0c;围绕智能驾驶功能的争议不断升级。多起因辅…...

金贝灯光儿童摄影3大布光方案,解锁专业级童趣写真

随着亲子消费的持续升温&#xff0c;儿童摄影行业对高效、专业、灵活的专业灯光需求日益迫切。为精准解决儿童拍摄中孩子好动难配合、氛围单调、出片效率低下等痛点&#xff0c;深耕影像光源行业三十年&#xff0c;拥有丰富的商业人像摄影灯光解决方案的金贝品牌&#xff0c;近…...

双端口ram与真双端口ram的区别

端口独立性 真双端口RAM&#xff1a;拥有两个完全独立的读写端口&#xff08;Port A和Port B&#xff09;&#xff0c;每个端口都有自己的地址总线、数据总线、时钟、使能信号和写使能信号。这意味着两个端口可以同时进行读写操作&#xff0c;且互不干扰。 伪双端口RAM&…...

Java设计模式之单例模式:从入门到精通

一、单例模式概述 1.1 什么是单例模式 定义:单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。 专业解释:单例模式通过限制类的实例化过程,保证在整个应用程序生命周期中,某个类最多只有一个实例存在,…...

sqli-labs靶场18-22关(http头)

目录 less18&#xff08;user-agent&#xff09; less19&#xff08;referer&#xff09; less20&#xff08;cookie&#xff09; less21&#xff08;cookie&#xff09; less22&#xff08;cookie&#xff09; less18&#xff08;user-agent&#xff09; 这里尝试了多次…...

【图像大模型】Stable Diffusion Web UI:深度解析与实战指南

Stable Diffusion Web UI&#xff1a;深度解析与实战指南 一、项目概述核心功能 二、项目运行方式与执行步骤1. 环境准备2. 安装步骤在Windows上安装在Linux上安装 3. 使用Web UI 三、执行报错及问题解决方法1. Python版本不兼容2. CUDA未正确安装3. 依赖库安装失败4. 内存不足…...

Linux 学习笔记1

Linux 学习笔记1 一、用户和用户组管理用户组操作用户操作 二、文件权限管理权限查看权限修改归属权修改 三、系统快捷操作四、软件管理包管理工具服务管理 五、文件系统操作软链接 六、时间管理七、网络管理基础命令端口与进程进程管理 八、环境变量基础操作 九、其他重要概念…...

单例模式的两种设计

单例模式确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 1. 饿汉模式 (Eager Initialization) 饿汉模式在程序启动时就创建实例&#xff0c;线程安全。 cpp class EagerSingleton { public:// 删除拷贝构造函数和赋值运算符EagerSingleton(const EagerSingleton…...

【HarmonyOS NEXT+AI】问答05:ArkTS和仓颉编程语言怎么选?

在“HarmonyOS NEXTAI大模型打造智能助手APP(仓颉版)”课程里面&#xff0c;有学员提到了这样一个问题&#xff1a; 鸿蒙的主推开发语言不是ArkTS吗&#xff0c;本课程为什么使用的是仓颉编程语言&#xff1f; 这里就这位同学的问题&#xff0c;统一做下回复&#xff0c;以方便…...

20250509 相对论中的\*\*“无空间”并非真实意义上的虚无,而是时空结构尚未形成\*\*的状态。 仔细解释下这个

相对论中的**“无空间”并非真实意义上的虚无&#xff0c;而是时空结构尚未形成**的状态。 仔细解释下这个 相对论中的“无空间”这一概念&#xff0c;严格来说并非绝对的虚无&#xff0c;而是指在物理学上时空结构尚未形成或无法定义的状态。这种状态通常出现在宇宙起源和黑洞…...

T-SQL在SQL Server中判断表、字段、索引、视图、触发器、Synonym等是否存在

SQL Server创建或者删除表、字段、索引、视图、触发器前判断是否存在。 目录 1. SQL Server创建表之前判断表是否存在 2. SQL Server新增字段之前判断是否存在 3. SQL Server删除字段之前判断是否存在 4. SQL Server新增索引之前判断是否存在 5. SQL Server判断视图是否存…...

C——数组和函数实践:扫雷

此篇博客介绍用C语言写一个扫雷小游戏&#xff0c;所需要用到的知识有&#xff1a;函数、数组、选择结构、循环结构语句等。 所使用的编译器为:VS2022。 一、扫雷游戏是什么样的&#xff0c;如何玩扫雷游戏&#xff1f; 如图&#xff0c;是一个标准的扫雷游戏初始阶段。由此…...

Java中的分布式缓存与Memcached集成实战

一、概述 分布式缓存是提升系统性能和扩展性的关键技术之一。Memcached作为一种高性能的分布式内存对象缓存系统&#xff0c;在许多场景下被广泛使用。本文将深入探讨如何在Java项目中集成Memcached&#xff0c;实现高效的分布式缓存。 二、Memcached简介 Memcached是一种高…...

OpenCV播放摄像头视频

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 播放摄像头视频和播放视频文件类似&#xff0c;也是通过类VideoCapture来实现&#xff0c;只不过调用open的时候传入的是摄像头的索引号。如果计算机安装了一个摄像头&#xff0c;则open的第一个参数通常是0&…...

[计算机科学#13]:算法

【核知坊】&#xff1a;释放青春想象&#xff0c;码动全新视野。 我们希望使用精简的信息传达知识的骨架&#xff0c;启发创造者开启创造之路&#xff01;&#xff01;&#xff01; 内容摘要&#xff1a; 算法是解决问题的系统化步骤&#xff0c;不同的问题…...

git相关

1.将 dev 变基到 origin/master git rebase 是一个本地操作&#xff0c;它只会修改你当前所在分支的提交历史&#xff0c;而不会直接影响远程仓库或任何其他分支。 保持提交历史的线性和整洁&#xff1a; 这是 git rebase 最主要的目的。 想象一下 dev 分支是从 master 分支分…...

Web端项目系统访问页面很慢,后台数据返回很快,网络也没问题,是什么导致的呢?

Web端访问缓慢问题诊断指南(测试工程师专项版) ——从浏览器渲染到网络层的全链路排查方案 一、问题定位黄金法则(前端性能四象限) 1. [网络层] 数据返回快 ≠ 资源加载快(检查Content Download时间) 2. [渲染层] DOM复杂度与浏览器重绘(查看FPS指标) 3. [执行层…...

计算机系统结构-第九章-互联网络 第十章

目录 恒等函数&#xff1a;I&#xff08;没变&#xff09; 交换函数&#xff1a;某一位取反 如下 角标为0&#xff0c;第0位取反 均匀洗牌函数、混洗函数Shuffle &#xff1a;σ 左移一位 &#xff08;左移右边补0&#xff0c;右移左边补0&#xff09; 蝶式互连函数but…...

H5 移动端适配最佳实践落地指南。

文章目录 前言一、为什么需要移动端适配&#xff1f;二、核心适配方案1. 视口&#xff08;Viewport&#xff09;设置2. 三种适配方案 &#xff08;仅供参考&#xff09;&#xff08;1&#xff09;rem 适配方案&#xff08;2&#xff09;vw/vh 适配方案&#xff08;3&#xff09…...

从电动化到智能化,法雷奥“猛攻”中国汽车市场

当前&#xff0c;全球汽车产业正在经历前所未有的变革&#xff0c;外资Tier1巨头开始向中国智能电动汽车市场发起新一轮“猛攻”。 在4月23日-5月2日上海国际车展期间&#xff0c;博世、采埃孚、大陆集团、法雷奥等全球百强零部件厂商纷纷发布战略新品与转型计划。在这其中&am…...

智能网联汽车 “中央计算” 博弈:RTOS 与跨域融合的算力分配挑战

一、引言 随着智能驾驶技术的飞速发展&#xff0c;汽车逐渐从传统的交通工具演变为移动的智能终端。智能网联汽车的核心竞争力日益体现在其强大的计算能力和高效的算力管理上。汽车电子电气架构&#xff08;EEA&#xff09;正经历从分布式架构向 “中央计算 区域控制” 架构的…...

springboot 加载 tomcat 源码追踪

加载 TomcatServletWebServerFactory 从 SpringApplication.run(&#xff09;方法进入 进入到 refresh () 方法 选择实现类 ServletWebServerApplicationContext 进入到 AbstractApplicationContext onRefresh() 方法创建容器 找到加载bean 得到 webServer 实例 点击 get…...

AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月9日第72弹

从今天开始&#xff0c;咱们还是暂时基于旧的模型进行预测&#xff0c;好了&#xff0c;废话不多说&#xff0c;按照老办法&#xff0c;重点8-9码定位&#xff0c;配合三胆下1或下2&#xff0c;杀1-2个和尾&#xff0c;再杀6-8个和值&#xff0c;可以做到100-300注左右。 (1)定…...

企业高性能WEB服务器—Nginx

Nginx介绍 Nginx是一款轻量级的网页服务器、反向代理服务器以及电子邮件代理服务器。 具有高并发&#xff08;特别是静态资源&#xff09;、占用系统资源少的特性。它不仅是Web服务软件&#xff0c;还具有反向代理负载均衡功能和缓存服务功能 具备如下基本特性 可针对静态资…...

neo4j图数据库基本概念和向量使用

一.节点 1.新建节点 create (n:GroupProduct {name:都邦高保额团意险,description: "保险产品名称"} ) return n CREATE&#xff1a;Neo4j 的关键字&#xff0c;用于创建新节点或关系。 (n:GroupProduct)&#xff1a; n 是节点的临时别名&#xff08;变量名&#…...

安全核查基线-3.用户umask设置策略

在Linux中&#xff0c;umask&#xff08;用户文件创建掩码&#xff09;是一个重要的权限管理机制&#xff0c;用于控制新创建的文件和目录的默认权限。umask的值决定了文件或目录的初始权限中哪些权限位会被屏蔽&#xff08;即不可用&#xff09;。 1. umask 的作用 文件默认权…...

UE像素流是什么

UE像素流是什么 UE像素流送是一种云渲染技术&#xff0c;由虚幻引擎&#xff08;UE&#xff09;提出&#xff0c;用于在浏览器中运行高画质3D应用或游戏。其原理是在远程计算机&#xff08;可以是云端服务器或本地高性能服务器&#xff09;上运行UE开发的应用程序&#xff0c;…...

【C】初阶数据结构14 -- 归并排序

本篇文章主要是讲解经典的排序算法 -- 归并排序 目录 1 递归版本的归并排序 1&#xff09; 算法思想 2&#xff09; 代码 3&#xff09; 时间复杂度与空间复杂度分析 &#xff08;1&#xff09; 时间复杂度 &#xff08;2&#xff09; 空间复杂度 2 迭代版本的归并…...

02_线性模型(回归线性模型)

描述 线性模型是在实践中广泛使用的一类模型&#xff0c;线性模型利用输入特征的线性函数&#xff08;linear function&#xff09;进行预测。 用于回归的线性模型 对于回归问题&#xff0c;线性模型预测的一般公式如下&#xff1a; $ \widehat y w[0]*x[0]w[1]*x[1]…w[p…...

当当网Top500书籍信息爬取与分析

爬取当当网的Top500书籍信息&#xff0c;并对书籍的评价数量进行排序&#xff0c;然后绘制前十名的条形图&#xff0c;然后对各个出版社出版的书籍数量进行排序&#xff0c;绘制百分比的饼图 # 导入所需的模块 import re # 正则表达式模块&#xff0c;用于提取文本中的特定模…...

Spring生态全景解析:Spring、Spring MVC、SpringBoot与Spring Cloud的关系

Spring生态全景解析&#xff1a;Spring、Spring MVC、SpringBoot与Spring Cloud的关系 1. Spring框架简介 Spring框架是一个轻量级的Java开发框架&#xff0c;由Rod Johnson于2003年创建。它主要解决了企业级Java开发中的复杂性&#xff0c;通过依赖注入(DI)和面向切面编程(A…...

STM32-TIM定时中断(6)

目录 一、TIM介绍 1、TIM简介 2、定时器类型 3、基本定时器 4、通用定时器 5、定时中断基本结构 6、时基单元的时序 &#xff08;1&#xff09;预分频器时序 &#xff08;2&#xff09;计数器时序 7、RCC时钟树 二、定时器输出比较功能&#xff08;PWM&#xff09; …...

Godot4.3类星露谷游戏开发之【昼夜循环】

千里之行&#xff0c;始于足下 文章目录 零、 笔记一、创造时间二、产生颜色三、搭建测试环境四、测试五、免费开源资产包 零、 笔记 为了让游戏可以拥有白天和黑夜&#xff0c;我们需要像上帝一样&#xff0c;在游戏中创造时间的规则&#xff0c;并在不同的时间点产生不同的颜…...

工业与协议融合篇:如何将多个协议集成进一个系统?

🏭 本文为《嵌入式通信协议全解析》第六篇,深入探讨如何在工业或物联网系统中同时集成 BLE、CAN、LoRa、MQTT、RS485 等多种通信协议,实现一个高效、可控、稳定运行的嵌入式通信架构。 🧭 一、为什么需要多协议融合? 在真实产品中,单一通信协议往往无法满足所有业务需…...