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

GNU,GDB,GCC,G++是什么?与其他编译器又有什么关系?

文章目录

  • 前言
  • 1. GNU和他的工具
    • 1.1 gcc与g++
    • 1.2 gdb
  • 2.Windows的Mingw/MSVC
  • 3.LLVM的clang/clang++
  • 4.Make/CMake


前言

在开始之前我们先放一段Hello World:hello.c

#include <stdio.h>int main()
{printf("Hello World");return 0;
}

然后就是一段老生常谈的描述了:要想让这段代码在Linux上运行,我们需要使用GCC预编译:将hello.c和stdio.h预编译为hello.i编译:将hello.i编译为hello.s汇编:将hello.s翻译为机器指令hello.o(.o目标文件)链接:链接各种需要的库和其他目标文件(该hello程序不需要)得到可执行文件hello.out(相当于windows的.exe)整个过程将高级语言翻译成了机器语言,而编译器,就是这样的一个工具。GCC可以完成从预编译编译,汇编,链接整个过程。但是平时使用Visual Studio等软件时并没有接触到这个过程,因为VS是高度集成开发环境(IDE、Integrated Development Environment),集成了代码编辑器,编译器,调试器和图像化用户界面,上述所有程序编译和链接过程都用一步build构建带过了。

1. GNU和他的工具

首先GNU是什么呢,GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。因为当时1969年在贝尔实验室诞生的Unix是商业操作系统。
看到这就知道了吧,Stallman便是开源运动的先驱。而他最初的目标"创建一套完全自由的操作系统"也实现了,就是GNU/Linux,简称Linux!

1.1 gcc与g++

gcc 、 g++分别是gnu的c & c++编译器 。
首先我们可以将GCC/G++看成一个整体,不存在GCC专门编译C语言,G++专门编译C++语言这种分别,因为编程语言发展至今是非常复杂的,编译器同样也是。我们将两者都看成GCC,GCC支持C、C++和Fortran语言。而GCC(GNU Compiler Collection,GNU编译器集合),就是GNU运动的代表性成果,它的初衷是为GNU的自由系统开发完整的编译器。所以,在Linux甚至Windows上各种涉及开发环境配置,源码编译的地方,都离不开gcc和g++。
g++的使用示例
在这里插入图片描述
1即为生成的文件可以是可执行文件或.a静态库.so动态库,2为生成的命令,生成什么文件,3要编译的文件名,4为头文件包含目录,5为库目录路径,6为库文件名-lmuduo_net即为-l muduo_net

gcc,g++之间的区别
误区:gcc编译c语言,g++编译c++

区别1:

gcc编译c++代码需要加-lstdc++,gcc默认只链接c库,并不会链接c++库,需要手工指定

g++默认链接c库和c++标准库

区别2:

gcc如果编译c语言文件,用c语言方式编译,编译c++用c++方式编译,g++不管编译c还是c++都用c++标方式编译

可执行文件的两种版本

1.debug版本,调试版本,编译阶段会加入某些调试信息 编译时,加入-g选项,可生成debug版本

2.release版本,发行版本,没有调试信息 gcc默认生成release版本

1.2 gdb

GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。

使用GDB调试程序,有以下两点需要注意:

