Java排序算法百科全书:原理、实现与实战指南
一、排序算法全景视图
1. 算法分类体系
graph TDA[排序算法] --> B[比较排序]A --> C[非比较排序]B --> B1[基本排序]B1 --> B11[冒泡排序]B1 --> B12[选择排序]B1 --> B13[插入排序]B --> B2[高效排序]B2 --> B21[快速排序]B2 --> B22[归并排序]B2 --> B23[堆排序]B2 --> B24[希尔排序]B --> B3[混合排序]B3 --> B31[TimSort]B3 --> B32[内省排序]C --> C1[计数排序]C --> C2[桶排序]C --> C3[基数排序]
2. 核心指标对比表
算法 | 平均时间复杂度 | 最差时间复杂度 | 空间复杂度 | 稳定性 | 最佳适用场景 |
---|---|---|---|---|---|
冒泡排序 | O(n²) | O(n²) | O(1) | 稳定 | 教学演示/小数据集 |
快速排序 | O(n log n) | O(n²) | O(log n) | 不稳定 | 通用场景 |
归并排序 | O(n log n) | O(n log n) | O(n) | 稳定 | 大数据量/外部排序 |
堆排序 | O(n log n) | O(n log n) | O(1) | 不稳定 | 实时系统/内存敏感 |
希尔排序 | O(n log²n) | O(n²) | O(1) | 不稳定 | 中等规模数据 |
计数排序 | O(n + k) | O(n + k) | O(k) | 稳定 | 小范围整数 |
桶排序 | O(n + k) | O(n²) | O(n + k) | 稳定 | 均匀分布数据 |
基数排序 | O(nk) | O(nk) | O(n + k) | 稳定 | 多关键字排序 |
TimSort | O(n log n) | O(n log n) | O(n) | 稳定 | Java对象排序 |
二、基础比较排序实现
1. 冒泡排序(Bubble Sort)
算法特点:简单直观,适合教学演示
优化技巧:提前终止标志位+记录最后交换位置
public static void optimizedBubbleSort(int[] arr) {int n = arr.length;int lastSwap = n - 1;for (int i = 0; i < n-1; i++) {boolean isSorted = true;int currentSwap = 0;for (int j = 0; j < lastSwap; j++) {if (arr[j] > arr[j+1]) {swap(arr, j, j+1);isSorted = false;currentSwap = j;}}lastSwap = currentSwap;if (isSorted) break;}
}
2. 插入排序(Insertion Sort)
最佳场景:小数据集或基本有序数据
优化方案:二分查找插入位置
public static void insertionSort(int[] arr) {for (int i = 1; i < arr.length; i++) {int key = arr[i];int pos = binarySearch(arr, 0, i-1, key);System.arraycopy(arr, pos, arr, pos+1, i-pos);arr[pos] = key;}
}private static int binarySearch(int[] arr, int low, int high, int key) {while (low <= high) {int mid = (low + high) >>> 1;if (arr[mid] < key) low = mid + 1;else high = mid - 1;}return low;
}
三、高效分治排序实现
1. 快速排序(Quick Sort)
核心优化:三数取中+三路划分+小数组切换
public static void quickSort(int[] arr) {quickSort(arr, 0, arr.length-1);
}private static void quickSort(int[] arr, int low, int high) {if (high - low < 47) { // 小数组优化insertionSort(arr, low, high);return;}// 三数取中法选择基准int m = medianOfThree(arr, low, (low+high)>>>1, high);swap(arr, low, m);// 三路划分int lt = low, gt = high, i = low+1;int pivot = arr[low];while (i <= gt) {if (arr[i] < pivot) swap(arr, lt++, i++);else if (arr[i] > pivot) swap(arr, i, gt--);else i++;}quickSort(arr, low, lt-1);quickSort(arr, gt+1, high);
}
2. 归并排序(Merge Sort)
迭代优化版:避免递归开销+内存复用
public static void mergeSort(int[] arr) {int n = arr.length;int[] temp = new int[n];for (int size = 1; size < n; size *= 2) {for (int left = 0; left < n; left += 2*size) {int mid = Math.min(left+size-1, n-1);int right = Math.min(left+2*size-1, n-1);merge(arr, temp, left, mid, right);}}
}private static void merge(int[] arr, int[] temp, int left, int mid, int right) {System.arraycopy(arr, left, temp, left, right-left+1);int i = left, j = mid+1, k = left;while (i <= mid && j <= right) {arr[k++] = (temp[i] <= temp[j]) ? temp[i++] : temp[j++];}while (i <= mid) arr[k++] = temp[i++];
}
四、非比较排序实现
1. 计数排序(Counting Sort)
适用场景:数据范围小的整数排序
负数处理:偏移量调整
public static void countingSort(int[] arr) {int max = Arrays.stream(arr).max().getAsInt();int min = Arrays.stream(arr).min().getAsInt();int range = max - min + 1;int[] count = new int[range];int[] output = new int[arr.length];for (int num : arr) count[num - min]++;for (int i = 1; i < range; i++) count[i] += count[i-1];for (int i = arr.length-1; i >= 0; i--) {output[count[arr[i]-min]-1] = arr[i];count[arr[i]-min]--;}System.arraycopy(output, 0, arr, 0, arr.length);
}
2. 基数排序(Radix Sort)
LSD实现:支持负数处理
public static void radixSort(int[] arr) {int max = Arrays.stream(arr).max().getAsInt();int min = Arrays.stream(arr).min().getAsInt();max = Math.max(max, -min);for (int exp = 1; max/exp > 0; exp *= 10) {countingSortByDigit(arr, exp);}
}private static void countingSortByDigit(int[] arr, int exp) {int n = arr.length;int[] output = new int[n];int[] count = new int[19]; // -9到9for (int num : arr) {int digit = (num / exp) % 10 + 9;count[digit]++;}for (int i = 1; i < 19; i++) count[i] += count[i-1];for (int i = n-1; i >= 0; i--) {int digit = (arr[i]/exp) % 10 + 9;output[--count[digit]] = arr[i];}System.arraycopy(output, 0, arr, 0, n);
}
五、高级混合排序
1. TimSort
核心特性:Java对象排序默认算法
// Java内置实现原理
static <T> void timSort(T[] a, Comparator<? super T> c) {int n = a.length;int minRun = minRunLength(n);// 1. 分割Run并扩展for (int i=0; i<n; i+=minRun) {int end = Math.min(i+minRun, n);binaryInsertionSort(a, i, end, c);}// 2. 合并相邻Runfor (int size=minRun; size<n; size*=2) {for (int left=0; left<n; left+=2*size) {int mid = left + size;int right = Math.min(left+2*size, n);merge(a, left, mid, right, c);}}
}
2. 堆排序(Heap Sort)
迭代实现:避免递归深度限制
public static void heapSort(int[] arr) {int n = arr.length;// 建堆for (int i = n/2-1; i >= 0; i--)heapify(arr, n, i);// 排序for (int i = n-1; i > 0; i--) {swap(arr, 0, i);heapify(arr, i, 0);}
}private static void heapify(int[] arr, int n, int i) {int largest = i;while (true) {int left = 2*i + 1;int right = 2*i + 2;if (left < n && arr[left] > arr[largest]) largest = left;if (right < n && arr[right] > arr[largest])largest = right;if (largest == i) break;swap(arr, i, largest);i = largest;}
}
六、排序算法选择指南
决策树
需要稳定排序?
├── 是 → 数据范围小?
│ ├── 是 → 计数排序(整数) / 桶排序(浮点)
│ └── 否 → 归并排序 / TimSort
└── 否 → 内存敏感?├── 是 → 堆排序 / 原地快排└── 否 → 快速排序 / 内省排序
性能优化要点
-
数据特征分析:规模、分布、有序度
-
硬件特性利用:缓存优化、并行计算
-
混合策略:结合不同算法优势
-
预处理:检测有序子序列
七、实战应用场景
-
数据库索引:B+树的有序存储
-
实时计算:滑动窗口中位数计算
-
大数据处理:MapReduce排序阶段
-
图形渲染:深度缓冲排序优化
// 实时中位数计算示例
class MedianFinder {private PriorityQueue<Integer> minHeap = new PriorityQueue<>();private PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Comparator.reverseOrder());public void addNum(int num) {if (maxHeap.isEmpty() || num <= maxHeap.peek()) {maxHeap.offer(num);} else {minHeap.offer(num);}// 平衡堆if (maxHeap.size() > minHeap.size() + 1) {minHeap.offer(maxHeap.poll());} else if (minHeap.size() > maxHeap.size()) {maxHeap.offer(minHeap.poll());}}public double findMedian() {if (maxHeap.size() == minHeap.size()) {return (maxHeap.peek() + minHeap.peek()) / 2.0;} else {return maxHeap.peek();}}
}
总结与扩展方向
核心原则
-
没有绝对最优:根据场景选择合适算法
-
理解数据特征:是优化排序性能的关键
-
混合策略:往往能获得最佳实践效果
进阶方向
-
分布式排序:研究MapReduce的排序机制
-
GPU加速排序:利用并行计算特性
-
机器学习排序:神经网络预测最优顺序
通过系统掌握各类排序算法的原理与Java实现,开发者能够根据具体场景选择最优解决方案,并具备定制化优化排序性能的能力。排序算法作为计算机科学的基石,其思想方法将持续影响未来技术的发展方向。
相关文章:
Java排序算法百科全书:原理、实现与实战指南
一、排序算法全景视图 1. 算法分类体系 graph TDA[排序算法] --> B[比较排序]A --> C[非比较排序]B --> B1[基本排序]B1 --> B11[冒泡排序]B1 --> B12[选择排序]B1 --> B13[插入排序]B --> B2[高效排序]B2 --> B21[快速排序]B2 --> B22[归并排序]…...
大模型在教育领域的五大应用
大模型在教育领域的五大应用 随着人工智能技术的迅猛发展,特别是大模型(如GPT-3、BERT等)的出现,教育领域正迎来一场前所未有的变革。大模型不仅能够处理复杂的自然语言任务,还能够通过深度学习算法理解和生成高质量的…...
Lesson 12 Goodbye and good luck
Lesson 12 Goodbye and good luck 词汇 luck n. 运气,幸运 相关:lucky a. 幸运的 luckily ad. 幸运地 unlucky a. 不幸的 搭配:lucky number 幸运数字 lucky color 幸运色 lucky day 幸运日 lucky dog 幸运儿…...
数据结构-前缀树
一、引言 前缀树又叫字典树,可以快速查找字符串或字符串前缀出现的次数,方便进行前缀匹配、词频统计 二、字典树模型 现有一个字典树,里面有money、mother、salary、salary、say五个单词 其中根节点位置还没有字符,相当于空串&am…...
搭建 vue 项目环境详细步骤
在平常的开发工作中,我们经常需要对项目进行打包,后端项目打包及部署在前面总结过。那么,现在前端基本都是 vue 项目,那么应该如何搭建一个 vue 环境呢?下载一个前端项目应该如何启动呢?今天,我…...
【2025最新版】火鸟门户v8.5系统源码+PC、H5、小程序 +数据化大屏插件
一.介绍 火鸟地方门户系统V8.5源码 系统包含4端: PCH5小程序APP 二.搭建环境 系统环境:CentOS、 运行环境:宝塔 Linux 网站环境:Nginx 1.2.22 MySQL 5.6 PHP-7.4 常见插件:fileinfo ; redis 三.测…...
【eNSP实验】OSPF单区域配置
简介 OSPF(开放最短路径优先)是一种基于链路状态算法的内部网关协议(IGP),用于自治系统内部动态路由。其核心机制为:各路由器通过泛洪链路状态通告(LSA)同步网络拓扑,构…...
e实例性能测评:Intel Xeon Platinum处理器,经济型入门级服务器
阿里云服务器ECS经济型e系列是阿里云面向个人开发者、学生、小微企业,在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器,阿里云百科分享CPU处理器采用Intel Xeon Platinum架构处理器,支持1:1、1:2、1:4多种处理器内存配…...
uniapp APP端 DOM生成图片保存到相册
<template> <view class"container" style"padding-bottom: 30rpx;"> <view class"hdbg pr w100 " style"height: 150rpx;"> <top-bar content分享 Back"Back"></top-b…...
Leetcode刷题 由浅入深之哈希表——242. 有效的字母异位词
目录 (一)字母异位词的C实现 写法一(辅助数组) (二)复杂度分析 时间复杂度 空间复杂度 (三)总结 【题目链接】242.有效的字母异位词 - 力扣(LeetCode) …...
Opencv函数及练习题
一、函数整理: 1、cv2.adaptiveThreshold() 2、 cv2.split() 3、cv2.merge() 4、cv2.add() 5、cv2.bitwise_and() 6、 cv2.inRange(&…...
16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天
1 题目地址 349. 两个数组的交集 - 力扣(LeetCode)349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1:输入:nu…...
计算机视觉——JPEG AI 标准发布了图像压缩新突破与数字图像取证的挑战及应对策略
概述 今年2月,经过多年旨在利用机器学习技术开发一种更小、更易于传输和存储且不损失感知质量的图像编解码器的研究后,JPEG AI国际标准正式发布。 来自JPEG AI官方发布流,峰值信噪比(PSNR)与JPEG AI的机器学习增强方法…...
【JavaWeb后端开发01】Maven入门
课程内容: 初始Maven Maven概述 Maven模型 Maven仓库介绍 Maven安装与配置 IDEA集成Maven 依赖管理 单元测试 文章目录 1. 初始Maven1.1 介绍1.2 Maven的作用1.2.1 依赖管理1.2.2 项目构建1.2.3 统一项目结构 2. Maven概述2.1 Maven介绍2.2 Maven模型2.3 Ma…...
【Leetcode】16. 最接近的三数之和
一、题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums = [-1,2,1,-4], target = 1 输出:2解释: 与 target 最接近…...
目标检测概述
为什么基于卷积网络的目标检测模型在预测后要使用非极大值抑制 基于卷积网络的目标检测模型可能会在目标的相邻区域生成多个相互重叠框,每个框的预测结果都是同一个目标,引起同一目标的重复检测。造成这一现象的原因主要有两个, 基于卷积网络…...
摄影跟拍预定|基于java+vue的摄影跟拍预定管理系统(源码+数据库+文档)
摄影跟拍预定管理系统 目录 基于SprinBootvue的摄影跟拍预定管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3摄影师功能模块 4用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…...
--图--
并查集 并查集原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述…...
Python中的count()方法
文章目录 Python中的count()方法基本语法在不同数据类型中的使用1. 列表(List)中的count()2. 元组(Tuple)中的count()3. 字符串(String)中的count() 高级用法1. 指定搜索范围2. 统计复杂元素 注意事项 Python中的count()方法 前言:count()是Python中用于序列类型&a…...
通过gird布局实现div的响应式分布排列
目标:实现对于固定宽度的div盒子在页面中自适应排布,并且最后一行的div盒子可以与前面的盒子对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" con…...
Edge 浏览器推出 Copilot Vision:免费实时解析屏幕内容;Aqua Voice:极速 AI 语音输入工具丨日报
开发者朋友们大家好 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看…...
Linux 防火墙( iptables )
目录 一、 Linux 防火墙基础 1. 防火墙基础概念 (1)防火墙的概述与作用 (2)防火墙的结构与匹配流程 (3)防火墙的类别与各个防火墙的区别 2. iptables 的表、链结构 (1)规则表 …...
Hook插件
hook插件 1.概念 在JavaScript中,hook是一种能够拦截和修改函数或方法行为的技术。通过使用hook,开发者可以在现有的函数执行前、执行后或者替换函数的实现逻辑。hook目的是找到函数入口以及一些参数变化,便于分析js逻辑。 2.hook的作用&a…...
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
因客户机房断电,2台主机和共享存储全部断电,来电后,集群启动正常,实例无法正常启动,手动启动报错如下 SQL > startup; ORACLE instance started. Total System Global Area 3.9551E10 bytes Fixed Size …...
R4打卡——tensorflow实现火灾预测
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 1.检查GPU import tensorflow as tf import pandas as pd import numpy as npgpus tf.config.list_physical_devices("GPU") if gpus:…...
基于AI大语言模型的历史文献分析在气候与灾害重建领域中的技术应用
随着人工智能技术的快速发展,大语言模型(如GPT、BERT等)在自然语言处理领域取得了显著进展,特别是在非结构化文本数据的分析方面,极大地拓展了我们的研究视角。这些技术不仅提高了处理和理解文本数据的效率,…...
CSS 字体背景波浪
<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>字体背景波浪</title><style>/* HTML: <div class"loader"></div> *//* HTML: <div class"loader"…...
2025能源网络安全大赛CTF --- Crypto wp
文章目录 前言simpleSigninNumberTheory 前言 大半年以来写的第一篇文章!!! simpleSignin 题目: from Crypto.Util.number import * from gmpy2 import * import osflag bxxx p next_prime(bytes_to_long(os.urandom(128))…...
Redis面试——日志
一、RDB(Redis DataBase) RDB 全程是 Redis DataBase,它是一种将 Redis 在某一时刻内存中的数据以快照形式保存到磁盘的机制 ,相当于给执行save/bgsave命令时刻的内存数据库数据拍了一张快照我们如果通过save命令来执行快照&…...
计算机视觉与深度学习 | 基于YOLOv8与光流法的目标检测与跟踪(Python代码)
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 目标检测与跟踪 关键实现逻辑检测-跟踪协作机制特征点选择策略运动…...
nginx-基础知识
目录 相关协议: HTTP协议特点 HTTP协议的原理 HTTP协议的请求方式 HTTP协议的状态码 nginx的功能 nginx缓存 nginx异步非阻塞 nginxI/O多路复用 nginx常用模块以及其功能 相关协议: HTTP协议,超文本传输协议,占用端口80…...
class的访问器成员
class的访问器成员 本质是 class 的语法糖 等价于对象的defineProperty对象里面也能使用 class Product{constructor(count, price){this.count count;this.price price;}get total(){ // 相当于getterreturn this.count * this.price;}}const product new Product(10, 10…...
学习海康VisionMaster之矩形检测
这几天太忙了,好几天没有学习了,今天终于空下来了,继续学习之路吧。 一:进一步学习了 今天学习下VisionMaster中的矩形检测,这个一开始我以为是形态学方面的检测,实际操作下来其实还是边缘直线的衍生应用&…...
【已更新】2025华中杯C题数学建模网络挑战赛思路代码文章教学数学建模思路:就业状态分析与预测
完整内容请看文末最后的推广群 先展示问题一代码和结果、再给出四个问题详细的模型 按性别分析就业与失业状态: employment_status 失业 sex 0 182 1 163 按学历分析就业与失业状态: employment_status 失业 edu_level 0 10 1 172 2 163 按年龄区间分…...
CS144 Lab1实战记录:实现TCP重组器
文章目录 1 实验背景与要求1.1 TCP的数据分片与重组问题1.2 实验具体任务 2 重组器的设计架构2.1 整体架构2.2 数据结构设计 3 重组器处理的关键场景分析3.1 按序到达的子串(直接写入)3.2 乱序到达的子串(需要存储)3.3 与已处理区…...
Linux信号三部曲:产生机制、处理方式与内核接口
Linux系列 文章目录 Linux系列前言一、背景知识铺垫1.1 信号的基本概念1.2 进程对信号的处理 二、信号的产生2.1 前台进程和后台进程2.2 键盘组合键2.3 kill 命令2.4 系统调用2.4.1 signal()接口2.4.2 kill()接口2.4.3 raise()接口2.4.4 abort()接口 总结 前言 Linux中&#x…...
对抗生成进化:基于DNA算法的AIGC检测绕过——让AI创作真正“隐形“
一、技术背景与核心思想 2025年,AIGC检测工具(如Originality.AI 5.0)的识别准确率已达99.3%。本研究提出基于染色体编码的对抗进化框架(CAEF),通过模拟生物进化过程动态优化生成模型,成功将检测…...
探索大语言模型(LLM):马尔可夫链——从诗歌分析到人工智能的数学工具
提出背景与灵感起源 马尔可夫链由俄国数学家安德雷马尔可夫于1906年提出,最初是为了挑战当时概率论中“独立性假设”的局限性。他希望通过研究相依变量序列,证明即使随机变量之间存在依赖关系,大数定律和中心极限定理仍然成立。 灵感来源&am…...
深入解析Java Socket服务器实现:从基础到优雅停机
本文将详细解析一个基于Java Socket实现的服务器程序,涵盖线程池管理、心跳检测、优雅停机等关键特性,并最终提供完整代码实现。 1. 架构概述 这个Socket服务器实现具有以下核心特性: 基于Java原生Socket API实现使用线程池处理客户端连接…...
AI+SWAT模型革命性应用!ArcGIS Pro流域水循环/水生态智能模拟实战;SWAT模型下载 安装 运行 建模流程
⚠️您是否面临: 传统水文模型效率低下? 多源空间数据处理耗时? 复杂生态过程难以量化? 💡当SWAT模型遇见"ArcGIS ProAI": → 传统需要1个月的参数率定缩短至3天 → 多情景分析报告自动生成&a…...
《AI大模型应知应会100篇》第23篇:角色扮演技巧:让AI成为你需要的专家
第23篇:角色扮演技巧:让AI成为你需要的专家 摘要 在当今人工智能快速发展的时代,大模型已经不仅仅是简单的问答工具,它们可以通过角色扮演技巧模拟各类专家身份,从而为用户提供更专业、更有针对性的服务。本文将深入探…...
【17】数据结构之图的遍历篇章
目录标题 图的遍历深度优先遍历 Depth First Search广度优先遍历 Breadth First Search 图的遍历 从图中某一个顶点出发,沿着一些边访遍图中所有的顶点,且使用每个顶点仅被访问一次,这个过程称为图的遍历.Graph Traversal. 其中,…...
【gpt生成-其一】以go语言为例,详细描述一下 :语法规范BNF/EBNF形式化描述
在 Go 语言中通过 EBNF 形式化描述语法规范需要结合语言规范文档的结构,以下是详细实现方法及标准规范示例: 一、Go 语法规范结构(基于 Go 1.21 标准) ebnf 复制 // 基础元素定义 letter "A" ... "Z&quo…...
深度剖析:GPT-3.5与GPT-4的主要区别及架构解析
随着自然语言处理技术的飞速发展,OpenAI推出的各类语言模型备受瞩目。尤其是GPT-3.5和GPT-4这两个版本之间的差异,成为了技术爱好者、研究人员和企业关注的焦点。在这篇文章中,我们将探讨这两个版本的主要区别以及它们的架构特点,…...
协同推荐算法实现的智能商品推荐系统 - [基于springboot +vue]
🛍️ 智能商品推荐系统 - 基于springboot vue 🚀 项目亮点 欢迎来到未来的购物体验!我们的智能商品推荐系统就像您的私人购物顾问,它能读懂您的心思,了解您的喜好,为您精心挑选最适合的商品。想象一下&am…...
【运维学习】lvs + keepalived + 主从dns 项目搭建
需求 主机规划 环境搭建 配置主从dns 主dns 从dns 配置web服务 搭建lvs keepalived 配置master 配置backup 更改dns配置 添加VIP 配置内核参数 更改web配置 添加VIP 配置内核参数 客户端测试 需求 主机规划 主机名IP角色lvs-master192.168.239.105主lvs&#x…...
ESP32-idf学习(二)esp32C3作服务端与电脑蓝牙数据交互
一、当前需求 目前是想利用蓝牙来传输命令,或者一些数据,包括电脑、手机与板子的数据传输,板子与板子之间的数据传输。构思是一个板子是数据接收终端,在电脑或手机下发指令后,再给其他板子相应指令,也需要…...
考道路运输安全员证应具备哪些经验?
考道路运输安全员证,通常没有明确的工作经验年限要求,但具备以下相关经验会对考试有很大帮助: 驾驶经验:报考要求取得相应的机动车驾驶证 1 年以上。有实际驾驶经验,能更好地理解驾驶员的操作规范、疲劳驾驶等问题&…...
ubtuntu安装docker拉取iwebsec镜像
docker安装: --可以在这之前换源(非必要)没有权限直接加sudo sudo apt-get update sudo apt-get upgrade 安装依赖: sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-re…...
Using the CubeMX code (一)(GPIO,PWM ,Cube AI,手写数字识别 MNIST,Demo)
该例程对使用CubeMX初始化GPIO做了示范,GPIO使用HAL库进行GPIO编程分为以下几个步骤: 一、例程简述 1. 包含必要的头文件和HAL库的相关头文件 CubeMX初始化会自动包含,对手敲HAL感兴趣的同学可以熟悉下生成的代码框架学习哦~ 2. 初始化GP…...