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

常见排序算法深度评测:从原理到10万级数据实战

常见排序算法深度评测:从原理到10万级数据实战

摘要
本文系统解析冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序和基数排序8种经典算法,通过C语言实现10万随机数排序并统计耗时。测试显示:快速排序综合性能最优(0.12秒),冒泡排序最慢(32.7秒)。算法效率差异显著,时间复杂度从 O ( n 2 ) O(n^2) O(n2) O ( n log ⁡ n ) O(n\log n) O(nlogn)不等。文中提供完整代码实现、时间复杂度对比表及场景选择建议,为工程实践提供直接参考。


在这里插入图片描述


一、算法原理与实现

1. 冒泡排序

原理:通过相邻元素比较交换,使最大元素逐渐"浮"到数组末端
时间复杂度 O ( n 2 ) O(n^2) O(n2)

#include <stdio.h>
#include <stdlib.h>
void bubbleSort(int arr[], int n) {for (int i = 0; i < n-1; i++)for (int j = 0; j < n-i-1; j++)if (arr[j] > arr[j+1])swap(&arr[j], &arr[j+1]);
}

实测耗时:32.7秒
小结:实现简单但效率最低,仅适合教学演示


2. 选择排序

原理:每次选择最小元素放到已排序序列末尾
时间复杂度 O ( n 2 ) O(n^2) O(n2)

#include <stdio.h>
#include <stdlib.h>
void selectionSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {int min_idx = i;for (int j = i+1; j < n; j++)if (arr[j] < arr[min_idx])min_idx = j;swap(&arr[min_idx], &arr[i]);}
}

实测耗时:14.2秒
小结:比冒泡稍快但仍不适合大数据量


3. 插入排序

原理:将未排序元素插入已排序序列的合适位置
时间复杂度 O ( n 2 ) O(n^2) O(n2)

#include <stdio.h>
#include <stdlib.h>
void insertionSort(int arr[], int n) {for (int i = 1; i < n; i++) {int key = arr[i], j = i-1;while (j >= 0 && arr[j] > key) {arr[j+1] = arr[j];j--;}arr[j+1] = key;}
}

实测耗时:8.9秒
小结:在小规模或基本有序数据中表现良好


4. 希尔排序

原理:改进的插入排序,通过增量分组进行排序
时间复杂度 O ( n 1.3 ) O(n^{1.3}) O(n1.3) ~ O ( n 2 ) O(n^2) O(n2)

#include <stdio.h>
#include <stdlib.h>
void shellSort(int arr[], int n) {for (int gap = n/2; gap > 0; gap /= 2)for (int i = gap; i < n; i++)for (int j = i; j >= gap && arr[j] < arr[j-gap]; j -= gap)swap(&arr[j], &arr[j-gap]);
}

实测耗时:1.7秒
小结:突破 O ( n 2 ) O(n^2) O(n2)瓶颈,中等数据量优选


5. 归并排序

原理:分治法典范,先分解后合并
时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)
实现要点

  • 动态分配内存用于临时数组(malloc/free
  • 递归分割数组时需传递子数组长度
  • 合并操作直接修改原数组(通过指针传递)
#include <stdio.h>
#include <stdlib.h>// 合并两个有序数组的核心函数
void merge(int arr[], int left[], int right[], int left_len, int right_len) {int i = 0, j = 0, k = 0;// 合并过程while (i < left_len && j < right_len) {if (left[i] <= right[j]) {  // 稳定性关键:等于时取左元素arr[k++] = left[i++];} else {arr[k++] = right[j++];}}// 处理剩余元素while (i < left_len) arr[k++] = left[i++];while (j < right_len) arr[k++] = right[j++];
}// 递归排序函数
void merge_sort(int arr[], int n) {if (n <= 1) return;int mid = n / 2;int *left = (int*)malloc(mid * sizeof(int));int *right = (int*)malloc((n - mid) * sizeof(int));// 分割数组for (int i = 0; i < mid; i++) left[i] = arr[i];for (int i = mid; i < n; i++) right[i - mid] = arr[i];// 递归排序merge_sort(left, mid);merge_sort(right, n - mid);// 合并结果merge(arr, left, right, mid, n - mid);// 释放临时内存free(left);free(right);
}

实测耗时:0.35秒
小结:稳定可靠的外排序首选


6. 快速排序

原理:通过基准值分区实现分治排序
时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)

