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

【Linux】Linux下的gcc/g++编译器与动静态库

目录

  • 对程序的认知&&初识gcc
  • 逐步分析程序的编译步骤
    • 预编译【进行宏替换】
      • gcc需要执行的指令 ⭐
    • 编译【C语言——>汇编语言】
      • gcc要执行的指令⭐
    • 汇编【汇编语言——>可重定位目标二进制文件】
      • gcc需要执行的指令
    • 链接【生成可执行文件或库文件】
      • gcc需要执行的指令 ⭐
    • 巧记gcc命令选项与生成文件后缀【⭐】
    • gcc与g++的区别
  • 通过链接过程,理解动静态库
    • 库的初步认识
    • 动态库与静态库
      • 动静态库的感性理解
    • 动态链接和静态链接的区别
  • end

对程序的认知&&初识gcc

  • 对于一个程序来说,要经过编辑,编译,链接,运行四个阶段才能真正生成一个程序

那么如何使用gcc这个编译器呢?

格式 gcc [选项] 要编译的文件 [选项] [目标文件]

逐步分析程序的编译步骤

预编译【进行宏替换】

  • 头文件的展开 —— 编译器第一件做的事
  • 宏定义的替换
  • 去注释
  • 条件编译的执行

gcc需要执行的指令 ⭐

gcc -E file.c -o file.i	
  • -E 表示让gcc在预处理后停止编译过程
  • -o,后面永远跟着编译后要生成的目标文件
  • .c结尾的表示文件源程序,.i结尾的表示已经经过预处理的C与程序
    在这里插入图片描述

编译【C语言——>汇编语言】

在编译阶段会执行以下四件事

  • 语法分析
  • 词法分析
  • 语义分析
  • 符号汇总

以上其实就是在将C语言的代码转化为汇编代码的一个流程

gcc要执行的指令⭐

gcc -S file.i -o file.s
  • -S表示在编译结束后停止,不再进行汇编
  • -o和前面一样,后面跟着希望生成的目标文件
  • .s结尾的表示编译后生成的汇编文件
    在这里插入图片描述

汇编【汇编语言——>可重定位目标二进制文件】

  • 在汇编阶段会执行以下两件事

  • 将汇编指令转换为二进制指令【需要特定的文本阅读器readelf】

  • 形成符号表

gcc需要执行的指令

gcc -c file.s -o file.o
  • -c表示gcc编译到目标代码
  • .s结尾的表示经过编译后的汇编代码,.o结尾的表示汇编后的二进制代码

在这里插入图片描述

  • 在汇编这一块,就是将汇编语言翻译成可以重定位的二进制文件,里面的二进制代码我们人眼是看不到的,要特定的阅读器才可以看得明白

  • 有几个源文件【.c】就会生成几个目标文件【.o】

链接【生成可执行文件或库文件】

  • 在链接阶段会执行以下两件事
  • 合并段表
  • 符号表的合并和重定位

gcc需要执行的指令 ⭐

gcc file.o -o mytest

在这里插入图片描述

巧记gcc命令选项与生成文件后缀【⭐】

  • 命令选项:-E -S -c 【键盘左上角的Esc,不过中间的S要大写】
  • 文件后缀:.i .s .o 【.iso为镜像文件的后缀,ISO也为国际标准化组织】
    在这里插入图片描述

gcc与g++的区别

看了这么久gcc,我们来看看g++,其实这两个编译器的用法是一模一样的,只是对于gcc才说是用来编译C语言代码,对于g++来说是用来编译C++的代码

  • 不过这只是笼统的说法,其实对于gcc而言也是可以编译C++代码的,对于g++而言是可以编译C语言代码的

通过链接过程,理解动静态库

库的初步认识

  • 首先提出一个问题:为啥我们能在Linux下直接编写和编译C语言程序呢?
  • 因为:Linux系统默认已经携带了语言级别的头文件和语言对应的库!
  • 可以先来看看系统中的头文件所在目录,然后就可以看到我们熟悉的stdio.h、stdlib.h等等

