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

Linux系统 C/C++编程基础——使用make工具和Makefile实现自动编译

ℹ️大家好,我是练小杰,今天周二了,距离除夕只有6天了,新的一年就快到了😆
本文是有关Linux C/C++编程的make和Makefile实现自动编译相关知识点,后续会不断添加相关内容 ~~
回顾:【Emacs编辑器、GCC编译器以及GDB调试器】
更多Linux 相关内容请点击👉【Linux专栏】

在这里插入图片描述

文章目录

  • make工具
    • 优点
    • 基本语法
    • make 的工作原理
  • Makefile基础
    • 配置文件基本结构
    • 配置文件说明
    • Makefile文件依赖关系链
    • Makefile的编译机制
  • Makefile的高级特性
    • 模式规则
    • 隐式规则
    • 伪目标
    • 使用通配符
    • 文件包含
  • make的工作方式
  • `Autotools`自动产生Makefile
    • Autotools工作原理
    • `configure`产生的Makefile文件
    • Autotools工具
    • Autotools应用示例

在这里插入图片描述

make工具

make 是一个根据依赖关系自动执行命令的工具。它主要用于编译源代码,但也可以用于其他需要根据文件变化自动执行任务的场景。
make 通过Makefile文件维护源程序,实现自动编译。

优点

  • 可自动化:减少手动编译的繁琐步骤。
  • 高效率:只重新编译发生变化的部分,节省时间。
  • 可维护性:通过 Makefile 集中管理构建过程,便于维护和理解。

基本语法

 make [选项] [目标名]
  • 主要选项

-f :描述文件,指定make编译所依据的描述文件(Makefile
-n:只显示生成指定目标的所有执行命令,但并不实际执行。
-p:输出Makefile文件中所有宏定义和目标文件描述。
-d:使用Debug(调试)模式。
-c :指定目录,在读取Makefile之前改变到指定的目录。

make 的工作原理

  1. 首先解析 Makefile:make 读取 Makefile,构建依赖关系图。
  2. 然后确定目标:如果没有指定目标,make 默认执行第一个目标(通常是 all)。
  3. 再检查依赖:对于每个目标,make 检查其依赖是否需要更新。
  4. 最后执行命令:如果依赖有更新或目标不存在,make 执行相应的命令生成目标。

Makefile基础

Makefilemake 的配置文件,定义了目标和依赖关系。
Makefile文件通过若干条规则来定义文件依赖关系。每条规则包括目标(target)、条件(prerequisites)和命令(command)三大要素。

配置文件基本结构

如下,是一个简单的Makefile示例

# 定义编译器
CC = gcc# 定义编译选项
CFLAGS = -Wall -g# 定义目标可执行文件
TARGET = myprogram# 定义源文件
SRCS = main.c utils.c# 生成目标文件列表
OBJS = $(SRCS:.c=.o)# 默认目标
all: $(TARGET)# 链接目标文件生成可执行文件
$(TARGET): $(OBJS)$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)# 编译 .c 文件生成 .o 文件
%.o: %.c$(CC) $(CFLAGS) -c $< -o $@# 清理生成的文件
clean:rm -f $(OBJS) $(TARGET)

配置文件说明

  • 目标(Target):要生成的文件或要执行的操作。例如,all 和 clean 都是目标。

  • 依赖(Prerequisites):生成目标所需的文件或目标。例如,$(TARGET) 依赖于 $(OBJS)

  • 命令(Commands):生成目标所需执行的命令。例如,$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)

  • 变量(Variables):用于存储可复用的字符串。例如,CC 存储编译器,CFLAGS 存储编译选项。

  • 自动变量

    $@:指明当前目标 。比如,在 %.o: %.c 规则中,$@ 代表 .o 文件。
    $<:指第一个依赖。比如,在 %.o: %.c 规则中,$< 代表 .c 文件。
    $^:指所有依赖。

Makefile文件依赖关系链

  • 这里我们通过一个Makefile示例来分析
