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

strings.LastIndexAny 使用详解

目录

1. 官方包

2. 支持版本

3. 官方说明

4. 作用

5. 实现原理

6. 推荐使用场景和不推荐使用场景

推荐场景

不推荐场景

7. 使用场景示例

示例1:官方示例

示例2:日志清洗(去除末尾的乱码或非法字符)

8. 性能对比

性能特点

对比其他函数

9. 总结

特性说明

对比总结表

最终建议


1. 官方包

是的,strings.LastIndexAny 是 Go 语言标准库 strings 包中的函数,属于官方提供的核心功能

2. 支持版本

strings.LastIndexAny 自 Go 1.0 版本就已存在,所有 Go 1.x 版本均支持,兼容性极强

3. 官方说明

func LastIndexAny

func LastIndexAny(s, chars string) int

英文说明:

LastIndexAny returns the index of the last instance of any Unicode code point from chars in s, or -1 if no Unicode code point from chars is present in s.

中文翻译:

LastIndexAny返回s中字符的任何Unicode码点的最后一个实例的索引,如果s中没有字符的Unicode码点,则返回-1。

4. 作用

返回字符串 s 中最后一个出现在 chars 中的任意字符的字节索引位置;若未找到则返回 -1

特点:

  • 匹配 chars 中的任意单个字符(非子串)
  • Unicode 支持:按字节操作,但能正确处理多字节字符(如中文)

5. 实现原理

  • 边界处理:若 chars 为空,直接返回 -1
  • 反向遍历:从右向左扫描字符串 s,检查每个字节是否在 chars 中存在
  • 字节匹配:使用 bytes.IndexByte 优化单字节字符匹配,但对多字节字符可能需多次检查

6. 推荐使用场景和不推荐使用场景

推荐场景

  • 查找最后的分隔符(如路径 / 或逗号)
  • 快速验证字符串是否含特定字符集
  • 简单数据清洗(如去除末尾标点)

不推荐场景

  • 需精确匹配 Unicode 字符(应用 utf8.DecodeLastRuneInString)
  • 高频调用且长文本(性能敏感时用 bytes.LastIndexAny)
  • 需复杂逻辑(如正则表达式)

7. 使用场景示例

示例1:官方示例

fmt.Println(strings.LastIndexAny("go gopher", "go"))
fmt.Println(strings.LastIndexAny("go gopher", "rodent"))
fmt.Println(strings.LastIndexAny("go gopher", "fail"))

运行后输出:

4
8
-1

解析:

1. fmt.Println(strings.LastIndexAny("go gopher", "go"))

功能:

在字符串 "go gopher" 中查找最后一个出现在字符集合 "go" 中的字符的索引(从 0 开始)

解析:

  • 字符串 "go gopher"(索引:0 1 2 3 4 5 6 7 8 -> g o g o p h e r )
  • 字符集合:"go"(既查找 'g' 或 'o' 最后一次出现的位置)
  • 查找过程:
    • 从右往左扫描
      • 'r'(索引 8) -> 不在 "go" 中,跳过
      • 'e'(索引 7) -> 不在 "go" 中,跳过
      • h(索引 6) -> 不在 "go" 中,跳过
      • 'p'(索引 5) -> 不在 "go" 中,跳过
      • 'o'(索引 4) -> 匹配(属于 "go"),返回索引 4
      • (即使前面还有 'g' 和 'o',但 LastIndexAny 只返回最后一个匹配的索引)

输出: 4

因为 'o' 在索引 4 是最后一个匹配的字符

2. fmt.Println(strings.LastIndexAny("go gopher", "rodent"))

功能:

在字符串 "go gopher" 中查找最后一个出现在字符集合 "rodent" 中的字符的索引

解析:

  • 字符集合:"rodent"(即查找 'r', 'o', 'd', 'e', 'n', 't' 最后一次出现的位置)
  • 查找过程:
    • 从右往左扫描:
      • 'r'(索引 8) -> 匹配(属于 "rodent"),直接返回索引 8
      • (即使前面还有 'o' 和 'e',但 LastIndexAny 只返回最后一个匹配的索引)

输出:8

因为 'r' 在索引 8 是最后一个匹配的字符

3. fmt.Println(strings.LastIndexAny("go gopher", "fail"))

功能:

在字符串 "go gopher" 中查找最后一个出现在字符集合 "fail" 中的字符的索引