#include <stdio.h>
#include <stdlib.h>
int partition(int arr[], int low, int high) {int pivot = arr[high];int i = low - 1;for (int j = low; j <= high-1; j++)if (arr[j] < pivot)swap(&arr[++i], &arr[j]);swap(&arr[i+1], &arr[high]);return i+1;
}
void quickSort(int arr[], int low, int high) {if (low < high) {int pi = partition(arr, low, high);quickSort(arr, low, pi-1);quickSort(arr, pi+1, high);}
}

实测耗时:0.12秒
小结:综合性能最优的通用排序算法


7. 堆排序

原理:利用堆数据结构进行选择排序
时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)

#include <stdio.h>
#include <stdlib.h>
void heapify(int arr[], int n, int i) {int largest = i, l = 2*i+1, r = 2*i+2;if (l < n && arr[l] > arr[largest]) largest = l;if (r < n && arr[r] > arr[largest]) largest = r;if (largest != i) {swap(&arr[i], &arr[largest]);heapify(arr, n, largest);}
}
void heapSort(int arr[], int n) {for (int i = n/2-1; i >= 0; i--)heapify(arr, n, i);for (int i = n-1; i > 0; i--) {swap(&arr[0], &arr[i]);heapify(arr, i, 0);}
}

实测耗时:0.28秒
小结:适合需要稳定 O ( n log ⁡ n ) O(n\log n) O(nlogn)的场景


8. 基数排序

原理:按位数进行桶排序
时间复杂度 O ( k n ) O(kn) O(kn)
实现要点

  • 使用exp参数表示当前处理的位数(1, 10, 100…)
  • 计数排序的稳定性通过反向填充实现
  • 需手动计算最大值的位数控制循环次数
#include <stdio.h>
#include <stdlib.h>// 按指定位数进行计数排序
void counting_sort(int arr[], int n, int exp) {int output[n];int count[10] = {0};  // 十进制基数// 统计当前位出现次数for (int i = 0; i < n; i++) {int digit = (arr[i] / exp) % 10;count[digit]++;}// 计算累积频次for (int i = 1; i < 10; i++) {count[i] += count[i - 1];}// 反向填充保证稳定性for (int i = n - 1; i >= 0; i--) {int digit = (arr[i] / exp) % 10;output[count[digit] - 1] = arr[i];count[digit]--;}// 复制回原数组for (int i = 0; i < n; i++) {arr[i] = output[i];}
}// 基数排序主函数
void radix_sort(int arr[], int n) {int max_num = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max_num) max_num = arr[i];}// 按每一位进行排序for (int exp = 1; max_num / exp > 0; exp *= 10) {counting_sort(arr, n, exp);}
}

实测耗时:0.18秒
小结:整数排序利器,但需要额外内存


二、测试公共代码

  1. 代码实现
    测试采用100000个随机数进行。所有排序算法函数名不同,可以采用函数指针数组方式,通过循环实现。
// 公共代码段
#define N 100000
int* generateArray() {int* arr = (int*)malloc(N * sizeof(int));srand(time(NULL));for(int i=0; i<N; i++) arr[i] = rand() % 1000000;return arr;
}void timeTest(void (*sort)(int*, int), int* arr) {clock_t start = clock();sort(arr, N); //用对应算法实现代函数替代,所有排序算法函数名不同,可以采用函数指针数组方式,通过循环实现printf("Time: %.2fms\n", (double)(clock()-start)*1000/CLOCKS_PER_SEC);
}
  1. 关键注意事项
  • 每次测试前必须复制原始数组,避免数据已排序影响测试结果
  • 基数排序默认处理非负整数,如需支持负数需修改位处理逻辑
  • 快速排序使用三数取中法优化,避免最坏情况出现
  • 归并排序采用迭代实现,避免递归导致的栈溢出问题

二、综合对比分析

