备注:持续更新中.......(欢迎点赞收藏)
目录
I.技术名称
1.1 工程师口中的术语
1.1.1 类、实例
1.1.2 打印
1.1.2 写死
1.1.3 控件和组件
1.1.4 进程和线程
1.1.5 脚本
1.1.6 同步处理和异步处理
II.数据
III.基础知识
3.1 客户端
3.1.1 Android应用打包及发布
3.1.2 IOS应用打包及发布
3.2 服务端
3.2.1 服务端基本架构
3.2.2 数据接口及结构
3.2.3 服务端与客户端的交互模型
3.2.4 服务端部署及运维
3.2.5 云服务器
3.3 Web基础知识
3.3.1 web介绍
3.3.2 WebAPP和Native APP
3.3.3 HTML/CSS-网页的骨骼和外衣
3.3.4 URL和HTTP
3.3.5 cookie和session
IV.排查问题
4.1.1 如何判断产品问题是否出自服务端
I.技术名称
1.1 工程师口中的术语
1.1.1 类、实例
类可产生很多具体的示例,基于类实例化的具体对象。
UML相关文章见:
/WY_star1/article/details/128185974
1.1.2 打印
通常在调试产品问题或进行开发测试时,工程师会高频使用。
打印:一种结果的输出;只是将程序运行的结果“打印”到命令控制台上。
可将运行结果可视化。
(ps:映射到现实中,是指将文件或图片通过打印机从计算机世界输出到现实中)
eg:编写一个加法的程序片段
编译完成后,需测试加法程序是否运行正确,会输入2个参数然后查看程序的运行结果,程序运行结果输出到命令控制台的过程就是“打印”。
1.1.2 写死
写死——技术实现方案的描述。
示例:设计一个下拉选择框用来切换不同的城市
(1)将城市数据放在服务端,客户端通过请求数据接口将城市数据获取回来再显示在下拉列表中
好处:灵活性高,只调整服务端数据内容即可,客户端不需作修改,但需要开发一个专门的数据接口获取这部分数据
(2)(写死)将城市列表数据存放在客户端,客户端从本地读取城市列表并展示在下拉列表中
好处:开发量少,可快速实现效果。
1.1.3 控件和组件
(1)控件:产品中最小界面元素组成单元就可叫作控件。(eg:按钮、输入框等)
(2)组件:多个控件的组合 (eg:tab组件,点击不同的底部按钮可切换不同模块)
1.1.4 进程和线程
(1)进程:运行应用程序
每一个正在运行的程序也是一个进程(eg:APP)
(2)线程:更小的执行单元(一个进程中可以有多个线程)
eg:微博
运行中的微博是一个进程;
用户上传照片发微博,上传视频发微博 是独立的线程,这2个任务可同时运行互不影响。
产品之所以能同时完成很多功能,就是因为线程的存在,尤其是涉及需要网络请求的功能时,
1.1.5 脚本
当需要对数据库进行批量处理时,工程师会说:跑一个脚本统一处理
脚本——一种被计算机执行的程序;
1.1.6 同步处理和异步处理
在程序执行过程中会涉及同时处理多个任务或者同一 时间只处理一个任务的情况。
(1)同步处理
同一时间只执行一个简单任务,任务处理完后再执行第二个任务,同步处理适用于一些顺序执行的任务。
eg:流水线处理
(2)异步处理
异步处理不会造成线程阻塞,相当于 各自处理各自的任务。
II.数据
可参考文章【表结构数据】—CDA-LEVEL1备考_两条线-TL2M的博客-****博客
III.基础知识
3.1 客户端
3.1.1 Android应用打包及发布
Android 应用开发完成后,需被打包成一个扩展名为“apk”文件(AndroidPackgae),完整的安装包。
通过开发工具将开发完成的代码及一些素材一起编译打包成一个APK文件。
由于Android市场的多样化,在打包时Android给我们提供了一个选 项,即标记安装包的渠道来源。
3.1.2 IOS应用打包及发布
iOS应用打包是通过苹果推出的开发工具Xcode完成的,打包完成 后,可以进行几种类型的发布。
(1)发布至苹果的官方应用市场AppStore,通过Xcode上传安装包到AppStore,等苹果的审核人员对应用进行测试和审核后,审核成功可通过AppStore下载应用。
(2)发布内部测试版,在指定的测试设备上安装应用包。
有限授权的方式,苹果会给具备开发资格的开发者账户授权,每个账户能开通有限的测试设备,授权的设备可不通过AppStore 直接安装应用包。(.ipa)
3.2 服务端
3.2.1 服务端基本架构
服务端,别名:云端、云服务器。
云服务器:指物理机房托管在第三方,不需要自建机房。
2个客户端之间的信息互动和数据传输是通过服务端完成的。
客户端与服务端借助网略进行数据传输,数据传输基于基本数据传输协议,定义数据传输的规则叫接口。
- 负载均衡器:负责调度;
用来处理大规模请求的服务器,可将同时进来的大量访问请求根据应用服务器的忙碌程度进行动态调度。
- API服务器:(Application Programming Interface)服务器;应用服务器;
API服务器根据不同的客户端请求进行相应的业务逻辑处理,并将处理完成的结果返回给客户端。
也会有多台同时运行来分流处理客户端请求,分流通过负载均衡来调度。
- 数据库服务器:负责运行后端数据库
为了保证系统数据的安全性,在多台数据库服务器上会存储同一份数据。当某台数据库服务器发生异常,其他的可作为备用使用
eg:用户通过客户端访问某一个商品信息时,应用服务器会根据用户请求从数据库中查询商品信息,应用服务器会根据用户请求从数据库中查询商品信息并返回给客户端。
产品业务逻辑:
接收来自客户端的请求,根据请求类型进行对应的逻辑处理,处理完成后将处理结果返回给客户端。
一个完整的客户端与服务端交互流程:
- ①客户端发起请求,
- ②服务端处理请求,
- ③服务端将处理结果返回客户端。
3.2.2 数据接口及结构
数据接口是指客户端与服务端进行传输和交互的数据协议,数据接口是一种数据交换的标准。
eg:用户输入密码登录
用户通过客户端的登录功能向服务端发起登录请求时,客户端将用户名和密码通过数据接口经网络传递给服务端,服务端判断处理完成后再将处理结果通过数据接口返回给客户端,客户端根据服务端返回的结果进行登录反馈处理。
数据接口的构成:key-value的形式,键值对
- 键:key;代表某一个数据字段所表达的意思
- 值:value;这个数据字段的内容
eg:
“{username:ryan,password:123}
定义了2个字段username和password;值是 ryan,123
服务端返回:{code:200,message:登录成功}”
————————————————
在实际应用中,有2种常用的数据接口结构,是JSON和XML
(JavaScript Object Notation)
格式:
大括号里 叫作JSON对象;
左边是键,右边是值,需用引号括起来;(用逗号分割)
-
{
-
"username":"ryan",
-
"password":"123"
-
}
-
-
--在JOSN里表示数据结构:
-
-
{
-
"name":"张三",
-
“skil”:["足球","篮球","羽毛球"]
(Extensible Markup Language)
可扩展标记语言,可用来进行简单的结构化文本数据的存储。
XML结构可自定义,基本元素:一个个标签构成。
每一个标签都由标签头和标签尾构成,内容在中间。
“<name>ryan</name>”就是一个完整的标签体,尖括号内是标签的名字,标签尾用“/”加在标签名之前表示。
应用领域:
XML结构体积比JSON大,而且阅读结构不如JSON清晰。
主流一般使用JSON结构。
在Android开发中,界面布局文件是通过XML结构实现,很多服务器配置文件也是通过XML结构实现。
当产品经理衡量一个功能的工作量时, 不能只看功能本身,应该从了解技术的角度去判断和这个功能相关的衍生流程。
3.2.3 服务端与客户端的交互模型
示例:
请求响应(request-response)模型
主要完成信息的发送、处理和响应。
主要由三个部分构成:客户端、服务端和中间的互联网。
数据通过数据接口进行传输,先由客户端发起功能请求,数据通过网络传递给服务器,服务器获取到请求后进行数据的解析和处理,然后将处理结果以请求响应的方式返回给客户端。
服务端会通过数据接口返回给客户端一个数据格式,客户端获取到服务器的请求响应,进行数据解析和处理后将结果通知用户。
3.2.4 服务端部署及运维
开发完产品后需要将产品发布上线,上线后提供给用户使用。
上线——把开发完成的系统部署到公网服务器上。(公网-公开网络)
产品开发完成后,测试通过后:
- 产品经理或者开发经理申请将产品上线(PM需要确保客户端代码已更新到最新状态并打包完成;服务端代码已更新到最新状态并可部署)
- 通知运维人员进行服务器更新部署,将最新的服务端上线到公网服务器
- 发布完成后,可试验新上线的产品是否运转正常
传统时代:
服务器部署通常需要自建机房,将服务器放在自己机房里,机房的设施包括服务器、网络、交换机等,对于要求高的还有备用电源和冷却系统(防止服务器温度上升导致宕机或损坏)。
云服务:
租用云服务提供商的机房,将服务端部署在云端,只需要按使用情况支付给云服务商一定的费用即可。
运维:
服务器部署完成后,需要长期的维护和调优过程。服务器运维工程师-包括发布新的服务,对服务器进行更新、维护,同时对服务器进行整体监控,出现紧急情况及时处理等。
3.2.5 云服务器
好处:无需自建机房,不用购买和维护服务器,可直接用云服务器进行托管;降低产品开发方整体成本,提高服务器管理和运维效率。
国内的云服务提供商阿里巴巴-云服务阿里云
3.3 Web基础知识
3.3.1 web介绍
通过浏览器访问的网页通常被称为Web页,每一个Web页都有一个 唯一的地址,不同的地址组合在一起,通过链接相互跳转,最终形成一 个网站系统。
使用的各种网站,需要通过网站的域名进入,域名——网站的唯一地址。
1.域名是将一个数字化的IP地址进行了表达方式的转换
eg:百度的域名: 网址:
eg:访问一个网站,实际访问的是这个网站在互联网上的IP地址,
http://109.102.22.1 ,不方便记忆就通过域名来代表IP地址,
2.通过HTML语言制作web页面,通过CSS样式对web页面进行美化。
H5页面——通过web技术实现的适配移动设备的产品形态。
tips:
在移动端通过Web实现:
Web的体验感和流畅度和原生的App实现存在差异,在选择使用哪种实现时需要综合考虑产品功能的使用场景和频次。
- 使用频次低且内容变化比较快的可通过web实现;
- 使用频次高且内容相对固定,选择原生APP方式实现。
3.3.2 WebAPP和Native APP
移动APP的实现有2种形态
- (1)通过web方式实现
APP内部通过加载WEB网页的方式实现产品功能
- (2)native/原生方式实现
使用移动平台原生的控件开发而成
使用Native App的好处是能保证比较好的用户体验,通过 Native实现的顺畅度和使用感受要好于Web的实现方式。
使用那native的功能更新成本高
- (3)混合实现——指在一个原生APP产品中嵌套一部分Web实现。——【hybrid app】
指在一个产品中同时使用native技术和web技术。(可在不同页面或同一个页面不同模块同时使用native和web技术。)
3.3.3 HTML/CSS-网页的骨骼和外衣
(hypertext markup language)
超文本标记语言
超文本——表现的内容可以是文本、图片、链接、音乐等非文字元素
标记语言是HTML特性
HTML语言的语法结构是通过一个个的标签标记体现的。一
一个网页的结构包括:“头”、“主体”,
头——<head></head>标记;
head-标签的开头,/head标签的结尾;之间放的是头部内容
头部主要存放一些网页信息,eg:网页标题、描述等
主体部分——</body></body>表示,网页的内容全都放在body标签下
整个网页的内容都会放在一个顶层标签<html></html>
基本的HTML结构:
<html>
<head></head>
<body>
</body>
</html>
(cascading style sheets)全称层叠样式表
CSS——将网页内容与网页样式分离的一种技术。
CSS是给只有内容的HTML页面穿衣服,让HTML页面看起来好看;
可以定义一套CSS风格,类似指定字体,颜色及按钮样式等,将CSS文件嵌入HTML网页中,这个网页中所有的控件样式都会统一按照CSS的样式更换。
3.3.4 URL和HTTP
(uniform resource locator)统一资源定位符
互联网上所有的资源都有一个唯一的URL地址(eg:网页,图片,一首歌曲,一段视频等)
通过URL标记每一个资源,就可以通过浏览器访问到这些资源。
URL构成:协议;资源所在的服务器IP地址;资源的具体路径
eg: “/aa/bb/”
http:// ——http协议
—— 域名;(IP地址)
aa/bb/——资源的路径
- (1)HTTP是客户端和服务端通信的基本协议
使用客户端和服务端进 行功能交互和信息传递都是基于HTTP协议。
- (2)HTTP是基于状态的基本协议
eg:用户在做登录的操作时,基于HTTP协议向服务器发送登录请求,服务器接收到请求后处于待响应状态,处理完后基于HTTP请求将处理结果返回给客户端。
基于状态的应答过程。(一方问,然后等待对方答,每一方都有一个等待对方响应的状态)
- (3)安全版本:HTTPS(基于加密协议的传输协议)
eg:浏览器中使用网银或者跟支付相关的服务时,浏览器的地址协议 是https开头的
3.3.5 cookie和session
都是一种会话存储技术;
区别在于 cookie是将信息存储在本地,session是将信息存储在服务器端。
当用户更换客户端时,对应的cookie信息不会发生迁移。
通过session存储的信息不回随客户端的更换而丢失。(eg:购物车记录)
示例:
用户在客户端A发生的操作,属于无状态的信息,会通过cookie存储,cookie在客户端对应的存储方式是文件。
当用户更换客户端时,对应的cookie信息不会发生迁移。
(eg:记住用户名、password、浏览记录或者临时填写的表格信息等)
在一个电商网站浏览过某一类商品后再去另外一个视频网站看视频,就会发现视频网站的广告栏推荐了刚刚浏览过的商品,但是这不同的网站是不同公司的。(通过cookie本地缓存信息,实现广告的精准展示。)
IV.排查问题
4.1.1 如何判断产品问题是否出自服务端
1)根据客户端出问题时提示的异常信息判断。
(2)对于产品表现出来的问题或BUG,不要急于下结论定位问题在客户端还是服务端
eg:列表中显示的数据有重复项,且每次可复现,
这极有可能是服务端返回数据时返回了2个一样的,也有可能是客户端在解析数据加载时显示时的问题,把一个数据展示了2次。