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

FISCO BCOS【初体验笔记】

飞梭区块链搭建初体验笔记

    • 环境部署
      • 创建四个节点的飞梭区块链
      • 用的VMware17 centos 7.9 区块链是飞梭2.0用的webase-front
      • Java环境的正确安装
      • Webase-front搭建
    • 智能合约设计
      • 一点合约调试笔记
    • 智能合约abi文件转为go文件
    • 后端项目配置
    • 相关工具
    • linux常用命令(防忘记)
    • centos7.9相关
      • 更换国内镜像源

写在前面,这是我自己的小笔记,内容记得不全,主要是某些核心的步骤和bug的记录。暂时没有这方面深入的打算(纯课题组需求),欢迎交流

环境部署

创建四个节点的飞梭区块链

[yuegeyu@localhost fisco]$ bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545

启动四个节点(注意这个目录,执行脚本在127.0.0.1下面)

[yuegeyu@localhost 127.0.0.1]$ bash start_all.sh

用的VMware17 centos 7.9 区块链是飞梭2.0用的webase-front

参照官网文档搭建第一个区块链,

启动区块各个节点:bash start_all.sh
同理,停止各个节点则执行stop脚本: bash stop_all.sh

Java环境的正确安装

jdk-8u201-linux-x64.tar.gz的下载看这个文章

在etc/profile底下的环境变量路径

export JAVA_HOME=/home/yuegeyu/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

在这里插入图片描述
这个输出就装好了

Webase-front搭建

参照官网教程进行搭建
复制fisco/nodes/127.0.0.1当中的认证到webase-front/conf/下,再行启动,webase-front通过5002端口启动
这部分直接在虚拟机终端去启动webase-front(bash start.sh)就会显示权限不够,回到远程这里却可以。因为远程是登录的root的吧,终端没有使用管理员权限应该。
在这里插入图片描述

搭建完成后找到虚拟机ip
在这里插入图片描述
之后关闭centos防火墙
【解决记录】:视频中只做了禁用自启动操作,应该再systemctl stop firewalld一下,通过systemctl status firewalld检查一下当前防火墙状态即可
禁用防火墙

systemctl disable firewalld

智能合约设计

示例代码

// SPDX-License-Identifier: MIT  
pragma solidity ^0.6.10;  
// 开启 ABIEncoderV2 支持  
pragma experimental ABIEncoderV2;  //solidity版本较低,支持变长数组contract FoodTrace {  struct FoodItem {  uint id;  //食品id  unit无符号整型string name;  //食品名  address producer;  //生产者 address区块链地址string details;  //细节  string[] logisticsRecords; // 物流记录  bool logisticsRecorded; // 记录物流信息的状态  }  address public owner; // 合约的拥有者  uint public logisticsRecordedCount; // 记录已注册物流信息的食品数  uint public foodItemCount; // 食品项计数mapping(uint => FoodItem) public foodItems; // 食品项存储  mapping(address => bool) public logisticsProviders; // 存储注册的物流方地址  // 事件定义  event FoodRegistered(uint id, string name, address producer);  event LogisticsUpdated(uint id, string logisticsInfo);  event LogisticsProviderRegistered(address provider); // 新事件  // 构造函数,设置合约的拥有者  constructor() public {  owner = msg.sender; // 设定合约创建者为拥有者  }  // 仅允许拥有者执行某些操作  modifier onlyOwner() {  require(msg.sender == owner, "Only owner can call this function");  _;  }  // 注册物流方  function registerLogisticsProvider(address _provider) public onlyOwner {  logisticsProviders[_provider] = true; // 注册物流方  emit LogisticsProviderRegistered(_provider); // 触发事件  }  // 食品生产方注册食品  function registerFood(string memory _name, string memory _details) public onlyOwner{  foodItemCount++;  foodItems[foodItemCount] = FoodItem({  id: foodItemCount,  name: _name,  producer: msg.sender,  details: _details,  logisticsRecords: new string[](0), // 初始化物流记录为空数组  logisticsRecorded: false // 默认未记录物流信息  });  emit FoodRegistered(foodItemCount, _name, msg.sender);  }  // 物流管理方记录食品物流信息  function updateLogistics(uint _foodId, string memory _logisticsInfo) public {  require(foodItems[_foodId].id != 0, "Food item does not exist"); // 确保食品存在  require(logisticsProviders[msg.sender], "Not a registered logistics provider"); // 验证调用者是否是注册的物流方 require(_foodId <= foodItemCount, "Food ID exceeds the current food item count");//确保输入的ID不超过当前的foodItemCountlogisticsRecordedCount++;  foodItems[_foodId].logisticsRecords.push(_logisticsInfo); // 添加物流信息  foodItems[_foodId].logisticsRecorded = true; // 设置为已记录物流信息  emit LogisticsUpdated(_foodId, _logisticsInfo);  }  // 用户查看食品记录  function getFoodInfo(uint _foodId) public view returns (string memory, address, string memory, string[] memory, bool) {  require(foodItems[_foodId].id != 0, "Food item does not exist"); // 确保食品存在  require(_foodId <= foodItemCount, "Food ID exceeds the current food item count");//确保输入的ID不超过当前的foodItemCountFoodItem memory foodItem = foodItems[_foodId];  return (foodItem.name, foodItem.producer, foodItem.details, foodItem.logisticsRecords, foodItem.logisticsRecorded);//返回食品信息和物流状态  }  
}