算法时间复杂度空间复杂度稳定性适用场景10万数据耗时
冒泡排序 O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)稳定教学演示32.7s
选择排序 O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)不稳定简单实现14.2s
插入排序 O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)稳定小规模/基本有序数据8.9s
希尔排序 O ( n 1.3 ) O(n^{1.3}) O(n1.3) O ( 1 ) O(1) O(1)不稳定中等规模数据1.7s
归并排序 O ( n log ⁡ n ) O(n\log n) O(nlogn) O ( n ) O(n) O(n)稳定外排序/链表排序0.35s
快速排序 O ( n log ⁡ n ) O(n\log n) O(nlogn) O ( log ⁡ n ) O(\log n) O(logn)不稳定通用排序0.12s
堆排序 O ( n log ⁡ n ) O(n\log n) O(nlogn) O ( 1 ) O(1) O(1)不稳定实时系统/内存受限0.28s
基数排序 O ( k n ) O(kn) O(kn) O ( n + k ) O(n+k) O(n+k)稳定整数排序/固定范围数据0.18s

工程建议

  1. 通用场景优先选择快速排序
  2. 内存敏感时选用堆排序
  3. 稳定排序需求使用归并排序
  4. 整数排序可尝试基数排序
  5. 小规模数据(n<1000)使用插入排序

实际应用时需结合数据特征进行算法选择,必要时可采用混合排序策略。

三、性能优化建议

  1. 混合排序策略:当快速排序子数组长度小于15时切换为插入排序
  2. 内存预分配:归并排序的临时数组可提前分配避免重复申请
  3. 基数排序优化:使用位运算替代除法操作提升计算效率
  4. 并行化改造:归并排序和快速排序适合多线程优化

相关文章:

常见排序算法深度评测:从原理到10万级数据实战

常见排序算法深度评测&#xff1a;从原理到10万级数据实战 摘要 本文系统解析冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序和基数排序8种经典算法&#xff0c;通过C语言实现10万随机数排序并统计耗时。测试显示&#xff1a;快速排序综合性能最优&…...

搭建BOA服务器

BOA服务器是嵌入式常用的服务器类型&#xff0c;嵌入式程序作为后端时候如果想配合网页进行显示&#xff0c;利用BOA服务器搭建网络界面是不错的选择 首先下载boa官方安装包 Boa Webserver 下载后传输到Ubuntu随便文件夹&#xff0c;解压 tar -xvf boa-0.94.13.tar.gz 进入…...

JSON.parse(JSON.stringify())深拷贝不会复制函数

深拷贝 是指创建一个新对象&#xff0c;并递归地复制原对象中所有层级的属性和值&#xff0c;从而确保新对象与原对象完全独立 深拷贝的实现方法 &#xff1a; 1. 使用 JSON.parse(JSON.stringify()) 函数会被忽略复制&#xff0c;比如&#xff0c;下面的对象的forma…...

debug_unpack_ios failed: Exception: Failed to codesign 解决方案(亲测有效)

debug_unpack_ios failed: Exception: Failed to codesign 解决方案&#xff08;亲测有效&#xff09; 背景原因解决方案tipsresult 背景 执行flutter doctor全通过后run项目依然报错 原因 1、检查flutter Mac的flutter项目在哪个文件夹内 2、检查flutter Sdk在哪个文件夹内 …...

Docker篇

1.docker环境搭建&#xff1a; 1.1软件仓库的配置rhel9&#xff1a; #cd/etc/yum.repos.d #vim docker.repo [docker] namedocker-ce baseurlhttps://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable gpgcheck0 1.2安装docker并且启动服务 yum install -y dock…...

【Linux】基本命令

目录 &#x1f525;一、基础命令 1.sudo su&#xff08;superuser do&#xff09; 2.pwd&#xff08;print working directory&#xff09; 3.ls&#xff08;list&#xff09; 4.cd&#xff08;change directory&#xff09; 5.mkdir&#xff08;make directory&#xff…...

win10电脑鼠标速度突然变的很慢?

电脑鼠标突然变很慢&#xff0c;杀毒检测后没问题&#xff0c;鼠标设置也没变&#xff0c;最后发现可能是误触鼠标的“DPI”调节键。 DPI调节键在鼠标滚轮下方&#xff0c;再次点击即可恢复正常鼠标速度。 如果有和-的按键&#xff0c;速度变快&#xff0c;-速度变慢。 图源&…...

