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

【WRF安装】WRF编译错误总结1:HDF5库包安装

目录

  • 1 HDF5库包安装有误:
    • HDF5 not set in environment. Will configure WRF for use without.
    • HDF5的重新编译
  • 错误原因1:提示 overflow 错误
    • 1. 检查系统是否缺少依赖库或工具
    • 2. 检查和更新编译器版本
    • 3. 检查 ./configure 报错信息
    • 4. 检查系统环境变量
    • 5. 逐步定位问题
    • 6. 重新下载 HDF5 源码并清理环境
    • 7. 检查编译器是否支持 64 位整数
  • 参考

1 HDF5库包安装有误:

在编译安装WRF时,执行./configure时,

./configure

弹出以下内容:

checking for perl5... no
checking for perl... found /usr/bin/perl (perl)
Will use NETCDF in dir: /home/wanzhou/soft/netcdf4.7
HDF5 not set in environment. Will configure WRF for use without.
Will use PHDF5 in dir: /home/wanzhou/soft/hdf5-1.8.20
Will use 'time' to report timing information
$JASPERLIB or $JASPERINC not found in environment, configuring to build without                       grib2 I/O...
------------------------------------------------------------------------

显示HDF5不在环境中。

HDF5 not set in environment. Will configure WRF for use without.

问题:
WRF 编译时需要 HDF5 库(特别是支持并行 I/O 的 PHDF5 库)。虽然检测到了 PHDF5 的路径 /home/wanzhou/soft/hdf5-1.8.20,但普通的 HDF5 没有设置。
这可能是因为环境变量 HDF5 或相关路径(如 HDF5_LIB 和 HDF5_INC)没有正确设置。

解决方法:
在 Shell 环境中设置 HDF5 的路径,并重新运行 ./configure:

export HDF5=/home/wanzhou/soft/hdf5-1.8.20
export HDF5_LIB=$HDF5/lib
export HDF5_INC=$HDF5/include

如果你已经安装了其他版本的 HDF5,确保路径正确。

HDF5的重新编译

重新编译 HDF5 的目的是确保它与 WRF 所使用的编译器和环境完全兼容,尤其是在并行计算(MPI)的情况下。如果你的 HDF5 安装存在问题(如未启用并行支持或编译器不一致),可以按照以下步骤重新编译 HDF5。

1、删除旧的 HDF5 编译目录(如果需要)

如果你之前已经安装了 HDF5,但路径或选项配置有误,可以选择删除旧的安装目录。

检查 HDF5 是否已安装
要查看HDF5是否安装以及其安装情况,可以使用以下命令:

h5cc --show

如果HDF5安装正确,这个命令应该会显示编译器和链接器的选项(如 gcc -I/home/path/include …),这些选项是用于编译和链接HDF5程序的。

删除旧的 HDF5
如果需要删除旧版本的 HDF5,直接删除安装目录:

rm -rf /home/wanzhou/soft/hdf5-1.8.20

在删除之前,确认该路径是否为旧版本 HDF5 的安装路径。

2、下载 HDF5 源代码
去 HDF5 官方网站下载对应的版本(确保版本与 WRF 支持的版本兼容)

HDF5 官方网站:The HDF Group

下载后解压:

wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.20/src/hdf5-1.8.20.tar.gz
tar -xzvf hdf5-1.8.20.tar.gz
cd hdf5-1.8.20
cd /home/wanzhou/soft/hdf5-1.8.20/
CC=mpicc FC=mpif90 CFLAGS="-O2" FCFLAGS="-O2" ./configure --prefix=/home/wanzhou/soft/hdf5-1.8.20 \--enable-parallel \--enable-fortranwget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.22/src/hdf5-1.8.22.tar.gz
tar -xvf hdf5-1.8.22.tar.gz
cd hdf5-1.8.22
./configure --prefix=/home/wanzhou/soft/hdf5-1.8.22
./configure --prefix=/home/wanzhou/soft/hdf5-1.8.22 CC=gcc FC=gfortran CXX=g++ --enable-fortran --enable-fortran2003 --enable-cxxmake
make install