要使用GDB调试某个程序,该程序编译时必须加上编译选项 -g,否则该程序是不包含调试信息的;
GCC编译器支持 -O 和 -g 一起参与编译。GCC编译过程对进行优化的程度可分为5个等级,分别为 :

  • -O/-O0: 不做任何优化,这是默认的编译选项 ;
  • -O1:使用能减少目标文件大小以及执行时间并且不会使编译时间明显增加的优化。 该模式在编译大型程序的时候会花费更多的时间和内存。在 -O1下:编译会尝试减少代 码体积和代码运行时间,但是并不执行会花费大量时间的优化操作。
  • -O2:包含 -O1的优化并增加了不需要在目标文件大小和执行速度上进行折衷的优化。 GCC执行几乎所有支持的操作但不包括空间和速度之间权衡的优化,编译器不执行循环 展开以及函数内联。这是推荐的优化等级,除非你有特殊的需求。 -O2会比 -O1启用多 一些标记。与 -O1比较该优化 -O2将会花费更多的编译时间当然也会生成性能更好的代 码。
  • -O3:打开所有 -O2的优化选项并且增加 -finline-functions, -funswitch-loops,-fpredictive-commoning, -fgcse-after-reload and -ftree-vectorize优化选项。这是最高最危险 的优化等级。用这个选项会延长编译代码的时间,并且在使用 gcc4.x的系统里不应全局 启用。自从 3.x版本以来 gcc的行为已经有了极大地改变。在 3.x,,-O3生成的代码也只 是比 -O2快一点点而已,而 gcc4.x中还未必更快。用 -O3来编译所有的 软件包将产生更 大体积更耗内存的二进制文件,大大增加编译失败的机会或不可预知的程序行为(包括 错误)。这样做将得不偿失,记住过犹不及。在 gcc 4.x.中使用 -O3是不推荐的。
  • -Os:专门优化目标文件大小 ,执行所有的不增加目标文件大小的 -O2优化选项。同时 -Os还会执行更加优化程序空间的选项。这对于磁盘空间极其紧张或者 CPU缓存较小的 机器非常有用。但也可能产生些许问题,因此软件树中的大部分 ebuild都过滤掉这个等 级的优化。使用 -Os是不推荐的。

GDB调试主要有三种方式:

直接调试目标程序:gdb ./hello_server
附加进程id:gdb attach pid
调试core文件:gdb filename corename
退出GDB:
可以用命令:q(quit的缩写)或者 Ctr + d 退出GDB。
如果GDB attach某个进程,退出GDB之前要用命令 detach 解除附加进程。

2.Windows的Mingw/MSVC

MinGW(Minimalist GNUfor Windows),它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。运行时库:支持程序运行的基本函数的集合,一般是静态库lib或动态库dll。而MSVC,就是上文所说的第三方C运行时库:由微软开发的VC运行时库,被Visual Studio IDE所集成。所以我们使用VS时会附带MSVC编译器。所以可以看到啦,MinGW和MSVC都是Windows C/C++语言编译支持,配置环境时遇到两者择其一即可。

3.LLVM的clang/clang++

有了前文,对LLVM与clang不用解释应该也知道了。LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。LLVM计划启动于2000年,最初由美国UIUC大学的Chris Lattner博士主持开展。2006年Chris Lattner加盟Apple Inc.并致力于LLVM在Apple开发体系中的应用。Apple也是LLVM计划的主要资助者。目前LLVM已经被苹果IOS开发工具、Xilinx Vivado、Facebook、Google等各大公司采用。

4.Make/CMake

有了编译器GCC等等, 为什么要有make这个构建生成器,同样是老生常谈的内容。编译hello.c非常简单,只需要$ gcc hello.c就可以了,但当项目庞大起来后,假设hello.c依赖与a.c、b.c,而a.c又依赖于库w.lib,每一次编译,我们都要重新编写一次gcc编译命令行吗?所以,GNU发明了make这个工具软件,可以编写makefile文件来指定特定的项目构建过程,当项目一个文件的代码更改时,我们只需要重新make一下就可以了。但make依然有很多不足,比如make对于类unix系统是通用的,但对windows系统并不友好(不能跨平台)make语法简单,也就导致了它功能的限制不同编译器的语法规则不同,编写的makefile语法如果适合GCC则不适合MSVC所以,CMake就应运而生啦。CMake是比Make更高一层的工具,Make是编写对应编译器的makefile从而实现编译,而CMake是写一份独立的CmakeList.txt文件,然后该文件会根据当前系统环境选择适合的构建生成器(如VS或者make),然后将CmakeList.txt翻译为适合的文件,再进一步调用系统编译器进行项目构建。

相关文章:

GNU,GDB,GCC,G++是什么?与其他编译器又有什么关系?

文章目录 前言1. GNU和他的工具1.1 gcc与g1.2 gdb 2.Windows的Mingw/MSVC3.LLVM的clang/clang4.Make/CMake 前言 在开始之前我们先放一段Hello World&#xff1a;hello.c #include <stdio.h>int main() {printf("Hello World");return 0; }然后就是一段老生常…...