解析

  • 字符集合:"fail"(即查找 'f', 'a', 'i', 'l')
  • 查找过程:
    • 从右往左扫描整个字符串:
      • 'r', 'e', 'h', 'p', 'o', 'g', ' ', 'o', 'g' 均不在 "fail" 中
      • 没有任何字符匹配,返回 -1

输出:-1

因为没有任何字符属于 "fail"

示例2:日志清洗(去除末尾的乱码或非法字符)

func main() {rawLog := "2023-08-01 ERROR: Disk full\x00\x1a" // 末尾含控制字符trimChars := "\x00\x1a\x0d\x0a"                 // 需清除的字符集// 找到最后一个需清除的字符位置lastPos := strings.LastIndexAny(rawLog, trimChars)if lastPos != -1 {cleanLog := rawLog[:lastPos] // 截断到合法字符fmt.Println("Cleaned log:", cleanLog)}
}

运行后输出:

Cleaned log: 2023-08-01 ERROR: Disk full

代码功能:

从原始日志字符串 rawLog 中移除末尾的控制字符,生成干净的日志 cleanLog

示例输入:

"2023-08-01 ERROR: Disk full\x00\x1a" (末尾含 \x00 和 \x1a)

处理后输出:

"2023-08-01 ERROR: Disk full"

代码解析:

1. 定义原始日志和控制字符集

rawLog := "2023-08-01 ERROR: Disk full\x00\x1a" // 原始日志,末尾含控制字符 \x00 和 \x1a
trimChars := "\x00\x1a\x0d\x0a"                 // 需要清除的字符集:\x00(空字符)、\x1a(替换字符)、\x0d(回车)、\x0a(换行)
  • rawLog 的末尾有两个不可见控制字符:\x00(空字符)和 \x1a(替换字符)
  • trimChars 定义了需要清除的字符集合,包括:
    • \x00:空字符(ASCII 0)
    • \x1a:替换字符(ASCII 26,通常用于文件结束标记)
    • \x0d:回车(\r,ASCII 13)
    • \x0a:换行(\n,ASCII 10)

2. 查找最后一个需清除的字符位置

lastPos := strings.LastIndexAny(rawLog, trimChars)
  • strings.LastIndexAny(s, chars) 从字符串 s 中查找最后一个出现在 chars 中的字符的索引
  • 在 rawLog 中
    • 最后一个匹配字符是 \x1a(索引 28),前一个是 \x00(索引 27)
    • 因此 lastPos 返回 28(即 \x1a 的位置)

3. 截断字符串并输出

if lastPos != -1 {cleanLog := rawLog[:lastPos] // 从开头截取到最后一个非法字符的前一个字符fmt.Println("Cleaned log:", cleanLog)
}
  • 如果找到需清除的字符(lastPos != -1),则截取 rawLog 从索引 0 到 lastPos-1 的部分
  • 本例中:
    • rawLog[:28] 会保留 "2023-08-01 ERROR: Disk full"(索引 0-26 是有效内容,27 是\x00,28 是 \x1a)
    • 实际效果是提出了末尾的 \x00\x1a

适用场景:

  • 处理从二进制文件或网络包中读取的文本日志,去除尾部不可见字符
  • 优势:比正则表达式更轻量,直接操作字符
  • 注意:若需处理 Unicode 控制字符,需改用 unicode.IsControl

8. 性能对比

性能特点

  • 时间复杂度:最坏 O(n*m) (n=len(s), m=len(chars)),但实际因字节优化接近 O(n)
  • 内存:无额外分配,但多字节字符可能重复检查

对比其他函数

函数/方法性能适用场景
strings.LastIndexAny中等通用字符集匹配
bytes.LastIndexAny更快(约15%~30%)处理 []byte 数据
strings.LastIndex更快(单子串)需匹配固定子串而非字符集时
正则表达式 [abc]$慢(编译开销)复杂模式

9. 总结

特性说明

  • 核心价值:轻量级、无依赖、兼容性强,适合简单字符集匹配
  • 局限性:返回字节位置而非字符位置,对多字节字符需谨慎

对比总结表

维度LastIndexAny替代方案
易用性★★★★★(直接调用)★★(需类型转换或复杂处理)
性能★★★(中等)★★★★(如 bytes 优化)
Unicode 安全★★(字节级但能匹配)★★★★(uft8 包)
适用场景快速字符集检查高性能/复杂逻辑

