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

Linux 线程1-线程的概念、线程与进程区别、线程的创建、线程的调度机制、线程函数传参

目录

1.线程概念

1.1 线程的核心特点

1.2‌线程的工作模型‌

1‌.3线程的潜在问题‌ ‌

1.4 进程和线程区别

1.4.1‌执行与调度‌ ‌

1.4.2进程和线程区别对比表

1.4.3应用场景‌ ‌

1.4.4总结

2.线程的创建

2.1验证进程结束后,进程中所有的线程都会强制退出

2.2线程函数正常执行

3.线程调度机制

3.1调度策略与优先级 ‌

3.2不同调度策略的对比

3.3 调度触发机制 ‌

3.4 线程默认调度机制验证

4.线程函数传参


1.线程概念

线程(Thread)是操作系统能够进行调度的 最小执行单元,它是 进程内的一个独立执行流, 共享进程的资源(如内存、文件句柄等),但 拥有自己的栈空间和程序计数器。线程使得程序可以 同时处理多个任务,是并发编程的核心概念之一。

1.1 线程的核心特点

(1)轻量级
线程的创建、切换和销毁成本远低于进程,因为线程共享进程的地址空间和资源。 示例:启动一个线程只需分配私有栈(通常几MB),而创建进程需分配独立内存空间。
(2)共享资源
同一进程内的所有线程共享
  • 内存空间(堆、全局变量)
  • 打开的文件、网络连接等
  • 代码段(程序指令)
  • 环境变量 

线程间通信可直接通过共享内存,无需复杂的进程间通信(IPC)。

每个线程有独立的栈(用于存储局部变量和函数调用链)。
(3)并发执行
多个线程可以在单核CPU上通过时间片轮转“伪并行”,或在多核CPU上真正并行运行。
每个线程拥有独立的:
  • 线程ID(TID)
  • 程序计数器(PC)
  • 寄存器集合
  • 栈空间(用于保存局部变量、函数调用链) 

1.2‌线程的工作模型‌

‌单线程‌:传统程序按顺序执行,无法并行(如简单的脚本)。
‌多线程‌:程序拆分多个执行流,通过时间片轮转或并行执行提升效率。

1‌.3线程的潜在问题‌ ‌

(1)线程安全问题‌
多个线程同时修改共享数据时可能导致数据不一致。
需通过‌同步机制‌(互斥锁、信号量等)保护临界资源。
(2)调试困难‌
线程并发执行时,错误可能难以复现(如死锁、竞态条件)。
(3)资源限制‌
线程数量过多会导致:
  • 内存消耗增加(每个线程需独立栈空间)。
  • CPU频繁切换线程,降低效率。

1.4 进程和线程区别

1.4.1‌执行与调度‌ ‌

(1)进程‌: 操作系统以进程为单位分配CPU时间片,进程是‌资源分配的基本单位‌

 多进程程序可以充分利用多核CPU(并行执行)。 ‌

(2)线程‌: 线程是‌CPU调度的基本单位‌,同一进程的线程共享进程的时间片。

多线程程序在单核CPU上通过时间片切换实现“并发”,在多核CPU上可实现并行。

1.4.2进程和线程区别对比表

特性进程线程
资源独立性独立内存和资源共享进程内存和资源
创建/切换开销
通信成本高(需IPC)低(直接共享内存)
容错性高(崩溃不影响其他进程)低(线程崩溃可能影响整个进程)
适用场景隔离性要求高、任务独立高并发、数据共享需求高

1.4.3应用场景‌ ‌

(1)适合多进程的场景‌:

需要高隔离性(如浏览器、虚拟机)。

任务间无紧密协作,且需避免单点故障。

(2)适合多线程的场景‌:

需要高效共享数据(如Web服务器处理并发请求)。

计算密集型任务拆分到多核并行处理(如科学计算)。

1.4.4总结