#第1部分
textedit : main.o input.o output.o command.o files.o tools.o
cc -o textedit main.o input.o output.o command.o /
files.o utils.o
#第2部分
main.o : main.c def.h
cc -c main.c
input.o : input.c def.h command.h
cc -c input.c
output.o : output.c def.h buffer.h
cc -c output.c
command.o : command.c def.h command.h
cc -c command.c
files.o : files.c def.h buffer.h command.h
cc -c files.c
utils.o : tools.c def.h
cc -c tools.c
#第3部分
clean :
rm textedit main.o input.o output.o 
rm command.o files.o tools.o
  • 下面由一张图了解上述文件的依赖关系
    在这里插入图片描述

Makefile的编译机制

  • 如果该项目没有编译过,也就是没有生成过目标,那么就根据所给的条件来生成目标,所有源文件都要编译并进行连接。

  • 如果该项目已经编译过,生成有目标,一旦条件发生变化,则需要重新生成目标。

  • 若项目的某些源文件被修改,只编译被修改的源文件,并连接生成目标程序。

  • 如果项目的某些头文件改变,则需要编译引用了这些头文件的源文件,并连接生成目标程序。

  • make通过比较目标和条件中的文件的修改日期来识别文件是否被修改。如果条件中的文件的日期要比目标中的文件的日期要新,或者目标不存在,那么make就会执行后续定义的命令。

Makefile的高级特性

  • Makefile示例修改
#第1部分
objects = main.o input.o output.o command.o files.o utils.o
#第2部分
textedit : $(objects)
cc -o edit $(objects)
#第3部分
main.o : defs.h
input.o : defs.h command.h
command.o : defs.h command.h
output.o : defs.h buffer.h
insert.o : defs.h buffer.h
tools.o : defs.h
#第4部分
.PHONY : clean
clean :
rm edit $(objects)

模式规则

模式规则使用 % 通配符,可以匹配多个文件。

  • 表示所有 .o 文件都依赖于对应的 .c 文件
%.o: %.c$(CC) $(CFLAGS) -c $< -o $@

隐式规则

  • make 内置了一些隐式规则,可以使用命令 make -p 查看所有内置的隐式规则

比如:
.c 文件生成 .o 文件的规则。
.o 文件链接生成可执行文件的规则。

伪目标

伪目标并不是一个文件,只是一个标签

使用通配符

make支持通配符:“*”、“?”和“[...]”,用于代替一系列的文件。

文件包含

在一个Makefile文件中可以引用另一个Makefile文件。

make的工作方式

(1)读入所有的Makefile文件。
(2)读入被include语句嵌入的其他Makefile文件。
(3)初始化这些文件中的变量。
(4)推导隐式规则,并分析所有规则。
(5)为所有的目标文件创建依赖关系链。
(6)根据依赖关系,决定哪些目标需要重新生成。
(7)执行生成目标的命令。

Autotools自动产生Makefile

Autotools工作原理

  • 一个Autotools项目至少需要一个名为configure的配置脚本和一个名为Makefile.in的Makefile模板。
  • 实际上并不需要Autotools来建立Autotools包,configure是在最基本的Shell(sh)上运行的Shell脚本,它检查用户系统获取每个特征,通过模板写出Makefile文件。
  • configure在每个目录中创建所有文件,并且在命令行接受几个选项用于在不同的目录中安装文件。

configure产生的Makefile文件

configure产生的Makefile文件很标准,它们定义由GNU标准所需的所有标准目标,常用的目标如下所示。

  • makemake all:创建程序
  • make install:安装程序
  • make distclean:删除由configure产生的所有文件

Autotools工具

  • Autoconf:用于生成 configure 脚本,检测系统特性和依赖关系。

  • Automake:用于根据 Makefile.am 文件生成 Makefile.in 文件。

  • Libtool:用于简化共享库的管理和编译。

  • Autotools 的辅助工具:

Autoheader:用于生成 config.h.in
AutoMake: 用于处理 Makefile.am 中的条件语句。

Autotools应用示例

  • 步骤如下