在这里插入图片描述

  • 像printf和scanf这些函数就是在头文件stdio.h实现的,因为头文件里面实现了这两个函数,所以我们才可以使用pinrf和scanf函数

其实我们在安装VS2019、VS2022的时候。最重要的一个工作是什么呢?其实在这么几十分钟的安装时间里,这个自动化程序更多的是在帮我们下载并安装语言的头文件和库文件【编译需要的两个东西】

动态库与静态库

  • Linux下:以lib作为前缀,.so作为后缀【libXXXXXX.so】
    在这里插入图片描述

  • Windows下:以.dll作为后缀
    -在这里插入图片描述

  • -Linux下:以lib作为前缀,.a作为后缀【libXXXXXX.so】
    在这里插入图片描述

  • Windows下:以.lib作为后缀

在这里插入图片描述

动静态库的感性理解

接下来我们通过一个故事来讲解动态库和静态库

  • 你呢上初中了,你的成绩还不错,处于中上游的水平,但是你网瘾有点大,必须要学习完后打游戏才能安心学习,如果只学习不打游戏,你是无法学习的。这时候你找到你的初中学长,学长学校附近有没有网咖呀,我想学习之余去打一会游戏,学长就说,北门出去转弯有一个小蚂蚁网咖,可以去哪里
  • 就这样到了周末,你在上午完成了语文作业和数学作业,中午吃完饭后,你想去玩游戏,这时候你就想起学长说的那家小蚂蚁网咖,你就偷偷从北门溜出去玩了,准备下午回来再写英语和历史作业。此时呢就看到你学长和你说的 #小蚂蚁网吧🐜#,于是就进去找到网管,网管给你分配了一个座位,3块钱一个小时,你买了两个小时,然后就开始自己疯狂的游戏
    在这里插入图片描述

1.我们可以把写数学和语文作业当成执行程序中的顺序语句和循环语句和判断语句和算法等序列,你执行到无法在直接在程序里指向的语句,如调用函数,去需要去动态库里去调用(小蚂蚁网咖
2为什么呢?就相当于是 我们在写代码的时候可能有一段逻辑写不下了,因为这段逻辑很复杂。但是要是实现这个逻辑刚好有这个库函数,所以你就去会调用这个库函数。这个库函数就相当于是网吧)
3.但是你怎么知道这个库函数在哪里的呢?——>你学长告诉你的呗。也就相当于你知道了库函数中这个函数的地址在哪里,你只需要顺着北门然后根据这个地址找过去就可以了

那这么来说你的学长就相当于是一个链接器,网吧就是一个动态库,你知道了动态库中所需要的这个函数的地址,然后你就顺藤摸瓜🍈地找到了这个地方,你的学长就做了一个链接的功能
接下来就是你上网的过程就是调用动态库中库函数的过程,那么打完后动态库的库函数也调用完了

  • 但是事情完了嘛,当然没有,才刚刚开始。。。
  • 你们学校呢也有很多同学喜欢玩游戏,也通过他们各自的学长知道了这个【小蚂蚁网吧】,于是周末也来玩,但是呢这个网吧似乎不太安全,突然警察👮‍造访,说他们涉嫌非法经营🈲,然后这个网吧就被封了,你和你的同校同学都玩不了,知道默默回学校
    在这里插入图片描述
  • 所以我们看到这个是共享的,但是动态库一旦不能使用了,那么我们再想去使用里面的库函数就不可能了,那么怎么办呢?
  • 这时候期末考试了,你的成绩下滑了很多,这时候你的父亲来问你,你这么回事,成绩下滑这么多,这时候你就抱怨,学校一天就只让我们学习,之前哪里还有小蚂蚁网咖可以玩游戏,但是现在没有了,我如果只学习没有游戏打,我就效率很低。
  • 这时候你的父亲就说,好没问题,我给你买一台电脑给你玩,但是你要保证你必须把成绩回上来。
  • 这时候开学了,你就高高兴兴把你父亲给你的电脑抱在学校宿舍里面去了。这时候你打开电脑一看,
    这个电脑不就是之前你在小蚂蚁网咖里面玩的那台吗,一问父亲才知道,他就是在小蚂蚁网咖老板哪里专门去买的。这下爽了,鼠标和键盘都不需要重新熟悉。