一般把线程称之为轻量级的进程。一个进程可以创建多个线程,多个线程共享一个进程的资源。每一个进程创建的时候系统会给其4G虚拟内存,3G用户空间是私有的,所以进程切换 时,用户空间也会切换,所以会增加系统开销,而一个进程中的多个线程共享一个进程的资 源,所以线程切换时不用切换这些资源,效率会更高 。线程的调度机制跟进程是一样的,多个线程来回切换运行。

2.线程的创建

函数原型:

#include <pthread.h>int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine)(void *),void *arg);功能:
创建一个线程。参数:
thread:线程标识符地址。
attr:线程属性结构体地址(默认 NULL)。
start_routine:线程函数的入口地址。
arg:传给线程函数的参数。返回值:
成功:返回 0
失败:返回错误码(如 EAGAIN 表示资源不足,EINVAL 表示属性无效)‌

2.1验证进程结束后,进程中所有的线程都会强制退出

程序:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>//由于线程库原本不是系统本身的,所以在链接时需要手动链接库文件 gcc *.c -lpthreadvoid *thread_fun(void *arg)
{printf("子线程正在运行\n");
}int main(int argc, char const *argv[])
{printf("主控线程正在执行\n");pthread_t thread;//通过pthread_create函数创建子线程if(pthread_create(&thread, NULL, thread_fun, NULL) != 0){perror("fail to pthread_create");//创建失败exit(1);//退出}//由于进程结束后,进程中所有的线程都会强制退出,所以现阶段不要让进程退出// while(1);return 0;
}

运行结果:编译时加-lpthread, gcc 01_pthread.c -lpthread 

程序运行时,main函数执行完直接退出,线程也会退出,执行线程的函数未执行。

注意:
由于线程库原本不是系统本身的,所以在链接时需要手动链接库文件 gcc *.c -lpthread

2.2线程函数正常执行

程序:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>//由于线程库原本不是系统本身的,所以在链接时需要手动链接库文件 gcc *.c -lpthreadvoid *thread_fun(void *arg)
{printf("子线程正在运行\n");
}int main(int argc, char const *argv[])
{printf("主控线程正在执行\n");pthread_t thread;//通过pthread_create函数创建子线程if(pthread_create(&thread, NULL, thread_fun, NULL) != 0){perror("fail to pthread_create");//创建失败exit(1);//退出}//sleep(1); // 使用sleep() 也能保证线程函数执行。//由于进程结束后,进程中所有的线程都会强制退出,所以现阶段不要让进程退出while(1);return 0;
}
运行结果:

3.线程调度机制

3.1调度策略与优先级 ‌

(1)普通线程调度‌ ‌

默认策略‌:采用 ‌完全公平调度器(CFS)‌,基于时间片轮转和进程的 nice 值分配 CPU 时间‌。 ‌

调度目标‌:保证所有线程公平使用 CPU,运行时间与 nice 值成反比(nice 值范围:-20~19,默认 0)‌。 ‌

(2)实时线程调度‌ ‌

策略类型‌: ‌

SCHED_FIFO‌:先进先出,高优先级线程独占 CPU 直至主动释放或阻塞‌。 ‌

SCHED_RR‌:时间片轮转,高优先级线程运行固定时间片(默认 100ms)后被抢占‌。 ‌

优先级范围‌:实时线程优先级为 ‌1~99‌(1最低,99最高),始终优先于普通线程‌。

‌(3)优先级管理‌ 实时线程优先级通过 sched_setscheduler 设置,普通线程优先级通过 nice 调整‌。 调度器优先执行高优先级线程队列的头部线程,同优先级按策略(FIFO/RR)排序‌。

3.2不同调度策略的对比

调度策略调度机制是否依赖时间片上下文切换触发条件
CFS(普通线程)基于虚拟时间公平分配 CPUvruntime 差距过大、高优先级线程就绪
SCHED_RR固定时间片轮转是(如 100ms)时间片耗尽、更高优先级线程就绪
SCHED_FIFO先进先出,无时间片限制线程主动让出或更高优先级线程抢占
SCHED_DEADLINE优先执行截止时间(Deadline)最近的线程Deadline 到期或更高优先级线程就绪

3.3 调度触发机制 ‌

(1)调度时机‌ ‌

主动触发‌:系统调用返回、线程阻塞/唤醒、线程退出‌。 ‌

被动触发‌:时钟中断(检查时间片耗尽)、高优先级线程就绪‌。 ‌

抢占规则‌:高优先级线程可抢占低优先级线程,实时线程可抢占普通线程‌。

‌(2)时间片分配‌

实时线程时间片固定(如 RR 策略的 100ms),普通线程时间片由 CFS 动态计算(基于 nice 值和系统负载)‌。

3.4 线程默认调度机制验证

程序:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>//一个进程中的多个线程执行顺序是不确定的,没有先后顺序可言
//多线程执行时跟进程一样,是来回切换运行的,跟进程的调度机制一样void *pthread_fun1(void *arg)
{printf("子线程1开头 正在运行\n");sleep(1);printf("子线程1结尾 正在运行\n");
}void *pthread_fun2(void *arg)
{printf("子线程2开头 正在运行\n");sleep(1);printf("子线程2结尾 正在运行\n");
}void *pthread_fun3(void *arg)
{printf("子线程3开头 正在运行\n");sleep(1);printf("子线程3结尾 正在运行\n");
}int main(int argc, char const *argv[])
{pthread_t thread1, thread2, thread3;if(pthread_create(&thread1, NULL, pthread_fun1, NULL) != 0){perror("fail to pthread_create thread1");}if(pthread_create(&thread2, NULL, pthread_fun2, NULL) != 0){perror("fail to pthread_create thread2");}if(pthread_create(&thread3, NULL, pthread_fun3, NULL) != 0){perror("fail to pthread_create thread3");}while(1);return 0;
}

运行结果:

一个进程中的多个线程执行顺序是不确定的,多线程执行时跟进程一样,是来回切换运行的,跟进程的调度机制一样。

4.线程函数传参

程序:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>int num = 100;//全局变量,线程共享内存//线程处理函数可以认为就是一个普通的全局函数,只不过与普通函数最大的区别
//在于,线程处理函数是并行执行,来回交替执行,但是普通函数一定是按照顺序一个一个执行
void *pthread_fun1(void *arg)
{printf("子线程1:num = %d\n", num);num++;//修改全局变量,其他线程获取到的是修改后的值int n = *(int *)arg;// arg强转为 int *printf("main函数局部变量a修改前,在子线程1为: %d\n", n);*(int *)arg = 111;//修改局部变量 a ,其他线程获取到的是修改后的值n = *(int *)arg;printf("main函数局部变量a修改后,在子线程1为: %d\n", n);
}void *pthread_fun2(void *arg)
{sleep(1);//保证 pthread_fun1 先执行完printf("子线程2:num = %d\n", num);int n = *(int *)arg;printf("main函数局部变量a,在子线程2为: %d\n", n);
}int main(int argc, char const *argv[])
{pthread_t thread1, thread2;int a = 666;if(pthread_create(&thread1, NULL, pthread_fun1, (void *)&a) != 0){perror("fail to pthread_create");}if(pthread_create(&thread2, NULL, pthread_fun2, (void *)&a) != 0){perror("fail to pthread_create");}while(1);return 0;
}

运行结果:全局变量、局部变量在线程1修改后,执行线程2获取到的变量为修改后变量。

相关文章:

Linux 线程1-线程的概念、线程与进程区别、线程的创建、线程的调度机制、线程函数传参

目录 1.线程概念 1.1 线程的核心特点 1.2‌线程的工作模型‌ 1‌.3线程的潜在问题‌ ‌ 1.4 进程和线程区别 1.4.1‌执行与调度‌ ‌ 1.4.2进程和线程区别对比表 1.4.3应用场景‌ ‌ 1.4.4总结 2.线程的创建 2.1验证进程结束后&#xff0c;进程中所有的线程都会强制…...

Python 助力人工智能与机器学习的深度融合

技术革新的 “源动力” 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;与机器学习&#xff08;ML&#xff09;无疑是最具影响力的技术领域&#xff0c;它们如同强大的引擎&#xff0c;推动着各个行业的变革与发展。Python 凭借其简洁易读的语法、丰富的库和…...

