python异常机制
异常是什么?
软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是Exception,意思是例外。遇到这些例外情况,或者交异常,我们怎么让写的程序做出合理的处理,安全的退出,而不至于程序崩溃呢?
工作中,程序遇到的情况不可能完美。比如:程序要打开某个文件,这个文件肯能不存在或者文件格式不对;程序在运行着,但是内存或者硬盘可能满了等等
异常的本质
当程序出现异常,程序安全的退出、处理完后继续执行的机制
python中,引入了很多用来描述和处理异常的类,称为异常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法,下面较为完整的展示了python中内建异常类的继承层次;
我们处理一下,遇到的第一个异常
# 测试简单的0不能做除数
a = 3 / 0
python中一切都是对象,异常也采用对象的方式来处理。处理过程:
- 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给解释器
- 捕获异常:解释器得到该异常后,寻找相应的代码处理该异常
异常的解决思路
解决异常问题的态度
- 学习完异常相关知识点,知识开始对异常有些认识,不以为着你会调试任何异常;
- 异常调制,需要大量的经验作为基础。因此,大家不要再次停留,继续往后学习。碰到每个异常,都要化心思去解决而不要动不动张口问人。通过自己的女里无法解决,再去找老师同学帮组解决。
解决每一个遇到的异常,建议大家遵循如下三点:
- 不慌张,细看信息,定义错误。看清楚报的错误信息,并定位发生错误的地方
- 百度并查看十个相关帖子。将异常类信息极性百度,至少查看十个以上的相关帖子
- 以上两步仍然无法解决,找老师和同学协助解决
异常的解决的关键:定位
def a():print("run in a() start!")num = 1 / 0print("run in a() end!")def b():print("run in b() start!")a()print("run in b() end!")def c():print("run in c() start!")b()print("run in c() end!")print("step1")
c()
print("step2")
当发生异常时,解释器会报相关的错误信息,并会在控制台打印相关错误信息。我们只需要按照从上到下的顺序即可追溯(trackback)错误发生的过程,最终定位引起错误的哪一行代码。
try和except结构
try...一个except结构
try:
被监控的可能引发异常的语句块
except BaseException[as e]:
异常处理语句块
try:print("step1")a = 3 / 0print("step2")except BaseException as e:print("step3")print(e)
print("step4")
print("step5")
- try块包含着可能引发异常的代码,except块则用来捕捉和处理发生的异常
- 执行的时候,如果try块没有引发异常,则跳过except块继续执行后续代码;
- 执行的时候,如果try块中发生了一场,则跳过try块中的后续代码,跳到相应的except块中处理异常;异常处理完后,继续执行后续代码。
while True:try:x = int(input("请输入一个数字:"))print("您输入的数字是:", x)if x == 88:print("退出程序")breakexcept BaseException as e:print("异常,输入的不是数字!")print(e)
try...多个except结构
上面的结构可以捕获所有的异常,工作中也很常见。但是,从经典理论考虑,一般建议尽量捕获可能出现的多个异常(按照先子类后父类的顺序),并且针对性的写出异常处理代码,为了避免遗漏可能出现的异常,可能在最后增加BaseException。结构如下:
try:
被监控的、可能引发异常的语句块
except Exception1:
处理Exception1的语句块
except Exception2:
处理Exception2的语句块
[...]
except BaseException:
处理可能遗漏的异常的语句块
try:a=input("请输入被除数:")b=input("请输入除数:")c=float(a)/float(b)print(c)except ZeroDivisionError:print("异常:除数不能为0")
except TypeError:print("异常:除数和被除数都应该为数值类型")
except BaseException as e:print(e)print(type(e))
try...except...else结构
try...except...else结构增加了else块。如果try块中没有抛出异常,则执行else块。如果try块中抛出异常,则执行except块,不执行else块
try:a = input("请输入被除数")b = input("请输入除数:")c = float(a) / float(b)
except BaseException as e:print(e)
else:print("除的结果是:", c)
try...except...finally结构
try...except...finally结构中,finally块无论是否发生异常都会被执行;通常用来释放try块中申请的资源。
try:a = input("请输入被除数:")b = input("请输入除数:")c = float(a) / float(b)
except BaseException as e:print(e)
else:print("除的结果是:", c)
finally:print("我是finally语句,无论是否发生异常,我都会被执行!!!")
print("程序执行结束")
a只有当捕捉到,才会实例成对象,可以尝试打印print(a),会发现,它的打印结果是一串字符串,所以一定是使用了__str__的魔术方法,所以想要按照各个错误类型,去执行,就要通过a.__str__()的方法实现执行,如下图
try:# f = open('a.txt', "r")f = open("b.txt", 'r')content = f.read()print(content)
except BaseException as e:print(e)print(type(e))
finally:print("关闭文件")try:f.close()except BaseException as a:if a.__str__()=="name 'f' is not defined":print("a 没有被定义成功,不用关闭")print("继续执行其他代码")
print("程序结束")
常见异常汇总
python中的异常都是派生自BaseException类,本节我们测试和列出常见的一些异常,方便初学者掌握。
SyntaxError:语法错误
int a =3
^
SyntaxError: invalid syntax
NameError:尝试访问一个没有申请的变量
print(a)
NameError: name 'a' is not defined
ZeroDivisionError:除数为0错误(零除错误)
a=3/0
ZeroDivisionError: division by zero
ValueError:数值错误
a=float("laogao")
ValueError: could not convert string to float: 'laogao'
TypeError:类型错误
a=123+"abc"
TypeError: unsupported operand type(s) for +: 'int' and 'str'
AttributeError:访问对象不存在的属性
a=100
a.sayhi()
AttributeError: 'int' object has no attribute 'sayhi'
IndexError:索引越界异常
a=[4,5,6]
a[10]
IndexError: list index out of range
KeyError:字典的关键字不存在
a={'name':"laogao",'age':18}
a['salary']
KeyError: 'salary'
with上下文管理
finally块由于是否发生异常都会执行,通常我们释放资源的代码。其实,我们可以通过
with上下文管理,更方便的视线释放资源的操作。
with上下文管理的语法结构如下:
with context_expr [ as var]:
语句块
with上下文管理可以自动管理资源,在with代码块执行完毕后自动还原进入改代码之前的现场或上下文。不论何种原因跳出with块,不论是否有异常,总能保证资源正常释放。极大地简化了工作,怎文件操作、网络通信相关的场合非常常用。
with open("a.txt") as f:# content=f.readline() 打印一行信息# print(content)#打印多行信息使用for循环for line in f:print(line,end='')
traceback模块和生成异常日志
import tracebacktry:print("step1")num = 1 / 0
except:with open("c.log", "a") as f: # appendtraceback.print_exc(file=f)print("打印成功")
自定义异常类
程序开发中,有时候我们也需要自己定义异常类。自定义异常类一般都是运行时异常,通常继承Exception或其子类即可。命名一般以Error、Exception为后缀
自定义异常有raise语句主动抛出。
# 自定义异常类
class AgeError(Exception):def __init__(self, errorInfo):Exception.__init__(self)self.errorInfo = errorInfodef __str__(self):return str(self.errorInfo) + ",年龄错误!应该在1-150之间"if __name__ == "__main__":age = int(input("请输入一个年龄:"))if ((age < 1) or (age > 150)):raise AgeError(age)else:print("正常的年龄:", age)
Pycharm开发环境的调试(debug)
- 进行调试的核心是设置断点。
- 程序执行到断点时,暂时挂起,停止执行。就像看视频按下停止一样,可以详细观看停止处的每一个细节。
断点
程序运行到此处,暂时挂起,停止执行。我们可以详细在此时观察程序的运行情况,方便做出进一步的判断。
- 设置断点:
在行号后面单击即可增加断点,在断点上再单击即可取消断点
进入调试视图
我们通过如下三种方式都可以进入调试视图:
- 单击工具栏上的按钮
- 右键单击编辑区,点击:debug‘模块名’
- 快捷键:shift+F9
进入调试视图后,布局如下:
- 左侧为“浏览帧”:
调试器流出断点处,当前线程正在运行的方法,每个方法对应一个“栈帧”。最上面的是当前断点所处的方法。 - 变量观察区:
- 调试器列出了断点处所在的方法相关的变量值。我们可以通过它,查看变量的值的变化。
调试操作区
如果不管一个方法如何运行,只想看结果想直接跳过,就点击这个按钮,Step Over,或者是按F8
此时断点还在a方法中运行,如果想进入b方法就要按下面画圈的按钮,或者按F7,就能进入函数,查看b函数当中的变量。
相关文章:
python异常机制
异常是什么? 软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是Exception,意思是例外。遇到这些例外情况,或者交异常,我们怎么让写的程序做出合理的处理,…...
JVM与Java体系结构
一、前言: Java语言和JVM简介: Java是目前最为广泛的软件开发平台之一。 JVM:跨语言的平台 随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。 Java虚拟机根本不关心运行在其内部的程序到底是使用何…...
【Python】Python与C的区别
文章目录 语句结束符代码块表示变量声明函数定义注释格式Python的标识符数据输入input()函数数据输出print()函数 语句结束符 C 语言 C 语言中每条语句必须以分号;结束。例如,int a 10;、printf("Hello, World!");。分号是语句的一部分,用于…...
怎么抓取ios 移动app的https请求?
怎么抓取IOS应用程序里面的https? 这个涉及到2个问题 1.电脑怎么抓到IOS手机流量? 2.HTTPS怎么解密? 部分app可以使用代理抓包的方式,但是正式点的app用代理抓包是抓不到的,例如pin检测,证书双向校验等…...
中学综合素质笔记3
第一章职业理念 第三节 教师观 考情提示: 单选题材料分析题 学习要求: 理解、 识记、 运用 (一)教师职业角色的转变(单选材料分析) 从教师与学生的关系看——对学生 新课程要求教师应该是学生学习的引…...
U盘加密软件哪个好用?免安装、安全、防复制
U盘作为一种便携式存储设备,因其携带方便、使用灵活而广受欢迎。然而,U盘的易失性也使其成为数据泄露的高风险载体。为了确保U盘中数据的安全性,使用专业的U盘加密软件是必不可少的。 免安装 更方便 《U盘超级加密3000》这款软件下载后直接…...
C++异常
1.C语言的错误处理方式 1.1直接终止程序 利用assert和exit都是直接终止程序。 1.2返回错误码 例如C语言程序的很对接口函数都会将错误信息存储在errno中表示错误。当我们自己设计函数时,函数返回值和返回错误码容易混淆,且如果函数调用栈较深时&…...
银河麒麟v10 arm版 鲲鹏 U盘安装 +解决 安装源 设置基础软件仓库时出错
人人为我,我为人人,分享出来,避免他人踩坑 U盘刻录 出现问题 进入系统安装界面,这里可以看到在“软件”-“安装源”选项上报错了,提示“设置基础软件仓库时出错” 2种解决办法 1. 有网的情况(注意自己查地址…...
[network]回顾:集线器(Hub)
集线器(Hub)的发明是计算机网络发展史上的一个重要里程碑。它最初的设计目的是为了解决局域网(LAN)中多台计算机共享网络资源的需求。 #mermaid-svg-OAmOmKYGAXoglS5z {font-family:"trebuchet ms",verdana,arial,sans-…...
【Vue.js 组件化】高效组件管理与自动化实践指南
文章目录 摘要引言组件命名规范与组织结构命名规范目录组织 依赖管理工具自动化组件文档生成构建自动引入和文档生成的组件化体系代码结构自动引入组件配置使用 Storybook 展示组件文档自动生成 代码详解QA 环节总结参考资料 摘要 在现代前端开发中,组件化管理是 V…...
打桩机:灾害救援中的 “应急尖兵”,稳固支撑的保障|鼎跃安全
在自然灾害或突发事故中,如地震、泥石流、洪涝灾害、山体滑坡等,地质条件的不稳定可能导致建筑物倒塌、道路损毁、堤坝决口等情况,严重威胁人员和财产安全。 打桩机是一种用于将桩打入地基的重型机械设备,其主要功能是提供支撑力&…...
java1-相对路径与绝对路径
注意注意~开始新部分啦! 开始正式分享java前,先为大家分享一下一个常用的概念---文件的相对路径与绝对路径. 开篇明义: 相对路径是指一个文件或目录相对于当前工作目录的路径。相对路径不包含根目录,而是从当前目录开始计算。 绝对路径是指一个文件或目录从根目录…...
工厂管理中 BOM(物料清单)
工厂管理中 BOM(物料清单)的一些优点: 1. 提高生产计划准确性 - 准确反映产品所需的物料及数量,为生产计划提供可靠依据,减少因物料估算错误导致的生产延误。 2. 优化成本控制 - 有助于精确计算产品成本&…...
allure报告修改默认语言为中文
1、项目根目录创建.py文件,把代码复制进去 import os from pathlib import Pathdef create_settings_js_file(directory"../pytest_mytt/reports/allures/", filenamesettings.js):# 创建或确认目录存在Path(directory).mkdir(parentsTrue, exist_okTrue…...
浅谈弱电系统RVVP和RVSP电缆的区别(
1、RVVP 1.1RVVP电缆定义? RVVP电缆抗干扰软电缆、屏蔽电缆、信号电缆、控制电缆(名字很多),学名:铜芯-聚氯乙烯绝缘-屏蔽聚氯乙烯护套-软电缆。 1.2RVVP执行标准 主要执行标准为JB/T8734.5-2016,部…...
MySQL 入门大全:常用函数
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
RV1126+FFMPEG推流项目(1)总体框架讲解
音视频推流项目的讲解 项目介绍 本项目通过 RV1126 采集摄像头和麦克风数据,采用 H.264/H.265 视频编码技术和 AAC 音频编码技术进行压缩和合成复合流,然后推送到流媒体服务器。 项目框图 下图展示了整个项目的总体流程图,核心部分包括&a…...
量子计算遇上人工智能:突破算力瓶颈的关键?
引言:量子计算遇上人工智能——突破算力瓶颈的关键? 在数字化时代的浪潮中,人工智能(AI)正以前所未有的速度改变着我们的生活,从语音助手到自动驾驶,从医学诊断到金融分析,无不彰显其…...
Kafka消费者如何优雅下线
一、背景 我们在Kafka消费程序中,可能会调用dubbo接口,也可能会使用线程池,连接池等,但是在服务下线的时候,kafka的消费总是会报错。比如dubbo接口就会抛出异常RpcException: The channel is closed. 这说明kafka还在…...
Go语言的网络编程
Go语言的网络编程 Go语言(又称Golang)是一种由Google开发的开源编程语言,以简洁、高效和并发为主要特点。网络编程是Go语言的一个重要应用领域,其优秀的并发模型和丰富的标准库使得Go成为开发高性能网络应用的理想选择。本篇文章…...
网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法
网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法 一、前言二、欧盟《通用数据保护条例》(GDPR)2.1 背景2.2 主要内容2.3 特点2.4 实施效果与影响 三、美国《加利福尼亚州消费者隐私法案》(CCPA)3.1 背景3.2 主要内…...
外部获取nVisual所在层级方法
Iframe嵌入nVisual,在iframe渲染完成之后,以后通过增加window.addEventListener()方法监听message事件,来获取nvisual当前的所在层级以及所选中的节点列表以及线缆列表。 nVisualPatrolDiagramIdList 变量是获取nVisual当前所在的层级的ID值…...
ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现
ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现 目录 ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现1. ARIMA模型概述1.1 时间序列预测1.2 ARIMA的优势2. ARIMA的核心技术2.1 自回归 (AR)2.2 差分 (I)2.3 移动平…...
解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域 Tomcat 配置允许跨域Web 项目配置允许跨域Tomcat 同时允许静态文件和 Web 服务跨域 偶尔遇到一个 Tomcat 部署项目跨域问题,因为已经处理…...
【深度学习量化交易13】继续优化改造基于miniQMT的量化交易软件,增加补充数据功能,优化免费下载数据模块体验!
我是Mr.看海,我在尝试用信号处理的知识积累和思考方式做量化交易,应用深度学习和AI实现股票自动交易,目的是实现财务自由~ 目前我正在开发基于miniQMT的量化交易系统——看海量化交易系统。 MiniQMT是一种轻量级的量化交易解决方案࿰…...
【并发篇】CompletableFuture学习
CompletableFuture 异步编程 前言 我们异步执行一个任务时,一般是用线程池 Executor 去创建。 如果不需要有返回值,任务实现 Runnable 接口;如果需要有返回值,任务实现 Callable 接口,调用 Executor 的 submit 方法…...
【动手学电机驱动】STM32-MBD(3)Simulink 状态机模型的部署
STM32-MBD(1)安装 Simulink STM32 硬件支持包 STM32-MBD(2)Simulink 模型部署入门 STM32-MBD(3)Simulink 状态机模型的部署 [STM32-MBD(4)Simulink 状态机实现按键控制] (https://bl…...
springCloudGateWay使用总结
1、什么是网关 功能: ①身份认证、权限验证 ②服务器路由、负载均衡 ③请求限流 2、gateway搭建 2.1、创建一个空项目 2.2、引入依赖 2.3、加配置 3、断言工厂 4、过滤工厂 5、全局过滤器 6、跨域问题...
04、Redis深入数据结构
一、简单动态字符串SDS 无论是Redis中的key还是value,其基础数据类型都是字符串。如,Hash型value的field与value的类型,List型,Set型,ZSet型value的元素的类型等都是字符串。redis没有使用传统C中的字符串而是自定义了…...
zephyr移植到STM32
Zephy如何移植到单片机 1. Window下搭建开发环境1.1 安装Choncolatey1.2 安装相关依赖1.3创建虚拟python环境1.4 安装west1.4.1 使用 pip 安装 west1.4.2 检查 west 安装路径1.4.3 将 Scripts路径添加到环境变量1.4.4 验证安装 1.5 获取zephyr源码和[安装python](https://so.cs…...
Windows使用AutoHotKey解决鼠标键连击现象(解决鼠标连击、单击变双击的故障)
注:罗技鼠标,使用久了之后会出现连击现象,如果刚好过保了,可以考虑使用软件方案解决连击现象: 以下是示例AutoHotKey脚本,实现了调用XButton1用于关闭窗口(以及WinW,XButton2也导向…...
案例研究:UML用例图中的结账系统
在软件工程和系统分析中,统一建模语言(UML)用例图是一种强有力的工具,用于描述系统与其用户之间的交互。本文将通过一个具体的案例研究,详细解释UML用例图的关键概念,并说明其在设计结账系统中的应用。 用…...
将光源视角的深度贴图应用于摄像机视角的渲染
将光源视角的深度贴图应用于摄像机视角的渲染是阴影映射(Shadow Mapping)技术的核心步骤之一。这个过程涉及到将摄像机视角下的片段坐标转换到光源视角下,并使用深度贴图来判断这些片段是否处于阴影中。 1. 生成光源视角的深度贴图 首先&…...
安卓漏洞学习(十八):Android加固基本原理
APP加固技术发展历程 APK加固整体思路 加固整体思路:先解压apk文件,取出dex文件,对dex文件进行加密,然后组合壳中的dex文件(Android类加载机制),结合之前的apk资源(解压apk除dex以外…...
前端数据模拟器 mockjs 和 fakerjs
功能:帮助前端生成随机数据,独立于后端单独开发 一、mockjs 安装:npm install mockjs 优点:官网是中文。 缺点:目前该库已经无人维护,也没人解决github上的bug。 官网 github地址 二、fakerjs 安装…...
Ruby语言的软件开发工具
Ruby语言的软件开发工具概述 引言 Ruby是一种简单且功能强大的编程语言,它以优雅的语法和灵活性而闻名。自1995年首次发布以来,Ruby已经被广泛应用于各种开发领域,特别是Web开发。随着Ruby语言的普及,相关的开发工具也日益丰富。…...
P8772 [蓝桥杯 2022 省 A] 求和
题目描述 给定 𝑛 个整数 𝑎1,𝑎2,⋯ ,𝑎𝑛 求它们两两相乘再相加的和,即 𝑆𝑎1⋅𝑎2𝑎1⋅𝑎3⋯𝑎1⋅𝑎𝑛&…...
(七)Linux库的串口开发
文章目录 基于官方提供的串口测试代码部分解析代码部分1. usage 函数2. opt_parsing_err_handle 函数3. sig_handle 函数4. init_serial 函数5. serial_write 函数6. serial_read 函数7. run_read_mode 函数8. run_write_mode 函数9. run_loopback_test 函数 进行测试第一步编译…...
【git】在服务器使用docker设置了一个gogs服务器,访问和现实都不理想
以下问题应该都可以通过设置custom/conf/app.ini来解决 配置文档参考地址:https://www.bookstack.cn/read/gogs_zh/advanced-configuration_cheat_sheet.md domain显示的事localhost,实际上应该是一个IP地址。 关键字: DOMAIN ROOT_URL 因为是docker…...
ubuntu报错:没有在该文件夹中粘贴文件的权限
1 现象: 近期给ubuntu扩展了硬盘,但是在其中进行文件操作时提示“没有在该文件夹中粘贴文件的权限” 2 原因: 新增硬盘挂载地址为“/home/username/data/” 终端输入 ls -ld /home/username/data/输出 drwxr-xr-x 3 root root 4096 1月…...
JavaWeb开发(六)XML介绍
1. XML介绍 1.1. 什么是XML (1)XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种很像HTML的标记语言。 (2)XML 的设计宗旨是传输数据(目前主要是作为配置文件),而不是显示数据。 (3&a…...
Vue 3 和 Electron 来构建一个桌面端应用
我们将使用 Vue 3 和 Electron 来构建一个桌面端应用,该应用可以通过 Websocket 与服务器进行通信,并实现心跳检测、客户端上线、获取资产信息以及修改资产状态的功能。以下是实现步骤的概述: 项目结构:创建一个 Vue 3 项目&…...
Python中的asyncio:高效的异步编程模型
随着互联网应用的快速发展,程序的响应性和处理效率成为衡量系统性能的重要指标。传统的同步编程模型在面对高并发和IO密集型任务时,常常显得捉襟见肘,难以满足现代应用的需求。Python的asyncio库作为一种高效的异步编程模型,为开发…...
《解锁鸿蒙系统AI能力,开启智能应用开发新时代》
在当今科技飞速发展的时代,鸿蒙系统以其独特的分布式架构和强大的AI能力,为开发者们带来了前所未有的机遇。本文将深入探讨开发者如何利用鸿蒙系统的AI能力开发更智能的应用,开启智能应用开发的新时代。 鸿蒙系统构筑了15系统级的AI能力&…...
安卓OCR使用(Google ML Kit)
OCR是一个很常用的功能,Google ML Kit提供了OCR能力,用起来也很简单,本文介绍一下使用方法。 1. 相关概念 名词概念解释TextBlock块一个段落Line行一行文本Element元素单词;对汉字来说,类似"开头 (分隔符)中间&…...
使用redis的5种常用场景
文章目录 1. 缓存热点数据2. 分布式锁3. 计数器和限流器4. 消息队列5. 会话管理总结 在日常开发工作中,Redis作为一款高性能的内存数据库,凭借其强大的功能特性和卓越的性能表现,已经成为了许多项目中不可或缺的组件。本文将详细介绍Redis在实…...
Extreme670和440的DHCP和vlan划分
1.网关配置 防火墙 USG 添加静态路由,也就是回指路由192.168.0.0 255.255.0.0 192.168.100.2 usg关闭DHCP192.168.100.0段的,usg接口的网关地址是192.168.100.1,防火墙策略启用192.168.100.0段到wan1段的内网和外网的NAT地址转换。 2…...
VTK知识学习(33)-交互问题2
1、前言 主要是针对前面有过实现不了交互的情况进行说明,经过一些尝试和分析调用API,总算实现RenderWindowControl函数回调正常串接,当然这个移动处理事件的效果目前也没有确认。 2、使用 vtkImageReslice reslice vtkImageReslice.New();p…...
c++ thread线程join、detach、joinable方法
(621条消息) 线程中断Thread的interrupt()方法_thread interrupt_萝卜阿咕咕的博客-CSDN博客 C/C编程:std::thread 详解-CSDN博客 #include <iostream> #include <thread>void do_some_work() {std::cout<<"Hello Concurrent World\n"…...
Transformer:深度学习的变革力量
深度学习领域的发展日新月异,在自然语言处理(NLP)、计算机视觉等领域取得了巨大突破。然而,早期的循环神经网络(RNN)在处理长序列时面临着梯度消失、并行计算能力不足等瓶颈。而 Transformer 的横空出世&am…...