(1)准备源代码。
(2)切换到项目工作目录,执行命令autoscan命令扫描工作目录生成configure.scan文件。
(3)将文件configure.scan重命名为configure.ac,然后再编辑修改这个配置文件。
(4)项目目录下执行aclocal命令,扫描configure.ac文件生成aclocal.m4文件。
(5)项目目录下执行autoconf命令生成configure文件。
(6)项目目录下执行autoheader命令生成config.h.in文件。
(7)项目目录下创建一个Makefile.am文件,供automake工具根据configure.in中的参数将Makefile.am转换成Makefile.in文件。
(8)在项目目录下执行automake命令生成Makefile.in文件。通常要使用选项--add-missing让automake自动添加一些必需的脚本文件。
(9)在项目目录下执行./congigure命令,基于Makefile.in生成最终的Makefile文件。该命令将一些配置参数添加到Makefile文件中。
(10)在项目目录下执行make命令,基于Makefile文件编译源代码文件并生成可执行文件。
(11)在项目目录下执行make install命令将编译后的软件包安装到系统中。
(12)如果要对外发布,可以在项目目录下执行make dist命令将程序和相关的文档打包为一个压缩文档。

晚上好,今天Linux的相关内容到这里就结束了😆
如果想了解更多,点击主页【练小杰的CSDN】
⚠️若博客里的内容有问题,欢迎指正,我会及时修改!!!
明天再见啦,各位🧍‍♂️大佬们~~

相关文章:

Linux系统 C/C++编程基础——使用make工具和Makefile实现自动编译

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天周二了&#xff0c;距离除夕只有&#xff16;天了&#xff0c;新的一年就快到了&#x1f606; 本文是有关Linux C/C编程的make和Makefile实现自动编译相关知识点&#xff0c;后续会不断添加相关内容 ~~ 回顾:【Emacs编辑器、G…...

kafka学习笔记7 性能测试 —— 筑梦之路

kafka 不同的参数配置对 kafka 性能都会造成影响&#xff0c;通常情况下集群性能受分区、磁盘和线程等影响因素&#xff0c;因此需要进行性能测试&#xff0c;找出集群性能瓶颈和最佳参数。 # 生产者和消费者的性能测试工具 kafka-producer-perf-test.sh kafka-consumer-perf-t…...

C#与AI的共同发展

C#与人工智能(AI)的共同发展反映了编程语言随着技术进步而演变&#xff0c;以适应新的挑战和需要。自2000年微软推出C#以来&#xff0c;这门语言经历了多次迭代&#xff0c;不仅成为了.NET平台的主要编程语言之一&#xff0c;还逐渐成为构建各种类型应用程序的强大工具。随着时…...

multus使用教程

操作步骤如下&#xff1a; 1.在vmware vsphere上配置所有主机使用的端口组安全项 Forged transmits 设置为&#xff1a; Accept Promiscuous Mode 设置为&#xff1a;Accept Promiscuous Mode&#xff08;混杂模式&#xff09;和Forged Transmits&#xff08;伪传输&#xff09…...

用JAVA写算法之输入输出篇

本系列适合原来用C语言或其他语言写算法&#xff0c;但是因为找工作或比赛的原因改用JAVA语言写算法的同学。当然也同样适合初学算法&#xff0c;想用JAVA来写算法题的同学。 常规方法&#xff1a;使用Scanner类和System.out 这种方法适用于leetcode&#xff0c;以及一些面试手…...

场馆预定平台高并发时间段预定实现V2

&#x1f3af; 本文档介绍了场馆预订系统接口V2的设计与实现&#xff0c;旨在解决V1版本中库存数据不一致及性能瓶颈的问题。通过引入令牌机制确保缓存和数据库库存的最终一致性&#xff0c;避免因服务器故障导致的库存错误占用问题。同时&#xff0c;采用消息队列异步处理库存…...

(1)STM32 USB设备开发-基础知识

开篇感谢&#xff1a; 【经验分享】STM32 USB相关知识扫盲 - STM32团队 ST意法半导体中文论坛 单片机学习记录_桃成蹊2.0的博客-CSDN博客 USB_不吃鱼的猫丿的博客-CSDN博客 1、USB鼠标_哔哩哔哩_bilibili usb_冰糖葫的博客-CSDN博客 USB_lqonlylove的博客-CSDN博客 USB …...

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…...

缓存之美:万文详解 Caffeine 实现原理(上)

