当前位置: 首页 > news >正文

总结一下自己,最近三年,我做了哪些工作

简单总结下吧,我算是业务架构师,确实对得起这个名字,经常冲在一线,业务和架构相关的东西都有做,系统比较复杂,不过逐步了解谁都会熟悉的
下面简单列一列我这三年的工作情况吧,也算是给自己一个交代,不全,但大体就这些了

2021年

业务系统熟悉,技术框架熟悉

参与交易模式开发

2022年

工作流改造

工作流支持前台用户的参与:(原设计只能后台进行审核,前台用户也无法审核参与)

  1. 兼容老工作流使用

  2. 重新封装接口,前端使用组件不用变化

  3. 支持后台审核

  4. 支持前台用户程序调用提交

  5. 支持动态指定下一个审核人

  6. 支持接口调用流转节点

  7. 支持新增审核节点,可跳过业务,只做多节点的审核动作,无需更改代码

  8. 支持业务审核记录的查看追踪

  9. 支持审核过程中动态传递变量供决策等操作;支持多条线决策

容器化的搭建

功能能够给用户建立完整的系统,可通过运维平台查看操作相关功能,包括节点管理,容器组管理,容器管理工作负载,存储,配置等等,同时可部署常用的组件。

制作dockerfile,编写maven脚本打包安装包、镜像包推送到远程仓库

docker命令熟悉以及使用

可视化对接转化工具使用

一个公司的工具,比如对接银行时的报文不用写代码,像低码一样进行转化处理,弊端颇多,后来我封装了common包进行优化,定义规范,使调用方方便,使工具开发简洁,支持原来不支持的功能,记录报文

工具经过使用已暴露出多个缺点

  1. 有门槛

  2. JSON转JSON翻译key不支持可视化,只能自定义插件写代码,增加复杂度

  3. List如果只有一个对象,XML转换JSON后变成对象 (已通过自定义插件并引入解决此问题,略微麻烦)

  4. 无法指定类型如int,只能是String,如果银行方接收是其他类型,需要手动兼容处理,处理麻烦

  5. 没有设计性,lua脚本的编写只是为了转换参数,且开发困难,必须了解整个链路调用才能知道变量是从哪里定义的

  6. 异常处理机制不完善,无法调试,只能通过打印日志,且报错没有明确位置

  7. 每个对接一个微服务,浪费资源

交易服务代码抽取

交易模式慢慢变多,交易需要的各个资源很多都耦合到了整体的common中,其实交易可以看成整体的模块,很多校验相同,外部调用相同等等,现在的问题是各个交易模式相同的代码来回拷贝,有的相同的功能不同人用不同的方式来做,一般涉及共性修改,则所有项目都要修改,可维护性比较差

抽取common-trade公共模块治理代码,统一请求减少差异性,向下兼容,打通各个交易模块的服务壁垒,减少重复性工作,增强可维护性

  1. 生成交易编号封装

  2. 对外部服务的调用进行封装等等,此封装不仅仅是调用,要解析提供给当前服务所需要的东西

  3. 校验封装

  4. 共性交易相关Bean、枚举、常量、注解定义

  5. 共性交易工具类相关,如金额业务处理

  6. 共性业务封装,能够确定的共性业务,否则不要封装

框架升级

升级框架,提高了框架的可维护性和安全性

大家可以看这篇文章,这是我升级整理出来的 https://blog.csdn.net/Goligory/article/details/128314051?spm=1001.2014.3001.5502

项目开发

外部港口以及区块链对接

协议转让模块,监管模块,对外对接相关对接及改造等

工作流封装以及使用

脚手架的定义及维护;

相关项目的需求开发

其他

日志中心功能包括全链路日志检索,链路追踪、图表分析,链路分析包括耗时信息等可以很快定位问题

低码平台预研:功能还可以,版本比较低,业务最终没用起来

网关服务优化对内对外接口并落地标准文档;

设计滑动窗口限流方案;

设计个性化重推方案


2023年

产品

  1. 公共包完善:
  2. 工作流封装完善
  3. 接手产品仓单仓储业务;优化代码、日志以及注释,提高可读性和可维护性;解决遗留问题
  4. 仓单仓储完善相关索引设计;解决相关并发问题
  5. 产品仓单外部操作接口增加业务编号和合同编号并记录到日志中,提高交易与仓单的可追溯性