3、配置 HDF5 编译选项
关键配置选项

  • 安装路径:通过 --prefix 指定 HDF5 的安装目录。
  • 启用并行支持:通过 --enable-parallel 启用 MPI 支持(必须有 MPI 库,如 mpich 或 openmpi)。
  • 启用 Fortran 支持:通过 --enable-fortran 启用 Fortran 接口。
  • 编译器工具链:确保使用与 WRF 一致的编译器(如 gcc, gfortran, mpicc)。

配置命令(单机并行支持)

CC=mpicc FC=mpif90 ./configure --prefix=/home/wanzhou/soft/hdf5-1.8.20 \--enable-parallel \--enable-fortran

解释:

  • CC=mpicc:指定 C 编译器为 MPI 的 C 编译器(如 mpicc)。
  • FC=mpif90:指定 Fortran 编译器为 MPI 的 Fortran 编译器(如 mpif90)。
  • –prefix=/home/wanzhou/soft/hdf5-1.8.20:指定 HDF5 的安装目录。
  • –enable-parallel:启用并行支持(PHDF5)。
  • –enable-fortran:启用 Fortran 接口(WRF 需要)。

配置命令(无并行支持,仅编译串行版本 HDF5)
如果不需要并行支持,可以省略 --enable-parallel:

CC=gcc FC=gfortran ./configure --prefix=/home/wanzhou/soft/hdf5-1.8.20 \--enable-fortran

4、编译和安装 HDF5

编译 HDF5,运行以下命令开始编译:

make -j4

-j4:表示使用 4 个并行线程进行编译。可以根据你的 CPU 核心数调整这个值(如 -j8)。

安装 HDF5
在编译成功后,运行以下命令将 HDF5 安装到指定目录:

make install

检查安装
安装完成后,检查 HDF5 是否正确安装:

ls /home/wanzhou/soft/hdf5-1.8.20

你应该看到如下子目录:

  • bin:包含 HDF5 工具(如 h5cc, h5dump)。
  • lib:包含 HDF5 动态库文件(如 libhdf5.a, libhdf5.so)。
  • include:包含 HDF5 的头文件。

在这里插入图片描述

特别是 bin 中应该有工具文件:

ls /home/wanzhou/soft/hdf5-1.8.20/bin
h5cc  h5dump  h5ls

5、 配置环境变量

安装完成后,确保 HDF5 的路径已正确添加到环境变量中。将以下代码添加到 ~/.bashrc 文件中,并加载修改:

export HDF5_DIR=/home/wanzhou/soft/hdf5-1.8.20
export PATH=${HDF5_DIR}/bin:$PATH
export LD_LIBRARY_PATH=${HDF5_DIR}/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=${HDF5_DIR}/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${HDF5_DIR}/include:$CPLUS_INCLUDE_PATH

6、验证 HDF5 并行支持

如果启用了并行支持(–enable-parallel),可以运行一个简单的测试用例来验证:

编写测试程序 test_hdf5.c:

#include "hdf5.h"
#include <mpi.h>
#include <stdio.h>int main(int argc, char **argv) {MPI_Init(&argc, &argv);H5open();printf("HDF5 parallel support enabled.\n");H5close();MPI_Finalize();return 0;
}

编译和运行测试程序:

mpicc -o test_hdf5 test_hdf5.c -lhdf5
mpirun -np 4 ./test_hdf5
mpirun -np 4 test_hdf5

如果输出:

HDF5 parallel support enabled.

说明 HDF5 并行支持正常工作。

错误原因1:提示 overflow 错误

HDF5 库安装失败,并且在 ./configure 阶段多次提示 overflow 错误,通常是由于以下原因之一导致的:

  • 依赖库或工具缺失:如编译器(gcc、gfortran)、MPI 库(mpich 或 openmpi)。
  • 编译器版本问题:部分 HDF5 版本对编译器版本有特殊要求。
  • 编译选项冲突或配置错误:./configure 提供的选项可能与系统环境或依赖库不兼容。
  • 系统环境变量问题:如未正确设置 CC(C 编译器)、FC(Fortran 编译器)、CFLAGS 等。

