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

深入掌握 Python 切片操作:解锁数据处理的高效密码

在 Python 的编程宇宙中,每一个开发者都在不断探索各种强大且实用的工具,以提升代码的效率与灵活性。其中,切片操作作为 Python 数据处理领域的核心技能之一,就像是一把精巧的瑞士军刀,无论是处理文本信息、分析数据列表,还是对复杂数据结构进行加工,它都能大显身手。尽管切片操作的基本语法并不晦涩,但要真正做到运用自如、避免潜在的错误,就需要我们深入挖掘其背后的逻辑与细节。本文将全方位、多层次地解析 Python 切片操作,帮助你彻底理解并熟练运用这一重要技能。

一、Python 编程生态与切片操作的重要地位

Python 凭借其简洁的语法、丰富的库以及强大的跨平台能力,在数据科学、人工智能、网络开发、自动化脚本等众多领域中占据了举足轻重的地位。从数据分析中对大量数据集的筛选处理,到 Web 开发里对字符串的截取与拼接;从机器学习中对数据样本的分割提取,到自动化脚本中对文件内容的快速定位与处理,几乎在每一个 Python 应用场景中,我们都能看到切片操作的身影。对于初学者而言,掌握切片操作是从基础迈向进阶的重要一步;对于有经验的开发者来说,深入理解切片操作的细节,能够让他们编写出更加简洁、高效且优雅的代码,从而在复杂的项目中提升开发效率,减少不必要的代码冗余与潜在错误。

二、Python 可切片对象的索引方式

Python 可切片对象的索引方式包括:正索引和负索引两部分。如下图所示,以 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 为例:

正索引从左向右依次递增,起始索引为 0,这是我们最为熟悉的常规索引方式,它适用于大多数从起始位置开始的有序数据访问场景。而负索引则从右向左依次递减,起始索引为 - 1,这种独特的索引设计为我们从数据的末尾进行操作提供了便利,尤其在处理不确定数据长度,但需要获取末尾部分数据的情况下,负索引显得格外高效。两种索引方式相辅相成,共同构建了 Python 灵活多样的索引体系,为切片操作提供了坚实的基础。

三、Python 切片操作的一般方式

一个完整的切片表达式包含两个 “:”,用于分隔三个参数(start_index、end_index、step),当只有一个 “:” 时,默认第三个参数 step=1。

切片操作基本表达式:object [start_index : end_index : step]

step:正负数均可,其绝对值大小决定了切取数据时的 “步长”,而正负号决定了 “切取方向”,正表示 “从左往右” 取值,负表示 “从右往左” 取值。当 step 省略时,默认为 1,即从左往右以增量 1 取值。“切取方向非常重要!”“切取方向非常重要!”“切取方向非常重要!”,重要的事情说三遍!

start_index:表示起始索引(包含该索引本身);该参数省略时,表示从对象 “端点” 开始取值,至于是从 “起点” 还是从 “终点” 开始,则由 step 参数的正负决定,step 为正从 “起点” 开始,为负从 “终点” 开始。

end_index:表示终止索引(不包含该索引本身);该参数省略时,表示一直取到数据” 端点 “,至于是到” 起点 “还是到” 终点 “,同样由 step 参数的正负决定,step 为正时直到” 终点 “,为负时直到” 起点 “。

四、Python 切片操作详细例子

以下示例均以列表 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 为例:

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

切取单个值

print(a[0])
print(a[-4])

切取完整对象

print(a[:]) # 从左往右
print(a[::]) # 从左往右
print(a[::-1]) # 从右往左``
## start_index 和 end_index 全为正(+)索引的情况```python
print(a[1:6]) # step=1,从左往右取值,start_index=1到end_index=6同样表示从左往右取值。
print(a[1:6:-1]) # step=-1,决定了从右往左取值,而start_index=1到end_index=6决定了从左往右取值,两者矛盾。
print(a[6:1]) # step=1,决定了从左往右取值,而start_index=6到end_index=1决定了从右往左取值,两者矛盾。
print(a[:6]) # step=1,从左往右取值,从“起点”开始一直取到end_index=6。
print(a[:6:-1]) # step=-1,从右往左取值,从“终点”开始一直取到end_index=6。
print(a[6:]) # step=1,从左往右取值,从start_index=6开始,一直取到“终点”。
print(a[6::-1]) # step=-1,从右往左取值,从start_index=6开始,一直取到“起点”。

