printf在c语言中代表什么(非常详细)
在C语言中,有三个函数可以用来向控制台(可以理解为显示器或者屏幕)输出数据,它们分别是:
输出函数 | 说明 | 用法演示 |
---|---|---|
puts() | 只能输出字符串,并且输出结束后会自动换行 | puts("C language is great"); |
putchar() | 只能输出单个字符 | putchar('C'); |
printf() | 可以输出各种类型的数据 | printf("%d %c %s", 100, 'C', "C language"); |
printf() 是最灵活、最复杂、最常用的输出函数,可以完全代替 puts() 和 putchar(),大家一定要掌握。本文将是一个非常详细和全面的 printf() 用法参考手册,值得收藏,并反复查阅。
printf() 的用法
printf 是 print format 的缩写,意思是格式化打印,也就是向显示器上格式化输出数据。
严格来说,printf() 是向标准输出文件中输出数据,而这个标准输出文件通常来说都是“黑底白字”的控制台,或者说是显示器。
printf() 的标准用法为:
int printf( const char * format, argument... );
format 为格式字符串,由格式说明符和普通字符构成。其中:
- 普通字符按照原样输出,比如英文、数字、逗号、空格等;
- 格式说明符以
%
开头,比如 %d、%s、%c 等。
argument 表示将要输出的数据,多份数据以,
分隔。数据的个数和类型,要与格式说明符一一对应。
printf() 会将 argument 格式化,并插入到 format 字符串中,代替对应的格式说明符。
int 表示 printf() 的返回值类型,也即处理结果的数据类型。输出成功以后,printf() 将返回输出的字符的个数;如果输出失败,将返回一个负数。
C语言 printf() 用法的简单举例:
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main()
{int age = 14;char name[] = "Tom";float score = 96.5;int charNumber = 0;charNumber = printf("Age:%d Name:%s Score:%f\n", age, name, score);printf("本次输出%d个字符", charNumber);return 0;
}
运行结果:
Age:14 Name:Tom Score:96.500000
本次输出34个字符
format 中的格式说明符
format 中的格式说明符其实比较复杂,它的标准写法如下:
%[flags][width][.precision][length]specifier
末尾的 specifier 不能省略,其它由[ ]
包围的部分可以省略。
specifier
specifier 是格式字符,它最重要,指明了要输出的数据的类型和形式。
specifier | 输出形式 | 示例 |
---|---|---|
d 或者 i | 有符号十进制整数 | 392 |
u | 无符号十进制整数 | 7235 |
o | 无符号八进制数 | 610 |
x | 无符号十六进制整数 | 7fa |
X | 无符号十六进制整数(大写) | 7FA |
f | 十进制浮点数(小写) | 392.65 |
F | 十进制浮点数(大写) | 392.65 |
e | 科学计数法(尾数+指数的形式),小写 | 3.9265e+2 |
E | 科学计数法(尾数+指数的形式),大写 | 3.9265E+2 |
g | 使用 %e 和 %f 中的较短形式输出 | 392.65 |
G | 使用 %E 和 %F 中的较短形式输出 | 392.65 |
a | 十六进制浮点数(小写) | -0xc.90fep-2 |
A | 十六进制浮点数(大写) | -0XC.90FEP-2 |
c | 字符 | a |
s | 字符串 | sample |
p | 指针地址 | b8000000 |
n | 对应的参数为一个指向 int 类型变量的指针。%n 不输出任何内容,而是用于将已经输出的字符个数(不包括 %n 对应的输出)存储到指针所指向的变量中。 printf() 的返回值也表示输出的字符个数,一般情况下两者是相等的。 | |
% | % 后面再跟一个 %,会输出一个 %,可以看做 % 的转义形式 | % |
flags
flags 控制输出数据的对齐方式。
flags | 说明 |
---|---|
- | 在给定的输出宽度内左对齐。如果不指明,默认为右对齐。 |
+ | 用于整数或小数,输出时强制加上正负号,即使对于正数也是如此。如果不指明,默认只有负数才加- 符号。 |
空格 | 用于整数或者小数,输出值为正时冠以空格,为负时冠以负号。 |
# | 对于八进制(%o)和十六进制(%x / %X)整数,# 表示在输出时添加前缀;八进制的前缀是 0,十六进制的前缀是 0x / 0X。 对于小数(%a / %A、%e / %E、%f / %F、%g / %G),# 表示强迫输出小数点。如果没有小数部分,默认是不输出小数点的,加上 # 以后,即使没有小数部分也会带上小数点。 |
0 | 当输出宽度不足时,在数字左侧填充 0,而不是空格。 |
width
width 用来表示输出宽度,也就是最少占用几个字符的位置。
width | 说明 |
---|---|
数字 | width 为一个整数时,表示最小的输出宽度。如果实际输出宽度不足 width,则以 flags 指定的方式来填充;如果 flags 没有指定,则以空格来填充。 当输出结果的宽度超过 width 时,width 不再起作用,按照实际宽度来输出。 |
* | 宽度不在格式字符串 format 中指定,而是在对应的参数(输出数据)前面再增加一个额外的参数,专门用来指定输出宽度。 |
.precision
.precision 表示输出精度。对于不同的格式字符(specifier),精度的含义是不同的。
.precision | 说明 |
---|---|
.数字 | precision 为一个整数时:
|
.* | 精度不在格式字符串 format 中指定,而是在对应的参数(输出数据)前面再增加一个额外的参数,专门用来指定精度。 |
length
length 是 specifier 的子说明符,用来改变数据类型的长度。这意味着,对应的参数在适当的情况下可以进行类型转换,或者类型提升。
格式字符(specifier) | |||||||
---|---|---|---|---|---|---|---|
length | %d %i | %u %o %x %X | %f %F %e %E %g %G %a %A | %c | %s | %p | %n |
默认(不指明 length) | int | unsigned int | double | int | char* | void* | int* |
hh | signed char | unsigned char | signed char* | ||||
h | short int | unsigned short int | short int* | ||||
l | long int | unsigned long int | wint_t | wchar_t* | long int* | ||
ll | long long int | unsigned long long int | long long int* | ||||
j | intmax_t | uintmax_t | intmax_t* | ||||
z | size_t | size_t | size_t* | ||||
t | ptrdiff_t | ptrdiff_t | ptrdiff_t* | ||||
L | long double |
注意:对于 %c 说明符,虽然它要求的参数(输出数据)类型为 int 或者 wint_t,但是在格式化输出之前,会将其适当地转换为 char 或者 wchar_t 类型。
printf() 用法举例
为了方便读者理解,这里给出几个有代表性的例子。
width 用法举例
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main() {int n = 234;float f = 9.8f;char c = '@';char str[] = "C Language is great";printf("%10d%12f%4c%8s", n, f, c, str);return 0;
}
输出结果:
234 9.800000 @C Language is great
对输出结果的说明:
- n 的指定输出宽度为 10,234 的宽度为 3,所以前边要补上 7 个空格。
- f 的指定输出宽度为 12,9.800000 的宽度为 8,所以前边要补上 4 个空格。
- str 的指定输出宽度为 8,"C Language is great" 的宽度为 19,超过了 8,所以指定输出宽度不再起作用,而是按照 str 的实际宽度输出。
.precision 用法举例
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main(){int n = 123456;double f = 882.923672;char *str = "abcdefghi";printf("n: %.9d %.4d\n", n, n);printf("f: %.2lf %.4lf %.10lf\n", f, f, f);printf("str: %.5s %.15s\n", str, str);return 0;
}
输出结果:
n: 000123456 123456
f: 882.92 882.9237 882.9236720000
str: abcde abcdefghi
对输出结果的说明:
- 对于 n,.precision 表示最小输出宽度。n 本身的宽度为 6,当 precision 为 9 时,大于 6,要在 n 的前面补 3 个 0;当 precision 为 4 时,小于 6,不再起作用。
- 对于 f,.precision 表示输出精度。f 的小数部分有 6 位数字,当 precision 为 2 或者 4 时,都小于 6,要按照四舍五入的原则截断小数;当 precision 为 10 时,大于 6,要在小数的后面补四个 0。
- 对于 str,.precision 表示最大输出宽度。str 本身的宽度为 9,当 precision 为 5 时,小于 9,要截取 str 的前 5 个字符;当 precision 为 15 时,大于 9,不再起作用。
flag 用法举例
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main(){int m = 192, n = -943;float f = 84.342;printf("m=%10d, m=%-10d\n", m, m); //演示 - 的用法printf("m=%+d, n=%+d\n", m, n); //演示 + 的用法printf("m=% d, n=% d\n", m, n); //演示空格的用法printf("f=%.0f, f=%#.0f\n", f, f); //演示#的用法return 0;
}
输出结果:
m= 192, m=192
m=+192, n=-943
m= 192, n=-943
f=84, f=84.
对输出结果的说明
- 当以
%10d
输出 m 时,是右对齐,所以在 192 前面补七个空格;当以%-10d
输出 m 时,是左对齐,所以在 192 后面补七个空格。 - m 是正数,以
%+d
输出时要带上正号;n 是负数,以%+d
输出时要带上负号。 - m 是正数,以
% d
输出时要在前面加空格;n 是负数,以% d
输出时要在前面加负号。 %.0f
表示保留 0 位小数,也就是只输出整数部分,不输出小数部分。默认情况下,这种输出形式是不带小数点的,但是如果有了#
标志,那么就要在整数的后面“硬加上”一个小数点,以和纯整数区分开。
综合示例
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main(){printf("输出字符: %c %c \n", 'a', 65);printf("输出十进制数: %d %ld\n", 1977, 650000L);printf("用空格填充: %10d \n", 1977);printf("用0填充: %010d \n", 1977);printf("输出不同进制: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);printf("输出小数: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);printf("指定宽度: %*d \n", 5, 10);printf("输出字符串:%s \n", "C language is great");return 0;
}
输出结果:
输出字符: a A
输出十进制数: 1977 650000
用空格填充: 1977
用0填充: 0000001977
输出不同进制: 100 64 144 0x64 0144
输出小数: 3.14 +3e+00 3.141600E+00
指定宽度: 10
输出字符串:C language is great
总结
为了满足实际开发中的各种需求,C语言 printf() 的用法比较复杂,对于初学者来说,全部记住可能比较困难。不要着急,慢慢来,暂时只要记住常用的即可;对于那些少见的格式,用到了再来查询也不晚。
printf() 的这些格式规范不是“小把戏”,优美的输出格式随处可见,例如,dos 下的 dir 命令,会整齐地列出当前目录下的文件,这明显使用了右对齐,还指定了宽度。
相关文章:
printf在c语言中代表什么(非常详细)
在C语言中,有三个函数可以用来向控制台(可以理解为显示器或者屏幕)输出数据,它们分别是: 输出函数说明用法演示puts()只能输出字符串,并且输出结束后会自动换行puts("C language is great");put…...
Linux梦开始的地方
1.概率 经过C语言,数据结构,C的学习我们现在要开始学习Linux的学习了。我们学习Linux是从四部分来进行的: 1.Linux初识,Linux环境,Linux指令,Linux开发环境。 2.Linux系统。 3.Linux网络 4.MySQL Lin…...
关于机器学习的实际案例
以下是一些机器学习的实际案例: 营销与销售领域 - 推荐引擎:亚马逊、网飞等网站根据用户的品味、浏览历史和购物车历史进行推荐。 - 个性化营销:营销人员使用机器学习联系将产品留在购物车或退出网站的用户,根据客户兴趣定制营销…...
Kubernetes控制平面组件:Kubelet详解(五):切换docker运行时为containerd
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
<前端小白> 前端网页知识点总结
HTML 标签 1. 标题标签 h1到h6 2. 段落标签 p 3. 换行 br 水平线 hr 4. 加粗 strong 倾斜 em 下划线 ins 删除 del 5. 图像标签 img src-图像的位置 alt- 图片加载失败显示的文字 替换文本 title--- 鼠标放到图片上显示的文字 提示…...
【Linux驱动】Linux 按键驱动开发指南
Linux 按键驱动开发指南 1、按键驱动开发基础 1.1. 按键驱动类型 Linux下的按键驱动主要有两种实现方式: 输入子系统驱动:最常用,通过input子系统上报按键事件 字符设备驱动:较少用,需要自己实现文件操作接口 1.…...
AI日报 - 2025年05月19日
🌟 今日概览 (60秒速览) ▎🤖 大模型前沿 | GPT-5传闻再起,将基于全新模型构建,与GPT-4彻底分离;Claude 3.7 Sonnet系统提示泄露,揭示其主动引导对话、多语言支持及安全新特性;研究指出直接复用…...
BUUCTF——ReadlezPHP
BUUCTF——ReadlezPHP 进入靶场 看了看框架和源码信息 没有什么可以利用的地方 爆破一下目录看看 结果只出来个index.php 看了一下Findsomthing 报了个路径 /time.php?source拼接访问一下 出了个php代码 <?php #error_reporting(0); class HelloPhp {public $a;pub…...
java集合相关的api-总结
简介 集合是存储数据的容器,集合相关的API提供了不同的数据结构,来满足不同的需求。这里是对常见集合API的使用场景和相关源码的一个总结,在实际开发中,如果不知道该选择什么集合,这篇文章也许可以参考一下。 集合相…...
FloodFill算法:洪水般的图像处理艺术
简单来说就是一场洪水(雨水)会把低洼的地方淹没 也就是一道题,你要找出所有为负数的连通块,对角线不能连通,所以上述图有两个 其实也很简单,就是你扫描的过程,发现一个负数,就以这…...
【开源分享】健康饮食管理系统(双端+论文)
💻技术栈 前后端分离项目,PC双端(管理端用户端) 后端:Javaspringboot 前端:vue 数据库:mysql 💡运行效果图 1. 管理端: 2. 用户端: 📕源码获…...
【图像生成大模型】CogVideoX-5b:开启文本到视频生成的新纪元
CogVideoX-5b:开启文本到视频生成的新纪元 项目背景与目标模型架构与技术亮点项目运行方式与执行步骤环境准备模型加载与推理量化推理 执行报错与问题解决内存不足模型加载失败生成质量不佳 相关论文信息总结 在人工智能领域,文本到视频生成技术一直是研…...
C++学习:六个月从基础到就业——C++20:协程(Coroutines)
C学习:六个月从基础到就业——C20:协程(Coroutines) 本文是我C学习之旅系列的第五十篇技术文章,也是第三阶段"现代C特性"的第十二篇,继续介绍C20引入的新特性,本篇重点是协程(Coroutines)。查看完整系列目录…...
【DAY22】 复习日
内容来自浙大疏锦行python打卡训练营 浙大疏锦行 仔细回顾一下之前21天的内容 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 kaggle泰坦里克号人员生还预测...
tauri2项目使用sidcar嵌入可执行文件并使用命令行调用
Sidecar 是 Tauri 框架中的一个功能,允许你将现有的命令行程序(CLI)打包并分发到你的 Tauri 应用程序中。以下是它的主要作用和用法。集成命令行工具:将现有的 CLI 程序无缝集成到你的 Tauri 应用中。跨平台分发:确保你…...
选择合适的AI模型:解析Trae编辑器中的多款模型及其应用场景
在当今数字化时代,人工智能技术飞速发展,各种AI模型层出不穷,为人们的工作和生活带来了极大的便利。Trae编辑器作为一款集成了多种先进AI模型的工具,为用户提供了丰富的选择,以满足不同场景下的多样化需求。本文将深入…...
超越想象:利用MetaGPT打造高效的AI协作环境
前言 在人工智能迅速发展的今天,如何让多个大语言模型(LLM)高效协同工作成为关键挑战。MetaGPT 作为一种创新的多智能体框架,成功模拟了一个真实软件公司的运作流程,实现了从需求分析到代码实现的全流程自动化&#x…...
BOM知识点
BOM(Browser Object Model)即浏览器对象模型,是用于访问和操作浏览器窗口的编程接口。以下是一些BOM的知识点总结: 核心对象 • window:BOM的核心对象,代表浏览器窗口。它也是全局对象,所有全…...
IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 LiteOS Studio + GCC + JLink
文章目录 概述LiteOS Studio不推荐?安装和使用手册呢?HCIP实验的源码呢? 软件和依赖安装软件下载软件安装插件安装依赖工具-方案2依赖工具-方案1 工程配置打开或新建工程板卡配置组件配置编译器配置-gcc工具链编译器配置-Makefile脚本其他配置编译完成 …...
常见的 HTTP 接口(请求方法)
一:GET 作用:从服务器获取资源(查询数据)。特点: 请求参数通过 URL 传递(如https://api.example.com/users?id123),参数会显示在地址栏中。不修改服务器数据,属于幂等操…...
墨水屏显示模拟器程序解读
程序如下:出处https://github.com/tsl0922/EPD-nRF5?tabreadme-ov-file // GUI emulator for Windows // This code is a simple Windows GUI application that emulates the display of an e-paper device. #include <windows.h> #include <stdint.h>…...
【图像生成大模型】Step-Video-T2V:下一代文本到视频生成技术
Step-Video-T2V:下一代文本到视频生成技术 引言Step-Video-T2V 项目概述核心技术1. 视频变分自编码器(Video-VAE)2. 3D 全注意力扩散 Transformer(DiT w/ 3D Full Attention)3. 视频直接偏好优化(Video-DPO…...
【Java学习笔记】【第一阶段项目实践】房屋出租系统(面向对象版本)
房屋出租系统(面向对象版本) 整体思想:采用数组存储房屋信息,深刻体会面向对象的好处和过程 一、实现需求 (1)用户层 系统菜单显示 提示用户输入对应的数字选择功能 各个功能界面操作提示(底…...
18. 结合Selenium和YAML对页面继承对象PO的改造
18. 结合Selenium和YAML对页面继承对象PO的改造 一、架构改造核心思路 1.1 改造前后对比 #mermaid-svg-ziagMhNLS5fIFWrx {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ziagMhNLS5fIFWrx .error-icon{fill:#5522…...
Vue-监听属性
监听属性 简单监听 点击切换名字,来回变更Tom/Jerry,输出 你好,Tom/Jerry 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>监听属性</title><!-- …...
AI写PPT可以用吗?我测试了3款AI写PPT工具,分享感受
上周五临下班,领导突然让我周末赶出一份季度营销报告 PPT,还要求周一晨会展示。看着空荡荡的 PPT 页面,我满心都是绝望 —— 周末不仅泡汤,搞不好还得熬夜到凌晨。好在同部门的前辈给我推荐了几款 AI 写 PPT 工具,没想…...
FreeSWITCH 简单图形化界面43 - 使用百度的unimrcp搞个智能话务台,用的在线的ASR和TTS
FreeSWITCH 简单图形化界面43 - 使用百度的unimrcp搞个智能话务台 0、一个fs的web配置界面预览1、安装unimrcp模块2、安装完成后,配置FreeSWITCH。2.1 有界面的配置2.1.1 mod_unimrcp模块配置2.1.2 mod_unimrcp客户端配置 2.2 无界面的配置 3、呼叫规则4、编写流程4…...
C 语言学习笔记(函数)
内容提要 函数 函数的概述函数的分类函数的定义形参和实参函数的返回值 函数 函数的概述 **函数:**实现一定功能的,独立的代码模块,对于函数的使用,一定是先定义,后使用。 使用函数的优势: ①我们可以…...
数据结构 -- 树形查找(二)平衡二叉树
平衡二叉树 定义 平衡二叉树(AVL树) – 树上的任意一点的左子树和右子树的高度之差不超过1 节点的平衡因子 左子树高-右子树高 平衡二叉树的结点的平衡因子的值只可能是-1、0、1 //平衡二叉树结点 typedef struct AVLNode{int key; //数据域int bal…...
day 29
类装饰器 类有修饰器,他的逻辑:接收一个类,返回一个修改后的类。例如 1. 添加新的方法或属性(如示例中的 log 方法)。 2. 修改原有方法(如替换 __init__ 方法,添加日志)。 3. 甚…...
Java 并发编程
黑马程序员深入学习Java并发编程 进程与线程 预备知识 java8,pom.xml <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></depe…...
windows笔记本连接RKNN3588网络配置解析
这几天拿到了一块RKNN3588的板子,准备做视觉和Ros开发用,但是拿到后就蒙蔽了,不知道怎么ssh连到板子上去,更甚者不知道怎么配置网络让RKNN能够联网更新环境,这里记录一下整个过程。主要包括以下两个内容: 1.adb连接RKNN3588开发 2. 网口连接RKNN更新板子环境开发 adb连…...
C++ asio网络编程(8)处理粘包问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 粘包问题一、粘包原因总结: 二、如何处理粘包处理方法 三、完善消息节点MsgNode代码部分细节详解memcpy(_data, &max_len, HEAD_LENGTH);_data…...
【架构美学】Java 访问者模式:解构数据与操作的双重分发哲学
一、模式定义与核心思想 访问者模式(Visitor Pattern)是一种行为型设计模式,其核心目标是将数据操作与数据结构分离。通过定义一个独立的访问者类,使得新增对数据结构中元素的操作时,无需修改元素本身的类结构&#x…...
UE5无法编译问题解决
1. vs编译 2. 删除三个文件夹 参考...
Java可变参数与Collections工具类详解
Java可变参数与Collections工具类详解 一、可变参数(Variable Arguments) 1.1 基本概念 可变参数是Java 5引入的特性,允许在方法中定义数量可变的形参。其核心特点是:形参个数可以动态变化(0个、1个、多个ÿ…...
Git版本管理命令reset
目录 命令 git reset 场景一只回退 工作区代码 场景二回退暂存库与工作区 场景三回退暂存库,工作区,版本库内容 命令 git reset git reset --[soft/mixed(默认)/hard] [文件] soft:只回退版本库中内容 mixed:回退暂存区&…...
改进模糊C均值时序聚类+编码器状态识别!IPOA-FCM-Transformer组合模型
改进模糊C均值时序聚类编码器状态识别!IPOA-FCM-Transformer组合模型 目录 改进模糊C均值时序聚类编码器状态识别!IPOA-FCM-Transformer组合模型效果分析基本描述程序设计参考资料 效果分析 基本描述 1.创新未发表!研究亮点!时序…...
Zookeeper入门(三)
Zookeeper Java 客户端 项目构建 ookeeper 官方的客户端没有和服务端代码分离,他们为同一个jar 文件,所以我们直接引入 zookeeper的maven即可, 这里版本请保持与服务端版本一致,不然会有很多兼容性的问题 1 <dependency>…...
使用Redission来实现布隆过滤器
简述布隆过滤器 布隆过滤器是一种概率型数据结构,它可以用来判断一个元素是否在一个集合中。我们当时使用的是Redisson实现的布隆过滤器。它的底层原理是,先初始化一个比较大的数组,里面存放的是二进制0或1。一开始都是0,当一个k…...
Seata源码—6.Seata AT模式的数据源代理一
大纲 1.Seata的Resource资源接口源码 2.Seata数据源连接池代理的实现源码 3.Client向Server发起注册RM的源码 4.Client向Server注册RM时的交互源码 5.数据源连接代理与SQL句柄代理的初始化源码 6.Seata基于SQL句柄代理执行SQL的源码 7.执行SQL语句前取消自动提交事务的源…...
Spring-Beans的生命周期的介绍
目录 1、Spring核心组件 2、Bean组件 2.1、Bean的定义 2.2、Bean的生命周期 1、实例化 2、属性填充 3、初始化 4、销毁 2.3、Bean的执行时间 2.4、Bean的作用域 3、常见问题解决方案 4、与Java对象区别 前言 关于bean的生命周期,如下所示: …...
目标检测新突破:用MSBlock打造更强YOLOv8
文章目录 YOLOv8的现状与挑战YOLO-MS的MSBlock简介MSBlock的工作原理MSBlock的优势 利用MSBlock改进YOLOv8替换YOLOv8主干网络中的部分模块代码实现:替换CSP模块为MSBlock 在YOLOv8的颈部(Neck)中插入MSBlock代码实现:在颈部区域插…...
[SpringBoot]Spring MVC(4.0)
获取Header 传统获取 header 从 HttpServletRequest 中获取 RequestMapping("/r8")public String r8(HttpServletRequest request) {String userAgent request.getHeader("User-Agent");return "userAgent: "userAgent;}使用浏览器访问后&…...
Linux概述:从内核到开源生态
Linux概述:从内核到开源生态 Linux 是当今计算机领域最核心的开源操作系统内核,其影响力已渗透到服务器、嵌入式设备、云计算甚至超级计算机等各个领域。本章将深入解析Linux的本质、核心架构及其背后的开源哲学。 1. Linux的本质:不只是“操…...
【ubuntu24.04】pycharm 死机结束进程
windows 远程pycharm到ubuntu执行程序 pycharm 在调试过程中,内存耗尽,然后死机了 pycharm 进程 (base) rootk8s-master-pfsrv:/home/zhangbin/下载# ps -ef | grep pycharm root 121245 3230568 0 5月14 pts/8 00:00:00 /bin/bash --rcfile …...
【PRB】深度解析GaN中最浅的受主缺陷
2025 年 1 月 16 日,Virginia Commonwealth University 的 M. A. Reshchikov 和 SUNY–Albany 的 B. McEwen 等人在《Physical Review B》期刊发表了题为《Identity of the shallowest acceptor in GaN》的文章,基于对 50 多个 Be 掺杂 GaN 样品的光致发光实验以及 Heyd-Scus…...
Flink CEP是什么?
Apache Flink 的 CEP(Complex Event Processing,复杂事件处理) 是 Flink 提供的一个库,用于在无界数据流中检测符合特定模式的事件组合。 🎯 一、什么是 CEP? ✅ 定义: CEP 是一种从连续的数据…...
基于STM32的多传感器融合的设施农业小型搬运机器人避障控制系统设计
一、系统总体设计目标 针对设施农业场景中狭窄通道、障碍物多样(如农机具、作物植株、水管)的特点,设计一款基于 STM32 的小型搬运机器人避障控制系统。系统通过多传感器融合实现 360 环境感知,采用模糊 PID 控制算法实现平滑避障,满足温室、大棚等场景的搬运需求。 二、…...
从零开始实现大语言模型(十六):加载开源大语言模型参数
1. 前言 预训练大语言模型的难点不在于算法,而在于数据和算力,绝大多数企业和机构都没有预训练大语言模型的算力资源。在工业界的大语言模型应用实践中,通常会使用领域数据微调开源大语言模型参数,以构建领域大语言模型。 本文介…...