1. 检查系统是否缺少依赖库或工具

HDF5 的编译依赖以下工具和库,请确保它们已安装:

必备工具

  • C 编译器(如 gcc)
  • Fortran 编译器(如 gfortran)
  • MPI 库(如 mpich 或 openmpi,如果需要并行支持)

检查方法
运行以下命令查看是否安装了这些工具:

gcc --version
gfortran --version
mpicc --version
mpif90 --version

如果工具版本信息正确输出,则说明已安装成功。

2. 检查和更新编译器版本

部分 HDF5 版本可能需要特定版本的编译器。以下是推荐的版本范围:

  • GCC:建议使用 GCC 4.8 或更高版本。
  • GFortran:建议与 GCC 一致,版本需为 4.8 或更高。
  • MPI 编译器:建议使用与 GCC 兼容的 mpich 或 openmpi。

检查当前编译器版本,运行以下命令:

gcc --version
gfortran --version
mpicc --version

确认版本是否满足要求。

3. 检查 ./configure 报错信息

overflow 错误的常见原因
1、编译器优化选项不兼容:
HDF5 源代码中可能包含大数组或复杂计算,某些编译器(特别是高版本 GCC 或 Clang)会因优化选项而报溢出错误。
2、系统默认的 CFLAGS 或 FCFLAGS 设置有问题:
系统可能设置了过高的优化级别(如 -O3),导致编译失败。

解决方法
在运行 ./configure 时,手动设置编译器优化选项为较低级别(如 -O2 或 -O1):

CC=mpicc FC=mpif90 CFLAGS="-O2" FCFLAGS="-O2" ./configure --prefix=/home/wanzhou/soft/hdf5-1.8.20 \--enable-parallel \--enable-fortran

4. 检查系统环境变量

HDF5 编译依赖环境变量,如 CC、FC、CFLAGS、LDFLAGS 等。如果这些变量未正确设置,可能导致配置失败。

解决方法
在运行 ./configure 前,手动设置关键环境变量:

export CC=mpicc
export FC=mpif90
export CFLAGS="-O2"
export FCFLAGS="-O2"
export LDFLAGS="-L/usr/lib64 -L/usr/lib"
export CPPFLAGS="-I/usr/include"

5. 逐步定位问题

方法 1:检查 config.log
HDF5 的 ./configure 会生成一个 config.log 文件,记录配置过程的详细日志。

打开 config.log 文件,搜索关键字 “error” 或 “overflow”:

grep -i "error" config.log
grep -i "overflow" config.log

根据日志中的提示信息,定位是哪个库或函数导致问题。

方法 2:尝试最小化配置
运行 ./configure 时,临时禁用一些功能(如并行支持或 Fortran 支持),检查是否能通过配置。

CC=gcc FC=gfortran ./configure --prefix=/home/wanzhou/soft/hdf5-1.8.20

如果可以通过,那么问题可能出在 MPI 或其他高级功能上。

6. 重新下载 HDF5 源码并清理环境

如果多次尝试仍然失败,可以考虑重新下载 HDF5 源码,并清理之前的残留文件。

清理旧的编译文件
进入 HDF5 源码目录,运行以下命令:

make distclean

7. 检查编译器是否支持 64 位整数

HDF5 编译可能涉及大文件支持或 64 位整数支持。如果你的编译器不支持 64 位整数,这会导致 overflow 错误。

解决方法
在运行 ./configure 时,强制启用 64 位整数支持:

CC=mpicc FC=mpif90 CFLAGS="-O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" \FCFLAGS="-O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" \./configure --prefix=/home/wanzhou/soft/hdf5-1.8.20 \--enable-parallel \--enable-fortran

一番操作后,终于有HDF5库环境了(但此问题好像并不影响WRF编译):
在这里插入图片描述

参考