【GPT写代码】动作视频切截图研究器

目录 背景源代码 end 背景 用python写一个windows环境运行的动作视频切截图研究器&#xff0c;用路径浏览的方式指定待处理的视频文件&#xff0c;然后点击分析按钮&#xff0c;再预览区域显示视频预览画面&#xff0c;然后拖动时间轴&#xff0c;可以在预览区域刷新显示相应的…...

从0到神谕:GPT系列的进化狂想曲——用AI之眼见证人类语言的终极形态

开始&#xff1a;语言模型的星际跃迁 在人工智能的浩瀚星海中&#xff0c;GPT系列如同光年加速器&#xff0c;推动人类语言的理解与生成突破维度限制。从2018年GPT-1的初试啼声&#xff0c;到2025年GPT-4o的全模态智慧&#xff0c;这场进化狂想曲不仅是技术的迭代史&#xff0c…...

Go并发编程终极指南:深入内核与工程实践

Go并发编程终极指南&#xff1a;深入内核与工程实践 Go并发编程终极指南&#xff1a;深入内核与工程实践 Go并发编程终极指南&#xff1a;深入内核与工程实践一、Goroutine调度器深度解构1.1 调度器演进史1.2 调度器源码级解析1.3 调度器可视化诊断 二、Channel底层实现揭秘2.1…...

Neo4j操作数据库(Cypher语法)

Neo4j数据库操作语法 使用的数据库版本 (终端查询) >neo4j --version 2025.03.0批量上传数据 UNWIND [{name: Alice, age: 30},{name: Bob, age: 25} ] AS person CREATE (p:Person) SET p.name = person.name, p.age = person.age RETURN p;查询结点总数 MATCH (n) RETU…...

DHCP之中继 Relay-snooping及配置命令

随着网络规模的不断扩大&#xff0c;网络设备不断增多&#xff0c;企业内不同的用户可能分布在不同的网段&#xff0c;一台 DHCP 服务器在正常情况下无法满足多个网段的地址分配需求。如果还需要通过 DHCP 服务器分配 IP 地址&#xff0c;则需要跨网段发送 DHCP 报文 DHCP Rel…...

小迪安全110-tp框架,版本缺陷,不安全写法,路由访问,利用链

入口文件 前端页面显示文件 就是这串代码让我们看到前端的笑脸图 不用入口文件我们要访问这个文件就要按照开发手册的url访问模式 那就是index.php/index/index/index 对应的就是模块&#xff0c;控制器&#xff0c;操作&#xff0c;函数名 如果想要创建新模块&#xff0c;和操…...

Vanna:用检索增强生成(RAG)技术革新自然语言转SQL

引言&#xff1a;为什么我们需要更智能的SQL生成&#xff1f; 在数据驱动的业务环境中&#xff0c;SQL 仍然是数据分析的核心工具。然而&#xff0c;编写正确的 SQL 查询需要专业知识&#xff0c;而大型语言模型&#xff08;LLM&#xff09;直接生成的 SQL 往往存在**幻觉&…...

大语言模型应用和训练(人工智能)

RAG&#xff08;Retrieval Augmented Generation&#xff0c;检索增强生成&#xff09; 定义&#xff1a;是一种将外部知识检索与语言模型生成能力相结合的技术。在传统的大语言模型中&#xff0c;模型的知识是在预训练阶段学到的&#xff0c;可能存在知识过时或不完整的问题。…...

NLP高频面试题(三十五)——LLaMA / ChatGLM / BLOOM的区别

一、LLaMA 训练数据 LLaMA由Meta开发,拥有多个参数规模的版本:7B、13B、33B和65B。其中,较小的7B和13B版本采用了约1万亿tokens进行训练,而更大的33B和65B版本使用了约1.4万亿tokens进行训练。 模型结构特点 LLaMA采用与GPT类似的causal decoder-only Transformer结构,…...

【Python Cookbook】字符串和文本(五):递归下降分析器