前端(vue)学习笔记(CLASS 3):生命周期工程化开发入门

1、生命周期 Vue生命周期&#xff1a;一个Vue实例从创建到销毁的整个过程 生命周期四个阶段&#xff1a;创建、挂载、更新、销毁 1、创建阶段&#xff1a;响应式数据 2、挂载阶段&#xff1a;渲染模板 3、更新阶段&#xff1a;数据修改、更新视图&#xff08;执行多次&…...

Python写一个查星座的小程序,适合初学者练手——字典和if语句练习

一、界面预览 二、完整代码 # 导入必要的库 import tkinter as tk from tkinter import ttk # 导入ttk模块用于更现代的控件 from PIL import Image, ImageTk # 用于处理图片 import os # 用于文件路径操作class ZodiacApp:def __init__(self, root):self.root rootself.r…...

云上特权凭证攻防启示录:从根账号AK泄露到安全体系升级的深度实践

事件全景:一场持续17分钟的云上攻防战 2025年3月9日15:39,阿里云ActionTrail日志突现异常波纹——根账号acs:ram::123456789:root(已脱敏)从立陶宛IP(164.92.91.227)发起高危操作。攻击者利用泄露的AccessKey(AK)在17分钟内完成侦察→提权→持久化攻击链,完整操作序列…...

blazemeter工具使用--用于自动生成jmeter脚本并进行性能测试

1、安装blazemeter&#xff08;网上有很多详情的教程&#xff09; 2、开始录制&#xff1a;设置号你的文件名称后开始录制 3、录制完成后保存为jmeter(jmx)文件 4、在jmeter中打开文件 5、添加一个后置处理器&#xff1a;查看结果树&#xff0c;后运行看看能否成功&#xf…...

TypeScript系列07-类型声明文件

在现代前端开发中&#xff0c;TypeScript已成为提升代码质量和开发体验的利器。对于React和React Native项目&#xff0c;合理利用类型声明文件不仅能提供更好的智能提示和类型检查&#xff0c;还能显著减少运行时错误。本文将深入探讨类型声明文件的编写与使用。 1. 声明文件…...

【社交+陪玩服务】全场景陪玩系统源码 小程序+H5双端 社群互动+即时点单+搭建教程

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 找搭子系统源码&#xff0c;圈子源码、社交源码、陪玩源码&#xff0c;亲测 100% 可用&#xff0c;跟市场上卖 1w的那款一模一样&#xff0c;功能非常齐全&#xff0c;企业级别运营的…...

【Java并发】【synchronized】适合初学者体质入门的synchronized

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f4da;欢迎订阅专栏…...

经销商管理系统选型解析:8款产品详评

本文主要介绍了以下8款经销商管理系统&#xff1a;1.纷享销客&#xff1b; 2.用友T6经销商管理系统&#xff1b; 3.金蝶经销商管理系统&#xff1b; 4.鼎捷经销商管理系统&#xff1b; 5.浪潮经销商管理系统&#xff1b; 6.销售易&#xff1b; 7.SAP Business One Distributor …...

基于STM32的逻辑分析仪

目录 制约性能因素协议命令下位机回复CMD_ID的回复CMD_METADATA命令的回复上报的采样数 设置使用开源软件PulseView设置操作1&#xff0e;设置采样数2&#xff0e;设置采样频率3.使能或禁止通道4.设置通道的触发条件 实现准备汇编指令精确测量时间 程序C语言初实现采集数据上报…...

mapbox高阶,结合threejs(threebox)添加管道

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️threebox Tube静态对象二、🍀使用thr…...

使用PySpark进行大数据处理与机器学习实战指南

1. 技术介绍 1.1 PySpark概述 PySpark是Apache Spark的Python API&#xff0c;它结合了Python的易用性和Spark的分布式计算能力&#xff0c;能够高效处理PB级数据集。Spark基于内存计算的特性使其比传统Hadoop MapReduce快10-100倍&#xff0c;支持流处理、SQL查询、机器学习…...

注意力机制-学习

1. 自注意力机制 句子&#xff1a;"The animal didnt cross the street because it was too tired." 在这个句子中&#xff0c;“it”指的是“animal”. 在自注意力机制中&#xff0c;当我们处理到“it”这个词时&#xff0c;模型会计算“it”与句子中其他所有词的…...