start_index 和 end_index 全为负(-)索引的情况

print(a[-1:-6]) # step=1,从左往右取值,而start_index=-1到end_index=-6决定了从右往左取值,两者矛盾。
print(a[-1:-6:-1]) # step=-1,从右往左取值,start_index=-1到end_index=-6同样是从右往左取值。
print(a[-6:-1]) # step=1,从左往右取值,而start_index=-6到end_index=-1同样是从左往右取值。
print(a[:-6]) # step=1,从左往右取值,从“起点”开始一直取到end_index=-6。
print(a[:-6:-1]) # step=-1,从右往左取值,从“终点”开始一直取到end_index=-6。
print(a[-6:]) # step=1,从左往右取值,从start_index=-6开始,一直取到“终点”。
print(a[-6::-1]) # step=-1,从右往左取值,从start_index=-6开始,一直取到“起点”。

start_index 和 end_index 正(+)负(-)混合索引的情况

print(a[1:-6]) # start_index=1在end_index=-6的左边,因此从左往右取值,而step=1同样决定了从左往右取值。
print(a[1:-6:-1]) # start_index=1在end_index=-6的左边,因此从左往右取值,但step=-则决定了从右往左取值,两者矛盾。
print(a[-1:6]) # start_index=-1在end_index=6的右边,因此从右往左取值,但step=1则决定了从左往右取值,两者矛盾。
print(a[-1:6:-1]) # start_index=-1在end_index=6的右边,因此从右往左取值,而step=-1同样决定了从右往左取值。

连续切片操作

print(a[:8][2:5][-1:])

相当于:

a[:8]=[0, 1, 2, 3, 4, 5, 6, 7]
a[:8][2:5]= [2, 3, 4]
a[:8][2:5][-1:] = 4

理论上可无限次连续切片操作,只要上一次返回的依然是非空可切片对象。

切片操作的三个参数可以用表达式

print(a[2+1:3*2:7%3]) # 即:a[2+1:3*2:7%3] = a[3:6:1]

其他对象的切片操作

前面的切片操作说明都以 list 为例进行说明,但实际上可进行的切片操作的数据类型还有很多,包括元组、字符串等等。

print((0, 1, 2, 3, 4, 5)[:3]) # 元组的切片操作
print('ABCDEFG'[::2]) # 字符串的切片操作
for i in range(1,100)[2::3][-10:]: # 利用range函数生成1-99的整数,然后取3的倍数,再取最后十个。print(i, end=' ')

五、Python 常用切片操作

以列表:a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 为说明对象

取偶数位置

b = a[::2]
print(b)

取奇数位置

b = a[1::2]
print(b)

拷贝整个对象

b = a[:] # ★★★★★
print(b) 
print(id(a)) 
print(id(b)) b = a.copy()
print(b) 
print(id(a)) 
print(id(b))

需要注意的是:[:] 和.copy () 都属于 “浅拷贝”,只拷贝最外层元素,内层嵌套元素则通过引用,而不是独立分配内存。

a = [1,2,['A','B']]
print('a={}'.format(a))b = a[:]
b[0] = 9 # 修改b的最外层元素,将1变成9
b[2][0] = 'D' # 修改b的内嵌层元素
print('a={}'.format(a)) 
print('b={}'.format(b)) 
print('id(a)={}'.format(id(a)))
print('id(b)={}'.format(id(b)))

修改单个元素

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[3] = ['A','B']
print(a)

在某个位置插入元素

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[3:3] = ['A','B','C']
print(a)
a[0:0] = ['A','B']
print(a)

替换一部分元素

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[3:6] = ['A','B']
print(a)

思考总结

刚开始学 Python 时,我一直没把切片操作当回事,觉得不就是用冒号分割几个数字吗?直到在处理一个项目数据时,因为切片参数设置错误,导致程序输出一堆莫名其妙的结果,Debug 了好久才发现问题,这才意识到切片操作远比表面看起来复杂。