目录 案例 目录 案例 字符串和文本&#xff08;一&#xff09;1.使用多个界定符分割字符串2.字符串开头或结尾匹配3.用 Shell 通配符匹配字符串4.字符串匹配和搜索5.字符串搜索和替换字符串和文本&#xff08;三&#xff09;11.删除字符串中不需要的字符12.审查清理文本字符串1…...

专为 零基础初学者 设计的最简前端学习路线,聚焦核心内容,避免过度扩展,帮你快速入门并建立信心!

第一阶段&#xff1a;HTML CSS&#xff08;2-3周&#xff09; 目标&#xff1a;能写出静态网页&#xff0c;理解盒子模型和布局。 HTML基础 常用标签&#xff1a;<div>, <p>, <img>, <a>, <ul>, <form> 语义化标签&#xff1a;<head…...

大模型-爬虫prompt

爬虫怎么写prompt 以下基于deepseek r1 总结&#xff1a; 以下是为大模型设计的结构化Prompt模板&#xff0c;用于生成专业级网络爬虫Python脚本。此Prompt包含技术约束、反检测策略和数据处理要求&#xff0c;可根据具体需求调整参数&#xff1a; 爬虫脚本生成Prompt模板1 …...

PyTorch深度实践:基于累积最大值的注意力机制设计与性能优化

引言&#xff1a;注意力机制的创新与挑战 在自然语言处理和序列建模中&#xff0c;注意力机制&#xff08;Attention&#xff09;是提升模型性能的关键技术。传统基于 softmax 的注意力机制虽然成熟&#xff0c;但在计算效率和长序列建模中存在局限。本文将介绍一种创新的注意…...

编程bug001:off by one (差一错误)

为什么看似简单的编码错误可能造成大灾难&#xff1f; Off-by-One Error&#xff08;简称OBOE&#xff09;&#xff0c;即由于边界条件处理不当&#xff0c;导致循环、计数或索引时多算一次或少算一次的错误。这是非常常见的编程bug类型&#xff0c;尤其在处理数组、字符串或范…...

JavaScript 中常见的鼠标事件及应用

JavaScript 中常见的鼠标事件及应用 在 JavaScript 中&#xff0c;鼠标事件是用户与网页进行交互的重要方式&#xff0c;通过监听这些事件&#xff0c;开发者可以实现各种交互效果&#xff0c;如点击、悬停、拖动等。 在 JavaScript 中&#xff0c;鼠标事件类型多样&#xff0…...

使用Expo框架开发APP——详细教程

在移动应用开发日益普及的今天&#xff0c;跨平台开发工具越来越受到开发者青睐。Expo 是基于 React Native 的一整套工具和服务&#xff0c;它能够大幅降低原生开发的门槛&#xff0c;让开发者只需关注业务逻辑和界面实现&#xff0c;而不用纠结于复杂的原生配置。本文将从零开…...

深入探究 Hive 中的 MAP 类型:特点、创建与应用

摘要 在大数据处理领域,Hive 作为一个基于 Hadoop 的数据仓库基础设施,提供了方便的数据存储和分析功能。Hive 中的 MAP 类型是一种强大的数据类型,它允许用户以键值对的形式存储和操作数据。本文将深入探讨 Hive 中 MAP 类型的特点,详细介绍如何创建含有 MAP 类型字段的表…...

前端开发工厂模式的优缺点是什么?

一、什么是工厂模式&#xff1f; 工厂模式属于创建型设计模式&#xff0c;核心思想是将对象的实例化过程封装到特定方法或类中&#xff0c;让客户端不需要直接通过new关键字创建对象。 举个例子&#xff1a;就像奶茶店不需要顾客自己调配饮品&#xff0c;而是通过"点单-…...

框架PasteForm实际开发案例,换个口味显示数据,支持echarts,只需要标记几个特性即可在管理端显示(2)

PasteForm框架的主要思想就是对Dto进行标记特性,然后管理端的页面就会以不一样的UI呈现 使用PasteForm框架开发,让你免去开发管理端的烦恼,你只需要专注于业务端和用户端! 在管理端中,如果说表格是基本的显示方式,那么图表chart就是一个锦上添花的体现! 如果一个项目拥…...

