当你学会这项python数据提取神器时,请做好升职准备,三年软件测试开发

本文介绍了一位拥有IT行业经验的作者分享的《2024年最新软件测试全套学习资料》,旨在帮助自学者建立系统化的学习路径,包括基础知识、进阶课程和实战项目等内容,助力技术提升和职业发展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

class_info = {“class_one”: { “students”: [ {“name”: “张一”, “sex”: “男”, “age”: 18, “height”: 170.5 }, {“name”: “张二”, “sex”: “女”, “age”: 20, “height”: 160.5 }, {“name”: “张三”, “sex”: “男”, “age”: 18, “height”: 170.5 }, ], “teacher”: { “name”: “李小二”, “sex”: “男”, “age”: 30, “height”: 185.5, “teacher”:“递归搜索测试” }}}

● $:根元素​​​​​​​

import jsonpath#获取根元素下所有数据,2种写法一样#.的作用等同于[]表示子元素result = jsonpath.jsonpath(class_info, ‘ . ∗ ′ ) r e s u l t 2 = j s o n p a t h . j s o n p a t h ( c l a s s i n f o , ′ .*')result2 = jsonpath.jsonpath(class_info, ' .)result2=jsonpath.jsonpath(classinfo,[*]’)print(result)print(result2)输出:[{‘students’: [{‘name’: ‘张一’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}, {‘name’: ‘张二’, ‘sex’: ‘女’, ‘age’: 20, ‘height’: 160.5}, {‘name’: ‘张三’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}], ‘teacher’: {‘sex’: ‘男’, ‘age’: 30, ‘height’: 185.5, ‘teacher’: ‘递归搜索测试’}}]

● . or []:子元素

import jsonpath
#.与[]作用相同后续就只写一个了
result = jsonpath.jsonpath(class_info, ‘$.class_one.students’)
print(result)

result = jsonpath.jsonpath(class_info, ‘$[class_one][students]’)
print(result)
输出:
[[{‘name’: ‘张一’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}, {‘name’: ‘张二’, ‘sex’: ‘女’, ‘age’: 20, ‘height’: 160.5}, {‘name’: ‘张三’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}]]

●  [,]:支持迭代器中做多选,多个 key 用逗号隔开

import jsonpath
#递归查找包含teacher 或者 name的值

…:表示递归查找,可以搜索到该json下所有符合条件的数据

result = jsonpath.jsonpath(class_info, ‘$…[teacher,name]’)
print(result)
输出:
[{‘sex’: ‘男’, ‘age’: 30, ‘height’: 185.5, ‘teacher’: ‘递归搜索测试’}, ‘张一’, ‘张二’, ‘张三’, ‘递归搜索测试’]

#获取students下第0个和第2个元素
re = “$…students[0,2]”
result = jsonpath.jsonpath(class_info,re)
print(result)
输出:
[{‘name’: ‘张一’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}, {‘name’: ‘张三’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}]

● [start:end:step]:数组分割操作,等同于切片 , 遵循左闭右开原则

import jsonpath#获取前2位学生的信息,支持下标运算,类似list通过下标取值一样result = jsonpath.jsonpath(class_info, ‘$.class_one.students[0:2]’)print(result)输出:[{‘name’: ‘张一’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}, {‘name’: ‘张二’, ‘sex’: ‘女’, ‘age’: 20, ‘height’: 160.5}]

● ?():应用过滤表示式

import jsonpath#找出年龄大于18的学生result = jsonpath.jsonpath(class_info, ‘$.class_one.students.[?(@.age>18)]’)print(result)输出:[{‘name’: ‘张二’, ‘sex’: ‘女’, ‘age’: 20, ‘height’: 160.5}]

六、过滤表达式

原字符描述
==等于符号,但数字 1 不等于字符 1
!=不等于符号
<小于符号
<=小于等于符号
>大于
>=大于等于符号
=~判断是否符合正则表达式,例如[?(@.name =~ /foo.*?/i)]
in所属符号:[?(@.name in[‘张二’,‘张三’])]
not in排除符号:[?(@.name not in [‘张二’,‘张三’])]
&&逻辑 AND,用于合并多个过滤器表达式
II逻辑 OR,用于组合多个过滤器表达式