#hdf5
export HDF5_DIR=/home/wanzhou/soft/hdf5-1.8.20
export PATH=${HDF5_DIR}/bin:$PATH
export LD_LIBRARY_PATH=${HDF5_DIR}/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=${HDF5_DIR}/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${HDF5_DIR}/include:$CPLUS_INCLUDE_PATHexport HDF5PATH=/home/wanzhou/soft/hdf5-1.8.20

.bashrc内容:

# ARWpost
export PATH=/home/wanzhou/wrf/ARWpost:$PATH# Conda
export PATH=/home/wanzhou/miniconda3/bin:$PATH
# export PATH=/home/wanzhou/miniconda3/pkgs/netcdf-fortran-4.6.1-mpi_mpich_h2e543cf_6/lib:$PATH# libtiff
export LIBTIFF_HOME=/home/wanzhou/miniconda3/pkgs/libtiff-4.5.0-h6adf6a1_2
export PATH=$LIBTIFF_HOME/bin:$PATH
export LD_LIBRARY_PATH=${LIBTIFF_HOME}/lib:$LD_LIBRARY_PATH
export INCLUDE=${LIBTIFF_HOME}/include:$INCLUDE# geotiff
export GEOTIFF_HOME=/home/wanzhou/miniconda3/pkgs/geotiff-1.7.0-h2a26cda_3
export PATH=$GEOTIFF_HOME/bin:$PATH
export LD_LIBRARY_PATH=${GEOTIFF_HOME}/lib:$LD_LIBRARY_PATH
export INCLUDE=${GEOTIFF_HOME}/include:$INCLUDE# WRF Domain Wizard环境设置
export PATH=/home/wanzhou/WRFDomainWizard:$PATH
#保存退出# 添加Java路径:
export JAVA_HOME=/home/wanzhou/Packages/jdk1.8.0_421
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre

相关文章:

【WRF安装】WRF编译错误总结1:HDF5库包安装

目录 1 HDF5库包安装有误&#xff1a;HDF5 not set in environment. Will configure WRF for use without.HDF5的重新编译 错误原因1&#xff1a;提示 overflow 错误1. 检查系统是否缺少依赖库或工具2. 检查和更新编译器版本3. 检查 ./configure 报错信息4. 检查系统环境变量5.…...

MyBatis常见面试题总结

#{} 和 ${} 的区别是什么&#xff1f; 注&#xff1a;这道题是面试官面试我同事的。 答&#xff1a; ${}是 Properties 文件中的变量占位符&#xff0c;它可以用于标签属性值和 sql 内部&#xff0c;属于原样文本替换&#xff0c;可以替换任意内容&#xff0c;比如${driver}…...

Qt生成随机数的方法

后台接口要求传个流水单号&#xff0c;流水号的格式是&#xff1a;“设备序列号”“设备MAC地址”“20位的随机数”。 具体的是&#xff1a; “设备序列号”&#xff1a;就是烧录工具写入设备的序列编号&#xff0c;这就不多说了&#xff0c;读出来就行&#xff1b; “设备MAC地…...

深入探索Vue.js中的v-if指令:条件渲染的高级技巧

深入探索Vue.js中的v-if指令&#xff1a;条件渲染的高级技巧 引言 在现代Web开发中&#xff0c;根据条件动态地渲染或移除DOM元素是一个常见的需求。Vue.js提供了一种简洁而强大的方法来实现这一目标&#xff0c;即通过v-if指令来根据表达式的值来控制元素的渲染。本文将详细…...

【记录50】uniapp安装uview插件,样式引入失败分析及解决

SassError: Undefined variable: "$u-border-color". 表示样式变量$u-border-color没定义&#xff0c;实际是定义的 首先确保安装了scss/sass 其次&#xff0c;根目录下 app.vue中是否全局引入 <style lang"scss">import /uni_modules/uview-ui/in…...

NTLMv2 离线爆破

攻击者&#xff08;kali&#xff09;&#xff1a;192.168.72.162 受害者&#xff08;administrator&#xff09;&#xff1a;192.168.72.163 因为 NTLM 身份验证是通过计算正确的挑战值得出的&#xff0c;所以如果我们能获取域用户的 NTLM 认证某一服务的 Net-NTLM v2 Hash …...