QEMU学习之路(5)— 从0到1构建Linux系统镜像

QEMU学习之路&#xff08;5&#xff09;— 从0到1构建Linux系统镜像 一、前言 参考&#xff1a;从内核到可启动镜像&#xff1a;0到1构建你的极简Linux系统 二、linux源码获取 安装编译依赖 sudo apt install -y build-essential libncurses-dev flex bison libssl-dev li…...

AI Agent设计模式一:Chain

概念 &#xff1a;线性任务流设计 ✅ 优点&#xff1a;逻辑清晰易调试&#xff0c;适合线性处理流程❌ 缺点&#xff1a;缺乏动态分支能力 from typing import TypedDictfrom langgraph.graph import StateGraph, END# 定义后续用到的一些变量 class CustomState(TypedDict):p…...

实操(进程状态,R/S/D/T/t/X/Z)Linux

1 R 状态并不直接代表进程在运行&#xff0c;而是该进程在运行队列中进行排队&#xff0c;由操作系统在内存维护的队列 #include <stdio.h> #include <unistd.h>int main() {while(1){printf("我在运行吗\n");sleep(1);}return 0; }查看状态&#xff08…...

T-SQL语言的自动化运维

T-SQL语言的自动化运维 引言 在现代IT环境中&#xff0c;自动化运维成为了提高效率、降低成本、提升稳定性的重要手段。数据库作为系统的重要组成部分&#xff0c;运维工作往往需要耗费大量的人力物力。T-SQL&#xff08;Transact-SQL&#xff09;作为Microsoft SQL Server的…...

Day06 分割编译与中断处理

文章目录 1. 例程harib03c&#xff08;c源文件分割并整理makefile文件&#xff09;2. 例程harib03c&#xff08;用于描述段的信息&#xff09;3. 例程harib03d&#xff08;初始化PIC&#xff09;4. 例程harib03e&#xff08;中断处理程序&#xff09; 1. 例程harib03c&#xff…...

数字化三维实训室:无穿戴动作捕捉技术如何赋能体育与舞蹈

在高校体育与舞蹈教学中&#xff0c;精准的动作训练至关重要。传统训练方式依赖教练的肉眼观察与手动记录&#xff0c;存在效率低下、误差较大的情况。尤其在快速连续动作或复杂肢体形态的捕捉中&#xff0c;人工判读易受主观经验限制&#xff0c;难以实现标准化评估。面对传统…...

6. RabbitMQ 死信队列的详细操作编写

6. RabbitMQ 死信队列的详细操作编写 文章目录 6. RabbitMQ 死信队列的详细操作编写1. 死信的概念2. 消息 TTL 过期(触发死信队列)3. 队列超过队列的最大长度(触发死信队列)4. 消息被拒(触发死信队列)5. 最后&#xff1a; 1. 死信的概念 先从概念上解释上搞清楚这个定义&#…...

AI浪潮下,新手短视频制作的破局之道

AI浪潮下&#xff0c;新手短视频制作的破局之道 引言&#xff1a;短视频新时代&#xff0c;AI 带来的机遇与挑战 在当下这个信息飞速流转的时代&#xff0c;短视频已然成为了人们生活中不可或缺的一部分。无论是在通勤路上、午休间隙&#xff0c;还是茶余饭后&#xff0c;打开…...

合肥SMT贴片制造工艺全解析

内容概要 作为电子制造领域的核心工艺&#xff0c;SMT&#xff08;表面贴装技术&#xff09;在合肥地区电子产业链中占据重要地位。本解析以合肥本地化生产场景为基础&#xff0c;系统梳理从焊膏印刷到成品检测的全流程工艺框架。具体而言&#xff0c;制造流程涵盖四大核心阶段…...

ctfshow VIP题目限免 协议头信息泄露

根据提示是协议头信息泄露&#xff0c;那就我们抓个包&#xff0c;抓包才能看到请求体响应体里的协议头啊&#xff0c;抓包之后在响应包里发现了 flag...