1.可以看到,其实对于从网吧中拿来的电脑,就是库中的那个函数,也就是将库中的整个函数直接放到你的程序中来,这样你完全不需要再到库中去调用函数了,直接在你的程序中使用即可
2.当你的同学去到黑网吧,然后得知被封了之后无奈返回后,这个时候你有这自己的电脑,完全不需要再去考虑是否有电脑可用的安全性了,但就是这个电脑放在宿舍可能有些占位子,原本比较宽阔的空间就要被一台电脑给霸占了,那确实是没办法

动态链接和静态链接的区别

接下去我们对【动态库】和【静态库】做一个分析梳理,更好地理解动静态库的原理

  • ✔【动态链接】 —— 仅仅是把库中的你所用的方法的地址调用方法到程序里 网吧
  • ✔【动态链接】 —— 仅仅是把库中的你所用的方法的地址调用方法到程序里 网吧
  • 动态库缺点:我们的程序还是依赖任何库,一旦动态库缺失,我们的程序便无法运行

1.可以联想到,大家只要通过学长知道小蚂蚁网咖的地址,就都可以去玩里面的电脑。只需要知道网吧的地址在哪里,然后直接去即可,也就和函数一样直接进行一个调用,对自己的程序而言不需要消耗任何的空间
2.但是一旦网咖被封,那就无法通过这个地址再去玩里面的电脑了。也就是动态库丢失了,那此时我们再去调用库中的函数就会失败,这是动态库比较致命的一点

【静态链接】 —— 自己代码当中用到的库中的方法把函数实现直接拷贝到程序里

  • 静态库优点:我们的程序不依赖任何库,自己就可以独立运行
  • 静态库缺点:因为自身的拷贝问题比较浪费空间

1.对于静态库来说,确实是比较方便,不需要再去库里面调函数了,直接把这个函数整体拷贝到我们的程序中即可。也就是我们不需要依赖任何的库,也不用去大象网吧🐘
2.但是呢我们的程序也会变得非常庞大。我们是把函数的实现代码都放在我们的程序中,这需要大量的内存空间

end

感性大家的阅读,希望对大家有帮助,谢谢

相关文章:

【Linux】Linux下的gcc/g++编译器与动静态库

目录 对程序的认知&&初识gcc逐步分析程序的编译步骤预编译【进行宏替换】gcc需要执行的指令 ⭐ 编译【C语言——>汇编语言】gcc要执行的指令⭐ 汇编【汇编语言——>可重定位目标二进制文件】gcc需要执行的指令 链接【生成可执行文件或库文件】gcc需要执行的指令 …...

从暴力到动态规划再到双指针:使用 Java 探索接雨水问题的不同解法

文章目录 一、问题描述二、暴力法(Brute Force)思路实现代码 三、动态规划法(Dynamic Programming)思路实现代码 四、双指针法(Two Pointers)思路实现代码 五、方法对比 在本文中,我们将探讨经典…...

CI/CD(十) Jenkins共享库与k8s集成

一、创建k8skey(v1.28.2版本) 1、查看k8s集群名称 rootk8s-master:~# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * kubernetes-adminkubernetes kubernetes kuber…...

5.Elasticsearch - Spring Data 框架

一、Kibana 介绍 Kibana 是一个免费且开放的用户界面,能够让你对 Elasticsearch 数据进行可视化,并让你在 Elastic Stack 中进行导航。你可以进行各种操作,从跟踪查询负载,到理解请求如何流经你的整个应用,都能轻松完…...

