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

编译安装教程

编译教程

下面是一个完整的从源码编译安装软件的教程,涵盖了从环境准备到配置、编译、安装的所有可能会用到的步骤和细节,适用于各种类型的软件包。


一、环境准备

在开始编译源码之前,确保系统满足以下条件:

1. 安装必要工具

在 Linux 环境下,通常需要以下工具:

  • 编译器: gccclang
  • 构建工具: make
  • 其他依赖: autoconf, automake, libtool

对于基于 Debian 的系统(如 Ubuntu):

sudo apt update
sudo apt install build-essential autoconf automake libtool pkg-config

对于基于 RHEL 的系统(如 CentOS):

sudo yum groupinstall "Development Tools"
sudo yum install autoconf automake libtool pkgconfig

2. 下载源码

源码通常以 .tar.gz.tar.bz2 的形式提供:

wget https://example.com/software-1.0.tar.gz
tar -xzvf software-1.0.tar.gz
cd software-1.0

二、运行 ./configure

./configure 是自动生成的配置脚本,用于检查系统环境,生成适合当前系统的编译配置。以下是配置过程的所有选项说明。

1. 路径相关选项

选项功能默认值示例
--prefix=DIR软件安装的根目录/usr/local--prefix=/opt/myapp
--exec-prefix=DIR架构相关文件的安装路径$prefix--exec-prefix=/usr
--bindir=DIR可执行文件安装路径$exec_prefix/bin--bindir=/usr/bin
--libdir=DIR库文件安装路径$exec_prefix/lib--libdir=/opt/myapp/lib
--includedir=DIR头文件安装路径$prefix/include--includedir=/opt/include

示例:

./configure --prefix=/opt/myapp --bindir=/opt/myapp/bin --libdir=/opt/myapp/lib
prefix 的用途

prefix 是通过 ./configure --prefix=DIR 选项指定的路径。其主要作用是告诉构建系统,安装的文件应该放在哪个目录下。

$prefix 的默认值通常是:

/usr/local

如果你运行以下命令:

./configure --prefix=/opt/myapp

那么,安装路径会变成以下结构:

/opt/myapp/bin       # 可执行文件
/opt/myapp/lib       # 库文件
/opt/myapp/include   # 头文件
/opt/myapp/share     # 共享资源(如文档、手册)

如何修改 $prefix

在配置阶段指定通过 ./configure--prefix 参数直接指定:

./configure --prefix=/custom/path

如果不指定,系统会默认安装到 /usr/local

./configure
make
make install
# 文件安装到 /usr/local/...

$prefix 的实际应用

假设我们正在安装一个名为 myapp 的软件:

示例 1: 默认安装到 /usr/local

./configure
make
make install

安装完成后,文件路径如下:

/usr/local/bin/myapp        # 可执行文件
/usr/local/lib/libmyapp.so  # 动态库
/usr/local/include/myapp.h  # 头文件
/usr/local/share/myapp      # 共享数据

示例 2: 自定义安装路径

./configure --prefix=/opt/myapp
make
make install

安装完成后,文件路径如下:

/opt/myapp/bin/myapp        # 可执行文件
/opt/myapp/lib/libmyapp.so  # 动态库
/opt/myapp/include/myapp.h  # 头文件
/opt/myapp/share/myapp      # 共享数据

为什么 $prefix 很重要
1. 避免覆盖系统文件

默认路径 /usr/local 不会影响系统自带的软件,安全且独立。

2. 方便不同版本共存

通过为不同版本指定不同的 --prefix,可以在同一台机器上运行多版本的软件:

./configure --prefix=/opt/myapp-1.0
./configure --prefix=/opt/myapp-2.0
3. 灵活管理软件

如果安装路径是自定义的,例如 /opt/myapp,删除整个软件只需移除该目录:

rm -rf /opt/myapp

如何查看 $prefix 的值

配置完成后,$prefix 的值通常会被记录在 Makefile 中,你可以通过以下方法查看:

1. 直接查看 Makefile

打开 Makefile,找到 prefix 的定义:

grep "^prefix" Makefile
2. 使用 config.log

查看配置过程生成的日志文件:

grep "prefix" config.log

2. 功能启用/禁用选项

选项功能示例
--enable-FEATURE启用某个功能--enable-ssl
--disable-FEATURE禁用某个功能--disable-debug
--with-FEATURE启用功能,并指定路径或配置--with-ssl=/opt/openssl
--without-FEATURE禁用功能--without-zlib