由于社区最大字数限制&#xff0c;本文章将分为两篇&#xff0c;第二篇文章为缓存之美&#xff1a;万文详解 Caffeine 实现原理&#xff08;下&#xff09; 大家好&#xff0c;我是 方圆。文章将采用“总-分-总”的结构对配置固定大小元素驱逐策略的 Caffeine 缓存进行介绍&…...

PHP语言的网络编程

PHP语言的网络编程 网络编程是现代软件开发中不可或缺的一部分&#xff0c;尤其是在日益发展的互联网时代。PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛使用的开源脚本语言&#xff0c;专门用于Web开发。它的灵活性、易用性以及强大的社区支持使得PHP在网络…...

【技巧】优雅的使用 pnpm+Monorepo 单体仓库构建一个高效、灵活的多项目架构

单体仓库&#xff08;Monorepo&#xff09;搭建指南&#xff1a;从零开始 单体仓库&#xff08;Monorepo&#xff09;是一种将多个相关项目集中管理在一个仓库中的开发模式。它可以帮助开发者共享代码、统一配置&#xff0c;并简化依赖管理。本文将通过实际代码示例&#xff0…...

算法项目实时推流

1、搭建流媒体服务器 下载mediamtx 2、视频流直推 ffmpeg -stream_loop -1 -i DJI_20250109112715_0002_W.MP4 -r 30 -c:v libx264 -preset ultrafast -f flv rtmp://192.168.100.20:1935/live/test_chengdu1 3、硬件加速 如果硬件支持&#xff0c;可以使用硬件加速编码器&am…...

软件测试—— 接口测试(HTTP和HTTPS)

软件测试—— 接口测试&#xff08;HTTP和HTTPS&#xff09; HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头&#xff08;Request Headers&#xff09;示例请求标头 响应标头&#xff08;Response Header…...

PCL K4PCS算法实现点云粗配准【2025最新版】

目录 一、算法原理1、算法概述2、算法流程3、参考文献二、 代码实现1、原始版本2、2024新版三、 结果展示本文由CSDN点云侠原创,原文链接,首发于:2020年4月27日。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的抄袭狗。 博客长期更新,本文最近一次更新时间为…...

Docker 学习总结(85)—— docker cp 使用总结

前言 在现代软件开发中,Docker 已成为一种流行的容器化技术。无论是在开发、测试还是生产环境中,管理容器内的文件都是一项常见且重要的任务。本文将详细介绍如何使用 docker cp 命令在 Docker 容器与宿主机之间拷贝文件和目录,并结合一些实际使用场景,帮助您更高效地管理…...

《FMambaIR:一种基于混合状态空间模型和频域的方法用于图像恢复》学习笔记

paper&#xff1a;(PDF) FMambaIR: A Hybrid State Space Model and Frequency Domain for Image Restoration 目录 摘要 一、引言 二、相关工作 1、图像恢复 2、频率学习 3、状态空间模型&#xff08;SSM&#xff09; 三、框架 1、基本知识 2、整体框架 3、F-Mamba…...

PyQt5 超详细入门级教程上篇

PyQt5 超详细入门级教程 上篇&#xff1a;1-3部分&#xff1a;PyQt5基础与常用控件 第1部分&#xff1a;初识 PyQt5 和安装 1.1 什么是 PyQt5&#xff1f; PyQt5 是 Python 的图形用户界面 (GUI) 框架&#xff0c;它基于强大的 Qt 库。Qt 是一个跨平台的 C 框架&#xff0c;用…...

通信协议—WebSocket

一、WebSocket编程概念 1.1 什么是WebSocket WebSocket 是一种全双工通信协议&#xff0c;允许在客户端&#xff08;通常是浏览器&#xff09;和服务器之间建立持久连接&#xff0c;以实现实时的双向通信。它是 HTML5 标准的一部分&#xff0c;相比传统的 HTTP 请求&#xff…...

FFmpeg音视频采集

文章目录 音视频采集音频采集获取设备信息录制麦克风录制声卡 视频采集摄像机画面采集 音视频采集 DirectShow&#xff08;简称DShow&#xff09;是一个Windows平台上的流媒体框架&#xff0c;提供了高质量的多媒体流采集和回放功能&#xff0c;它支持多种多样的媒体文件格式&…...

【微机原理与接口技术】定时控制接口

