【Rust光年纪】构建高效终端用户界面:Rust库全面解析
构建优雅终端应用:深度评析六大Rust库
前言
随着Rust语言的流行和应用场景的不断扩大,对于终端操作和用户界面构建的需求也日益增长。本文将介绍一些在Rust语言中常用的终端操作库和用户界面构建库,以及它们的核心功能、使用场景、安装与配置方法以及API概览,希望能够为Rust开发者提供有益的参考和指导。
欢迎订阅专栏:Rust光年纪
文章目录
- 构建优雅终端应用:深度评析六大Rust库
- 前言
- 1. termion:一个纯Rust的终端操作库
- 1.1 简介
- 1.1.1 核心功能
- 1.1.2 使用场景
- 1.2 安装与配置
- 1.2.1 安装指南
- 1.2.2 基本配置
- 1.3 API 概览
- 1.3.1 终端操作
- 1.3.2 控制台交互
- 2. cursive:一个用于构建终端用户界面的库
- 2.1 简介
- 2.1.1 核心功能
- 2.1.2 使用场景
- 2.2 安装与配置
- 2.2.1 安装指南
- 2.2.2 基本配置
- 2.3 API 概览
- 2.3.1 构建用户界面
- 2.3.2 用户交互实现
- 3. Crossterm:一个跨平台的终端操作库
- 3.1 简介
- 3.1.1 核心功能
- 3.1.2 使用场景
- 3.2 安装与配置
- 3.2.1 安装指南
- 3.2.2 基本配置
- 3.3 API 概览
- 3.3.1 跨平台终端操作
- 3.3.2 输入事件处理
- 4. tui:一个用于构建终端用户界面的Rust库
- 4.1 简介
- 4.1.1 核心功能
- 4.1.2 使用场景
- 4.2 安装与配置
- 4.2.1 安装指南
- 4.2.2 基本配置
- 4.3 API 概览
- 4.3.1 终端UI设计
- 4.3.2 事件处理和交互
- 5. pancurses:一个用于Rust的Curses库绑定
- 5.1 简介
- 5.1.1 核心功能
- 5.1.2 使用场景
- 5.2 安装与配置
- 5.2.1 安装指南
- 5.2.2 基本配置
- 5.3 API 概览
- 5.3.1 Curses库使用
- 5.3.2 屏幕绘制和交互
- 6. console:一个用于处理控制台输出的库
- 6.1 简介
- 6.1.1 核心功能
- 6.1.2 使用场景
- 6.2 安装与配置
- 6.2.1 安装指南
- 6.2.2 基本配置
- 6.3 API 概览
- 6.3.1 控制台输出格式处理
- 6.3.2 用户输入处理
- 总结
1. termion:一个纯Rust的终端操作库
1.1 简介
termion是一个纯Rust编写的库,用于操作和控制终端用户界面。它提供了丰富的功能,使开发者能够轻松地与终端进行交互和控制。
1.1.1 核心功能
termion的核心功能包括光标控制、颜色设置、键盘事件捕获等。通过这些功能,开发者可以创建出更加交互性和个性化的终端应用程序。
1.1.2 使用场景
termion适用于开发各种类型的终端应用,例如命令行工具、小型游戏以及终端用户界面程序等。
1.2 安装与配置
1.2.1 安装指南
要安装termion,只需在项目的Cargo.toml文件中添加以下依赖项:
[dependencies]
termion = "1.5.6"
然后在代码中引入termion库即可开始使用。
1.2.2 基本配置
termion的基本配置非常简单,一旦安装完成并引入到项目中,开发者就可以直接开始使用其提供的功能。
1.3 API 概览
1.3.1 终端操作
通过termion,开发者可以轻松地进行各种终端操作,例如清屏、移动光标、隐藏光标等。下面是一个简单的示例代码:
use std::io;
use termion::clear;
use termion::cursor;fn main() {print!("{}{}", clear::All, cursor::Goto(1, 1));
}
官网链接:https://docs.rs/termion/
1.3.2 控制台交互
除了基本的终端操作外,termion还提供了方便的控制台交互功能,包括捕获键盘事件、获取终端大小等。以下是一个简单的键盘事件捕获示例代码:
use std::io;
use termion::input::TermRead;fn main() {for c in io::stdin().keys() {if let Ok(key) = c {println!("{:?}", key);}}
}
官网链接:https://docs.rs/termion/
通过这些示例代码和官方文档,开发者可以更好地了解并使用termion库来构建各种终端用户界面应用程序。
2. cursive:一个用于构建终端用户界面的库
2.1 简介
cursive 是一个用于构建终端用户界面的 Rust 库,它提供了丰富的功能和灵活的 API,可以帮助开发者快速构建强大的文本用户界面(TUI)应用程序。
2.1.1 核心功能
cursive 提供了丰富的核心功能,包括但不限于:
- 基本组件:按钮、输入框、标签等
- 布局管理:灵活的布局管理器
- 颜色和样式:支持颜色设置和自定义样式
- 事件处理:支持键盘、鼠标等多种事件的处理
2.1.2 使用场景
cursive 可以被广泛应用于需要在终端环境下展示交互式内容的项目中,比如命令行工具、信息展示系统等。
2.2 安装与配置
2.2.1 安装指南
你可以通过 Cargo.toml 文件将 cursive 添加到你的 Rust 项目依赖中:
[dependencies]
cursive = "0.16"
更多安装方式和版本信息可以参考 cursive 的官方文档。
2.2.2 基本配置
在你的 Rust 项目中,你可以通过引入 cursive crate 来开始使用 cursive:
extern crate cursive;use cursive::Cursive;fn main() {let mut siv = Cursive::default();// 在这里添加你的代码逻辑siv.run();
}
2.3 API 概览
2.3.1 构建用户界面
使用 cursive 可以轻松构建各种用户界面。以下是一个简单的例子,创建一个包含按钮和标签的用户界面:
extern crate cursive;use cursive::views::{Button, TextView};fn main() {let mut siv = cursive::default();siv.add_layer(TextView::new("Hello, cursive!"));siv.add_layer(Button::new("Quit", |s| s.quit()).padding((1, 1)).fixed_size((10, 3)).align(cursive::align::HCenter),);siv.run();
}
更多关于构建用户界面的 API 和示例可以查看 cursive 的官方文档。
2.3.2 用户交互实现
cursive 支持丰富的用户交互功能,例如对键盘事件的响应、鼠标操作等。下面是一个简单的例子,展示了如何监听用户按下 ESC 键时退出应用:
extern crate cursive;use cursive::event::{Event, Key};
use cursive::Cursive;fn main() {let mut siv = Cursive::default();siv.add_global_callback(Event::Key(Key::Esc), |s| s.quit());siv.run();
}
更多关于用户交互实现的 API 和示例可以查看 cursive 的官方文档。
3. Crossterm:一个跨平台的终端操作库
3.1 简介
Crossterm 是一个基于 Rust 语言的跨平台终端操作库,可以用来处理终端的输入和输出。它提供了丰富的功能,使开发者能够轻松地构建跨平台的命令行应用程序。
3.1.1 核心功能
Crossterm 的核心功能包括控制光标移动、改变文本样式、处理按键输入等。通过这些功能,开发者可以实现各种复杂的终端交互操作。
3.1.2 使用场景
Crossterm 可以广泛应用于需要在终端环境下进行交互的 Rust 应用程序开发中,比如命令行工具、终端游戏等。
3.2 安装与配置
要使用 Crossterm 库,首先需要安装 Rust 编程语言的开发环境,并在项目中引入 Crossterm 依赖。
3.2.1 安装指南
在项目的 Cargo.toml 文件中加入 Crossterm 依赖:
[dependencies]
crossterm = "0.22.0"
然后在项目中运行以下命令安装 Crossterm:
$ cargo build
3.2.2 基本配置
一般情况下,不需要额外的基本配置。只需在代码中引入 Crossterm 库即可开始使用其功能。
3.3 API 概览
Crossterm 提供了丰富的 API,用于终端操作和输入事件处理。
3.3.1 跨平台终端操作
Crossterm 可以用于控制终端的输出和显示效果。以下是一个简单的例子,演示如何在终端上输出一段文本:
use crossterm::{execute, Result, style::Print};fn main() -> Result<()> {execute!(std::io::stdout(), Print("Hello, Crossterm!"))?;Ok(())
}
更多关于终端操作的 API 信息,可以参考 Crossterm 文档
3.3.2 输入事件处理
Crossterm 还可以处理用户对终端的输入事件,例如键盘按键的输入。以下是一个简单的例子,演示如何监听并处理用户在终端上的按键输入:
use crossterm::event::{read, Event, KeyCode, KeyEvent, KeyModifiers};fn main() {loop {if let Event::Key(KeyEvent { code, modifiers, .. }) = read().unwrap() {match code {KeyCode::Char('q') => {if modifiers == KeyModifiers::CONTROL {println!("Ctrl + q pressed, exiting...");break;}},_ => {}}}}
}
更多关于输入事件处理的 API 信息,可以参考 Crossterm 文档
通过 Crossterm 库,开发者可以方便地实现各种终端交互功能,从而为用户提供更加丰實的命令行应用体验。
4. tui:一个用于构建终端用户界面的Rust库
4.1 简介
tui 是一个用于构建终端用户界面的 Rust 库,它提供了丰富的功能和灵活的设计,使得开发者可以轻松地构建复杂的终端应用程序。
4.1.1 核心功能
- 提供丰富的UI组件,如窗口、面板、文本框等
- 支持丰富的样式定制,包括颜色、边框、对齐方式等
- 提供事件处理和交互功能,支持键盘鼠标等输入设备
4.1.2 使用场景
- 命令行工具的用户界面改进
- 构建基于终端的监控和管理工具
- 实现终端下的交互式数据展示和操作界面
4.2 安装与配置
4.2.1 安装指南
首先,确保你已经安装了 Rust 工具链。然后,在你的 Rust 项目中,可以通过 Cargo.toml 文件添加 tui 作为依赖:
[dependencies]
tui = "0.16.7"
之后使用 cargo build 命令来构建项目即可。
官方文档地址:https://docs.rs/tui/
4.2.2 基本配置
当 tui 被添加为项目依赖后,你可以在 Rust 代码中引入 tui 库,并开始构建自己的终端用户界面。
use tui::{backend::TermionBackend,layout::{Constraint, Direction, Layout},widgets::{Block, Borders, Paragraph, Text},Terminal,
};fn main() {// ... (省略初始化和其他逻辑)let backend = TermionBackend::new().expect("Failed to initialize backend");let mut terminal = Terminal::new(backend).expect("Failed to initialize terminal");// ... (省略渲染逻辑)
}
4.3 API 概览
4.3.1 终端UI设计
tui 提供了一系列的 UI 组件,可以通过这些组件构建出丰富多彩的终端用户界面。以下是一个简单的例子,展示如何创建一个包含文本的窗口:
use tui::{backend::TermionBackend,layout::{Constraint, Direction, Layout},widgets::{Block, Borders, Paragraph, Text},Terminal,
};fn main() {// ... (省略初始化和其他逻辑)let backend = TermionBackend::new().expect("Failed to initialize backend");let mut terminal = Terminal::new(backend).expect("Failed to initialize terminal");// 创建一个文本段落let text = [Text::raw("Hello, tui!")];let paragraph = Paragraph::new(text.iter()).block(Block::default().title("Paragraph").borders(Borders::ALL));// 渲染窗口terminal.draw(|f| {f.render_widget(paragraph, chunks[0]);}).expect("Failed to draw terminal");
}
4.3.2 事件处理和交互
use tui::backend::TermionBackend;
use tui::widgets::{Widget, Block, Borders};
use tui::layout::{Layout, Constraint, Direction};
use tui::Terminal;
use termion::event::Key;
use termion::input::TermRead;
use termion::raw::IntoRawMode;
use std::io;fn main() {let stdout = io::stdout().into_raw_mode().unwrap();let backend = TermionBackend::new(stdout);let mut terminal = Terminal::new(backend).unwrap();terminal.clear().unwrap();loop {terminal.draw(|f| {let size = f.size();let block = Block::default().title("Block").borders(Borders::ALL);f.render_widget(block, size);}).unwrap();for key in io::stdin().keys() {if let Ok(key) = key {match key {Key::Char('q') => {return;}_ => {}}}}}
}
以上就是 tui 库的简单介绍,希望对你有所帮助!
5. pancurses:一个用于Rust的Curses库绑定
5.1 简介
pancurses 是一个为 Rust 提供 Curses 库绑定的库,可以在终端用户界面上进行文本界面的交互和绘制。它提供了使用 Curses 库所需的功能和特性,并且易于在 Rust 项目中集成和使用。
5.1.1 核心功能
- 在终端界面上进行文本绘制
- 支持键盘输入和交互
- 提供基本的窗口管理功能
5.1.2 使用场景
- 构建具有终端用户界面的命令行应用程序
- 创建交互式终端工具
- 实现基于文本界面的游戏
5.2 安装与配置
5.2.1 安装指南
要在 Rust 项目中使用 pancurses,可以将其添加到 Cargo.toml 文件的 dependencies 部分:
[dependencies]
pancurses = "0.16.1"
然后在 Rust 代码中引入 pancurses 库即可开始使用。
5.2.2 基本配置
在使用 pancurses 之前,需要进行初始化和清理工作。下面是一个简单的示例:
extern crate pancurses;use pancurses::{initscr, endwin};fn main() {// 初始化 Curses 库let window = initscr();// ... 在这里进行终端界面的绘制和交互 ...// 清理并退出endwin();
}
5.3 API 概览
5.3.1 Curses库使用
pancurses 提供了一组函数来操作终端界面,例如清屏、移动光标、打印文本等。以下是一个简单的示例,演示了如何在终端上打印一行文本:
extern crate pancurses;use pancurses::{initscr, endwin, printw, refresh};fn main() {let window = initscr(); // 初始化 Curses 库printw("Hello, world!"); // 在终端上打印文本refresh(); // 刷新屏幕window.getch(); // 等待用户输入endwin(); // 清理并退出
}
5.3.2 屏幕绘制和交互
除了简单的文本打印外,pancurses 还支持创建窗口、处理键盘输入等更复杂的操作。以下是一个简单的终端界面程序,演示了如何创建一个窗口并接受用户输入:
extern crate pancurses;use pancurses::{initscr, endwin, Window, Input, noecho};fn main() {let window = initscr(); // 初始化 Curses 库window.keypad(true); // 启用特殊键盘输入noecho(); // 关闭回显window.printw("Type something: ");window.refresh();let ch = window.getch(); // 获取用户输入match ch {Some(Input::Character(c)) => {window.clear(); // 清空屏幕window.printw(&format!("You typed: {}", c));window.refresh();}_ => {}}window.getch(); // 等待用户输入endwin(); // 清理并退出
}
官网链接:pancurses
以上是关于 pancurses 的简要介绍、安装与配置以及 API 概览,希望能够帮助你快速上手使用这个用于 Rust 的 Curses 库绑定。
6. console:一个用于处理控制台输出的库
6.1 简介
console 是一个用于处理控制台输出的 Rust 库,它提供了丰富的功能来格式化和处理终端用户界面的输出和用户输入。
6.1.1 核心功能
- 控制台输出格式处理
- 用户输入处理
6.1.2 使用场景
console 可以应用于任何需要与终端用户进行交互的 Rust 应用程序,比如命令行工具、终端游戏等。
6.2 安装与配置
6.2.1 安装指南
你可以通过 Cargo.toml 将 console 添加到你的 Rust 项目中:
[dependencies]
console = "0.9.1"
更多安装细节,请参考 console 官方文档
6.2.2 基本配置
在你的 Rust 项目源文件中引入 console crate:
use console::Style;
6.3 API 概览
6.3.1 控制台输出格式处理
console 提供了丰富的控制台输出格式处理功能,比如颜色、样式等。以下是一个简单的例子:
use console::Style;fn main() {let success = Style::new().green().bold();println!("{}: File saved successfully", success.apply_to("Success"));
}
更多关于控制台输出格式处理的 API,请参考 console 官方文档
6.3.2 用户输入处理
console 还可以处理用户的输入,比如读取用户输入的字符串。以下是一个简单的例子:
use console::Term;fn main() {let mut term = Term::stdout();let name = term.read_line().unwrap();println!("Hello, {}!", name.trim());
}
更多关于用户输入处理的 API,请参考 console 官方文档
以上是对 console 库的简要介绍和使用示例,希望能帮助你更好地处理控制台输出和用户输入。
总结
本文对六个常用的Rust终端操作库和用户界面构建库进行了全面介绍和比较,为开发者提供了选择和使用这些库的便利性和参考价值。每个库都有其独特的优势和适用场景,开发者可以根据自身项目的需求,灵活选择和应用这些库来提高开发效率和用户体验。
相关文章:
【Rust光年纪】构建高效终端用户界面:Rust库全面解析
构建优雅终端应用:深度评析六大Rust库 前言 随着Rust语言的流行和应用场景的不断扩大,对于终端操作和用户界面构建的需求也日益增长。本文将介绍一些在Rust语言中常用的终端操作库和用户界面构建库,以及它们的核心功能、使用场景、安装与配…...
鼠标滑动选中表格部分数据列(vue指令)
文章目录 代码指令代码使用代码 代码 指令代码 // 获得鼠标移动的范围 function getMoveRange(startClientX, endClientX, startClientY, endClientY) {const _startClientX Math.min(startClientX, endClientX);const _endClientX Math.max(startClientX, endClientX);con…...
“5G+Windows”推动全场景数字化升级:美格智能5G智能模组SRM930成功运行Windows 11系统
操作系统作为连接用户与数字世界的桥梁,在数字化迅速发展的时代扮演着至关重要的角色,智能设备与操作系统的协同工作,成为推动现代生活和商业效率的关键力量。其中,Windows系统以其广泛的应用基础和强大的兼容性成为全球最广泛使用…...
c语言学习,isupper()函数分析
1:isupper() 函数说明: 检查参数c,是否为大写英文字母。 2:函数原型: int isupper(int c) 3:函数参数: 参数c,为检测整数 4:返回值: 参数c是大写英文字母&…...
Adnroid 数据存储:SharedPreferences详解【SharedPreferencesUtils,SharedPreferences的ANR】
目录 1)SP是什么、如何使用,SPUtils 2)SP的流程 3)comit和apply 一、SP是什么,如何使用,SPUtils 1.1 SP是什么? SharedPreferences是Android平台提供的一种轻量级的数据存储方式,…...
Sentinel 规则持久化到 Nacos 实战
前言: 前面系列文章我们对 Sentinel 的作用及工作流程源码进行了分析,我们知道 Sentinel 的众多功能都是通过规则配置完成的,但是我们前面在演示的时候,发现 Sentinel 一重启,配置的规则就没有了,这是因为…...
服务器CPU天梯图2024年8月,含EYPC/至强及E3/E5
原文地址(高清无水印原图/持续更新/含榜单出处链接): >>>服务器CPU天梯图<<< 本文提供的服务器CPU天梯图数据均采集自各大专业网站,榜单图片末尾会标准其来源(挂太多链接有概率会被ban,…...
SpringBoot加载dll文件示例
1、将动态库放在resource文件目录下 2、编写相关加载逻辑 import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.util.HashMap;/*** Description: 加载动态库 .dll文件* author: Be.insighted* c…...
9.C基础_指针与数组
数组指针(一维数组) 数组指针就是" 数组的指针 ",它是一个指向数组首地址的指针变量。 1、数组名的含义 对于一维数组,数组名就是一个指针,指向数组的首地址。 基于如下代码进行分析: int a…...
C语言——结构体与共用体
C语言——结构体与共用体 结构体共用体 结构体 如果将复杂的复杂的数据类型组织成一个组合项,在一个组合项中包含若干个类型不同(当然也可以相同)的数据项。 C语言允许用户自己指定这样一种数据结构,它称为结构体。 结构体的语法…...
vs+qt项目转qt creator
1、转换方法 打开vs工程,右键项目,Qt->Create Base .pro File 后面默认OK 如果工程有include和lib路径需要配置,则转换后的工程,需要修改pro文件 2.修改pro文件 例如转换后的工程如下: 修改后 # ------------…...
微信小程序 checkbox 实现双向绑定以及特殊交互处理
wxml文件代码如下: <!--页面顶部 引入wxs文件--> <wxs module"tools" src"../../filter/tools.wxs"></wxs> ... <checkbox-group bindchange"checkboxChange"><label class"weui-cell weui-check__…...
我在高职教STM32——I2C通信之读写EEPROM(1)
大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…...
【ARM】应用ArmDS移植最小FreeRTOS系统
【更多软件使用问题请点击亿道电子官方网站】 一、文档背景 FreeRTOS(Free Real-Time Operating System)是一个开源的实时操作系统内核,广泛应用于嵌入式系统。它具有小巧、灵活、低功耗等特点,支持多任务调度、信号量、队列等实…...
golang下载、上传文件MD5高效计算方法,利用io.TeeReader函数特性 实时计算文件md5签名
在go语言的开发中,当我们在操作下载或者上传文件对象时, 我们可以利用golang内置的io包中的 TeeReader函数特性,高效实时计算文件的md5值。 方法如下: TeeReader高效计算文件md5示例 保存上传文件,并使用文件的md5签…...
TreeMap实现根据值比较
前言: TreeMap普通的排序方法都是根据键来比较来排序,本篇文章实现两种方式实现值排序 1.使用 SortedSet 和 Stream API 如果你想要一个持久化的排序结果,你可以使用 SortedSet 结构来存储键值对的条目。 TreeSet<Map.Entry<String, …...
2024前端面试(内容持续更新)
Vue篇 data为什么是个函数? 在Vue中,data必须是一个函数,这是因为当data是函数时,每个组件实例化时都会调用该函数,返回一个新的数据对象,从而保证每个组件实例拥有独立的数据,避免数据冲…...
接口基础知识5:详解request headers(一篇讲完常见字段)
课程大纲 一、请求头的定义 HTTP请求头部(HTTP Request Headers):HTTP协议中的一部分,用于在客户端和服务器之间传递附加信息。这些头部字段提供了关于请求、客户端环境、或请求的上下文的信息。 请求头是键值对的形式ÿ…...
mac的node使用
查看当前Node和npm版本 node -v npm -v安装"n"版本管理工具 sudo npm install -g n 更新node版本 sudo n stable // 稳定版本 sudo n lts // 最新稳定版本 sudo n latest // 最新版本 sudo n xx.xx // 更新到指定版本查看node版本安装集合 n ls切换对应node版…...
HTML - 简易版打字练习
1. 赛博朋克风格的视觉设计 颜色与渐变:通过linear-gradient设置了背景的颜色渐变,使用高饱和度的霓虹色彩(如橙色、绿色和蓝色)来营造赛博朋克的视觉效果。这种配色方案是赛博朋克风格的典型元素。 立体感和阴影:使用…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
