- 博客(653)
- 资源 (20)
- 问答 (1)
- 收藏
- 关注
原创 描述符(Descriptors)
本文介绍了Python描述符的概念与用法。描述符是实现了__get__、__set__或__delete__方法的类,用于自定义类属性的访问行为。文章通过TypedAttribute示例展示了如何用描述符实现类型检查,解耦验证逻辑并提高代码复用性。还区分了数据描述符(实现__set__/__delete__)和非数据描述符(仅__get__)的优先级差异,并建议在需要复杂属性逻辑复用(如ORM字段)时使用描述符,简单场景优先选择@property。描述符是理解Python属性访问机制的关键底层技术。
2026-06-09 10:37:23
244
原创 变量与对象的内存存储关系(引用机制)
Python变量与对象的内存存储关系是核心知识点:变量是引用(标签),对象是实体(堆内存存储)。关键特性包括:1)动态类型,变量无类型而对象有类型;2)不可变对象(如整数)修改会创建新对象,可变对象(如列表)修改会影响所有引用;3)内存管理通过引用计数和垃圾回收实现。常见陷阱涉及函数参数传递(对象引用传递)和默认参数(避免可变对象作默认值)。理解这一机制对编写高效、正确的Python代码至关重要。
2026-06-04 09:32:46
514
原创 装饰器decoraor常用实例
Python 中的装饰器(Decorator)是一种强大的高级特性,它允许开发者在不修改原有函数或类代码的情况下,动态地为其添加新的功能。装饰器本质上是一个高阶函数,它接收一个函数作为参数,并返回一个新的函数。这种“无侵入式增强”的思想使得代码更加简洁、优雅且易于复用,常用于日志记录、性能监控、权限验证、缓存等场景。
2026-06-04 09:08:59
72
原创 函数缓存lru_cache
Python的functools.lru_cache装饰器能快速为函数添加缓存功能,大幅提升重复计算的性能。它通过哈希表和双向链表实现O(1)时间复杂度的缓存操作,自动缓存函数结果并在相同参数调用时直接返回。使用时只需添加@lru_cache装饰器,支持设置缓存大小(maxsize)、清空缓存(cache_clear)和查看缓存信息(cache_info)。特别适用于递归计算、重复调用的昂贵计算等场景,但要求参数必须是可哈希类型。注意标准实现非线程安全,且maxsize=None会禁用LRU机制导致内存无限
2026-05-28 09:11:31
395
原创 WebSocket
WebSocket是一种基于TCP的全双工通信协议,突破了HTTP半双工的限制,支持服务器主动推送数据,适用于实时通讯、在线游戏等场景。其核心优势包括低延迟、双向通信和高效数据传输。通过HTTP协议升级握手建立连接后,使用轻量级数据帧传输信息。相比HTTP,WebSocket具有持久连接和更低开销的特点,但需通过Ping/Pong机制维持连接活性。开发时需注意心跳实现和协议选择,主流语言均有成熟的WebSocket库支持。该技术已成为现代实时Web应用的基础设施。
2026-05-18 10:05:36
553
原创 python中的websockets简单样例
WebSocket是一种基于TCP的全双工通信协议,支持客户端与服务器之间的实时双向数据传输。与HTTP的请求-响应模式不同,WebSocket建立持久连接后,双方可随时主动推送数据,具有低延迟、高效率的特点。文章通过Python实现的WebSocket服务器示例(使用websockets库)和JavaScript客户端代码,展示了如何建立连接、收发消息及处理连接状态。服务器端采用异步IO处理多客户端连接,客户端通过事件监听实现实时交互。这种技术适用于需要实时更新的应用场景,如聊天系统、实时监控等,相比传统
2026-05-15 16:41:42
316
原创 Python 中的异步编程
Python中的async和await关键字是实现异步编程的核心工具,特别适用于I/O密集型任务。async def定义协程函数,await用于暂停当前任务并等待其他协程完成,事件循环负责调度任务执行。通过asyncio.create_task()或asyncio.gather()可实现真正的并发执行。示例展示了协程的基本用法、并发任务处理以及一个完整的异步爬虫案例,演示了如何高效处理网络请求等异步操作。异步编程能显著提升程序性能,避免多线程的复杂性。
2026-05-14 10:16:33
108
2
原创 套接字Socket编程样例
本文介绍了基于Python的UDP和TCP网络编程实现。UDP部分展示了无连接服务的服务器和客户端GUI应用,包含端口设置、消息收发、日志记录等功能,采用多线程处理并发请求。TCP部分实现了面向连接的通信模型,服务器支持多客户端连接和消息广播,客户端具备连接管理、消息发送和接收功能。两种协议都通过Tkinter构建了图形界面,实现了状态监控、消息记录和错误处理机制。调试结果表明,这两种实现都能有效完成网络通信任务,其中UDP适合简单快速的数据传输,而TCP则提供可靠的连接导向通信。
2026-04-08 11:12:05
116
1
原创 3D渲染中的材质Material与纹理Texture
3D渲染中材质与纹理的关系解析:材质决定物体的光学特性(如反射、透明度),如同衣服的布料;纹理则是表面图案细节,如同衣服印花。贴图作为中间媒介,通过UV坐标将纹理映射到模型表面。UV坐标是2D定位系统(U水平/V垂直),将纹理精准"钉"在模型上。常见材质包括金属、塑料等5类,贴图则有基础色、法线等8种类型。三者层级关系为:材质包含贴图,贴图应用纹理,共同实现逼真渲染效果。
2026-01-16 11:11:08
461
原创 添加初始化函数
VC对话框程序初始化函数添加方法:其他窗口需手动添加初始化函数,通过类视图-重写功能实现。使用CTRL+D快捷键可查看和调整窗口控件的TAB顺序。操作步骤包括:1)双击窗口类进入声明区域;2)点击重写图标选择对应函数;3)按CTRL+D显示TAB键顺序。该方法适用于VC++对话框程序的界面元素管理。
2025-11-17 09:56:01
229
1
原创 VC中CListCtrl的报表设置
本文介绍了列表控件(List Control)的高级设置方法,包含四个主要步骤:1)基本设置,包括清空数据、设置为报表视图、设置字体行高和添加列标题;2)数据添加方法,通过InsertItem和SetItemText实现;3)斑马线效果实现,通过自定义绘制事件设置奇偶行不同背景色;4)单元格双击编辑功能,通过创建隐藏的编辑框控件,在双击时定位显示并获取修改内容。这些方法完整演示了如何优化列表控件的显示效果和交互功能。
2025-11-17 08:57:51
456
原创 固定表头可以滚动表格内容的JS代码
这篇文章展示了一个使用HTML、CSS和JavaScript创建的可滚动表格组件的实现方法。主要特点包括:1) 固定高度(200px)和宽度(302px)的表格容器,带有滚动条;2) 斑马纹交替行样式;3) 悬停效果;4) 固定表头;5) 动态生成100行测试数据。CSS部分定义了表格的基础样式和交互效果,JavaScript则用于动态填充表格内容。该组件适合展示大量数据,同时保持页面整洁。
2025-09-19 09:42:45
344
原创 Threejs中物体不出现的问题
Threejs物体不显示的常见原因包括观察位置错误和渲染问题。此外,还存在几个特殊原因:1)Windows和银河麒麟系统对STL文件大小写敏感度不同;2)部件六自由度参数错误可能导致消失;3)网络传输参数错误也会影响显示。建议使用F12调试工具检查网页参数是否正确。这些因素在排查问题时都需特别注意。
2025-07-26 09:50:30
360
原创 典型的空间换时间案例OSMapTbl与OSUnMapTbl
在μC/OS-II实时操作系统中,OSMapTbl和OSUnMapTbl是两个关键的预计算查找表,用于优化任务优先级调度。OSMapTbl是一个位映射表,用于将优先级编号转换为位掩码,以便快速设置或清除OSRdyGrp和OSRdyTbl中的特定位。其表大小为8,元素值为0x01至0x80,对应8个可能的位位置。OSUnMapTbl是一个位反向映射表,用于从字节数据中快速定位最低有效位(LSB)的索引,以查找最高优先级任务。其表大小为256,覆盖所有8位二进制组合。这两种表通过查表法实现O(1)的时间复杂度,
2025-05-17 10:20:37
605
原创 生成器(generator)
生成器通过惰性计算和只存储当前状态的特性,能够显著节约内存,特别适用于处理大数据集和无限序列。这种特性使得生成器在数据处理和流式计算中非常有用。
2025-04-26 10:26:20
418
原创 异步编程与多线程的本质区别
异步编程的本质是单线程内的协作式任务调度,通过事件循环和协程机制实现高并发I/O处理,与多线程的抢占式并行执行存在根本性差异35。两者的选择需根据任务类型(I/O密集型 vs CPU密集型)和运行时环境综合判断26。# 需要安装:pip install aiohttp"""异步获取单个网页内容""""""并发获取多个网页"""# 使用gather并发执行所有任务urls = [] * 5 # 重复5次,共20个请求。
2025-04-13 11:15:11
689
原创 Python 装饰器(Decorator)详解
实现逻辑解耦与复用,是 Python 灵活性和表达力的重要体现。掌握其核心用法后,可显著提升代码的可维护性和扩展性。
2025-04-10 08:31:04
741
原创 python中的语音操作
pip install pyaudio # 用于实时麦克风录音:ml-citation{ref="2,4" data="citationList"}pip install vosk # 核心库安装:ml-citation{ref="2,4" data="citationList"}下载预训练模型,官方模型库:Vosk Models,中文推荐模型:vosk-model-cn-0.22(适用于中文场景)。朗读需要安装:pip install pyttsx3。语音操作主要包括两个:朗读和语音识别。
2025-03-28 08:31:40
596
原创 Flask多参数模版使用及其服务器waitress
约定好参数名字,单个名字可以直接使用;多参数使用字典传递;把建好的html文件放到templates目录里面;需要建立目录templates;hello.html内容。
2025-03-17 17:05:13
455
原创 Flask进行WEB开发
Flask 允许你定义路由,使得当用户访问特定 URL 时,Flask 会调用对应的视图函数来处理请求。Flask 允许你定义路由,这样当特定的 URL 被访问时,就会调用相应的函数。:蓝图是 Flask 中的一个组织代码的方式,它允许你将相关的视图函数、模板和静态文件组织在一起,并且可以在多个应用中重用。蓝图是 Flask 中的组织代码的方式。它允许你将相关的视图函数、模板和静态文件组织在一起,并且可以在多个应用中重用。Flask 允许你定义错误处理函数,当特定的错误发生时,这些函数会被调用。
2025-03-17 14:56:00
854
原创 PyInstaller打包工具的使用
PyInstaller 是一个将 Python 程序打包成独立执行文件的工具,常用于将 Python 脚本打包为可执行文件。默认情况下,PyInstaller 会生成一个文件夹,其中包含可执行文件和相关的依赖文件。使用此选项后,所有文件会被打包成一个文件。.spec 文件包含了打包过程的配置信息,通常你可以修改 .spec 文件来定制 PyInstaller 的行为。PyInstaller 会生成一个 .spec 文件,它记录了打包时的配置,可以修改该文件来定制打包行为。指定生成的可执行文件所在的目录。
2024-11-18 14:10:06
4453
原创 双端队列deque
deque(双端队列)是collections库中的一个类,它是一个、可以在两端进行高效插入和删除操作的数据结构。deque类实现了类似列表的功能,但在处理频繁的首尾插入和删除时更加高效。
2024-11-01 10:41:53
671
原创 Counter对象的使用样例
Counter是一个用于跟踪值出现次数的有序集合。它可以接收一个可迭代对象作为参数,并生成一个字典,其中包含每个元素作为键,其计数作为值。
2024-11-01 10:18:27
557
原创 groupby函数的使用
itertools.groupby 是 Python 标准库 itertools 模块中的一个强大工具,它能够对可迭代对象中的元素进行分组。不同于数据库查询语言中的 GROUP BY 语句 ,groupby 并不会自动对数据进行排序,因此在使用前通常需要先对数据进行预排序,以保证相同元素连续出现,这样才能正确地进行分组。{'孙': ['孙文'], '张': ['张飞'], '李': ['李晓红'], '王': ['王名', '王芳'], '章': ['章程']}2 把姓名字符串按姓氏分组。
2024-10-29 15:27:29
930
原创 高阶函数(Higher-Order Function)
reduce() 函数会对参数序列中元素进行累积。函数将一个两元操作函数作用在序列[x1, x2, x3, ...]上,并将其结果并为一个单一返回值,例如用于求和或求积。高阶函数在 Python 中非常强大和灵活,它们允许你将函数作为参数传递给其他函数,或者从函数中返回函数。虽然 lambda 表达式本身不是一个高阶函数,但它经常与高阶函数一起使用,提供简洁的函数定义。map() 函数接受一个函数和一个可迭代对象(如列表或元组)作为输入,将传入的函数依次作用到序列的每个元素上,并返回一个新的迭代器。
2024-09-25 10:02:21
792
1
原创 max与min函数的使用
max与min都有一个key关键字,可以进行更复杂的操作。比如:返回长度最长的字符串序列等。max函数是返回序列中的最大值;min函数是返回序列中的最小值;
2024-09-18 14:17:41
481
原创 python中的排序函数sorted
在python中对列表进行排序是使用很频繁的操作,一般采用sorted函数或自带的成员函数sort就可以搞定。但是,sorted函数本身功能非常强大,可以对字符串长度、字典键值进行排序。使用下面的代码,可以更进一步的学习掌握。
2024-09-18 11:10:37
562
原创 classmethod的使用
python中存在三种方法,分别为常规方法(定义中传入self)、@classmethod修饰的类方法、@staticmethod修饰的静态方法。一常规方法定义时需要传入self参数,与类的实例绑定。也就是说调用时需要先实例化类classA为实例A,然后该实例A才拥有方法,通过A.f()的方式来调用。不能直接用类classA.f()的方式来调用。二用@classmethod修饰的方法需要传入cls参数(代表当前类),表示该方法与类绑定(不是实例)
2024-09-03 10:10:33
992
原创 常量池和对象池
需要注意的是,对于一些简单的对象,如整数、浮点数、字符串等等,如果它们的值相同,它们的地址也可能相同,这是因为Python的常量池机制会共享一些简单对象的内存地址。例如,当程序创建一个长度为1的字符串对象s时,Python的解释器会先检查对象池中是否已经存在一个值为s的字符串对象,如果存在,则直接返回该对象;例如,如果程序需要使用多个整数1来做计算,那么Python只需要在常量池中检查是否存在整数1的对象,如果已经存在,则直接引用这个对象,而不是创建新的整数1对象。这可以减少内存的使用,并加速程序的执行。
2024-08-25 15:29:27
598
原创 sklearn中的线性回归
w 被统称为 模型的 参数,其中 w0 被称为截距(intercept),w1~wn 被称为 回归系数(regression coefficient)。这个表达式和 y=az+b 是同样的性质。其中 y 是目标变量,也就是 标签。xi1~xin 是样本 i 上的特征 不同特征。
2024-08-24 16:35:38
609
原创 Threejs中的光照使用
/ 光线照射的目标点。在 Three.js 中,光照模型是创建真实感和氛围感三维场景的关键要素之一。需要根据自己的实际需求进行调节,直到满意为止。:像一个发光的点,向各个方向均匀发光。:模拟无限远处的光源,光线平行。:具有方向性和锥形照射范围。
2024-08-21 16:37:05
596
原创 pyinstaller打包工具
打包过程中,PyInstaller会自动检测并分析Python代码及其导入的模块,将它们打包到一个可执行文件中,并生成额外的支持文件和目录。PyInstaller支持多个操作系统平台(如Windows、Linux、Mac OS X等),可以根据不同的平台选择合适的打包方式和选项。总之,PyInstaller是一个强大的工具,可以方便地将Python程序打包成可执行文件,以便于在没有安装Python的环境中运行或作为一个独立文件方便传递和管理。选项指定生成的可执行文件的输出目录,使用。
2024-04-29 10:35:54
430
原创 去重并保持原来的顺序OrderedDict
模块中的这些数据类型可以帮助你更高效地处理数据,并提供更简洁、更易于理解的代码。: 这是一个字典子类,它提供了一个工厂函数,用于为字典提供默认值。当访问字典中不存在的键时,它会调用工厂函数来提供默认值。利用python自带的库collections中的OrderedDict可以顺利实现去重并保留顺序。d[0]不存在,如果使用普通字典则会报错,使用默认值字典则不会报错。python中集合set可以去重,但是并不保留顺序。另外,collections还有默认值字典可以使用。完美实现去重并保留顺序。
2024-04-23 10:14:58
755
python数据处理样例程序
2022-10-27
SocketTransferFile.zip
2019-05-10
你搞过什么有实际意义的算法?
2016-07-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