实习内容总结

news2024/12/29 9:00:19

目录

  • 项目
    • BMS后台管理系统
    • Fantasy
    • Payment通用支付框架
  • 技术文档

实习时间:2022.12 ~ 2023.06

公司是初创公司,主要专精于AIGC方向,之前主要是To C的业务,做三消类游戏。今年刚刚转向To B业务,我去的时候Golang研发团队刚刚组建,所以很多项目还没来得及发展,所以这一次实习中参与了很多项目从零到一的研发,其中如分布式任务调度系统,通用支付框架,这些基础的服务让我收获很大。

项目

公司主要采用的是微服务架构,这一次实习主要负责的项目是BMS后台管理系统、Fantasy App(AI GC)、Payment通用支付框架、Skynet分布式任务调度系统。也协助参与了其它一些项目的开发,比如Marmot、Avata、Vine(作业调度系统)等项目。

BMS后台管理系统

这个项目主要是对公司其它项目进行管理,不对外开放。比如说AI头像这个模块就可以对Ai头像这个项目的任务,套餐,优惠券,分类等模块进行管理。

在这个项目中,我需要去理解公司各个项目相关模块的代码流程,然后根据我的需求查漏补缺,最后接入到BMS系统中。

Fantasy

这个项目功能上来说较为简单,主要是根据用户提供的提示词生成ai图片。它的制作流程是前端发起制作,调用后端api,后端api通过调度服务创建任务,调度服务再去具体的任务处理程序进行处理。最终任务程序处理好之后,再回调任务调度系统。 至于任务调度系统是否回调业务系统,根据情况不同,有不同的处理方案。

我的主要收获第一是项目的安全性——任何app那边过来的数据都是不可信的,起码,是不完全可信。比如购买金币,如果金币是前端app算好之后传给后端,用户就可以截取数据包并且修改数据包,意味着他可以花最低的钱,然后想得到多少,就得到多少金币。

这在之前,我考虑的很少。在这个产品之后,我时常把自己代入到用户的视角,如果我是一个想要搞鬼的用户,我会怎么去进攻?然后做好防护。

我经历了这个产品的一步步迭代,让我看到任何产品的开始,都是很不完美的,是直接将产品扔到市场里进行真刀真枪的演练,然后高速的进行迭代。这让我对处理事情,解决问题也有了另一种解法,就是永远不要想着把事情做完美了再拿出来,我们没有时间精雕细磨,先做,迅速得到反馈,然后再往下说怎么改进。

Payment通用支付框架

这个项目诞生的目的是给公司其它产品提供通用的支付服务,具有支付订单创建,校验,回调业务系统的功能,以及对于通知失败的订单进行一定次数的重试,并记录失败原因,方便后期回溯。

它是基础性的项目,让我增加了很多对于架构的经验,也让我了解了各个第三方平台的支付流程。

站在整个公司的项目生态上来说,左边是之前的方式,每一个业务系统都有自己的一套支付服务,代码的复写率很高,业务系统和支付服务没有解耦,增加了很多运营成本。而现在把支付服务独立出来,就把业务系统和支付服务解耦了,整体上简洁了很多。

从单个项目来说,也把从前的方式修改为了下图右边的形式,使功能和平台之间的关系更明确了,让整个系统的支付流程更简洁,当添加新的第三方支付平台时,不需要做更多的维护工作。

技术文档

除了项目,在实习期间也对团队的推动做了一些事情。挤时间整理了几个入门方面的文档。

第一个是后端入门指南,讲的是从在Go官网下载Go的SDK开始,到最后能把我们公司的代码运行起来,有详细的步骤以及图示。

第二个文档介绍了阿里云平台CI/CD(持续集成,持续交付,持续部署)全流程的方方面面内容,比如创建仓库,创建流水线,部署。

第三个文档是我发现团队中会有信息缺失的问题,常常是我卡在一个地方很久,后来才发现公司已经有相应的解决方案。这个就会让我面对问题的时候,解决起来束手束脚,所以我把我目前知道的,平时研发时所用到的关于我们公司的网站,以及我们公司自研的一些库的地址都整理了进去,并且对这些工具进行描述,以及补充一些基本的使用。

成长是有代价的,我希望我的后来者可以站在我的肩膀上去思考问题,少走弯路。我不嫉妒身边的人超越我,因为我身边的牛人越多,我当然也不会很差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/613832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java性能权威指南-总结6