Python 的切片操作语法简单,object[start🔚step],但这三个参数组合起来变化无穷。最容易出错的就是step参数,正负数决定取值方向。我有次想倒序输出列表,写成my_list[1:5:-1],结果啥都没输出。后来才明白,起始索引 1 到终止索引 5 是从左往右,而step=-1要求从右往左,方向矛盾了,自然取不到数据。那次经历让我深刻记住:切片的方向必须保持一致,否则就是竹篮打水一场空。

还有一次做数据预处理,需要每隔 3 个元素取一个值。用data[::3]轻松搞定,那一刻真切感受到切片的强大。而且切片不仅能用在列表上,字符串、元组也同样适用。处理文本时,想截取特定位置的字符,切片比循环方便太多。比如从 URL 里提取域名,url[7:url.find(‘/’)]一行代码就能干净利落地解决问题。在处理日志文件时,我想提取最近 10 行数据,用负索引log_lines[-10:]直接一步到位,要是用正索引还得先统计总行数,麻烦不少。

不过切片的浅拷贝特性也让我栽过跟头。用b = a[:]复制列表,以为完全独立了,修改b里的嵌套列表元素,结果a也跟着变了。这才知道,[:]和.copy()只是浅拷贝,只复制最外层元素,嵌套结构还是共享引用。后来再遇到需要完全复制的情况,我都会用copy.deepcopy(),虽然性能上会有一点损耗,但至少不会出现数据意外修改的情况。

除了常规用法,切片还能玩出很多花样。比如用切片实现列表元素的插入和替换,my_list[3:3] = [‘A’, ‘B’, ‘C’]能在索引 3 的位置插入新元素,my_list[3:6] = [‘X’, ‘Y’]则可以替换掉指定范围的元素,这种操作比用insert()和pop()组合起来简洁多了。还有连续切片,a[:8][2:5][-1:]这种 “俄罗斯套娃” 式的写法,能层层筛选数据,虽然可读性差一些,但在某些特定场景下非常高效。

现在再看切片操作,就像解锁了数据处理的 “隐藏技能”。从简单的数据提取,到复杂的数据结构修改,它都能派上用场。但每次用的时候,我都会多检查几遍参数,毕竟方向错了、索引越界了,结果就差之千里。这看似简单的语法,值得反复琢磨、灵活运用。随着项目经验越来越多,我发现切片用得好不好,直接影响代码的简洁性和效率。掌握了切片,就像给 Python 编程装上了加速器,能让很多操作事半功倍。

相关文章:

深入掌握 Python 切片操作:解锁数据处理的高效密码

在 Python 的编程宇宙中,每一个开发者都在不断探索各种强大且实用的工具,以提升代码的效率与灵活性。其中,切片操作作为 Python 数据处理领域的核心技能之一,就像是一把精巧的瑞士军刀,无论是处理文本信息、分析数据列…...

基于 Kubernetes 部署容器平台kubesphere

一 前言: k8s 大家都已经非常熟悉了,网上流传着非常多的搭建部署文档,有kubeadmin的有二进制的,还有基于第三方的部署工具的,反正是各种部署方法都有,k8s部署技术热门可见一斑。但是不管哪种部署都需要了解…...

lua 作为嵌入式设备的配置语言

从lua的脚本中获取数据 lua中栈的索引 3 | -1 2 | -2 1 | -3 可以在lua的解释器中加入自己自定的一些功能,其实没啥必要,就是为了可以练习下lua...

NVMe简介2

共分2部分,这里是第2部分。 NVMe数据结构 NVMe协议中规定每个提交命令的大小为64字节,完成命令大小为16字节,NVMe命令分为Admin和IO两类,NVMe的数据块组织方式有PRP和SGL两种。提交命令的格式如图5所示。 图5 提交命令数据格 N…...

具身智能梳理以及展望

具身智能相关技术与发展历程 具身智能概念 具身智能指具有自身体验、改变物理世界的智能。 过去 5.4 亿年,地球所有生物智能由身体作用于世界的行为塑造。 1950 年,图灵在《Computing Machinery and Intelligence》论文中首次提出具身智能&#xff0…...

【Redis实战篇】秒杀优化