定制一款国密浏览器(9):SM4 对称加密算法

上一章介绍了 SM3 算法的移植要点,本章介绍对称加密算法 SM4 的移植要点。 SM4 算法相对 SM3 算法来说复杂一些,但还是比较简单的算法,详细算法说明参考《GMT 0002-2012 SM4分组密码算法》这份文档。铜锁开源项目的实现代码在 sm4.c 文件中,直接拿过来编译就可以。 但需要…...

kafka集群认证

1、安装Kerberos(10.10.10.168) yum install krb5-server krb5-workstation krb5-libs -y ​ 查看版本 klist -V ​ Kerberos 5 version 1.20.1 ​ 编辑/etc/hosts 10.10.10.168 ms1 10.10.10.150 ms2 10.10.10.110 ms3 vim /etc/krb5.conf # Configuration snippets ma…...

Mermaid 是什么,为什么适合AI模型和markdown

什么是 Mermaid&#xff1f; Mermaid 是一个基于 JavaScript 的开源绘图和图表工具&#xff0c;允许用户通过简单的文本语法创建图表。它支持生成流程图、时序图、类图、甘特图等多种类型的可视化内容&#xff0c;并直接从类似 Markdown 的代码中渲染。Mermaid 因其与 Markdow…...

为什么信号完整性对于高速连接器设计至关重要?

外部连接器通过在各种电子元件和系统之间可靠地传输数据而不损失保真度来保持信号完整性。在本文中&#xff0c;我们将讨论信号完整性的重要性&#xff0c;回顾高速部署挑战&#xff0c;并重点介绍各种连接器设计策略&#xff0c;以防止失真和降级。 了解连接器信号完整性挑战…...

【FFmpeg从入门到精通】第三章-FFmpeg转封装

1 音视频文件转MP4格式 在互联网常见的格式中&#xff0c;跨平台最好的应该是MP4文件&#xff0c;因为MP4文件既可以在PC平台的 Flashplayer 中播放&#xff0c;又可以在移动平台的 Android、ios 等平台中进行播放&#xff0c;而且使用系统默认的播放器即可播放&#xff0c;因…...

PG数据库推进医疗AI向量搜索优化路径研究(2025年3月修订版)

PG数据库推进医疗AI向量搜索优化路径研究 一、医疗 AI 向量搜索的发展现状与挑战 1.1 医疗数据特征与检索需求 医疗数据作为推动医疗领域进步与创新的关键要素,具有鲜明且复杂的特征。从多模态角度看,医疗数据涵盖了结构化数据,如患者基本信息、检验检查报告中的数值结果;…...

Android 下拉栏中的禁用摄像头和麦克风隐藏

Android 下拉栏中的禁用摄像头和麦克风隐藏 文章目录 Android 下拉栏中的禁用摄像头和麦克风隐藏一、前言二、下拉框中的禁用摄像头和麦克风隐藏实现1、设置支持属性为false2、修改代码 三、其他1、下拉栏中的禁用摄像头和麦克风隐藏小结2、 Android SensorPrivacyService ps&a…...

阿里云Clickhouse 冷热数据分层存储 实战记录

一、 背景 某业务Clickhouse库月数据增长超过2.5T&#xff0c;云上Clickhouse容量并不是无限的&#xff0c;单节点有32T上限&#xff0c;而业务已使用一半以上&#xff0c;依此速度&#xff0c;半年内就将达到上限。 与业务讨论&#xff0c;大致有以下几种解决思路&#xff1a;…...

ARINC818-实现

1.编码和解码&#xff1b;分隔符插入和删除&#xff1b;空闲idle字符插入 2.视频TX和RX接口&#xff1a;可以设计为流传输和帧同步传输 3.传输媒介&#xff1a;光纤或者铜缆 4.链路支持fc 1x,2x,3x,5x,6x,8x 上图中N有限制&#xff0c;N不能允许ADVB帧负载和填充长度不超过2112…...

