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

6、进程理论和简单进程创建

一、了解进程推荐看这个视频,很详细

1、概念

  • 进程(Process)=程序的运行过程,是系统进行资源分配和调度的独立单元
  • 程序的运行过程:多个不同程序 并发,同一个程序同时执行多个任务。
    • 就需要很多资源来实现这个过程
  • 每个进程都有一个独立的地址空间【空间由0开始扩大,直到最大值,成一个连续的空间】。在这个空间里,进程能够执行读写操作,存放可执行的程序代码、程序运行所需的资源以及函数调用和局部变量存储的栈结构。
  • 进程控制块PCB):
    • 是一个数据结构
    • 描述进程的基本情况和运行状态
    • 为控制和管理提供数据依据

2、访问linux的进程方法

那么如何查看进程?
基本语法:ps 选项
a:显示当前终端下的所有进程信息,包括其他用户的进程
u:以用户为主的进程状态
x:通常与 a 这个参数一起使用,显示当前用户在所有终端下的进程信息
-e:显示系统内所有的进程信息
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息
在这里插入图片描述

//使用ps -aux
ps -aux

在这里插入图片描述

ps -elf

在这里插入图片描述

top
q       退出显示
top -d  默认三秒,指定top命令每隔几秒刷新
top -i  使用top不显示任何闲置或者僵死的进程
top -p  通过指定监控ID来仅仅监考某个进程的状态
例如:
top -d 10  每10秒刷新1次
  • top命令将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次,其作用类似于windows系统中的任务管理器。
    在这里插入图片描述
    在这里插入图片描述
pgrep 
  • 使用pgrep命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多中属性查询特定进程的PID号
pstree  选项
-u  显示进程的用户名
-p  显示进程号(PID)
  • 将进程以树形的结构展现出来

3、删除进程

kill 进程号   删除进程
kill -9 进程号 强制删除进程 

4、进程的文件

  • 在**/proc/里面**
    在这里插入图片描述
    这些蓝色的就是进程号。

二、进程模型

严格来说,一个CPU核心在任一时刻仅能执行一个线程的任务,即便是系统配置有双核心(或更多CPU)时每个核心也是独立地且一次仅执行一个线程

  • 进程的组成
    • 1、代码段和相关数据段
    • 2、PCB(进程控制块)
      • 2.1、PCB包含的信息
      • ①进程标识符PID
      • ②进程控制管理信息
      • ③资源清单
      • ④进程调度信息
      • ⑤处理机状态
      • 2.2、PCB是什么?
      • ①是一个数据结构
      • ②描述进程的基本情况和运行状态
      • ③为管理和控制提供数据依据
  • 抽象的角度看,每个进程似乎都配备了专属的虚拟CPU以支持其独立执行,但物理程度上,CPU通过时间片机制在多个进程间进行快速切换从而并发执行的假象。【简而言之:抽象看是每个进程都有一个CPU;物理上看是只有一个CPU供所有进程使用,进程用时间片机制来快速切换,像并发一样。】
  • 如下图【物理上看】:

在这里插入图片描述

  • 如下图【抽象上看】