最终建议

  • 优先使用:检查分隔符、快速验证字符存在性(如 ".,;!?")
  • 避免使用:需精确字符位置或处理超长文本(>1MB)
  • 替代方案:
    • 高频调用:bytes.LastIndexAny([]byte(s), chars)
    • Unicode 安全:手动遍历 rune(for i, r := range s)

相关文章:

strings.LastIndexAny 使用详解

目录 1. 官方包 2. 支持版本 3. 官方说明 4. 作用 5. 实现原理 6. 推荐使用场景和不推荐使用场景 推荐场景 不推荐场景 7. 使用场景示例 示例1:官方示例 示例2:日志清洗(去除末尾的乱码或非法字符) 8. 性能对比 性能…...

大型商场运营新变革:AcrelCloud - 3200 预付费系统应用全解析

一、方案概述 在现代商业运营和物业管理中,大型商场、商业小区以及大集团和大物业面临着复杂的费用收取和管理难题。安科瑞的 AcrelCloud - 3200 远程预付费管控云平台,借助先进的预付费电表等设备,为解决这些问题提供了高效的一体化解决方案…...

鸿蒙开发07-interface

在 ArkTS(HarmonyOS Ability Runtime TypeScript)中,interface(接口)是一种强大的类型工具,它主要用于定义对象的结构,为对象的属性和方法提供类型约束,帮助开发者编写更加规范、可维…...

Java从入门到“放弃”(精通)之旅——方法的使用⑤

Java从入门到“放弃”(精通)之旅🚀——方法的使用⑤ 📖引言: 在编程领域,代码如同精密的齿轮相互咬合驱动程序运转。随着项目规模渐长,重复的代码片段如同冗余的齿轮,不仅增加负重…...

5 C 程序全流程解析:编写、预处理、编译、汇编、链接、运行与 GCC 指令详解

1 C 程序运行机制流程概述 通过以上步骤,我们可以将一个 C 语言源代码文件逐步转换为一个可执行的二进制程序。这一过程涉及多个关键工具和步骤,每一步都承担着特定的任务,发挥着独特的作用。深入理解这些步骤,不仅有助于我们更好…...

leetcode:1351. 统计有序矩阵中的负数(python3解法)

难度:简单 给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非严格递减顺序排列。 请你统计并返回 grid 中 负数 的数目。 示例 1: 输入:grid [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]] 输…...

hive数仓要点总结

1.OLTP和OLAP区别 OLTP(On-Line Transaction Processing)即联机事务处理,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用…...

LeetCode[541]反转字符串Ⅱ

思路: 题目给我们加了几个规则,剩余长度小于2k,大于等于k就反转k个,小于k就全部反转,我们按照这个逻辑来就行。 第一就是大于等于k就反转k个,我们for循环肯定是i2k了,接下来就是判断是否大于等于…...

瑞幸微RK系列平台的YOLO部署(上篇)

🎇环境配置 🎉前言 部署的第一步是对环境的配置,不同的平台的平台需要依赖的环境不同,之前在英伟达的Jetson系列部署过,其主要是需要配置CUDA和CUDNN的环境,需要加速推理的话可能还需要TensorRT的环境。 …...

HarmonyOS:页面滚动时标题悬浮、背景渐变

一、需求场景 进入到app首页或者分页列表首页时,随着页面滚动,分类tab要求固定悬浮在顶部。进入到app首页、者分页列表首页、商品详情页时,页面滚动时,顶部导航栏(菜单、标题)背景渐变。 二、相关技术知识点…...

无人设备遥控器之安全防护与预警篇

无人设备遥控器的安全防护与预警是保障无人机、无人船、无人车等无人系统安全运行的关键环节。随着无人设备在农业、测绘、物流、安防等领域的广泛应用,其遥控器的安全性与可靠性显得尤为重要。 一、安全防护 1. 物理安全防护 外壳防护:采用防水、防尘…...

win10win11启用组策略编辑器

今天发现家庭版的win11系统没有组策略编辑器, 桌面新建txt文件,打开 编写以下脚本: echo off pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >Li…...

谷歌浏览器的开发者模式如何开启及安装教程

在谷歌浏览器(Google Chrome)中开启开发者模式并安装扩展程序(如未上架商店的插件或自定义扩展)的步骤如下: 一、开启开发者模式 打开扩展管理页面 在浏览器地址栏输入:chrome://extensions/ 或通过菜单进入…...

