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

#在 CentOS 7 中手动编译安装软件操作及原理

在 CentOS 7 中,手动编译安装软件(即从源代码编译安装)是一种高度灵活的方式,适用于需要定制化软件功能、优化性能或安装官方仓库未提供的软件版本的场景。以下是针对手动编译安装的详细说明,包括原理、步骤、注意事项和示例,以确保清晰易懂,并深入解释每个步骤的背景和作用。


手动编译安装的原理

手动编译安装是指从软件的源代码(通常为 C、C++ 或其他语言编写的代码)开始,通过编译工具将其转换为适用于当前系统的二进制可执行文件,并安装到指定目录。以下是核心原理:

  1. 源码到二进制的转换:

    • 源代码是开发者编写的文本文件(如 .c、.cpp),需要通过编译器(如 gcc、g++)转换为机器码,形成可执行文件。

    • 编译过程包括预处理、编译、汇编和链接四个阶段,最终生成二进制文件。

  2. 定制化与环境适配:

    • 编译时可以指定参数(如安装路径、启用/禁用功能模块),以满足特定需求。

    • 编译生成的文件针对当前系统架构(如 x86_64)优化,性能可能优于通用 RPM 包。

  3. 依赖管理:

    • 源码依赖外部库(如 openssl、zlib),需提前安装这些库的开发版本(以 -devel 结尾的包,包含头文件和静态库)。

    • 依赖未满足会导致配置或编译失败。

  4. 安装路径:

    • 编译后的文件通常安装到用户指定的目录(如 /usr/local),而不是 RPM 管理的系统目录(如 /usr/bin)。

    • 不记录到 RPM 数据库,卸载需手动删除。

  5. 工具链:

    • 配置工具:如 configure 脚本,检查系统环境、依赖并生成 Makefile。

    • 编译工具:make 根据 Makefile 执行编译。

    • 安装工具:make install 将编译结果复制到目标目录。


手动编译安装的详细步骤

以下是手动编译安装软件的通用步骤,以安装 Nginx(一个高性能 Web 服务器)为例,逐步说明每个步骤的目的和操作。

步骤 1:安装编译工具和基础依赖

目的

提供编译和构建所需的工具(如 gcc、make)及常见开发库,确保源码能够成功编译。

操作

  1. 安装开发工具组:

    yum groupinstall "Development Tools" -y
    • 包含 gcc(C 编译器)、g++(C++ 编译器)、make(构建工具)、autoconf 等。

  2. 安装 Nginx 常见依赖的开发库:

    yum install pcre-devel openssl-devel zlib-devel -y
    • pcre-devel:支持正则表达式(Nginx 的 URL 重写需要)。

    • openssl-devel:支持 HTTPS(SSL/TLS 模块)。

    • zlib-devel:支持 gzip 压缩。

原理

  • 开发工具提供编译和链接功能,-devel 包提供头文件(.h)和库文件(.a 或 .so),供源码引用。

  • 缺少这些依赖会导致 ./configure 或 make 失败。

步骤 2:下载源码

目的

获取目标软件的源代码,通常以压缩包形式(如 .tar.gz)提供。

操作

  1. 从软件官网下载源码:

    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    • 可替换版本号(如 1.20.2)或从 GitHub 获取最新代码。

  2. 验证文件完整性(可选):

    • 如果官网提供校验和(如 MD5 或 SHA256),验证下载文件:

      sha256sum nginx-1.18.0.tar.gz

原理

  • 源码包包含源代码(.c 文件)、配置脚本(configure)和文档。

  • 确保下载来源可靠,避免恶意代码。

步骤 3:解压源码并进入目录

目的

解压源码包,进入工作目录以进行后续配置和编译。

操作

  1. 解压:

    tar -zxvf nginx-1.18.0.tar.gz
    • -z:通过 gzip 解压;-x:提取;-v:显示过程;-f:指定文件。

  2. 进入目录:

    cd nginx-1.18.0

原理

  • 解压后生成包含源代码和脚本的目录。

  • 源码目录通常包含 configure 脚本、src 目录(源代码)、docs(文档)等。

步骤 4:配置编译环境

目的

运行 configure 脚本,检查系统环境、依赖并生成 Makefile,为编译做准备。