在这里插入图片描述

  • 所以可以发现:
    • 在经历足够长的一段时间后,所有的进程都运行了,但实际上在任何一个给定的瞬间仅有一个进程真正运行
    • 所以它们实际上是这样运行【A运行一点时间,就给B运行,B运行一点给C运行,如果需要回到A,就使用PCB,PCB记录了之前的状态。】的,如下图:
    • 在这里插入图片描述
  • PCB进程控制管理信息
    • 代码段和数据段的地址
    • 进程同步和通信信息
    • 资源清单地址
    • 进程队列指针
  • PCB处理机状态
    • 处理机中寄存器的内容
    • 作用:CPU切换时保存现场信息和回复现场信息。
  • PCB进程标识符
    • 进程号
  • PCB资源清单
    • 内存地址
    • 虚拟地址
    • 打开文件列表
    • I/O设备信息
  • PCB进程调度信息
    • 进程状态
    • 优先级
    • 等待和使用CPU时间总和
    • 进程调度和对换依据
  • 进程与进程之间怎么数据交换?
    • 依靠操作系统内核

    • 在这里插入图片描述

    • 但是从上图可知:进程1和进程2是独立的个体。似乎不相互影响。

  • 我们通过2段代码来理解【推荐先看下面部分的编程再看这里
  • 首先是创建一个全局变量 global_vary = 100 。再在child函数里改global_vary =200 。然后我们运行代码,得到结果如下图:
  • 会发现,parent还是100 。child的是200 。

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int global_vary = 100;//创建了一个全局变量
void child(){global_vary =200;printf("in child process:%d global_vary:%d \n",getpid(),global_vary);
}
void parent(){sleep(3);//休眠3秒后,再运行。printf("int parent process:%d global_vary:%d \n",getpid(),global_vary);
}
int main(){pid_t pid;pid=fork();if(pid<0){perror("fork have problem\n");exit(0);//释放pid}else if(pid==0){//childchild();}else if(pid>0){parent();}return 0;}
  • 使用sleep 修改
  • 让 子进程结束变慢。
    在这里插入图片描述
#include<stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int global_vary = 100;//创建了一个全局变量
void child(){global_vary =200;printf("in child process:%d global_vary:%d \n",getpid(),global_vary);sleep(3);
}
void parent(){sleep(1);        printf("int parent process:%d global_vary:%d \n",getpid(),global_vary);
}
int main(){pid_t pid;pid=fork();if(pid<0){perror("fork have problem\n");exit(0);//释放pid}else if(pid==0){//childchild();}else if(pid>0){parent();}return 0;}

就会发现结果还是 200 ,100 。
这就能体现出他们是独立的
它们是独立占用 0-3G虚拟空间。

三、进程的创建

1、了解情况

  • 随机分配,谁先获得CPU的使用权
  • 通过返回值来区分父子进程
  • 返回是2次,一次是父进程的,另一次是子进程的
  • 子父进程共享文件

2、简单编程实现

2.1、getpid和getppid和fork

  • fork() 的作用
    • fork() 会创建一个子进程,父进程返回子进程的 PID,子进程返回 0
    • 如果 fork() 失败(如系统资源不足),返回 -1,并进入错误处理。
  • getpid() 和 getppid()
    • getpid():返回当前进程PID
    • getppid():返回当前进程父进程 PID
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>int main() {pid_t pid;pid = fork();if (pid < 0) {perror("fork failed\n");exit(1);} else if (pid == 0) {printf("子进程: PID = %d, PPID = %d\n", getpid(), getppid());} else {printf("父进程: PID = %d, PPID = %d\n", getpid(), getppid());wait(NULL);  // 父进程等待子进程结束}return 0;
}

2.2、sleep

如果我想让子进程先运行,父进程后运行。就可以使用sleep(时间) 。这里的时间是默认按秒的时间,休眠作用。


#include<stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include <unistd.h>void child(){printf("in child process:%d \n",getpid());
}
void parent(){sleep(3);//休眠3秒后,再运行。printf("int parent process:%d \n",getpid());
}
int main(){pid_t pid;pid=fork();if(pid<0){perror("fork have problem\n");exit(0);//释放pid}else if(pid==0){//childchild();exit(0);}else if(pid>0){parent();exit(0);}return 0;}

在这里插入图片描述

2.3、execlp和excvp

  • execvpexeclp很像,只是参数的写法不同
  • 都通过PATH的方式查找。
    • execvp的参数是指针数组
    • execlp的参数是可变参数列表
#include <unistd.h>int main() {execlp("ls", "ls", "-l", NULL);  // 等价于 execvp("ls", {"ls", "-l", NULL})perror("execlp failed");return 1;
}
  • exlvp的作用:
    • 用于 替换当前进程的映像即运行另一个程序,当前进程的代码和数据会被新程序覆盖 。替换后,原进程的代码不会执行了。)。
函数原型
#include <unistd.h>
int execvp(const char *file, char *const argv[]);
argv以NULL结尾
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>int main(){pid_t pid;pid=fork();if(pid<0){perror("fork have problem\n");exit(0);//释放pid}else if(pid==0){//替换成当前父进程的上下文,替换成新的进程静态数据区int ret=execlp("ls","ls","-l",NULL);if(ret<0){perror("execlp error");exit(-1);}printf("================================\n");exit(0);}else if(pid>0){//父进程回收子进程的资源getchar();wait(NULL);//阻塞接口,等待一个事件的发生}return 0;}

3、创建进程中的指令总结

exit(数字)   用来终止执行
fork         创建进程
wait         接收另一个进程的退出[阻塞接口]
sleep        休眠
execlp       替换当前进程的映像
  • fork 子进程诞生,此时父进程是副本
  • exec系列调用,替换成静态区
  • exit系统调用,结束,变成僵尸
  • wait系统调用,回收资源,已经变成僵尸状态的子进程的资源。

相关文章:

6、进程理论和简单进程创建

一、了解进程推荐看这个视频&#xff0c;很详细 1、概念 进程(Process)程序的运行过程&#xff0c;是系统进行资源分配和调度的独立单元程序的运行过程&#xff1a;多个不同程序 并发&#xff0c;同一个程序同时执行多个任务。 就需要很多资源来实现这个过程。 每个进程都有一…...

python面试-基础

Python 面试题&#xff1a;解释 filter 函数的工作原理 难度: ⭐⭐ 特点: filter 函数是 Python 内置的高阶函数&#xff0c;用于过滤序列中的元素。这道题考察面试者对函数式编程概念的理解以及对 filter 函数的实际应用能力。和 map 函数类似, Python 3 中的 filter 返回一…...

全分辨率免ROOT懒人精灵-自动化编程思维-设计思路-实战训练

全分辨率免ROOT懒人精灵-自动化编程思维-设计思路-实战训练 1.2025新版懒人精灵-实战红果搜索关键词刷视频&#xff1a;https://www.bilibili.com/video/BV1eK9kY7EWV 2.懒人精灵-全分辨率节点识别&#xff08;红果看广告领金币小实战&#xff09;&#xff1a;https://www.bili…...

前后端常见模型以及相关环境配置介绍

一、前端常见框架 Vue.js 特点&#xff1a;采用数据驱动的响应式编程&#xff0c;组件化的开发模式使得代码结构清晰&#xff0c;易于维护&#xff0c;且学习成本相对较低&#xff0c;适合初学者和快速迭代的项目。应用场景&#xff1a;广泛应用于各类 Web 应用开发&#xff…...

西电考研目前缺额专业,调剂助力上岸!

注意啦&#xff01;准备调剂的兄弟们看过来&#xff1a;今天带大家梳理【西电调剂】的相关内容。助力大家上岸西安电子科技大学研究生 调剂必须在短时间内迅速做出决策&#xff0c;收集信息、筛选院校、准备复试&#xff0c;每一个环节都容不得丝毫懈怠&#xff01;现在除了关注…...

英语四六级听力考试网络广播系统建设方案:助力大学英语四六级听力考试清晰度与可靠性升级

英语四六级听力考试网络广播系统建设方案&#xff1a;助力大学英语四六级听力考试清晰度与可靠性升级 北京海特伟业科技有限公司任洪卓发布于2025年3月26日 一、建设背景&#xff1a;听力考试的重要性与现有系统的痛点 英语四六级考试听力部分作为学生英语听力能力的直接检验…...

性能比拼: Rust vs C++

本内容是对知名性能评测博主 Anton Putra 1个月前 Rust vs C Performance 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 介绍 在本视频中&#xff0c;将对比 Rust 和 C。 会使用 Axum 框架的一个稍微改进的版本&#xff0c;该框架基于 Hyper 和 Tokio 运行时&am…...

b站视频提取mp4方案

引言 对于b站视频&#xff0c;有些视频是不能提取字幕的&#xff0c;所以我们想把对应的视频下载下来&#xff0c;然后进行对应的本地处理&#xff0c;获得所需的自由处理&#xff0c;吞食视频。 整体思路 下载b站客户端 ----> 把缓存路径修改------> 下载所需视频---…...

PyQt6实例_批量下载pdf工具_exe使用方法

目录 前置&#xff1a; 工具使用方法&#xff1a; step one 获取工具 step two 安装 step three 使用 step four 卸载 链接 前置&#xff1a; 1 批量下载pdf工具是基于博文 python_巨潮年报pdf下载-CSDN博客 &#xff0c;将这个需求创建成界面应用&#xff0c;达到可…...

【java笔记】泛型、包装类、自动装箱拆箱与缓存机制

一、泛型&#xff1a;类型安全的基石 1. 泛型的本质与原理 Java 泛型&#xff08;Generics&#xff09;是 JDK 5 引入的特性&#xff0c;通过类型参数化实现代码的通用性。泛型类、接口和方法允许在定义时声明类型参数&#xff08;如 T、E、K、V&#xff09;&#xff0c;这些…...

计算机网络——传输层(TCP)

传输层 在计算机网络中&#xff0c;传输层是将数据向上向下传输的一个重要的层面&#xff0c;其中传输层中有两个协议&#xff0c;TCP&#xff0c;UDP 这两个协议。 TCP 话不多说&#xff0c;我们直接来看协议报头。 源/目的端口号&#xff1a;表示数据从哪个进程来&#xff0…...

Go 语言规范学习(1)

文章目录 IntroductionNotation示例&#xff08;Go 语言的 if 语句&#xff09;&#xff1a; Source code representationCharacters例子&#xff1a;变量名可以是中文 Letters and digits Lexical elementsCommentsTokensSemicolons例子&#xff1a;查看程序所有的token Ident…...

深入理解椭圆曲线密码学(ECC)与区块链加密

椭圆曲线密码学&#xff08;ECC&#xff09;在现代加密技术中扮演着至关重要的角色&#xff0c;广泛应用于区块链、数字货币、数字签名等领域。由于其在提供高安全性和高效率上的优势&#xff0c;椭圆曲线密码学成为了数字加密的核心技术之一。本文将详细介绍椭圆曲线的基本原理…...

nginx优化(持续更新!!!)

1.调整文件描述符 # 查看当前系统文件描述符限制 ulimit -n# 永久修改文件描述符限制 # 编辑 /etc/security/limits.conf 文件&#xff0c;添加以下内容 * soft nofile 65535 * hard nofile 65535# 编辑 /etc/sysctl.conf 文件&#xff0c;添加以下内容 fs.file-max 655352.调…...

ARCGIS PRO SDK 创建右键菜单

ArcGIS Pro SDK中的弹出式右键菜单常见的在地图视图、布局视图、文件目录等地方&#xff0c;随便右键点击某个文件、要素、要素类&#xff0c;一般都会弹出一个右键菜单。 操作对象右键菜单 refID要素图层esri_mapping_layerContextMenushp图层esri_mapping_unregisteredLaye…...

编译原理——LR分析

文章目录 LR分析概述一、LR分析概述二、LR(0)分析概述&#xff08;一&#xff09;可归前缀和子前缀&#xff08;二&#xff09;识别活前缀的有限自动机&#xff08;三&#xff09;活前缀及可归前缀的一般计算方法&#xff08;四&#xff09;LR(0)项目集规范族的构造 三、SLR(1)…...

css100个问题

一、基础概念 CSS的全称及作用是什么&#xff1f;行内样式、内部样式表、外部样式表的优先级&#xff1f;解释CSS的层叠性&#xff08;Cascading&#xff09;CSS选择器优先级计算规则伪类与伪元素的区别&#xff1f;举例说明!important的作用及使用注意事项如何继承父元素字体…...

js文字两端对齐

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.text-align: justify; 不就可以了吗&#xff1f;但是实际测试无效 二、原因及解决方法 1.原因&#xff1a;text-align只对非最后一行文字有效。只有一行文字时&#xff0c;text-align无效&#xff0c;要用text-alig…...

Java-面向对象-多态和抽象类

目录 什么是多态&#xff1f; 多态的优点 多态存在的三个必要条件 虚函数 重写 多态的实现方式 什么是抽象类&#xff1f; 继承抽象类 实现抽象方法 抽象类总结 什么是多态&#xff1f; 多态就是一个行为具有多种不同的表现形式。 举例&#xff1a; 我们按下 F1 键…...

前端性能优化:深入解析哈希算法与TypeScript实践

/ 示例&#xff1a;开放寻址哈希表核心实现 class OpenAddressingHashTable<T> {private size: number;private keys: (string | null)[];private values: (T | null)[];private tombstone Symbol(Deleted);constructor(size: number 53) {this.size size;this.keys …...

车架号查询车牌号接口如何用Java对接

一、什么是车架号查询车牌号接口&#xff1f; 车架号查询车牌号接口&#xff0c;即传入车架号&#xff0c;返回车牌号、车型编码、初次登记日期信息。车架号又称车辆VIN码&#xff0c;车辆识别码。 二、如何用Java对接该接口&#xff1f; 下面我们以阿里云接口为例&#xff0…...

linux input子系统深度剖析

input 就是输入的意思&#xff0c;因此 input 子系统就是管理输入的子系统&#xff0c;和 pinctrl 、 gpio 子系统 一样&#xff0c;都是 Linux 内核针对某一类设备而创建的框架。比如按键输入、键盘、鼠标、触摸屏等 等这些都属于输入设备&#xff0c;不同的输入设备…...

香蕉派 BPI-CM6 工业级核心板采用进迭时空K1 8核 RISC-V 芯片开发

BPI-CM6 产品介绍 香蕉派BPI-CM6是一款工业级RISC-V核心板&#xff0c;它采用SpacemiT K1 8核RISC-V芯片设计&#xff0c;CPU集成2.0 TOPs AI计算能力。8/16G DDR和8/16/32/128G eMMC。设计了板对板连接器&#xff0c;以增强稳定性&#xff0c;与树莓派CM4尺寸相同&#xff0c…...

9.4分漏洞!Next.js Middleware鉴权绕过漏洞安全风险通告

今日&#xff0c;亚信安全CERT监控到安全社区研究人员发布安全通告&#xff0c;Next.js 存在一个授权绕过漏洞&#xff0c;编号为 CVE-2025-29927。攻击者可能通过发送精心构造的 x-middleware-subrequest 请求头绕过中间件安全控制&#xff0c;从而在未授权的情况下访问受保护…...

【Unity3D实现UI轮播效果】

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果展示👉二、实现步骤👉2-1、搭建UI👉2-2、代码实现👉2-3、代码挂载使用👉三、扩展实现👉壁纸分享👉总结👉前言 功能需求如图所示,点击下一个按钮,所有卡片向右滚动,其中最后一张需要变更…...

谈谈 Webpack 中的 Loader 和 Plugin,它们的区别是什么?

Webpack Loader与Plugin深度解析 作为前端工程化的核心工具&#xff0c;Webpack的Loader和Plugin机制是其强大扩展能力的基石。 理解它们的差异和适用场景&#xff0c;是构建高效打包体系的关键。 我们将从底层原理到实际应用&#xff0c;深入剖析两者的区别。 核心概念对比…...

C#单例模式

单例模式 (Singleton),保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问&#xff0c;但它不能防止你实例化对个对象&#xff0c;一个最好的办法就是&#xff0c;让类自身负责保护它的唯一实例。这个类可以保证没…...

Oracle 数据库通过exp/imp工具迁移指定数据表

项目需求&#xff1a;从prod数据库迁移和复制2个表(BANK_STATE&#xff0c;HBS)的数据到uat数据库环境。 数据库版本&#xff1a;Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 迁移工具&#xff1a;客户端exp/imp工具 -- 执行命令 从Prod数据库导出数据exp us…...

MongoDB 与 Elasticsearch 使用场景区别及示例

一、核心定位差异 ‌MongoDB‌ ‌定位‌&#xff1a;通用型文档数据库&#xff0c;侧重数据的存储、事务管理及结构化查询&#xff0c;支持 ACID 事务‌。‌典型场景‌&#xff1a; 动态数据结构存储&#xff08;如用户信息、商品详情&#xff09;‌。需事务支持的场景&#xf…...

PyTorch生成式人工智能实战:从零打造创意引擎

PyTorch生成式人工智能实战&#xff1a;从零打造创意引擎 0. 前言1. 生成式人工智能1.1 生成式人工智能简介1.2 生成式人工智能技术 2. Python 与 PyTorch2.1 Python 编程语言2.2 PyTorch 深度学习库 3. 生成对抗网络3.1 生成对抗网络概述3.2 生成对抗网络应用 4. Transformer4…...

蓝桥杯高频考点——二分(含C++源码)

二分 基本框架整数查找&#xff08;序列二分的模版题 建议先做&#xff09;满分代码及思路solution 子串简写满分代码及思路solution 1&#xff08;暴力 模拟双指针70分&#xff09;solution 2&#xff08;二分 AC&#xff09; 管道满分代码及思路样例解释与思路分析solution 最…...

VUE3项目VITE打包优化

VUE3项目VITE打包优化 代码加密依赖配置效果对比图 自动导入依赖配置 代码压缩依赖配置效果对比图 图片压缩依赖配置效果对比图 字体压缩总结与实践运用效果 代码加密 依赖 npm install -D vite-plugin-bundle-obfuscator配置 import vitePluginBundleObfuscator from "…...

IP 分片重组与 TCP 会话重组

1. IP 分片重组&#xff08;IP Fragmentation & Reassembly&#xff09; &#xff08;1&#xff09;分片原因 当 IP 数据包长度超过 MTU&#xff08;Maximum Transmission Unit&#xff09;&#xff08;如以太网默认 1500 字节&#xff09;时&#xff0c;路由器或发送端会…...

《Python实战进阶》No34:卷积神经网络(CNN)图像分类实战

第34集&#xff1a;卷积神经网络&#xff08;CNN&#xff09;图像分类实战 摘要 卷积神经网络&#xff08;CNN&#xff09;是计算机视觉领域的核心技术&#xff0c;特别擅长处理图像分类任务。本集将深入讲解 CNN 的核心组件&#xff08;卷积层、池化层、全连接层&#xff09;…...

【Django】教程-1-安装+创建项目+目录结构介绍

欢迎关注我&#xff01;后续会更新django教程。一周2-3更&#xff0c;欢迎跟进&#xff0c;本周会更新第一个Demo的单独一个模块的增删改查【Django】教程-4-一个增删改查的Demo【Django】教程-2-前端-目录结构介绍【Django】教程-3-数据库相关介绍 1.项目创建 1.1 安装 Djan…...

力扣DAY29 | 热100 | 删除链表的倒数第N个结点

前言 中等 √ 链表心得&#xff1a;考虑好边界情况。 题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#…...

渗透测试过-关于学习Token、JWT、Cookie等验证授权方式的总结

关于学习Token、JWT、Cookie等验证授权方式的总结 目录 一、为什么Cookie无法防止CSRF攻击&#xff0c;而Token可以&#xff1f; 二、为什么无论采用Cookie-session的方式&#xff0c;还是Token&#xff08;JWT&#xff09;的方式&#xff0c;在一个浏览器里&#xff0c;同一个…...

C#从入门到精通(3)

目录 第九章 窗体 &#xff08;1&#xff09;From窗体 &#xff08;2&#xff09;MDI窗体 &#xff08;3&#xff09;继承窗体 第十章 控件 &#xff08;1&#xff09;控件常用操作 &#xff08;2&#xff09;Label控件 &#xff08;3&#xff09;Button控件 &…...

greenhill编译出现:3201原因错误

ecom800: 21Mar25 16:26:45.609351: No licenses available for ecom800 Reason: ecom800 (3201): The License Manager cannot be contacted. 解决方式&#xff1a;重新加载lincese驱动。 检查是否安装正确: 检查驱动是否正确识别&#xff1a; 以上检查都正常&#xff0c…...

Docker 快速入门指南

Docker 快速入门指南 1. Docker 常用指令 Docker 是一个轻量级的容器化平台&#xff0c;可以帮助开发者快速构建、测试和部署应用程序。以下是一些常用的 Docker 命令。 1.1 镜像管理 # 搜索镜像 docker search <image_name># 拉取镜像 docker pull <image_name>…...

RISC-V AIA学习2---IMSIC

我在学习文档这章时&#xff0c;对技术术语不太理解&#xff0c;所以用比较恰当的比喻来让自己更好的理解。 比较通俗的理解&#xff1a; 将 RISC-V 系统比作一个工厂&#xff1a; hart → 工厂的一条独立生产线IMSIC → 每条生产线配备的「订单接收员」MSI 中断 → 客户通过…...

C#基础学习(五)函数中的ref和out

1. 引言&#xff1a;为什么需要ref和out&#xff1f; ​问题背景&#xff1a;函数参数默认按值传递&#xff0c;值类型在函数内修改不影响外部变量&#xff1b;引用类型重新赋值时外部对象不变。​核心作用&#xff1a;允许函数内部修改外部变量的值&#xff0c;实现“双向传参…...

【每日算法】Day 9-1:贪心算法精讲——区间调度与最优选择(C++实现)

掌握高效决策的核心思想&#xff01;今日深入解析贪心算法的底层逻辑&#xff0c;聚焦区间调度与最优选择两大高频场景&#xff0c;结合大厂真题与严谨证明&#xff0c;彻底掌握“局部最优即全局最优”的算法哲学。 一、贪心算法核心思想 贪心算法&#xff08;Greedy Algorit…...

Netty源码—8.编解码原理二

大纲 1.读数据入口 2.拆包原理 3.ByteToMessageDecoder解码步骤 4.解码器抽象的解码过程总结 5.Netty里常见的开箱即用的解码器 6.writeAndFlush()方法的大体步骤 7.MessageToByteEncoder的编码步骤 8.unsafe.write()写队列 9.unsafe.flush()刷新写队列 10.如何把对象…...

【踩坑系列】使用httpclient调用第三方接口返回javax.net.ssl.SSLHandshakeException异常

1. 踩坑经历 最近做了个需求&#xff0c;需要调用第三方接口获取数据&#xff0c;在联调时一直失败&#xff0c;代码抛出javax.net.ssl.SSLHandshakeException异常&#xff0c; 具体错误信息如下所示&#xff1a; javax.net.ssl.SSLHandshakeException: sun.security.validat…...

双目云台摄像头全方位监控方案

双目云台摄像头是一种具有两个镜头的摄像头设备&#xff0c;通常配备云台功能&#xff0c;能够实现水平和垂直方向的旋转&#xff0c;从而提供全方位的监控视角&#xff1a; 一、工作原理与特点 工作原理 &#xff1a;双目云台摄像头利用仿生学原理&#xff0c;通过两个标定后的…...

测谎仪策略思路

来源:【东吴金工 金工专题】“高频价量相关性拥抱CTA”系列研究&#xff08;四&#xff09;&#xff1a;CPV因子期货版3.0—CPV测谎机 原创 高子剑 量化邻距离 2024年09月20日 14:37 该报告主要介绍了“高频价量相关性拥抱CTA”系列研究中CPV因子期货版的相关内容&#xff0c;…...

2025年移动端开发性能优化实践与趋势分析

启动速度优化 本质&#xff1a;缩短首次可见帧渲染时间。 方法&#xff1a; iOS&#xff1a;利用Core ML本地模型轻量化部署&#xff0c;减少云端等待。Android&#xff1a;强制启用SplashScreen API&#xff0c;通过setKeepOnScreenCondition控制动画时长。冷启动需将耗时操…...

VScode-i18n-ally-Vue

参考这篇文章&#xff0c;做Vue项目的国际化配置&#xff0c;本篇文章主要解释&#xff0c;下载了i18n之后&#xff0c;该如何对Vscode进行配置 https://juejin.cn/post/7271964525998309428 i18n Ally全局配置项 Vscode中安装i18n Ally插件&#xff0c;并设置其配置项&#…...

vue vue3 走马灯Carousel

背景&#xff1a; 在项目中需要展示多张图片&#xff0c;但在页面上只有一张图片的有限位置&#xff0c;此时考虑使用轮播图实现多张图片的展示。element组件官网有走马灯Carousel的组件详细介绍。 实现效果&#xff1a; 官网链接&#xff1a;点击跳转 核心代码&#xff1a; …...