LabVIEW实现RFID通信

目录 1、RFID通信原理 2、硬件环境部署 3、程序架构 4、前面板设计 5、程序框图设计 6、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联网系…...

【Three.js基础学习】31.Lights Shading

前言 关于灯光如何在着色器中应用&#xff01; 下面将创建三个灯光 分别是点光源&#xff0c;环境光&#xff0c;方向光通过这几种光应用着色器显示对应阴影 学习灯光阴影&#xff0c;着色器的使用 添加三盏灯 点光&#xff0c;方向光&#xff0c;环境光 创建一个环境光 在现…...

Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置

目录 一. 前置条件二. Win10安装配置Oracle数据库2.1 数据库获取2.2 数据库安装2.3 数据库配置确认2.4 数据库访问 三. Win10配置Oracle数据库可对外访问3.1 打开文件和打印机共享3.2 开放1521端口 四. 端口与地址确认4.1 查看监听器的状态4.2 Win10查看1521端口是否被监听4.3 …...

IDEA搭建springboot demo

如下所示创建SpringBootTest18项目&#xff0c;我选的maven&#xff0c;创建完成项目后&#xff0c;maven会自动下载一些依赖库到maven的repository目录中。 创建的项目结构如下图所示 接下来在项目中加入Framework支持&#xff0c;右击项目&#xff0c;弹出的菜单如下图所示&a…...

SQLite Update 语句

SQLite Update 语句 SQLite 的 UPDATE 语句用于更新数据库表中的现有记录。使用 UPDATE 语句&#xff0c;您可以修改一个或多个列的值。本教程将详细介绍如何使用 SQLite UPDATE 语句&#xff0c;包括语法、示例以及一些最佳实践。 语法 SQLite UPDATE 语句的基本语法如下&a…...

node.js的简单示例

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;用于方便地构建快速、可扩展的网络应用。下面是一个简单的Node.js示例&#xff0c;它创建了一个简单的HTTP服务器&#xff0c;当访问服务器时&#xff0c;它会响应“Hello World” // 引入Node.js的HTTP模块…...

fpga系列 HDL:Quartus II 时序约束 静态时序分析 (STA) test.out.sdc的文件结构

test.out.sdc的文件结构 ## Generated SDC file "test.out.sdc"## Copyright (C) 1991-2013 Altera Corporation ## Your use of Altera Corporations design tools, logic functions ## and other software and tools, and its AMPP partner logic ## functions,…...

Restaurants WebAPI(一)—— clean architecture

文章目录 项目地址一、Restaurants.Domain 核心业务层1.1 Entities实体层1.2 Repositories 数据操作EF的接口二、Restaurants.Infrastructure 基础设施层2.1 Persistence 数据EF CORE配置2.2 Repositories 数据查询实现2.3 Extensions 服务注册三、Restaurants.Application用例…...

A Unified Framework for STAR-RIS Coefficients Optimization

文章目录 AbstractB. A Penalty-based Reformulation of (1) III. OPTIMIZING AUXILIARY VARIABLES φ \boldsymbol φ φ IN P1IV. A CASE STUDY OF P2 ON DOWNLINK STAR-RIS ASSISTED TRANSMISSION SYSTEMA. 优化 x , ρ , w , λ t x, \rho, \mathbf{w}, \lambda^t x,ρ,w…...

rebase ‘A‘ onto ‘master‘ 和 merge ‘master‘ into ‘A‘有什么区别

在Git版本控制系统中&#xff0c;rebase 和 merge 是两种不同的操作&#xff0c;用于合并分支。rebase A onto master 和 merge master into A 虽然最终目的都是将两个分支的更改合并在一起&#xff0c;但它们在处理方式和结果上有所不同。 rebase ‘A’ onto ‘master’ 含义…...

谷歌发布最新视频生成模型 Veo 2:视频生成AI新王牌