OpenStack Yoga版安装笔记(23)Swift安装

一、官方文档 Object Storage Install Guide — Swift 2.29.3.dev5 documentation 二、环境准备 之前的实验&#xff0c;已经有controller, compute1, block1节点&#xff0c;并已经完成Keystone、Glance、Nova、Neutron、Cinder等主要OpenStack Service的安装。 此处新增…...

MySql 三大日志(redolog、undolog、binlog)详解

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/aa730ab3f84049638f6c9a785e6e51e9.png 1. redo log&#xff1a;“你他妈别丢数据啊&#xff01;” 干啥的&#xff1f; 这货是InnoDB的“紧急备忘录”。比如你改了一条数据&#xff0c;MySQL怕自己突然断电嗝屁了&am…...

算法题(128):费解的开关

审题&#xff1a; 本题需要我们将多组测试用例中拉灯数小于等于6的最小拉灯数输出&#xff0c;若拉灯数最小值仍大于6&#xff0c;则输出-1 思路&#xff1a; 方法一&#xff1a;二进制枚举 首先我们先分析一下基本特性&#xff1a; 1.所有的灯不可能重复拉&#xff1a;若拉的数…...

2025.04.19-阿里淘天春招算法岗笔试-第三题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 数值平衡之道 问题描述 LYA 是一位精通树形数据结构的数学家,她有一棵包含 n n n...

单片机毕业设计选题物联网计算机电气电子类

题目一&#xff1a;基于单片机的PM2.5空气质量检测仪器 选 1.用到ADC0832模数转换芯片&#xff0c;数据更加精准。 2.使用夏普传感器的GP2Y1010AUOF粉尘传感器实时检测空气中的PM2.5值并通过1602显示出来&#xff0c;检测准确。 3.LCD1602液晶第一行 前面显示测到的PM2.5…...

TDOA解算——牛顿迭代法|以4个基站的三维空间下TDOA定位为背景,使用牛顿迭代法解算。附完整代码,订阅专栏后可复制粘贴

本问所介绍的代码通过TDOA(到达时间差)方法,结合牛顿迭代算法,实现了三维空间内目标位置的定位。系统包含1个主锚点和3个副锚点,通过测量信号到达各基站的时间差计算距离差,最终迭代求解目标坐标。订阅专栏后可以获得完整的MATLAB代码,粘贴到空脚本中即可运行 文章目录 …...

海量聊天数据处理:基于Spring Boot与SharingJDBC的分库分表策略及ClickHouse冷热数据分离

引言 随着互联网应用的快速发展&#xff0c;每天产生的聊天记录数量级已经达到了惊人的程度。以2000万条/天为例&#xff0c;一年下来就是大约7.3亿条记录。如此庞大的数据量给数据库的设计和管理带来了前所未有的挑战。本文将探讨如何使用SharingJDBC整合Spring Boot技术来实…...

网络开发基础(游戏)之 Socket API

Socket简介 Socket (套接字)是网络编程的基础&#xff0c;在 C# 中通过 System.Net.Sockets 命名空间提供了一套完整的 API 来实现网络通信。 网络上的两个程序通过一个双向的通信连接实现数据交换&#xff0c; 这个连接的一端称为一个Socket。 一个Socket包含了进行网络通信必…...

在 Amazon Graviton 上运行大语言模型:CPU 推理性能实测与调优指南

引言 在生成式 AI 浪潮中&#xff0c;GPU 常被视为大模型推理的唯一选择。然而&#xff0c;随着 ARM 架构的崛起和量化技术的成熟&#xff0c;CPU 推理的性价比逐渐凸显。本文基于 Amazon Graviton 系列实例与 llama.cpp 工具链&#xff0c;实测了 Llama 3、DeepSeek 等模型的…...

基于尚硅谷FreeRTOS视频笔记——15—系统配制文件说明与数据规范

目录 配置函数 INCLUDE函数 config函数 数据类型 命名规范 函数与宏 配置函数 官网上可以查找 最核心的就是 config和INCLUDE INCLUDE函数 这些就是裁剪的函数 它们使用一个ifndef。如果定义了&#xff0c;就如果定义了这个宏定义&#xff0c;那么代码就生效。 通过ifn…...

