从 0 开始上手 Solana 智能合约
Solana CLI 基础知识
Solana CLI 是一个命令行界面工具,提供了一系列用于与 Solana Cluster 交互的命令。
我们将介绍一些最常见的命令,但你始终可以通过运行 solana --help
查看所有可能的 Solana CLI 命令列表。
Solana CLI 配置
Solana CLI 存储了一些配置设置,这些设置会影响某些命令的行为。你可以使用以下命令查看当前的配置:
solana config get
solana config get
命令将返回以下信息:
Config File
- Solana CLI 文件在计算机上的位置RPC URL
- 你使用的节点,将你连接到 localhost、Devnet 或 MainnetWebSocket URL
- 用于监听你所针对的 Cluster 事件的 WebSocket(在设置RPC URL
时计算)Keypair Path
- 运行 Solana CLI 子命令时使用的密钥对路径Commitment
- 提供网络确认(confirmation)的度量,并描述区块在某一时刻已最终确认(finalized)的程度
你可以随时使用 solana config set
命令,后跟你想要更新的设置,更改 Solana CLI 的配置。
最常见的更改将是针对的 Cluster。使用 solana config set --url
命令更改 RPC URL
。
solana config set --url localhost
solana config set --url devnet
solana config set --url mainnet-beta
类似地,你可以使用 solana config set --keypair
命令更改 Keypair Path
。然后,当运行命令时,Solana CLI 将使用指定路径上的密钥对。
solana config set --keypair ~/<FILE_PATH>
测试验证节点
通常,为了进行测试和调试,你会发现运行本地验证节点比部署到 Devnet 更有帮助。
你可以使用 solana-test-validator
命令运行本地测试验证器。此命令创建一个持续运行的进程,需要在其自己的命令行窗口中运行。
流式程序日志
通常,同时打开一个新控制台并运行 solana logs
命令,可以帮助你观察测试验证节点相关的日志。这将创建另一个持续运行的进程,会流式传输与你配置的 Cluster 相关的日志。
如果 CLI 配置指向 localhost
,则日志将始终与你创建的测试验证器相关联,但你也可以从其他 Cluster(如 Devnet 和 Mainnet Beta)中流式传输日志。当从其他 Cluster 流式传输日志时,你需要在命令中包含一个程序 ID,以限制你看到的日志仅为特定程序的日志。
密钥对
你可以使用 solana-keygen new --outfile
命令生成新的密钥对,后跟存储密钥对的文件路径。
solana-keygen new --outfile \~/\<FILE_PATH>
有时,你可能需要检查配置指向的是哪个密钥对。要查看在 solana config
中设置的当前密钥对的 publickey
,请使用 solana address
命令。
solana address
要查看在 solana config
中设置的当前密钥对的 SOL 余额,请使用 solana balance
命令。
solana balance
要在 Devnet 或 localhost 上空投 SOL,请使用 solana airdrop
命令。请注意,在 Devnet 上,每次空投限制为 5 SOL。
solana airdrop 5
在本地环境中开发和测试程序时,你可能会遇到以下原因导致的错误:
- 使用错误的密钥对
- 没有足够的 SOL 来部署程序或执行交易
- 指向错误的 Cluster
到目前为止,我们介绍的 CLI 命令应该可以帮助你迅速解决这些问题。
在本地环境中开发 Solana 程序
尽管 Solana Playground 非常有帮助,但很难超越你自己的本地开发环境的灵活性。随着你构建更复杂的程序,你可能最终会将它们与在本地环境中同样在开发中的一个或多个客户端集成。当你在本地编写、构建和部署程序时,程序和客户端之间的测试通常更简单。
创建新项目
要创建一个用于编写 Solana 程序的新 Rust 包,你可以使用 cargo new --lib
命令,后跟你想要创建的新目录的名称。
cargo new --lib <PROJECT_DIRECTORY_NAME>
此命令将创建一个新目录,其名称为你在命令末尾指定的名称。这个新目录将包含一个描述该包的 Cargo.toml
清单文件(manifest file)。
清单文件包含元数据,如名称、版本和依赖项(crates)。要编写 Solana 程序,你需要更新 Cargo.toml
文件,将 solana-program
添加为依赖项。你可能还需要添加下面显示的 [lib]
和 crate-type
行。
[package]
name = "<PROJECT_DIRECTORY_NAME>"
version = "0.1.0"
edition = "2021"
[features]
no-entrypoint = []
[dependencies] solana-program = "~1.8.14"
[lib]
crate-type = ["cdylib", "lib"]
在这一点上,你可以开始在 src
文件夹中编写程序。
构建和部署
当需要构建 Solana 程序时,可以使用 cargo build-bpf
命令。
cargo build-bpf
该命令的输出将包含部署程序的说明,看起来类似于:
To deploy this program: $ solana program deploy /Users/James/Dev/Work/solana-hello-world-local/target/deploy/solana_hello_world_local.so The program address will default to this keypair (override with --program-id): /Users/James/Dev/Work/solana-hello-world-local/target/deploy/solana_hello_world_local-keypair.json
当你准备部署程序时,使用 cargo build-bpf
输出的 solana program deploy
命令。这将把你的程序部署到你 CLI 配置中指定的 Cluster。
solana program deploy <PATH>
实验
让我们通过构建和部署我们在[Hello World 课程]中创建的 "Hello World!" 程序来进行实践。
我们将全部在本地进行,包括部署到本地测试验证节点。在开始之前,请确保你已安装了 Rust 和 Solana CLI。如果尚未设置,请参考概述中的说明。
1. 创建一个新的 Rust 项目
让我们从创建一个新的 Rust 项目开始。运行下面的 cargo new --lib
命令。随意用你自己的目录名称替换。
cargo new --lib solana-hello-world-local
记得更新 Cargo.toml
文件,将 solana-program
添加为依赖项,并确保 crate-type
行已经存在。
[package]
name = "solana-hello-world-local"
version = "0.1.0"
edition = "2021"[dependencies]
solana-program = "~1.8.14"[lib]
crate-type = ["cdylib", "lib"]
2. 编写程序
接下来,使用下面的“Hello World!”程序更新 lib.rs
。当调用程序时,该程序将简单地打印“Hello, world!”到程序日志。
use solana_program::{account_info::AccountInfo,entrypoint,entrypoint::ProgramResult,pubkey::Pubkey,msg
};entrypoint!(process_instruction);pub fn process_instruction(program_id: &Pubkey,accounts: &[AccountInfo],instruction_data: &[u8]
) -> ProgramResult{msg!("Hello, world!");Ok(())
}
- 运行本地测试验证节点
在编写好程序之后,让我们确保我们的 Solana CLI 配置指向 localhost,使用 solana config set --url 命令。
solana config set --url localhost
接下来,使用 solana config get
命令检查 Solana CLI 配置是否已更新。
solana config get
最后,在一个单独的终端窗口中运行本地测试验证器。运行 solana-test-validator
命令。只有当我们的 RPC URL
设置为 localhost 时,才需要执行此操作。
solana-test-validator
4. 构建和部署
现在我们准备好构建和部署我们的程序了。通过运行 cargo build-bpf
命令来构建程序。
cargo build-bpf
现在让我们部署程序。运行 cargo build-bpf
输出的 solana program deploy
命令。
solana program deploy <PATH>
solana program deploy
将输出程序的 Program ID
。你现在可以在[Solana Explorer]上查找已部署的程序(对于 localhost,请选择“Custom RPC URL”作为 Cluster)。
5. 查看程序日志
在调用我们的程序之前,打开一个单独的终端,并运行 solana logs
命令。这将允许我们在终端中查看程序的日志。
solana logs <PROGRAM_ID>
在测试验证节点仍在运行的情况下,尝试使用此客户端脚本调用程序。
在 index.ts
中用刚刚部署的程序的程序 ID 替换原有的程序 ID,然后运行 npm install
,接着运行 npm start
。这将返回一个 Solana Explorer URL。将该 URL 复制到浏览器中以在 Solana Explorer 上查找交易,并检查是否将“Hello, world!”打印到程序日志中。或者,你也可以在运行 solana logs
命令的终端中查看程序日志。
恭喜!你刚刚从本地开发环境中创建并部署了你的第一个 Solana 程序。
挑战
尝试创建一个新程序,将自己的消息打印到程序日志中。这次将程序部署到 Devnet,而不是 localhost。
记得使用 solana config set --url
命令将 RPC URL
更新到 Devnet。
你可以使用与实验相同的客户端脚本调用程序,只要将 connection
和 Solana Explorer URL 都更新为指向 Devnet 而不是 localhost。
let connection = new web3.Connection(web3.clusterApiUrl("devnet"));
console.log(`Transaction: https://explorer.solana.com/tx/${transactionSignature}?cluster=devnet`
);
你还可以打开一个单独的命令行窗口,并使用 solana logs | grep "<PROGRAM_ID> invoke" -A <NUMBER_OF_LINES_TO_RETURN>
。在 Devnet 上使用 solana logs
时,必须指定程序 ID。否则,solana logs
命令将从 Devnet 返回一系列恒定的日志流。例如,你可以执行以下操作来监视对 Token 程序的调用,并显示每次调用的前 5 行日志:
solana logs | grep "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke" -A 5
还可以使用像GTokenTool这样子的一键发币平台,只需简单填写相关信息就可以实现发币。
相关文章:
从 0 开始上手 Solana 智能合约
Solana CLI 基础知识 Solana CLI 是一个命令行界面工具,提供了一系列用于与 Solana Cluster 交互的命令。 我们将介绍一些最常见的命令,但你始终可以通过运行 solana --help 查看所有可能的 Solana CLI 命令列表。 Solana CLI 配置 Solana CLI 存储了…...
USB基础 -- USB 控制传输(Control Transfer)的重传机制
USB 控制传输(Control Transfer)的重传机制 1. 控制传输的事务结构 控制传输分为三个阶段,每个阶段都有自己的事务,并可能触发重传机制: 设置阶段(Setup Stage):主机发送 8 字节的…...
创建基本的 Electron 应用项目的详细步骤
创建一个基本的 Electron 应用项目的详细步骤。我们将从安装 Node.js 开始,然后创建项目文件夹并初始化 Electron 项目。 1. 安装 Node.js 首先,确保你已经安装了 Node.js 和 npm。你可以在终端中运行以下命令来检查是否已经安装: node -v…...
《异步编程之美》— 全栈修仙《Java 8 CompletableFuture 对比 ES6 Promise 以及Spring @Async》
哈喽,大家好!在平常开发过程中会遇到许多意想不到的坑,本篇文章就记录在开发过程中遇到一些常见的问题,看了许多博主的异步编程,我只能说一言难尽。本文详细的讲解了异步编程之美,是不可多得的好文…...
Android 修改SVG属性并显示图片(AndroidSvg)
引入依赖: dependencies {implementation com.caverock:androidsvg-aar:1.4 }核心代码: import com.caverock.androidsvg.SVG import org.w3c.dom.Document import java.io.StringWriter import javax.xml.transform.OutputKeys import javax.xml.tran…...
Ubuntu 磁盘修复
Ubuntu 磁盘修复 在 ubuntu 文件系统变成只读模式,该处理呢? 文件系统内部的错误,如索引错误、元数据损坏等,也可能导致系统进入只读状态。磁盘坏道或硬件故障也可能引发文件系统只读的问题。/etc/fstab配置错误,可能…...
移动云自研云原生数据库入围国采!
近日,中央国家机关2024年度事务型数据库软件框架协议联合征集采购项目产品名单正式公布,移动云自主研发的云原生数据库产品顺利入围。这一成就不仅彰显了移动云在数据库领域深耕多年造就的领先技术优势,更标志着国家权威评审机构对移动云在数…...
Java一个简单的反弹动画练习
文章目录 说明代码详解创建窗体代码创建绘图板创建线程 运行结果完整代码 说明 做了一个小球和星型做反弹动画的窗体作为练习,分享给大家,为了方便和我一样的小白可以看的比较明白,所以尽量详细的标注了注释,希望能帮到同样在学习…...
互联网架构变迁:从 TCP/IP “呼叫” 到 NDN “内容分发” 的逐浪之旅
本文将给出关于互联网架构演进的一个不同视角。回顾一下互联网的核心理论基础产生的背景: 左边是典型的集中控制通信网络,很容易被摧毁,而右边的网络则没有单点问题,换句话说它很难被全部摧毁,与此同时,分…...
git push命令
git push 常用命令 1. 拉取远程仓库最新数据 使用 git fetch git fetch作用: 获取远程仓库的最新数据(包括分支、标签等),但不会修改本地工作目录。 结果: 仅更新远程分支(如 origin/main)的…...
day01-HTML-CSS——基础标签样式表格标签表单标签
目录 此篇为简写笔记下端1-3为之前笔记(强迫症、保证文章连续性)完整版笔记代码模仿新浪新闻首页完成审核不通过发不出去HTMLCSS1 HTML1.1 介绍1.1.1 WebStrom中基本配置 1.2 快速入门1.3 基础标签1.3.1 标题标签1.3.2 hr标签1.3.3 字体标签1.3.4 换行标…...
软考信安16~网络安全风险评估技术原理与应用
1、网络安全风险评估概述 1.1、网络安全风险评估概念 网络安全风险评估(简称“网络风险评估")就是指依据有关信息安全技术和管理标准,对网络系统的保密性、完整性、可控性和可用性等安全属性进行科学评价的过程,评估内容涉及网络系统的脆弱性、网络安全威胁以及脆弱性被…...
嵌入式C语言:二维数组
目录 一、二维数组的定义 二、内存布局 2.1. 内存布局特点 2.2. 内存布局示例 2.2.1. 数组元素地址 2.2.2. 内存布局图(简化表示) 2.3. 初始化对内存布局的影响 三、访问二维数组元素 3.1. 常规下标访问方式 3.2. 通过指针访问 3.2.1. 指向数…...
计算机网络期末复习(知识点)
概念题 在实际复习之前,可以看一下这个视频将网络知识串一下,以便更好地复习:【你管这破玩意叫网络?】 网络规模的分类 PAN(个人区域网络):用于个人设备间的连接,如手机与蓝牙耳机…...
LeetCode:3298. 统计重新排列后包含另一个字符串的子字符串数目 II(滑动窗口 Java)
目录 3298. 统计重新排列后包含另一个字符串的子字符串数目 II 题目描述: 实现代码与解析: 滑动窗口 原理思路: 3298. 统计重新排列后包含另一个字符串的子字符串数目 II 题目描述: 给你两个字符串 word1 和 word2 。 如果…...
【SpringAOP】Spring AOP 底层逻辑:切点表达式与原理简明阐述
前言 🌟🌟本期讲解关于spring aop的切面表达式和自身实现原理介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 &am…...
es 3期 第23节-运用Pipeline实现二转聚合统计
#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性ÿ…...
T-SQL语言的编程范式
T-SQL编程范式探析 引言 随着信息技术的迅猛发展,数据库在各个行业的应用日益广泛。在众多数据库管理系统中,SQL Server以其高性能和易用性受到广泛欢迎。T-SQL(Transact-SQL)是SQL Server的扩展版本,是一种用于查询…...
【ArcGIS微课1000例】0137:色彩映射表转为RGB全彩模式
本文讲述ArcGIS中,将tif格式的影像数据从色彩映射表转为RGB全彩模式。 参考阅读:【GlobalMapper精品教程】093:将tif影像色彩映射表(调色板)转为RGB全彩模式 文章目录 一、色彩映射表预览二、色彩映射表转为RGB全彩模式一、色彩映射表预览 加载配套数据包中的0137.rar中的…...
论文笔记(六十一)Implicit Behavioral Cloning
Implicit Behavioral Cloning 文章概括摘要1 引言2 背景:隐式模型的训练与推理3 隐式模型与显式模型的有趣属性4 policy学习成果5 理论见解:隐式模型的通用逼近性6 相关工作7 结论 文章概括 引用: inproceedings{florence2022implicit,titl…...
网络安全核心目标CIA
网络安全的核心目标是为关键资产提供机密性(Confidentiality)、可用性(Availablity)、完整性(Integrity)。作为安全基础架构中的主要的安全目标和宗旨,机密性、可用性、完整性频频出现,被简称为CIA,也被成为你AIC,只是顺序不同而已…...
hive迁移后修复分区慢,怎么办?
我有1个30TB的分区表,客户给的带宽只有600MB,按照150%的耗时来算,大概要迁移17小时。 使用hive自带的修复分区命令(一般修复分区比迁移时间长一点),可能要花24小时。于是打算用前面黄大佬的牛B方案。 Hive增…...
一块钱的RISC-V 32位芯片
之前跟一个朋友聊天,说以后的芯片一定是越来越趋向于定制化,比如我们需要一个ADC芯片,这颗ADC芯片需要有串口功能,那就只开发一颗这样的芯片就好了,其他的功能都可以裁剪掉。 ➵➵➵➵➵➵➵➵➵➵➵➵➵➵➵…...
Linux常用指令
目录 1 概述2 指令2.1 简单指令2.2 解压缩2.2.1 tar.bz2和tar.gz2.2.2 单独bz22.2.3 zip2.2.4 7z 2.3 网卡操作 1 概述 本章主要是记录一些日常用到的Linux指令,方便自己忘记的时候查找,也为有需要的人提供参考。 2 指令 2.1 简单指令 指令解释cat /…...
车载音频开发(二):对音频数据作音量调节
通过前一个章节打下的基础车载音频开发(一):从看懂wav开始https://blog.csdn.net/Hellomino_/article/details/140873133?fromshareblogdetail&sharetypeblogdetail&sharerId140873133&sharereferPC&sharesourceHellomino_&…...
误差与误差限
目录 误差误差限小结 误差 设 x x x为准确值 , x ∗ ,x^* ,x∗为 x x x的一个近似值,称 e ∗ x ∗ − x e^*x^*-x e∗x∗−x为近似值的绝对误差,简称误差. 这样定义的误差 e ∗ e^{*} e∗可正可负,当绝对误差为正时近似值偏大,…...
halcon三维点云数据处理(七)find_shape_model_3d_recompute_score
目录 一、find_shape_model_3d_recompute_score例程代码二、set_object_model_3d_attrib_mod函数三、prepare_object_model_3d 函数四、create_cube_shape_model_3d函数五、获得CamPose六、project_cube_image函数七、find_shape_model_3d函数八、project_shape_model_3d函数 一…...
如何从串 ‘ 中国 +86‘ 中,获取到‘中国’:strip()、split()及正则表达式的使用
业务中有这样一个场景,国家列表中的数据格式是这样: 中国 86 ,其中的 "中国" 前面有3个空格,需要从中提取出 "中国",有哪些方法呢? 方法 1:使用 strip() 和 split() str…...
Java Web开发进阶——Spring Security基础与应用
Spring Security是Spring框架的核心模块之一,用于保护Web应用程序和微服务的安全。它提供强大的认证和授权功能,并与Spring生态系统无缝集成。本节将详细介绍Spring Security的基础知识及其在实际项目中的应用。 1. Spring Security概述与功能 1.1 什么…...
1. Doris分布式环境搭建
一. 环境准备 本次测试集群采用3台机器hadoop1、hadoop2、hadoop3, Frontend和Backend部署在同一台机器上,Frontend部署3台组成高可用,Backend部署3个节点,组成3副本存储。 主机IP操作系统FrontendBackendhadoop1192.168.47.128Centos7Foll…...
消息中间件类型介绍
消息中间件是一种在分布式系统中用于实现消息传递的软件架构模式。它能够在不同的系统或应用之间异步地传输数据,实现系统的解耦、提高系统的可扩展性和可靠性。以下是几种常见的消息中间件类型及其介绍: 1.RabbitMQ 特点: • 基于AMQP&#…...
Win10微调大语言模型ChatGLM2-6B
在《Win10本地部署大语言模型ChatGLM2-6B-CSDN博客》基础上进行,官方文档在这里,参考了这篇文章 首先确保ChatGLM2-6B下的有ptuning AdvertiseGen下载地址1,地址2,文件中数据留几行 模型文件下载地址 (注意࿱…...
C# GID+绘制不透明和半透明的线条
绘制线条时,必须将 Pen 对象传递给 DrawLine 类的 Graphics 方法。 Pen 构造函数的参数之一是 Color 对象。 若要绘制不透明的线条,请将颜色的 alpha 分量设置为 255。 若要绘制半透明的线条,请将 alpha 分量设置为从 1 到 254 的任何值。 在…...
解锁 C# 与 LiteDB 嵌入式 NoSQL 数据库
一、开篇:邂逅 C# 与 LiteDB 新世界 在当今的软件开发领域,数据管理如同建筑的基石,而选择一款合适的数据库则是项目成功与否的关键因素之一。对于 C# 开发者来说,面对琳琅满目的数据库选项,如何抉择常常令人头疼。今…...
iOS - 数组的真实类型
1. NSArray 类簇 // 1. __NSArray0 (空数组) NSArray *empty [];// 2. __NSArrayI (不可变数组) NSArray *immutable [1, 2, 3];// 3. __NSArrayM (可变数组) NSMutableArray *mutable [NSMutableArray array];// 4. __NSSingleObjectArrayI (单元素数组) NSArray *single …...
Unity热更新 之 Addressables(2) 本地/远端打包 流程测试
基础篇:Unity热更新 之 Addressables(1) 资源基础加载-CSDN博客 基础方法来源于唐老狮,我也是初学热更这一块,所有不保证步骤完全正确,如有不足还请斧正 目录 0.前提 1.本地打包 1.1.资源放入包 1.2.简化路径名称给出标签(如有需要的话) …...
Python标准库之SQLite3
包含了连接数据库、处理数据、控制数据、自定义输出格式及处理异常的各种方法。 官方文档:sqlite3 --- SQLite 数据库的 DB-API 2.0 接口 — Python 3.13.1 文档 官方文档SQLite对应版本:3.13.1 SQLite主页:SQLite Home Page SQL语法教程&a…...
php 使用simplexml_load_string转换xml数据格式失败
本文介绍如何使用php函数解析xml数据为数组。 <?php$a <xml><ToUserName><![CDATA[ww8b77afac71336111]]></ToUserName><FromUserName><![CDATA[sys]]></FromUserName><CreateTime>1736328669</CreateTime><Ms…...
Linux第二课:LinuxC高级 学习记录day01
0、大纲 0.1、Linux 软件安装,用户管理,进程管理,shell 命令,硬链接和软连接,解压和压缩,功能性语句,结构性语句,分文件,make工具,shell脚本 0.2、C高级 …...
Notepad++上NppFTP插件的安装和使用教程
一、NppFTP插件下载 图示是已经安装好了插件。 在搜索框里面搜NppFTP,一般情况下,自带的下载地址容易下载失败。这里准备了一个下载连接:Release v0.29.10 ashkulz/NppFTP GitHub 这里我下载的是x86版本 下载好后在nodepad的插件里面选择打…...
怎样提高服务器中的数据传输速度?
服务器中的数据传输速度会影响着用户的体验感,当企业中的数据传输速度出现卡顿或者是过慢时,用户不能及时浏览到所需的内容,给用户造成不好的体验感,那么企业该怎样才能提高服务器中的数据传输速度呢? 服务器之间如何传…...
Java聊天小程序
拟设计一个基于 Java 技术的局域网在线聊天系统,实现客户端与服务器之间的实时通信。系统分为客户端和服务器端两类,客户端用于发送和接收消息,服务器端负责接收客户端请求并处理消息。客户端通过图形界面提供用户友好的操作界面,服务器端监听多个客户端的连接并管理消息通…...
Spring事件发布与监听
Spring事件机制详解:事件发布与监听 在Spring框架中,事件机制基于发布-订阅模式,允许组件之间进行解耦。发布者发布事件,监听者订阅并响应这些事件。Spring事件机制的核心在于ApplicationEvent和ApplicationListener,…...
【PPTist】公式编辑、插入音视频、添加动画
一、插入公式 点击公式的时候 latexEditorVisible 会变成 true src/views/Editor/CanvasTool/index.vue <Modalv-model:visible"latexEditorVisible" :width"880" ><LaTeXEditor close"latexEditorVisible false"update"data &…...
Dart语言的面向对象编程
Dart语言的面向对象编程 Dart是一种由谷歌开发的编程语言,主要用于构建Web、移动应用及服务器端应用。作为一门现代编程语言,Dart自带丰富的特性,尤其是在面向对象编程(Object-Oriented Programming, OOP)方面&#x…...
selenium+pyqt5自动化工具总结
说明:本工具是,操作外部google浏览器、selenium是无法操作qt界面中嵌套的浏览器的, 工具在后面 1. 代码结构 pycharm打开的文件下,再写一个子文件,文件导入的时候把子文件名带上 这样就可以在 外层使用命令 pyinst…...
Java 基于微信小程序的高校科研团队管理系统设计与实现(附源码,部署,文档
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
如何规模化实现完全自动驾驶?Mobileye提出解题“新”思路
在CES 2025上,Mobileye展示了端到端自动驾驶系统Mobileye Drive™,通过高度集成的传感器、算法和计算平台,可以实现自动驾驶功能的全覆盖。 Mobileye创始人兼首席执行官Amnon Shashua教授 期间,Mobileye创始人兼首席执行官Amnon …...
Vue2与Vue3在项目开发中的选择:深入探讨
文章目录 前言一、Vue2的优势与挑战二、Vue3的进步与特性三、如何做出选择?结语 前言 Vue.js 是一个用于构建用户界面的渐进式JavaScript框架。Vue2和Vue3是其两个主要版本,它们各自拥有一系列特点和优势。随着Vue3的发布,开发者们面临着在新…...
Git 操作与技巧
一、开发日常常用 Git 操作与技巧 1.1 基础操作 1.1.1 查看 Git 状态 git status:查看当前工作区的状态,了解哪些文件已经修改、哪些文件已经暂存。git status这个命令是最常用的命令之一,可以帮助你理解当前的开发状态,哪些文…...