架构

  1. 框架维护升级
  2. 工作流维护升级;解决标题过长问题以及自定义标题问题
  3. 用户中心升级:使用表单自定义功能嵌入自己的业务规则,提高工作流使用的扩展性;
  4. 增加拦截器解决页面重复提交问题
  5. MQ死信队列丢失问题预研,目前死信队列的消息没有专门处理,超过规则限制会存在丢失的情况,需要整体整理topic以及队列管理,对死信队列有专门的处理并持久化等操作
  6. 数据库表索引问题:目前有一部分表没有常用索引,有些功能查询效率比较低下,最好规划预研Sql建立基础索引并优化大sql,提高查询效率,提高用户体验
  7. 统一网关完善:完善对接使用文档;增加获取文件接口;增加验签方式;增加对方访问我方的接口标准;
  8. 建立用户中心封装包并封装相关功能,后面需陆续在使用过程中迁移封装相关功能,易于产品管理

项目1

  1. 协议转让业务随着各个版本需求完善
  2. 监管功能支持
  3. 工作流使用完善,结合区域,市场,是否开启审核等等进一步控制工作流节点审核的权限
  4. 数据权限开发,根据不同规则进行sql路由

仓单项目

  1. 接手电子仓单业务;随着各个版本需求完善,解决遗留问题
  2. 代码优化,日志优化,注释优化
  3. 对接区块链,解决推送的高性能以及不丢失方案,支持定时失败重推,解决线程不释放导致线程池耗尽的问题
  4. 多港口港口对接代码重构,减少对接一个港口分散各处的改动,易于扩展,易于对接,对后面的对接提供了标准
  5. 仓单模块逆流程开发仓单注册和仓单质押
  6. 签章核心代码优化;注销、拆分、部分解质押增加签章背书
  7. 支持融资需求;网关支持完善SM2加密方式,增加根据fileId获取文件外部接口
  8. 多级审核(可设置人员以及顺序)

项目3

  1. 接手仓储模块(此时前女友开发了一版但是没有提测),仓单模块改造,对接仓储模块,随着各个版本需求完善功能
  2. 解决仓储环境部署配置问题;菜单问题;整理全量脚本
  3. 仓储功能入库预约单、入库单、在库库存、货主库存、库位库存、过户预约单、过户单、提货预约单、发货单、出库单的管理以及审核等功能在原基础上全流程开发;关于库存的问题点较多也比较严谨,各个业务功能都有库存的正向以及逆向处理,解决优化
  4. 仓单仓储打通:仓单的注册改造、注销、合并、转让-过户单、提货-发货单、仓管员帮货主注册、过户、提货等功能打通,并增加仓储相关审核,
  5. 仓单仓储有开关控制对接仓储和不对接仓储
  6. 仓储费(个性化)开发,支持指定人或市场自动初始化、自动收取
  7. 仓储后台建设
  8. 用乐观锁解决并发问题,完善库存相关的乐观锁判断
  9. APP接口支持

仓单仓储的熟悉改造并没有降低产品的质量,在改造过程中坚持更好的设计,注意其可扩展性以及可维护性,为后面继续变动提供了好的基础

项目4

  1. 撮合引擎开发
  2. 基于期限、用户、部分成交标识的算法匹配;
  3. 日终对账逻辑开发,以撮合为核心对委托单进行对账并通知上下游
  4. 监控统计接口开发;
  5. 支持其他查询等功能

业务开发总结

  1. 有时急于满足客户需求没走正常流程,导致开发设计质量低下,开发和测试没有足够的自测测试时间,存在返工情况或其他风险,后面尽量沟通好确定的需求再移交开发
  2. 需求以及设计文档考虑不够详细,开发过程中发现有细节业务问题,会导致返工或工时不够的情况;后面需求设计尽量有业务闭环,原型、如涉及现有系统改动需提供改动点等,不仅仅完善了文档,同时减少了开发以及测试的问题
  3. 开发存在临时解决问题的情况,后面会很难维护:需要从一开始做好设计,提高开发觉悟,开发前自发组织简单的评审讨论
  4. 客户推动的业务时间很有限,和第一条类似,开发人员需把关质量,且评估是否能够完成,提早暴露风险,最好减少极致压缩时间的情况,提高产品质量;同时这一条也取决于上一条的设计,如果比较灵活,那么交付效率就会更高,质量更好
  5. 有个别生产问题由于升级时没有配置相关配置导致,部署需严格按照交付文档来配置,做好具体的版本管理,否则如果有的配置比较重要会有很大的业务风险;

架构开发设计为了建设产品解决客户问题,产品的建设为了快速交付,应关注研发产品以及我们业务产品,用技术赋能业务,提高客户满意度;

多会用更多的时间在架构和产品层面做出成果,帮助团队减负提效,提高交付效率,提高整个系统的扩展性,易用性,稳定性