Nacos 使用了什么日志框架?如何配置和查看日志?

Nacos 使用的日志框架 Nacos 主要使用 SLF4j (Simple Logging Facade for Java) 作为日志门面&#xff08;API&#xff09;&#xff0c;并选择 Logback 作为其底层的日志实现。 SLF4j: 这是一个日志抽象层&#xff0c;允许开发者在代码中使用统一的接口进行日志记录&#xff…...

【基于Fluent+Python耦合的热管理数字孪生系统开发:新能源产品开发的硬核技术实践】

引言&#xff1a;热管理数字孪生的技术革命 在新能源领域&#xff08;如动力电池、储能系统、光伏逆变器等&#xff09;&#xff0c;热管理是决定产品性能与安全的核心问题。传统热设计依赖实验与仿真割裂的流程&#xff0c;而数字孪生技术通过实时数据驱动与动态建模&#xf…...

【工具变量】A股上市公司信息披露质量KV指数测算数据集(含do代码 1991-2024年)

KV指数&#xff08;Key Value Index&#xff09;作为评估信息披露质量的关键指标&#xff0c;在证券市场&#xff0c;尤其是A股市场上市公司信息披露监管与评估中占据重要地位。该指数通过系统化、定量化的方法&#xff0c;对企业发布的信息进行全面剖析与打分&#xff0c;精准…...

【ELF2学习板】利用OpenMP采用多核并行技术提升FFTW的性能

目录 引言 OpenMP简介 编译OpenMP支持的FFTW库 部署与测试 测试程序 程序部署 测试结果 结语 引言 在前面已经介绍了在ELF2开发板上运行FFTW计算FFT。今天尝试利用RK3588的多核运算能力来加速FFT运算。FFTW利用多核能力可以考虑使用多线程或者OpenMP。今天介绍一下Ope…...

打靶日记 zico2: 1

一、探测靶机IP&#xff08;进行信息收集&#xff09; 主机发现 arp-scan -lnmap -sS -sV -T5 -p- 192.168.10.20 -A二、进行目录枚举 发现dbadmin目录下有个test_db.php 进入后发现是一个登录界面&#xff0c;尝试弱口令&#xff0c;结果是admin&#xff0c;一试就出 得到加…...

【技术派后端篇】 Redis 实现用户活跃度排行榜

在各类互联网应用中&#xff0c;排行榜是一个常见的功能需求&#xff0c;它能够直观地展示用户的表现或贡献情况&#xff0c;提升用户的参与感和竞争意识。在技术派项目中&#xff0c;也引入了用户活跃度排行榜&#xff0c;该排行榜主要基于 Redis 的 ZSET 数据结构来实现。接下…...

MySql Innodb详细解读

参考文档&#xff1a;https://www.cnblogs.com/acatsmiling/p/18424729 一、数据存储&#xff1a;从磁盘到内存的"黑帮走私" 1. 物理结构&#xff1a;表空间与页的江湖规矩 表空间&#xff08;Tablespace&#xff09;&#xff1a; 所有InnoDB数据存在表空间里&…...

每日两道leetcode

399. 除法求值 - 力扣&#xff08;LeetCode&#xff09; 题目 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件&#xff0c;其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 …...

在RK3588上使用哪个流媒体服务器合适

在RK3588平台上选择合适的流媒体服务器时&#xff0c;需考虑其ARM Cortex-A76/A55架构、硬件编解码能力&#xff08;如支持H.264/H.265/AV1解码&#xff09;以及Linux/Android系统支持。以下是推荐的方案&#xff1a; 1. 轻量级方案&#xff1a;GStreamer RTSP 适用场景&…...

分享一个DeepSeek+自建知识库实现人工智能,智能回答高级用法。

这个是我自己搞的DeepSeek大模型自建知识库相结合到一起实现了更强大的回答问题能力还有智能资源推荐等功能。如果感兴趣的小伙伴可以联系进行聊聊&#xff0c;这个成品已经有了实现了&#xff0c;所以可以融入到你的项目&#xff0c;或者毕设什么的还可以去参加比赛等等。 1.项…...

