个人介绍
工作经历
2020-06-01 -2022-12-01腾讯后端开发
主要从事python后台业务开发,设计各种好业务包括接口开发、工具开发以及负责对于项目问题进行定位 前期会对项目进行初步设计、设计评审,然后对项目进行详细设计并编写相关伪代码 最后开始相关开发工作
教育经历
2016-09-01 - 2019-06-01中南大学软件工程本科
就读于中南大学本科,专业是软件工程专业,校内积极参加各项程序竞赛并获奖,期间获得软件中级设计师证书
技能
•为了收集产品相关信息 ,在用户每次进行二维码扫描时,通过执行相关脚本对用户本地的产品信息进行采集,并将数据汇集到相关服务器上。 •将数据分为当前版本分布、 历史版本分布、补丁版本分布三种,在三个版本的基础上对数据进行去重处理,并对于相同 id 的数据进行更新覆盖。 •使用flask 的blueprint 来对web程序的控制层进行模块化管理,并对 url进行集中管理,方便后续拓展。 •鉴于当前数据结构简单、数据量插入较少以及使用方便(不需要部署服务),且经过性能对比 ,在当前 数据量下 sqlite 与mysql的读取速度相当,采用sqlite 来存储数据 •为了解决页面数据量大搜素慢的问题,维护一个由数据 icd、客户名称、产品版本相关的素引1,每次搜秦时借用索引对数据进行遍历提升遍历效率。
●兼容不同 cifs 版本挂载,失败则将挂载失败信息返回给前端 ●为了减少同时检测多个源端连通性所需时间,使用 WaitGroup 并发对连通性进行检验 ●通过使用定时任务的方式实现需要定时启动采集任务的需求,对于任务调度设计分为两点: 1 )对于单个定时任务,需要保证该定时任务可以在设置的时间内触发,当前运行的任务个数超过了设 置的最大任务并发数,需要进入排队等待,任务等待过程中,实时监测是否可以进入运行(排队转运 行),当排队超出其最大调度时间时,设置任务状态为失败,并停止调度。 2 )由于一个任务可以同时有多个调度,为了避免一个任务的多个调度冲突,引入调度队列概念(类似 生产者、消费者),每次新增一个调度就加入到调度队列中,通过不断轮询,判断当前是否有需要 执行的任务。 ● 对于采集任务的并发设计与实现:使用通道 Goroutine 的方式,先往通道中设置一个值,通过更新 通道中的值并使用 select 关键字监控相关值达到动态控制任务运行与停止。 ● 使用 gopool 来实现并发对于目录的遍历与数据的读取。
为了收集产品相关信息,在用户每次进行二维码扫描时,通过执行相关脚本对用户本地的产品信息进行采 集,并将数据汇集到相关服务器上。 ● 将数据分为当前版本分布、历史版本分布、补丁版本分布三种,在三个版本的基础上对数据进行去重处理, 用索引对数据进行遍历提升遍历效率。 并对于相同 id 的数据进行更新覆盖。 ● 使用 flask 的 blueprint 来对 web 程序的控制层进行模块化管理,并对 url 进行集中管理,方便后续拓展。 ● 鉴于当前数据结构简单、数据量插入较少以及使用方便(不需要部署服务),且经过性能对比,在当前 ● 将创建 pod 时,通过 nfs 共享来将远程目录挂载到当前 k8s 的 pod 目录上。 ● 为了支持使用 ak、sk 进行身份认证,使用 ak、sk 生成 sign,放置在请求头中进行访问,平台校验请求 ● 为了支持 k8s 创建 pv 时,动态在平台上创建目录并创建相关 nfs 共享,k8S 内部在创建 pv 时调用提供的 头中的 sign 字段来进行身份认证。 ● 在删除 pv 时,根据设置的备份策略,来选择是否删除挂载目录下的数据,并解除 ● 对于产品每次用户扫码的数据进行采集,并将相关数据传送到本地服务器 ● 对于数据进行清洗与去重处理 ● 将数据通过柱状图的形式展示数据量,并将数据在页面上以图表的形式展示 ● 支持对数据下载功能 ◆ 使用技术 数据量下 sqlite 与 mysql 的读取速度相当,采用 sqlite 来存储数据