2024年

  1. 仓单项目-树结构需求和客户沟通;逆流程开发
  2. 仓储服务业务需求开发;
  3. 仓单服务仓库和平台审核顺序+是否需要审核的动态配置

结尾

三年时间说长不长,说短不短,很感谢现在这个公司,也感谢领导对我的重用,系统的业务复杂程度还是蛮高的,我们想方设法做产品,但是比较难的正是做产品,既不能过于灵活增加太大的复杂度,又不能个性化严重,很难快速交付,期间我们会写概设,操作手册,需求沟通,落地文档,开发进度把控,项目进度把控,测试进度,难点攻关,等等等等;后面还是需要继续磨炼技术,做一些架构选型

在此过程中发现大多数人还是只是搬砖,if,临时方案,日志混乱,注释缺失,没有流程图,没有设计文档,一旦有需求修改就要各个地方都改,影响老功能;一旦有问题一脸蒙圈,也忘记了当初的设计初衷。排除能力在外,首先需要摆正的是心态,而日志注释这些并不难

所以我们需要想一下怎么才能提高自身的效率?进而提升团队的效率,当我们有这个想法的时候,我想就不存在为了省事xxxx了,工作过程中不求一定会遇到一个伯乐领导,但是首先自己有个好的心态工作也会开心,同时遇到的问题也会变少,因为排查问题,需求扩展等等各方面都比较容易,反而不需要加班加点

祝大家好运,祝我自己好运~

相关文章:

总结一下自己,最近三年,我做了哪些工作

简单总结下吧,我算是业务架构师,确实对得起这个名字,经常冲在一线,业务和架构相关的东西都有做,系统比较复杂,不过逐步了解谁都会熟悉的 下面简单列一列我这三年的工作情况吧,也算是给自己一个交…...

SpringCloud Gateway基础入门与使用实践总结

官网文档:点击查看官网文档 Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关。但在2.x版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关替代Zuul,那就是SpringCloud Gateway一句话…...

TensorBoard在pytorch训练过程中如何使用,及数据读取问题解决方法

TensorBoard 模块导入日志记录文件的创建训练中如何写入数据如何提取保存的数据调用TensorBoard面板可能会遇到的问题 模块导入 首先从torch中导入tensorboard的SummaryWriter日志记录模块 from torch.utils.tensorboard import SummaryWriter然后导入要用到的os库&#xff0…...

【Vue】普通组件的注册使用-全局注册

文章目录 一、使用步骤二、练习 一、使用步骤 步骤 创建.vue组件&#xff08;三个组成部分&#xff09;main.js中进行全局注册 使用方式 当成HTML标签直接使用 <组件名></组件名> 注意 组件名规范 —> 大驼峰命名法&#xff0c; 如 HmHeader 技巧&#xf…...

爬虫之反爬思路与解决手段

阅读时间建议&#xff1a;4分钟 本篇概念比较多&#xff0c;嗯。。 0x01 反爬思路与解决手段 1、服务器反爬虫的原因 因为爬虫的访问次数高&#xff0c;浪费资源&#xff0c;公司资源被批量抓走&#xff0c;丧失竞争力&#xff0c;同时也是法律的灰色地带。 2、服务器反什么…...

2.1.4 采用配置类与注解方式使用MyBatis

实战概述&#xff1a;采用配置类与注解方式使用MyBatis 创建MyBatis配置类 在net.huawei.mybatis.config包中创建MyBatisConfig类&#xff0c;用于配置MyBatis核心组件&#xff0c;包括数据源、事务工厂和环境设置。 配置数据源和事务 使用PooledDataSource配置MySQL数据库连接…...

微信小程序云开发实现利用云函数将数据库表的数据导出到excel中

实现目标 将所有订单信息导出到excel表格中 思路 1、在页面中bindtap绑定一个导出点击事件daochu() 2、先获取所有订单信息&#xff0c;并将数据添加到List数组中 3、传入以List数组作为参数&#xff0c;调用get_excel云函数 4、get_excel云函数利用node-xlsx第三方库&#…...

python 字符串(str)、列表(list)、元组(tuple)、字典(dict)

学习目标: 1:能够知道如何定义一个字符串; [重点] 使用双引号引起来: 变量名 "xxxx" 2:能够知道切片的语法格式; [重点] [起始: 结束] 3:掌握如何定义一个列表; [重点] 使用[ ]引起来: 变量名 [xx,xx,...] 4:能够说出4个列表相关的方法; [了解] ap…...

【源码】SpringBoot事务注册原理

前言 对于数据库的操作&#xff0c;可能存在脏读、不可重复读、幻读等问题&#xff0c;从而引入了事务的概念。 事务 1.1 事务的定义 事务是指在数据库管理系统中&#xff0c;一系列紧密相关的操作序列&#xff0c;这些操作作为一个单一的工作单元执行。事务的特点是要么全…...