操作

  1. 执行配置脚本:

    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module
    • --prefix=/usr/local/nginx:指定安装目录。

    • --with-http_ssl_module:启用 HTTPS 支持。

    • --with-http_gzip_static_module:启用静态 gzip 压缩。

    • 可通过 ./configure --help 查看更多选项。

  2. 检查输出:

    • 如果缺少依赖,脚本会报错,如 openssl not found。

    • 安装缺失的 -devel 包后重新运行。

原理

  • configure 是一个 shell 脚本,执行以下任务:

    • 检查编译器(gcc)和工具(make)是否存在。

    • 检测依赖库和头文件(如 openssl.h)。

    • 根据参数生成 Makefile,定义编译规则和安装路径。

  • 如果依赖缺失,需安装对应的 -devel 包,例如:

    yum install openssl-devel

步骤 5:编译源码

目的

使用 make 工具根据 Makefile 编译源代码,生成二进制文件。

操作

  1. 运行编译:

    make
    • 可能需要几分钟,视机器性能和源码大小而定。

  2. 检查错误:

    • 如果报错(如缺失头文件),查看错误信息,安装缺失依赖后重新运行。

原理

  • make 读取 Makefile,按顺序执行:

    • 预处理:处理宏和条件编译。

    • 编译:将 .c 文件编译为 .o(对象文件)。

    • 链接:将 .o 文件和库链接为可执行文件。

  • 编译结果通常存储在源码目录的 objs 子目录中(如 Nginx 的 objs/nginx)。

步骤 6:安装编译结果

目的

将编译生成的二进制文件、配置文件和文档复制到指定安装目录。

操作

  1. 安装:

    make install
    • 将文件复制到 /usr/local/nginx(由 --prefix 指定)。

  2. 检查安装目录:

    ls /usr/local/nginx
    • 通常包含:

      • sbin/nginx:Nginx 可执行文件。

      • conf/nginx.conf:配置文件。

      • html/:默认网页目录。

      • logs/:日志目录。

原理

  • make install 执行 Makefile 中的安装规则,将文件复制到目标路径。

  • 可能需要 root 权限(使用 sudo),因为写入系统目录(如 /usr/local)受限。

步骤 7:配置与启动软件

目的

配置软件参数并启动,确保正常运行。

操作

  1. 编辑 Nginx 配置文件:

    vi /usr/local/nginx/conf/nginx.conf
    • 按需修改监听端口(如 listen 80)、服务器名称等。

  2. 启动 Nginx:

    /usr/local/nginx/sbin/nginx
  3. 验证运行:

    bash

    curl http://localhost
    • 应返回默认欢迎页面。

原理

  • 软件启动需要加载配置文件,初始化运行环境。

  • Nginx 使用配置文件定义监听端口、虚拟主机等。

步骤 8:设置开机启动(可选)

目的

确保软件随系统启动自动运行,适合服务器环境。