示例:

./configure --enable-optimizations --disable-debug --with-ssl=/opt/openssl

3. 编译器相关选项

选项功能示例
CC=COMPILER指定 C 编译器CC=gcc
CXX=COMPILER指定 C++ 编译器CXX=g++
CFLAGS=FLAGS为 C 编译器设置标志CFLAGS="-O2 -Wall"
CXXFLAGS=FLAGS为 C++ 编译器设置标志CXXFLAGS="-O2 -Wall"
LDFLAGS=FLAGS设置链接器标志LDFLAGS="-L/usr/lib"
CPPFLAGS=FLAGS设置预处理器标志(头文件路径等)CPPFLAGS="-I/usr/include"

示例:

./configure CC=gcc CFLAGS="-O2 -Wall" LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include"

4. 调试与日志选项

选项功能示例
--enable-debug启用调试模式--enable-debug
--disable-debug禁用调试模式--disable-debug
--quiet--silent减少输出--quiet
--verbose显示详细输出--verbose

5.查看所有参数

./configure -h

例如得到./configure --python=路径,可以指定安装到指定python版本库中


三、编译源码

运行 make 命令开始编译:

make
  • 加速编译
    利用多核 CPU:

    make -j$(nproc)
    
  • 常见问题
    如果出现依赖问题,请根据报错信息安装缺失的库。


四、测试编译结果

在安装前,可以运行测试(如果源码支持):

make test

或:

make check

五、安装编译结果

运行 make install 安装编译完成的文件到目标路径:

sudo make install

安装完成后,检查安装路径下是否有生成的文件:

ls /opt/myapp

六、卸载(可选)

如果需要卸载,使用 make uninstall

sudo make uninstall

七、完整操作示例

以下是完整的从下载到安装的操作流程示例:

  1. 下载源码:

    wget https://example.com/software-1.0.tar.gz
    tar -xzvf software-1.0.tar.gz
    cd software-1.0
    
  2. 运行配置脚本:

    ./configure --prefix=/opt/myapp --enable-optimizations --with-ssl=/opt/openssl CFLAGS="-O2 -Wall"
    
  3. 编译源码:

    make -j$(nproc)
    
  4. 运行测试(可选):

    make test
    
  5. 安装程序:

    sudo make install
    
  6. 验证安装:

    /opt/myapp/bin/software --version
    

八、常见问题及解决方案

1. 缺少依赖库

错误信息: configure: error: Missing library xyz
解决方法:

sudo apt install libxyz-dev  # Debian/Ubuntu
sudo yum install xyz-devel   # CentOS/RHEL

2. 权限不足

错误信息: Permission denied
解决方法:
在需要权限的命令前加 sudo

sudo make install

3. 环境变量问题

问题描述: 安装后无法找到可执行文件。
解决方法: 将安装路径添加到 PATH 中:

export PATH=/opt/myapp/bin:$PATH

以下是 autoconfautomake 的完整使用教程,包括它们的基本概念、工作原理和实际使用步骤。


一、autoconfautomake 的简介

1. 什么是 autoconf

autoconf 是一种自动生成 configure 脚本的工具,主要用来检测构建系统的环境是否满足软件的依赖需求,并生成相应的配置文件(如 Makefile)。

功能:

  • 提供跨平台兼容性。
  • 检查依赖工具和库的存在。
  • 自动生成编译脚本。

2. 什么是 automake

automake 是一种自动生成 Makefile.in 文件的工具,它依赖于更高层次的构建规则定义文件 Makefile.am

功能:

  • 简化 Makefile 编写。
  • autoconf 配合,生成完整的构建系统。
  • 提供模块化和扩展支持。

二、工作原理

  • autoconfconfigure.acconfigure.in 文件生成 configure 脚本。
  • automakeMakefile.am 文件生成 Makefile.in 文件,最终结合 autoconf 的输出生成 Makefile

工具链流程:

configure.ac --> autoconf --> configure
Makefile.am  --> automake --> Makefile.in
configure + Makefile.in --> ./configure --> Makefile

三、安装和准备环境

1. 安装工具

在 Linux 环境中安装 autoconfautomake

sudo apt-get install autoconf automake  # Debian/Ubuntu
sudo yum install autoconf automake     # CentOS

2. 项目准备

创建一个简单的 C 项目目录:

mkdir myproject
cd myproject
mkdir src
touch configure.ac Makefile.am src/Makefile.am