Java性能权威指南-总结6 垃圾收集入门垃圾收集概述GC算法选择GC算法 垃圾收集入门 垃圾收集概述 GC算法 JVM提供了以下四种不同的垃圾收集算法: Serial垃圾收集器 Serial垃圾收集器是四种垃圾收集器中最简单的一种。如果应用运行在Client型虚拟机(Windows平台上的32位JVM或…

【TaskMatrix.AI - Visual ChatGPT】连接超大模型和超多API来完成任务

Github项目地址:https://github.com/microsoft/TaskMatrix 目前大规模预训练模型(比如ChatGPT)已经能够完成多个任务,例如 提供强大的对话功能,in-context learning能力和代码生成能力生成高层次的解决问题框架 然而…

Vue.js 比较重要知识点总结四

概述 ref toRef toRefs进阶,深入理解vue3 setupVue3为何比Vue2快?怎样理解 Vue 的单向数据流?Vue 中事件绑定原理vue3 mitt 使用 ref toRef toRefs进阶,深入理解 为何需要ref? 返回值类型,会丢失响应式se…

【常用设计模式】待补充

Github仓库地址 概述 23中设计模型分为常见的三大类:创建型模式、结构型模式和行为型模式 创建型模式 简单工厂模式 描述 简单工厂模式不是23中设计模式中的。简单工厂模式不直接向客户端暴露对象创建的细节,而是通过一个工厂类来负责创建产品类的实…

12.MSP432E4 Keil烧录报错Error Flash Download failed - Cortex-M4

一、简介 前段时间琢磨了一块新板子,ESP432E401Y。 遇到一个问题,简单记录一下,问题是在keil中正常烧录程序后,在CCS下也烧录了一次程序,然后就一直无法再到keil中烧录,但是CCS一直是正常烧录的。keil报错…

Spark集群搭建

系列文章目录 Ubuntu常见基本问题 Hadoop3.1.3安装(单机、伪分布) Hadoop集群搭建 HBase2.2.2安装(单机、伪分布) Zookeeper集群搭建 HBase集群搭建 Spark安装和编程实践(Spark2.4.0) Spark集群搭建 文章目…

linux开发:linux最大线程数分析

linux最大线程数分为,进程最大线程数,用户最大进程数, 整个系统已用的线程或进程数。 我们可以用下面命令进行查询这三个进程数。 linux系统可生成最大线程数可以用这个命令查询 cat /proc/sys/kernel/threads-max 进程最大线程数查询方式 ps…

家用儿童帆布床出口欧盟CE认证EN716测试

1.标准适用范围 该标准规定了内部长度大于900mm但不超过1400mm的家用童床的安全要求。该安全要求适用于完全组装完毕待用的童床。可以转换成其它产品的童床(如:可变产品、游戏床)转换后应该符合相关欧洲标准。该标准不适用于提篮、婴儿床和摇…

hacknet攻略(更新中)

序章 然后点自己的电脑,再点一下SCAN(扫描可用主机),再点断开 然后点蓝色的电脑,是连接的意思 点中间Probe系统图标,看开放端口数 若端口数为0可以使用porthakc命令直接黑入系统 几个会用到的命令cd, rm * ,dc关闭连接&…

Unity制作二次元卡通渲染角色材质——4 、内外描边和细节添加

Unity制作二次元材质角色 回到目录 大家好,我是阿赵。 这里继续讲二次元角色材质。这次打算讲一下描边和细节的添加。 一、外描边 外描边的做法也不止一种,比如后处理方法的偏导数ddx/ddy之类的,也能整个屏幕的求出边缘。但一般来说单模型渲…

MySQL数据库学习笔记(九)实验课六之触发器和存储过程

没想到这就是最后一次实验了。 一点知识: 道具 – delimiter / DELIMITER 这是用于指定语句分隔符的特殊命令 默认情况下,MySQL使用分号(;)作为语句的结束符。然而,当我们需要定义存储过程、触发器或函数等包含多条S…

51智能小车-串口控制、循迹、避障

目录 1.串口控制小车 2.循迹小车 3.避障小车 1.串口控制小车 L9110s概述 接通VCC,GND 模块电源指示灯亮, 以下资料来源官方,但是不对,根据下节课实际调试 IA1输入高电平,IA1输入低电平,【OA1 OB1】电机…

总结890

学习目标: 月目标:6月(线性代数强化9讲2遍,背诵15篇短文,考研核心词过三遍) 周目标:线性代数强化3讲,英语背3篇文章并回诵,检测 每日必复习(5分钟&#xff…

STM32开发——简介、开发环境(Keil5、CubeMX)、HAL库

目录 1.简介-初识STM32 2.开发环境 2.1使用Keil5 2.2使用STM32CubeMX 3.标准库与HAL库区别 4.推挽输出与开漏输出 1.简介-初识STM32 什么是单片机? 单片机(Single-Chip Microcomputer)是一种集成电路芯片,把具有数据处理能…

kafka部分面试常见问题及其解答(接上)

16. kafka创建Topic时如何将分区分配给各Broker 副本因子不能大于 Broker 的个数;第1个分区(partition_0)的第1个副本放置位置是随机从brokerList选择的;其他分区的第一个副本放置位置相对于partition_0依次往后移。 如果我们有5…

vue 3 第三十二章:状态管理(Pinia状态持久化)

Pinia 的状态持久化 在实际开发中,我们通常需要对状态进行持久化或缓存,以便在应用程序重新加载或离线时仍然能够访问数据。在 Pinia 中,我们可以使用插件来实现状态的持久化和数据缓存。 Pinia 提供了一个名为pinia-plugin-persist的插件&…

Linux - 文件操作和系统接口

​​​​​​​ 感谢各位 点赞 收藏 评论 三连支持 本文章收录于专栏【Linux系统编程】 ❀希望能对大家有所帮助❀ 本文章由 风君子吖 原创 ​​​​​​​ ​​​​​​​ ​​​​​​​ ​ 前言 对于文件操作,不知大家是否有过接…

永恒之黑漏洞复现

一、实验环境搭建 系统镜像: ed2k://|file|cn_windows_10_consumer_editions_version_1903_x64_dvd_8f05241d.iso|4905476096|F28FDC23DA34D55BA466BFD6E91DD311|/ 建议使用迅雷下载,安装版本选win10专业版 安装完后记得一定要关闭defender,防火墙&…

配置主机加入已有 tinc 集群简明过程

文章目录 Cent OS服务器安装tinc配置文件过程中使用到的一些Linux命令小记 启动tinc开放端口 Windows主机参考资料 本文的主要内容是如何将主机加入已有的 tinc 集群。 Cent OS服务器 安装tinc yum install tinc如果不先 su 到 root 账户的话,可能会无法安装。 因…

Python模块os 操作系统

目录 1. 系统类 --------------------- 解释器 --------------------- system 执行系统命令 wait 等待任意子进程 waitpid 等待指定的子进程 kill 指定杀死进程 abort 立即中止解释器 pipe 管道操作 --------------------- 随机字符 --------------------- urandom …