实习两个月总结

目录

1.业务熟悉

1.1司测流水线

1.2工作台

1.3数据中心

2.技术学习

2.1HTTP

2.2mongodb

2.3Node.js

3.需求开发

3.1工作台游戏权限申请Gopenid简单校验

3.2简单记录流水线编辑历史

3.3优化日志查看过慢

3.4设备池分组名排序优化

3.5CP与导师关系

3.6资源路径查询


1.业务熟悉

1.1司测流水线

基于ActionTestPictureByFenxi:

(1)Agent触发、采集、上报流程:


(2)Host端触发、分发Agent、收集结果、通知前端:

1.2工作台

前端-客户端-服务端模式

1.3数据中心

基于司测框架

2.技术学习

2.1HTTP

2.1.1网页资源加载和呈现流程

2.1.2Http请求和响应的组成

  • HTTP 响应由两部分组成:
    • 响应头:告诉浏览器内容类型、编码、缓存等信息。
    • 响应体(Response Body):实际的内容,比如 HTML、JSON、图片等。

2.1.3Get请求与Post请求的区别

|------|-----------|-------------|-------------------------------------------|
| 请求类型 | 参数传递位置 | requests 参数 | 传输格式示例 |
| GET | URL 查询字符串 | params | ?key1=value1&key2=value2 |
| POST | 请求体 | data 或 json | 表单格式( key1=value1&key2=value2 )或 JSON 格式 |

2.1.4 Http请求携带参数

|--------|----------------|----------------|-----------------|----------------------------|
| 参数 | 作用 | 适用请求类型 | 传入数据类型 | 发送方式 |
| params | URL 查询参数 | GET、DELETE 等 | dict、list、bytes | 编码成 URL 查询字符串,附加在 URL 后面 |
| data | 请求体数据(表单或原始数据) | POST、PUT、PATCH | dict、bytes、文件 | 以表单格式或原始格式放在请求体中发送 |
| json | 请求体 JSON 数据 | POST、PUT、PATCH | Python 对象(dict) | 自动编码成 JSON,设置 Content-Type |

2.2mongodb

2.2.1 mongodb常用指令

增删查改、建索引.....

2.2.2 mongodb索引

单键索引、复合索引、唯一索引....

2.3Node.js

2.3.1Node.js核心机制

1. 调用栈(Call Stack)

2. 事件队列(Event Queue / Task Queue)

3. 事件循环(Event Loop)

  • 事件循环的核心职责是:不断监视调用栈是否为空

  • 当调用栈为空时,事件循环会从事件队列中取出第一个任务(回调函数)放入调用栈执行。

  • 这样保证了异步回调不会打断当前正在执行的同步代码。

2.3.2 async与await字段

2.3.3回调函数

回调函数(callback)就是作为参数传递给另一个函数的函数,用来在某个时刻被调用。

3.需求开发

3.1工作台游戏权限申请Gopenid简单校验

**任务:**对Gopenid的大小进行限制(Uint64)

调试收获:

1.在客户端打印返回值进行判断服务器的处理结果

2.在前端(ApplyAuth.tsx)即控制台打印消息log进行判断客户端的返回值

开发收获:

在客户端先做校验进行过滤,确保请求参数合法(减小服务端压力)

再在服务端添加校验,防止部分用户未更新客户端造成遗漏

对校验字符进行数字转化后比较 ;BigInt()函数:可转化无限大的数值

对代码公用部分尽量做到复用

3.2简单记录流水线编辑历史

**任务:**记录流水线编辑操作的信息,在修改流水线成功时保存相关信息

开发收获:

建立流水线id和修改时间的联合索引,后续可查某条流水线的最近修改/某段时间修改记录

掌握司测QAD开发模式,用于声明DAO层数据结构,表结构。

掌握司测插件注册管理,通过coreService统一调用。

3.3优化日志查看过慢

**任务:**为日志查看建立硬盘缓存

开发收获:

在不同的编码格式下,中英文字符占用的字节数不同,例:1个UFT-16的编码单元占两个字节。

掌握司测QAP开发模式,用于声明协议、req、rsp,封装请求响应。

优化方案采用建立硬盘缓存日志文件,用队列+LRU的方式进行淘汰缓存,map内存缓存用来管理硬盘缓存淘汰。

3.4设备池分组名排序优化

**任务:**全部分组在最前面,公共分组次之,新增分组在最后面,其它分组按照字典序排列

开发收获:

掌握sort()函数进行排序

3.5CP与导师关系

**任务:**腾讯文档更新入库、CP/非CP用户查询

开发收获:

WSD/WSP是工作台中定义协议和数据的文件,司测用的是QAD/QAP。

数据库采用增量更新时,筛选条件必须唯一,如果筛选出多条就会导致不准确。

将CP与普通用户合为一张表,建立userType+userName的复合唯一索引,在查询时联合查询。

调用腾讯文档API进行获取数据时:req格式、rsp格式、接口错误信息(阅读API文档获得)

3.6资源路径查询

**任务:**按日期获取某个分支下的某个类型下的所有异常资源路径、某个资源路径的具体异常信息

涉及多表查询,需要先从第一张表中根据req字段定位一条资源,再去第二张表中查看这条资源的多条扫描结果,再去第三张表中查具体扫描结果中是否含异常信息。

开发收获:

涉及到的数据库表数据量较大(数百万),在用查第二张表的结果集查第三张表时会过慢,聚合keys进行查询,分次访问数据库频次过多会卡顿,将查得结果集再分类即可。

但速度仍旧比较慢,引入内存缓存缓解多次请求时过慢问题,但在初次请求仍旧耗时。(需求方表示按照此方案,可以接受数据量大时响应慢)

联调收获:

功能实现的基础上,一定要注意性能消耗、响应时间,是否在需求方接受的范围内。

关于需求确认、原模块实现要和相关人员提前沟通,经过转述会导致较大偏差,影响效率。

相关推荐
herderl14 分钟前
**僵尸进程(Zombie Process)** 和**孤儿进程(Orphan Process)**
linux·运维·服务器·网络·网络协议
tomelrg24 分钟前
多台服务器批量发布arcgisserver服务并缓存切片
服务器·python·arcgis
泽020238 分钟前
Linux 编译器 gcc 与 g++
linux·运维·服务器
G_H_S_3_1 小时前
【网络运维】Playbook项目实战:基于 Ansible Playbook 一键部署 LNMP 架构服务器
linux·运维·服务器·网络·ansible
岚天start2 小时前
Linux sar命令详细使用指南
linux·运维·服务器·负载·sar·磁盘io·sysstat
wanhengidc7 小时前
当云手机出现卡顿怎么办?
运维·服务器·安全·智能手机
元清加油11 小时前
【Golang】:函数和包
服务器·开发语言·网络·后端·网络协议·golang
向日葵.13 小时前
fastdds.ignore_local_endpoints 属性
服务器·网络·php
昵称为空C15 小时前
SpringBoot接口限流的常用方案
服务器·spring boot