四、autoconfautomake 使用流程

1. 创建 configure.ac 文件

configure.acautoconf 的核心文件,定义了项目名称、版本、依赖工具等。

以下是一个简单示例:

AC_INIT([myproject], [1.0], [user@example.com])  # 项目名称、版本和维护者
AM_INIT_AUTOMAKE                                  # 初始化 automake
AC_PROG_CC                                       # 检测 C 编译器
AC_CONFIG_FILES([Makefile src/Makefile])         # 配置 Makefile 文件
AC_OUTPUT                                        # 输出配置文件

2. 创建 Makefile.am 文件

顶层目录的 Makefile.am
SUBDIRS = src
src/Makefile.am
bin_PROGRAMS = myapp
myapp_SOURCES = main.c utils.c utils.h

3. 生成构建脚本和文件

  1. 生成 aclocal.m4

    aclocal
    
  2. 生成 configure 脚本

    autoconf
    
  3. 生成 Makefile.in 文件

    automake --add-missing
    
  4. 生成 Makefile 文件

    ./configure
    

4. 编译和安装

  1. 编译

    make
    
  2. 安装

    make install
    
  3. 运行程序
    如果你的程序是一个可执行文件,例如 myapp,可以直接运行:

    ./src/myapp
    

五、完整示例

假设你有以下项目结构:

myproject/
├── configure.ac
├── Makefile.am
├── src/
│   ├── Makefile.am
│   ├── main.c
│   ├── utils.c
│   └── utils.h

以下是各个文件的内容:

1. configure.ac

AC_INIT([myproject], [1.0], [user@example.com])
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT

2. 顶层 Makefile.am

SUBDIRS = src

3. src/Makefile.am

bin_PROGRAMS = myapp
myapp_SOURCES = main.c utils.c utils.h

4. src/main.c

#include "utils.h"
#include <stdio.h>int main() {printf("Sum: %d\n", add(3, 5));return 0;
}

5. src/utils.c

#include "utils.h"int add(int a, int b) {return a + b;
}

6. src/utils.h

#ifndef UTILS_H
#define UTILS_Hint add(int a, int b);#endif

构建和运行

1. 生成文件

运行以下命令生成必要的构建文件:

aclocal
autoconf
automake --add-missing
./configure
2. 编译
make
3. 安装
make install
4. 运行程序
./src/myapp

六、常见问题及解决方法

  1. aclocal: command not found
    原因: 未安装 automake
    解决: 安装 automake
  2. configure.ac: no proper invocation of AM_INIT_AUTOMAKE
    原因: configure.ac 中缺少 AM_INIT_AUTOMAKE
    解决: 添加 AM_INIT_AUTOMAKE
  3. Makefile.am: required file 'INSTALL' not found
    原因: 缺少默认的 INSTALL 文件。
    解决: 使用 automake --add-missing 自动生成。

一、autoscan

1. 什么是 autoscan

autoscanautoconf 的一个辅助工具,用于自动生成初始的 configure.ac 文件(或者早期的 configure.in 文件)。它会扫描项目目录中的文件,推测需要哪些检查,并生成一个名为 configure.scan 的模板文件供开发者参考。


2. autoscan 的功能

  • 自动检测源码中的依赖,例如头文件、库文件。
  • 提供一个初步的 configure.ac 文件模板。
  • 简化了手动编写配置文件的过程。

3. 使用方法

(1) 初始化项目

确保项目目录结构已经创建,并包含至少一个源文件(如 main.c)。

mkdir myproject
cd myproject
echo '#include <stdio.h>' > main.c
echo 'int main() { return 0; }' >> main.c
(2) 运行 autoscan

在项目目录中运行:

autoscan

运行完成后,生成一个 configure.scan 文件。

(3) 修改 configure.scan

configure.scan 重命名为 configure.ac,并根据实际需求修改内容。

mv configure.scan configure.ac

示例生成的 configure.scan 文件可能包含以下内容:

AC_INIT([UNKNOWN], [1.0], [bug-report@example.com])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])
AC_PROG_CC
AC_OUTPUT

修改后,可添加更多具体的检查内容,例如库依赖、路径配置等。

(4) 继续构建

生成 configure 脚本:

autoconf

4. autoscan 的注意事项

  • 它只能作为生成初始配置的工具,输出的 configure.scan 文件需要手动完善。
  • 如果项目目录中没有 .c 文件或标准构建文件,autoscan 可能无法推断正确的配置。