PyTorch 深度学习实战(38):注意力机制全面解析(从Seq2Seq到Transformer)

在上一篇文章中&#xff0c;我们探讨了分布式训练实战。本文将深入解析注意力机制的完整发展历程&#xff0c;从最初的Seq2Seq模型到革命性的Transformer架构。我们将使用PyTorch实现2个关键阶段的注意力机制变体&#xff0c;并在机器翻译任务上进行对比实验。 一、注意力机制演…...

Android Studio 获取配置资源与第三方包信息详解

文章目录 Android Studio 获取配置资源与第三方包信息详解一、获取资源文件中的配置1. 获取颜色值Java 中获取&#xff1a;Kotlin 中获取&#xff1a; 2. 获取字符串Java 中获取&#xff1a;Kotlin 中获取&#xff1a; 3. 获取尺寸值Java 中获取&#xff1a;Kotlin 中获取&…...

【网络初识】从零开始彻底了解网络编程(一)

本篇博客给大家带来的是网络的知识点. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺便进步 一. 网络…...

Vivado比特流生成、下载及板级验证操作步骤

1. 前期准备 安装Vivado软件&#xff1a;确保Vivado开发环境已正确安装并配置。创建工程&#xff1a; 打开Vivado&#xff0c;点击“Create Project”新建工程。设置工程名称&#xff08;例如“led_flow”&#xff09;和路径。选择目标FPGA型号&#xff08;例如XC7A35TFFG484&…...

【Flutter DevTools】性能优化的瑞士军刀

一、性能分析&#xff1a;帧率与资源监控 1.1 帧率监控&#xff08;Performance面板&#xff09; 通过Performance面板可实时捕获应用的渲染流水线数据。开发者点击"Record"按钮后&#xff0c;DevTools会以时间轴形式展示每一帧的构建、布局、绘制耗时。当帧率低于…...

使用Redis实现实时排行榜

为了实现一个实时排行榜系统&#xff0c;我们可以使用Redis的有序集合&#xff08;ZSet&#xff09;&#xff0c;其底层通常是使用跳跃表实现的。有序集合允许我们按照分数&#xff08;score&#xff09;对成员&#xff08;member&#xff09;进行排序&#xff0c;因此非常适合…...

HTML5 应用程序缓存:原理、实践与演进

在 Web 技术的发展历程中&#xff0c;HTML5 引入的应用程序缓存&#xff08;Application Cache&#xff09;曾是提升 Web 应用离线体验的重要技术。它允许 Web 应用进行缓存&#xff0c;使用户在没有因特网连接时也能访问应用&#xff0c;为 Web 应用带来了显著的优势。然而&am…...

Compose笔记(十七)--AsyncImage

这一节了解一下Compose中的AsyncImage的使用&#xff0c;AsyncImage是由 Coil库提供的一个用于异步加载图片的组件。它支持加载网络图片、本地图片资源&#xff0c;并提供了占位符、错误处理、过渡动画等功能&#xff0c;简单介绍如下: API 1. model 含义&#xff1a;指定要加…...

Python语法系列博客 · 第7期[特殊字符] 列表推导式与字典推导式:更优雅地处理数据结构

上一期小练习解答&#xff08;第6期回顾&#xff09; ✅ 练习1&#xff1a;统计文件行数 with open("data.txt", "r", encoding"utf-8") as f:lines f.readlines()print(f"总行数&#xff1a;{len(lines)}")✅ 练习2&#xff1a;反…...

Redis--主从复制

目录 一、配置 1.1 建立复制 1.2 断开复制 1.3 安全性 1.4 只读 1.5 传输延迟 二、拓扑 2.1 一主一从结构 2.2 一主多从结构 2.3 树形主从结构 在分布式系统中为了解决单点问题&#xff0c;通常会把数据复制多个副本部署到其他服务器&#xff0c;满足故障恢 复和负载均衡等需求…...

FPGA练习———DDS波形发生器