【国产工具链发展,生态链分析,TSMaster VS Zcanpro的技术对比】

黎明篇&#xff1a;国产汽车测试工具链的崛起、差距与未来 副标题&#xff1a; 从跟随到超越&#xff0c;中国技术如何重塑全球研发体系 一、国产工具链的崛起逻辑 政策驱动&#xff1a;信创战略与供应链安全需求 国家“十四五”规划明确提出支持关键领域技术自主化&#xff0…...

Linux线程同步与互斥:【线程互斥】【线程同步】【线程池】

目录 一.线程互斥 1.1相关概念 1.2互斥量 为什么会出现负数&#xff1f;&#xff1f; 互斥量的接口 问题&#xff1a; 1.3互斥量实现原理探究 1.4互斥量封装 二.线程同步 2.1条件变量 2.2同步概念与竞态条件 2.3接口 2.4生产者消费者模型 优点 2.5基于BlockingQueue的…...

网络安全基础知识总结

什么是网络安全 采取必要措施&#xff0c;来防范对网络的攻击&#xff0c;侵入&#xff0c;干扰&#xff0c;破坏和非法使用&#xff0c;以及防范一些意外事故&#xff0c;使得网络处于稳定可靠运行的状态&#xff0c;保障网络数据的完整性、保密性、可用性的能力(CIA)。 举例…...

请求被中止: 未能创建 SSL/TLS 安全通道。

需要安装vs2019社区办&#xff0c;下载VisualStudioSetup.exe后&#xff0c;报无法从"https://aka,ms/vs/16/release/channel"下载通道清单错误&#xff0c;接着打开%temp%目录下的最新日志&#xff0c;发现日志里报&#xff1a; [27d4:000f][2025-04-04T21:15:43] …...

FPGA学习(四)——状态机重写LED流水灯并仿真

FPGA学习&#xff08;四&#xff09;——状态机重写LED流水灯并仿真 目录 FPGA学习&#xff08;四&#xff09;——状态机重写LED流水灯并仿真一、状态机编程思想1、状态机要素2、状态迁移图3、状态机写法 二、LED流水灯仿真实现1、代码实现2、modesim仿真 三、实现效果1、仿真…...

spark 集群

hadoop客户端环境准备 找到资料包路径下的Windows依赖文件夹&#xff0c;拷贝hadoop-3.1.0到非中文路径&#xff08;比如d:\hadoop-3.1.0&#xff09; ① 打开环境变量 ② 在下方系统变量中新建HADOOP_HOME环境变量,值就是保存hadoop的目录。 效果如下&#xff1a; ③ 配置P…...

leetcode117 填充每个节点的下一个右侧节点指针2

LeetCode 116 和 117 都是关于填充二叉树节点的 next 指针的问题&#xff0c;但它们的区别在于 树的类型 不同&#xff0c;117与 116 题类似&#xff0c;但给定的树是 普通二叉树&#xff08;不一定完全填充&#xff09;&#xff0c;即某些节点可能缺少左或右子节点。 树的结构…...

Java全栈面试宝典:线程安全机制与Spring Boot核心原理深度解析

目录 一、Java线程安全核心原理 &#x1f525; 问题1&#xff1a;线程安全的三要素与解决方案 线程安全风险模型 线程安全三要素 synchronized解决方案 &#x1f525; 问题2&#xff1a;synchronized底层实现全解析 对象内存布局 Mark Word结构&#xff08;64位系统&…...

CCF GESP C++编程 三级认证真题 2025年3月

C 三级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 D B A A B A C A C D D D B D C 1 单选题 第 1 题 Base64 编码将每3字节的输入数据编码为 4 字节的输出数据。如果输入数据长度不是 3 的倍数&#xff0c;会用 号填充。在Base64编码中&#xff0c;如果…...

人工智能爬虫导致维基共享资源带宽需求激增 50%