文章目录 8253的引脚和工作方式内部结构和引脚工作方式方式0&#xff1a;计数结束中断方式1&#xff1a;可编程单稳脉冲方式2&#xff1a;周期性负脉冲输出方式3&#xff1a;方波发生器方式4&#xff1a;软件触发的单次负脉冲输出方式5&#xff1a;硬件触发的单次负脉冲输出各种…...

AG32 FPGA 的 Block RAM 资源:M9K 使用

1. 概述 AG32 FPGA 包含了 4 个 M9K 块&#xff0c;每个 M9K 块的容量为 8192 bits&#xff0c;总计为 4 个 M9K&#xff08;4K bytes&#xff09;。这使得 AG32 的内部存储非常适合嵌入式应用&#xff0c;能够有效地利用片上资源。 M9K 参数 参考自《AGRV2K_Rev2.0.pdf》。…...

第3天:阿里巴巴微服务解决方案概览

一、阿里巴巴微服务解决方案概述 阿里巴巴在微服务领域贡献了多个开源项目&#xff0c;形成了完整的微服务解决方案&#xff0c;广泛应用于分布式系统开发。其中&#xff0c;Spring Cloud Alibaba 是基于 Spring Cloud 构建的一站式微服务解决方案&#xff0c;集成了多个阿里巴…...

在Ubuntu上安装RabbitMQ教程

1、安装erlang 因为rabbitmq是基于erlang开发的&#xff0c;所以要安装rabbitmq&#xff0c;首先需要安装erlang运行环境 apt-get install erlang执行命令查是否安装成功&#xff1a;erl&#xff0c;疯狂 Ctrlc 就能退出命令行 2、安装rabbitmq 1、查看erlang与rabbitmq版本…...

WPF 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决办法

本章讲述&#xff1a;引发类型为“System.Windows.Forms.AxHostInvalidActiveXStateException”的异常 解决办法。 这几天在做一个WPF功能时&#xff0c;因为引用了第三方的OCX控件&#xff0c;一般来说一个对象只要实例化就行了, 但是在引用这个控件时就报引发类型为“System.…...

Vue 3中导航守卫(Navigation Guard)结合Axios实现token认证机制

在Vue 3中&#xff0c;导航守卫&#xff08;Navigation Guard&#xff09;用于拦截路由的变化&#xff0c;可以在用户访问页面前进行检查。结合Axios进行token认证机制时&#xff0c;我们可以通过导航守卫在路由跳转时&#xff0c;检查用户的认证状态&#xff0c;确保用户有有效…...

代码随想录算法【Day28】

Day28 122.买卖股票的最佳时机 II 最终利润是可以分解的 假如第 0 天买入&#xff0c;第 3 天卖出&#xff0c;那么利润为&#xff1a;prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (prices[2] - prices[1]) (prices[1] - prices[0])。 所以把利润分解为每天…...

【21】Word:德国旅游业务❗

目录 题目 NO1.2.3 NO4 NO5.6 NO7 NO8.9.10.11 题目 NO1.2.3 F12&#xff1a;另存为布局→页面设置→页边距&#xff1a;上下左右选中“德国主要城市”→开始→字体对话框→字体/字号→文本效果&#xff1a;段落对话框→对齐方式/字符间距/段落间距 NO4 布局→表对话框…...

基于 MDL 行情插件的中金所 L1 数据处理最佳实践

本文介绍了如何通过 DolphinDB 的 MDL 插件订阅并处理中金所 Level 1 实时数据。首先&#xff0c;文章简要介绍了 MDL 插件的功能和作用。它是基于 MDL 官方提供的行情数据服务 C SDK&#xff08;即 TCP 版本 MDL &#xff09;实现&#xff0c;提供了实时数据获取和处理的能力。…...

在 vscode + cmake + GNU 工具链的基础上配置 JLINK

安装 JLINK JLINK 官网链接 下载安装后找到安装路径下的可执行文件 将此路径添加到环境变量的 Path 中。 创建 JFlash 项目 打开 JFlash&#xff0c;选择新建项目 选择单片机型号 在弹出的窗口中搜索单片机 其他参数根据实际情况填写 新建完成&#xff1a; 接下来设置…...

靶机复现-pikachu靶机文件包含漏洞