操作

  1. 创建 systemd 服务文件 /etc/systemd/system/nginx.service:

    [Unit]
    Description=Nginx Web Server
    After=network.target[Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    PrivateTmp=true[Install]
    WantedBy=multi-user.target
  2. 启用并启动服务:

    systemctl enable nginx
    systemctl start nginx
  3. 验证状态:

    systemctl status nginx

原理

  • systemd 是 CentOS 7 的服务管理工具,通过 .service 文件定义服务的启动、停止和重载行为。

  • Type=forking 适合 Nginx 这种后台运行的进程。


完整示例:安装 Nginx

以下是完整的命令序列,假设 CentOS 7 最小化安装:

# 安装编译工具和依赖
yum groupinstall "Development Tools" -y
yum install pcre-devel openssl-devel zlib-devel -y# 下载并解压 Nginx 源码
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0# 配置编译环境
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module# 编译并安装
make
make install# 启动 Nginx
/usr/local/nginx/sbin/nginx# 验证
curl http://localhost# 设置开机启动
cat << EOF > /etc/systemd/system/nginx.service
[Unit]
Description=Nginx Web Server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true[Install]
WantedBy=multi-user.target
EOFsystemctl enable nginx
systemctl start nginx

注意事项

  1. 依赖管理:

    • 每次 ./configure 失败时,检查错误信息,安装缺失的 -devel 包。

    • 常见依赖库包括 libxml2-devel、libxslt-devel(XML 处理)、gd-devel(图像处理)等。

  2. 编译优化:

    • 可通过 ./configure 参数启用优化,如 --with-cc-opt="-O2" 提高性能。

    • 针对 CPU 架构优化:--with-cpu-opt=amd64。

  3. 错误调试:

    • 配置失败:查看 config.log 获取详细错误。

    • 编译失败:检查 make 输出,可能是代码错误或依赖问题。

    • 运行失败:检查软件日志(如 /usr/local/nginx/logs/error.log)。

  4. 卸载:

    • 源码安装不记录到 RPM 数据库,卸载需手动删除:

      rm -rf /usr/local/nginx
      systemctl disable nginx
      rm /etc/systemd/system/nginx.service
    • 清理源码目录:

      rm -rf nginx-1.18.0
  5. 权限与安全:

    • 编译和安装可能需要 root 权限,使用 sudo。

    • 避免以 root 运行服务,Nginx 默认以 nobody 用户运行。

    • 确保源码来源可靠(如官网),避免安全风险。

  6. 内存与性能:

    • 1GB 内存足以编译小型软件(如 Nginx),但大型软件(如 MySQL)可能需要更多内存或交换分区。

    • 编译时间取决于 CPU 性能,可用 make -j$(nproc) 并行编译加速。


常见问题与解决方案

  1. 问题:./configure 报错 cannot find OpenSSL。

    • 解决:安装 openssl-devel:

      yum install openssl-devel
  2. 问题:make 失败,提示缺少头文件。

    • 解决:根据错误信息安装对应 -devel 包,例如:

      yum install pcre-devel
  3. 问题:make install 权限不足。

    • 解决:使用 sudo:

      sudo make install
  4. 问题:Nginx 启动失败,提示端口占用。

    • 解决:检查端口 80 是否被占用:

      netstat -tulnp | grep :80
    • 杀死占用进程或修改 nginx.conf 使用其他端口。


适用场景

  • 需要特定版本:官方仓库版本过旧(如 CentOS 7 的 Nginx 可能为 1.16,需最新 1.20)。

  • 定制化需求:启用特定模块(如 Nginx 的 GeoIP 模块)或优化编译参数。

  • 无 RPM 包:某些软件(如最新 Redis 或实验性工具)未提供 RPM 包。

  • 离线环境:源码下载后可在无网络环境编译。


扩展:其他软件的编译安装

以下是其他常见软件的编译安装要点,基于 CentOS 7:

安装 Redis

  1. 依赖:

    yum install gcc make
  2. 下载并编译:

    wget http://download.redis.io/releases/redis-6.2.6.tar.gz
    tar -zxvf redis-6.2.6.tar.gz
    cd redis-6.2.6
    make
    make install PREFIX=/usr/local/redis
  3. 启动:

    /usr/local/redis/bin/redis-server

安装 MySQL

  1. 依赖:

    yum install gcc cmake ncurses-devel openssl-devel
  2. 下载并编译:

    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.36.tar.gz
    tar -zxvf mysql-5.7.36.tar.gz
    cd mysql-5.7.36
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_INNODB_MEMCACHED=1
    make
    make install
  3. 初始化并启动:

    /usr/local/mysql/bin/mysqld --initialize --user=mysql
    /usr/local/mysql/bin/mysql.server start

总结

手动编译安装在 CentOS 7 中是一个强大的工具,适合需要高度控制的场景。核心步骤包括安装工具、下载源码、配置、编译、安装和配置服务。通过合理管理依赖和调试错误,可以高效完成安装。Nginx 的示例展示了典型流程,其他软件(如 Redis、MySQL)遵循类似步骤,但依赖和配置参数不同。

相关文章:

#在 CentOS 7 中手动编译安装软件操作及原理

在 CentOS 7 中&#xff0c;手动编译安装软件&#xff08;即从源代码编译安装&#xff09;是一种高度灵活的方式&#xff0c;适用于需要定制化软件功能、优化性能或安装官方仓库未提供的软件版本的场景。以下是针对手动编译安装的详细说明&#xff0c;包括原理、步骤、注意事项…...

【Kubernetes】初识基础理论(第一篇)

前言 单机容器编排&#xff1a; docker-compose 容器集群编排&#xff1a; docker swarm、mesosmarathon、kubernetes 应用编排&#xff1a; ansible 一、Kubernetes概述 Kubernetes 是一个可移植的、可扩展的开源平台&#xff0c;用于管理容器化的…...

配置集群(yarn)

在配置 YARN 集群前&#xff0c;要先完成以下准备工作&#xff1a; 集群环境规划&#xff1a;明确各节点的角色&#xff0c;如 ResourceManager、NodeManager 等。网络环境搭建&#xff1a;保证各个节点之间能够通过网络互通。时间同步设置&#xff1a;安装 NTP 服务&#xff0…...

按钮导航组件 | 纯血鸿蒙组件库AUI

摘要&#xff1a; 按钮导航组件(A_ButtonNav)&#xff1a;可设置导航数据(含文本及路由)&#xff0c;可设置按钮颜色、导航标题及导航子标题。 一、组件调用方式 1.1.极简调用&#xff1a; 用 A_ButtonNav 调用“按钮导航组件”&#xff0c;只需要给属性 data &#xff08;导…...

自适应主从复制模拟器的构建与研究

自适应主从复制模拟器的构建与研究 摘要: 本文旨在构建一个自适应主从复制模拟器,深入研究主从复制原理及优化方法。从研究者视角出发,详细阐述模拟器的设计、实现与实验过程,通过表格、图表及代码等辅助手段,逐步探讨如何在不同网络条件和负载下,自动调整主从复制参数和…...

015枚举之滑动窗口——算法备赛

滑动窗口 最大子数组和 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 原题链接 思路分析 见代码注解 代码 int maxSubArray(vector<int>& num…...

【Dv3Admin】工具视图配置文件解析

在开发后台管理系统时,处理复杂的 CRUD 操作是常见的需求。Django Rest Framework(DRF)通过 ModelViewSet 提供了基础的增删改查功能,但在实际应用中,往往需要扩展更多的功能,如批量操作、权限控制、查询优化等。dvadmin/utils/viewset.py 模块通过继承并扩展 ModelViewS…...

在MyBatis Plus里处理LocalDateTime类型

在MyBatis Plus里处理LocalDateTime类型 在MyBatis Plus里处理LocalDateTime类型时&#xff0c;你要确保数据库字段和Java实体类属性之间的类型映射是正确的。下面为你介绍处理这种情况的方法&#xff1a; 1. 数据库字段类型对应设置 要保证数据库字段类型和LocalDateTime相…...

编程技能:字符串函数03,strncpy

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;字符串函数02&#xff0c;strcpy 回到目录…...

edge设置位IE模式打开网页

打开Edge浏览器->在浏览器工具栏右键->自定义工具栏->外观->选择要在工具栏上显示的按钮->找到“Internet Explorer 模式”按钮->开启,将其添加到工具栏中...

代码随想录训练营第二十二天| 101.对称二叉树 100.相同的树

101.对称二叉树&#xff1a; 文档讲解&#xff1a;代码随想录|101.对称二叉树 视频讲解&#xff1a;新学期要从学习二叉树开始&#xff01; | LeetCode&#xff1a;101. 对称二叉树_哔哩哔哩_bilibili 状态&#xff1a;已做出 思路&#xff1a; 这道题目我初始做的时候想着使用…...

nvm管理node版本

To manage Node.js versions on Windows, I recommend using nvm-windows (Node Version Manager for Windows). Here’s how we can handle this: First, let’s install nvm-windows. I’ll propose a command to check if it’s already installed: nvm versionGreat! I s…...

智能手表测试计划文档(软/硬件)

&#x1f4c4; 智能手表测试计划文档&#xff08;软/硬件&#xff09; 项目名称&#xff1a;Aurora Watch S1 文档编号&#xff1a;AW-S1-QA-TP-001 编制日期&#xff1a;2025-xx-xx 版本&#xff1a;V1.0 编写人&#xff1a;xxx&#xff08;测试主管&#xff09; 一、测试目标…...

基于大模型的原发性醛固酮增多症全流程预测与诊疗方案研究

目录 一、引言 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与方法 二、原发性醛固酮增多症概述 2.1 疾病定义与发病机制 2.2 临床表现与诊断标准 2.3 流行病学特征 三、大模型预测原理与技术 3.1 大模型简介 3.2 预测原理与算法 3.3 数据收集与预处理 四…...

spring中的@Lazy注解详解

一、核心功能与作用 Lazy 注解是 Spring 框架中用于延迟 Bean 初始化的核心工具&#xff0c;通过将 Bean 的创建推迟到首次使用时&#xff0c;优化资源利用和启动性能。其核心功能包括&#xff1a; 延迟初始化 默认情况下&#xff0c;Spring 在容器启动时立即初始化所有单例 …...

Docker快速入门与应用

1. 什么是 Docker&#xff1f; Docker 就像一个“魔法箱子”&#xff0c;可以把你开发的应用&#xff08;代码、环境、配置&#xff09;‌打包成一个标准化的容器‌&#xff0c;这个容器可以在任何支持 Docker 的系统上运行&#xff0c;无需担心环境差异导致的问题。 ‌类比‌…...

判断一个数是不是素数的最高效的算法

判断一个数是否是素数&#xff0c;有从简单到复杂多种方法。最高效的算法取决于输入规模&#xff08;是几个亿以内的数&#xff0c;还是上百位的大整数&#xff09;&#xff0c;我会按实用场景分类讲解&#xff1a; ✅ 常规范围内&#xff08;比如 ≤ 1e12&#xff09;判断素数…...

《Head First 设计模式》第一章 - 笔记

本书是本人写的设计模式的笔记&#xff0c;写下核心要点&#xff0c;如果你掌握过设计模式&#xff0c;想快速阅读本书内容&#xff0c;这个笔记适合你阅读。如果你是新手&#xff0c;有 java 基础和 oo 设计原则基础&#xff0c;你适合跟我一样从零阅读本书。 第一章 策略模式…...

GPT系列:自然语言处理的演进与多模态的探索

GPT系列&#xff1a;自然语言处理的演进与多模态的探索 GPT系列的发展一、GPT-1 &#xff1a;通过生成式的预训练改进自然语言GPT-1的动机做一个预训练模型的难点GPT-1的微调模式GPT-1的训练数据Bert 二、GPT-2语言模型是非监督的GPT-2的动机引入promptGPT-2模型架构的改变GPT-…...

Linux驱动:驱动编译流程了解

要求 1、开发板中的linux的zImage必须是自己编译的 2、内核源码树,其实就是一个经过了配置编译之后的内核源码。 3、nfs挂载的rootfs,主机ubuntu中必须搭建一个nfs服务器。 内核源码树 解压 tar -jxvf x210kernel.tar.bz2 编译 make x210ii_qt_defconfigmakeCan’t use ‘…...

【MySQL】数据库基础

目录 1.什么是数据库2.见一见数据库3.服务器、表、库之间的关系4.MySQL架构5.sql语句分类6.查看MySQL存储引擎6.1 查看存储引擎6.2 常见存储引擎对比 1.什么是数据库 概念&#xff1a;数据库一般是指&#xff0c;在磁盘或者内存中存储的特定结构组织的数据 – 将来在磁盘上存储…...

1.1 文章简介

前因后果链 行业需求 → 技能断层 → 课程设计响应 (高薪岗位要求数学基础) → (符号/公式理解困难) → (聚焦原理与应用) 行业驱动因素 • 前因&#xff1a;机器学习/AI等领域的高薪岗位激增&#xff0c;但数学能力成为主要门槛 • 关键矛盾&#xff1a;算法论文中的数学…...

laravel 中使用的pdf 扩展包 laravel-snappy(已解决中文乱码)

Centos7 安装 wkhtmltopdf 1、先查看系统是 32 位的还是 64 位的 uname -a2、通过 composer 安装 wkhtmltopdf 32位: $ composer require h4cc / wkhtmltopdf-i386 0.12.x $ composer require h4cc / wkhtmltoimage-i386 0.12.x 64位: $ composer require h4cc/wkhtmltopdf-…...

java反序列化commons-collections链6

cc链6&#xff0c;最好用的cc链&#xff0c;因为它不受jdk版本的限制和cc版本的限制&#xff0c;前半段很像urldns链&#xff0c;后半段是cc1链 先来看一下它的利用链 Gadget chain:java.io.ObjectInputStream.readObject()java.util.HashSet.readObject()java.util.HashMap.p…...

WebSocket的原理及QT示例

一.WebSocket 介绍 1.概述 WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议&#xff0c;它在 2011 年被 IETF 定为标准 RFC 6455&#xff0c;并由 RFC7936 补充规范。与传统的 HTTP 协议不同&#xff0c;WebSocket 允许服务器和客户端之间进行实时、双向的数据传输&a…...

css 点击后改变样式

背景&#xff1a; 期望实现效果&#xff1a;鼠标点击之后&#xff0c;保持选中样式。 实现思路&#xff1a;在css样式中&#xff0c;:active 是一种伪类&#xff0c;用于表示用户当前正在与被选定的元素进行交互。当用户点击或按住鼠标时&#xff0c;元素将被激活&#xff0c;此…...

AI 在模仿历史语言方面面临挑战:大型语言模型在生成历史风格文本时的困境与研究进展

概述 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术在诸多领域展现出了强大的能力&#xff0c;但在处理历史语言这一特定任务时&#xff0c;却遭遇了不小的挑战。美国和加拿大的研究人员通过合作发现&#xff0c;像 ChatGPT 这样的大型语言模型&#x…...

C++.Windows图形

Windows图形 1. 基础知识1.1 Windows图形编程基础1.2 GDI与GDI1.3 窗口消息处理2.1 注册窗口类2.2 创建窗口2.3 显示窗口3.1 创建按钮3.2 按钮消息处理4.1 设置窗口透明度4.2 透明窗口示例5.1 使用区域创建异形窗口5.2 异形窗口示例6.1 GDI抗锯齿设置6.2 抗锯齿绘图示例7.1 Dir…...

【Vue3】使用vite创建Vue3工程、Vue3基本语法讲解

一、什么是Vite Vite是新一代前端构建工具&#xff0c;官网地址&#xff1a;Vite中文网&#xff0c;vite的优势如下&#xff1a; 轻量快速的热重载&#xff08;HMR&#xff09;&#xff0c;能实现极速的服务启动对TypeScript、JSX、CSS等支持开箱即用真正的按需编译&#xff…...

专题二:二叉树的深度优先搜索

以leetcode2331题为例 题目分析&#xff1a; 以第一个示例为例 算法原理分析&#xff1a; 从宏观角度&#xff0c;也就是我的算法之回溯的第一篇 我们发现我们在研究示例的时候&#xff0c;必须从下往上推 也就是我在研究一个结点是true还是false的时候&#xff0c;必须…...

Termius ssh连接服务器 vim打开的文件无法复制问题

你的问题是&#xff1a; • 在 Termius (macOS) SSH 连接到 VMware Ubuntu&#xff0c;使用 vim 打开 .cpp 文件时&#xff0c;可以复制文本&#xff1b; • 但在 Windows 10 上 SSH 到 VMware 的 Red Hat 6.4 时&#xff0c;复制操作无效。 ⸻ &#x1f3af; 初步分析 复制…...

搭建大数据学习的平台

一、基础环境准备 1. 硬件配置 物理机&#xff1a;建议 16GB 内存以上&#xff0c;500GB 硬盘&#xff0c;多核 CPU虚拟机&#xff1a;至少 3 台&#xff08;1 主 2 从&#xff09;&#xff0c;每台 4GB 内存&#xff0c;50GB 硬盘 2. 操作系统 Ubuntu 20.04 LTS 或 CentOS…...

Matlab 模糊控制节水洗衣机模型

1、内容简介 Matlab 232-模糊控制节水洗衣机模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

如何找正常运行虚拟机

1.新建虚拟机。Linux centos7&#xff0c;给虚拟机改个名字不要放在c盘 2.安装操作系统。cd/dvd->2009.iso 启动虚拟机...

python二手书交易管理系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...

使用本地部署的 LLaMA 3 模型进行中文对话生成

以下程序调用本地部署的 LLaMA3 模型进行多轮对话生成&#xff0c;通过 Hugging Face Transformers API 加载、预处理、生成并输出最终回答。 程序用的是 Chat 模型格式&#xff08;如 LLaMA3 Instruct 模型&#xff09;&#xff0c;遵循 ChatML 模板&#xff0c;并使用 apply…...

C++编程练习,认识面向对象权限,如何进行封装

#include <iostream> #include <string> using namespace std; /* 银行的账户是一个模板&#xff0c;是一个类&#xff0c;有存款人信息和账户额度&#xff0c;而具体的存款人视为一个对象&#xff0c; 一个对象不能私自修改账户额度&#xff0c;需要通过一个操作流…...

A Survey of Learning from Rewards:从训练到应用的全面剖析

A Survey of Learning from Rewards&#xff1a;从训练到应用的全面剖析 你知道大语言模型&#xff08;LLMs&#xff09;如何通过奖励学习变得更智能吗&#xff1f;这篇论文将带你深入探索。从克服预训练局限的新范式&#xff0c;到训练、推理各阶段的策略&#xff0c;再到广泛…...

电脑端音乐播放器推荐:提升你的听歌体验!

在快节奏的职场环境中&#xff0c;许多上班族都喜欢用音乐为工作时光增添色彩。今天要分享的这款音乐工具&#xff0c;或许能为你的办公时光带来意想不到的惊喜。 一、软件介绍-澎湃 澎湃音乐看似是个普通的播放器&#xff0c;实则藏着强大的资源整合能力。左侧功能栏清晰陈列着…...

小刚说C语言刷题—1149 - 回文数个数

1.题目描述 一个正整数&#xff0c;正读和反读都相同的数为回文数。 例如 22&#xff0c; 131&#xff0c; 2442 &#xff0c; 37073&#xff0c; 66&#xff0c;…… 所有 11位数都是回文数。 给出一个正整数 n &#xff08; 1≤n≤10000 &#xff09;&#xff0c;求出 1,2…...

基于SpringBoot的博客系统测试报告

一、编写目的 本报告为博客系统测试报告&#xff0c;本项目模拟了csdn&#xff0c;实现了包括了用户登录&#xff0c;发布博客文章&#xff0c;查看博客等功能。 二、项目背景 博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来存储相关的数据&#xff0c…...

Koa知识框架

一、核心概念 1. 基本特点 由 Express 原班人马开发的下一代 Node.js Web 框架 基于中间件的洋葱圈模型 轻量级核心&#xff08;仅约 600 行代码&#xff09; 完全使用 async/await 异步流程控制 没有内置任何中间件&#xff0c;高度可定制 2. 核心对象 Application (Ko…...

React Native踩坑实录:解决NativeBase Radio组件在Android上的兼容性问题

React Native踩坑实录&#xff1a;解决NativeBase Radio组件在Android上的兼容性问题 问题背景 在最近的React Native项目开发中&#xff0c;我们的应用在iOS设备上运行良好&#xff0c;但当部署到Android设备时&#xff0c;进入语言设置和隐私设置页面后应用崩溃。我们遇到了…...

RCE联系

过滤 绕过空格 ● 进制绕过 题目练习 数字rce 使用$0执行bash&#xff0c;<<<将后面的字符串传递给左边的命令。 例如&#xff1a; <?php highlight_file(__FILE__); function waf($cmd) { $whiteList [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, \\, \, $, <]; $cmd_ch…...

区块链大纲笔记

中心化出现的原因是由于网络的形成&#xff08;不然就孤立了&#xff0c;这显然不符合现实&#xff0c;如&#xff0c;社会&#xff0c;计算机网路&#xff09;&#xff0c;接着由于网络中结点能力一般不对等同时为了便于管理等一系列问题&#xff0c;导致中心化网络的出现。&a…...

SQL:JOIN 进阶

目录 JOIN 是什么&#xff1f; &#x1f539;OUTER JOIN&#xff08;外连接&#xff09; 外连接的分类 外连接与内连接的区别 &#x1f539;USING 子句 语法结构 和 ON 的对比 &#x1f4d8;USING 的内部逻辑 &#x1f9e9; 多个字段的 USING USING 的 SELECT 特性&a…...

SATA—Link层状态机

一、概述 Link层的状态机大致可以分为五类&#xff1a; 链路层空闲状态机通信异常处理状态机链路层发送状态机链路层接收状态机链路层电源管理下的状态机 二、链路层空闲状态机 链路层空闲状态机共包含两个状态L_IDLE、L_SyncEscape&#xff0c;每个状态下的处理机制与条状…...

12.2.2 allocator类

allocator类将分配内存空间、调用构造函数、调用析构函数、释放内存空间这4部分操作分开&#xff0c;全部交给程序员来执行&#xff0c;不像new和delete #include <iostream> #include <string>int main() {const int n 10;std::allocator<std::string> al…...

Qwen:Qwen3,R1 在 Text2SQL 效果评估

【对比模型】 Qwen3 235B-A22B&#xff08;2350亿总参数&#xff0c;220亿激活参数&#xff09;&#xff0c;32B&#xff0c;30B-A3B&#xff1b;QwQ 32B&#xff08;推理模型&#xff09;DeepSeek-R1 671B&#xff08;满血版&#xff09;&#xff08;推理模型&#xff09; 1&a…...

Egg.js知识框架

一、Egg.js 核心概念 1. Egg.js 简介 基于 Koa 的企业级 Node.js 框架&#xff08;阿里开源&#xff09; 约定优于配置&#xff08;Convention over Configuration&#xff09; 插件化架构&#xff0c;内置多进程管理、日志、安全等能力 适合中大型企业应用&#xff0c;提供…...