二、aclocal

1. 什么是 aclocal

aclocalautomake 的辅助工具,专门用于生成 aclocal.m4 文件。aclocal.m4 是一个包含各种宏定义的文件,用于支持 autoconfautomake 的功能。

aclocal 会扫描项目目录中的 configure.ac 文件,以及系统中可用的宏定义,生成一个与项目兼容的宏文件。


2. aclocal 的功能

  • 根据 configure.ac 的内容,生成或更新 aclocal.m4 文件。
  • 提供对额外宏库的支持,例如 GNU 库的宏。
  • 管理自定义宏,以便 autoconfautomake 可以正确工作。

3. 使用方法

(1) 编写 configure.ac

假设我们有以下简单的 configure.ac 文件:

AC_INIT([myproject], [1.0], [bug-report@example.com])
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_OUTPUT
(2) 运行 aclocal

运行以下命令生成或更新 aclocal.m4 文件:

aclocal

生成的 aclocal.m4 文件可能包含标准宏,例如对编译器检查、头文件检查等的支持。

(3) 后续步骤

生成 configure 文件:

autoconf

4. 自定义宏支持

如果你需要自定义宏,可以创建一个名为 m4/ 的目录,并将宏文件放入其中。例如:

mkdir m4
echo 'AC_DEFUN([MY_MACRO], [echo "This is my custom macro"])' > m4/my_macro.m4

然后在 configure.ac 中引用:

AC_INIT([myproject], [1.0], [bug-report@example.com])
AC_CONFIG_MACRO_DIR([m4])  # 指定宏目录
AM_INIT_AUTOMAKE
MY_MACRO
AC_OUTPUT

运行以下命令,aclocal 会自动包含自定义宏:

aclocal

三、完整实践示例

假设我们有一个简单的项目:
目录结构如下:

myproject/
├── configure.ac
├── Makefile.am
├── src/
│   ├── main.c
│   ├── utils.c
│   └── utils.h

以下是构建流程:

  1. 生成初始文件
autoscan
mv configure.scan configure.ac
  1. 完善 configure.ac
AC_INIT([myproject], [1.0], [bug-report@example.com])
AC_CONFIG_SRCDIR([src/main.c])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_OUTPUT
  1. 生成宏文件
aclocal
  1. 生成 configure 脚本
autoconf
automake --add-missing
  1. 运行 configure 和编译
./configure
make

相关文章:

编译安装教程

编译教程 下面是一个完整的从源码编译安装软件的教程&#xff0c;涵盖了从环境准备到配置、编译、安装的所有可能会用到的步骤和细节&#xff0c;适用于各种类型的软件包。 一、环境准备 在开始编译源码之前&#xff0c;确保系统满足以下条件&#xff1a; 1. 安装必要工具 …...

计算机网络-物理层

1.1传输媒体&#xff1a; 导引型传输媒体&#xff1a;双绞线&#xff0c;同轴电缆&#xff0c;光纤 非导引型传输媒体&#xff1a;微波通信&#xff08;2&#xff5e;40GHz&#xff09; 1.2传输方式: 串行传输&#xff1a;一个接一个的依次传输 并行传输&#xff1a;一次发送n…...

缓存管理自动化:JuiceFS 企业版 Cache Group Operator 新特性发布

近期&#xff0c;JuiceFS 企业版推出了 Cache Group Operator&#xff0c;用于自动化创建和管理缓存组集群。Operator 是一种简化 Kubernetes 应用管理的工具&#xff0c;它能够自动化应用程序的生命周期管理任务&#xff0c;使部署、扩展和运维更加高效。 在推出 Operator 之前…...

Linux应用软件编程-多任务处理(线程)

线程&#xff1a;轻量级的进程&#xff0c;线程的栈区独立&#xff08;8M&#xff09;&#xff0c;与同一进程中的其他线程共用进程的堆区&#xff0c;数据区&#xff0c;文本区。 进程是操作系统资源分配的最小单位&#xff1b;线程是cpu任务调度的最小单位。 1. 线程的创建…...

MySql索引(基础篇)

后面也会持续更新&#xff0c;学到新东西会在其中补充。 建议按顺序食用&#xff0c;欢迎批评或者交流&#xff01; 缺什么东西欢迎评论&#xff01;我都会及时修改的&#xff01; 感谢各位大佬写的文章让我学到很多东西&#xff01;只是在各位大佬的基础加了我自己的思路&a…...