2025 年 4 月 1 日&#xff0c;维基媒体基金会在博文中表示&#xff0c;自 2024 年 1 月以来&#xff0c;维基共享资源下载多媒体的带宽消耗激增 50%&#xff0c;这一变化趋势主要由用于 AI 训练数据集的网络爬虫导致。以下是具体分析1&#xff1a; 爬虫流量特征与数据存储模式…...

方案精读:华为数据治理之旅【全文阅读】

本文介绍了华为的数据管理工作,包括数据治理、数据质量建设、数据管理工作两阶段历程、数据管理组织和数据管理工作思考。华为以业务数字化为前提,以数据入湖为基础,重点建设数据中台,提高数据质量和管理能力,以支撑公司数字化转型。 重点内容: 1. 数据治理:华为进行数…...

Tradingview 策略分享 - SSL 混合和 CE 交易策略

交易策略&#xff5c;https://v.wkbrowser.com/s/e9DIvLGvYRo/&#xff5c;复制浏览器打开 各位交易员大家好 在本文中&#xff0c;我将分享一个简单的日内交易策略。我将 SSL 混合指标与 CE EXIT 相结合&#xff0c;以创建一个高效且有利可图的设置。此策略简单而强大&#x…...

华为OD机试真题——投篮大赛(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025Q1 A卷 100分 题型 本文涵盖详细解题思路、代码注释、讲解、复杂的分析以及测试用例&#xff1b; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式&#xff01; 华为OD机试A卷真题《投篮大赛》&#xff1a; 题目名称&#xff1a;投篮大赛 知识点&am…...

rcore day2

目前常见的操作系统内核都是基于 C 语言的&#xff0c;为何要推荐 Rust 语言&#xff1f; C 语言的指针灵活且易于使用&#xff0c;但不保证安全性&#xff0c;且缺x少有效的并发支持。这导致内存和并发漏洞成为当前基于 C 语言的主流操作系统的噩梦。Rust 语言具有与 C 一样的…...

【MATLAB定位例程】TDOA(到达时间差)的chan-tylor,三维环境,附完整代码

该代码实现了基于三维空间的动态目标TDOA定位,结合了Chan算法(解析解)与Taylor级数展开法(迭代优化)的双重优势。 文章目录 运行结果MATLAB代码代码讲解代码功能概述核心算法原理代码结构解析可视化与结果分析运行结果 定位示意图: 三轴状态曲线: 三轴误差曲线: MA…...

LLM面试题六

NLP方向CRF算法面试题 什么是CRF?CRF的主要思想是什么&#xff1f; 设X与Y是随机变量&#xff0c;P(Y | X)是给定条件X的条件下Y的条件概率分布&#xff0c;若随机变量Y构成一个由无向图G(V,E)表示的马尔科夫随机场。则称条件概率分布P(X | Y)为条件随机场。CRF的主要思想统计…...

FPGA(四)——状态机

FPGA(四)——状态机 文章目录 FPGA(四)——状态机一、状态机编程思想二、LED流水灯仿真实验三、实现效果四、CPLD和FPGA芯片主要技术区别五、hdlbitsFPGA——组合逻辑学习1、创建一个D触发器2、简单状态转换3、4位移位寄存器4、计数器1-125、边缘捕获寄存器 一、状态机编程思想…...

AI 浪潮下企业身份管理:特点凸显,安全挑战升级

“在 AI 时代的浪潮中&#xff0c;企业身份管理是安全之锚&#xff0c;精准把握权限边界&#xff0c;方能抵御身份安全的暗流。” 在人工智能迅猛发展的当下&#xff0c;企业身份管理呈现出诸多新特点&#xff0c;同时也面临着前所未有的身份安全挑战。要理解这些&#xff0c;我…...

OBS 录屏软件 for Mac 视频录制

OBS 录屏软件 for Mac 视频录制 文章目录 OBS 录屏软件 for Mac 视频录制一、介绍二、效果三、下载 一、介绍 Open Broadcaster Software for mac版&#xff0c;OBS 有多种功能并广泛使用在视频采集&#xff0c;直播等领域。而且该软件功能全面&#xff0c;专业强大&#xff0…...