技巧:合并ZIP分卷压缩包

如果ZIP压缩文件文件体积过大&#xff0c;大家可能会选择“分卷压缩”来压缩ZIP文件&#xff0c;那么&#xff0c;如何合并zip分卷压缩包呢&#xff1f;今天我们分享两个ZIP分卷压缩包合并的方法给大家。 方法一&#xff1a; 我们可以将分卷压缩包&#xff0c;通过解压的方式…...

数据挖掘 | 实验三 决策树分类算法

文章目录 一、目的与要求二、实验设备与环境、数据三、实验内容四、实验小结 一、目的与要求 1&#xff09;熟悉决策树的原理&#xff1b; 2&#xff09;熟练使用sklearn库中相关决策树分类算法、预测方法&#xff1b; 3&#xff09;熟悉pydotplus、 GraphViz等库中决策树模型…...

Python机器学习预测区间估计工具库之mapie使用详解

概要 在数据科学和机器学习领域,预测的不确定性估计是一个非常重要的课题。Python的mapie库是一种专注于预测区间估计的工具,旨在提供简单易用的接口来计算和评估预测的不确定性。通过mapie库,用户可以为各种回归和分类模型计算预测区间,从而更好地理解模型预测的可靠性。…...

Linux基础指令磁盘管理002

LVM&#xff08;Logical Volume Manager&#xff09;是Linux系统中一种灵活的磁盘管理和存储解决方案&#xff0c;它允许用户在物理卷&#xff08;Physical Volumes, PV&#xff09;上创建卷组&#xff08;Volume Groups, VG&#xff09;&#xff0c;然后在卷组上创建逻辑卷&am…...

Python怎么添加库:深入解析与操作指南

Python怎么添加库&#xff1a;深入解析与操作指南 在Python编程中&#xff0c;库&#xff08;Library&#xff09;扮演着至关重要的角色。它们为我们提供了大量的函数、类和模块&#xff0c;使得我们可以更高效地编写代码&#xff0c;实现各种功能。那么&#xff0c;Python如何…...

Python | 虚拟环境的增删改查

mkvirtualenv创建虚拟环境 mkvirtualenv是用于在Pyhon中创建虚拟环境的命令。它通过使用vitualenv库来创建一个隔离的Python环境&#xff0c;以便您可以安装特定版本的Python包&#xff0c;而不会影响全局Python环境。 使用方法: 安装virtualenv&#xff1a;pip install vir…...

【MySQL数据库】:MySQL内外连接

目录 内外连接和多表查询的区别 内连接 外连接 左外连接 右外连接 简单案例 内外连接和多表查询的区别 在 MySQL 中&#xff0c;内连接是多表查询的一种方式&#xff0c;但多表查询包含的范围更广泛。外连接也是多表查询的一种具体形式&#xff0c;而多表查询是一个更…...

C# FTP/SFTP 详解及连接 FTP/SFTP 方式示例汇总

文章目录 1、FTP/SFTP基础知识FTPSFTP 2、FTP连接示例3、SFTP连接示例4、总结 在软件开发中&#xff0c;文件传输是一个常见的需求。尤其是在不同的服务器之间传输文件时&#xff0c;FTP&#xff08;文件传输协议&#xff09;和SFTP&#xff08;安全文件传输协议&#xff09;成…...

二、【源码】实现映射器的注册和使用

源码地址&#xff1a;https://github.com/mybatis/mybatis-3/ 仓库地址&#xff1a;https://gitcode.net/qq_42665745/mybatis/-/tree/02-auto-registry-proxy 实现映射器的注册和使用 这一节的目的主要是实现自动注册映射器工厂 流程&#xff1a; 1.创建MapperRegistry注册…...

Android Compose 十:常用组件列表 监听

1 去掉超出滑动区域时的拖拽的阴影 即 overScrollMode 代码如下 CompositionLocalProvider(LocalOverscrollConfiguration provides null) {LazyColumn() {items(list, key {list.indexOf(it)}){Row(Modifier.animateItemPlacement(tween(durationMillis 250))) {Text(text…...

Wireshark 如何查找包含特定数据的数据帧

1、查找包含特定 string 的数据帧 使用如下指令&#xff1a; 双引号中所要查找的字符串 frame contains "xxx" 查找字符串 “heartbeat” 示例&#xff1a; 2、查找包含特定16进制的数据帧 使用如下指令&#xff1a; TCP&#xff1a;在TCP流中查找 tcp contai…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...