手机发烫怎么解决?

在当今这个智能手机不离手的时代&#xff0c;手机发烫成了不少人头疼的问题。手机发烫不仅影响使用手感&#xff0c;长期过热还可能损害手机硬件、缩短电池寿命&#xff0c;甚至引发安全隐患。不过别担心&#xff0c;下面这些方法能帮你有效给手机 “降温”。 一、使用习惯方面…...

Java实现观察者模式

一、前言 观察者模式&#xff0c;又称为发布订阅模式&#xff0c;是一种行为设置模式&#xff0c;允许对象之间建立一对多的依赖关系&#xff0c;这样当一个对象状态改变时&#xff0c;它的所有依赖者&#xff08;观察者&#xff09;都会收到通知并自动更新。 二、具体实现 …...

OpenResty开发环境搭建

简介 OpenResty 是一个基于 Nginx的高性能 Web 平台&#xff0c;用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。官方地址&#xff1a;http://openresty.org/cn/ 具备下列特点&#xff1a; 具备Nginx的完整功能基于Lua语言进行扩展&#…...

鸿蒙系统文件管理基础服务的设计背景和设计目标

有一定经验的开发者通常对文件管理相关的api应用或者底层逻辑都比较熟悉&#xff0c;但是关于文件管理服务的设计背景和设计目标可能了解得不那么清楚&#xff0c;本文旨在分享文件管理服务的设计背景及目标&#xff0c;方便广大开发者更好地理解鸿蒙系统文件管理服务。 1 鸿蒙…...

Elasticsearch-脚本查询

脚本查询 概念 Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能&#xff0c;ES支持多种脚本语言&#xff0c;如painless&#xff0c;其语法类似于Java,也有注释、关键字、类型、变量、函数等&#xff0c;其就要相对于其他脚本高出几倍的性…...

【蓝桥杯——物联网设计与开发】拓展模块4 - 脉冲模块

目录 一、脉冲模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 &#x1f505;采集原理 &#xff08;2&#xff09;STM32CubeMX 软件配置 &#xff08;3&#xff09;代码编写 &#xff08;4&#xff09;实验现象 二、脉冲模块接口函数封装 三、踩坑日记 &a…...

devops和ICCID简介

Devops DevOps&#xff08;Development 和 Operations 的组合&#xff09;是一种软件开发和 IT 运维的哲学&#xff0c;旨在促进开发、技术运营和质量保障&#xff08;QA&#xff09;部门之间的沟通、协作与整合。它强调自动化流程&#xff0c;持续集成&#xff08;CI&#xf…...

uniapp使用live-pusher实现模拟人脸识别效果

需求&#xff1a; 1、前端实现模拟用户人脸识别&#xff0c;识别成功后抓取视频流或认证的一张静态图给服务端。 2、服务端调用第三方活体认证接口&#xff0c;验证前端传递的人脸是否存在&#xff0c;把认证结果反馈给前端。 3、前端根据服务端返回的状态&#xff0c;显示在…...

OSI 网络 7 层模型

问: 请你介绍一下OSI七层网络模型物理层解决什么问题?功能原理问题 数据链路层解决什么问题功能原理 网络层解决的问题功能原理 传输层解决什么问题功能原理会话层解决什么问题功能原理: 表示层解决什么问题 应用层解决什么问题如何展示? 问: 请你介绍一下OSI七层网络模型 物…...

RK356x bsp 7 - PCF8563 RTC调试记录

文章目录 1、环境介绍2、目标3、PCF85634、dts配置5、内核配置6、测试验证 1、环境介绍 硬件&#xff1a;飞凌ok3568-c开发板 软件&#xff1a;原厂rk356x sdk 2、目标 开发板断电后仍正常计时。 3、PCF8563 PCF8563 是由 NXP Semiconductors 公司生产的低功耗 CMOS 实时…...

Vue.js组件开发-如何实现vueFLow流程

在Vue.js组件中实现vueFlow流程实例 确保已经安装了vueFlow库。如果还没有安装&#xff0c;可以使用npm或yarn进行安装&#xff1a; npm install braks/vue-flow # 或者 yarn add braks/vue-flow步骤&#xff1a; ‌引入vueFlow组件‌&#xff1a; 在Vue组件文件中&#xff…...

upload-labs关卡记录15

