2023年工作初体验

news2024/11/28 10:45:14

23年终于正式入职,参与了正式上线的电商平台、crm平台等项目的研发,公司规模较小,气氛融洽,没有任何勾心斗角、末位淘汰,几乎没什么压力。虽然是我的第一家公司,但实际是个适合养老的公司(笑
总结下今年工作学到的实践经验

交流方面

多交流、多沟通,老员工知道哪个地方有现成的接口。重点还有多与需求方沟通,不要觉得自己刚来不好意思交流。
刚来在业务流程上的问题尤其要大胆说,说错了也没问题,新人本来就不熟悉业务,说出一个错误选项让师兄或业务部排除,比自己去看不熟悉的代码要省时间。
一定要会砍需求!我tm直接砍砍砍!其实和运营部门和产品经理关系还挺好的。网上互怼的段子也有不少。如果不砍需求做了无用功,还是自己吃亏,绩效也受影响。

工作流程

公司使用阿里云效进行需求管理,类似gitlab
用github比喻的话,“需求/任务”对应issue;可以在对应的需求/issue上建立有对应编号的分支;
提交到自己分支,然后在jenkins测试环境选中自己的分支构建,就可以让需求的提出者/测试人员也线上测试效果了;

测试通过的话就可以提交到master分支。同github相同,新建请求合并(pr)时可以选择评审人,由评审人负责code review

经验方面

idea 提取函数;比起复制粘贴老代码,还是提取为函数,方便以后统一修改(dry原则,don’t repeat yourself,避免同一功能重复使用);如果只记得修改一个地方,那其他几处就成了bug;
代码风格:给我做code review的这位,指出了使用stream 和 lambda表达式代替for循环赋值hashmap的问题。过去我比较喜欢朴素的写法,今后要保持风格一致。

性能

在遍历中最好不要有跨服务、跨接口、数据库的操作。我曾写过一个在遍历中调用dubbo远程接口查询订单的程序,耗时非常长;可以利用缓存"空间换时间"的思路,把数据取过来缓存在hashMap中。
之前开发的时候我只知道在For循环里查询数据库可能会对性能造成影响,现在知道了参与微服务开发后,在循环里遍历远程接口同样会对性能造成压力;而且接口都是设置了超时时限的,可能导致调用失败。

数据库

谨慎添加新字段。我刚入职添加了好多新字段,因为当时临近节假日,技术经理又放婚嫁去了,时间紧任务重,又是个性格内向的新人,进来没有好好了解需求和曾经的表结构。导致在数据库里加了不少多余字段(另一位师兄也很忙来不及细看)。一定要认真和产品经理(或类似提需求的职位,本文统称产品经理)好好交流那些内容需要哪些不需要;另外也要早点儿熟悉公司代码和表结构,有些冗余字段其实没必要加,可以用多表查询,同其他表的字段保持一致。

测试

公司唯一的测试妹子离职了,现在是自测+产品经理测,很多时候我这个不熟悉业务的新人测不出问题\bad
在实践中终于学会了打断点,并且再断点中改变数据进行测试。

postman测试

请求头中content type以填写的请求体为准,不能更改,要去选请求体的格式

测试的直接把验证码相关的校验给我注释起来口牙!

本地与开发环境配置

虽然.gitignore文件可以使git忽略一些文件,但在环境方面却有些难用,比如刚修改.gitignore后git默认还会追踪之前的那些文件;开发者本地开发时需要修改本地/测试/开发环境配置文件中的信息(比如有的开发者不会把开发环境放在本机127.0.0.1或是常用端口),需要提交时忽略这些更改,但此时的.gitignore确是公有库中大家都在使用的,不论是新增忽略文件、暂时忽略某些配置文件都挺难办;
师兄的解决办法是每次提交时在idea手动忽略;
我的办法是在idea的启动参数中指定环境,那里优先级高,覆盖掉配置文件的内容;这样每次启动时就会用本地环境,而且不用动任何文件;
在这里插入图片描述

规范与习惯

git提交消息:以需求编号开头
跟随前人的习惯写:项目新老代码交替,代码风格和技术栈多变。有的导出Excel功能用poi,有的用easyExcel;有的判空用==null三元表达式,有的用Objects.isNull(),还有的写if/else。我们代码好用==的三元表达式,那用同一个文件里统一用,不要一会if/else一会儿三元表达式。

不要用魔数,不要写这么复杂,有Objects.nonNull这个方法

    public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

instanceof是不会空指针的

interface中定义常量

contains用List不如Set

分布式事务

找一个中间的一致性管理?成本和复杂性太高,金融之类的强制要求可能需要

A调用B,B也有事务,A还没提交,B只能读老数据
要么A搞个接口让B读,也挺麻烦
要是改隔离级别,可能产生脏数据。
可以搞个job晚上自动核对数据,甚至发个报警让人工处理。每天几千笔极小交易的公司也是这么处理。
多表的update保持一致要加事务,但是分布式事务成本很高,所以用消息队列?主要还是为了异步吧,事务该被拆开还是拆开了。

测试环境和生产环境的不同

除了分支不同、jenkins构建的分支不同之外,有些参数也不同。
mq延时消息,延时级别对应的延时时长,测试环境数据库里的时间比较短,方便测试。正式环境比较长。

身体

身体是编程的本钱。曾有一次感冒发烧,39°C,代码是点进一层调用忘一层,第二天只能请假。一定要保证身体。

24年规划

  • 坚持写博客。今年没有打算争抢博客之星,倒是白白没落了几篇好文章啊
  • 加入某个权威性的计算机组织。(大不了趁三月打折买个CCF会员doge)
  • 尝试发表论文、同高校教师合作。虽然两年考研失败、一年忙于工作,几乎断了考研路,但还是有一小丢丢的科研♥呢。只能说体验体验吧

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

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

相关文章

Web自动化测试:POM设计模式的实现

关于pom设计模式(project Object model/PageObject),一种底层、逻辑、用例的分层,在项目还没有开发出来时,就可以开始写UI自动化脚本了,在开发完成后,再进行元素定位的适配以及调试;而且也可以多人共同维护…

清风数学建模笔记-主成分分析

内容:主成分分析 介绍: 主成分分析是一种降维算法,它通过旋转和变换将多个指标转化为少数几个主成分,这些主成分是原变量的线性组合,且互不相关,其能反映出原始数据的大部分信息。 例如解决多重共线性问题…

CSS 放大旋转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-scale-up: isAnimating }"><!-- 元素内容 -->&l…