谷歌 在当今数字化快速发展的时代&#xff0c;人工智能视频生成技术正不断突破创新。就在12月17日&#xff0c;谷歌推出了一个新的视频模型 Veo 2 。 Veo 2 Veo 2 Veo 2 可以创建各种主题和风格的高质量视频。在谷歌官方由人工评估员判断中&#xff0c;Veo 2 与领先模型相比取得…...

2025erp系统开源免费进销存系统搭建教程/功能介绍/上线即可运营软件平台源码

系统介绍 基于ThinkPHP与LayUI构建的全方位进销存解决方案 本系统集成了采购、销售、零售、多仓库管理、财务管理等核心功能模块&#xff0c;旨在为企业提供一站式进销存管理体验。借助详尽的报表分析和灵活的设置选项&#xff0c;企业可实现精细化管理&#xff0c;提升运营效…...

基于Docker的Minio分布式集群实践

目录 1. 说明 2. 配置表 3. 步骤 3.1 放行服务端口 3.2 docker-compose 编排 4. 入口反向代理与负载均衡配置 4.1 api入口 4.2 管理入口 5. 用例 6. 参考 1. 说明 以多节点的Docker容器方式实现minio存储集群&#xff0c;并配以nginx反向代理及负载均衡作为访问入口。…...

解决node.js的req.body为空的问题

从昨晚一直在试&#xff0c;明明之前用的封装的axios发送请求给其他的后端&#xff08;springboot&#xff09;是可以的&#xff0c;但昨天用了新项目的后端&#xff08;node.js&#xff09;就不行。 之前用了代理&#xff0c;所以浏览器发送的post请求不会被拦截&#xff0c;…...

数据结构期末算法复习:树、查找、排序

一、树 1.二叉链-定义 typedef struct BiTNode{ ElemType data;//数据域 struct BiTNode *lchild ,*rchild;//左、右孩子指针 }BiTNode , *BiTree ;2.查找值为x的结点 BTNode FindNode(BTNode b&#xff0c;ElemType x) { BTNode *p;if (bNULL) return NULL;else if (…...

复习打卡Linux篇

目录 1. Linux常用操作命令 2. vim编辑器 3. 用户权限 4. Linux系统信息查看 1. Linux常用操作命令 基础操作&#xff1a; 命令说明history查看历史执行命令ls查看指定目录下内容ls -a查看所有文件 包括隐藏文件ls -l ll查看文件详细信息&#xff0c;包括权限类型时间大小…...

OpenAI API深度解析:参数、Token、计费与多种调用方式

随着人工智能技术的飞速发展&#xff0c;OpenAI API已成为许多开发者和企业的得力助手。本文将深入探讨OpenAI API的参数、Token、计费方式&#xff0c;以及如何通过Rest API&#xff08;以Postman为例&#xff09;、Java API调用、工具调用等方式实现与OpenAI的交互&#xff0…...

Centos7 部署ZLMediakit

1、拉取代码 #国内用户推荐从同步镜像网站gitee下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit #千万不要忘记执行这句命令 git submodule update --init 2、安装编译器 sudo yum -y install gcc 3、安装cmake sudo yum -y install cmake 4…...

python:用 sklearn.metrics 评价 K-Means 聚类模型

sklearn 的 metrics 模块提供的聚类模型评价指标如下&#xff1a; ARI 评价法&#xff08;兰德系数&#xff09;: adjusted_rand_score AMI 评价法&#xff08;相互信息&#xff09;: adjusted_mutual_info_score V-measure 评分 : completeness_score FMI 评价法 : fowlkes_m…...

谁说C比C++快?

看到这个问题&#xff0c;我我得说&#xff1a;这事儿没有那么简单。 1. 先把最大的误区打破 "C永远比C快" —— 某位1990年代的程序员 这种说法就像"自行车永远比汽车省油"一样荒谬。我们来看个例子&#xff1a; // C风格 char* str (char*)malloc(100…...

算法刷题Day23:BM60 括号生成

题目链接 描述&#xff1a;给出n对括号&#xff0c;请编写一个函数来生成所有的由n对括号组成的合法组合。 例如&#xff0c;给出n3&#xff0c;解集为&#xff1a; “((()))”, “(()())”, “(())()”, “()()()”, “()(())” 思路&#xff1a; 回溯左子树不断添加‘&#…...

基于Redis实现令牌桶算法

基于Redis实现令牌桶算法 令牌桶算法算法流程图优点缺点 实现其它限流算法 令牌桶算法 令牌桶是一种用于分组交换和电信网络的算法。它可用于检查数据包形式的数据传输是否符合定义的带宽和突发性限制&#xff08;流量不均匀或变化的衡量标准&#xff09;。它还可以用作调度算…...

XXE练习

pikachu-XXE靶场 1.POC:攻击测试 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY xxe "a">]> <foo>&xxe;</foo> 2.EXP:查看文件 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY xxe SY…...