图片马&#xff0c;这里就可以看到任务和注意事项&#xff1a; 使用一个正常图片&#xff0c;然后拼接一个一句话木马即可实现。这里就用命令窗口进行实现&#xff1a; copy 111.png/b shell.php/a shell.png 注意这里的命令窗口要在存在图片和一句话木马的目录下打开&#…...

面试题总结

一、mysql中的乐观锁、悲观锁、共享锁、排它锁、行锁、表锁 1、乐观锁 通过sql实现的&#xff0c;更新sql语句时加上where version #{version}乐观锁不是数据库自带的锁&#xff0c;需要我们自己去实现。乐观锁是指操作数据库时(更新操作)&#xff0c;想法很乐观&#xff0c;认…...

Linux | 零基础Ubuntu解压RaR等压缩包文件

目录 介绍 案例分析 安装工具 解压实践 介绍 RAR是一种专利文件格式&#xff0c;用于数据压缩与归档打包&#xff0c;开发者为尤金罗谢尔&#xff08;俄语&#xff1a;Евгений Лазаревич Рошал&#xff0c;拉丁转写&#xff1a;Yevgeny Lazarevich R…...

自动化测试-Pytest测试

目录 pytest简介 基本测试实例 编写测试文件 执行测试 pytest运行时参数 mark标记 Fixture pytest插件 Allure测试报告 测试步骤 pytest简介 Pytest‌是一个非常流行的Python测试框架&#xff0c;它支持简单的单元测试和复杂的功能测试&#xff0c;具有易于上手、功…...

磁盘调度算法

先来先服务&#xff08;FCFS&#xff09;算法 原理&#xff1a; 按照进程请求访问磁盘的先后顺序进行调度。就像是排队买东西&#xff0c;先到的先服务。 示例&#xff08;Python&#xff09;&#xff1a; def fcfs(requests):"""requests是一个包含磁盘请求序…...

多视图 (Multi-view) 与多模态 (Multi-modal)

多视图 (Multi-view) 与多模态 (Multi-modal) 是两种不同的数据处理方式&#xff0c;它们在机器学习和数据分析中有着重要的应用。尽管这两者有一些相似之处&#xff0c;但它们关注的角度和处理方法有所不同。 多视图 (Multi-view) 定义&#xff1a;多视图指的是同一数据对象…...

CFA知识点梳理系列:CFA Level II, Reading 7 Economics of Regulation

这是CFA知识点梳理系列的第七篇文章&#xff0c;上一篇文章可以参考以下链接: CFA知识点梳理系列&#xff1a;CFA Level II, Reading 6 Economic Growth...

微信流量主挑战:三天25用户!功能未完善?(新纪元4)

&#x1f389;【小程序上线第三天&#xff01;突破25用户大关&#xff01;】&#x1f389; 嘿&#xff0c;大家好&#xff01;今天是我们小程序上线的第三天&#xff0c;我们的用户量已经突破了25个&#xff01;昨天还是16个&#xff0c;今天一觉醒来竟然有25个&#xff01;这涨…...

1.微服务灰度发布落地实践(方案设计)

前言 微服务架构中的灰度发布&#xff08;也称为金丝雀发布或渐进式发布&#xff09;是一种在不影响现有用户的情况下&#xff0c;逐步将新版本的服务部署到生产环境的策略。通过灰度发布&#xff0c;你可以先将新版本的服务暴露给一小部分用户或特定的流量&#xff0c;观察其…...

Web3如何推动元宇宙的去中心化发展?

随着科技的不断进步&#xff0c;元宇宙的概念逐渐从科幻变成现实&#xff0c;它不仅是虚拟世界与现实世界的融合&#xff0c;更是数字交互和社会参与的新形态。在这个过程中&#xff0c;Web3作为下一代互联网的核心技术&#xff0c;正发挥着关键作用。特别是在去中心化的元宇宙…...

【NODE】01-fs和path常用知识点

前言 最近在使用express-generator知识进行搭建前后端通信&#xff0c;其中有些知识点涉及到nodejs的fs和path核心模块&#xff0c;因此另写一篇文章进行介绍和代码案例练习。 fs&#xff08;文件系统&#xff09;和 path 是 Node.js 的核心模块&#xff0c;用于文件操作和路径…...

矩阵线性方程组

矩阵可以是任何形状 当矩阵的行数等于列数,称之为方阵,那么它就有行列式 矩阵的公式 矩阵分块法 Matrix(母体) 克拉默法则 线性方程组 注意初等列变换不是一个同解变换 初等变换与秩 XAB 可以用初等列变换但是不推荐,还是使用初等行变换.用转置思想求解 ( X A ) T…...