七、过滤表达式使用

● ==:等于​​​​​​​

import jsonpath#下面几个比较的和这个一样就不写了#找出name张三的学生result = "$.class_one.students.[?(@.name’张三’)]"print(result)输出:[{‘name’: ‘张三’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}]

● in:所属符号

import jsonpath
#获取name等于张二或者张三
re = “$.class_one.students.[?(@.name in [‘张二’,‘张三’])]”
result = jsonpath.jsonpath(class_info,re)
print(result)
输出:
[{‘name’: ‘张二’, ‘sex’: ‘女’, ‘age’: 20, ‘height’: 160.5}, {‘name’: ‘张三’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}]

#找出name为张二,张三的学生年龄
re = “$.class_one.students.[?(@.name in [‘张二’,‘张三’])].age”
result = jsonpath.jsonpath(class_info,re)
print(result)
输出:[20, 18]

● &&:逻辑 AND,用于合并多个过滤器表达式​​​​​​​

import jsonpathre = "$…students[?(@.name==‘张三’ && @.age==18)]"result = jsonpath.jsonpath(class_info,re)print(result)输出:[{‘name’: ‘张三’, ‘sex’: ‘男’, ‘age’: 18, ‘height’: 170.5}]

●  || 逻辑 OR,用于组合多个过滤器表达式​​​​​​​

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
b (备注软件测试)**
[外链图片转存中…(img-JrSx8Vpu-1713547554550)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

### 使用 vLLM Docker 镜像运行 Qwen2 模型 为了在内网环境中通过Docker和vLLM框架部署并运行Qwen2模型,需遵循特定步骤来准备环境、拉取镜像以及配置必要的启动参数。 #### 准备工作 确保本地机器上已预先安装好Docker服务,并且对于GPU加速支持的情况,还需确认CUDA环境的正确设置。此外,准备好用于存储模型文件的目标路径也是必不可少的一部分[^1]。 #### 获取vLLM镜像 采用阿里云提供的官方仓库地址获取适配于Qwen系列模型的vLLM版本镜像。这一步骤可通过执行`docker pull`命令完成,具体操作如下所示: ```bash docker pull registry.cn-hangzhou.aliyuncs.com/isdockers/vllm-openai:v0.6.1 ``` 此命令会从指定位置下载对应标签(`v0.6.1`)下的最新构建好的vLLM镜像至本机缓存中待后续调用[^3]。 #### 启动容器实例 当一切就绪之后,则可以通过定义一系列选项来创建一个新的容器实例以加载所需的Qwen2模型。下面给出了一组典型的命令行参数组合方式作为参考: ```bash docker run --rm \ -v /home/user/models:/data \ -p host_port:container_port \ --ipc=host \ --gpus '"device=device_id"' \ image_name \ --dtype float_type \ --served-model-name model_name \ --gpu-memory-utilization utilization_ratio \ --model path_to_model_directory ``` 其中, - `-v` 参数指定了宿主机上的目录映射到容器内部的位置; - `-p` 设置端口转发规则以便外部访问API接口; - `--ipc=host` 和 `--gpus` 分别用来优化进程间通信效率和支持多GPU场景下资源分配策略; - 而最后几个带有前缀双破折号 (`--`) 的部分则是传递给应用程序本身的初始化指令集,包括但不限于数据类型精度设定、提供在线服务使用的名称标识符、控制单张显卡内存利用率的比例值以及实际存放预训练权重文件夹的具体路径等细节说明。 特别需要注意的是,`--served-model-name` 参数不可或缺,它决定了客户端发起预测请求时所依据的服务名;另外,选用经过量化处理过的轻量级变体有助于降低计算成本的同时保持较高的性能表现水平[^4]。 ```python import requests response = requests.post( 'http://localhost:host_port/v1/completions', json={ "prompt": "你好", "max_tokens": 50, "temperature": 0.7, "top_p": 0.95, "n": 1, "stop": ["\n"], "logprobs": None, "echo": False } ) print(response.json()) ``` 上述代码片段展示了如何向已部署完毕的服务发送HTTP POST请求从而实现交互式对话功能演示的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值