探索Linux/Unix 系统中进程与文件的深层关系
在 Linux 和 Unix 系统中,“一切皆文件” 的设计哲学贯穿始终。这种理念不仅简化了系统的操作接口,也赋予了用户和开发者极大的灵活性。文件、目录、设备、网络套接字,甚至进程本身,都可以通过文件系统的形式进行访问和操作。其中,进程作为系统的核心活动单元,虽然本质上是动态的执行实体,却被巧妙地抽象为一种“文件”的表现形式。通过 /proc
伪文件系统,Linux 将进程的运行时信息以文件的形式暴露出来,使得用户可以像操作普通文件一样查看和操控进程。这种设计既体现了 Unix 的简洁性,也展示了其强大的可扩展性。
本文将深入探讨进程在 Linux/Unix 系统中如何被视为一种文件,分析其与普通文件的异同,详细介绍 /proc
文件系统的作用,并探讨如何利用文件操作管理进程。
1. 进程的文件表示:从抽象到具象
在 Linux 系统中,进程并不是传统意义上的静态文件,而是程序执行的动态实例。然而,为了让用户和系统管理员能够方便地访问进程的相关信息,Linux 引入了 /proc
伪文件系统。这是一个虚拟的文件系统,不占用实际的磁盘空间,而是由内核在内存中动态生成内容。
1.1 /proc
文件系统的结构
每个正在运行的进程在 /proc
目录下都有一个以进程 ID(PID)命名的子目录,例如 /proc/1234/
,其中 1234
是某个进程的 PID。这些子目录中包含了大量文件和子目录,提供了进程的运行时信息。以下是一些常见的文件及其功能:
-
/proc/PID/cmdline
:记录了启动该进程时使用的完整命令行参数。内容以空字符(\0
)分隔,可以用cat
命令查看。例如:cat /proc/1234/cmdline
输出可能是
bash\0-c\0echo Hello
,表示进程是由bash -c "echo Hello"
启动的。 -
/proc/PID/environ
:包含进程的环境变量,以键值对的形式存储,同样以空字符分隔。例如:cat /proc/1234/environ | tr '\0' '\n'
这会将环境变量分行显示,如
PATH=/usr/bin
、HOME=/home/user
。 -
/proc/PID/status
:提供进程的详细状态信息,包括进程名称、状态(运行、睡眠等)、内存使用量、用户 ID 等。例如:cat /proc/1234/status
输出中可能包含
State: S (sleeping)
或VmSize: 10240 kB
等字段。 -
/proc/PID/fd/
:一个子目录,列出了进程当前打开的所有文件描述符(FD)。每个文件描述符以符号链接的形式存在,指向实际的文件、套接字或设备。例如:ls -l /proc/1234/fd/
输出可能显示
lrwx------ 3 -> /dev/tty
或lrwx------ 4 -> socket:[12345]
。
1.2 动态生成的特性
与存储在磁盘上的普通文件不同,/proc
下的文件是动态生成的。它们的内容由内核根据进程的实时状态实时填充。这意味着,当进程退出时,对应的 /proc/PID/
目录会自动消失,而当新进程启动时,新的目录会即时创建。这种特性使得 /proc
文件系统成为观察和管理进程的强大工具。
2. 进程打开的文件:文件描述符的窗口
进程在运行时通常需要与外部资源交互,例如读取配置文件、写入日志或通过网络通信。这些交互都依赖于文件描述符(file descriptor, FD),它是进程与文件系统资源之间的桥梁。在 Linux 中,文件描述符不仅限于普通文件,还包括设备文件、管道、套接字等。
2.1 查看进程的文件描述符
通过 /proc/PID/fd/
目录,用户可以查看进程当前打开的所有文件描述符。例如,假设有一个进程(PID 为 1234)正在运行,我们可以执行以下命令:
ls -l /proc/1234/fd/
输出可能如下:
lrwx------ 0 -> /dev/null
lrwx------ 1 -> /dev/null
lrwx------ 2 -> /dev/null
lrwx------ 3 -> /tmp/output.log
lrwx------ 4 -> socket:[56789]
在这里:
- 文件描述符 0、1、2 分别对应标准输入(stdin)、标准输出(stdout)和标准错误(stderr),在此例中被重定向到
/dev/null
。 - 文件描述符 3 指向一个日志文件
/tmp/output.log
。 - 文件描述符 4 是一个网络套接字,表明进程正在进行网络通信。
2.2 文件描述符的动态性
文件描述符是进程运行时的临时资源。当进程打开一个新文件时,内核会分配一个新的文件描述符;当文件关闭或进程退出时,这些描述符会被释放。通过 /proc/PID/fd/
,我们可以实时监控这些资源的使用情况,这对于调试或排查资源泄漏问题尤为有用。
2.3 扩展应用:lsof 工具
除了直接访问 /proc/PID/fd/
,Linux 还提供了 lsof
工具,可以更方便地列出进程打开的文件。例如:
lsof -p 1234
这会显示进程 1234 的所有文件描述符及其详细信息,包括文件路径、类型和大小。lsof
的底层实现也依赖于 /proc
文件系统,体现了“一切皆文件”理念的广泛应用。
3. 进程与文件的异同:深入对比
尽管进程在 /proc
中以文件的形式呈现,但它与普通文件在本质和行为上存在显著差异。以下是一个详细的对比表格,辅以分析:
特性 | 普通文件 | 进程文件(/proc/PID/ ) |
---|---|---|
存储位置 | 存储在磁盘或其他持久化介质上 | 不存储在磁盘上,由内核动态生成 |
可读性 | 可读(取决于权限) | 部分可读(需权限,且内容格式化) |
可修改性 | 可修改(取决于权限) | 部分可修改(如 oom_score_adj ) |
生命周期 | 手动创建和删除 | 与进程生命周期绑定,退出后自动消失 |
内容来源 | 用户或程序写入 | 内核根据进程状态实时生成 |
删除影响 | 可删除,不影响其他进程 | 删除某些文件可能影响进程行为(如关闭 FD) |
3.1 存储与动态性
普通文件是静态的,其内容由用户或程序写入并持久化存储。而 /proc/PID/
下的文件则是动态的,其内容由内核根据进程的实时状态生成。例如,/proc/PID/stat
的内容会随着进程的 CPU 使用率或内存占用变化而更新。
3.2 可读与可写
普通文件的内容可以被自由读取和修改(在权限允许的情况下),而 /proc
中的文件虽然大多可读,但可写性有限。例如,/proc/PID/cmdline
是只读的,而 /proc/PID/oom_score_adj
允许写入以调整进程的 OOM(Out-Of-Memory)杀进程优先级。
3.3 生命周期的差异
普通文件的生命周期由用户控制,可以长期存在于文件系统中。而进程文件完全依赖于进程的生命周期。当进程终止时,/proc/PID/
目录会立即消失,这种临时性是其与普通文件的根本区别。
4. 如何利用文件操作管理进程
既然进程在 Linux 中被抽象为文件,我们就可以利用文件操作的工具和方法来管理和控制进程。这种方法不仅直观,而且在某些场景下非常高效。以下是一些具体示例和应用:
4.1 获取进程信息
通过读取 /proc/PID/
下的文件,我们可以轻松获取进程的详细信息。例如:
cat /proc/1234/status
输出可能包含以下内容:
Name: bash
State: S (sleeping)
Pid: 1234
PPid: 5678
VmSize: 4096 kB
这些信息对于监控进程状态、排查问题或编写脚本非常有用。
4.2 关闭进程打开的文件
在某些情况下,我们可能需要强制关闭进程打开的文件描述符。例如,如果一个进程占用了某个文件句柄,导致资源无法释放,可以尝试:
rm /proc/1234/fd/5
这会删除文件描述符 5 的符号链接,可能会导致该描述符被关闭。不过需要注意的是,这种操作可能引发未定义行为(如进程崩溃),应谨慎使用。
4.3 调整进程参数
某些 /proc/PID/
下的文件允许写入,以修改进程的行为。一个典型的例子是调整 OOM 评分:
echo -1000 > /proc/1234/oom_score_adj
在 Linux 中,OOM 杀进程机制会根据进程的 oom_score
(范围通常为 0 到 1000)决定哪些进程在内存不足时被终止。通过将 oom_score_adj
设置为 -1000,可以大幅降低进程被杀死的概率(需要 root 权限)。
4.4 脚本化管理
利用 shell 脚本,我们可以批量管理进程。例如,以下脚本可以列出所有占用超过 1GB 内存的进程:
!/bin/bash
for pid in /proc/[0-9]*; doif [ -f "$pid/status" ]; thenvm_size=$(grep "VmSize" "$pid/status" | awk '{print $2}')if [ "$vm_size" -gt 1048576 ]; then # 1GB = 1048576 kBecho "PID: $(basename $pid), VmSize: $vm_size kB"fifi
done
这种脚本展示了如何结合 /proc
文件系统和文件操作工具实现自动化管理。
4.5 高级应用:ptrace 与调试
/proc/PID/mem
文件允许直接访问进程的内存空间(需适当权限),常用于调试工具(如 gdb
)或安全分析。通过结合 ptrace
系统调用和 /proc
,开发者可以实现更复杂的进程控制,例如注入代码或修改运行时状态。
5. 背后的设计哲学与实际意义
5.1 “一切皆文件”的哲学
Linux 的“一切皆文件”理念源于 Unix 的设计目标:提供统一的操作接口。通过将进程抽象为文件,Linux 不仅简化了用户与系统的交互,还让现有的文件操作工具(如 cat
、echo
)能够无缝应用于进程管理。这种设计的优雅性在于,它将复杂的系统资源抽象为开发者熟悉的接口,降低了学习和使用的门槛。
5.2 实际应用场景
- 系统监控:通过读取
/proc
,工具如top
、htop
和ps
可以实时展示进程状态。 - 性能调优:调整
/proc/PID/
中的参数(如调度优先级或内存限制)可以优化系统性能。 - 故障排查:分析
/proc/PID/fd/
可以快速定位文件句柄泄漏或网络连接问题。
5.3 局限性与注意事项
尽管 /proc
提供了强大的功能,但它也有局限性。例如,某些文件的读写需要 root 权限,且直接修改可能导致不可预期的后果。此外,/proc
的具体实现可能因内核版本而异,跨系统移植时需注意兼容性。
结论
在 Linux/Unix 系统中,进程确实可以被视为一种文件,但它与普通文件有着本质上的不同。通过 /proc
伪文件系统,进程的运行时信息被巧妙地抽象为文件的形式,用户可以像操作普通文件一样查看和管理进程。这种设计不仅体现了“一切皆文件”的哲学,也为系统管理员和开发者提供了强大的工具。
从读取进程状态到调整 OOM 评分,从监控文件描述符到编写自动化脚本,/proc
文件系统将进程管理的复杂性降到最低,同时保持了高度的灵活性。无论是日常运维还是深入开发,理解进程与文件的关系都能帮助我们更好地掌握 Linux 系统的精髓。随着技术的不断演进,这一设计理念仍将在未来的操作系统中发挥重要作用。
相关文章:
探索Linux/Unix 系统中进程与文件的深层关系
在 Linux 和 Unix 系统中,“一切皆文件” 的设计哲学贯穿始终。这种理念不仅简化了系统的操作接口,也赋予了用户和开发者极大的灵活性。文件、目录、设备、网络套接字,甚至进程本身,都可以通过文件系统的形式进行访问和操作。其中…...
AI:线性代数之矩阵
从0到1吃透线性代数矩阵:码农必修的数学武器库 ⚔️🔥 🧩 矩阵基础概念(程序员视角) 在人工智能时代,矩阵早已突破数学课本的边界,成为程序员手中的瑞士军刀🔪。TensorFlow底层用矩阵实现张量计算⚡,OpenCV依赖矩阵完成图像卷积🌌,Spark MLlib通过矩阵分解进行…...
object类
equals() 方法 equals() 方法的原始定义是比较两个对象的内存地址是否相同,但在实际使用中,很多类都会重写这个方法,使其用于比较对象的内容是否相同。例如 String 类就重写了 equals() 方法,用于比较字符串的内容。 String str…...
MySQL表的使用(4)
首先回顾一下之前所学的增删查改,这些覆盖了平时使用的80% 我们上节课中学习到了MySQL的约束 其中Primary key 是主键约束,我们今天要学习的是外键约束 插入一个表 外键约束 父表 子表 这条记录中classid为5时候,不能插入; 删除…...
国产海光 DCU 资源监控脚本 + Promethues+grafana 深度解析
在当今数字化时代,对于服务器资源的高效监控与管理愈发重要。特别是在使用国产海光 DCU 的场景下,如何精准掌握其资源使用情况,成为了众多技术人员关注的焦点。本文将详细介绍一款国产海光 DCU 资源监控脚本,以及它与 Prometheus 和 Grafana 的结合使用,助力大家实现对 DC…...
视觉slam框架从理论到实践-第一节绪论
从opencv的基础实现学习完毕后,接下来依照视觉slam框架从理论到实践(第二版)的路线进行学习,主要以学习笔记的形式进行要点记录。 目录 1.数据里程计 2.后端优化 3.回环检测 4.建图 在视觉SLAM 中整体作业流程可分为࿱…...
基于若依的ruoyi-vue-plus的nbmade-boot在线表单的设计(二)后端方面的设计
希望大家一起能参与我的新开源项目nbmade-boot: 宁波智能制造低代码实训平台 主要目标是类似设计jeecgboot那样的online表单功能,因为online本身没有开源这部分代码,而我设计这个是完全开源的,所以希望大家支持支持,开源不容易。 今天主要是讲后端部门。 1、FormControl.ja…...
mapbox V3 新特性,加载风粒子动画
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️raster-particle 栅格粒子样式图层 api…...
开发一个答题pk小程序的大致成本是多少
答题 PK 小程序通常指的是一种允许用户之间进行实时或异步答题竞赛的应用程序,可能结合PK答题、积分系统、排行榜等功能。 一、首先,确定答题 PK 小程序的基本功能模块。这可能包括用户注册登录、题库管理、题目类型(单选、多选、判断等&am…...
深入探索如何压缩 WebAssembly
一、初始体积:默认 Release 构建 我们从最基础的构建开始,不开启调试符号,仅使用默认的 release 模式: $ wc -c pkg/wasm_game_of_life_bg.wasm 29410 pkg/wasm_game_of_life_bg.wasm这是我们优化的起点 —— 29,410 字节。 二…...
系统性能优化总结与思考-第一部分
1.C代码优化策略总结 编译器方面:用好的编译器并用好编译器(支持C11的编译器,IntelC(速度最快)GNU的C编译器GCC/G(非常符合标准),Visual C(性能折中)&#x…...
Qt6文档阅读笔记-Simple Http Server解析
此篇博文是利用Qt6如何创建一个简单的HTTP服务。 此例展示了如何使用QHttpServer类建立服务端。服务端通过QTcpServer的bind()函数监听tcp端口,并且使用route()函数增加不同URL的处理。 QSslConfiguration conf QSslConfiguration::defaultConfiguration();const a…...
深度解析Redis过期字段清理机制:从源码到集群化实践 (二)
本文紧跟 上一篇 深度解析Redis过期字段清理机制:从源码到集群化实践 (一) 可以从redis合集中查看 八、Redis内核机制深度解析 8.1 Lua脚本执行引擎原理 Lua脚本执行流程图技术方案 执行全流程解析: #mermaid-svg-X51Gno…...
【密码学——基础理论与应用】李子臣编著 第六章 祖冲之序列密码 课后习题
免责声明 这里都是自己搓或者手写的。 里面不少题目感觉有问题或者我的理解有偏颇,请大佬批评指正! 不带思考抄作业的请自动退出,我的并非全对,仅仅提供思维! 题目 逐题解析 6.1 直接看表得 0x18 0xAD 0xF8 0x25 …...
LFM调制信号分类与检测识别
LFM调制信号分类与检测识别 LFM调制信号分类识别AlexNet网络识别InceptionV3、ResNet-18、ResNet-50网络识别 LFM调制信号检测识别 LFM调制信号分类识别 支持识别LFM信号、间歇采样干扰(ISRJ)、灵巧噪声干扰(SNJ)、扫频干扰(SJ)、瞄准干扰(AJ)、阻塞干扰(BJ)、密集假目标干扰(…...
mac中的zip文件压缩与压缩文件中指定目录删除
问题 在使用mac的图形界面压缩文件后,往往那个压缩文件中带有__MACOSX文件,但是,这个文件夹又是我们不需要的目录,所有,需要对mac图形化界面压缩后的文件目录进行删除,改如何做? 检查压缩文件…...
docker 多主机容器组网
一、服务器A 1、初始化Swarm集群(管理节点) docker swarm init --advertise-addr 主节点ip 2、获取工作节点加入Swarm集群所需的Token 和完整命令 docker swarm join-token worker 3、创建Overlay网络 docker network create -d overlay --subnet…...
MAC Mini M4 上测试Detectron2 图像识别库
断断续续地做图像识别的应用,使用过各种图像识别算法,一开始使用openCV 做教室学生计数的程序。以后又使用YOLO 做医学伤口检测程序。最近,开始使用meta 公司的Detectron2.打算做OCR 文档结构分析 Detectron2 的开发者是 Meta 的 Facebook AI…...
AETTA: Label-Free Accuracy Estimation for Test-Time Adaptation
1. Motivation: 利用TTA(test time adaptation)来将在训练数据上的原始预训练的模型适应到新的未标注的测试据,传统的很多方法都做了一些不现实的假设,比如需要借助标注的数据/重新训练模型,为了解决这个问题,本论文提出了AETTA的方法,不需要任何的标注,借助TTA来实现…...
如何在本地使用Ollama运行 Hugging Face 模型
你是否曾经在 Hugging Face 上发现了一个超棒的模型,然后幻想着能在自己的笔记本电脑上离线运行它,还能通过一个清爽的 API 让你的应用轻松访问? 别担心,你不是一个人!我们很多人都曾在 Hugging Face 上发现过令人惊叹…...
AI幻觉的生成原理与应对指南:六大中文模型横向解析
先简单说一下AI幻觉的生成原理,核心源于模型的概率预测本质。大语言模型通过分析海量文本数据的统计规律生成内容,其本质是选择「概率最高」而非「事实正确」的词汇组合。训练数据中的知识盲区(如时效性信息缺失、专业领域覆盖不足࿰…...
Oracle WITH 子句(也称为 公共表表达式,Common Table Expression,CTE)
在 Oracle 中,WITH 子句(也称为 公共表表达式,Common Table Expression,CTE)用于定义一个临时的命名子查询,可以在后续的 SQL 语句中多次引用。它提高了复杂查询的可读性和可维护性,尤其适合需要…...
BSD、Solaris、Unix 的文件系统: UFS/UFS2、ZFS 及其他存储技术
文件系统构成了任何操作系统不可或缺的一部分。大多数操作系统倾向于使用自己的原生文件系统格式,这些格式在其他环境中可能受到限制或不可用。Unix 系列操作系统及其变体,如 BSD 和 Solaris,传统上依赖于 UFS,后来升级到 UFS2。随…...
杭电oj(1000,1001,1089-1096,2000-2007)题解
目录 编辑 1000 题目 思路 代码 1001 题目 思路 代码 1089 题目 思路 代码 1090 题目 思路 代码 1091 题目 思路 代码 1092 题目 思路 代码 1093 题目 思路 代码 1094 题目 思路 代码 1095 题目 思路 代码 1096 题目 思路 代码 20…...
css 练习01
效果展示 源码 <template><div class"container"><div class"search"></div><div class"content"><div class"left"><div class"info"><div class"layout-list" v…...
[reinforcement learning] 是什么 | 应用场景 | Andrew Barto and Richard Sutton
目录 什么是强化学习? 强化学习的应用场景 广告和推荐 对话系统 强化学习的主流算法 纽约时报:Turing Award Goes to 2 Pioneers of Artificial Intelligence wiki 资料混合:youtube, wiki, github 今天下午上课刷到了不少࿰…...
【VsCode】设置文件自动保存
目录 一、前言 二、操作步骤 一、前言 VSCode中开启自动保存功能可以通过访问设置、修改settings.json文件、使用自动保存延迟功能来实现。这些方法能有效提升编程效率、避免数据丢失、实时同步更改。 二、操作步骤 在 Visual Studio Code (VS Code) 中设置自动保存功能非…...
16:00开始面试,16:08就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到4月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
深入理解 PyTorch:从入门到精通的深度学习框架
📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4-turbo模型生成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认其准…...
子串-滑动窗口的最大值
滑动窗口的最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗 口从数组的最左侧移动到数组的最右侧。你只可以看 到在滑动窗口内的 k 个数字。滑动窗口每次只向右移 动一位。 返回 滑动窗口中的最大值 。输入:整型数组,最大值k 输出&am…...
老龄化遇上数字化丨适老化改造:操作做“减法”,服务做“加法”
当中国 60 岁以上人口突破 2.8 亿,银发浪潮与数字时代的碰撞催生了一道必答题:如何让技术红利真正惠及老年人?传统适老化改造常陷入 "技术崇拜" 误区。 智能设备功能复杂如 "科技迷宫",操作界面充满 "数…...
【计算机网络】网络基础(协议,网络传输流程、Mac/IP地址 、端口号)
目录 1.协议简述2.网络分层结构2.1 软件分层2.2 网络分层为什么? 是什么?OSI七层模型TCP/IP五层(或四层)结构 3. 网络与操作系统之间的关系4.从语言角度理解协议5.网络如何传输局域网通信(同一网段) 不同网…...
【Java编程】【计算机视觉】一种简单的图片加/解密算法
by Li y.c. 一、内容简介 本文介绍一种简单的图片加/解密算法,算法的基本原理十分简单,即逐个(逐行、逐列)地获取图片的像素点颜色值,对其进行一些简单的算数运算操作进行加密,解密过程则相应地为加密运算…...
61.评论日记
老人摔倒无人扶最终死亡,家属将路人告上法庭,法院这样宣判!_哔哩哔哩_bilibili 2025年4月14日16:01:25...
每日一题——云服务计费问题
云服务计费问题(哈希表 排序)| 附详细 C源码解析 一、题目描述二、输入描述三、输出描述四、样例输入输出输入示例:输出示例:说明: 五、解题思路分析六、C实现源码详解(完整)七、复杂度分析 一…...
android-根据java文件一键生成dex文件脚本
安装7z命令 7-Zip官方下载网址 生成dex脚本文件 echo off setlocal enabledelayedexpansion:: 获取当前日期和时间 for /f "tokens2 delims" %%i in ("wmic os get localdatetime /value | findstr LocalDateTime") do set datetime%%i:: 提取年、月、日…...
OpenCV直方图均衡化全面解析:从灰度到彩色图像的增强技术
目录 一、直方图均衡化基础:原理与核心思想 二、彩色图像的直方图均衡化:挑战与解决方案 三、进阶技巧与注意事项 四、应用场景与典型案 一、直方图均衡化基础:原理与核心思想 1. 直方图的本质与作用 直方图是图像像素强度分布的统计图表…...
Node.js技术原理分析系列7——Node.js模块加载方式分析
Node.js 是一个开源的、跨平台的JavaScript运行时环境,它允许开发者在服务器端运行JavaScript代码。Node.js 是基于Chrome V8引擎构建的,专为高性能、高并发的网络应用而设计,广泛应用于构建服务器端应用程序、网络应用、命令行工具等。 本系…...
BFD:网络链路检测与联动配置全攻略
目录 BFD简介 BFD会话建立方式和检测机制 BFD会话建立过程 BFD工作流程 联动功能 BFD与OSPF联动配置需求 BFD与OSPF联动配置实现 BFD与VRRP联动配置需求 BFD与VRRP联动配置实现 单臂回声 BFD默认参数及调整方法 BFD简介 一种全网统一、检测迅速、监控网络中链…...
预防WIFI攻击,保证网络安全
文章总结(帮你们节约时间) WiFi协议存在多种安全漏洞,从去认证攻击到KRACK和PMKID攻击,这些都源于协议设计中的历史遗留问题。ESP32S3微控制器结合Arduino环境,成为强大的WiFi安全研究平台,可用于网络扫描…...
循环神经网络 - 门控循环单元网络
为了解决循环神经网络在学习过程中的长程依赖问题,即梯度消失或爆炸问题,一种非常好的解决方案是在简单循环网络的基础上引入门控机制来控制信息的累积速度,包括有选择地加入新的信息,并有选择地遗忘之前累积的信息。这一类网络可…...
Java 正则表达式综合实战:URL 匹配与源码解析
在 Web 应用开发中,我们经常需要对 URL 进行格式验证。今天我们结合 Java 的 Pattern 和 Matcher 类,深入理解正则表达式在实际应用中的强大功能,并剖析一段实际的 Java 示例源码。 package com.RegExpInfo;import java.util.regex.Matcher; …...
TCPIP详解 卷1协议 六 DHCP和自动配置
6.1——DHCP和自动配置 为了使用 TCP/IP 协议族,每台主机和路由器需要一定的配置信息。基本上采用3种方法:手工获得信息;通过一个系统获得使用的网络服务;使用某种算法自动确定。 拥有一个IP 地址和子网掩码,以及 DN…...
面试宝典(C++基础)-01
文章目录 1. C++基础1.1 C++特点1.2 说说C语言和C++的区别1.3 说说 C++中 struct 和 class 的区别1.4 include头文件的顺序以及双引号""和尖括号<>的区别1.5 说说C++结构体和C结构体的区别1.6 导入C函数的关键字是什么,C++编译时和C有什么不同?1.7 C++从代码…...
【笔记ing】AI大模型-04逻辑回归模型
一个神经网络结构,其中的一个神经网络层,本质就是一个逻辑回归模型 深度神经网络的本质就是多层逻辑回归模型互相连接或采用一定的特殊连接的方式连接在一起构成的。其中每一个层本质就是一个逻辑回归模型。 逻辑回归模型基本原理 逻辑回归࿰…...
【Android】常用参数实践 用户界面UI 布局文件XML
本文将系统总结 Android XML 布局的通用参数和常用布局类型的专属规则 一、通用布局参数 这些参数适用于所有 View 和 ViewGroup,是布局设计的基石。 1. 尺寸控制 android:layout_width 与 android:layout_height 定义视图的宽度和高度,可选值…...
音乐产业新玩法:NFTs如何颠覆传统与挑战未来?
音乐产业新玩法:NFTs如何颠覆传统与挑战未来? 近年来,NFT(Non-Fungible Token,非同质化代币)像一颗新星,迅速在数字艺术、游戏等领域掀起了革命。而在音乐产业,NFT不仅是一种数字所…...
测试基础笔记第三天
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 ⼀、缺陷介绍定义:软件中使⽤中任何问题都为缺陷,简称:bug 二、缺陷编写三、注册模块测试点练习 ⼀、缺陷介绍 定义:…...
HTML5 Web 存储:超越 Cookie 的本地存储新选择
一、引言 在当今的 Web 开发领域,对于用户数据的本地存储需求日益增长。HTML5 带来了一种比传统 cookie 更强大、更安全、更高效的本地存储方式 ——Web 存储。本文将深入探讨 HTML5 Web 存储的相关知识,包括其基本概念、浏览器支持情况、localStorage …...
基于 DB、EAST、SAST 的文本检测算法详解及应用综述
摘要 近年来,随着深度学习在计算机视觉领域的广泛应用,自然场景文字检测技术取得了飞速发展。针对复杂背景、任意形状、多角度文本等问题,学术界和工业界陆续提出了 DB、EAST、SAST 等多种算法。本文详细介绍了这几种主流文本检测方法的原理…...