如何通过技术手段降低开发成本

通过技术手段降低开发成本的关键在于: 自动化工具的使用、优化开发流程、云计算资源的利用、开发技术栈的精简与创新、团队协作平台的高效管理。 其中,自动化工具的使用是最为有效的技术手段之一。自动化工具通过减少人工干预和重复性工作,大…...

java android持久化数据

1. SQLite 数据库(Android 内置) 1.1 创建数据库帮助类 public class DatabaseHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME "MyDatabase.db";private static final int DATABASE_VERSION 1;// 表名和列名…...

Chromium 134 编译指南 macOS篇:系统环境准备(一)

1. 引言 在当今浏览器领域,开源项目Chromium的地位举足轻重。作为众多现代浏览器的技术基础,Chromium不仅驱动着Google Chrome,还为Microsoft Edge、Opera等众多知名浏览器提供了核心引擎。对于热衷于浏览器技术研究,或希望开发自…...

性能优化-Spring参数配置、数据库连接参数配置、JVM调优

SpringBoot配置参数 server:tomcat:#线程池配置max-threads: 200 # 最大工作线程数(建议:2~4倍CPU核心数,如16核设200-400)min-spare-threads: 20 # 最小空闲线程(应对突发流量,…...

【2025年泰迪杯数据挖掘挑战赛】B题 数据预处理+问题建模与求解

目录 2025年泰迪杯数据挖掘挑战赛 B题数据预处理 问题一、二建模与求解三、数据预处理3.1 基于多核并行的协同处理方法的数据读取3.2 基于多核并行协同处理的数据聚合 四、问题一五、问题一技术文档与matlab代码 2025年泰迪杯数据挖掘挑战赛 B题 数据预处理 问题一、二建模与求…...

git怎么使远程分支回退到指定的节点处

git使远程分支回退到指定的节点 引言场景描述步骤 引言 最近提交代码的时候,总将分支合并错,原本要合到A分支,结果合并到了B分支,这样就导致b分支需要回退到我没有合并之前的节点处。 本文记录下怎么将远程分支回退到指定的节点。…...

Spring Boot 使用 QQ 企业邮箱发送邮件的完整指南(含 535 错误排查)

在 Spring Boot 项目中集成邮件功能非常常见,尤其是用户注册通知、异常报警、定期报告等场景。但如果你使用的是 QQ 企业邮箱(smtp.exmail.qq.com),可能会遇到如下典型错误: 535 Error: authentication failed, system busy这篇博客将详细解析出现该问题的原因、排查路径…...

MySQL联合查询||多表查询

mysql中如何注释...

java 递归遍历JSON字符串获取某个字段的值

在 Java 中,若要递归遍历 JSON 字符串并获取特定字段的值,可借助 Jackson 库。以下是一个示例代码,它能实现递归遍历 JSON 字符串并获取指定字段的值。 import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.data…...

OceanBase4.0社区版 单机快速部署

以下内容结合OceanBase官方文档进行安装部署测试 官方文档地址:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012693 一.部署方式 OceanBase 企业版: • 使用 OCP 部署 OceanBase 集群 • 使用 OBD 部署 OceanBase 集群 •…...

CExercise_05_1伪随机数_2编写程序模拟掷骰子的游戏(每一次投掷,都投掷两个骰子)

题目: 编写程序模拟掷骰子的游戏(每一次投掷,都投掷两个骰子)。每局游戏的规则如下: 第一次掷的时候: 如果点数之和为 7 或 11 则获胜; 如果点数之和为2、3或12则落败; 其他情况下的…...

【更新至2023年】2000-2023年中国气候政策不确定性指数(全国、省、市三个层面)

【更新至2023年】2000-2023年中国气候政策不确定性指数(全国、省、市三个层面) 1.时间:2000-2023年 2.来源:使用人工审计和深度学习算法MacBERT模型,基于中国《人民日报》《光明日报》《经济日报》《环球时报》《科技…...