WebRTC实时通话EasyRTC嵌入式音视频通信SDK,构建智慧医疗远程会诊高效方案

一、方案背景 当前医疗领域,医疗资源分布不均问题尤为突出,大城市和发达地区优质医疗资源集中,偏远地区医疗设施陈旧、人才稀缺,患者难以获得高质量的医疗服务,制约医疗事业均衡发展。 EasyRTC技术基于WebRTC等先进技…...

C++性能优化实战:从瓶颈定位到高并发架构重构(第一章)

在高并发编程的世界中,性能瓶颈往往潜伏在代码的深处,悄无声息地吞噬着系统的吞吐量。想象一下,你正在开发一个游戏服务器,需要在每毫秒内为数千名玩家分配和释放内存,任何微小的延迟都可能导致玩家体验的崩塌。你是否曾遇到过这样的困惑:增加了线程数,期待性能翻倍,结…...

Terraform 迷思:当优雅的模块 terraform-aws-eks 与现实碰撞

大家好,今天想和大家聊聊一个可能很多技术人都经历过的场景——面对看似完美的工具或代码库,却陷入意想不到的困境,甚至开始有点怀疑人生的时刻。 启程:雄心勃勃的 EKS 模块优化 故事的开端往往充满希望。就像我今天&#xff0…...

路由器端口映射的意思、使用场景、及内网ip让公网访问常见问题和解决方法

一、端口映射是什么意思 端口映射是将内网主机的IP地址端口映射到公网中,内部机器提供相应的互联网服务。当异地用户访问该这个端口时,会自动将请求映射到对应局域网内部的机器上。 二、端口映射常见使用场景 1,远程访问需求。当有…...

【MySQL 数据库】增删查改操作CRUD(下)

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 聚合函数 1.1 常见聚合函数 1.1.1 COUNT 1.1.2 SUM 1.1.3 AVG 1.1.4 MAX 2. Group by 分组 2.1 分组示例 3. having 语句 3.1 having 过滤结果 3…...

Android 日志输出模块

Android 日志输出模块 本文主要记录下封装的日志输出模块. 1: 主要功能 日志模块初始化,并设置日志级别支持将日志写入文件日志文件单个限制200M,按天记录到指定文件,文件达到阈值后,记录新的日志文件.支持导出日志文件zip. 2: 具体实现 日志整体初始化使用静态内部类的方式…...

群辉搭建静态网站

写在前面,本文章主要是记录自己搭建过程以备后来需要时温习下! 1.安装并打开web station 2. 2.打开 File Station 找到web文件夹 把静态导航网站的代码下载下来,并上传到上面 web 文件夹下 3. 在Web Station 套件里面,在网页服…...

51单片机波特率与溢出率的关系

1. 波特率与溢出率的基本关系 波特率(Baud Rate)表示串口通信中每秒传输的位数(bps),而溢出率是定时器每秒溢出的次数。在51单片机中,波特率通常通过定时器的溢出率来生成。 公式关系: 波特率=溢出率/​分频系数 其中,分频系数与定时器的工作模…...

数据库原理及应用mysql版陈业斌实验三

🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 实验三多表查询 1.实验数据如下 student 表(学生表&#…...

Python 二分查找(bisect):排序数据的高效检索

二分查找:排序数据的高效检索 第二天清晨,李明早早来到了图书馆。今天他的研究目标是bisect模块,特别是其中的bisect_left和bisect_right函数。这些函数实现了二分查找算法,用于在已排序的序列中高效地查找元素或确定插入位置。 …...

ClickHouse

ClickHouse说明 ClickHouse是一种高性能、分布式的开源列式数据库管理系统(DBMS),专门用于在线分析处理(OLAP)工作负载。是俄罗斯的 Yandex 公司于 2016 年开源的列式存储数据库,使用 C 语言编写。ClickHou…...

【Linux生成SSH秘钥实现远程连接】Linux生成SSH秘钥对与修改服务配置文件实现无密码远程连接

文章目录 前言1. Linux 生成SSH秘钥对2. 修改SSH服务配置文件3. 客户端秘钥文件设置4. 本地SSH私钥连接测试5. Linux安装Cpolar工具6. 配置SSHTCP公网地址7. 远程SSH私钥连接测试8. 固定SSH公网地址9. 固定SSH地址测试 前言 在数字化江湖中,企业对各种技术的需求就…...

中间件--ClickHouse-4--向量化执行(什么是向量?为什么向量化执行的更快?)

1、向量(Vector)的概念 (1)、向量的定义 向量:在计算机科学中,向量是一组同类型数据的有序集合,例如一个包含多个数值的数组。在数据库中,向量通常指批量数据(如一列数…...

conda导出环境以及安装环境

1. 导出环境 1.1导出完整的环境配置(包含精确版本和平台信息): conda env export > /path/to/your/directory/environment.yml1.2 导出不含平台信息的配置(更适合跨平台共享): conda env export --no…...

Mysql数据库基本操作-DML

有基础的可以直接看总结里面的思维导图 简单来说就是增删改 一、Mysql数据库基本操作-DML-insert-数据插入 如果写上列和值,那么相应的列要对应相应的值,而且列的类型要和值的类型相同 格式1:insert into 表(列名) v…...

html:文件上传-一次性可上传多个文件,将文件展示到页面(可删除

一、原始上传样式 1、效果 2、完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" cont…...

计算机网络(第四章)

网络层 一、网络层提供的两种服务 虚电路 &#xff1a;虚电路是一种在通信开始之前建立连接的方式。它类似于电话通话&#xff0c;双方在通话前要建立连接&#xff1b;数据报 &#xff1a;数据报是一种无连接的通信方式。每个数据包&#xff08;数据报&#xff09;独立地发送…...

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口连接PHP

博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…...

Java学习——day30(Lambda表达式与 StreamAPI)

文章目录 1. Lambda 表达式1.1 概述1.2 应用场景1.3 示例代码 2. Stream API2.1 概述2.2 基本组成2.3 示例代码 3.练习3.1 .练习初级&#xff1a;3.2 中级&#xff1a;3.3 高级&#xff1a; 4.总结与应用4.1 Lambda 表达式4.2 Stream API 1. Lambda 表达式 1.1 概述 定义&…...

mysql no space left on device

文章目录 1. 查看磁盘使用情况2. 清理 /tmp 目录3. 调整 MySQL 临时文件目录4. 增加磁盘空间5. 优化数据库操作 我在执行 MySQL 的 UPDATE 语句时遇到 error writing file /tmp/*** no space left on device 错误&#xff0c;这表明 MySQL 临时文件存储目录 /tmp 空间不足。以下…...

异步编程——微信小程序

1. 前言 引用来自&#xff1a;微信小程序开发中的多线程处理与异步编程_微信小程序 多线程-CSDN博客 微信小程序是基于JavaScript开发的&#xff0c;与浏览器JavaScript不同&#xff0c;小程序运行在WebView内部&#xff0c;没有多线程的概念。小程序的 JavaScript 是单线程的…...

聊透多线程编程-线程池-8.C# 线程互斥实现方式

目录 1. 锁机制 (Locking Mechanisms) (1) lock 关键字 (2) Monitor 类 2. 跨进程互斥机制 3. 信号量机制 (1) Semaphore 和 SemaphoreSlim 4. 读写锁机制 (1) ReaderWriterLockSlim 5. 原子操作机制 (1) Interlocked 类 6. 自旋锁机制 (1) SpinLock 线程互斥是一种…...

渗透测试学习-概述

1.渗透测试 渗透测试( Penetration Testing &#xff09;是指受信任的第三方通过模拟黑客的攻击技术与手段对目标网络、系统进行攻击测试&#xff0c;发现目标的安全隐患并给出安全加固建议的一种安全测试与评估方法。 具体来讲&#xff0c;渗透人员在不同的位置&#xff08;…...

一键解锁Landsat 9地表温度计算!ENVI与ArcGIS Pro全流程详解(无需NASA大气校正)

为什么选择Landsat 9的L2SP数据&#xff1f; 之前&#xff1a;《ArcGIS与ENVI——基于landsat与Modis影像的遥感技术的生态环境质量评价》&#xff0c;基于Landsat前期的产品计算温度反演数据需要一系列复杂的步骤。 现在&#xff1a; Landsat 8-9的Collection 2 Level-2&…...

线代第七课:范德蒙德压缩

比如&#xff1a; 解析&#xff1a; 观看笔记来源&#xff1a; 《线性代数》教学视频 宋浩老师&#xff08;2024年更新&#xff09;...

Spark-SQL(一)

Spark SQL 概述 Spark SQL是Apache Spark用于处理结构化数据的模块 特点 1 易整合。无缝的整合了 SQL 查询和 Spark 编程 2 统一的数据访问。使用相同的方式连接不同的数据源 3 兼容 Hive。在已有的仓库上直接运行 SQL 或者 HQL 4 标准数据连接。通过 JDBC 或者 ODBC 来连…...

(自用)window防火墙关闭

自己老师忘了怎么关防火墙&#xff0c;导致每次都要重新找一遍&#xff0c;再下软件&#xff0c;所以写这篇 把这个地方打开可以看到被隔离的软件&#xff0c;然后点击还原即可使用了...

楼宇自控为建筑带来生机,具体表现在哪些方面?

在现代建筑领域&#xff0c;楼宇自控系统宛如一股清新的春风&#xff0c;为建筑赋予了蓬勃的生机与活力&#xff0c;从根本上改变了传统建筑的运行模式&#xff0c;使其朝着高效、智能、舒适的方向大步迈进。那么&#xff0c;楼宇自控究竟在哪些方面为建筑带来了如此显著的变化…...

asp.net Kestrel 和iis区别

Kestrel 和 IIS 都是用于托管 Web 应用程序的服务器&#xff0c;不过它们在多个方面存在显著差异&#xff0c;下面为你详细分析&#xff1a; 1. 所属平台与跨平台能力 Kestrel&#xff1a;是.NET Core 及后续版本的一部分&#xff0c;具备跨平台特性&#xff0c;可在 Windows…...

[原创](Modern C++)现代C++的关键性概念: 优雅地使用现代for循环语句

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...

【第42节】windows双机调试环境搭建和SEH原理剖析

目录 一、windows双机调试环境 1.1 双机调试是什么 1.2 准备工作 1.3 配置步骤 1.3.1 安装 VirtualKD 1.3.2 将target文件夹拷贝到虚拟机 1.3.3 在主机上使用vmmon64.exe监控虚拟机 二、SEH 原理剖析 2.1 TEB 与 FS 概述 2.2 手工注册 SEH 一、windows双机调试环境 …...

一文读懂WPF系列之控件模版数据模板

WPF控件模版数据模板 控件模板&#xff08;ControlTemplate&#xff09;定义方式内联定义&#xff08;直接写在ListBox中&#xff09;资源字典中定义定义方式区别 TemplateBinding 用法对比普通Binding的区别常见误区何时使用 数据模板&#xff08;DataTemplate&#xff09;定义…...

Java设计模式实战:装饰模式在星巴克咖啡系统中的应用

一、装饰模式简介 装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种模式创建了一个装饰类&#xff0c;用来包装原有的类&#xff0c;并在保持类方法签名完整性的前…...

L2TP实验(无图后补)

拓扑图 一、搭建拓扑并配置基础 IP 地址 设备选型与拓扑搭建&#xff1a;在 eNSP 中&#xff0c;拖入所需设备&#xff0c;包括 LAC&#xff08;L2TP Access Concentrator&#xff0c;L2TP 接入集中器 &#xff09;、LNS&#xff08;L2TP Network Server&#xff0c;L2TP 网络服…...

AT_abc398_e [ABC398E] Tree Game 题解

题目传送门 题目大意 题目描述 本题是一道交互题&#xff08;你的程序需要通过输入输出与评测系统进行交互&#xff09;。 给定一棵包含 N N N 个顶点的树 G G G&#xff0c;顶点编号为 1 1 1 至 N N N。第 i i i 条边连接顶点 U i U_i Ui​ 和 V i V_i Vi​。 你和…...

使用SVM对心脏数据是否患病进行分类预测

作者简介 杜嘉宝&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2024级研究生 研究方向&#xff1a;变压器故障预警与检测 电子邮件&#xff1a;djb857497378gmail.com 王子谦&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2024级研究生&a…...

作业帮前端面试题及参考答案 (100道面试题-上)

HTML5 的优势是什么? HTML5 作为 HTML 语言的新一代标准,具有众多显著优势,为现代网页开发带来了诸多便利与革新。 在语义化方面,HTML5 引入了大量具有明确语义的标签,如<header>、<nav>、<article>、<section>、<aside>、<footer>等…...