1. 秒杀优化-异步秒杀思路 我们来回顾一下下单流程 当用户发起请求,此时会请求nginx,nginx会访问到tomcat,而tomcat中的程序,会进行串行操作,分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足够 3、查询订单…...

【​​HTTPS基础概念与原理​】TLS握手过程详解​​

以下是 TLS握手过程的详细拆解,涵盖客户端与服务器之间的关键交互步骤,包括ClientHello、ServerHello、证书验证、密钥交换等核心阶段,并对比TLS 1.2与TLS 1.3的差异: 一、TLS握手的核心目标 协商协议版本:确定双方支…...

libmemcached库api接口讲解三

前言:讲解一下如何删除数据 🗑️ libmemcached 删除键操作教程:memcached_delete() / memcached_delete_by_key() 📘 1. 函数作用 用于从 Memcached 中删除指定的 key,包括: memcached_delete()&#xff…...

注解和 XML 两种方式有什么区别?

注解和 XML 是两种常见的配置方式(尤其在 Java 开发中,如 Spring 框架),它们的主要区别体现在配置方式、代码耦合性、可读性、维护性等方面。以下是两者的对比: 1. 配置方式 注解(Annotation) 在…...

[论文阅读]Formalizing and Benchmarking Prompt Injection Attacks and Defenses

Formalizing and Benchmarking Prompt Injection Attacks and Defenses Formalizing and Benchmarking Prompt Injection Attacks and Defenses | USENIX 33rd USENIX Security Symposium (USENIX Security 24) 提出了一个框架来形式化提示注入攻击,对提示注入攻击…...

分布式2(限流算法、分布式一致性算法、Zookeeper )

目录 限流算法 固定窗口计数器(Fixed Window Counter) 滑动窗口计数器(Sliding Window Counter) 漏桶算法(Leaky Bucket) 令牌桶算法(Token Bucket) 令牌桶与漏桶的对比 分布式…...

阿里端到端多模态语音对话开源模型论文速读:Qwen2.5-Omni

Qwen2.5-Omni 技术报告 1. 介绍 Qwen2.5-Omni 技术报告介绍了一个先进的端到端多模态模型 Qwen2.5-Omni,该模型能够感知包括文本、图像、音频和视频在内的多种模态,并能同时以流式方式生成文本和自然语音响应。该模型解决了统一不同理解模态、管理不同…...

React 第四十节 React Router 中 useBeforeUnload的使用详细解析及案例说明

useBeforeUnload 是 React Router 提供的一个自定义钩子,用于在用户尝试关闭页面、刷新页面或导航到外部网站时触发浏览器原生的确认提示。 它的核心用途是防止用户意外离开页面导致数据丢失(例如未保存的表单内容)。 一、useBeforeUnload 核…...

c++STL——哈希表封装:实现高效unordered_map与unordered_set

文章目录 用哈希表封装unordered_map和unordered_set改进底层框架迭代器实现实现思路迭代器框架迭代器重载operator哈希表中获取迭代器位置 哈希表的默认成员函数修改后的哈希表的代码封装至上层容器 用哈希表封装unordered_map和unordered_set 在前面我们已经学过如何实现哈希…...

通过迁移学习改进深度学习模型

在 ArcGIS Living Atlas of the World (Browse | ArcGIS Living Atlas of the World)中,可以下载能够分类或检测影像中要素的预训练深度学习模型。 深度学习模型在与用于训练模型的原始影像十分相似的影像上运行效果最好。 如果您所拥有的影像…...

SpringAI更新:废弃tools方法、正式支持DeepSeek!

AI 技术发展很快,同样 AI 配套的相关技术发展也很快。这不今天刚打开 Spring AI 的官网就发现它又又又又更新了,而这次更新距离上次更新 M7 版本才不过半个月的时间,那这次 Spring AI 给我们带来了哪些惊喜呢?一起来看。 重点升级…...

输入一个正整数,将其各位数字倒序输出(如输入123,输出321)

之前的解法: 这种方法仅支持三位数。 学了while之后,可以利用循环解决。 这种方法动态构建逆序数,支持任意长度的正整数。...

react+html2canvas+jspdf将页面导出pdf

