<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Van_CLB的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Van_CLB</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Van_CLB]]></copyright><item><title><![CDATA[python中的ThreadPoolExecutor线程池]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148750584</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148750584</guid><author>Van_CLB</author><pubDate>Wed, 18 Jun 2025 23:06:25 +0800</pubDate><description><![CDATA[返回值submit()返回Future对象，map()返回结果迭代器。任务类型submit()灵活支持不同任务，map()适用于相同任务的批量处理。结果顺序map()保持输入顺序，submit()需要手动管理Future对象。]]></description><category></category></item><item><title><![CDATA[python中的Lock、RLock、Condition与Semaphore详解]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148701440</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148701440</guid><author>Van_CLB</author><pubDate>Mon, 16 Jun 2025 22:11:39 +0800</pubDate><description><![CDATA[如果计数器为0，线程会被阻塞，直到有其他线程释放信号量。Lock是Python中最基础的同步原语，属于互斥锁，同一时刻只能有一个线程获取锁。各种同步原语的选择取决于具体场景：简单互斥用Lock，递归需求用RLock，复杂协调用Condition，资源池管理用Semaphore。）不同，RLock 会记录持有锁的线程和递归层级，避免同一线程重复获取锁时发生死锁。这里创建一个信号量实例，初始值为3，表示最多允许3个线程同时访问共享资源。语句确保线程在访问资源前获取信号量，访问完成后自动释放信号量。]]></description><category></category></item><item><title><![CDATA[python多线程通讯中共享变量与Queue的优劣详解]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148619980</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148619980</guid><author>Van_CLB</author><pubDate>Thu, 12 Jun 2025 22:47:56 +0800</pubDate><description><![CDATA[该示例演示了多线程环境下如何使用锁（Lock）确保共享资源（counter变量）的线程安全操作。最终结果正确输出500000，证明锁机制有效避免了竞态条件。需要极高性能的临界区操作简单状态标记（如停止标志）少量数据的实时更新生产者-消费者工作流需要缓冲的任务调度复杂消息传递（如传递对象）# 错误的多线程列表操作t.start()t.join()print(len(shared_list)) # 可能小于10000应改用Queue或+锁。]]></description><category></category></item><item><title><![CDATA[python中的GIL]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148595696</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148595696</guid><author>Van_CLB</author><pubDate>Wed, 11 Jun 2025 22:44:13 +0800</pubDate><description><![CDATA[Python的GIL（全局解释器锁）限制了多线程在CPU密集型任务中的并行性能，导致多线程可能比单线程更慢。]]></description><category></category></item><item><title><![CDATA[生成器详解]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148568853</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148568853</guid><author>Van_CLB</author><pubDate>Tue, 10 Jun 2025 22:03:10 +0800</pubDate><description><![CDATA[生成器是Python中一种特殊的迭代器，通过函数和yield关键字实现。其核心特点是惰性计算——仅在需要时生成值，而非一次性生成所有数据。生成器函数执行到yield时会暂停，保留当前状态，下次调用时从暂停处继续执行。该代码实现了从文件中逐行读取内容并过滤包含特定关键词的行，使用生成器（generator）实现高效的内存管理。适合处理大文件或需要流式处理的场景。]]></description><category></category></item><item><title><![CDATA[迭代协议、迭代器和可迭代对象详解]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148543893</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148543893</guid><author>Van_CLB</author><pubDate>Mon, 09 Jun 2025 22:04:53 +0800</pubDate><description><![CDATA[可以通过实现__iter__()方法创建自定义可迭代对象。]]></description><category></category></item><item><title><![CDATA[Python中的属性描述符，数据描述符和非数据描述符]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148239912</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148239912</guid><author>Van_CLB</author><pubDate>Mon, 26 May 2025 21:47:34 +0800</pubDate><description><![CDATA[Python属性访问机制遵循特定优先级规则：数据描述符（实现__get__和__set__）优先级最高，其次是实例属性，非数据描述符（仅__get__）再次之，最后是__getattr__兜底。数据描述符会拦截属性访问（如@property），而非数据描述符可能被实例属性覆盖。完整查找顺序为：1）数据描述符→2）实例字典→3）非数据描述符→4）类字典→5）__getattr__。这种机制实现了精细的属性控制，支持计算属性、只读属性等功能。]]></description><category></category></item><item><title><![CDATA[__new__、__init__、__getattr__、__getattribute__四个魔法函数详解]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148151205</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148151205</guid><author>Van_CLB</author><pubDate>Thu, 22 May 2025 23:30:27 +0800</pubDate><description><![CDATA[这段代码通过重写__new__方法，确保Singleton类只有一个实例存在。无论创建多少次Singleton对象，返回的都是同一个实例。这种模式在需要全局唯一对象的场景中非常有用。init__init__是 Python 中用于初始化对象实例的魔法方法。它在__new__之后被调用，负责设置对象的初始状态。__init__是开发者最常重写的魔法方法之一。print(obj.value) # 输出: 10getattr是 Python 中用于处理对象属性访问的魔法方法。当访问一个不存在的属性时，会被调用。]]></description><category></category></item><item><title><![CDATA[set与frozenset以及set中的运算详解]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148051728</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148051728</guid><author>Van_CLB</author><pubDate>Sun, 18 May 2025 22:59:11 +0800</pubDate><description><![CDATA[Set 和 Frozenset 是 Python 中用于存储无序且不重复元素的数据类型。Set 是可变的，允许添加或删除元素，而 Frozenset 是不可变的，创建后无法更改。]]></description><category></category></item><item><title><![CDATA[python中的深拷贝与浅拷贝以及字典中的常用方法]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/148050375</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/148050375</guid><author>Van_CLB</author><pubDate>Sun, 18 May 2025 21:58:14 +0800</pubDate><description><![CDATA[在Python中，深拷贝（deep copy）和浅拷贝（shallow copy）是两种不同的对象复制方式。使用copy模块的copy()和deepcopy()函数分别实现浅拷贝和深拷贝。此外，字典的常用方法如fromkeys、setdefault、get和update可以简化字典操作。根据需求选择合适的拷贝方式，避免意外副作用。]]></description><category></category></item><item><title><![CDATA[推导式详解]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/147964247</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/147964247</guid><author>Van_CLB</author><pubDate>Wed, 14 May 2025 22:27:29 +0800</pubDate><description><![CDATA[Python中的推导式是一种简洁且强大的工具，用于快速生成列表、字典、集合和生成器对象。列表推导式通过简单的语法生成列表，支持条件筛选和嵌套循环。生成器表达式则使用圆括号，生成一个惰性求值的生成器对象，适合处理大数据集。字典推导式和集合推导式分别用于创建字典和集合，同样支持条件语句和嵌套循环。推导式还可以处理复杂的数据结构，如嵌套列表或字典，并支持多重条件和嵌套循环。通过推导式，代码可以更简洁、高效地完成数据生成和转换任务。]]></description><category></category></item><item><title><![CDATA[array，deque与bisect详解]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/147963488</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/147963488</guid><author>Van_CLB</author><pubDate>Wed, 14 May 2025 21:41:45 +0800</pubDate><description><![CDATA[bisect 模块支持对有序列表进行二分查找，提供 bisect_left 和 bisect_right 函数，分别返回插入位置的左侧和右侧索引，适用于维护有序列表的场景。array 模块提供高效存储同类型数据的数组类型，适用于数值计算等需要大量同类型数据的场景。deque 是 collections 模块中的双端队列实现，支持在两端高效地进行插入和删除操作，适用于需要频繁在队列两端操作的场景，如实现队列或栈。]]></description><category></category></item><item><title><![CDATA[python实现可切片的对象]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/147935286</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/147935286</guid><author>Van_CLB</author><pubDate>Tue, 13 May 2025 23:34:36 +0800</pubDate><description><![CDATA[Python 切片语法 [start:stop:step] 允许从序列中提取子集，返回新列表而不修改原列表。start 为起始索引（包含），stop 为结束索引（不包含），step 为步长（默认为1）。切片支持正负索引、步长及反转操作。常见错误如 attempt to assign sequence of size 2 to extended slice of size 3 是由于赋值序列长度与切片长度不匹配，需调整切片范围或步长以解决。通过自定义类的 __getitem__ 方法，可以实现对切片的灵活处理]]></description><category></category></item><item><title><![CDATA[python中+、+=、extend、append的区别]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/147935068</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/147935068</guid><author>Van_CLB</author><pubDate>Tue, 13 May 2025 22:16:24 +0800</pubDate><description><![CDATA[在Python中，+、+=、extend和append用于操作列表，但它们的行为和用途不同。+操作符合并两个列表生成新列表，不修改原列表；+=操作符将元素添加到原列表中，类似于extend，但语法更简洁；extend方法将可迭代对象的元素逐个添加到列表中，直接修改原列表；append方法将单个元素（如列表）添加到列表末尾，也修改原列表。根据需求选择合适方法操作列表。]]></description><category></category></item><item><title><![CDATA[selenium框架解析]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/129099521</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/129099521</guid><author>Van_CLB</author><pubDate>Sun, 19 Feb 2023 17:20:42 +0800</pubDate><description><![CDATA[selenium基本操作详解]]></description><category></category></item><item><title><![CDATA[java实现验证码功能]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/121009266</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/121009266</guid><author>Van_CLB</author><pubDate>Thu, 28 Oct 2021 10:38:37 +0800</pubDate><description><![CDATA[使用java实现验证码
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Random;

public class Dish2 {
    public ]]></description><category></category></item><item><title><![CDATA[Jmeter基础]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/120434959</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/120434959</guid><author>Van_CLB</author><pubDate>Mon, 11 Oct 2021 13:54:26 +0800</pubDate><description><![CDATA[系列文章目录
文章目录系列文章目录前言一、Jmeter如何调用参数？二、Jmeter常用内置对象1.vars2.ctx和prev三、Jmeter内置函数


前言
随着现在公司对性能测试的需求越来越大，使用到Jmeter的场景也越来越多了，本篇文章，就围绕Jmeter来进行一些基础的分享。

一、Jmeter如何调用参数？
1.在Jmeter中 ，我们使用${参数名}的方式，来调用参数
2.所有以‘__函数名’格式命名的，都表示内置函数。
二、Jmeter常用内置对象
1.vars

如 API 文档 所言]]></description><category></category></item><item><title><![CDATA[python用几行代码实现数据的按列去重及合并处理]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/115076464</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/115076464</guid><author>Van_CLB</author><pubDate>Tue, 30 Mar 2021 16:00:33 +0800</pubDate><description><![CDATA[前言：
Pandas模块是Python用于数据导入及整理的模块，对数据挖掘前期数据的处理工作十分有用
话不多说，先上pandas官方文档：

pandas官方文档
数据处理参考文档A
数据处理参考文档B
本次将要实现的需求如下：
1.有一个Exscl表数据，该表有学员姓名 ，订单ID，ID ，以及购买的商品ID。数据格式如下：

2.现在要将上表处理成如下图所示格式：

3.接下来代码处理逻辑主要如下：
（1）当前三列的值都一样时，去重。
（2）当前三列的值，任意有一列不同时，则不去重。
（3）将第四列的值]]></description><category></category></item><item><title><![CDATA[Python使用Faker模拟网络虚假数据并保存到Exscl中]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/112557048</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/112557048</guid><author>Van_CLB</author><pubDate>Wed, 13 Jan 2021 15:58:31 +0800</pubDate><description><![CDATA[Python使用Faker模拟网络虚假数据并保存到Exscl中
1.需要使用三个包，分别将他们导入进项目
sys包用于在命令行执行
from faker import Faker
import xlwt
import sys

2.在我们进行前，先需要创建一个列表，该列表中包含各类信息
例如：电话，出生日期，所属省份（还可添加别的属性，调用faker的方法即可）
def  getInformationList():
    InformationList = []
    faker = Faker(loc]]></description><category></category></item><item><title><![CDATA[生成器与迭代器小结]]></title><link>https://blog.youkuaiyun.com/Van_CLB/article/details/108433081</link><guid>https://blog.youkuaiyun.com/Van_CLB/article/details/108433081</guid><author>Van_CLB</author><pubDate>Mon, 12 Oct 2020 14:01:38 +0800</pubDate><description><![CDATA[生成器与迭代器
1.可迭代对象：列表、字符串、字典等等
hasatter(list,"__iter__") #返回Ture则为可迭代对象

2.迭代器：
PS：迭代器并不会一次性把值全部存到内存，而是你读多少，他才存多少，所以不占内存，对于优化内存来说很好
可以把迭代器看成一个指针，调用__next__函数一次，则指针就移动一次
例如iter_lst，就可以调用4次，指针就会移动到最后，再调用就会报错了，那么
怎么把指针重新归位到0呢，最简单的方法就是重新赋值即可（iter_lst = iter(lst)）]]></description><category></category></item></channel></rss>