常看常新的技术常识
最近由于项目所需,工作重心向产品方向发生了倾斜,除了照常梳理需求、输出交互稿外,还需要对接开发、领导、业务方等,协调各方资源来保障项目的正常进行。由于业务方不直接与开发对接,“我”成了整个链条的中枢,这对个人综合能力又有了新的要求:
- 在业务方提出新需求时,要初步评估技术的可实现性、时间成本、可调用的开发资源等,及时辨别并拒绝不合理的需求能极大的节省沟通成本;
- 在跟开发沟通时,能更好的评估开发周期;
- 当系统出现问题时,需要能判断出大概的原因和解决方向,协助运维对问题进行排查
以上三点都需要我们对基本的技术知识有一定了解,于是趁着业余时间查阅了相关资料。得益于大学课程的丰富性,许多技术知识都接触过,省了不少理解的时间。想着时间一久又容易忘记,所以将这些零碎的知识汇总在一块,希望常常温故而知新。
技术名词汇总
XML/JSON | 可扩展的结构化数据传输格式,使不同编程语言进行数据传递和交互 | 英语之于各国语言,普通话之于各方言;两者好比两种格式的信纸,写了同一封内容的信 |
---|---|---|
URL | 唯一资源定位符 | 指纹 |
token | 令牌,访问操作的许可授权 | 健身房的卡,持卡进入,逾期作废 |
cookie | 用户身份标识,储存在客户端 | 解决http协议无状态的弊端,为了让客户端和服务端建立长久联系 |
session | 用户身份标识,储存在服务端 | |
SDK | 软件包、软件框架、操作系统等建立应用软件时的开发工具的集合 | |
单点登录 | 一个账号只需要登录一次就可以访问不同页面或产品 | eg:登录QQ,可以访问QQ空间、QQ邮箱等其他服务 |
写死 | 将数据集写死在本地,省去数据接口的开发,可以快速实现效果,但不利于更新 | |
负载均衡 | 将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行 | 交通指挥调度中心,实现流量动态平衡 |
产品与技术
技术原理:
- first…second…then….
- if,do;else if ,do
- 重复做某件事N次
- 只要满足某个条件,就一直做这件事
数据结构
单一数据项根据一定的规则形成的结构,用来对零散数据进行结构化管理。
队列
特点:先进先出,顺序执行
应用场景:1、电商领域商品抢购;2、消息推送;3、排队叫车
树状结构
特点:唯一根节点,多个末端节点
应用场景:1、角色权限设计;2、tab导航;3、文件系统设计
数组
数组是指具有相同数据类型的数据元素组成的集合。数组同样有数据类型,而且一个数组内只能同时存在一种数据类型
特点:数据按顺序成组,每个数据项都有下标,数据项位置可交换
应用场景:1、列表展示;2、排序
栈:汉诺塔结构
特点:后进先出
应用场景:返回,从三级页面返回到一级页面,需要先回到二级,才能再回到一级
程序方法:程序中的最小执行单元,一个方法定义输入输出参数,方法体执行对应的业务逻辑
技术架构:MVC
Model(M):模型结构层(数据)
- 数据结构
- 代码实现数据结构
- 代码实现被调用方法
- …
View(V):视图层(界面元素)
- 前端页面框架
- 页面控件、布局
- 调用方法
- …
Controller(C):控制器(逻辑处理)
- 设计控制器结构
- 业务逻辑
- 控制页面更新和展示
- 数据更新
- …
例:邮箱注册
前端
cookie
存储于客户端本地的一个文本文件,用来记录用户个人信息和浏览历史
- 存储在客户端本地
- 具备有效期
- 可手动清除
Session
是服务端生成的一个访问状态,存储在服务端,用来校验用户身份有效性
- 存储在服务端
- 可设置有效期
- 状态由服务端控制,客户端不可控制
web静态和动态页面
后端
缓存
缓存是一种临时存储机制,目的是用来提升数据加载过程中的速度和使用体验
缓存分为:
- 一级缓存:手机内存,读取速度快,空间共享,数据临时性存储
- 二级缓存:硬盘存储,空间独享,永久性存储
React Native
一种基于Web技术开发native app的技术,在不用发布前端版本的基础上实现热更新
优势:
- App可以像网页一样更新,随时发布,不依赖于版本迭代
- 不再区分程序员职能,一套应用程序统一开发
- 代码复用度高,避免多端兼容
消息推送
类型:
- 主动轮询
- 建立长链接
- 心跳消息
API
接口,一种客户端和服务端进行数据传输和交互的数据协议通信协议,约定客户端和服务端之间数据传输格式的访问地址
组成:url+数据参数
eg:登录接口:
url:https://192.168.0.1:8080/myserver/login.do
参数:{“username”:”bliss”,”password”:”000000”}
API调用:
- 同步调用
- 回调
- 异步调用
SDK
软件开发包(Software Development Kit),是一系列开发工具(API)的集合
常见的:定位SDK、推送SDK,类似于别人已经把这个服务做好了,打包成一个模块,我们直接调用就行了,不用再浪费成本去研发该服务
接口请求与响应
- 客户端程序通过发送HTTP请求访问对应的API(URL),并携带参数(JSON/XML)传递给服务端。
对应产品功能:
- 一个功能可能只对应一个API,也可能同时调用多个API;
- 一次功能操作,API可以顺序执行调用,也可以异步处理调用;
- 服务端接收API调用后,处理业务逻辑,并将处理结果以数据参数的形式返回给客户站
对应产品功能:
- 客户端操作某一功能后,等待服务端返回结果;
- 等待服务端响应功能结果,可以是同步的,也可以是异步的;
数据库
了解数据库的基本结构,知道每一种实体间的关系是如何设计的,设计产品时才能从数据的角度考虑产品的设计逻辑,设计出更符合数据模型的产品
数据库和服务端的关系:服务端程序处理业务逻辑,然后调用数据库进行数据操作
工作原理:
- 被服务端调用,进行数据增删改查
- 服务端程序通过SQL语句操作数据库,SQL语句需要工程师通过写代码的方式实现
- 数据库运行在服务器上,数据存储在服务器硬盘中
数据库表和关系结构
数据库“表”对应客观世界中的一个实体,“表”的名就是实体名,“表”的字段就是实体属性实体“人”一用户“表”
实体“订单”一订单“表”
实体“商品“——商品“表”
表与表之间关系结构可以是:1:n、n:n、1:1,通过“主键”进行关联
主键:每个表中,唯一标识一条数据的字段
eg 1:商品表的主键:productid,订单表主键:orderid
productid | productname | price | color |
---|---|---|---|
1 | 毛巾 | 100 | white |
2 | 水杯 | 50 | blue |
ordertid | totalprice | productid | time |
---|---|---|---|
10103871 | 150 | 1、2 | 20230417132719 |
10389021 | 100 | 1 | 20230514182305 |
eg 2:
SQL
结构化查询语言,是一种用来操作关系型数据库的编程语言,可以理解为对数据库的操作命令
数据表索引
索引是基于数据库表某一列或几列建立的目录结构
优点:通过索引能极大提高数据的查询效率
缺点:
1、索引需要耗费一定的物理存储空间,索引单独维护
2、每次对数据表更新的同时需要更新维护索引表
3、需要花费较多的时间去建立和维护索引,随着数据总量的增加,花费的时间也将增加
数据存储与恢复
数据存储在数据库中,数据库在物理上位于服务器的数据磁盘中,数据磁盘通常划分为两个区域:1、索引区;2、数据区
评估研发工作量需要从哪些方面进行考量: