2411rust,1.81,1.82

1.81.0稳定版

core::error::错误

1.81稳定了核心中的Error特征,允许在#![no_std]库中使用特征.这样在相同错误特征上,可标准化更广泛的Rust生态系统,而不管库的环境.

新的排序实现

都已按新算法更新了标准库中的稳定不稳定排序实现,从而改进了它们的运行时性能和编译时间.

此外,两个新的排序算法都试检测Ord的阻止产生有意义排序结果错误实现,且现在此时会恐慌而不是返回有效随机排列的数据.

遇见这些恐慌的用户,应该审计他们的排序实现,以确保它们满足PartialOrdOrd记录的要求.

#[expect(lint)]

1.81稳定了一个新的期望检查级,它允许显式说明应有的检查,否则,则发出警告.此操作的期望用例是无论是因为检查实现错误,还是正在重构,同时想知道何时不再需要检查,来临时使检查静音.

如,如果你正在移动代码基以符合Clippy检查(如undocumented_unsafe_blocks)强制的新限制,则你可在转换时使用#[expect(clippy::undocumented_unsafe_blocks)],确保一旦记录了所有不安全的块,就可选择拒绝检查来它.

Clippy还有两个检查来强制使用此功能,并帮助移动现有属性:

1,clippy::allow_attributes在支持#[expect]或移动#[allow]属性到#[expect]时,限制允许属性.
2,clippy::allow_attributes_without_reason要求#[allow]属性的原因.

检查原因

更改检查级一般事出有因.如,如果在不支持浮点的环境中,运行代码,你可用Clippy#![deny(clippy::float_arithmetic)]来检查.

但是,如果项的新开发者看到此检查触发,他们需要查找(想)拒绝中解释加它的原因的评论.在Rust1.81中,可直接在编译器消息通知他们:
错误:检测到浮点运算:
-->src/lib.rs:4:5
|
4|a+b
|^^^^^
|
=帮助:有关更多信息,请访问https://rustlang.github.io/rustclippy/master/index.html#float_arithmetic
=注意:不支持硬件浮点数
注意:在此处定义检查
–>src/lib.rs:1:9
|
1|#![deny(clippy::float_arithmetic,reason="不支持硬件浮点数")]
|^^^^^^^^^^^^^^^^^^^^^^^^

稳定的API

core::error
hint::assert_unchecked
fs::exists
AtomicBool::fetch_not
Duration::abs_diff
IoSlice::advance
IoSlice::advance_slices
IoSliceMut::advance
IoSliceMut::advance_slices
PanicHookInfo
PanicInfo::message
PanicMessage

这些API现在在环境中是稳定的:

char::from_u32_unchecked (function)
char::from_u32_unchecked (method)
CStr::count_bytes
CStr::from_ptr

兼容说明

分割恐慌勾挂和恐慌处理器参数

已重命名std::panic::PanicInfostd::panic::PanicHookInfo.继续按别名使用旧名,但从Rust1.82.0开始会导致弃用警告.
但是,core::panic::PanicInfo将不变,因为现在这是个不同类型.

原因是这些类不同角色:std::panic::PanicHookInfostd环境中恐慌勾挂的参数(恐慌可有任意负载),而core::panic::PanicInfo是在非标准(#![no_std])环境中#[panic_handler]的参数(其中恐慌总是带格式化的消息).

分离这些类允许为这些类添加更多有用的方法,如std::panic::PanicHookInfo::payload_as_str()core::panic::PanicInfo::message().

extern"C"函数中中止未抓的恐慌

这完成了从1.71开始的期望跨ABI边界展开时(在其他-展开变量)添加了特有的"C展开"ABI转换.从1.81开始,非展开ABI(如,"C")现在会在未抓的展开中止,从而解决长期健壮性问题.

依赖展开的程序应,转而使用-展开后缀的ABI变量.

已更改WASI0.1目标命名

使用wasm32wasi目标(以WASI0.1为目标)现在发出编译器警告,并要求用户切换wasm32wasip1目标.两个目标是相同的,只是重命名了wasm32wasi,更改WASI目标,是为了在2025年1月删除wasm32wasi.

修复CVE-2024-43402

现在,在窗口上,调用批处理文件时,如果有窗口会忽略和去掉的尾空格或句点,则std::process::Command正确转义参数.

1.82.0稳定版

货物信息

Cargo现在有一个信息子命令来显示注册表中包的信息.

如,以下是可见的cargo info cc:

cc #build-dependencies

版本:1.1.23(最新1.1.30)
许可:MITApache-2.0
Rust版本:1.63
文档:https://docs.rs/cc
主页:https://github.com/rustlang/ccrs
仓库:https://github.com/rustlang/ccrs
crates.io:https://crates.io/crates/cc/1.1.23
特征:
作业服务器=[]
并行=[dep:libc,dep:jobserver]
注意:要查看如何依赖CC,请运行cargo tree --invert --package cc@1.1.23

默认,如果有,cargo-info描述本地Cargo.lock中的包版本.如见,它也会指示何时有更新的版本,而cargo info cc@1.1.30会报告它.

促进苹果

64ARM上的macOS现在是第1层

Mac,Catalyst目标现在是第2层

精确捕捉使用<..>语法

Rust现在支持在某些impl Trait约束内,用use<..>语法来控制抓哪些泛型生命期参数.

Rust中的返回位置实现特征(RPIT)类型抓某些泛型参数.它允许在隐藏类型中使用该泛型参数.这反之又会影响借用检查.

Rust2021更早版本中,除非在暗类型按语法形式提及这些生命期参数,否则不会在裸函数和固有实现函数和方法按暗类型生命期参数.
如,这是个错误:

//@版本`:2021`
fn f(x: &()) -> impl Sized { x }

有了新的use<..>语法,可按错误中的建议解决它,方法是写:

fn f(x: &()) -> impl Sized + use<'_> { x }

以前,正确修复此类错误需要定义一个虚特征(一般叫),并如下使用它:

trait Captures<T: ?Sized> {}
impl<T: ?Sized, U: ?Sized> Captures<T> for U {}fn f(x: &()) -> impl Sized + Captures<&'_ ()> { x }

现在不再需要它.

有个经常使用的叫"超期技巧"的不太正确但更方便的方法来解决它.编译器甚至之前建议这样做.该技巧如下:

fn f(x: &()) -> impl Sized + '_ { x }

在此简单用例时,如在RFC3498中解释,该技巧完全等价于+use<'_>.但是,实际情况下,这会过度约束返回的类型的约束,从而导致问题.

如,考虑以下Rust编译器中真实案例代码:

struct Ctx<'cx>(&'cx u8);
fn f<'cx, 'a>(cx: Ctx<'cx>,x: &'a u8,
) -> impl Iterator<Item = &'a u8> + 'cx {core::iter::once_with(move || {eprintln!("LOG: {}", cx.0);x})//~^错误,生命期可能不够长
}

无法删除+'cx,因为在隐藏类型中用生命期,因此必须抓它.也不能添加'a:'cx约束,因为这些生命期实际上无关,且一般'a不一定比'cx活得更久.

但是,如果写成+use<'cx,'a>,这工作并有正确的约束.

今天稳定的东西还有一些限制.用<..>语法当前不能出现在特征特征实现中(但注意,默认已抓了域内生命期参数),且它必须列举所有域内的泛型类型参数.期望未来取消这些限制.

注意,在Rust2024中,上述示例无需用用<..>语法(或技巧)就"正常"工作.这是因为在新版本中,暗类型自动抓域内所有生命期参数.

这是个更好的默认值.在Rust2024中,用<..>语法是选出该默认值的重要方式.

创建原始指针本地语法

不安全代码有时必须处理可能挂起,可能未对齐或可能指向无效数据指针.此常见情况repr(packed)结构.

此时,要避免创建引用,因为这会导致未定义行为.即不要用一般的&&mut符号,因为它们会创建一个引用,即使立即按原始指针转换引用,也太晚了,无法避免未定义行为.

几年来,std::ptr::addr_of!std::ptr::addr_of_mut!宏用于该目的.现在该为此操作提供适当的本地语法了:addr_of!(expr)变为&raw const expr,而addr_of_mut!(expr)变为&raw mut expr.如:

#[repr(packed)]
struct Packed {not_aligned_field: i32,
}
fn main() {let p = Packed { not_aligned_field: 1_82 };//这是未定义行为!编译器拒绝它.`let ptr=&p.not_aligned_fieldas*const i32;`这是创建指针的旧方法.let ptr = std::ptr::addr_of!(p.not_aligned_field);//这就是新的方式.let ptr = &raw const p.not_aligned_field;//访问指针不变.注意,因为指针未对齐,`'val=*ptr'`是未定义行为!let val = unsafe { ptr.read_unaligned() };
}

本地语法更清楚地表明,按位置式解释这些符号的操作数式.还避免了在创建指针时使用"的地址"术语.

指针不仅是个地址,因此Rust正在摆脱像重申了指针地址错误等价性"的地址"此术语.

带不安全的安全对象

Rust代码可用外部代码函数和静态数据.在块中提供,这些外部项类型签名.历史上,块中的所有项用起来都是不安全的,但不必在自身编写不安全.

但是,如果块中的签名错误,则使用该项会导致未定义行为.那是写块的人的错,还是用该项的人的错?

已决定编写块的人,负责确保其中包含的所有签名都是正确的,因此现在允许编写不安全的:

unsafe extern {pub safe static TAU: f64;pub safe fn sqrt(x: f64) -> f64;pub unsafe fn strlen(p: *const u8) -> usize;
}

一个好处是,可按安全使用标记不安全的块中的项.在上例中,可无需使用不安全,就调用sqrt或读取TAU.
不安全保守假设无安全不安全标记的项.

在未来发布中,鼓励与检查一起,使用不安全.从Rust2024开始,会要求不安全 外.

不安全属性

一些Rust属性,如no_mangle,可用来在没有不安全块时,导致未定义行为.如果这是普通代码,会要求在不安全的{}块中放置它们,但当前,属性还没有类似的语法.

为了反映这些属性可能会破坏Rust的安全保证,它们现在是"不安全的",应该如下:

#[unsafe(no_mangle)]
pub fn my_global_function() { }

当前仍接受该属性的旧形式(没有不安全),但可能会在未来反对它,且在Rust2024中将是个硬性错误.
这会影响以下属性:

no_mangle
link_section
export_name

在匹配模式中省略空类型

现在可以省略按值匹配空(又名无人区)类型的模式:

use std::convert::Infallible;
pub fn unwrap_without_panic<T>(x: Result<T, Infallible>) -> T {let Ok(x) = x; //`'Err'`情况不需要出现x
}

这适合空类型,如无变量枚举 Void{},或带可见空字段且无#[non_exhaustive]属性的结构和枚举.它与尽管当前仍不稳定的永不!类型结合使用时也特别有用.

有时,必须写空模式.因为未初化值和不安全代码,如果通过引用,指针或联字段访问空类型,则禁止省略模式:

pub fn unwrap_ref_without_panic<T>(x: &Result<T, Infallible>) -> &T {match x {Ok(x) => x,//因为引用,不能省略此分支Err(infallible) => match *infallible {},}
}

为了避免干扰想支持多个Rust版本的,有空模式的匹配项,尽管可删除它们,但尚未按"不可达"警告报告.

浮点非数语义和

对(f32f64类型)浮点值的运算,是出了名的微妙.原因之一是有用来表示0.0/0.0的结果的NaN(非数)值.

非数值之所以微妙,是因为有多个可能非数值.非数值有一个(可用f.is_sign_positive()检查)符号和一个(可用f.to_bits()提取的)负载.

但是,==完全忽略非数值符号和负载(总是返回).尽管在跨硬件架构标准化浮点运算的行为方面非常成功,但非数何时为正或负及其确切负载的细节架构而异.

更复杂的是,当保证精确数字结果不变时,Rust及其LLVM后端优化浮点运算,但这些优化可改变生成的非数值.
如,f*1.0可优化为仅f.但是,如果f非数,则会改变结果的确切位模式!

在该版本中,标准化了Rust非数值的行为方式的一组规则.它不是完全确定性的,即(0.0/0.0).is_sign_positive()等操作的结果可能会因硬件架构,优化级和周围代码而异.

为了可移植,代码应避免使用to_bits,且应使用f.signum()==1.0而不是f.is_sign_positive().
但是,精心选择这些规则,仍允许在Rust代码中实现高级数据表示技术,如非数装箱.

更多细节,见文档.

确定非数值的语义后,该版本还允许在const fn中使用浮点运算.
因此,像(0.0/0.0).is_sign_positive()此操作(在Rust1.83中是常稳定)在编译时和运行时时可能会产生不同结果.这不是漏洞,代码不能依赖总是产生完全相同结果const fn.

作为汇编立即数的常数

汇编操作数,现在无需先在寄存器保存它们,而按立即数用整数.如,实现一个syscall手动:

const WRITE_SYSCALL: c_int = 0x01; //`syscall1`是`'写'`,
const STDOUT_HANDLE: c_int = 0x01; //`'stdout'`有文件句柄1
const MSG: &str = "Hello, world!\n";
let written: usize;
//签名:`ssize_t write(int fd, const void buf[], size_t count)`
unsafe {core::arch::asm!("mov rax, {SYSCALL} "//`rax`保存系统调用号,"mov rdi, {OUTPUT} " //`"rdi`为`"fd"`(第一个参数)","mov rdx, {LEN} "    //`rdx`为`"count"`(第三个参数)","syscall        "    //调用`syscall`","mov {written}, rax "//保存返回值",SYSCALL = const WRITE_SYSCALL,OUTPUT = const STDOUT_HANDLE,LEN = const MSG.len(),in("rsi") MSG.as_ptr(), //`rsi`是`'buf*'`(第二个参数)written = out(reg) written,);
}
assert_eq!(written, MSG.len());

输出:
世界你好!
玩耍地方链接.

上面代码中,如LEN=const MSG.len()之类的语句使用带MSG.len()值的立即数填充LEN格式限定符.可在生成的汇编中看到(值为14):

lea     rsi, [rip + .L__unnamed_3]
mov     rax, 1    //`rax`保存系统调用号,
mov     rdi, 1    //`"rdi`为`"fd"`(第一个参数)",
mov     rdx, 14   //`rdx`为`"count"`(第三个参数)",
syscall //调用`syscall`"
mov     rax, rax  //"保存返回值"

更多细节,见引用.

安全地处理不安全的静态数据

现在允许以下代码:

static mut STATIC_MUT: Type = Type::new();
extern "C" {static EXTERN_STATIC: Type;
}
fn main() {let static_mut_ptr = &raw mut STATIC_MUT;let extern_static_ptr = &raw const EXTERN_STATIC;
}

式环境中,STATIC_MUTEXTERN_STATIC放置式.以前,编译器的检查安全不知道原引用符号实际上并不会影响操作数的位置,而是按读写指针对待它.

但是,实际上没有不安全因子,因为它只是创建一个指针.

放松会导致问题,如果拒绝unused_unsafe检查,现在会按未使用报告一些不安全的块,但现在仅在旧版本上用它们.

如果想支持多个版本Rust,与该示例一样,请用#[allow(unused_unsafe)]注解这些不安全的块:

 static mut STATIC_MUT: Type = Type::new();fn main() {
+    #[allow(unused_unsafe)]let static_mut_ptr = unsafe { std::ptr::addr_of_mut!(STATIC_MUT) };}

稳定的API

std::thread::Builder::spawn_unchecked
std::str::CharIndices::offset
std::option::Option::is_none_or
[T]::is_sorted
[T]::is_sorted_by
[T]::is_sorted_by_key
Iterator::is_sorted
Iterator::is_sorted_by
Iterator::is_sorted_by_key
std::future::Ready::into_inner
std::iter::repeat_n
impl<T: Clone> DoubleEndedIterator for Take<Repeat<T>>
impl<T: Clone> ExactSizeIterator for Take<Repeat<T>>
impl<T: Clone> ExactSizeIterator for Take<RepeatWith<T>>
impl Default for std::collections::binary_heap::Iter
impl Default for std::collections::btree_map::RangeMut
impl Default for std::collections::btree_map::ValuesMut
impl Default for std::collections::vec_deque::Iter
impl Default for std::collections::vec_deque::IterMut
Rc<T>::new_uninit
Rc<T>::assume_init
Rc<[T]>::new_uninit_slice
Rc<[MaybeUninit<T>]>::assume_init
Arc<T>::new_uninit
Arc<T>::assume_init
Arc<[T]>::new_uninit_slice
Arc<[MaybeUninit<T>]>::assume_init
Box<T>::new_uninit
Box<T>::assume_init
Box<[T]>::new_uninit_slice
Box<[MaybeUninit<T>]>::assume_init
core::arch::x86_64::_bextri_u64
core::arch::x86_64::_bextri_u32
core::arch::x86::_mm_broadcastsi128_si256
core::arch::x86::_mm256_stream_load_si256
core::arch::x86::_tzcnt_u16
core::arch::x86::_mm_extracti_si64
core::arch::x86::_mm_inserti_si64
core::arch::x86::_mm_storeu_si16
core::arch::x86::_mm_storeu_si32
core::arch::x86::_mm_storeu_si64
core::arch::x86::_mm_loadu_si16
core::arch::x86::_mm_loadu_si32
core::arch::wasm32::u8x16_relaxed_swizzle
core::arch::wasm32::i8x16_relaxed_swizzle
core::arch::wasm32::i32x4_relaxed_trunc_f32x4
core::arch::wasm32::u32x4_relaxed_trunc_f32x4
core::arch::wasm32::i32x4_relaxed_trunc_f64x2_zero
core::arch::wasm32::u32x4_relaxed_trunc_f64x2_zero
core::arch::wasm32::f32x4_relaxed_madd
core::arch::wasm32::f32x4_relaxed_nmadd
core::arch::wasm32::f64x2_relaxed_madd
core::arch::wasm32::f64x2_relaxed_nmadd
core::arch::wasm32::i8x16_relaxed_laneselect
core::arch::wasm32::u8x16_relaxed_laneselect
core::arch::wasm32::i16x8_relaxed_laneselect
core::arch::wasm32::u16x8_relaxed_laneselect
core::arch::wasm32::i32x4_relaxed_laneselect
core::arch::wasm32::u32x4_relaxed_laneselect
core::arch::wasm32::i64x2_relaxed_laneselect
core::arch::wasm32::u64x2_relaxed_laneselect
core::arch::wasm32::f32x4_relaxed_min
core::arch::wasm32::f32x4_relaxed_max
core::arch::wasm32::f64x2_relaxed_min
core::arch::wasm32::f64x2_relaxed_max
core::arch::wasm32::i16x8_relaxed_q15mulr
core::arch::wasm32::u16x8_relaxed_q15mulr
core::arch::wasm32::i16x8_relaxed_dot_i8x16_i7x16
core::arch::wasm32::u16x8_relaxed_dot_i8x16_i7x16
core::arch::wasm32::i32x4_relaxed_dot_i8x16_i7x16_add
core::arch::wasm32::u32x4_relaxed_dot_i8x16_i7x16_add

这些API现在在环境中是稳定的:

std::task::Waker::from_raw
std::task::Context::from_waker
std::task::Context::waker
$integer::from_str_radix
std::num::ParseIntError::kind

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【EasyExcel】复杂导出操作-自定义颜色样式等(版本3.1.x)

文章目录 前言一、自定义拦截器二、自定义操作1.自定义颜色1.1.样式未生效原因&#xff1a;1.2.解决方法&#xff1a; 2.合并单元格 三、复杂操作示例1.实体(使用了注解式样式)&#xff1a;2.自定义拦截器3.代码4.最终效果 前言 本文简单介绍阿里的EasyExcel的复杂导出操作&…

Excel单元格中自适应填充多图

实例需求&#xff1a;在Excel插入图片时&#xff0c;由于图片尺寸各不相同&#xff0c;如果希望多个图片填充指定单元格&#xff0c;依靠用户手工调整&#xff0c;不仅费时费力&#xff0c;而且很难实现完全填充。如下图中的产品图册&#xff0c;有三个图片&#xff0c;如下图所…

【C++笔记】vector使用详解及模拟实现

前言 各位读者朋友们&#xff0c;大家好&#xff01;上期我们讲了string类的模拟实现&#xff0c;这期我们开启vector的讲解。 一.vector的介绍及使用 1.1 vector的介绍 vector的文档 使用STL的三个境界&#xff1a;能用、明理、能扩展&#xff0c;下面学习vector&#xff…

LLM评测范式与方法

文章目录 基础大语言模型的评测微调大语言模型的评测不同评测方法的利弊为了有效地评估大语言模型的性能,一种主流的途径就是选择不同的能力维度并且构建对应的评测任务,进而使用这些能力维度的评测任务对模型的性能进行测试与对比。可供选择的能力维度包括但不限于本书所介绍…

3D Gaussian Splatting的全面理解

1.概述 高斯泼溅是一种表示 3D 场景和渲染新视图的方法,在“用于实时辐射场渲染的 3D 高斯泼溅3d-gaussian-splatting”这篇论文中被首先提出。它可以被认为是类似 NeRF模型型的替代品,就像过去的 NeRF 一样,高斯泼溅衍生出了许多新的研究工作,研究人员选择将其用作各种用…

《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人

课程 《生成式 AI》课程 第3講&#xff1a;訓練不了人工智慧嗎&#xff1f;你可以訓練你自己-CSDN博客 我们希望你创建一个定制的服务机器人。 您可以想出任何您希望机器人执行的任务&#xff0c;例如&#xff0c;一个可以解决简单的数学问题的机器人0 一个机器人&#xff0c…

vue包含二维码、背景图片、Logo图片和文本说明的图片生成及下载功能

要使用npm安装vue-qr和html2canvas这两个库 npm install vue-qr html2canvas 完整代码 可以根据实际项目需求调整&#xff0c;改成调用接口展示 <template><div><div ref"qrContainer" class"qr-container"><img class"back…

Oracle ADB 导入 BANK_GRAPH 的学习数据

Oracle ADB 导入 BANK_GRAPH 的学习数据 1. 下载数据2. 导入数据运行 setconstraints.sql 1. 下载数据 访问 https://github.com/oracle-quickstart/oci-arch-graph/tree/main/terraform/scripts&#xff0c;下载&#xff0c; bank_accounts.csvbank_txns.csvsetconstraints.…

问:Spring MVC DispatcherServlet流程步骤梳理

DispatcherServlet是Spring MVC框架中的核心组件&#xff0c;负责接收客户端请求并将其分发到相应的控制器进行处理。作为前端控制器&#xff08;Front Controller&#xff09;的实现&#xff0c;DispatcherServlet在整个请求处理流程中扮演着至关重要的角色。本文将探讨Dispat…

基于深度学习的文本信息提取方法研究(pytorch python textcnn框架)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

leetcode400第N位数字

代码 class Solution {public int findNthDigit(int n) {int base 1;//位数int weight 9;//权重while(n>(long)base*weight){//300n-base*weight;base;weight*10;}//n111 base3 weight900;n--;int res (int)Math.pow(10,base-1)n/base;int index n%base;return String…

Redis环境部署(主从模式、哨兵模式、集群模式)

一、概述 REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统&#xff0c;是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库…

sql数据库-权限控制-DCL

目录 常用权限类别 查询用户权限 举例 授予用户权限 删除权限 常用权限类别 权限说明ALL,ALL PRIVILEGES所有权限SELECT查询数据INSERT插入数据UPDATE修改数据DELETE删除数据ALTER修改表DROP删除数据库/表/视图CREATE创建数据库/表 查询用户权限 show grants for 用户名…

Linux进阶:常用操作

systemctl&#xff1a; 控制系统服务的启动、关闭 系统内置服务均可被systemctl控制第三方软件&#xff0c;如果自动注册了可以被systemctl控制第三方软件&#xff0c;如果没有自动注册&#xff0c;可以手动注册 语法&#xff1a;systemctl start | stop | restart | disable…

从源头保障电力安全:输电线路动态增容与温度监测技术详解

在电力系统中&#xff0c;输电线路是电能传输的关键环节。然而&#xff0c;当导线温度过高时&#xff0c;会加速导线老化&#xff0c;降低绝缘性能&#xff0c;甚至引发短路、火灾等严重事故&#xff0c;对电网安全运行构成巨大威胁。近日&#xff0c;某地区因持续高温和用电负…

vue2动态导出多级表头表格

需求&#xff1a;导出多级表格&#xff0c;如下&#xff0c;每个人名对应的是不同的城市金钱和年龄&#xff0c;日期占俩行&#xff0c;需要根据数据进行动态展示 1.效果 2.关键代码讲解 2.1数据源 2.2所需插件 npm install xlsx 2.3关键代码 创建name组和date组&#xff0c…

蓝桥杯每日真题 - 第16天

题目&#xff1a;&#xff08;卡牌&#xff09; 题目描述&#xff08;13届 C&C B组C题&#xff09; 解题思路&#xff1a; 题目分析&#xff1a; 有 n 种卡牌&#xff0c;每种卡牌的现有数量为 a[i]&#xff0c;所需的最大数量为 b[i]&#xff0c;还有 m 张空白卡牌。 每…

在Unity中使用Epplus写Excel

Overview 本文旨在帮助你快速入门,该库发展多年内容庞大(官方文档写的极好:https://github.com/EPPlusSoftware/EPPlus/wiki),有些功能在Unity环境可能你永远都不会使用. 官方的一个Demo: https://github.com/EPPlusSoftware/EPPlus.Samples.CSharp 如果你只有读的需求,可以…

Python爬虫下载新闻,Flask展现新闻(2)

上篇讲了用Python从新闻网站上下载新闻&#xff0c;本篇讲用Flask展现新闻。关于Flask安装网上好多教程&#xff0c;不赘述。下面主要讲 HTML-Flask-数据 的关系。 简洁版 如图&#xff0c;页面简单&#xff0c;主要显示新闻标题。 分页&#xff0c;使用最简单的分页技术&…

vscode 执行 vue 命令无效/禁止运行

在cmd使用命令可以创建vue项目但是在vscode上面使用命令却不行 一、问题描述 在 cmd 中已确认vue、node、npm命令可以识别运行&#xff0c;但是在 vscode 编辑器中 vue 命令被禁止&#xff0c;详细报错为&#xff1a;vue : 无法加载文件 D:\Software\nodejs\node_global\vue.…