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

工具学习_Conan_Install

1. 依赖关系获取

为了获取TPL间的依赖关系,我们首先从 GitHub 项目中提取 Conan 包含的组件,如下所示:

在获取组件名之后,我们根据组件名从 Conan 中获取 TPL 间的依赖关系,如下图所示:

之后获得包含TPL间依赖关系的 json 文件,如下所示:

2. Conanfile 生成

这部分中,我们根据收集到的依赖关系生成对应的 Conanfile ,代码如下所示:

# -*- coding: utf-8 -*-
import json
import osdef load_json(filename):"""加载 JSON 文件并返回数据"""with open(filename, 'r') as f:  # Python 2 默认使用 UTF-8 编码return json.load(f)def create_conanfile(folder_path, key):"""在指定的文件夹中创建 conanfile.txt"""# 获取键的内容(例如 amgcl/1.4.4,提取 amgcl 作为组件名)component_name = key.split('/')[0]conanfile_path = os.path.join(folder_path, 'conanfile.txt')# 创建 conanfile.txt 文件的内容,使用 .format() 替代 f-stringconanfile_content = """[requires]
{0}[generators]
CMakeDeps
CMakeToolchain[layout]
cmake_layout[options]
{1}/*:shared=True
*:static=True
""".format(key, component_name)with open(conanfile_path, 'w') as f:f.write(conanfile_content)print("创建 conanfile.txt 在 '{}'".format(conanfile_path))def traverse_json(json_data, parent_folder):"""遍历 JSON 数据并打印所有键值,同时创建文件夹"""if isinstance(json_data, dict):for key, value in json_data.items():# 处理键值并创建文件夹folder_name = key.split('/')[0]  # 获取键的/前部分作为文件夹名称folder_path = os.path.join(parent_folder, folder_name)# 创建文件夹if not os.path.exists(folder_path):os.makedirs(folder_path)print("文件夹 '{}' 已创建".format(folder_path))# 检查是否是第二级文件夹(即下一级文件夹存在)if isinstance(value, list):# 在第二级文件夹中创建 conanfile.txtcreate_conanfile(folder_path, key)# 递归遍历字典或列表中的元素traverse_json(value, folder_path)elif isinstance(json_data, list):for item in json_data:traverse_json(item, parent_folder)  # 递归遍历列表中的元素def main():# 获取当前目录下的 tpl_ground_truth.json 文件file_path = 'tpl_ground_truth.json'# 检查文件是否存在if not os.path.exists(file_path):print("文件 {} 不存在".format(file_path))return# 创建 conan_install 文件夹conan_folder = 'conan_install'if not os.path.exists(conan_folder):os.makedirs(conan_folder)print("文件夹 '{}' 已创建".format(conan_folder))# 加载 JSON 数据json_data = load_json(file_path)# 遍历 JSON 数据并创建相应文件夹traverse_json(json_data, conan_folder)if __name__ == "__main__":main()

代码运行后,当前目录中的 conan_install 目录下会生成对应的 conanfile,如下所示:

3. TPL 安装

通过 Conan 指令安装对应的 TPL,具体代码如下所示:

# -*- coding: utf-8 -*-import os
import subprocess
import logging
import timedef setup_logging():"""设置日志配置,创建日志文件"""log_file = 'conan_installation.log'# 配置日志logging.basicConfig(filename=log_file,level=logging.INFO,  # 记录 INFO 级别及以上的日志format='%(asctime)s - %(levelname)s - %(message)s',)logging.info("日志记录开始...")def execute_conan_install(root, parent_folder):"""执行 conan install 命令,并在失败时重试,最多重试 3 次"""max_retries = 1attempt = 0# 设置代理环境变量os.environ["http_proxy"] = "http://127.0.0.1:7890"os.environ["https_proxy"] = "http://127.0.0.1:7890"while attempt < max_retries:try:# 执行 conan install 命令,添加自动安装依赖的选项subprocess.check_call(["conan", "install", ".", "--build=missing", "-c", "tools.system.package_manager:mode=install"])# 安装成功,记录成功信息logging.info("组件在 {0} 目录安装成功".format(root))return True  # 安装成功,退出重试循环except subprocess.CalledProcessError as e:# 如果命令执行失败,记录错误信息logging.error("执行 conan install 命令失败,错误: {0}".format(e))attempt += 1if attempt < max_retries:# 等待并重试logging.info("等待 5 秒后重试... (尝试 {}/{})".format(attempt + 1, max_retries))time.sleep(5)else:# 达到最大重试次数,记录失败信息logging.error("组件在 {0} 目录安装失败,已达到最大重试次数 ({1})".format(root, max_retries))return False  # 达到最大重试次数仍然失败,返回失败return False  # 如果退出 while 循环,表示安装失败def traverse_conan_install(parent_folder):"""遍历 conan_install 目录中的所有 conanfile.txt 文件并执行 Conan 安装"""parent_folder = os.path.abspath(parent_folder)  # 转换为绝对路径for root, dirs, files in os.walk(parent_folder):for file in files:if file == 'conanfile.txt':# 获取绝对路径root = os.path.abspath(root)logging.info("检测到 conanfile.txt,目录路径: {0}".format(root))# 检查是否存在 conan_toolchain.cmake 文件conan_toolchain_path = os.path.join(root, "build", "Release", "generators", "conan_toolchain.cmake")if os.path.exists(conan_toolchain_path):logging.info("检测到 {0} 文件,跳过当前组件的安装".format(conan_toolchain_path))continue  # 如果文件存在,跳过当前目录的安装,继续下一个组件# 进入到当前目录os.chdir(root)logging.info("进入目录: {0}".format(root))# 执行安装并重试if not execute_conan_install(root, parent_folder):# 如果安装失败,跳过当前组件并继续下一个组件logging.error("安装失败: {0},跳过此组件。".format(root))# 返回原始目录os.chdir(parent_folder)logging.info("返回原始目录: {0}".format(parent_folder))break  # 跳过当前失败的组件,继续安装其他组件else:# 返回原始目录os.chdir(parent_folder)logging.info("返回原始目录: {0}".format(parent_folder))def main():# 设置日志文件setup_logging()# 设置 conan_install 文件夹路径conan_folder = 'conan_install'  # 输入相对路径# 将路径转化为绝对路径conan_folder = os.path.abspath(conan_folder)# 检查文件夹是否存在if not os.path.exists(conan_folder):logging.error("文件夹 '{0}' 不存在".format(conan_folder))return# 遍历 conan_install 目录中的所有 conanfile.txt 文件并执行 Conan 安装traverse_conan_install(conan_folder)if __name__ == "__main__":main()

4. 二进制文件搜索

以7bitconf为例,该TPL安装的路径可以在/conan_install/7bitconf/build/Release/generators/conan_toolchain.cmake中找到,具体路径如下所示:

5. 跨编译优化级别

即使只指定一个 --profile 参数来调用 Conan,Conan 内部也会使用两个配置文件。一个是用于构建二进制文件的机器对应的 profile(local 配置文件),另一个是用于运行这些二进制文件的机器对应的 profile(host 配置文件)。

conan install . --build=missing --profile=someprofile
conan install . --build=missing --profile:host=someprofile --profile:build=default

上述两段指令实际上是相同的。为了实现 arm 架构二进制文件的构建,我们首先创建 arm 架构对应的配置文件,如下所示:

[settings]
os=Linux
arch=armv7hf
compiler=gcc
build_type=Release
compiler.cppstd=gnu14
compiler.libcxx=libstdc++11
compiler.version=9
[buildenv]
CC=arm-linux-gnueabihf-gcc-9
CXX=arm-linux-gnueabihf-g++-9
LD=arm-linux-gnueabihf-ld

之后通过 conan 对 TPL 进行安装,具体指令如下所示:

conan install . --build missing -pr:b=default -pr:h=./profiles/raspberry

相关文章:

工具学习_Conan_Install

1. 依赖关系获取 为了获取TPL间的依赖关系&#xff0c;我们首先从 GitHub 项目中提取 Conan 包含的组件&#xff0c;如下所示&#xff1a; 在获取组件名之后&#xff0c;我们根据组件名从 Conan 中获取 TPL 间的依赖关系&#xff0c;如下图所示&#xff1a; 之后获得包含TPL间…...

忘记了PDF文件的密码,怎么办?

PDF文件可以加密&#xff0c;大家都不陌生&#xff0c;并且大家应该也都知道PDF文件有两种密码&#xff0c;一个打开密码、一个限制编辑密码&#xff0c;因为PDF文件设置了密码&#xff0c;那么打开、编辑PDF文件就会受到限制。忘记了PDF密码该如何解密&#xff1f; PDF和offi…...

HTML实战课堂之启动动画弹窗

一&#xff1a;代码片段讲解 小提示&#xff1a;下面是一个包含启动页和弹窗的完整示例。这个示例包括一个简单的启动页和一个弹窗&#xff0c;当用户点击启动页上的按钮时&#xff0c;会显示弹窗。 1. **HTML结构**&#xff1a; - #startPage&#xff1a;启动页&#xff0c;包…...

thinkphp 5.0 结合redis 做延迟队列,队列无法被消费

目录 一、Linux 环境下 二、如何验证消息队列被正确监听 一、Linux 环境下 项目部署在Linux 环境下&#xff0c;首先找到项目的部署路径&#xff0c;接着输入命令,这个命令是以守护进程方式进行监听你的队列&#xff0c;只要redis 不关闭 就可以一直监听这个队列 nohup php …...

open3d+opencv实现矩形框裁剪点云操作(C++)

&#x1f451;主页&#xff1a;吾名招财 &#x1f453;简介&#xff1a;工科学硕&#xff0c;研究方向机器视觉&#xff0c;爱好较广泛… ​&#x1f4ab;签名&#xff1a;面朝大海&#xff0c;春暖花开&#xff01; open3dopencv实现矩形框裁剪点云操作&#xff08;C&#xff…...

Android RIL(Radio Interface Layer)全面概述和知识要点(3万字长文)

在Android面试时,懂得越多越深android framework的知识,越为自己加分。 目录 第一章:RIL 概述 1.1 RIL 的定义与作用 1.2 RIL 的发展历程 1.3 RIL 与 Android 系统的关系 第二章:RIL 的架构与工作原理 2.1 RIL 的架构组成 2.2 RIL 的工作原理 2.3 RIL 的接口与协议…...

mac安装java17

目录 1、确保 Homebrew 已安装。如果没有安装&#xff0c;运行以下命令2、安装 OpenJDK 173、安装完成后&#xff0c;运行以下命令设置环境变量4、检查一下 1、确保 Homebrew 已安装。如果没有安装&#xff0c;运行以下命令 /bin/bash -c "$(curl -fsSL https://raw.gith…...

npx和npm区别

npx 和 npm 是 Node.js 生态中的两个工具&#xff0c;它们有不同的用途和功能&#xff1a; 1. npm&#xff08;Node Package Manager&#xff09; 主要作用&#xff1a; 包管理工具&#xff1a; 用来安装、管理、卸载 Node.js 的包&#xff08;module/library&#xff09;。提…...

STM32 FreeRTOS 介绍

目录 什么是裸机开发 什么是操作系统 通用操作系统 实时操作系统 FreeRTOS简介 FreeRTOS发展历史 FreeRTOS优势 FreeRTOS特点 什么是裸机开发 裸机开发指的是在没有操作系统&#xff08;OS&#xff09;或者其他高级软件支持的情况下&#xff0c;直接在裸机硬件上进行软…...

C#面向对象(封装,继承,多态,抽象)--08

目录 一.类和对象 1.类(Class) 2.对象 二.继承 1.定义 2.实现方式 三.多态 1.定义 2.实现方式 3.代码示例 四.抽象 1.定义 2.实现方式 3.代码示例 总结 面向对象(OOP)是C#编程语言的核心概念之一.它通过类和对象的方式来组织代码,提供了更高的代码复用性,可拓展性…...

Frp工具配置内网穿透

Frp工具配置内网穿透 一.资源准备 ​ 固定 IP 的公网服务器&#xff1a;最低配 1C1G 即可&#xff0c;硬盘 20G&#xff0c;带宽 10M&#xff0c;系统推荐使用 Debian 9 或 10&#xff08; Ubuntu 20.04 LTS&#xff09;。安全组需要开放 443、8080、8081 端口&#xff08;其他…...

pg_hba.conf是PostgreSQL中控制客户端认证和访问权限的配置文件

报错提示&#xff1a;FATAL: no pg_hba.conf entry for host "117.26.241.1", user "postgres", databa 报错解释&#xff1a; 这个错误表示PostgreSQL数据库服务器没有找到适合的认证方式来处理来自特定IP地址&#xff08;在这个例子中是117.26.241.1&a…...

Winforms开发基础之非主线程操作UI控件的误区

前言 想象一下&#xff0c;你正在开发一个桌面应用程序&#xff0c;用户点击按钮后需要执行一个耗时操作。为了避免界面卡顿&#xff0c;你决定使用后台线程来处理任务。然而&#xff0c;当你在后台线程中尝试更新UI控件时&#xff0c;程序突然崩溃了。这是为什么呢&#xff1…...

【机器学习】主动学习-增加标签的操作方法-流式选择性采样(Stream-based selective sampling)

Stream-Based Selective Sampling Stream-based selective sampling 是一种主动学习方法&#xff0c;在处理大量数据流时特别有用。它允许学习算法动态选择是否对当前数据实例进行标注&#xff08;通过与 Oracle 交互&#xff09;。此方法主要应用于流数据场景中&#xff0c;目…...

STL之VectorMapList针对erase方法踩坑笔记

前沿 如下总结的三种容器&#xff0c;开头都会涉及当前容器的特点&#xff0c;再者就本次针对erase方法的使用避坑总结。 一.Vector vector关联关联容器&#xff0c;存储内存是连续&#xff0c;且特点支持快速访问&#xff0c;但是插入和删除效率比较地(需要找查找和移动)。另…...

Docker compose 使用 --force-recreate --no-recreate 控制重启容器时的行为

一、--force-recreate 作用 强制重新创建指定的服务&#xff0c;即使服务的配置未发生任何变化。忽略现有容器的状态&#xff0c;无论容器是停止、运行还是有无变化&#xff0c;都会销毁并重新创建。 用法 docker compose up -d --force-recreate [services...]不指定服务&…...

【pycharm】远程部署失败,查看日志

pycharm 远程部署失败,查看日志 远程一直失败,gateway超时会还知道拉取一份日志: 在./root 下 发现了崩溃日志,启动崩溃了,导致backend一直无法启动。win11就是一直在connect到ubuntu的后端pycharm。。gateway 拉取的日志 我上传的linux版本的pycharm暂时存在dist目录下,…...

FilmMusic

电影推荐 《五朵金花》《沉睡魔咒》《三国之见龙卸甲》《灰姑娘》《正义联盟》《沉睡魔咒2》 《神奇女侠》《神奇女侠》HD中字在线观看 - 影视天堂 《野性的呼唤》《野性的呼唤2020》HD中字在线观看 - 影视天堂 《毒液2》《小马王》《秦时明月之百步飞剑》《秦时明月之夜尽…...

使用 Python 实现自动化办公(邮件、Excel)

目录 一、Python 自动化办公的准备工作 1.1 安装必要的库 1.2 设置邮件服务 二、邮件自动化处理 2.1 发送邮件 示例代码 注意事项 2.2 接收和读取邮件 示例代码 三、Excel 自动化处理 3.1 读取和写入 Excel 文件 示例代码 3.2 数据处理和分析 示例代码 四、综合…...

稀疏编码 (Sparse Coding) 算法详解与PyTorch实现

稀疏编码 (Sparse Coding) 算法详解与PyTorch实现 目录 稀疏编码 (Sparse Coding) 算法详解与PyTorch实现1. 稀疏编码 (Sparse Coding) 算法概述1.1 稀疏表示1.2 稀疏编码的优势2. 稀疏编码的核心技术2.1 稀疏编码的目标2.2 稀疏编码的优化2.3 基向量的学习3. PyTorch实现稀疏编…...

基于springboot的疫情网课管理系统

作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 项目包含&#xff1a; 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…...

Cookie和Session

会话&#xff1a; 有状态会话&#xff1a; 客户端知道发起请求的是谁 无状态会话&#xff1a; 不知道发起请求的是谁 只知道有请求 http是无状态请求 保存会话信息的两种技术&#xff1a; 可以通过Cookie和Session储存会话信息 cookie&#xff1a;客户端技术 信心存…...

分布式ID—雪花算法

背景 现在的服务基本是分布式、微服务形式的&#xff0c;而且大数据量也导致分库分表的产生&#xff0c;对于水平分表就需要保证表中 id 的全局唯一性。 对于 MySQL 而言&#xff0c;一个表中的主键 id 一般使用自增的方式&#xff0c;但是如果进行水平分表之后&#xff0c;多…...

【无标题】四类sql语句通用

select select a from tableA where aa1&#xff1a; 总是丢掉from。。 运算&#xff1a; select a*3 b from tableA&#xff1b; 使用()来定义运算优先级。 别名 select a as xx from tableA&#xff1b;可以不加as&#xff0c;仅为增加可读性。 别名不可以中间有空格&…...

Vue的生命周期方法

Vue 的生命周期方法是指 Vue 实例从创建到销毁的过程中的一系列钩子函数。它们可以让你在特定时刻执行代码。Vue 2 和 Vue 3 的生命周期钩子大致相同&#xff0c;下面是 Vue 中常用的生命周期方法&#xff1a; 1. beforeCreate 在实例初始化之后&#xff0c;数据观测和事件配…...

Android SystemUI——基础简介(一)

Android SystemUI 是 Android 操作系统的一部分&#xff0c;负责处理与用户界面相关的所有元素。它是 Android 设备上的一个关键组件&#xff0c;管理着屏幕顶部的状态栏&#xff08;显示时间、信号强度、电池电量等&#xff09;、屏幕底部的导航栏&#xff08;返回、主页、最近…...

大疆机场及无人机上云

最近基于大疆上云api进行二次开发&#xff0c;后面将按照开发步骤对其进行说明&#xff01;...

js:正则表达式

目录 正则表达式的语法 定义 检测 检索 元字符 边界符 量词 字符类 表单判断案例 修饰符 过滤敏感词 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本字符组合模式 正则表达式是一…...

【芯片设计- RTL 数字逻辑设计入门 9.2 -- flip flop 与 寄存器的关系详细介绍】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 Overview硬件角度的 Flip-Flop软件角度的寄存器举例说明硬件设计角度软件开发角度D Flip-Flop 实现基本原理:Verilog 代码:UT 示例JK Flip-Flop 实现基…...

JAVA实战开源项目:课程智能组卷系统(Vue+SpringBoot) 附源码

本文项目编号 T 009 &#xff0c;文末自助获取源码 \color{red}{T009&#xff0c;文末自助获取源码} T009&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 老…...

【Rust自学】11.8. 忽略测试

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.8.1. 忽略某些测试&#xff0c;执行剩余测试 某些测试执行起来非常耗时&#xff0c;所以在大部分情况下会想在运行cargo test时忽略它…...

浅谈云计算09 | 服务器虚拟化

服务器虚拟化基础 一、虚拟化的定义二、系统虚拟化三、服务器虚拟化的核心要义四、典型实现&#xff1a;探索不同路径五、全虚拟化与半虚拟化六、主流服务器虚拟化技术 一、虚拟化的定义 虚拟化是一种将物理资源抽象为逻辑资源的技术&#xff0c;通过在物理硬件与操作系统、应…...

【Ubuntu 24.04】虚拟机常见问题解决

1.24开启3D加速黑屏 参考文章&#xff1a;Ubuntu24开机黑屏&#xff0c;VMware卡死&#xff0c;虚拟机繁忙解决方案 没有3D加速就没有动画&#xff0c;所以我们需要开启3D加速&#xff0c;但是直接开启3D加速会黑屏 由于Ubuntu24内部的图形加速驱动异常&#xff0c;因此需要更新…...

【已解决】【记录】2AI大模型web UI使用tips 本地

docker desktop使用 互动 如果需要发送网页链接&#xff0c;就在链接上加上【#】号 如果要上传文件就点击这个➕号 中文回复 命令它只用中文回复&#xff0c;在右上角打开【对话高级设置】 输入提示词&#xff08;提示词使用英文会更好&#xff09; Must reply to the us…...

iostat命令详解

iostat 命令是 I/O statistics(输入/输出统计)的缩写&#xff0c;用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息。iostat 是 sysstat 工具集的一个工具&#xff0c;在 Ubuntu 系统中默认是不带 iostat 命令的&#xff0c;需要自行安装&#xff1a; $ sudo apt in…...

工程水印相机结合图纸,真实现场时间地点,如何使用水印相机,超简单方法只教一次!

在工程管理领域&#xff0c;精准记录现场信息至关重要。水印相机拍照功能&#xff0c;为工程人员提供了强大的现场信息记录工具&#xff0c;助力工程管理和统计工程量&#xff0c;更可以将图片分享到电脑、分享给同事&#xff0c;协同工作。 一、打开图纸 打开手机版CAD快速看图…...

vue城市道路交通流量预测可视化系统

文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站、收藏、不迷路&#xff01; 项目亮点 编号&#xff1a;R09 &#x1f687; 网站大屏管理三大前端、vuespringbootmysql、前后端分离架构 &#x1f687; 流量预测道路查询…...

秩为1的矩阵可以表示为两个向量的外积

秩为1的矩阵可以表示为两个向量的外积&#xff0c;为什么 秩为 1 的矩阵可以表示为两个向量的外积&#xff0c;原因源于矩阵的线性代数性质。以下是详细的解释&#xff1a; 1. 矩阵的秩定义 矩阵的秩是矩阵列向量&#xff08;或行向量&#xff09;线性无关的最大个数。当矩阵…...

深入浅出 Android AES 加密解密:从理论到实战

深入浅出 Android AES 加密解密&#xff1a;从理论到实战 在现代移动应用中&#xff0c;数据安全是不可忽视的一环。无论是用户隐私保护&#xff0c;还是敏感信息的存储与传输&#xff0c;加密技术都扮演着重要角色。本文将以 AES&#xff08;Advanced Encryption Standard&am…...

MySQL 与 Redis 的数据一致性问题

读数据的逻辑基本一致问题1: 一致性有哪些?MySQL 与 Redis 的数据一致性方案有哪些?先写MySQL还是先写Redis?缓存数据是更新还是清除?强一致还是最终一致?问题: 如果mysql写成功了,但是Redis写(删除)失败了怎么办?重试机制的幂等问题如何解决? 方案1: 先更新 MySQL 再清…...

【论文笔记】多个大规模数据集上的SOTA绝对位姿回归方法:Reloc3r

abstract 视觉定位旨在确定查询图像相对于姿势图像数据库的相机姿势。 近年来&#xff0c;直接回归相机姿势的深度神经网络由于其快速推理能力而受到欢迎。 然而&#xff0c;现有方法很难很好地推广到新场景或提供准确的相机姿态估计。 为了解决这些问题&#xff0c;我们提出了…...

UE5 打包项目

UE5 打包项目 flyfish 通过 “文件”->“打开项目”&#xff0c;然后在弹出的对话框中选择项目文件&#xff08;通常是以.uproject为后缀的文件&#xff09; 选择目标平台&#xff1a; 在 UE5 主界面中&#xff0c;找到 “平台”&#xff08;Platforms&#xff09;。根据…...

JavaEE之定时器及自我实现

在生活当中&#xff0c;有很多事情&#xff0c;我们不是立马就去做&#xff0c;而是在规定了时间之后&#xff0c;在到该时间时&#xff0c;再去执行&#xff0c;比如&#xff1a;闹钟、定时关机等等&#xff0c;在程序的世界中&#xff0c;有些代码也不是立刻执行&#xff0c;…...

好用的php商城源码有哪些?

选择一个优秀的商城工具&#xff0c;能更好地帮助大家建立一个好用的商城系统。目前比较流行的都是开源PHP商城系统&#xff0c;那么现实中都有哪些好用的PHP商城源码值得推荐呢&#xff1f;下面就带大家一起来了解一下。 1.TigShop 【推荐指数】&#xff1a;★★★★★☆ 【推…...

GO语言实现KMP算法

前言 本文结合朱战立教授编著的《数据结构—使用c语言&#xff08;第五版&#xff09;》&#xff08;以下简称为《数据结构&#xff08;第五版&#xff09;朱站立》&#xff09;中4.4.2章节内容编写&#xff0c;KMP的相关概念可参考此书4.4.2章节内容。原文中代码是C语言&…...

国产Docker可视化面板Dpanel的安装与功能解析

国产Docker可视化面板Dpanel的安装及功能介绍 Docker 可视化面板系统&#xff0c;提供完善的 docker 管理功能。 支持查看基本信息、运行状态统计、网络统计、磁盘统计、用量统计等功能 ​​ ​​ 容器管理&#xff1a; ​​ 创建/修改容器 ​​ 支持基本配置、环境变量、…...

Elaticsearch常用的浏览器插件

Elasticsearch head https://github.com/mobz/elasticsearch-headElasticsearch Tools https://www.chajianxw.com/developer/31765.html#google_vignetteElasticvue https://blog.csdn.net/weixin_60457220/article/details/143595846...

LabVIEW数据库管理系统

LabVIEW数据库管理系统&#xff08;DBMS&#xff09;是一种集成了数据库技术与数据采集、控制系统的解决方案。通过LabVIEW的强大图形化编程环境&#xff0c;结合数据库的高效数据存储与管理能力&#xff0c;开发人员可以实现高效的数据交互、存储、查询、更新和报告生成。LabV…...

【HM-React】08. Layout模块

基本结构和样式reset 结构创建 实现步骤 打开 antd/Layout 布局组件文档&#xff0c;找到示例&#xff1a;顶部-侧边布局-通栏拷贝示例代码到我们的 Layout 页面中分析并调整页面布局 代码实现 pages/Layout/index.js import { Layout, Menu, Popconfirm } from antd impor…...

SpringCloud

1.认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#xff1a;将业务的所有功…...