机器学习中 提到的张量是什么?

在机器学习中, 张量(Tensor) 是一个核心数学概念,用于表示和操作多维数据。以下是关于张量的详细解析: 一、数学定义与本质 张量在数学和物理学中的定义具有多重视角: 多维数组视角 传统数学和物理学中,张量被定义为多维数组,其分量在坐标变换时遵循协变或逆变规则。例…...

【Python爬虫】简单案例介绍3

本文继续接着我的上一篇博客【Python爬虫】简单案例介绍2-CSDN博客 目录 3.3 代码开发 3.3 代码开发 编写代码的步骤: request请求科普中国网站地址url,解析得到类名为"list-block"的div标签。 for循环遍历这个div列表里的每个div&#xff0…...

对于客户端数据存储方案——SQLite的思考

SQLite 比较适合进行本地小型数据的存储,在功能丰富性和并发能力上不如 MySQL。 数据类型差异 SQLite 使用动态类型系统:只有 5 种基本存储类 (NULL, INTEGER, REAL, TEXT, BLOB) 类型亲和性:SQLite 会将声明的列类型映射到最接近的存储类 …...

基于Nacos+动态线程池的分布式系统弹性设计:投行交易与风控场景实战

业务痛点和需求分析 在投行高频交易系统和对公贷款风控计算引擎中,我们面临两大核心挑战: 流量洪峰波动剧烈 交易时段TPS可达10万/秒,非交易时段下降80%风控模型计算存在突发性批量任务(如月末集中评审) 架构设计与…...

高并发内存池(定长内存池基础)

定长内存池的设计 定长内存池定长内存池的原理讲解代码实现定义对象New对象的主要逻辑delete对象的主要逻辑完整代码 定长内存池 为什么我们要设计这个定长内存池呢?首先malloc是c标准库中向堆申请空间的接口,变相的说malloc是普遍性,而我们…...

element-ui plus 中 filter-method 函数多次触发问题解决

前情提要 点进这个文章的小伙伴,应该都是为了解决一个需求,把原本的前端过滤改为后端过滤,但是将filter-method修改为后端取数据后,发现其触发了很多次。博主也是在修改表格过滤时用到了这个坑,本篇文章为大家解决一下…...

物联网场景实战:智能电表数据管理与分析(一)

智能电表与物联网的融合 在当今数字化时代,随着物联网(IoT)技术的飞速发展,各行业都在积极探索如何利用这一技术实现转型升级 。电力行业也不例外,智能电表作为电力系统与物联网融合的关键节点,正发挥着越来…...

网络中的基本概念

这篇文章主要介绍我们在学习网络的过程中,会碰到的一系名词,对其概念进行解释,让大家知道这些都是干什么的。 网络:若干个节点和连接这些节点的链路组成的,用于实现信息交换资源共享。 节点:网络中各种接地…...

行锁(Row Locking)和MVCC(多版本并发控制)

