[c语言日寄]免费文档生成器——Doxygen在c语言程序中的使用
【作者主页】siy2333
【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是进阶开发者,这里都能满足你的需求!
【食用方法】1.根据题目自行尝试 2.查看基础思路完善题解 3.学习拓展算法
【Gitee链接】资源保存在我的Gitee仓库:https://gitee.com/siy2333/study
文章目录
- 前言
- 题目引入
- 知识点分析
- Doxygen简介
- Doxygen的安装
- 在Windows上安装Doxygen
- Doxygen的配置
- 使用Doxygen注释代码
- 生成文档
- 查看生成的文档
- 注意事项
- 注释的规范性
- 配置文件的修改
- 注释的更新
- 文档的维护
- 避免过度注释
- 多语言支持
- 自定义文档样式
- 文档的版本管理
- 注意编译器差异
- 注意文档的安全性
- 注意文档的可访问性
- 总结
前言
在C语言开发中,代码的可读性和可维护性是至关重要的。随着项目的复杂度增加,代码量也会随之增大,如何让其他开发者快速理解代码的功能和使用方法,成为了一个亟待解决的问题。Doxygen作为一种强大的文档生成工具,能够帮助我们自动生成代码文档,极大地提高了开发效率和代码的可维护性。今天,我们就通过一个简单的程序来深入探讨Doxygen的使用,以及它在C语言开发中的重要性。
题目引入
假设我们有一个简单的C语言程序,它包含了一个结构体和一个函数,用于处理学生信息。我们的目标是使用Doxygen为这个程序生成文档,以便其他开发者能够快速理解代码的功能和使用方法。
struct stu
{int num;char name[10];int age;
};void fun(struct stu *p)
{printf("%s\n", (*p).name);return;
}int main()
{struct stu students[3] = {{9801, "zhang", 20},{9802, "wang", 19},{9803, "zhao", 18}};fun(students + 1);return 0;
}
这个程序的功能是打印出第二个学生的名字。接下来,我们将使用Doxygen为这个程序生成文档。
知识点分析
Doxygen简介
Doxygen是一个开源的文档生成工具,主要用于C、C++、Java等编程语言。它能够解析源代码中的注释,并生成HTML、LaTeX、RTF等多种格式的文档。Doxygen支持多种注释风格,包括JavaDoc、Qt等,开发者可以根据自己的喜好选择合适的注释风格。
Doxygen的安装
在使用Doxygen之前,我们需要先安装它。Doxygen支持多种操作系统,包括Windows、Linux和macOS。以下是安装Doxygen的基本步骤:
在Windows上安装Doxygen
- 访问Doxygen的官方网站 https://www.doxygen.nl/download.html。
- 下载适用于Windows的安装程序。
- 运行安装程序,按照提示完成安装。
- 安装完成后,将Doxygen的安装路径添加到系统的环境变量中,方便在命令行中调用。
Doxygen的配置
安装完成后,我们需要为项目创建一个Doxygen配置文件。Doxygen配置文件是一个文本文件,包含了生成文档的各种参数。可以通过以下命令生成一个默认的配置文件:
doxygen -g
这将生成一个名为Doxyfile
的配置文件。打开这个文件,我们可以看到许多配置选项。以下是一些常用的配置选项:
PROJECT_NAME
:项目的名称。OUTPUT_DIRECTORY
:生成文档的输出目录。INPUT
:指定源代码文件或目录的路径。EXTRACT_ALL
:是否提取所有实体,包括未注释的。GENERATE_HTML
:是否生成HTML格式的文档。GENERATE_LATEX
:是否生成LaTeX格式的文档。
根据项目的需要,可以修改这些配置选项。例如,如果只想生成HTML格式的文档,可以将GENERATE_LATEX
设置为NO
。
使用Doxygen注释代码
为了生成高质量的文档,我们需要在代码中添加Doxygen支持的注释。Doxygen支持多种注释风格,以下是一个简单的示例,展示了如何使用Doxygen注释代码。
/*** @file student.c* @brief 这是一个处理学生信息的程序。* @author siy2333* @version 1.0* @date 2024-10-22*//*** @struct stu* @brief 学生信息结构体。*/
struct stu
{int num; /**< 学生编号 */char name[10]; /**< 学生姓名 */int age; /**< 学生年龄 */
};/*** @brief 打印学生姓名。* @param p 指向学生结构体的指针。*/
void fun(struct stu *p)
{printf("%s\n", (*p).name);return;
}int main()
{/*** @var students* @brief 学生信息数组。*/struct stu students[3] = {{9801, "zhang", 20},{9802, "wang", 19},{9803, "zhao", 18}};fun(students + 1);return 0;
}
在上述代码中,我们使用了/**
和*/
来标记Doxygen注释块。注释块中使用@
符号来标记特殊的命令,例如@file
表示文件描述,@struct
表示结构体描述,@brief
表示简短描述,@param
表示函数参数描述等。
生成文档
完成代码注释后,我们可以通过以下命令生成文档:
doxygen Doxyfile
根据Doxyfile
中的配置,Doxygen会解析源代码文件,并生成相应的文档。默认情况下,文档会生成在html
目录中。打开html/index.html
文件,就可以在浏览器中查看生成的文档了。
查看生成的文档
生成的文档是一个HTML网页,包含了项目的各种信息。例如,项目概述、文件列表、结构体定义、函数说明等。通过这些文档,其他开发者可以快速了解代码的功能和使用方法。
在生成的文档中,每个结构体和函数都有详细的描述。例如,结构体stu
的描述如下:
- stu:学生信息结构体。
- num:学生编号。
- name:学生姓名。
- age:学生年龄。
函数fun
的描述如下:
- fun:打印学生姓名。
- 参数:
- p:指向学生结构体的指针。
- 参数:
通过这些详细的描述,其他开发者可以轻松理解代码的功能和使用方法。
注意事项
注释的规范性
Doxygen生成文档的质量取决于代码注释的质量。因此,注释的规范性非常重要。以下是一些注释的规范性建议:
- 注释块的格式:使用
/**
和*/
来标记Doxygen注释块,确保注释块的格式正确。 - 注释的完整性:为每个结构体、函数、变量等添加注释,确保注释的完整性。
- 注释的简洁性:注释应该简洁明了,避免冗长的描述。
- 注释的准确性:注释应该准确描述代码的功能和使用方法,避免误导其他开发者。
配置文件的修改
Doxygen的配置文件Doxyfile
包含了生成文档的各种参数。根据项目的需要,可能需要修改配置文件中的某些参数。以下是一些常见的配置参数及其说明:
- PROJECT_NAME:项目的名称。
- 建议:设置为项目的实际名称,方便在生成的文档中识别。
- OUTPUT_DIRECTORY:生成文档的输出目录。
- 建议:设置为项目的文档目录,例如
docs
。
- 建议:设置为项目的文档目录,例如
- INPUT:指定源代码文件或目录的路径。
- 建议:设置为项目的源代码目录,例如
src
。
- 建议:设置为项目的源代码目录,例如
- EXTRACT_ALL:是否提取所有实体,包括未注释的。
- 建议:在开发阶段,可以设置为
YES
,方便查看所有代码的结构。在发布阶段,可以设置为NO
,只提取已注释的代码。
- 建议:在开发阶段,可以设置为
- GENERATE_HTML:是否生成HTML格式的文档。
- 建议:设置为
YES
,HTML格式的文档方便在浏览器中查看。
- 建议:设置为
- GENERATE_LATEX:是否生成LaTeX格式的文档。
- 建议:如果不需要LaTeX格式的文档,可以设置为
NO
,节省生成时间。
- 建议:如果不需要LaTeX格式的文档,可以设置为
注释的更新
在项目开发过程中,代码可能会不断更新。因此,注释也需要及时更新,以确保生成的文档与代码一致。以下是一些注释更新的建议:
- 定期检查注释:在每次代码提交时,检查注释是否需要更新。
- 更新注释内容:如果代码的功能或使用方法发生变化,及时更新注释内容。
- 删除过时的注释:如果某些代码已经被删除或替换,删除相关的注释。
文档的维护
生成的文档需要定期维护,以确保其准确性和完整性。以下是一些文档维护的建议:
- 定期生成文档:在每次代码更新后,重新生成文档,确保文档与代码一致。
- 备份文档:将生成的文档备份到其他存储设备,防止数据丢失。
- 分享文档:将生成的文档分享给其他开发者,方便他们了解代码的功能和使用方法。
避免过度注释
虽然注释很重要,但过度注释可能会导致文档过于冗长,反而影响可读性。以下是一些避免过度注释的建议:
- 注释关键代码:只对关键代码添加注释,例如复杂的算法、重要的函数等。
- 避免注释简单代码:对于简单代码,例如变量声明、简单的赋值语句等,可以省略注释。
- 使用代码注释:通过合理的变量命名和代码结构,减少注释的需求。
多语言支持
Doxygen支持多种语言,包括英语、中文等。如果项目是多语言开发,可以使用多语言注释。以下是一个多语言注释的示例:
/*** @brief 打印学生姓名。* @param p 指向学生结构体的指针。* @note 这是一个简单的函数,用于打印学生姓名。*/
void fun(struct stu *p)
{printf("%s\n", (*p).name);return;
}
在生成文档时,Doxygen会根据配置文件中的语言设置,生成相应语言的文档。
自定义文档样式
Doxygen允许自定义文档的样式。可以通过修改Doxyfile
中的配置参数,或者使用自定义的CSS文件,来调整文档的样式。以下是一些自定义文档样式的建议:
- 修改HTML样式:通过修改
Doxyfile
中的HTML_STYLESHEET
参数,指定自定义的CSS文件。 - 添加图片:在文档中添加图片,可以使用
@image
命令。 - 添加链接:在文档中添加链接,可以使用
@link
命令。
文档的版本管理
在项目开发过程中,文档的版本也需要管理。以下是一些文档版本管理的建议:
- 使用版本号:在文档中添加版本号,方便识别文档的版本。
- 使用版本控制系统:将文档存储在版本控制系统中,例如Git,方便管理文档的版本。
- 更新文档版本:在每次文档更新后,更新版本号。
注意编译器差异
不同的编译器可能会对代码的解析和注释的处理有所不同。因此,在使用Doxygen时,需要注意编译器的差异。以下是一些注意事项:
- 测试不同编译器:在不同的编译器下测试代码和文档,确保兼容性。
- 避免使用特定编译器的特性:在注释中避免使用特定编译器的特性,以确保文档的通用性。
注意文档的安全性
生成的文档可能会包含敏感信息,例如代码路径、项目信息等。因此,在发布文档时,需要注意文档的安全性。以下是一些注意事项:
- 删除敏感信息:在发布文档前,删除文档中的敏感信息。
- 限制文档访问:限制文档的访问权限,防止未经授权的访问。
注意文档的可访问性
生成的文档需要方便其他开发者访问和使用。以下是一些提高文档可访问性的建议:
- 提供文档链接:在项目主页或代码仓库中,提供文档的链接。
- 提供文档下载:提供文档的下载链接,方便其他开发者离线查看。
- 提供文档说明:在文档中添加说明,指导其他开发者如何使用文档。
总结
Doxygen是一个强大的文档生成工具,它可以帮助我们自动生成C语言代码的文档,极大地提高了开发效率和代码的可维护性。通过合理使用Doxygen,我们可以为项目生成高质量的文档,方便其他开发者快速理解代码的功能和使用方法。在使用Doxygen时,需要注意注释的规范性、配置文件的修改、注释的更新、文档的维护等,以确保生成的文档准确、完整、易用。希望本文的介绍能够帮助你更好地使用Doxygen,提升你的C语言开发效率。
关注窝,每个月至少更新11篇优质c语言题目详解~
[专栏链接QwQ] :⌈c语言日寄⌋CSDN
[关注博主ava]:siy2333
感谢观看~ 我们下次再见!!
相关文章:
[c语言日寄]免费文档生成器——Doxygen在c语言程序中的使用
【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…...
RK3588上编译opencv 及基于c++实现图像的读入
参考博文: https://blog.csdn.net/qq_47432746/article/details/147203889 一、安装依赖包 sudo apt install build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpe…...
C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...
Java 设计模式心法之第3篇 - 总纲:三大流派与导航地图
前两章,我们修炼了 SOLID 这套强大的“内功心法”,为构建高质量软件打下了坚实根基。现在,是时候鸟瞰整个设计模式的“武林”了!本文将为您展开一幅由 GoF 四人帮精心绘制的 23 种经典设计模式的“全景导航地图”。我们将探索这些…...
高级java每日一道面试题-2025年4月19日-微服务篇[Nacos篇]-Nacos未来的发展方向和规划有哪些?
如果有遗漏,评论区告诉我进行补充 面试官: Nacos未来的发展方向和规划有哪些? 我回答: Nacos 作为阿里巴巴开源的服务发现、配置管理和服务治理平台,其未来的发展方向和规划主要体现在以下几个关键领域: 1. 安全性与标准化 API分类精细化…...
跳过reCAPTCHA验证的技术解析与优化实践
Google的reCAPTCHA验证系统已成为保护网站安全的核心工具之一。然而,频繁的验证弹窗可能降低用户体验,甚至导致用户流失。如何在遵守平台规则的前提下,通过技术优化与用户行为管理减少验证触发率,成为我们亟需解决的难题。 但需要…...
idea使用docker插件一键部署项目
一、首先保证我们电脑上已经安装了docker docker -v查看docker版本,如果不能识别,需要先下载docker destop,在官网下载正常安装即可。 安装成功就可以使用docker 命令了 二、idea下载docker插件并配置docker参数 我是通过tcp连接docker服务…...
强化学习笔记(三)——表格型方法(蒙特卡洛、时序差分)
强化学习笔记(三)——表格型方法(蒙特卡洛、时序差分) 一、马尔可夫决策过程二、Q表格三、免模型预测1. 蒙特卡洛策略评估1) 动态规划方法和蒙特卡洛方法的差异 2. 时序差分2.1 时序差分误差2.2 时序差分方法的推广 3. 自举与采样…...
[SpringMVC]请求响应参数传递
controller前置url解决业务重名 在项目中,常常会碰到不同的业务之间的某个方法同名的情况。例如在一个文档管理系统(有着文档和发布者两个实体)中,两个实体都有着 "add" 业务。如果两个实体相关的业务url都用 "/ad…...
在C++业务类和QML之间创建一个数据桥梁
工作中经常会遇到两种业务直接按无法直接沟通,此时需要建立一个桥梁将两者进行联系起来,假设一个C业务类,有一个QML UI, 如果将BridgeClass 类通过qmlRegisterType 注册到QML中,在C中如何能够调用到BridgeClass 对象吗…...
超详细mac上用nvm安装node环境,配置npm
一、安装NVM 打开终端,运行以下命令来安装NVM: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash 然后就会出现如下代码: > Profile not found. Tried ~/.bashrc, ~/.bash_profile, ~/.zprofile, ~/.…...
MH2103系列coremark1.0跑分数据和优化,及基于arm2d的优化应用
CoreMark 1.0 介绍 CoreMark 是由 EEMBC(Embedded Microprocessor Benchmark Consortium)组织于 2009 年推出的一款用于衡量嵌入式系统 CPU 或 MCU 性能的标准基准测试工具。它旨在替代陈旧的 Dhrystone 标准(Dhrystone 容易受到各种libc不同…...
YOLO11改进 | 特征融合Neck篇之Lowlevel Feature Alignment机制:多尺度检测的革新性突破
## 为什么需要重新设计特征融合机制? 在目标检测领域,YOLO系列模型因其高效的实时性成为工业界和学术界的标杆。然而,随着应用场景的复杂化(如自动驾驶中的多尺度目标、无人机图像中的小物体检测),传统特征融合策略的局限性逐渐暴露:**特征对齐不足导致语义信息错位、多…...
解决方案:远程shell连不上Ubuntu服务器
服务器是可以通过VNC登录,排除了是服务器本身故障 检查服务是否在全网卡监听 sudo ss -tlnp | grep sshd确保有一行类似 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid...,fd3))返回无结果,表明系统里并没有任…...
Flutter路由模块化管理方案
总结记录一下Flutter路由模块管理: 1、创建路由基类 abstract class BaseRouteConfig {Map<String, WidgetBuilder> get routes; } 2、创建不同模块的路由配置类 // 认证模块路由 class AuthRoutes extends BaseRouteConfig {overrideMap<String, Widg…...
Java BIO、NIO、AIO、Netty面试题(已整理全套PDF版本)
什么是IO Java中的I/O(输入/输出)机制基于流(Stream)的概念实现数据的传输。流将数据序列化,即按照特定顺序逐次进行读写操作。简而言之,Java程序通过I/O流与外部设备进行数据交换。 Java类库中的I/O功能十…...
TapData × 梦加速计划 | 与 AI 共舞,TapData 携 AI Ready 实时数据平台亮相加速营,企业数据基础设施现代化
在实时跃动的数据节拍中,TapData 与 AI 共舞,踏出智能未来的新一步。 4月10日,由前海产业发展集团、深圳市前海梦工场、斑马星球科创加速平台等联合发起的「梦加速计划下一位独角兽营」正式启航。 本次加速营以“打造下一位独角兽企业”为目…...
一键部署k8s之EFK日志收集系统
一、部署es 1.下载安装 #下载安装 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-linux-x86_64.tar.gz #解压 [rootes software]# tar xf elasticsearch-8.13.2-linux-x86_64.tar.gz #创建运行elasticsearch服务用户并修改权限 [rootes softw…...
Python常用的第三方模块【openpyxl库】读写Excel文件
openpyxl库模块是用于处理Microsoft Excel文件的第三方库,可以对Excel文件中的数据进行写入和读取。 weather.pyimport reimport requests#定义函数 def get_html():urlhttps://www.weather.com.cn/weather1d/101210101.shtml #爬虫打开浏览器上的网页resprequests.…...
加油站小程序实战教程12显示会员信息
目录 1 布局搭建1.1 搭建头像1.2 显示会员等级1.3 余额显示 最终效果 我们上一篇介绍了会员注册的功能,会员注册后再次进入页面的时候就可以根据openid加载会员信息,本篇我们介绍一下显示会员的余额 1 布局搭建 我们现在在我的页面显示的是会员未开通…...
iOS中使用AWS上传zip文件到Minio上的oss平台上
1. 集成AWS相关库(千万不要用最新的版本,否则会出现风格化虚拟路径,找不到主机名) pod AWSS3, ~> 2.10.0 pod AWSCore, ~> 2.10.0 2. 编写集成的相关代码 - (void)uploadFileToMinIO {NSString *endPoint "http://…...
PaginationInnerInterceptor使用(Mybatis-plus分页)
引言 最近在编写SQL语句时总是想着偷懒,于是在前不久学习黑马点评时学到可以使用PaginationInnerInterceptor,于是现在我也在自己的项目中进行使用了,但是使用也遇到一些问题,如果你和我的问题一样,希望我的解决办法能…...
极狐GitLab CEO 柳钢受邀出席 2025 全球机器学习技术大会
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 2025 年 4 月 18 日至 19 日,2025 全球机器学习技术大会(ML-Summit 2025)在上海隆重举行。…...
数据仓库 vs 数据湖:架构、应用场景与技术差异全解析
目录 一、概念对比:结构化 vs 全类型数据 二、技术架构对比 1. 数据仓库架构特点 2. 数据湖架构特点 三、典型应用场景 数据仓库适合: 数据湖适合: 四、数据湖仓一体:趋势还是折中? 五、总结:如何…...
【25软考网工笔记】第三章 局域网(1)CSMA/CD、二进制指数退避算法、最小帧长计算
目录 一、CSMA/CD 1. 局域网架构概述 2. 局域网的拓扑结构 3. CSMA 1)CSMA的三种监听算法 1、1-坚持型监听算法(继续监听,不等待) 2、非坚持型监听算法(后退随机事件) 3、P-坚持型监听算法 2&#…...
Harbor对接非AWS对象存储
背景说明 项目的应用完全运行在一个离线环境中,同时通过K8S的方式进行容器编排。需要自建一个harbor的镜像仓库。并且通过私有云提供的S3服务进行容器镜像的持久化存储。我踩的其中的一个坑就是S3的region名字非AWS的标准名称。运行时抱错如下: 2025-04…...
实训Day-1 漏洞攻击实战
目录 实训任务1 漏洞攻击实战一 实训任务2 漏洞攻击实战二 实训任务3 白云新闻搜索 实训任务4 手速要快 实训任务5 包罗万象 总结 今天的实训目的是为了:了解漏洞攻击的一般步骤;掌握SQL注入的基本原理;掌握XSS攻击的基本原理ÿ…...
Linux-网络基础
一.网络背景 网络的起源与20世纪中期的冷战背景密切相关。美苏争霸期间,美国国防部担心传统集中式通信系统(如电话网络)在核战争中容易被摧毁,因此急需一种去中心化、高容错的通信方式。1969年,美国国防部高级研究计划…...
算法 | 鲸鱼优化算法(WOA)原理,公式,应用,算法改进研究综述,完整matlab代码
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 鲸鱼优化算法 一、原理与公式二、应用领域三、算法改进研究四、完整MAT…...
[BJDCTF2020]EzPHP
这一道题里面的知识点实在是太多了,即使这道题是我最喜欢的RCE也有点大脑停转了,所以还是做个笔记,以后方便回忆 直接跳过打点,来到源码 <?php highlight_file(__FILE__); error_reporting(0); $file "1nD3x.php"…...
企业微信-自建应用
1. 创建自建应用 2. 配置小程序/H5入口 3. 准备 : CorpId(企业id)、 AgentID(应用id)、 CorpsecretID(应用Secret) 4. 配置企业可信IP 5. 如H5需要授权登录,那么需要配置网页授…...
[FPGA基础] 时钟篇
Xilinx FPGA 时钟管理详细文档 本文档详细介绍 Xilinx FPGA 中的时钟管理,包括时钟资源、时钟管理模块、设计注意事项以及最佳实践。适用于使用 Xilinx 7 系列、UltraScale 和 UltraScale 系列 FPGA 的开发者。 1. 时钟资源概述 Xilinx FPGA 提供丰富的时钟资源&a…...
高德火星坐标(GCJ-02)转WGS84坐标
高德火星坐标(GCJ-02)转WGS84坐标 1 转换算法 import mathdef gcj02_to_wgs84(lon, lat):"""高德火星坐标(GCJ-02)转WGS84坐标"""a 6378245.0 # 长半轴ee 0.00669342162296594323 # 扁率def transform_lon(x, y):ret 300.0 x 2.0 * y …...
基于opencv和PaddleOCR识别身份证信息
1、安装组件 pip install --upgrade paddlepaddle paddleocr 2、完整code import cv2 import numpy as np from paddleocr import PaddleOCR# 初始化 PaddleOCR use_angle_clsTrue, lang"ch", det_db_thresh0.1, det_db_box_thresh0.5)def preprocess_image(image…...
Day-1 漏洞攻击实战
实训任务1 漏洞攻击实战一 使用 御剑 得到网站后台地址 数据库登录与日志配置 使用默认密码 root:root 登录phpMyAdmin,执行 SHOW VARIABLES LIKE general% 查看日志状态。 开启日志功能:set global general_log "ON";(配图&…...
穿透数据迷雾:PR 曲线与 ROC 曲线的深度剖析+面试常见问题及解析
一、混淆矩阵与评价指标基础 混淆矩阵核心构成:混淆矩阵是分类模型性能评估的基石,以 22 矩阵形式呈现分类结果。其中,真正例(TP)表示实际为正类且被正确预测的样本;假正例(FP)是实…...
【Linux篇】轻松搭建命名管道通信:客户端与服务器的互动无缝连接
从零开始:基于命名管道实现客户端与服务器的实时通信 一. 命名管道1.1 基本概念1.2 创建命名管道1.2.1 创建方法1.2.2 示例代码:1.2.3 注意事项:1.3 与匿名管道区别 1.4 打开原则1.4.1 管道打开顺序1.4.2 阻塞行为1.4.3 管道的关闭1.4.4 关闭…...
快充协议芯片XSP04D支持使用一个Type-C与电脑传输数据和快充取电功能
快充是由充电器端的充电协议和设备端的取电协议进行握手通讯进行协议识别来完成的,当充电器端的充电协议和设备端的取电协议握手成功后,设备会向充电器发送电压请求,充电器会根据设备的需求发送合适的电压给设备快速供电。 设备如何选择快充…...
MySQL的窗口函数(Window Functions)
一、窗口函数核心概念 窗口(Window) 窗口是数据行的集合,由OVER()子句定义。它决定了函数计算的“数据范围”,可以是一个分区的全部行、当前行前后的行,或动态变化的子集。 语法结构 SELECT window_f…...
一个很简单的机器学习任务
一个很简单的机器学习任务 前言 基于线上colab做的一个简单的案例,应用了线性回归算法,预测了大概加州3000多地区的房价中位数 过程 先导入了Pandas,这是一个常见的Python数据处理函数库 用Pandas的read_csv函数把网上一个共享数据集&…...
ORION:通过视觉-语言指令动作生成的一个整体端到端自动驾驶框架
25年3月来自华中科技和小米电动汽车的论文“ORION: A Holistic End-to-End Autonomous Driving Framework by Vision-Language Instructed Action Generation”。 由于因果推理能力有限,端到端 (E2E) 自动驾驶方法仍然难以在交互式闭环评估中做出正确决策。当前的方…...
python全栈-flask
python全栈-flask 文章目录 入门上手hello worldflask运行方式测试路由with app.test_request_context():debug模式配置flask参数动态路由数据类型自定义转换器to_pythonPostMan(API测试查询参数的获取请求体参数上传文件其它参数url_for 函数重定向响应内容自定义响…...
Unity中的数字孪生项目:两种输入方式对观察物体的实现
在数字孪生项目中,精确的相机控制至关重要。相机不仅需要灵活地跟随目标,还要能够平滑地旋转和缩放,以便观察和分析物体的各个细节。今天,我将通过 TouchControlCamera 和 CameraRotate 两个脚本,展示如何实现一个适用…...
ECharts散点图-散点图14,附视频讲解与代码下载
引言: ECharts散点图是一种常见的数据可视化图表类型,它通过在二维坐标系或其它坐标系中绘制散乱的点来展示数据之间的关系。本文将详细介绍如何使用ECharts库实现一个散点图,包括图表效果预览、视频讲解及代码下载,让你轻松掌握…...
【教程】Digispark实现串口通信
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 没想到这么老,很多代码都不能用,修了好久。。。 TinySoftwareSerial.cpp #include <stdlib.h> #include <stdio.h&g…...
GPT-4.1 开启智能时代新纪元
GPT-4.1 全解析:开启智能时代新纪元(含费用详解) 2025年4月,OpenAI 正式推出全新一代语言模型——GPT-4.1 系列,包括 GPT-4.1、GPT-4.1 Mini 和 GPT-4.1 Nano。相比以往模型,它在代码生成、指令理解、长文本…...
4.21 spark和hadoop的区别与联系
一、Hadoop 1. 定义 Hadoop是一个由Apache基金会开发的分布式系统基础架构。它最初是为了解决大规模数据存储和处理的问题而设计的。Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。 2. HDFS(Hadoop Distributed Fi…...
Nacos 客户端 SDK 的核心功能是什么?是如何与服务端通信的?
Nacos 客户端 SDK 的核心功能 Nacos 客户端 SDK 是应用程序集成 Nacos 能力的桥梁,它封装了与 Nacos 服务端交互的复杂性,为开发者提供了简单易用的 API。其核心功能主要围绕两大方面:服务发现 和 配置管理。 服务发现 (Service Discovery) …...
servlet-保存作用域
保存作用域 保存作用域:原始情况下,保存作用域我们有四个:page(一般不用了) 、request(一般请求响应范围)、session(一次会话范围)、application(整个应用程序范围)1)request:一般请求响应范围…...
从规则到大模型:知识图谱信息抽取实体NER与关系RE任务近10年演进发展详解
摘要: 本文回顾了关系抽取与实体抽取领域的经典与新兴模型,清晰地梳理了它们的出现时间与核心创新,并给出在 2025 年不同资源与场景下的最佳实践推荐。文章引用了 BiLSTM‑CRF、BiLSTM‑CNN‑CRF、SpanBERT、LUKE、KnowBERT、CasRel、REBEL、…...