一点合约调试笔记

由于添加物流主的函数是限定onlyowner 才能执行,也就是食品从产商yuegeyu(自己起的名儿,部署合约的时候用的账号),所以需要yuegeyu调用添加物流主的函数才能添加物流主
所以provider部分填写的是物流主JDwang的哈希地址
在这里插入图片描述
JDwang成为物流主后拥有添加食品物流的权限
于是可以给包子添加物流信息
在这里插入图片描述
物流添加后的回执
在这里插入图片描述

智能合约abi文件转为go文件

安装abigen,目的是将合约的abi文件转换为go文件

期间有一个依赖的bug,可能是相关的设置没有打开,也可能是需要一个C编译器CGO
报错如下:

[root@localhost abigen]# go build
# gopkg.in/olebedev/go-duktape.v3
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/dbgsockettransport.go:14:16: undefined: Context
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/dbgsockettransport.go:16:15: undefined: DebugRequestFunc
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/dbgsockettransport.go:17:15: undefined: DebugDetachedFunc
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/dbgsockettransport.go:31:30: undefined: Context
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/dbgsockettransport.go:33:14: undefined: DebugRequestFunc
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/dbgsockettransport.go:34:15: undefined: DebugDetachedFunc
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/timers.go:11:10: undefined: Context
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/timers.go:30:10: undefined: Context
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/timers.go:37:20: undefined: Context
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/timers.go:63:22: undefined: Context
/opt/go/pkg/mod/gopkg.in/olebedev/go-duktape.v3@v3.0.0-20200619000410-60c24ae608a6/timers.go:63:22: too many errors
[root@localhost abigen]# go env CGO_ENABLED
0
[root@localhost abigen]# go list -m gopkg.in/olebedev/go-duktape.v3
gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6

运行这两行代码就解决啦

[root@localhost abigen]# export CGO_ENABLED=1
[root@localhost abigen]# yum install -y gcc  

后端项目配置

项目构建,依赖安装
1.在项目文件夹下构建项目比如在/demo下执行

go mod init demo
然后
go mod tidy

在这里插入图片描述

相关工具

MobaXterm连接虚拟机

linux常用命令(防忘记)

查询ip:ip a
在这里插入图片描述
文件编辑:vim 文件名
进入编辑模式 : i
保存并退出:先按Esc退出编辑,然后输入:wq回车后退出
管理员权限:命令前加sudo,或者直接切换管理员身份:su -,然后填写密码即可