在数据库系统中,**行锁(Row Locking)和MVCC(多版本并发控制)**是两种不同的并发控制机制,它们的使用场景和原理有显著区别。以下是详细对比和适用场景分析: 一、行锁(Row Locking&am…...

AlexNet神经网络详解及VGGNet模型和

AlexNet模型细节 一共8层,5个卷积层,3个全连接层 AlexNet工程技巧 多GPU训练,ReLU激活函数,LRN归一化,Dropout,重叠池化,数据增强等 多GPU训练 除了将模型的神经元进行了并行,还使…...

【Linux网络】Socket 编程TCP

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12891150.html 目录 TCP socket API 详解 socket(): bind(): listen(): accept(): connect V0…...

代码训练day27贪心算法p1

贪心的本质是选择每一阶段的局部最优,从而达到全局最优 贪心算法一般分为如下四步: 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 1.分发饼干 先将饼干数组和小孩数组排序。 然后从后向前遍历…...

基于RV1126开发板的车辆检测算法开发

1. 车辆检测简介 车辆检测是一种基于深度学习的对人进行检测定位的目标检测,能广泛的用于园区管理、交通分析等多种场景,是违停识别、堵车识别、车流统计等多种算法的基石算法。 人脸检测算法mAP0.5CAR0.78029 基于EASY-EAI-Nano硬件主板的运行效率&…...

Leetcode——137 260找出只出现一次的数

文章目录 找出只出现一次的数引入Leetcode 260Leetcode 137 找出只出现一次的数 对于数组中有一类题,即某些数据在数组中只出现一遍,需要我们找出,今天我们来看看这个类型的题。 引入 想必大家应该见过这么一道题: 现给定一个数…...

【多线程-第四天-自己模拟SDWebImage的下载图片功能-看SDWebImage的Demo Objective-C语言】

一、我们打开之前我们写的异步下载网络图片的项目,把刚刚我们写好的分类拖进来 1.我们这个分类包含哪些文件: 1)HMDownloaderOperation类, 2)HMDownloaderOperationManager类, 3)NSString+Sandbox分类, 4)UIImageView+WebCache分类, 这四个文件吧,把它们拖过来…...

【5G学习】基本概念之多频资源以及子载波和信道

在5G通信中,子载波、信道以及时域、频域、码域、空域是构建无线传输系统的核心概念。它们共同定义了信号的传输方式、资源分配和多维复用技术。以下是详细解释及其相互关系: 一、核心概念定义 1. 子载波(Subcarrier) 定义&#…...

鸿蒙动画与交互设计:ArkUI 3D变换与手势事件详解

大家好,我是 V 哥。 在鸿蒙 NEXT 开发中,ArkUI 提供了丰富的 3D 变换和手势事件功能,可用于创建生动且交互性强的用户界面。下面详细介绍 ArkUI 的 3D 变换和手势事件,并给出相应的 ArkTS 案例代码。 1. ArkUI 3D 变换 ArkUI 支…...

敏感数据触发后怎么保障安全?

当敏感数据被触发或泄露时,需立即采取系统化措施控制风险。以下为分阶段应对策略,结合技术与管理手段: 一、即时响应阶段 阻断扩散 隔离受影响系统:立即断开网络连接、暂停服务或关闭相关端口。 终止可疑进程:通过华…...

【CVE-2024-10929】ARM CPU漏洞安全通告