不要盲目自学网络安全!学习顺序特别重要!

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…

计算机视觉入门与调优

大家好啊&#xff0c;我是董董灿。 在 CSDN 上写文章写了有一段时间了&#xff0c;期间不少小伙伴私信我&#xff0c;咨询如何自学入门AI&#xff0c;或者咨询一些AI算法。 90%的问题我都回复了&#xff0c;但有时确实因为太忙&#xff0c;没顾得过来。 在这个过程中&#x…

金和OA jc6 ntko-upload 任意文件上传漏洞

产品简介 金和网络是专业信息化服务商&#xff0c;为城市监管部门提供了互联网监管解决方案&#xff0c;为企事业单位提供组织协同OA系统升开发平台&#xff0c;电子政务一体化平台智慧电商平合等服务 漏洞概述 金和OA jc6系统ntkoUpload接口处存在任意文件上传漏洞&#xf…

day06、SQL语言之概述

SQl 语言之概述 6.1 SQL语言概述6.2 SQL语言之DDL定义数据库6.3 SQL语言之DML操纵数据库 6.1 SQL语言概述 6.2 SQL语言之DDL定义数据库 6.3 SQL语言之DML操纵数据库

python学完之后可以做什么,python学完可以做什么

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python学完可以做哪些工作&#xff0c;python学完之后可以做什么&#xff0c;今天让我们一起来看看吧&#xff01; Python是一种全栈的开发语言&#xff0c;你如果能学好Python&#xff0c;前端&#xff0c;后端&#x…

第十四章 14.2案例:使用KVM命令集管理虚拟机

查看命令帮助 [rootLinux01 ~]# virsh -h—————————————————————————————————————————— 查看KVM的配置文件存放目录〈test01 , xml是虚拟机系统实例的配置文件) [rootLinux01 ~]# ls /etc/libvirt/qemu —————————————…