主要使用html2canvasjspdf 1.将前端页面导出为pdf 2.处理导出后图表的截断问题 export default function AIReport() {const handleExport async () > {try {// 需要导出的内容idconst element document.querySelector(#AI-REPORT-CONTAINER);if (!element) {message.err…...

Spring Boot 自动装配技术方案书

Spring Boot 自动装配技术方案书(增强版) 一、Spring Boot 自动装配体系全景解析 1.1 核心设计理念 “约定优于配置”:通过合理的默认配置减少开发工作量“即插即用”:通过标准化扩展机制实现组件自动集成“分层解耦”:业务代码与基础设施分离,通过SPI机制实现扩展二、组…...

面试--HTML

1.src和href的区别 总结来说&#xff1a; <font style"color:rgb(238, 39, 70);background-color:rgb(249, 241, 219);">src</font>用于替换当前元素&#xff0c;指向的资源会嵌入到文档中&#xff0c;例如脚本、图像、框架等。<font style"co…...

(3)python开发经验

文章目录 1 sender返回对象找不到函数2 获取绝对路径3 指定翻译字符 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;Qt开发 &#x1f448;&#x1f449;python开发 &#x1f448; 1 sender返回对象找不到函数 在PySide6中多个信号绑定一个槽函数&#xff0c;使…...

机密虚拟机的威胁模型

本文将介绍近年兴起的机密虚拟机&#xff08;Confidential Virtual Machine&#xff09;技术所旨在抵御的威胁模型&#xff0c;主要关注内存机密性&#xff08;confidentiality&#xff09;和内存完整性&#xff08;integrity&#xff09;两个方面。在解释该威胁可能造成的问题…...

LLM笔记(一)基本概念

LLMs from scratch Developing an LLM: Building, Training, Finetuning LLM 的基本概念与定义: LLM是深度神经网络模型&#xff0c;能够理解、生成和解释类似人类的语言。“大型”指的是模型参数数量巨大以及训练数据集的规模庞大。LLM通常基于Transformer架构&#xff0c;并通…...

嵌入式(c语言篇)Day9

嵌入式Day9 C语言字符串标准库函数笔记 一、概述 C语言提供了一系列字符串标准库函数用于处理字符串&#xff0c;使用这些函数需要包含头文件 <string.h>。主要函数包括求字符串长度、字符串复制、字符串拼接和字符串比较等。我们不仅要理解这些函数的行为&#xff0c…...

006-nlohmann/json 结构转换-C++开源库108杰

绝大多数情况下&#xff0c;程序和外部交换的数据&#xff0c;都是结构化的数据。 1. 手工实现——必须掌握的基本功 在的业务类型的同一名字空间下&#xff0c;实现 from_json 和 to_json 两个自由函数&#xff08;必要时&#xff0c;也可定义为类型的友元函数&#xff09;&a…...

b站视频如何下载到电脑——Best Video下载器

你是不是也经常在B站刷到超赞的视频&#xff0c;想保存到电脑慢慢看&#xff0c;却发现下载不了&#xff1f;别急&#xff0c;今天教你一个超简单的方法&#xff0c;轻松下载B站视频到电脑&#xff0c;高清画质&#xff0c;随时随地想看就看&#xff01; 为什么需要下载B站视频…...

【行为型之模板方法模式】游戏开发实战——Unity标准化流程与可扩展架构的核心实现

文章目录 &#x1f9e9; 模板方法模式&#xff08;Template Method Pattern&#xff09;深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码&#xff08;关卡流程系统&#xff09;1. 定义抽象模板类2. 实现具体子类3. 客户端使用 四、模式进阶技巧1. 钩子方法&am…...

每日算法-250514

每日算法学习记录 (2024-05-14) 今天记录三道 LeetCode 算法题的解题思路和代码。 1. 两数之和 题目截图: 解题思路 这道题要求我们从一个整数数组中找出两个数&#xff0c;使它们的和等于一个给定的目标值 target&#xff0c;并返回这两个数的下标。 核心思路是使用 哈希…...

信息安全入门基础知识

信息安全是保护信息系统和数据免受未经授权的访问、使用、披露、中断、修改或破坏的实践。对于个人和组织来说,了解信息安全的基础知识至关重要。 1. CIA三元组 信息安全的三个主要目标,也称为CIA三元组: 机密性(Confidentiality): 确保信息不被未经授权的人访问或披露完整性…...

力扣-98.验证二叉搜索树

题目描述 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 class Solutio…...

Java 框架配置自动化:告别冗长的 XML 与 YAML 文件

在 Java 开发领域&#xff0c;框架的使用极大地提升了开发效率和系统的稳定性。然而&#xff0c;传统框架配置中冗长的 XML 与 YAML 文件&#xff0c;却成为开发者的一大困扰。这些配置文件不仅书写繁琐&#xff0c;容易出现语法错误&#xff0c;而且在项目规模扩大时&#xff…...

大疆无人机自主飞行解决方案局限性及增强解决方案-AIBOX:特色行业无人机巡检解决方案

大疆无人机自主飞行解决方案局限性及增强解决方案-AIBOX&#xff1a;特色行业无人机巡检解决方案 大疆无人机是低空行业无人机最具性价比的产品&#xff0c;尤其是大疆机场3的推出&#xff0c;以及持续自身产品升级迭代&#xff0c;包括司空2、大疆智图以及大疆智运等专业软件和…...

【机器人】复现 SG-Nav 具身导航 | 零样本对象导航的 在线3D场景图提示

SG-Nav提出了一种新的零样本物体导航框架&#xff0c;用三维场景图来表示观察到的场景。 并设计了一个分层的思路链提示&#xff0c;帮助LLM通过遍历节点和边&#xff0c;根据场景上下文推理目标位置。 本文分享SG-Nav复现和模型推理的过程&#xff5e; 下面是一个查找椅子示…...

详细说说Spring的IOC机制

Spring 的 IOC&#xff08;控制反转&#xff09;是框架的核心机制&#xff0c;用于管理对象的创建和依赖注入&#xff0c;通过将控制权从应用程序代码转移到容器&#xff0c;实现组件间的解耦。以下是详细解析&#xff1a; 1. IOC 核心概念 控制反转&#xff08;Inversion of C…...

Android Activity之间跳转的原理

一、Activity跳转核心流程‌ Android Activity跳转的底层实现涉及 ‌系统服务交互‌、‌进程间通信&#xff08;IPC&#xff09;‌ 和 ‌生命周期管理‌&#xff0c;主要流程如下&#xff1a; ‌startActivity() 触发请求‌ 应用调用 startActivity() 时&#xff0c;通过 Inst…...

第二个五年计划!

下一阶段&#xff01;5年后&#xff01;33岁&#xff01;体重维持在125斤内&#xff01;腰围74&#xff01; 健康目标&#xff1a; 体检指标正常&#xff0c;结节保持较小甚至变小&#xff01; 工作目标&#xff1a; 每年至少在一次考评里拿A&#xff08;最高S&#xff0c;A我理…...

交易所功能设计的核心架构与创新实践

交易所功能设计的核心架构与创新实践 ——从用户体验到安全合规的全维度解析 一、核心功能模块&#xff1a;构建交易生态的四大支柱 1. 用户账户管理 多因子身份验证&#xff1a;集成邮箱/手机注册、谷歌验证器&#xff08;2FA&#xff09;、活体检测&#xff08;误识率<0…...

Windows10安装WSA

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、WSAOnWin10二、安装1.第一种方法2.第二种方法 总结 前言 有时候工作需要用到WSA&#xff0c;然而我们的电脑是Windows10的不能直接安装。接下来我就教你们…...

标签部件(lv_label)

一、如何创建标签部件以及设置文本&#xff1f; 知识点1&#xff1a;如何创建标签部件 lv_obj_t *label lv_label_create(parent); 知识点2&#xff1a;设置文本的3种方式 ①直接设置文本&#xff0c;存储文本的内存动态分配&#xff1a;lv_label_set_text(label,"he…...

Spring中的循环引用

循环依赖发生在两个或两个以上的bean互相持有对方&#xff0c;形成闭环。Spring框架允许循环依赖存在&#xff0c;并通过三级缓存解决大部分循环依赖问题&#xff1a; 一级缓存&#xff1a;单例池&#xff0c;缓存已完成初始化的bean对象。 二级缓存&#xff1a;缓存尚未完成生…...

技术选型不当,如何避免影响项目进展

建立选型评估机制、综合考虑业务与技术匹配度、引入技术决策审查流程、做好选型后的风险预案与替代方案准备 是避免因技术选型不当影响项目进展的关键措施。尤其要重视建立选型评估机制&#xff0c;通过全流程、数据化、多维度的评估体系&#xff0c;确保所选技术能在性能、可维…...

图表制作-基础饼图

首先登录自己的账号&#xff0c;没有账号的可以注册一个。 登录之后&#xff0c;在左侧菜单栏找到图表制作-统计图。 点击新建统计图&#xff0c;点击饼图-基础饼图。 初始会有一些演示数据&#xff0c;可以根据自己的需要进行修改。 如果嫌手动修改太麻烦&#xff0c;可以导入…...

Java 大视界 -- 基于 Java 的大数据分布式存储在工业互联网海量设备数据长期存储中的应用优化(248)

往期文章推荐&#xff1a; 《大数据新视界》和《 Java 大视界》专栏&#xff1a; Java 大视界 – Java 大数据在智能教育自适应学习路径动态调整中的应用与实践&#xff08;247&#xff09;(最新&#xff09;Java 大视界 – Java 大数据在智能安防生物特征识别系统中的多模态…...

如何恢复被勒索软件加密的服务器文件(解密与备份策略)

针对勒索软件加密文件的恢复和解密策略&#xff0c;结合当前数据安全最佳实践&#xff0c;整理应对指南如下&#xff1a; 一、文件解密与修复方法 立即隔离设备‌ 断开网络连接并禁用共享功能&#xff0c;防止病毒横向传播 通过文件后缀异常&#xff08;如.locked、.wxx&…...

Java知识框架

一、Java 基础语法 1. 基础语法 数据类型 基本类型&#xff1a;int, double, boolean, char 等 引用类型&#xff1a;String, 数组, 对象 变量与常量 final 关键字 作用域&#xff08;局部变量、成员变量&#xff09; 运算符 算术、逻辑、位运算 三元运算符 ? : 控制…...

腾讯云-人脸核身+人脸识别教程

一。产品概述 慧眼人脸核身特惠活动 腾讯云慧眼人脸核身是一组对用户身份信息真实性进行验证审核的服务套件&#xff0c;提供人脸核身、身份信息核验、银行卡要素核验和运营商类要素核验等各类实名信息认证能力&#xff0c;以解决行业内大量对用户身份信息真实性核实的需求&a…...

102. 二叉树的层序遍历递归法:深度优先搜索的巧妙应用

二叉树的层序遍历是一种经典的遍历方式&#xff0c;它要求按层级逐层访问二叉树的节点。通常我们会使用队列来实现层序遍历&#xff0c;但递归法也是一种可行且有趣的思路。本文将深入探讨递归法解决二叉树层序遍历的核心难点&#xff0c;并结合代码和模拟过程进行详细讲解。 …...

电脑内存智能监控清理,优化性能的实用软件

软件介绍 Memory cleaner是一款内存清理软件。功能很强&#xff0c;效果很不错。 Memory cleaner会在内存用量超出80%时&#xff0c;自动执行“裁剪进程工作集”“清理系统缓存”以及“用全部可能的方法清理内存”等操作&#xff0c;以此来优化电脑性能。 同时&#xff0c;我…...

Chrome浏览器实验性API computePressure的隐私保护机制如何绕过?

一、computePressure API 设计原理与隐私保护机制 1.1 API 设计目标 computePressure是W3C提出的系统状态监控API,旨在: • 提供系统资源状态的抽象指标(非精确值) • 防止通过高精度时序攻击获取用户指纹 • 平衡开发者需求与用户隐私保护 1.2 隐私保护实现方式 // 典…...

​​开放传神创始人论道AI未来|“广发证券—国信中数人工智能赛道专家交流论坛“落幕

4月25日&#xff0c;“广发证券—国信中数人工智能赛道专家交流论坛”在广发证券大厦成功举办。本次论坛由广发证券股份有限公司与北京国信中数投资管理有限公司联合主办&#xff0c;汇聚了人工智能领域的50多位企业、行业专家、专业投资机构的精英代表&#xff0c;旨在搭建产学…...