本篇文章旨在为网络安全渗透测试靶机复现学习。通过阅读本文&#xff0c;读者将能够对渗透pikachu靶场文件包含漏洞复现有一定的了解 原文学习链接 CSDN博主&#xff1a;One_Blanks主页地址 靶机资源下载 PHPStudy pikachu 一、前言 文件包含漏洞是编程中的一种安全隐患&a…...

如何写出优秀的提示词?ChatGPT官方的六种方法

使用ChatGPT时&#xff0c;提示词&#xff08;Prompt&#xff09;的质量直接影响到生成结果的好坏。ChatGPT官方文档中提供了六种优化提示词的方法&#xff0c;这些方法能够帮助用户更好地利用ChatGPT&#xff0c;提升其生成内容的准确性和实用性。本文将结合中文习惯和新的示例…...

【数据结构】顺序表和链表

线性表 线性表是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线。但是在物理结构上并不一定是连续的&#xff0c;线…...

StarRocks强大的实时数据分析

代码仓库&#xff1a;https://github.com/StarRocks/starrocks?tabreadme-ov-file StarRocks | A High-Performance Analytical Database 快速开始&#xff1a;StarRocks | StarRocks StarRocks 是一款高性能分析型数据仓库&#xff0c;使用向量化、MPP 架构、CBO、智能物化…...

20250121在Ubuntu20.04.6下使用Linux_Upgrade_Tool工具给荣品的PRO-RK3566开发板刷机

sudo upgrade_tool uf update.img 20250121在Ubuntu20.04.6下使用Linux_Upgrade_Tool工具给荣品的PRO-RK3566开发板刷机 2025/1/21 11:54 百度&#xff1a;ubuntu RK3566 刷机 firefly rk3566 ubuntu upgrade_tool烧写详解 https://wiki.t-firefly.com/Core-3566JD4/03-upgrad…...

python学opencv|读取图像(四十一 )使用cv2.add()函数实现各个像素点BGR叠加

【1】引言 前序已经学习了直接在画布上使用掩模&#xff0c;会获得彩色图像的多种叠加效果&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;四十&#xff09;掩模&#xff1a;三通道图像的局部覆盖-CSDN博客 这时候如果更进一步&#xff0c;直接…...

150 Linux 网络编程6 ,从socket 到 epoll整理。listen函数参数再研究

一 . 只能被一个client 链接 socket例子 此例子用于socket 例子&#xff0c; 该例子只能用于一个客户端连接server。 不能用于多个client 连接 server socket_server_support_one_clientconnect.c /* 此例子用于socket 例子&#xff0c; 该例子只能用于一个客户端连接server。…...

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证9)

测试数据库中只有之前记录温湿度及烟雾值的表中数据较多&#xff0c;在该数据库中增加AppUser表&#xff0c;用于登录用户身份查询&#xff0c;数据库表如下所示&#xff1a;   项目中安装SqlSugarCore包&#xff0c;然后修改控制器类的登录函数及分页查询数据函数&#xff…...

【数据分析(二)】初探 Pandas

目录 引言1. 基本数据结构1.1. Series 的初始化和简单操作1.2. DataFrame 的初始化和简单操作1.2.1. 初始化与持久化1.2.2. 读取查看1.2.3. 行操作1.2.4. 列操作1.2.5. 选中筛查 2. 数据预处理2.0. 生成样例表2.1. 缺失值处理2.2. 类型转换和排序2.3. 统计分析 3. 数据透视3.0.…...

大数据与AI驱动的商业查询平台:企业市场拓展的变革引擎​

在竞争白热化的商业环境里&#xff0c;企业对准确市场信息的高效获取能力&#xff0c;直接关系到业务拓展的成败。商业查询平台借助大数据和人工智能技术&#xff0c;为企业提供精准客户筛选、市场拓展分析以及风险评估服务&#xff0c;正逐渐成为企业市场开拓的得力助手。本文…...

k8s namespace绑定节点

k8s namespace绑定节点 1. apiserver 启用准入控制 PodNodeSelector2. namespace 添加注解 scheduler.alpha.kubernetes.io/node-selector3. label node 1. apiserver 启用准入控制 PodNodeSelector vim /etc/kubernetes/manifests/kube-apiserver.yaml spec:containers:- co…...