Web API和Web Services的区分

前些年一提及自动化测试&#xff0c;大多是指UI界面层的自动化测试。近几年&#xff0c;随着分层自动化测试概念的兴起&#xff0c;以及自动化测试自身的发展与细分&#xff0c;自动化测试包含了更多的内容。 API(Application ProgrammingInterface&#xff0c;应用程序编程接…...

各种数据库类型介绍

在软件开发和数据处理领域&#xff0c;数据库扮演着至关重要的角色。它们用于存储、检索和管理大量数据&#xff0c;是信息系统不可或缺的基础。以下是几种常用的数据库类型及其简要介绍&#xff1a; 1.关系型数据库&#xff08;Relational Databases&#xff09; 关系型数据库…...

Hive练习题11-15

11、第11题 info 表 date result 2005-05-09 win 2005-05-09 lose 2005-05-09 lose 2005-05-09 lose 2005-05-10 win 2005-05-10 lose 2005-05-10 lose 如果要生成下列结果, 该如何写sql语句? win lose 2005-05-09 2 2 2005-05-10 1 2 答案&#xff1a; (1) …...

【微信小程序】4plus|搜索框-历史搜索 | 我的咖啡店-综合实训

升级版1-清空全部的再次确认 实现功能: 历史搜索记录展示-历史搜索记录展示10条点击跳转-点击历史搜索记录可同步到搜索框并自动搜索全部删除-可一次性全部删除历史搜索记录全部删除-有再次确认操作展示 进行搜索后留下搜索记录 点击垃圾桶图标,显示【清空全部】 点击【清…...