Mac上使用ln指令创建软链接、硬链接

在Mac、Linux和Unix系统中&#xff0c;软连接&#xff08;Symbolic Link&#xff09;和硬连接&#xff08;Hard Link&#xff09;是两种不同的文件链接方式。它们的主要区别如下&#xff1a; 区别&#xff1a; 硬连接&#xff1a; 不能跨文件系统。不能链接目录&#xff08;为…...

单元测试-Unittest框架实践

文章目录 1.Unittest简介1.1 自动化测试用例编写步骤1.2 相关概念1.3 用例编写规则1.4 断言方法 2.示例2.1 业务代码2.2 编写测试用例2.3 生成报告2.3.1 方法12.3.2 方法2 1.Unittest简介 Unittest是Python自带的单元测试框架&#xff0c;适用于&#xff1a;单元测试、Web自动…...

JAVA没有搞头了吗?

前言 今年的Java程序员群体似乎承受着前所未有的焦虑。投递简历无人问津&#xff0c;难得的面试机会也难以把握&#xff0c;即便成功入职&#xff0c;也往往难以长久。于是&#xff0c;不少程序员感叹&#xff1a;互联网的寒冬似乎又一次卷土重来&#xff0c;环境如此恶劣&…...

ECharts 饼图:数据可视化的重要工具

ECharts 饼图:数据可视化的重要工具 引言 在数据分析和可视化的领域,ECharts 是一个广受欢迎的开源库。它由百度团队开发,用于在网页中创建交互式图表。ECharts 提供了多种图表类型,包括柱状图、折线图、散点图等,而饼图则是其中最常用的一种。本文将深入探讨 ECharts 饼…...

arcGIS使用笔记(无人机tif合并、导出、去除黑边、重采样)

无人机航拍建图之后&#xff0c;通过大疆智图软件可以对所飞行的区域的进行拼图&#xff0c;但是如果需要对拼好的图再次合并&#xff0c;则需要利用到arcGIS软件。下面介绍arcGIS软件在这个过程中常用的操作。 1.导入tif文件并显示的方法&#xff1a;点击“”图标进行导入操作…...

0 前言

ArCS作为一个基于Rust的CAD&#xff08;计算机辅助设计&#xff09;开源系统&#xff0c;尽管已经有四年未更新&#xff0c;但其设计理念和技术实现仍然具有很高的学习和参考价值。以下是对ArCS项目的进一步分析和解读&#xff1a; 一、项目亮点与技术优势 高效与安全的Rust语…...

ubuntu server 安装

1 获取ubuntu https://ubuntu.com/download/server 2 安装ubuntu 详细教程查看视频&#xff1a; ubunut server 安装_哔哩哔哩_bilibili...

linux 添加默认网关

在linux 可以使用 route 命令添加默认网关&#xff0c;假设添加的默认网关是192.168.159.2 添加方式如下&#xff1a; route add default gw 192.168.159.2 以上命令只需要把add 改成 del &#xff0c;就能删除刚才添加的路由 route del default gw 192.168.159.2 #该命…...

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好&#xff0c;今天给大家分享一个开源的自托管虚拟浏览器项目Neko&#xff0c;旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;提供…...

