<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ZMXdecode的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/ZMXdecode</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; ZMXdecode]]></copyright><item><title><![CDATA[python读取文件的常用操作]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/152375383</link><guid>https://blog.csdn.net/ZMXdecode/article/details/152375383</guid><author>ZMXdecode</author><pubDate>Wed, 01 Oct 2025 20:21:17 +0800</pubDate><description><![CDATA[对于现代Python项目，推荐使用YAML + 环境变量的组合方式。Python文件: 灵活，但要注意安全，避免执行恶意代码。JSON: 广泛使用，适合复杂数据结构，易于读写和解析。XML: 结构严谨，但较繁琐，常用于旧式配置和数据交换。，它会将YAML结构映射到对应的Python数据类型。环境变量文件: 适合敏感数据（如密码）和部署配置。上面这种读取后，就是一个列表里面套两个字典的类型。YAML: 更人类可读，支持注释，适合配置文件。INI: 简单，适合简单的键值对配置。CSV: 适合表格数据。]]></description><category></category></item><item><title><![CDATA[Selenium自动化的使用]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/152175102</link><guid>https://blog.csdn.net/ZMXdecode/article/details/152175102</guid><author>ZMXdecode</author><pubDate>Mon, 29 Sep 2025 08:25:52 +0800</pubDate><description><![CDATA[既然说，隐式等待是一直轮询查找元素，一直等找到这个元素，那为什么还要有显示等待这种东西呢，因为隐式等待只是找到了元素。看以看出这个方法返回的是一个webelement. 当你获取到了这个webelement后，就可以通过这个继续操作元素。保存的是chromedriver.exe的位置，然后options放的是谷歌浏览的缓存的位置。定位元素的时候，有一个问题，就是元素可能没有加载出来。所以就有了等待机制。你想操作一个元素，必须先获取这个元素，定位到这个元素才可以操作它，找到元素后，就可以进行元素的操作。]]></description><category></category></item><item><title><![CDATA[测试框架的结构]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/148960880</link><guid>https://blog.csdn.net/ZMXdecode/article/details/148960880</guid><author>ZMXdecode</author><pubDate>Mon, 30 Jun 2025 18:21:29 +0800</pubDate><description><![CDATA[这个pytest.ini自定义标记系统：用于分类和组织测试用例默认命令行选项：自动启用详细模式和 HTML 报告生成测试目录指定：告诉 pytest 只在features目录中查找测试文件。]]></description><category></category></item><item><title><![CDATA[request这个包中，get 这个方法里传入的是params ,post这个方法里传入的是data 和 json。这个区别是什么？]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/148907719</link><guid>https://blog.csdn.net/ZMXdecode/article/details/148907719</guid><author>ZMXdecode</author><pubDate>Wed, 25 Jun 2025 22:51:37 +0800</pubDate><description><![CDATA[维度GETPOST传输本质同属TCP，无底层差异同属TCP，无底层差异参数位置URL（可见）Body（不可见）长度限制受浏览器URL长度限制（约2KB-8KB）受服务器Body大小限制（通常MB级）安全性❌ 参数暴露于URL⚠️ Body仍可被抓包，需HTTPS缓存✔️ 浏览器自动缓存❌ 不缓存（需手动设置）幂等性✔️ 安全且幂等❌ 非幂等（可能修改数据）👉核心结论无本质区别：技术层面均为TCP连接，可互换使用（需服务端配合）；有规范差异。]]></description><category></category></item><item><title><![CDATA[Unitest使用教程]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/148828257</link><guid>https://blog.csdn.net/ZMXdecode/article/details/148828257</guid><author>ZMXdecode</author><pubDate>Sun, 22 Jun 2025 15:36:01 +0800</pubDate><description><![CDATA["""自定义测试加载器""""""从模块加载测试"""# 过滤掉标记为慢速的测试"""检查测试是否标记为慢速"""# 实际实现中可以通过自定义属性或方法判断unittest 是 Python 标准库的一部分，提供了强大的测试框架，无需额外依赖即可使用。完整的测试结构和生命周期管理丰富的断言方法灵活的测试发现和执行机制与 Python 生态系统的良好集成适合大型项目和团队协作的稳定基础。]]></description><category></category></item><item><title><![CDATA[【Pytest 使用教程】]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/148827057</link><guid>https://blog.csdn.net/ZMXdecode/article/details/148827057</guid><author>ZMXdecode</author><pubDate>Sun, 22 Jun 2025 14:57:51 +0800</pubDate><description><![CDATA[夹具（Fixture）系统是 pytest 最强大的功能之一，它提供了一种可复用准备测试环境（如数据库连接、配置文件）管理测试资源（如临时文件、网络连接）执行清理操作（如关闭连接、删除临时数据）共享测试数据（如预定义的用户对象）资源管理：自动化管理测试资源的生命周期代码复用：消除重复的初始化和清理代码依赖注入：解耦测试逻辑与测试环境可维护性：集中管理环境配置，一处修改全局生效灵活性：支持多种作用域和组合方式。]]></description><category></category></item><item><title><![CDATA[Unitest和pytest使用方法的区别联系]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/147433949</link><guid>https://blog.csdn.net/ZMXdecode/article/details/147433949</guid><author>ZMXdecode</author><pubDate>Tue, 22 Apr 2025 23:48:12 +0800</pubDate><description><![CDATA[是 Python 自带的单元测试框架，用于编写和运行可重复的测试用例。它的核心思想是通过断言（assertions）验证代码的行为是否符合预期。是 Python 测试的基石，适合中小型项目。对于复杂场景，可以结合第三方库（如。本身不支持参数化，但可通过第三方库（如。]]></description><category></category></item><item><title><![CDATA[web框架介绍]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/147363709</link><guid>https://blog.csdn.net/ZMXdecode/article/details/147363709</guid><author>ZMXdecode</author><pubDate>Mon, 21 Apr 2025 12:24:07 +0800</pubDate><description><![CDATA[（Web Framework）是一套预先编写好的代码库和工具集，用于简化 Web 应用的开发流程。它提供了一套标准化的结构和功能，帮助开发者快速构建、部署和维护 Web 服务，而无需从零实现底层基础功能（如网络协议、数据解析等）。]]></description><category></category></item><item><title><![CDATA[configparserd读取ini文件]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/147236001</link><guid>https://blog.csdn.net/ZMXdecode/article/details/147236001</guid><author>ZMXdecode</author><pubDate>Tue, 15 Apr 2025 12:20:57 +0800</pubDate><description><![CDATA[可以轻松实现配置文件的读写和管理，非常适合需要灵活配置的应用场景。掌握这些方法后，可以轻松实现配置文件的动态管理和复杂场景的适配！的模块，适合管理程序的配置参数。是 Python 中用于处理。]]></description><category></category></item><item><title><![CDATA[深度学习框架中动态图和静态图是什么意思，如何通过keras和estmator实现？]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/146460914</link><guid>https://blog.csdn.net/ZMXdecode/article/details/146460914</guid><author>ZMXdecode</author><pubDate>Sun, 23 Mar 2025 20:14:58 +0800</pubDate><description><![CDATA[动态图（Eager Execution）和静态图（Graph Execution）是深度学习框架中两种不同的计算图构建和执行方式，它们在开发流程、灵活性和性能优化等方面有显著区别。动态图模式下，代码逐行执行，计算图在运行时即时构建。每个操作（如矩阵乘法、激活函数）会立即执行，结果立即可见，无需预先定义完整的计算流程。静态图模式下，需要先定义完整的计算图结构（所有操作和依赖关系），再通过会话（Session）统一执行。计算图在运行前会被编译和优化。]]></description><category></category></item><item><title><![CDATA[Keras和 Estimator的创建历史是什么]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/146460794</link><guid>https://blog.csdn.net/ZMXdecode/article/details/146460794</guid><author>ZMXdecode</author><pubDate>Sun, 23 Mar 2025 19:53:18 +0800</pubDate><description><![CDATA[Keras 和 Estimator 是 TensorFlow 生态中两个重要的高级 API，它们的诞生和发展与深度学习框架的演进及开发者需求密切相关。]]></description><category></category></item><item><title><![CDATA[tf1.x和tf2.x在使用上的区别和联系是什么]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/146355526</link><guid>https://blog.csdn.net/ZMXdecode/article/details/146355526</guid><author>ZMXdecode</author><pubDate>Tue, 18 Mar 2025 23:28:37 +0800</pubDate><description><![CDATA[TensorFlow 1.x 和 2.x 在使用上有显著差异，主要体现在编程范式、API 设计和易用性上，但二者仍共享相同的核心目标（深度学习框架）和底层计算引擎。]]></description><category></category></item><item><title><![CDATA[TF中 Arg 节点]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/146355488</link><guid>https://blog.csdn.net/ZMXdecode/article/details/146355488</guid><author>ZMXdecode</author><pubDate>Tue, 18 Mar 2025 23:26:53 +0800</pubDate><description><![CDATA[如果希望常量固定为。]]></description><category></category></item><item><title><![CDATA[C++ 复习记录（个人记录）]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/143243329</link><guid>https://blog.csdn.net/ZMXdecode/article/details/143243329</guid><author>ZMXdecode</author><pubDate>Mon, 28 Oct 2024 01:08:55 +0800</pubDate><description><![CDATA[1 、禁止类自己被继承final 用于禁止 虚函数被重写和 类被继承,然后这个Person就不可以被继承了，2、 一个类， 自己继承了别人后，禁止别人继承自己。// 失败，因为父类Student是final修饰的 };就是意味着继承了Person。但是Student不能被别人继承。3、final用于禁止函数被重写virtual void run() final { // 表示该方法是最终方法，无法被重写// 编译错误，方法无法被重写。]]></description><category></category></item><item><title><![CDATA[C语言中数组和字符串的联系]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/142431933</link><guid>https://blog.csdn.net/ZMXdecode/article/details/142431933</guid><author>ZMXdecode</author><pubDate>Mon, 23 Sep 2024 02:32:10 +0800</pubDate><description><![CDATA[因为指针不仅要确认指向的地址的开头，还要确认这个地址怎么解析。如果是char类型，就按char类型取出，如果是数组类型，就按这个数组的类型，取出这个存放在数组里的数。所以强调不同的原因是因为它们的类型是不同的。2、数组名保存的地址，是第一个元素的地址，这个也很模糊。我们说的 数组的地址和数组第一个元素的地址，这两个地址打印出来是一样的。1、如果对这个变量使用求地址符，&greet,这个值和ptr的值一样，并不是ptr地址的地址。greet是第一个元素的地址，&greet是这个数组的地址。]]></description><category></category></item><item><title><![CDATA[C语言中定义指针，函数指针这种类似的变量（个人纪录）]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/142414054</link><guid>https://blog.csdn.net/ZMXdecode/article/details/142414054</guid><author>ZMXdecode</author><pubDate>Sat, 21 Sep 2024 12:52:41 +0800</pubDate><description><![CDATA[/1、定义一个指针int *p;//定义一个数组//2、定义一个指针数组// 顾名思义 是一个数组,数组里面都是存的指针变量。// 这是一个指针数组，包含10个指向整数的指针// 这是一个指针数组，包含5个指向字符的指针//3、定义一个数组指针// 这是一个指向包含10个整数的数组的指针//4、定义一个指针函数//指针函数就是这个函数，返回以一个指针，函数可以返回任何值，当然也可以返回指针。return str;]]></description><category></category></item><item><title><![CDATA[C语言中值传递]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/142395677</link><guid>https://blog.csdn.net/ZMXdecode/article/details/142395677</guid><author>ZMXdecode</author><pubDate>Fri, 20 Sep 2024 21:57:46 +0800</pubDate><description><![CDATA[值传递时，函数接收的是参数是一个复制的值。这个是因为指针的值虽然也是复制的，但是保存在指针里的值是一样的，即两个都是指向变量的地址，不一样的是变量地址的地址。总结：修改一个变量，一定是修改到这个变量的本身，所以会用指针的方式来修改变量。通过传入的是变量的地址。如果想要改变这个函数里的值，  经常用的方式有两种，一是使用全局变量，二是使用指针。当时产生了一个疑问是，指针传入的时候，不也是复制的值么，为啥指针就可以改了呢。这种值传递的场景是一个函数里面套了一个函数，这样就会产生一个局部变量的情况。]]></description><category></category></item><item><title><![CDATA[C语言中数据类型]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/142306416</link><guid>https://blog.csdn.net/ZMXdecode/article/details/142306416</guid><author>ZMXdecode</author><pubDate>Mon, 16 Sep 2024 23:10:08 +0800</pubDate><description><![CDATA[3、指针类型（pointer）：用于存储变量或函数的内存地址，如：int *p;]]></description><category></category></item><item><title><![CDATA[C语言指针和数组梳理]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/142287861</link><guid>https://blog.csdn.net/ZMXdecode/article/details/142287861</guid><author>ZMXdecode</author><pubDate>Mon, 16 Sep 2024 00:10:10 +0800</pubDate><description><![CDATA[1、指针是一个变量，保存一个地址。一个 X 型指针，保存一个 X 型地址。这句话可以这样说，一个 X 型指针，指向一个X 型地址。2、数组名保存一个地址，但是这个地址不可以更换。一个 X  型数组变量，保存了一个X 型地址。综合以上，一个X型指针可以指向一个X型地址，一个X型数组变量。一个X型的指针。所以一个 int 型指针，指向了一个int 型地址， 一个指针类型的指针，指向了一个指针类型的地址。反过来，要想指向一个 数组类型的数组。需要一个数组型的指针。]]></description><category></category></item><item><title><![CDATA[Linux常用环境变量PATH]]></title><link>https://blog.csdn.net/ZMXdecode/article/details/139887932</link><guid>https://blog.csdn.net/ZMXdecode/article/details/139887932</guid><author>ZMXdecode</author><pubDate>Sat, 22 Jun 2024 23:58:56 +0800</pubDate><description><![CDATA[如果没告诉你，你就自己找，你可能就在书桌上找，没到到去书包里，再去别的地方，但是一定在你平时放书的地方，不可能去你都不知道的地方去找。而shell在去执行命令的时候，如果不是通过决定路径去执行，就会去PATH这个变量的路径下去找这个执行命令的程序。2、 PATH 中的目录使用冒号分隔,如果命令或者程序的位置没有包括在PATH 变量中，又不使用绝对路径的话，shell是没法找到的。1、当我们在shell命令行属于一个命令，shell解释器去解释这个命令的时候，需要先找到这个命令.即使用绝对路径运行。]]></description><category></category></item></channel></rss>