华纳云:香港服务器出现带宽堵塞一般是什么原因?

香港服务器带宽堵塞的原因通常可以归结为以下几个方面&#xff1a; 1. 机房带宽资源有限 (1)香港本地国际带宽成本高 香港的国际出口带宽昂贵&#xff0c;机房通常提供的带宽较小(如默认1Mbps-5Mbps)&#xff0c;如果多个用户争抢有限的带宽&#xff0c;就会出现网络拥堵、丢包…...

我们在开发时,什么时候用到虚函数和纯虚函数?

在曾经学习面向对象的概念上&#xff0c;对虚函数和纯虚函数的区别&#xff0c;我们都会止于这样的理解层面&#xff1a;虚函数是用于被子类可继承可重写的函数&#xff0c;而纯虚函数是子类继承后就必须重写的函数。但是在开发工作上&#xff0c;却有很多开发者是没法彻底参透…...

Python:lambda结合if判断,内置函数与拆包

lambda的应用&#xff1a; #a,b是形参&#xff0c;比较大小 complambda a,b:"a<b" if a<b else "a>b" print(comp(8,5)) 特点&#xff1a;lambda只能实现简单的逻辑&#xff0c;如果逻辑复杂且代码量较大&#xff0c;不建议使用lambda降低代码的…...

【Java学习】包装类

面向对象系列九 包装类变量 一、装箱 1.实例化包装对象 2.静态缓存池 3.写法 二、拆箱 包装类变量 每个基本数据类型都有对应的基本类型的包装类变量&#xff0c;将基本数据类型通过对应的包装类对象载入着进入到类与对象面向对象体系 一、装箱 Integer.valueOf(int) —…...

从新手到专家:嵌入式代码空间优化技巧

目录 一、基本概念 内存开销 优化目标 二、存储管理 数据类型选择 变量作用域 结构体对齐 三、代码结构 循环优化 函数调用 分支语句 查表法的动态扩展 查表法与算法结合 指针替代数组(续) 指针与动态内存结合 指针与函数指针结合 常量优化(续) 常量传播与…...

本地部署Navidrome个人云音乐平台随时随地畅听本地音乐文件

文章目录 前言1. 安装Docker2. 创建并启动Navidrome容器3. 公网远程访问本地Navidrome3.1 内网穿透工具安装3.2 创建远程连接公网地址3.3 使用固定公网地址远程访问 前言 今天我要给大家安利一个超酷的私有化音乐神器——Navidrome&#xff01;它不仅让你随时随地畅享本地音乐…...

AI自动化编程初探

先说vscodeclinemodelscope方案&#xff0c;后面体验trae或者cursor再写写其它的。vscode和trae方案目前来说是免费的&#xff0c;cursor要用claud需要付费&#xff0c;而且不便宜&#xff0c;当然效果可能是最好的。 vscode方案&#xff0c;我的经验是最好在ubuntu上&#xff…...

KUKA机器人:智能制造的先锋力量

在科技日新月异的今天&#xff0c;自动化和智能化已成为推动制造业转型升级的重要引擎。作为全球领先的智能、资源节约型自动化解决方案供应商&#xff0c;KUKA机器人在这一浪潮中扮演着举足轻重的角色。本文将带您深入了解KUKA机器人的发展现状&#xff0c;探索其在智能制造领…...

2021 年 9 月青少年软编等考 C 语言六级真题解析

目录 T1. 合法出栈序列思路分析T2. 奇怪的括号思路分析T3. 区间合并思路分析T4. 双端队列思路分析T1. 合法出栈序列 题目链接:SOJ D1110 给定一个由不同小写字母构成的长度不超过 8 8 8 的字符串 x x x,现在要将该字符串的字符依次压入栈中,然后再全部弹出。要求左边的字…...

java快速输入