ChatGPT被曝存在爬虫漏洞,OpenAI未公开承认

OpenAI的ChatGPT爬虫似乎能够对任意网站发起分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;而OpenAI尚未承认这一漏洞。 本月&#xff0c;德国安全研究员Benjamin Flesch通过微软的GitHub分享了一篇文章&#xff0c;解释了如何通过向ChatGPT API发送单个HTTP请求…...

2024微短剧行业生态洞察报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p39072 本报告合集洞察从多个维度全面解读微短剧行业。在行业发展层面&#xff0c;市场规模与用户规模双增长&#xff0c;创造大量高收入就业岗位并带动产业链升级。内容创作上&#xff0c;精品化、品牌化趋势凸显&#xff0c;题材走…...

【JavaSE】(8) String 类

一、String 类常用方法 1、构造方法 常用的这4种构造方法&#xff1a;直接法&#xff0c;或者传参字符串字面量、字符数组、字节数组。 在 JDK1.8 中&#xff0c;String 类的字符串实际存储在 char 数组中&#xff1a; String 类也重写了 toString 方法&#xff0c;所以可以直…...

算法竞赛之差分进阶——等差数列差分 python

目录 前置知识进入正题实战演练 前置知识 给定区间 [ l, r ]&#xff0c;让我们把数组中的[ l, r ] 区间中的每一个数加上c,即 a[ l ] c , a[ l 1 ] c , a[ l 2] c , a[ r ] c; 怎么做&#xff1f;很简单&#xff0c;差分一下即可 还不会的小伙伴点此进入学习 进入正题 …...

细说STM32F407单片机电源低功耗StopMode模式及应用示例

目录 一、停止模式基础知识 1、进入停止模式 2、停止模式的状态 3、退出停止模式 4、SysTick定时器的影响 二、停止模式应用示例 1、示例功能和CubeMX项目配置 &#xff08;1&#xff09;时钟 &#xff08;2&#xff09;RTC &#xff08;3&#xff09;ADC1 &#xf…...

LeetCode hot 力扣热题100 二叉树的中序遍历(非递归)

以下是代码中每行的详细注释以及整体思路&#xff1a; class Solution { public:vector<int> inorderTraversal(TreeNode* root) {// 定义存储结果的向量&#xff0c;用于存储中序遍历结果vector<int> result;// 定义一个栈&#xff0c;存储节点和访问状态。pair的…...

Flink底层架构与运行流程

这张图展示了Flink程序的架构和运行流程。 主要组件及功能&#xff1a; Flink Program&#xff08;Flink程序&#xff09;&#xff1a; 包含Program code&#xff08;程序代码&#xff09;&#xff0c;这是用户编写的业务逻辑代码。经过Optimizer / Graph Builder&#xff08…...

人工智能之深度学习_[4]-神经网络入门

文章目录 神经网络基础1 神经网络1.1 神经网络概念1.1.1 什么是神经网络1.1.2 如何构建神经网络1.1.3 神经网络内部状态值和激活值 1.2 激活函数1.2.1 网络非线性因素理解1.2.2 常见激活函数1.2.2.1 Sigmoid 激活函数1.2.2.2 Tanh 激活函数1.2.2.3 ReLU 激活函数1.2.2.4 SoftMa…...

ASP.NET Blazor部署方式有哪些?

今天我们来说说Blazor的三种部署方式&#xff0c;如果大家还不了解Blazor&#xff0c;那么我先简单介绍下Blazor Blazor 是一种 .NET 前端 Web 框架&#xff0c;在单个编程模型中同时支持服务器端呈现和客户端交互性&#xff1a; ● 使用 C# 创建丰富的交互式 UI。 ● 共享使用…...

Cyber Security 101-Security Solutions-Firewall Fundamentals(防火墙基础)

了解防火墙并亲身体验 Windows 和 Linux 内置防火墙。 任务1&#xff1a;防火墙的用途是什么 我们看到商场、银行、 餐馆和房屋。这些警卫被安置在 这些区域用于检查进出人员。这 维护此检查的目的是确保没有人在没有 被允许。这个警卫充当了他所在区域和访客之间的一堵墙。 …...