Qt之修改窗口标题、图标以及自定义标题栏(九)

Qt开发 系列文章 - titles-icons-titlebars&#xff08;九&#xff09; 目录 前言 一、修改标题 二、添加图标 三、更换标题栏 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 在我们利用Qt设计软件时&#xff0c;经常需要修改窗口标题、更改软…...

can总线相关概念---frame-signal-message

1、frame 帧是数据链路层的传输单元。它将上层传入的数据添加一个头部和尾部&#xff0c;组成了帧。它的起始点和目的点都是数据链路层。 2、signal 3、message-报文 我们将位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元&#xff0c;也是网络传输的单元。…...

全排列 dfs

给定一个由不同的小写字母组成的字符串&#xff0c;输出这个字符串的所有全排列。 我们假设对于小写字母有 a<b<…<y<z &#xff0c;而且给定的字符串中的字母已经按照从小到大的顺序排列。 输入格式 输入只有一行&#xff0c;是一个由不同的小写字母组成的字符串…...

画图,matlab,

clear;close all;clc;tic;dirOutput dir(*.dat); % 罗列所有后缀-1.dat的文件列表&#xff0c;罗列BDDATA的数据 filenames string({dirOutput.name}); % 提取文件名%% 丢包统计 FILENAMES [""]; LOSS_YTJ [ ]; LOSS_RAD [ ]; LOSS_ETH [ ]…...

any/all 子查询优化规则的原理与解析 | OceanBase查询优化

背景 在通常情况下&#xff0c;当遇到包含any/all子查询的语句时&#xff0c;往往需要遵循嵌套执行的方式&#xff0c;因此其查询效率较低。Oceanbase中制定了相应的any/all子查询优化规则&#xff0c;能够能够识别并优化符合条件的any/all子查询&#xff0c;从而有效提升查询…...

Visio——导出的PDF文件缺乏嵌入字体的解决办法 / 设置导出的PDF文件添加嵌入字体的方法

导出PDF时&#xff0c;勾选 “符合PDF/A” 选项 这样就导出的PDF文件添加了嵌入字体了。...

python:用 sklearn SVM 构建分类模型,并评价

编写 test_sklearn_5.py 如下 # -*- coding: utf-8 -*- """ 使用 sklearn 估计器构建分类模型&#xff0c;并评价 """ import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.svm import SVC from sk…...

【Python】制作函数,并且实现【注册】【登录】功能

这段代码是一个简单的命令行论坛模拟系统&#xff0c;包含了用户注册、登录和退出的功能。让我们逐行分析代码&#xff0c;并解释每个部分的功能与逻辑&#xff1a; ### 1. 引入 hashlib 模块 python import hashlib - **功能**&#xff1a;引入 Python 内置的 hashlib 模块…...

【大模型】LLaMA-2:Open Foundation and Fine-Tuned Chat Models, July. 2023.

论文&#xff1a;LLaMA-2&#xff1a;Open Foundation and Fine-Tuned Chat Models, July. 2023. 链接&#xff1a;https://arxiv.org/abs/2307.09288 Introduction 创新点 7B - 70B 预训练 微调 开源Llama 2 和Llama 2-Chat&#xff0c;针对对话用例进行了优化Motivation A…...

WebRTC服务质量(04)- 重传机制(01) RTX NACK概述

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…...

Qt之connectSlotsByName分析

简介 用于界面设置信号槽自动生成&#xff0c;要求槽函数定义形式为on_< objectName >_< signal > connectSlotsByName 其定义在QMetaObject类中&#xff0c;为静态方法&#xff0c;在文件qobjectdefs.h struct Q_CORE_EXPORT QMetaObject {....static void c…...

【Unity3D】无限循环列表(扩展版)

基础版&#xff1a;【Unity技术分享】UGUI之ScrollRect优化_ugui scrollrect 优化-CSDN博客 using UnityEngine; using UnityEngine.UI; using System.Collections.Generic;public delegate void OnBaseLoopListItemCallback(GameObject cell, int index); public class BaseLo…...