安全之安全(security)博客目录导读 目录 一、概述 二、CVE详情 三、受影响产品 四、建议措施 五、致谢 六、版本历史 一、概述 在部分基于Arm架构的CPU中发现了一个潜在安全问题,称为Spectre-BSE(Branch Status Eviction,分支状态驱逐…...

高级java每日一道面试题-2025年4月06日-微服务篇[Nacos篇]-如何诊断和解决Nacos中的常见问题?

如果有遗漏,评论区告诉我进行补充 面试官: 如何诊断和解决Nacos中的常见问题? 我回答: 在Java高级面试中诊断和解决Nacos常见问题的综合回答 在Java高级面试中,当被问及如何诊断和解决Nacos中的常见问题时,可以从以下几个方面进行详细阐述…...

【模块化拆解与多视角信息3】教育背景:学历通胀时代的生存法则

教育背景:学历通胀时代的生存法则 写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算…...

无人机3S与4S电池技术对比!

一、基础参数对比 1. 电芯与电压 3S电池:由3节锂电芯串联组成,标称电压为11.1V(单节3.7V3),满电电压约12.6V。 4S电池:由4节电芯串联,标称电压14.8V(3.7V4)&#…...

linux电源管理(二),内核的CPUFreq(DVFS)和ARM的SCPI

更多linux系统电源管理相关的内容请看:https://blog.csdn.net/u010936265/article/details/146436725?spm1011.2415.3001.5331 1 简介 CPUFreq子系统位于drivers/cpufreq目录下,负责进行运行过程中CPU频率和电压的动态调整,即DVFS (Dynami…...

短波红外高光谱相机:高光谱成像在塑料分选中的应用

随着塑料工业的迅猛发展,塑料包装制品需求量增长迅速,消耗量不断上升,废塑料产生量也急剧增加。由于塑料化学结构稳定,难以自然降解,不当使用和处置及累积会造成严重的环境污染和资源浪费。因此,快速、精准…...

通过OBD部署OceanBase社区版集群v4.3.5

以下内容结合OceanBase官方文档进行安装部署测试 官方文档地址:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016072 一.环境准备 准备三台虚拟机,配置信息如下 192.168.232.8 centos7.9 4c16g 硬盘100g 192.168.232.9 …...

【Java学习笔记】注释

注释 为什么要写注释? 养成良好的编程习惯,方便后续阅读和查看,理顺思路,增加可读性 对自己的代码负责,对别人负责 说明 1. 被注释的文字,不会被 JVM(虚拟机)解释执行 2. 多行注…...

Python 调用 YOLO ONNX

Python 调用 YOLO ONNX 1 下载ONNX文件2 Python代码 1 下载ONNX文件 ONNX下载地址 2 Python代码 import cv2 from ultralytics import YOLO# 加载 YOLOv11 model YOLO(./yolo11n.pt)# 读取图片 image_path ./11.png img cv2.imread(image_path)# 推理(可以传…...

Linux 下 Module 工具的介绍与使用

参考: https://www.fasteda.cn/post/22.html https://modules.readthedocs.io/en/latest/module.html Linux 下 Module 工具的介绍与使用 一、前言 在 Linux 中,当同一款编辑器、运行库、软件存在多个版本且多个版本都需要在不同的场景或人员使用时&a…...

批量归一化(Batch Normalization)原理与PyTorch实现

批量归一化(Batch Normalization)是加速深度神经网络训练的常用技术。本文通过Fashion-MNIST数据集,演示如何从零实现批量归一化,并对比PyTorch内置API的简洁实现方式。 1. 从零实现批量归一化 1.1 批量归一化函数实现 import t…...

Flutter 文本组件深度剖析:从基础到高级应用

引言 在 Flutter 应用开发中,文本是向用户传达信息的重要媒介。Flutter 提供了丰富且强大的文本组件和相关属性,使开发者能够轻松实现多样化的文本展示效果。无论是简单的静态文本显示,还是复杂的富文本渲染,Flutter 都能满足需求…...

FABC是什么?

在销售和品牌营销领域,FABC 是一种用于构建销售话术和营销信息的框架,其全称为 Features(特点)、Advantages(优势)、Benefits(利益)、Case(案例)。该模型帮助…...

【MySQL】MVCC工作原理、事务隔离机制、undo log回滚日志、间隙锁

一、什么是MVCC? MVCC,即 Multiversion Concurrency Control(多版本并发控制),它是数据库实现并发控制的一种方式。 MVCC 的核心思想是: 为每个事务提供数据的“快照”版本,从而避免加锁&…...

Spring Boot 集成 RocketMQ 全流程指南:从依赖引入到消息收发

前言 在分布式系统中,消息中间件是解耦服务、实现异步通信的核心组件。RocketMQ 作为阿里巴巴开源的高性能分布式消息中间件,凭借其高吞吐、低延迟、高可靠等特性,成为企业级应用的首选。而 Spring Boot 通过其“约定优于配置”的设计理念&a…...

PCL 点云RANSAC提取平面(非内置函数)

文章目录 一、算法实现1.1实现步骤二、实现代码三、实现效果参考资料一、算法实现 1.1实现步骤 1、确定模型。三个点确定一个平面,方程式为 a x + b y + c z + 1 = 0 ax+by+cz+1=0...