OKR:Objectives and Key Results,直译为目标和关键成果。OKR可以理解为是一种自下而上的管理方式,员工制定目标,然后去执行,员工的目标汇集而成就是公司的目标
KPI:关键绩效指标。KPI可以理解为是一种自上而下的管理方式,公司制定目标,由上至下为员工分配任务,员工去执行。OKR和KPI都是用来衡量员工在公司的表现的方法,具体可以点击这个链接查看:KPI vs OKR:区别与联系的终极指南
BG:Business Group,事业群,包含BD
BD:Business Development, BD指事业部,包含BU
BU:Business Unit,BU指业务线,产品线,它们之间的关系,BG > BD > BU
Code review:代码评审,你在gitlab提交代码以后,并不是你写好代码觉得没问题就行,会有相应的负责人对你的code进行review(审评)
CR:看语境来理解。可以作为Code Review的缩写。也可以作为Change Request 的缩写,意为需求变更,新建一个CR就是新建一个变更
TL:Team Leader,团队领导
PM:Product Manager,项目经理
PD:可以译作Product Director(产品主管)或Project Director(项目主管)的意思
PRD:Product Requirement Document,产品需求说明书,一般是PD来写的
MRD:Market Requirement Document,市场需求文档
Kick Off:kick off 源自于足球,就是开球,发球的意思。在IT项目中,表示项目启动会议
Deadline:最后期限,完成任务的最终时间
owner:比如技术owner,小组内的技术leader,一个owner管的人一般不是很多,可能就一个组,十多二十人
QA:Quality Assurance,测试
PE:Production Engineer,运维工程师
DBA:Database Administrator,删库跑路的事件大家基本上都听过吧,数据库作为公司的重要数据资产,肯定不能随便让人接触,所以数据库一般都是有专门的DBA来进行管理,使用时需要向DBA同事申请权限
ERP:Enterprise Resource Planning Administration的缩写,意为企业资源计划。ERP系统可以看作将企业的各个业务整合到一个信息系统上面。比如很多银行之前的业务都是外包给各个软件公司做的,各个业务模块之间的数据并不互通,就需要进行集成,打造一个ERP系统。
CRM:Customer Relationship Management,客户关系管理,CRM系统主要用来管理客户信息,在此基础上才能对客户数据进行分析,然后提供个性化的服务。
各种O:CEO,CTO,COO,CIO,CFO。说实话我也不是很熟悉这些职位之间的区别,至需要记住的是缩写中的C是chief,首席的意思,反正就是你的各种老大就是了,放尊重点就对了。
UV: Unique Visitor,访问你的网站的某个客户端为一个访客。0:00-24:00内相同的客户端只被计算一次
PV: Page View,具体是指网站的页面流量或者点击量,页面被刷新一次就计算一次。如果网站被刷新或者被点击了了1000次,那么流量统计工具显示的PV就是1000
GMV:Gross Merchandise Volum,成交总额,在电商中经常听到这个词,指拍下的订单金额,包含已付款和未付款的部分
DAU:Daily Active User,每日活跃的用户,即日活,这是互联网领域通常听到的一个词,互联网公司关注的不仅仅是收入,利润,通常都还会刻意强调日活。AU,Active User,还有这个词也需要注意下,通常都是一些互联网公司才会关注这些点。同理,MAU,Monthly Active User,月度活跃用户,即月活
DO:Data Object,Java对象,通常与数据库表字段一一对应
VO:View Object,通常是指返回给页面进行展示的对象
BO:Business Object,业务对象。一般用在Service层
POJO:Plain Ordinary Java Object,传统意义上的 java 对象,只有属性和一些getter/setter方法。
DAO:Data Access Object,数据访问对象,就是一般所说的DAO层,连接数据库与程序之间的桥梁。访问数据库时,将数据库表中的一行数据映射到一个对象上,返回给程序使用,插入数据时,将程序中的一个对象解析为数据库中的一行记录插入到数据库中。类似于使用MyBatis中的mapper,通常在DAO/Mapper层实现对数据库的CRUD。
DTO:Data Transfer Object,数据传输对象,在不同的层级之间传递某个对象时,可能某个层级只需要该对象的部分属性,如果将该对象整个都进行传递,有点浪费,因此可以抽取该对象的部分属性组装成一个临时的Object,这就是DTO。
Domain:实体,通常也是一个Java类,类中的属性与数据表中的字段通常一一对应
各种类型的Object太多了,可以看看我总结的这张图,不一定非常准确,但大致应该是这样。现在大部分的Web 或者 App 项目都采用了MVC三层架构,大致可以分为如下三层,其中Repository 层负责数据访问,Service 层负责业务逻辑,Controller 层负责暴露接口
DDD:Domain Driver Design,领域驱动设计,一种设计思想,在微服务领域很火
ORM:Object Relational Mapping,对象关系映射,通常都是指一些ORM框架,比如Hibernate,Mybatis等自动或者半自动的ORM框架
DB:database,数据库
AOP:Aspect Oriented Programming,面向切面编程
MVC:Model-View-Controller,一种架构设计,现在的Web开发基本上都是MVC三层架构
RPC:Remote Procedure Call,远程过程调用协议,工作中通常会接触很多RPC框架,包括gRPC ,Thrift,Dobbo等等
VPN:Virtual Private Network,一提到VPN很多boy就兴奋了,此VPN非彼VPN,虽然功能都差不多。绝大部分公司都有自己的VPN来访问公司的内网,公司的数据都是珍贵的资源,不能放在互联网上,都会放在自己的专有网络中
CRUD:CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。
MQ:Message Queue,消息队列,常用的消息队列,Active MQ,Rabbit MQ,Rocket MQ,Kafka
RESTful(REST):你的接口设计得够不够 RESTful?REST是一种软件架构设计风格,英文名全称太长,就不用关心了,需要知道的是REST是一种面向资源的设计的风格。比如,几乎每个系统都有登录和注销功能,如果你理解成登录对应于 login()、注销对应于 logout() 这样两个独立服务,这是“符合人类思维”的。如果你理解成登录是 PUT Session,注销是 DELETE Session,这样你只需要设计一种 “Session 资源” 即可满足需求,甚至以后对 Session 的其他需求,如查询登录用户的信息,就是 GET Session 而已,其他操作如修改用户信息等等,都可以被这同一套设计囊括在内
CDN:Content Delivery Network,简单来讲,CDN就是用来加速访问的,类似于缓存,他能让用户就近访问数据,这样就能更快的获取到需要的数据。举个例子,现在服务器在北京,深圳的用户想要获取服务器上的数据就需要跨越一个很远的距离,这显然就比北京的用户访问北京的服务器速度要慢。但是现在我们在深圳建立一个cdn服务器,上面缓存住一些数据,深圳用户访问时先访问这个cdn服务器,如果服务器上有用户请求的数据就可以直接返回,这样速度就大大的提升了
DNS:Domain Name System,简单来说就是通过域名查找对应的服务器的IP地址进行访问,通常与CDN结合在一起。比如要访问某个视频网站,为了使得用户的播放效果最佳,一定是访问用户附近的 CDN节点,而不是让用户去访问主节点,我们怎么知道用户的所在位置从而给他分配最佳的CDN节点呢,这就需要DNS服务来进行定位了
OSS:Object Storage Service,对象存储服务,可以理解为就是一个网盘,用来存储数据,通常将数据存储在OSS后都会得到一个URL,通过这个URL就能访问到实际存储的数据
IDE:Integrated Development Enviroment,集成开发环境,比如常用的开发平台,比如IDEA,Pycharm都是IDE
一方库,二方库,三方库:一方库,又称一方包 ,指本工程中的各模块的相互依赖,是本项目中的依赖。二方库,又称二方包,公司内部的依赖库,一般指公司内部的其他项目发布的jar包。三方库,又称三方包,公司之外其他组织的开源库,来自第三方的依赖比如apache、google等发布的jar包
QPS,TPS:QPS,Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。TPS,Transactions Per Second的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。
吞吐率(吞吐量):吞吐率 = 真正的工作时间 / 总的工作时间,可以理解为吞吐率越高,工作效率就越高,通常是某种效率的衡量指标。比如虽然你一天24小时看起来都在工作,但实际上真正全身心投入工作的时间才2h,吞吐率就是2/24,另一个同学一天只工作八个小时,但是有6个小时都是在全身心工作,那么吞吐率就是6/8。吞吐量这个词在网络中通常会听到,比如带宽是100M,但是吞吐只有10M,说明大量的带宽被闲置着,造成资源的极大浪费。
load:负载,机器CPU load过高,你就要注意点了
A/B测试:测试的时候经常会听到这个词,A/B 测试的目的是为了进行数据分析,因此通常被当作大数据平台的一个部分。A/B 测试将每一次测试当作一个实验。通过 A/B 测试系统的配置,将用户随机分成两组或者多组,每组用户访问不同版本的页面或者执行不同的处理逻辑,即运行实验。通常将原来产品特性当作一组,即原始组;新开发的产品特性当作另一组,即测试组。Facebook 之前开发出新的首页布局版本后,并没有立即向所有用户发布,而是随机选择了向大约 1% 的用户发布,即这 1% 的用户看到的首页是新版首页,而其他用户看到的还是原来的首页。过一段时间后观察两部分用户的数据指标,看新版本的数据指标是否好于旧版本
灰度发布(灰度测试):经过 A/B 测试验证过的功能特性,就可以发布到正式的产品版本中,向所有用户开放。但发布的时候也不是一次就将新版本发布给全部用户,而是一批一批逐渐发布给用户。在这个过程中,监控产品的各项数据指标,看是否符合预期,如果数据表现不理想,就停止灰度发布,甚至进行灰度回滚,让所有用户都恢复到以前的版本,进一步观察分析数据指标
回归测试:回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误
IaaS、PaaS、Saa:IaaS:Infrastructure as a Service(基础设施即服务),PaaS:Platform as a Service(平台即服务),SaaS:Software as a Service(软件即服务)
API,接口:Application Programming Interface。接口说起来大有来头,在Java程序员或者是OOP程序员的眼中,接口是Java中的interface,将定义interface与实现implementation分离,这通常都被认为是优秀的程序设计的所应该具有的特性,接口可能也只是一个URL,现在都主张前后端分离,后端提供数据,前端显示数据,前端显示的数据来自于哪里,就是靠后端提供的接口,访问/dashboard/collect,得到用户的收藏数据,访问/dashboard/purchase得到用户的购买数据