简介&#xff1a;使用DDS波形发生器可以在fpga上生成方波、正弦波等波形&#xff0c;其具体方法是计算相位的变化&#xff0c;然后根据数据表的数值进行数模转化改变波形。 DDS的第一步是生成一个相位加法器 相位加法器 在生成一个波&#xff0c;例如正弦波时&#xff0c;我们…...

力扣面试150题-- 存在重复元素 II和最长连续序列

Day 26 题目描述 思路 定义一个map用来存放每个元素以及它对应的序号从前向后遍历数组如果该元素存在于map&#xff08;说明满足了重复元素的条件&#xff09;&#xff0c;用当前元素的序号值减去map中存放的序号值&#xff08;因为是从前遍历的所以当前元素序号一定大于存放…...

卸载Anaconda并保留虚拟环境,重装Anaconda并还原之前的虚拟环境

参考 https://blog.csdn.net/qq_63611690/article/details/134560333 该博文是虚拟环境和Anaconda安装路径在一起 我的是虚拟环境早就搞到了别的盘 问题描述 我之前把Anaconda安装到了C盘&#xff0c;随之时间推移&#xff0c;C盘占用空间越来越大。我想把Anaconda卸载重装…...

ArcGIS及其组件抛出 -- “Sorry, this application cannot run under a Virtual Machine.“

产生背景&#xff1a; 使用的是“破解版本”或“被套壳过”的非官方 ArcGIS 版本 破解版本作者为了防止&#xff1a; 被研究破解方式 被自动化抓包/提权/逆向 被企业环境中部署多机使用 通常会加入**“虚拟化环境检测阻断运行”机制** 原因解释&#xff1a; 说明你当前运…...

Ubuntu 25.04 “Plucky Puffin” 正式发布

Ubuntu 25.04 “Plucky Puffin” 于 2025 年 4 月 17 日正式发布。这是一个短期支持版本&#xff0c;只支持到 2026 年 1 月1。以下是该版本的一些主要新变化&#xff1a; 内核与系统&#xff1a;采用 Linux 6.14 内核&#xff1b;systemd v257.4 带来重要上游更新&#xff0c;…...

2. ubuntu20.04 和VS Code实现 ros的输出 (C++,Python)

本节对应赵虚左ROS书籍的1.4.2 1)创建工作空间 mkdir -p catkin_ws/src cd catkin_ws catkin_make 2) 终端进入VS Code code . 3) vscoe 的基本配置 3.1&#xff09;修改.vscode/tasks.json ,修改内容如下&#xff1a; { // 有关 tasks.json 格式的文档&#xff0c;请参见…...

0801ajax_mock-网络ajax请求1-react-仿低代码平台项目

0 vite配置proxy代理 vite.config.ts代码如下图所示&#xff1a; import { defineConfig } from "vite"; import react from "vitejs/plugin-react";// https://vite.dev/config/ export default defineConfig({plugins: [react()],server: {proxy: {&qu…...

前端vue+后端ssm项目

下载地址&#xff1a; 前端&#xff1a;https://download.csdn.net/download/2401_83418369/90649449 后端&#xff1a; https://download.csdn.net/download/2401_83418369/90649441 一、项目基础环境搭建 1、新建Maven项目 2、创建目录&#xff0c;结构如下&#xff1a; …...

Python实例题:Python获取阴阳师壁纸

目录 Python实例题 题目 实现思路 代码实现 代码解释 get_wallpaper_links 函数&#xff1a; download_wallpapers 函数&#xff1a; 主程序&#xff1a; 运行思路 注意事项 Python实例题 题目 Python获取阴阳师壁纸 实现思路 发送请求获取网页内容&#xff1a;使…...

考研408操作系统文件管理——4.2目录系统详解

考研408操作系统文件管理——目录系统详解 一、目录管理基本概念 1.1 目录的核心功能 目录是文件系统的核心管理组件,主要实现: 按名存取:通过文件名快速定位物理地址路径解析:将逻辑路径转换为物理块地址共享控制:支持多用户共享同一文件命名空间管理:维护全局唯一的…...