[一文详解]Base64编码,Url Base64编码,UrlEncode编码,你还傻傻分不清吗?

base64编码 由来 Base64算法最早应用于解决电子邮件传输问题&#xff0c;在早期&#xff0c;电子邮件只支持ASCII码字符。 而ASCII码其长度为1个字节&#xff0c;是7位编码&#xff0c;最高位是0,是有符号字符型数。 如果要传输一封带有非ASCII码字符的电子邮件&#xff0c…

干洗机,将对相关行业带来巨大的发展机遇

干洗机是一种高效、节能、环保的清洗设备&#xff0c;广泛应用于干洗店、酒店、医疗机构、工厂等领域。全球市场 全球市场上&#xff0c;干洗机的市场规模和应用范围不断扩大。根据市场研究机构的数据&#xff0c;2019年全球干洗机市场规模约为80亿美元左右&#xff0c;年复合增…

2023年终总结,被裁员

在一个睡意朦胧的早上&#xff0c;我被闹钟惊醒&#xff0c;原来今天已经是2024年1月1日了&#xff0c;2023年平平无奇的结束了&#xff0c;唯一让我感触波深的事情是我在二月份的裁员名单里面。2024加油&#xff01;&#xff01;&#xff01; 工作上的总结 回顾2023&#xf…

LLM Agent之再谈RAG的召回信息密度和质量

话接上文的召回多样性优化&#xff0c;多路索引的召回方案可以提供更多的潜在候选内容。但候选越多&#xff0c;如何对这些内容进行筛选和排序就变得更加重要。这一章我们唠唠召回的信息密度和质量。同样参考经典搜索和推荐框架&#xff0c;这一章对应排序重排环节&#xff0c;…

听GPT 讲Rust源代码--compiler(8)

File: rust/compiler/rustc_trait_selection/src/solve/weak_types.rs 在Rust编译器的源代码中&#xff0c;rust/compiler/rustc_trait_selection/src/solve/weak_types.rs文件的作用是处理弱类型化解决方案。 在编译器中&#xff0c;当我们在代码中使用一个未经完全指定的泛型…

javascript 常见工具函数(二)

11.数组等分切片&#xff1a; this.newMapList []; for (var i 0; i < this.mapDataList.length; i 2) {this.newMapList.push(this.mapDataList.slice(i, i 2)); } 12.js做奇偶判断&#xff1a; if (this.mapDataList.length ! 0) {this.mapDataList.length % 2 0 ?…

python包chromadb安装失败总结

1&#xff0c;背景&#xff1a; 最近在学习langchain的课程&#xff0c;里面创建自己的知识库的Retrieval模块中&#xff0c;需要用到向量数据库。 所以按照官方的教程&#xff08;vectorstores&#xff09;&#xff0c;准备使用chroma的向量数据库。图片来源 2&#xff0c;问…

14.两数之和

题目 class Solution {public int[] twoSum(int[] nums, int target) {int[] ret {-1,-1};for(int i0;i<nums.length;i) {for(int ji1;j<nums.length;j) {if(nums[i] nums[j] target) {ret[0] i;ret[1] j;}}}return ret;} }

java实现大文件分片上传

背景&#xff1a; 公司后台管理系统有个需求&#xff0c;需要上传体积比较大的文件&#xff1a;500M&#xff0d;1024M&#xff1b;此时普通的文件上传显然有些吃力了&#xff0c;加上我司服务器配置本就不高&#xff0c;带宽也不大&#xff0c;所以必须考虑多线程异步上传来提…

Flink 维表关联方案

Flink 维表关联方案 1、Flink DataStream 关联维表 1&#xff09;概述 1.分类 实时数据库查找关联&#xff08;Per-Record Reference Data Lookup&#xff09; 预加载维表关联&#xff08;Pre-Loading of Reference Data&#xff09; 维表变更日志关联&#xff08;Refere…

SpringBoot从配置文件中获取属性的方法

方式一&#xff1a;Value 基本类型属性注入&#xff0c;直接在字段上添加Value("\${xxx.xxx}")即可&#xff0e;注意这里用的是$&#xff0c;而不是&#xff03;&#xff0c;Value注入的属性&#xff0c;一般其他属性没有关联关系。 配置文件 user:name: Manaphya…