centos7.9相关

更换国内镜像源

不更换的话默认的镜像源无法安装git、go环境
参照这个笔记更换阿里云镜像源:https://blog.csdn.net/m0_51691302/article/details/120244799?

相关文章:

FISCO BCOS【初体验笔记】

飞梭区块链搭建初体验笔记 环境部署创建四个节点的飞梭区块链用的VMware17 centos 7.9 区块链是飞梭2.0用的webase-frontJava环境的正确安装Webase-front搭建 智能合约设计一点合约调试笔记 智能合约abi文件转为go文件后端项目配置相关工具linux常用命令&#xff08;防忘记&…...

56.[前端开发-前端工程化]Day03-webpack构建工具

邂逅Webpack和打包过程 1 认识webpack工具 前端开发的流程 内置模块path path常见的API 在webpack中的使用 认识webpack 脚手架依赖webpack Webpack到底是什么呢 Webpack官方的图片 Vue项目加载的文件有哪些呢&#xff1f; Webpack的使用前提 Webpack的安装 2 webpack基本打包…...

两次解析格式化字符串 + 使用SQLAlchemy的relationship执行任意命令 -- link-shortener b01lersCTF 2025

题目描述: A fast and reliable link shortener service, with a new feature to add private links! 我们走一遍逻辑 注册 app.route("/register", methods[GET, POST]) def register(): """ 用户注册路由&#xff0c;处理用户注册请求&#xff…...

双目测量中的将视差图重投影成三维坐标图

双目测距主要步骤如下&#xff1a; 左右两张图片 → 匹配 → 得到视差图 disp&#xff1b; 使用 cv2.reprojectImageTo3D(disp, Q) 将视差图 重投影 成三维坐标图 → 得到 points_3d 什么是 points_3d&#xff1f; points_3d cv2.reprojectImageTo3D(disp, Q)points_3d.shap…...

WebAssembly(Wasm):现代Web开发的超级加速器

在当今的Web开发领域&#xff0c;性能和效率是开发者们永恒的追求目标。随着Web应用的复杂度不断增加&#xff0c;传统的JavaScript在某些场景下已经难以满足高性能计算和复杂逻辑处理的需求。此时&#xff0c;WebAssembly&#xff08;Wasm&#xff09;作为一种新兴的Web技术&a…...

学习黑客Nmap 命令法诀

筑基期第二重 — Nmap 命令法诀 修炼目标 这一重我们要把上一阶段学到的“神识探查原理”化成 实战招式&#xff1a;掌握日常最常用的 Nmap 命令&#xff0c;并能随心组合。每条命令都配上“修仙比喻”&#xff0c;让你边笑边记。 1. 基础法诀速查表&#xff08;凡修版&#xf…...

基于思考过程评价的心理问题咨询对话记性评估

基于思考过程评价的心理问题咨询对话记性评估 摘要: 在心理问题咨询的对话场景中,传统记性评价多局限于对话结果的相似度计算,无法全面捕捉来访者及咨询师在对话过程中的思维动态。本文提出一种聚焦此对话场景的记性评价新方法,将思考过程纳入评估范畴。详细阐释其基于认知…...

SQL数据库操作大全:从基础到高级查询技巧

大家好&#xff0c;欢迎来到程序视点&#xff01;我是你们的老朋友.小二&#xff01; SQL数据库操作核心语法精要 数据库基础操作 创建/删除数据库&#xff1a;CREATE DATABASE / DROP DATABASE 备份SQL Server&#xff1a;使用sp_addumpdevice和BACKUP DATABASE命令 数据库…...

基于MATLAB图像中的圆形目标识别和标记

一、前言 在数字图像处理中&#xff0c;有些图像类别可以使用圆形度进行区分。圆度有时被称为圆形度&#xff0c;其定义为&#xff1a;圆度 4πA / P&#xff0c;其中A是面积&#xff0c;P是周长。这个公式的来源是&#xff0c;对于圆来说&#xff0c;这个值等于1&#xff0c;…...

android-ndk开发(4): linux开发机有线连接android设备

android-ndk开发(4): linux开发机有线连接android设备 2025/05/05 1. 概要 linux 系统&#xff0c; 例如最常见的 ubuntu&#xff0c; 在通过 USB 线把 android 设备连接到开发机上时&#xff0c; 仅仅是 ”物理上的连接”。 这时候 adb 是无法识别到 android 设备的。 需要…...

相机biaoding

需要先安装linux客户端&#xff08;海康机器人官网&#xff09;&#xff0c;sudo dpkg -i MVS-2.1.2_x86_64_20221208.deb cd /opt/MVS/bin/ 再./MVS.sh运行,客户端启动。 打开海康相机客户端 cd /opt/MVS/bin export LD_LIBRARY_PATH/opt/MVS/bin/:$LD_LIBRARY_PATH ./MVS …...

linux 中inotify与inode的关系是什么?

在 Linux 系统中&#xff0c;inotify 和 inode 是两个密切相关但功能不同的概念&#xff0c;它们共同构成了文件系统的核心机制。以下是它们的关系解析&#xff1a; 一、基本概念 1. inode&#xff08;索引节点&#xff09; 定义&#xff1a;inode 是 Linux 文件系统中存储文…...

Paramiko 核心类关系图解析

类图关键说明 SSHClient 核心类 用户主要交互入口&#xff0c;聚合 Transport 对象依赖策略类处理主机密钥验证&#xff08;AutoAddPolicy/RejectPolicy&#xff09; Transport 引擎 管理底层连接生命周期组合 AuthHandler 处理认证逻辑组合 KexBase 实现密钥交换可创建多个 C…...

LeetCode算法题 (反转链表)Day17!!!C/C++

https://leetcode.cn/problems/reverse-linked-list/description/ 一、题目分析 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。今天这道题目非常的言简意赅&#xff0c;就是给定一个链表将其反转后返回反转后的头节点。 二、示例分析 输…...

3.5/Q1,GBD数据库最新一区文章解读

文章题目&#xff1a;Global burden of low vision and blindness due to age-related macular degeneration from 1990 to 2021 and projections for 2050 DOI&#xff1a;10.1186/s12889-024-21047-x 中文标题&#xff1a;1990年至2021年因年龄相关性黄斑变性导致的低视力和失…...

【AI论文】像素修补师(PixelHacker):具有结构和语义一致性的图像修复(Image Inpainting)

摘要&#xff1a;图像修复是图像编辑和图像生成之间的一个基础研究领域。 最近最先进的方法&#xff08;SOTA&#xff09;探索了新的注意力机制、轻量级架构和上下文感知建模&#xff0c;展示了令人印象深刻的性能。 然而&#xff0c;他们经常在复杂的结构&#xff08;如纹理、…...

卡洛诗中式西餐,打破“高价即高端”认知

在餐饮消费从“功能满足”向“意义消费”跃迁的今天&#xff0c;Z世代对饮食的期待早已超越“吃饱”的生理需求。萨莉亚原团队成员出来升级孵化的新概念西餐卡洛诗作为中式西餐赛道的破局者&#xff0c;通过场景重构、产品升维与情感绑定&#xff0c;将西餐体验转化为情绪的载体…...

Sui 上线两周年,掀起增长「海啸」

两年前的 5 月 3 日&#xff0c;Sui 的主网正式发布&#xff0c;将在开发网和测试网上验证过的下一代技术承诺变为现实。这一新兴网络旨在优化现有区块链技术&#xff0c;结合高性能计算环境与安全性、可验证性及韧性。 随着 Sui 迎来两周年&#xff0c;这股浪潮已成长为「海啸…...

手写 Vue 源码 === reactive 方法

目录 1. 响应式系统概述 2. Proxy与Reflect的应用 3. 响应式对象的创建 4. WeakMap的使用 主要特点 WeakMap 与 Map 的区别 应用场景 5. 依赖收集与触发更新 6. 响应式标记 7. 性能优化 8. 与Vue2的对比 9. 实际应用示例 10. 总结 Vue3的响应式系统是其核心特性…...

第一章-Rust入门

Rust 简介 Rust 是一种强类型的静态编程语言&#xff0c;它可以编写更快、更可靠的软件&#xff0c;兼备高层次的易用性与低层次的控制力。 Rust 具有以下几个特点&#xff1a; 内存安全&#xff0c;且不牺牲性能“编译通过就能正常运行”令人愉悦的语法和强大的语言特性优秀…...

【AI入门】Cherry入门1:Cherry Studio的安装及配置

前言 尝试了Trae配置MCP&#xff0c;测试了n8n设置MCP工作流&#xff0c;但感觉好累啊&#xff0c;CherryStudio横空出世&#xff0c;开着中文界面&#xff0c;就倍感亲切&#xff0c;看着大家操作很丝滑的样子&#xff0c;咱也鸟枪换炮了&#xff0c;哇哈哈&#x1f604;&…...

雷电模拟器-超好用的Windows安卓模拟器

一、雷电模拟器介绍 雷电模拟器是一款功能强大的软件&#xff0c;它能够在电脑上模拟出安卓手机系统&#xff0c;让你可以在电脑上运行各类手机应用及游戏。其采用虚拟安卓手机操作界面&#xff0c;为玩家带来了独特的体验。 &#xff08;一&#xff09;强大的兼容性 雷电模拟…...

数据集-目标检测系列- 蜥蜴 检测数据集 lizard >> DataBall

数据集-目标检测系列- 蜥蜴 检测数据集 lizard >> DataBall DataBall 助力快速掌握数据集的信息和使用方式。 贵在坚持&#xff01; * 相关项目 1&#xff09;数据集可视化项目&#xff1a;gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview…...

Kubernetes控制平面组件:Controller Manager 之 NamespaceController 全方位讲解

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…...

数据结构小扫尾——栈

数据结构小扫尾——栈 jarringslee 文章目录 数据结构小扫尾——栈栈本质上是一种特殊的线性表。&#xff08;一&#xff09;线性表的定义&#xff08;二&#xff09;线性表的运算 什么是栈。&#xff08;一&#xff09;栈的定义&#xff08;二&#xff09;栈的分类&#xff0…...

策略模式(Strategy Pattern)

&#x1f9e0; 策略模式&#xff08;Strategy Pattern&#xff09; 策略模式是一种行为型设计模式&#xff0c;它允许定义一系列的算法或行为&#xff0c;然后将每个算法封装到一个类中&#xff0c;使得它们可以互换。策略模式让算法独立于使用它的客户端进行变化&#xff0c;…...

Qwen2_5-Omni-3B:支持视频、音频、图像和文本的全能AI,可在本地运行

Qwen2.5-Omni-3B是阿里云推出的全能AI模型。它能同时处理视频、音频、图像和文本。只有3B参数,却能在本地运行强大的多模态功能。 近日,已经在Hugging Face上发布。它是小型多模态AI系统的重要突破。 特点 Qwen2.5-Omni-3B与普通语言模型不同。它是真正的多模态系统,可以同…...

GZIPOutputStream 类详解

GZIPOutputStream 类详解 GZIPOutputStream 是 Java 中用于压缩数据为 GZIP 格式的输出流类&#xff0c;属于 java.util.zip 包。它是 DeflaterOutputStream 的子类&#xff0c;专门生成符合 GZIP 格式&#xff08;.gz 文件&#xff09;的压缩数据。 1. 核心功能 将数据压缩为…...

sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama解释这行代码的含义

这行命令用于为 OLLAMA 服务创建专用的系统用户&#xff0c;具体参数解析如下&#xff1a; sudo 以管理员权限执行命令&#xff0c;确保有足够权限创建系统用户。 useradd Linux 用户创建命令&#xff0c;用于在系统中新增用户。 -r 创建系统账户&#xff08;非登录用户&…...

自注意力(Self-Attention)和位置编码

自注意力 给定序列 x 1 , … , x n \mathbf{x}_1, \ldots, \mathbf{x}_n x1​,…,xn​, ∀ x i ∈ R d \forall \mathbf{x}_i \in \mathbb{R}^d ∀xi​∈Rd 自注意力池化层将 x i \mathbf{x}_i xi​ 当做key, value, query来对序列抽取特征得到 y 1 , … , y n \mathbf{y}…...

Linux压缩和解压类

一、gzip/gunzip 压缩 1、基本语法 gzip 文件 &#xff08;功能描述&#xff1a;压缩文件&#xff0c;只能将文件压缩为*.gz文件&#xff09; gunzip 文件.gz &#xff08;功能描述&#xff1a;解压缩文件命令&#xff09; 2、经验技巧 &#xff08;1&#…...

Kubernetes控制平面组件:Controller Manager详解

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…...

使用 JavaScript 实现数据导出为 Excel 和 CSV 文件

在 Web 开发中&#xff0c;经常会遇到需要将数据导出为文件的需求&#xff0c;例如将数据导出为 Excel 或 CSV 文件。今天&#xff0c;我们就来探讨如何使用 JavaScript 实现这一功能。 一、实现思路 我们通过 HTML 创建一个按钮&#xff0c;点击按钮时&#xff0c;触发 Java…...

设一个测试情境,新用户注册后显示的名字不完整,测试思路是怎么样的?

问题分析:新用户注册后显示名称不完整 典型表现:用户注册时输入"张三丰",系统仅显示"张"或"张三"等不完整信息 一、测试排查思维导图 二、详细测试方案 1. 前端测试 输入验证: 测试不同长度名称(1字符/10字符/50字符) 测试含空格名称(如…...

NHANES指标推荐:ZJU index

文章题目&#xff1a;Association between ZJU index and gallstones in US adult: a cross-sectional study of NHANES 2017-2020 DOI&#xff1a;10.1186/s12876-024-03553-9 中文标题&#xff1a;ZJU指数与美国成年人胆结石的关联&#xff1a;2017-2020年NHANES横断面研究 发…...

数据存储——高级存储之PV和PVC

一、概述 PV &#xff08; Persistent Volume &#xff09;是持久化卷的意思&#xff0c;是对底层的共享存储的一种抽象。一般情况下 PV 由 kubernetes 管理员进行创建和配置&#xff0c;它与底层具体的共享存储技术有关&#xff0c;并通过插件完成与共享存储的对接。 PVC &a…...

Astro Canvas 数据中心→设备一览大屏操作指南

✅ Astro Canvas 数据中心→设备一览大屏操作指南 📌 目标 通过API连接器 → 转换器 → 数据源 → 数据集 → Astro大屏设计,展示从 IoTDA 获取的设备影子数据,并在 Astro 大屏中以设备一览形式可视化展示(如设备ID、温度、湿度、烟雾浓度等状态)。 🔁 一、整体流程概…...

Cisco NDO - Nexus Dashboard Orchestrator

目录 一、什么是 Cisco NDO? 二、ND vs. NDO? 三、NDO vs. NDFC 四、NDO 用例: 一、什么是 Cisco NDO? Nexus Dashboard Orchestrator(NDO)可通过单一界面,实现跨多个数据中心的一致性网络与策略编排、可扩展性与灾难恢复等。 当在本地、多种私有云或公有云中同时运…...

Android 控件CalendarView、TextClock用法

一 UI代码 <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto…...

Socket 编程 TCP

Socket 编程 TCP TCP socket API 详解V1 - Echo ServerV2 - Echo Server 多进程版本V3 - Echo Server 多线程版本V4 - Echo Server 线程池版本多线程远程命令执行v5 引入线程池版本翻译 TCP socket API 详解 socket(): socket()打开一个网络通讯端口,如果成功的话,就像 open…...

信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(七)

个人笔记整理---仅供参考 项目立项管理 7.1项目建议与立项申请 项目建议书内容必背&#xff01; 7.2项目可行性研究 项目可行性研究必考 7.3项目的评估与决策...

Qt中的UIC

Qt中的UIC(User Interface Compiler, 用户界面编译器)&#xff1a;读取由Qt Widgets Designer生成的XML格式(.ui)文件并创建相应的C头文件或Python源文件。如将mainwindow.ui文件生成ui_mainwindow.h。 uic.exe位置在6.8.0\msvc2019_64\bin &#xff0c;其支持的输入参数如下所…...

【MATLAB例程】基于RSSI原理的Wi-Fi定位程序,N个锚点(数量可自适应)、三维空间,轨迹使用UKF进行滤波,附代码下载链接

本文所述程序实现了一种基于信号强度&#xff08;RSSI&#xff09;的Wi-Fi定位算法&#xff0c;并结合无迹卡尔曼滤波&#xff08;UKF&#xff09;对动态目标轨迹进行滤波优化。代码支持自适应锚点数量&#xff0c;适用于三维空间定位&#xff0c;可模拟目标运动、信号噪声及非…...

vulkanscenegraph显示倾斜模型(6.5)-vsg::DatabasePager

前言 上章深入分析了帧循环过程中&#xff0c;多线程下的记录与提交机制。本章将分析vsg::DatabasePager在更新场景图过程中的作用&#xff0c;进一步揭露vsg中场景图管理机制&#xff0c;并通过分析代码&#xff0c;详细解释vsg中场景图管理机制中的节点添加、节点删除、节点加…...

利用 Python pyttsx3实现文字转语音(TTS)

今天&#xff0c;我想跟大家分享如何利用 Python 编程语言&#xff0c;来实现文字转换为语音的功能&#xff0c;也就是我们常说的 Text-to-Speech (TTS) 技术。 你可能会好奇&#xff0c;为什么学习这个&#xff1f;想象一下&#xff0c;如果你想把书本、文章、杂志的内容转换…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.1 描述性统计分析(均值/方差/分位数计算)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 5.1 描述性统计分析&#xff1a;均值、方差与分位数计算实战5.1.1 数据准备与分析目标数据集介绍分析目标 5.1.2 均值计算&#xff1a;从整体到分组分析总体均值计算加权均值…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.4 数据抽样(简单随机抽样/分层抽样)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 PostgreSQL数据分析实战&#xff1a;数据抽样核心技术解析5.4 数据抽样&#xff1a;从简单随机到分层策略的深度实践5.4.1 简单随机抽样&#xff1a;概率均等的基础抽样方法…...

时间同步服务核心知识笔记:原理、配置

一、时间同步服务 在 Linux 系统中&#xff0c;准确的时间至关重要。对于服务器集群&#xff0c;时间同步确保各节点间数据处理和交互的一致性&#xff0c;避免因时间差异导致的事务处理错误、日志记录混乱等问题。在分布式系统中&#xff0c;时间同步有助于协调任务调度、数据…...

Leetcode刷题记录32——搜索二维矩阵 II

题源&#xff1a;https://leetcode.cn/problems/search-a-2d-matrix-ii/description/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述&#xff1a; 思路一&#xff1a; &#x1f4a1; 解题思路&#xff1a;利用矩阵有序特性 双指针法&#xff08;Z 字形搜索&…...

【最新Python包管理工具UV的介绍和安装】

介绍 uv是一个非常快的 Python 包安装程序和 pip 解析器&#xff0c;用 Rust 编写&#xff0c;设计为pip-tools的直接替代品。 以下是官网给出的UV与其他包管理工具解决依赖&#xff08;左&#xff09;和安装包&#xff08;右&#xff09;的对比图。 可以看出UV是一个极快的 P…...