学习笔记(C#基础书籍)-- C#高级应用

&#xff08;12.25&#xff0c;12.26&#xff09; I/O数据流技术&#xff1a;《第十二章》 为了能够长时间保存程序中的数据&#xff0c;I/O技术可以将数据保存到文件&#xff08;如文本文件等&#xff09;中。 ⭕文件基本操作 a.File类&#xff1a;支持对文件的基本操作&…...

pytorch将数据与模型都放到GPU上训练

默认是CPU&#xff0c;如果想要用GPU需要&#xff1a; 安装配置cuda&#xff0c;然后更新/下载支持gpu版本的pytorch&#xff0c;可以参考&#xff1a;https://blog.csdn.net/weixin_35757704/article/details/124315569设置device&#xff1a;device torch.device(cuda if t…...

华为 IPD,究竟有什么特点?(二)

关注作者 &#xff08;四&#xff09;华为版 IPD 特点四&#xff1a;一定要把差异化竞争力持 续建立在平台上 平台不仅带来研发效率的提升&#xff0c;更重要的是&#xff0c;它是技术竞争力的载体&#xff0c;是研发质 量的重要保证。 1&#xff09;为什么很多企业摆脱不了同…...

CV(7)--神经网络训练

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 什么是神经网络&#xff1a; 神经网络是一种模拟人脑神经元工作原理的算法&#xff0c;它由多个神经元组成&#xff0c;每个神经元都接受输入&#xff0c;通过计算产生输出&#xff0c;并将输出传递给其他神经元。神经网络的…...

git更改当前项目的远程仓库,保留原始仓库提交记录提交到新仓库

在开发过程中&#xff0c;有时需要将当前项目的远程仓库切换到另一个新的远程仓库&#xff0c;同时保留所有原始的提交记录。以下是详细的步骤和最佳实践&#xff0c;确保你能够顺利完成这一操作。 更改当前项目的远程仓库 1.查看当前的远程仓库 确认当前项目的远程仓库地址。…...

【产品应用】一体化无刷电机在旋转等离子喷枪中的应用

在现代工业制造与加工领域&#xff0c;等离子喷枪凭借其高温、高速的等离子射流&#xff0c;能够实现高效的材料表面处理、切割以及焊接等工艺&#xff0c;在众多行业中发挥着关键作用。而一体化无刷电机的应用&#xff0c;更是为等离子喷枪的性能提升和稳定运行注入了强大动力…...

docker django uwsgi 报错记录

这个配置中是能够正常进行网页访问的&#xff0c;能够查看网页 [uwsgi] chdir /home/luichun/lc/Pyfile/PyCursor/app module app.wsgi:application plugin-dir /usr/lib/uwsgi/plugins plugins python311 env TZAsia/Shanghai socket-timeout 60 websocket-ma…...

【自由能系列(初级),论文解读】神经网络中,熵代表系统的不确定性,自由能则引导系统向更低能量的状态演化,而动力学则描述了系统状态随时间的变化。

神经网络中的熵、自由能与动力学 核心结论&#xff1a; 神经网络在“学习”和“成长”过程中&#xff0c;熵、自由能以及动力学扮演着关键角色。 熵代表系统的不确定性&#xff0c;自由能则引导系统向更低能量的状态演化&#xff0c;而动力学则描述了系统状态随时间的变化。 这…...

云计算时代携程的网络架构变迁

大家觉得有意义和帮助记得及时关注和点赞!!! 前言0 携程云平台简介 网络演进时间线1 基于 VLAN 的二层网络 1.1 需求1.2 解决方案&#xff1a;OpenStack Provider Network 模型1.3 硬件网络拓扑1.4 宿主机内部网络拓扑1.5 小结 优点缺点2 基于 SDN 的大二层网络 2.1 面临的新问…...

uniapp 微信小程序 数据空白展示组件

效果图 html <template><view class"nodata"><view class""><image class"nodataimg":src"$publicfun.locaAndHttp()?localUrl:$publicfun.httpUrlImg(httUrl)"mode"aspectFit"></image>&l…...

java 线程池为什么设计成先进队列再创建最大线程为何先入队列再增加线程数?

java 线程池为什么设计成先进队列再创建最大线程为何先入队列再增加线程数&#xff1f; 这个设计与 线程池的性能优化 、资源利用和任务调度策略密切相关。要理解为什么线程池设计成“ 先将任务入队列&#xff0c;再创建最大线程数 ”&#xff0c;可以从以下几个方面进行分析&…...

我的Qt作品(20)使用Qt+OpenCV写一个旋转/抠图/mask生成工具

使用QtOpenCV写一个旋转/抠图/mask生成工具 1、旋转功能 void FormRotate::rotateImage(const cv::Mat &src, cv::Mat &dst, double degree) //旋转 {if (fabs(degree) < 0.001){dst src;return;}//center旋转的中心点坐标//degree旋转的角度,不是弧度,>0逆时针…...

【vue】vite + ts +vue3 安装及使用 pinia

vue3 TS 安装使用pinia状态管理_vue3 ts pinia-CSDN博客 Vue项目进阶&#xff1a;再谈Pinia函数式&#xff08;composition API&#xff09;用法-腾讯云开发者社区-腾讯云...

计算机网络 (10)网络层

前言 计算机网络中的网络层&#xff08;Network Layer&#xff09;是OSI&#xff08;开放系统互连&#xff09;模型中的第三层&#xff0c;也是TCP/IP模型中的第二层&#xff0c;它位于数据链路层和传输层之间。网络层的主要任务是负责数据包从源主机到目的主机的路径选择和数据…...

1085 PAT单位排行

每次 PAT 考试结束后&#xff0c;考试中心都会发布一个考生单位排行榜。本题就请你实现这个功能。 输入格式&#xff1a; 输入第一行给出一个正整数 N&#xff08;≤105&#xff09;&#xff0c;即考生人数。随后 N 行&#xff0c;每行按下列格式给出一个考生的信息&#xff…...

知识库1: 什么是知识库?

知识库&#xff08;Knowledge Base, KB&#xff09;是一个存储和组织知识的信息系统或数据集合&#xff0c;用于保存、管理和访问结构化或非结构化的信息。它的目的是帮助人们快速获取所需的知识、解答问题或支持决策。知识库可以被广泛应用于技术支持、教育、研究以及智能系统…...

[SAP ABAP] 程序备份

备份当前程序到本地的方式如下&#xff1a; 1.复制粘贴 Ctrl A 、Ctrl V 2.【实用程序】|【更多实用程序】|【上载/下载】|【下载】 ​ 3.快捷键&#xff0c;支持多种格式导出(.abap .html .pdf 等) 在事务码SE38(ABAP编辑器)屏幕右下角&#xff0c;点击【Options选项】图…...

SpringBoot 自动装配原理及源码解析

目录 一、引言 二、什么是 Spring Boot 的自动装配 三、自动装配的核心注解解析 3.1 SpringBootApplication 注解 &#xff08;1&#xff09;SpringBootConfiguration&#xff1a; &#xff08;2&#xff09;EnableAutoConfiguration&#xff1a; &#xff08;3&#xf…...