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

Linux入门篇-作业(jobs)调度(本质仍然是进程)

简介

之所以叫做作业调度,作业是以shell为单位的,一个shell建立的作业,不会被另外一个shell看到(包 括root),但是仍然可以看到作业对应的进程。
①前台进程(front process
运行在用户眼前的进程就是前台进程,当用户眼前运行一个前台进程时,如果想运行其他进程,必须关
闭当前前台进程,或者将该前台进程放到后台(backgrand process)运行。
②后台进程
后台进程不会影响用户当前shell运行其他进程。
并不是所有的进程都能作为后台进程运行在后台的。(比如说top命令)
如何判断一个进程到底应不应该放在后台运行呢?
1.运行时间较长,用户不想在前台等待,该进程可以运行结束
2.服务(service)进程,用户想永远让其处于运行状态
[root@RHCSA-EXAM ~]# cat &
[1] 11825
[root@RHCSA-EXAM ~]#
[1]+ Stopped cat
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# jobs
[1]+ Stopped cat
jobs命令是一个阉割版本的ps,只能查看当前shell运行的后台进程。通过jobs来管理后台进程。
jobs功能有限,管理范围有限。
jobs管理后台进程,也是使用kill命令,只不过,kill命令本身也可以向job id发送相应的信号。
[root@RHCSA-EXAM ~]# jobs
[1]+ Stopped cat
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# kill %1
[root@RHCSA-EXAM ~]#
[1]+ Terminated cat
[root@RHCSA-EXAM ~]# jobs
[root@RHCSA-EXAM ~]#
前台进程和后台进程之间的转换
当前台进程运行时,可以使用ctrl+c停止该进程,也可以使用ctrl+z将该进程放到后台,注意,当一
个进程由前台切换到后台时(ctrl+z),那么该进程的状态就会变成stop,如果你想继续运行该进
程,需要使用kill命令发送让该进程继续运行的信号。
[root@RHCSA-EXAM ~]# jobs
[1]+ Stopped dd if=/dev/zero of=/root/50G bs=1M count=50000
[root@RHCSA-EXAM ~]# bg %1
[1]+ dd if=/dev/zero of=/root/50G bs=1M count=50000 &
[root@RHCSA-EXAM ~]# jobs调整进程的优先级
[1]+ Running dd if=/dev/zero of=/root/50G bs=1M count=50000
&
[root@RHCSA-EXAM ~]# fg %1
dd if=/dev/zero of=/root/50G bs=1M count=50000

调整进程的优先级

4 core,最大允许4个进程同时使用100%的cpu
假如说有5个进程需要运行,且该5个进程都需要占用100%的cpu,如果你觉得哪个进程更需要快速运行
结束,那么就调整这个进程的优先级。
①运行进程的时候就指定优先级
②调整一个已经运行进程的优先级
[root@RHCSA-EXAM ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 4
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2695 v2 @ 2.40GHz
Stepping: 4
CPU MHz: 2400.000
BogoMIPS: 4800.00
Virtualization: VT-x
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 30720K
NUMA node0 CPU(s): 0-3
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm
constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc
cpuid pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt
tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault
pti ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust smep
arat flush_l1d arch_capabilities
[root@RHCSA-EXAM ~]# nice -n 10 cat /dev/zero >> /dev/null &
[7] 17443
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# renice -n -30 17443
17443 (process ID) old priority 10, new priority -20
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
服务管理(不好讲)
服务就是进程,进程不一定是服务
服务是具备一定功能的进程,但是有些进程并不具备服务的特征,所以服务一定是进程,但是进程不一
定是服务。
服务也是进程,就意味着服务也享受着之前学习过的进程的概念。
Linux里面的第一个进程,是整个系统的父进程。
在RHEL6版本之前,包括RHEL6,采用的第一个进程叫做init。第一个进程非常重要,因为第一个进程
要负责后面所有其他进程的启动,后面其他进程能否启动成功取决于系统能不能正常运行。
init有问题,通过init进程启动的后续进程都是串行启动的,串行启动就意味着速度慢。
在RHEL7版本,采用第一个进程叫做systemd。该进程相比如init来说,采用并行方式启动后续进程,
并行启动就意味着速度快。
systemd管理服务操作
[root@RHCSA-EXAM ~]# renice -n -40 17443
17443 (process ID) old priority -20, new priority -20
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# killall cat

服务管理

服务就是进程,进程不一定是服务
服务是具备一定功能的进程,但是有些进程并不具备服务的特征,所以服务一定是进程,但是进程不一
定是服务。
服务也是进程,就意味着服务也享受着之前学习过的进程的概念。
Linux里面的第一个进程,是整个系统的父进程。
RHEL6版本之前,包括RHEL6,采用的第一个进程叫做init。第一个进程非常重要,因为第一个进程
要负责后面所有其他进程的启动,后面其他进程能否启动成功取决于系统能不能正常运行。
init有问题,通过init进程启动的后续进程都是串行启动的,串行启动就意味着速度慢。
RHEL7版本,采用第一个进程叫做systemd。该进程相比如init来说,采用并行方式启动后续进程,
并行启动就意味着速度快。

systemd管理服务操作 

基本上相对较新版本的Linux发行版都支持systemd管理网络服务,ubuntu16.04,rhel7,
suse,opensuse,debian。
systemd管理的内容不仅仅有service,systemd管理的单位是unit,service只是unit中的一
种。
[root@RHCSA-EXAM ~]# systemctl list-units
[root@RHCSA-EXAM ~]# systemctl list-unit-files
我们的课程涉及的unit,只有service和target
systemd管理service
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 09:17:42 CST; 13h ago
Docs: man:NetworkManager(8)
Main PID: 1073 (NetworkManager)
Tasks: 3 (limit: 26213)
Memory: 13.3M
CGroup: /system.slice/NetworkManager.service
└─1073 /usr/sbin/NetworkManager --no-daemon
systemctl status service
[root@RHCSA-EXAM ~]# systemctl status NetworkManager.service
查看服务的状态
[root@RHCSA-EXAM ~]# systemctl stop NetworkManager
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2020-04-22 22:42:05 CST; 7s ago
Docs: man:NetworkManager(8)
Process: 1073 ExecStart=/usr/sbin/NetworkManager --no-daemon
(code=exited, status=0/SUCCESS)
Main PID: 1073 (code=exited, status=0/SUCCESS)
[root@RHCSA-EXAM ~]# systemctl start NetworkManager
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 22:42:55 CST; 4s ago
Docs: man:NetworkManager(8)
Main PID: 29235 (NetworkManager)
Tasks: 4 (limit: 26213)
Memory: 8.0M
CGroup: /system.slice/NetworkManager.service
└─29235 /usr/sbin/NetworkManager --no-daemon
[root@RHCSA-EXAM ~]# systemctl restart NetworkManager
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 22:43:42 CST; 5s ago
Docs: man:NetworkManager(8)
Main PID: 29421 (NetworkManager)
Tasks: 4 (limit: 26213)
Memory: 4.4M
CGroup: /system.slice/NetworkManager.service
└─29421 /usr/sbin/NetworkManager --no-daemon
[root@RHCSA-EXAM ~]# systemctl disable NetworkManager
Removed /etc/systemd/system/multiuser.target.wants/NetworkManager.service.
Removed /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed /etc/systemd/system/network-online.target.wants/NetworkManagerwait-online.service.
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
disabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 22:43:42 CST; 2min 57s
ago
Docs: man:NetworkManager(8)
Main PID: 29421 (NetworkManager)
Tasks: 3 (limit: 26213)
Memory: 4.3M
CGroup: /system.slice/NetworkManager.service
└─29421 /usr/sbin/NetworkManager --no-daemon
[root@RHCSA-EXAM ~]# systemctl enable NetworkManager
Created symlink /etc/systemd/system/dbusorg.freedesktop.NetworkManager.service →
/usr/lib/systemd/system/NetworkManager.service.
Created symlink /etc/systemd/system/multiuser.target.wants/NetworkManager.service →
/usr/lib/systemd/system/NetworkManager.service.
Created symlink /etc/systemd/system/dbus-org.freedesktop.nmdispatcher.service → /usr/lib/systemd/system/NetworkManagerdispatcher.service.
Created symlink /etc/systemd/system/networkonline.target.wants/NetworkManager-wait-online.service →
/usr/lib/systemd/system/NetworkManager-wait-online.service.
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 22:43:42 CST; 3min 23s
ago
Docs: man:NetworkManager(8)
Main PID: 29421 (NetworkManager)
Tasks: 3 (limit: 26213)
Memory: 4.3M
CGroup: /system.slice/NetworkManager.service
└─29421 /usr/sbin/NetworkManager --no-daemon
systemd管理target
[root@RHCSA-EXAM ~]# systemctl is-active NetworkManager
active
[root@RHCSA-EXAM ~]# systemctl is-enabled NetworkManager
enabled
[root@RHCSA-EXAM ~]# systemctl stop NetworkManager
[root@RHCSA-EXAM ~]# systemctl disable NetworkManager
[root@RHCSA-EXAM ~]# systemctl is-active NetworkManager
inactive
[root@RHCSA-EXAM ~]# systemctl is-enabled NetworkManager
disabled

systemd管理target

需要了解的只是target的含义。target是由服务组成的一类启动目标,systemd可以设置启
动目标,如果systemd指定了一个target作为启动目录,那么下次系统启动的时候就会启动target里
面的所有服务。
我们需要了解的target有两个,一个是multi-user.target,一个是graphical.target。
multi-user.target就是字符界面的Linux系统
graphical.target就是图形界面的Linux系统
[root@RHCSA-EXAM ~]# systemctl isolate multi-user.target
临时切换到字符界面
如果你的系统安装了图形界面,你切换到字符界面,你按ctrl+alt+F1~F6
[root@RHCSA-EXAM ~]# systemctl isolate graphical.target
临时切换到图形界面
[root@RHCSA-EXAM ~]# systemctl get-default
graphical.target
查看下次开机启动加载哪个target
[root@RHCSA-EXAM ~]# systemctl set-default multi-user.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target →
/usr/lib/systemd/system/multi-user.target.
修改下次开机启动的target
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# systemctl get-default
multi-user.target
[root@RHCSA-EXAM ~]# systemctl set-default graphical.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target →
/usr/lib/systemd/system/graphical.target.
[root@RHCSA-EXAM ~]# systemctl get-default
graphical.target

相关文章:

Linux入门篇-作业(jobs)调度(本质仍然是进程)

简介 之所以叫做作业调度,作业是以shell为单位的,一个shell建立的作业,不会被另外一个shell看到(包 括root),但是仍然可以看到作业对应的进程。①前台进程(front process) 运行在用户…...

vue 监听 取消监听

vue 的 watch 除了可以使用声明式的配置项以外,还可以通过命令式 this.$watch 方法。 如下是我们比较少用的命令式(想要初始只监听一次,必须命令式写法): 监听只运行一次 声明式 export default{data: {showType: fa…...

0103深度优先搜索和单点连通-无向图-数据结构和算法(Java)

文章目录1.1 走迷宫1.2 图的深度优先搜索实现1.3 算法分析及性能1. 4 单点连通性后记1.1 走迷宫 简单的迷宫,如下图1.1-1所示: 探索迷宫而不迷路,我们需要: 选择一条没有标记过的通道,在你走过的路上铺一条绳子&…...

进销存管理系统

技术:Java等摘要:进销存管理系统是为了实现企业仓库商品管理的系统化、规范化和自动化,从而提高企业管理效率而设计开发的管理信息系统。它完全取代了过去一直用人工管理的工作方式,避免了由于管理人员手工操作上的疏忽以及管理质…...

Sonar:VSCode配置SonarLint/SonarLint连接SonarQube

需求描述 公司为项目代码配置了Sonar检测,希望在VSCode中开发项目时能够同步检测结果。 注意事项 SonarQube版本必须为7.9,否则SonarLint无法连接(GitHub-SonarLint-Wiki第一行就有说明)!!!S…...

陀螺仪小车(Forerake-Car)

项目简介:搭建一辆有arduino UNO 与rnf24l01组成的小车;手部安装由arduino nano开发板、nrf24l01、imu构成的手势控制器,利用手势控制器检测手部状态、发送信号对小车进行前进,实现基于卡尔曼滤波的MPU6050姿态结算。 准备工作&am…...

Leetcode Day5 含有重复元素集合的组合+

1、含有重复元素集合的组合 给定一个可能有重复数字的整数数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次,解集不能包含重复的组合。 【题目传送门】 思…...

Mac Book pro(M1)使用总结

1、拿到电脑激活的时候,一定要记住账号密码及安全问题的答案。 2、显示隐藏文件夹: 3、显示.git或者gitignore等隐藏后缀的文件: 打开终端 defaults write com.apple.finder AppleShowAllFiles TRUE重启Finder在终端输入 killall Finder …...

QML集成JavaScript

在QML中可以使用现有的QML元素来创建页面,但QML紧密的集成了必要的JavaScript。 但QML中使用JavaScript比较严格,在QML中不可以添加或修改JavaScript全局对象成员,这样可能会使用一个未经声明的变量。 内联JavaScript 一些小型的JavaScript函…...

学习周报3.5

文章目录前言文献阅读摘要介绍方法总结相关性总结前言 本周阅读文献《Multi-step ahead probabilistic forecasting of multiple hydrological》,文献主要提出一种基于三维卷积神经网络、卷积最小门记忆神经网络和变分贝叶斯神经网络的混合深度学习模型&#xff08…...

java基础学习篇

java学习 多写(代码、笔记、文章),多练(交流、思维、技能),多分享,多提问、多思考 什么是计算机 由硬件和软件组成,广泛应用在科学计算、数据处理、自动控制,计算机辅…...

Go 语言基础语法及应用实践

Go语言是一门由Google开发的静态类型、编译型的开源编程语言,被设计成简单、高效、安全的语言。作为一门相对年轻的语言,Go语言的使用范围正在不断扩大,特别是在Web开发、云计算、容器化和分布式系统等领域越来越受到欢迎。 在本篇文章中,我们将探讨Go语言的基础语法及应用…...

C语言自定义类型---进阶

之前的文章中有结构体初阶知识的讲解&#xff0c;对结构体不是很了解的小伙伴可以先去去看一下结构体初阶 结构体&#xff0c;枚举&#xff0c;联合结构体结构体类型的声明特殊的声明结构的自引用结构体变量的定义和初始化结构体内存对齐 <3 <3 <3(重点)那为什么存在内…...

85.链表总结

链表总结 链表总结与进阶 抽象数据类型&#xff08;ADT abstract data type&#xff09;与抽象数据接口&#xff08;ADI abstract data Interface&#xff09; 链表实际上就是对于结构体、结构体指针和结构体内可以包含指向同类型的结构体指针不可以包含指向同类型的结构体的应…...

【博学谷学习记录】超强总结,用心分享|狂野大数据课程【DataFrame的相关API】的总结分析

操作dataFrame一般有二种操作的方式, 一种为SQL方式, 另一种为DSL方式 SQL方式: 通过编写SQL语句完成统计分析操作DSL方式: 领域特定语言 指的通过DF的特有API完成计算操作(通过代码形式)从使用角度来说: SQL可能更加的方便一些, 当适应了DSL写法后, 你会发现DSL要比SQL更加…...

粒子群优化最小二乘支持向量机SVM回归分析,pso-lssvm回归预测

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 SVM应用实例,粒子群优化最小二乘支持向量机SVM回归分析 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大…...

lavis多模态开源框架学习--安装

安装lavis安装lavis测试安装问题过程中的其他操作安装lavis 因为lavis已经发布在pypi中&#xff0c;所以可以直接利用pip安装 pip install salesforce-lavis测试安装 from lavis.models import model_zoo print(model_zoo) # # Architectures Types # # …...

【IDEA】如何在Tomcat上创建部署第一个Web项目?

看了网上很多教程&#xff0c;发现或多或都缺失了一些关键步骤信息&#xff0c;对于新手小白很不友好&#xff0c;那么今天就教大家如何在Tomcat服务器&#xff08;本地&#xff09;上部署我们的第一个Web项目&#xff1a; 共分为三个部分&#xff1a; 1. IDEA创建Web项目&am…...

程序员画流程图的工具Draw.io

Draw.io 是一个很好用的免费流程图绘制工具,制图结果本质上是xml文件&#xff0c;web版和桌面版可以支持导出图像&#xff08;png或者svg矢量图都可以&#xff09;。你可以利用它绘制一系列的图表、图示或图形&#xff0c;包括流程图、UML类图、组织结构图、泳道图、E-R 图、文…...

CAPL脚本DBLookup函数动态访问CAN 报文的属性

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...