带解析 package Month3; import java.util.*; import java.io.*; public class Demo100843 {static class Reader{BufferedReader bf new BufferedReader(new InputStreamReader(System.in));StringTokenizer st new StringTokenizer("");String next() throws IO…...

C/C++蓝桥杯算法真题打卡(Day3)

一、P8598 [蓝桥杯 2013 省 AB] 错误票据 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;int main() {int N;cin >> N; // 读取数据行数unordered_map<int, int> idCount; // 用于统计每个ID出现的次数vector<int> ids; …...

AntV_G6实现UI树

UI 树的实现 背景 目前需要实现一个 UI 树&#xff0c;用于展示设备树&#xff0c;以及设备树中设备的属性。与树状列表不同&#xff0c;UI 树需要有特定的交互方式&#xff0c;支持边以及当前节点的点击事件。 实现效果【复制到.html文件夹就看见了】 总体效果 点击节点效果…...

【0016】Python数据类型-不可变集合详解

如果你觉得我的文章写的不错&#xff0c;请关注我哟&#xff0c;请点赞、评论&#xff0c;收藏此文章&#xff0c;谢谢&#xff01; 本文内容体系结构如下&#xff1a; 在Python中&#xff0c;除了我们常见的可变集合&#xff08;Set&#xff09;外&#xff0c;还有一种不可…...

学习资料电子版 免费下载的网盘网站(非常全!)

我分享一个私人收藏的电子书免费下载的网盘网站&#xff08;学习资料为主&#xff09;&#xff1a; link3.cc/sbook123 所有资料都保存在网盘了&#xff0c;直接转存即可&#xff0c;非常的便利&#xff01; 包括了少儿&#xff0c;小学&#xff0c;初中&#xff0c;中职&am…...

ROS2学习笔记2

前言 本篇文章属于ROS2humble的学习笔记&#xff0c;来源于B站鱼香ROSup主。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 《ROS 2机器人开发从入门到实践》课程介绍_哔哩哔哩_bilibili …...

为什么大模型网站使用 SSE 而不是 WebSocket?

在大模型网站&#xff08;如 ChatGPT、Claude、Gemini 等&#xff09;中&#xff0c;前端通常使用 EventSource&#xff08;Server-Sent Events, SSE&#xff09; 来与后端对接&#xff0c;而不是 WebSocket。这是因为 SSE 更适合类似流式文本生成的场景。下面我们详细对比 SSE…...

利用阿里云Atlas地区选择器与Plotly.js实现数据可视化与交互

在数据科学与可视化领域&#xff0c;交互式图表和地图应用越来越成为数据分析和展示的重要手段。本文将介绍如何结合阿里云Atlas地区选择器与Plotly.js&#xff0c;创建动态交互式的数据可视化应用。 一、阿里云Atlas地区选择器简介 阿里云Atlas是阿里云的一款数据可视化产品…...

尚硅谷TS快速入门笔记(个人笔记用)

TypeScript 快速上手 &#x1faa9; 禹神&#xff1a;三小时快速上手TypeScript&#xff0c;TS速通教程_哔哩哔哩_bilibili ⼀、TypeScript 简介 TypeScript 由微软开发,是基于 JavaScript 的⼀个扩展语⾔。 TypeScript 包含了 JavaScript 的所有内容,即: TypeScript 是 Jav…...

python: DDD+ORM using oracle 21c

sql script: create table GEOVINDU.School --創建表 ( SchoolId char(5) NOT NULL, -- SchoolName nvarchar2(500) NOT NULL, SchoolTelNo varchar(8) NULL, PRIMARY KEY (SchoolId) --#主鍵 );create table GEOVINDU.Teacher ( TeacherId char(5) NOT NULL , TeacherFirstNa…...

KidneyTalk-open系统,RAG在医疗场景的真实落地:用于解决肾脏疾病的医疗问答问题

如何在保护隐私的前提下,本地部署大型语言模型(LLMs),以支持肾脏疾病的医学决策支持。难点包括:云端LLMs的数据泄露风险、本地部署的复杂性、通用LLMs在医学知识整合方面的不足、检索增强系统在医学文档处理和临床可用性方面的挣扎。Med-PaLM 2和MedFound在医学问答和临床…...

flask-定时任务

文章目录 前言一、APScheduler是什么二、APScheduler 主要功能&#xff1a;三、主要组成部分&#xff1a;四、典型使用场景&#xff1a;五、具体使用1.安装 APScheduler2.假设我们有一个需要五分钟请求一次http接口的任务1.定义一个scheduler.py去专门处理定时2.启动文件处理3.…...

6-langchang多模态输入和自定义输出

6-langchang多模态输入和自定义输出 多模态数据输入urlbase64url list工具调用自定义输出: JSON, XML, YAML如何解析 JSON 输出json如何解析xmlYAML解析器多模态数据输入 这里我们演示如何将多模态输入直接传递给模型。我们目前期望所有输入都以与OpenAI 期望的格式相同的格式…...

接口自动化入门 —— Http的请求头,请求体,响应码解析!

在接口自动化测试中&#xff0c;HTTP请求头、请求体和响应码是核心组成部分。理解它们的作用、格式和解析方法对于进行有效的接口测试至关重要。以下是详细解析&#xff1a; 1. HTTP 请求头&#xff08;Request Header&#xff09; 1.1 作用 请求头是客户端向服务器发送的附加…...

AI-NAS:当存储遇上智能,开启数据管理新纪元

在数据爆炸的时代&#xff0c;NAS&#xff08;网络附加存储&#xff09;已成为个人和企业存储海量数据的利器。然而&#xff0c;面对日益庞大的数据量&#xff0c;传统的NAS系统在文件管理和搜索效率上逐渐力不从心。AI-NAS应运而生&#xff0c;它将NAS与人工智能&#xff08;A…...

MWC 2025 | 移远通信推出AI智能无人零售解决方案,以“动态视觉+边缘计算”引领智能零售新潮流

在无人零售市场蓬勃发展的浪潮中&#xff0c;自动售货机正经历着从传统机械式操作向AI视觉技术的重大跨越。 移远通信作为全球领先的物联网整体解决方案供应商&#xff0c;精准把握行业趋势&#xff0c;在2025世界移动通信大会&#xff08;MWC&#xff09;上宣布推出全新AI智能…...

个人记录的一个插件,Unity-RuntimeMonitor

没有什么干货,仅仅是个人的记录 基于GUI做的一个工具:好处就是Monitor必须,Unity天然支持实时的Monitor;唯一不好处,就是默认字体太小了,layout居中,居右也是要自行设计的。 (下面文字是有一点点写错,但意思和功能就很牛逼了;并不是都按2 x shift,而是一个 shift 添…...

【C语言】考研复试上机代码题(基础篇)

文章目录 一、输入与输出1、温度转换2、排齐数据3、进制转换 二、选择分支结构1、分段函数求值2、成绩评定3、平闰年判定4、二次方程的根5、字符大小写 三、循环结构程序1、倒数求和4、判断数根5、打印菱形6、最大公约数7、最小公倍数8、复读机 四 、数组1、数组的批量增2、数组…...

video可以播放视屏但无法使用进度条点击快进/video的进度条失效无法点击

1、问题描述? 1、在SpringBoot+jQuery的$.get+HTML的video,进行动态加载视屏的时候,页面可以正常的播放视频,但是video自带的点击进度条快进视频功能失效。即如下进度条无法点击,只能顺序播放。 2、视频格式是mp4格式。 3、在主流的浏览器中都可以实现点击播放,但是进度…...

DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型

DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型 文章目录 DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型1. 通过Ollama下载模型1. 下载DeepSeekR1模型2. 下载嵌入模型 2. 查看本地的Ollama模型3. 模型提供商中添加模型1. 打开模型提供商2. 选择Ollama待添加模型3. 添加DeepSee…...

electron + vue3 + vite 渲染进程与渲染进程之间的消息端口通信

渲染进程与渲染进程之间的通信有两种&#xff1a; 通过主进程进行消息转发&#xff08;通过组合主进程与渲染进程之间的单向、双向通信可以实现&#xff0c;可以自己动手尝试&#xff0c;该篇不讲解&#xff09;通过消息端口进行直接通信 该篇主要用示例讲解下单项目内多个窗口…...

MySQL性能调优实战手册:从慢查询到执行计划全解析

一、调优流程四步走 &#x1f680; 当我们遇到数据库调优问题的时候&#xff0c;该如何思考呢? 这里把思考的流程整理成下面这张图。 整个流程划分成了观察&#xff08;Show status&#xff09;和 行动(Action&#xff09;两个部分。字母S的部分代表观察&#xff08;会使用相…...