参考

书籍
《给产品经理讲技术》(类似术语词典,价值不高)
《产品经理必懂的技术那点事儿》唐韧
视频
https://www.bilibili.com/video/av59669091
网站
产品经理必懂的技术知识 http://www.woshipm.com/topic/js

产品思维与技术思维

什么是代码

代码是一种计算机语言,是人与计算机交流的工具。代码的基础单元是数据类型和逻辑结构。
代码中的数据类型
(略)
代码中的逻辑结构

if else switch case while/do while

什么是程序

(略)

结合技术思维

  • 设计展示数据时使用数据类型种类判断,提高产品实现效率
  • 设计产品逻辑时使用代码逻辑结构思考,提高产品设计逻辑全面性
  • 设计产品模块时考虑程序模块复用,提高产品模块可复用性

前端技术

APP,网页,桌面应用
安卓与iOS
apk,ipa,手机尺寸与适配工作量,应用市场碎片化,硬件跨度大小。
基本控件的对应关系
适配问题:通过适配方案反向推出能降低适配难度的原型设计。
网页技术:HTML骨架,CSS样式,手机浏览器和web浏览器,热更新。

Android 软件打包之后的安装包后缀是「.apk」,例如:cool.apk。Android 软件打包之后,无论是直接将安装包发给用户,还是用户从应用商店下载,都可以直接安装使用。APK包是一个ZIP文件,可以将文件解压,然后将里面的内容提取出来。 APK(全称:Android application package,Android应用程序包)

iOS 软件打包之后的安装包后缀是「.ipa」,例如:cool.ipa。IPA是Apple程序应用文件IPhoneApplication的缩写。IPA本质上是一个ZIP压缩包。iOS 的软件生态被苹果公司把控着,通常来说,要把软件上传到苹果的 App Store,用户才能下载使用,而且审核很严格,否则,即使将打包好的安装包给用户,用户安装后图标为灰色,无法使用。 打企业包:让有企业证书的人给软件签名,虽然不能上架 App Store ,但是用户可以通过你设置的下载渠道进行下载安装。 蒲公英 / fir.im 将 iOS 软件安装包上传到「蒲公英」或者「fir.im」上,一般每个软件有每天 100 次的免费下载次数,如果想要更多的下载次数,就需要付费了。

App的技术框架

原生开发(Native)和网页开发(H5)
Native是利用原生控件进行开发的意思,所谓原生控件就是操作系统自带的UI控件,例如Android和iOS操作系统本身提供的按钮、输入框、列表控件等。Native开发的优势是体验较好,而不足是每次更新应用需要重新发布新版本。
H5是利用HTML和CSS等技术进行网页开发,网页运行在浏览器中,所以只要有浏览器环境,H5就能运行。比如在Android和iOS应用中可以继承浏览器组件,然后在APP中直接访问H5页面。H5开发的优势是可灵活更新,不需要发布新版本,而不足是体验相对于Native来说没有那么好。
(1)Native App:
一种基于智能移动设备本地操作系统(如iOS、Android、WP操作系统),并使用对应系统所适用的程序语言编写运行的第三方应用程序,由于它是直接与操作系统对接,代码和界面都是针对所运行的平台开发和设计的,能很好地发挥出设备的性能,交互体验更流畅。
(2)Web App:
一种采用Html语言编写的,存在于智能移动设备浏览器中的应用程序,不需要下载安装,可以说是触屏版的网页应用,由于它不依赖于操作系统,因此开发了一款Web App后,基本能应用于各种系统平台。
(3)Hybrid App:
一种用Native技术来搭建App的外壳,壳里的内容由Web技术来提供的移动应用,兼具“Native App良好交互体验的优势”和“Web App跨平台开发的优势”。
React Native,它可以做到实时热更新(像网页一样,随时可上线)。

原生应用、Web应用、混合应用

  • 原生应用:

可直接在你电脑上运行或者在智能手机上运行,简单来说,原生应用是特别为某种操作系统开发的,比如iOS、Android、黑莓等,它们是在各自的移动设备上运行的。
优点:
可访问手机所有功能(GPS、摄像头)
速度更快、性能高、整体用户体验不错
可线下使用(因为是在跟Web相对地平台上使用的)
支持大量图形和动画
容易发现(在App Store里面)和重新发现(应用图标会一直在主页上)
应用下载能创造盈利(当然App Store抽取20-30% 的营收)
缺点:
开发成本高;支持设备非常有限(一般是哪个系统就在哪个平台专属设备上用)
上线时间不确定(App Store审核过程不一)
内容限制(App Store限制)
获得新版本时需重新下载应用更新

  • Web 应用:

Web应用本质上是为移动浏览器设计的基于Web的应用,它们是用普通Web开发语言开发的,可以在各种智能手机浏览器上运行。
优点:
支持设备广泛
较低的开发成本
可即时上线
无内容限制
用户可以直接使用最新版本(自动更新,不需用户手动更新)
缺点:
表现略差(对联网的要求比较大)
用户体验没那么炫
# 图片和动画支持性不高
没法在App Store中下载,无法通过应用下载获得盈利机会
要求联网
# 对手机特点有限制(摄像头、GPS等)
带#号的缺点:能把HTML 5的优点用到Web上的话就会得到很大改善,尽管技术在提高,目前它还不能做原生应用可以做的每件事。有些公司,比如金融时报继原生应用后也开发了Web应用,用户通过浏览器来访问他们的应用,因为他们的应用要采取应用内购买,而App Store是不允许应用内购买的,不然它们就无法拿到那20%-30%的抽成了。

  • 混合应用:

原生应用和Web应用的结合体,采用了原生应用的一部分、Web应用的一部分,所以必须部分在设备上运行、部分在Web上运行。不过混合应用中混合比例很自由
优点:
兼容多平台
顺利访问手机的多种功能
App Store中可下载(Web应用套用原生应用的外壳)
可线下使用
缺点:
不确定上线时间
用户体验不如本地应用
性能稍慢(需要连接网络)
技术还不是很成熟
比如facebook现在的应用属于混合应用,它可以在许多App Store畅通无阻,但是掺杂了大量Web特性,所以它运行速度比较慢,而现在为了提高性能FB又决定采用原生应用。

Android适配

Android设备碎片化
像素(px);
分辨率;
屏幕密度(dpi),单位是dpi或者ppi,屏幕密度是对角线上每英寸的屏幕包含多少个像素;
dp,虚拟概念,换算公式是dp=(dpi/160)*px。也就是说,在密度为160dpi的屏幕上,1px就是1dp。依次类推,在320dpi的屏幕上,1dp就是2px。屏幕密度越大,1个dp对应的px也就越多。

  • mdpi区间的手机,dp=px。
  • hdpi区间的手机,dp算px要乘以1.5。
  • xhdpi区间的手机,dp算px要乘以2。
  • xxhdpi区间的手机,dp算px要乘以3。
  • xxxhdpi区间的手机,dp算px要乘以4。

dp是用来屏蔽不同手机的像素密度的差异的。(small,middle,large,Xlarge)
技术相关知识 - 图1
APP在运行的时候需要加载某张图片,系统会根据当前手机的密度,去相应的资源目录找。如果找不到,比如当前是mdpi的手机,系统发现mdpi下没有这张图,就会去比mdpi更大的目录找,然后进行缩放。实在找不到就去比mdpi更小的目录找,找到后再拉伸。
设计师出图时,有两种方法可以选。一是按照官方的推荐方法,在所有目录下各放置一份同样的图片,根据dp和px的换算关系切成不同的大小,让系统自动寻找最合适的图片。这会增加设计师的工作量,还会增加安装包的体积,用户下载时要多耗费流量。第二种方法是选一个基准的屏幕密度,比如xhdpi,720p。所有的资源都放在这里,让系统自动去缩放。对于小屏幕手机来说,因为要在运行时把一张大图缩放成小图,不如直接用小图节省内存。对大屏幕手机来说,肯定会因为缩放而失真。

Android应用权限

Top 100的热门应用最喜欢申请的权限是什么?拿到这些权限后可用做什么事?

  • 网络访问权限

互联网产品需要联网,必备。

  • 修改或删除外置存储中的内容

往用户的SDCard上随意读写文件。手机用了一段时间后,会发现SDCard上面乱糟糟的,什么奇怪的文件名都有,就是因为这个权限。其实为了存储数据,系统给了特定的存储空间,这并不是应用必须要用的权限。

  • 读取手机状态和身份

可以获取到手机的唯一识别码IMEI,很多应用用它来做为单一用户的标识。

  • 查看WLAN连接

可以查看用户当前的WiFi接入点信息

  • 控制振动

震动效果

  • 检索正在运行的应用

可以查看用户当前运行了哪些应用,了解用户平时喜欢用什么应用,也可以查看竞品的活跃程度。

  • 防止手机休眠

在锁屏后为了降低功耗,系统会进入休眠状态,但是很多应用为了维持后台运行,就会申请这个权限,这也是Android系统比较耗电的原因之一,因为应用希望知道用户的当前位置(基于网络),更好完成O2O服务。

  • 开机启动

一开机就启动

  • 相机

打开相机,扫一扫二维码,拍照等。

  • 在其他应用之上显示内容

你正用着一个应用,其它某个APP又突然蹦了出来盖在上面。

  • 精确位置(基于GPS和网络)

获取精确的GPS位置。

  • 安装快捷方式

为了让用户更方便的启动自己,可以往桌面上发送一个快捷图标(一个应用可发送多个图标到桌面)。

  • 录音

语音搜索等。

  • 卸载快捷方式

悄悄的将自(友)己(商)的图标删掉。

  • 读取联系人信息

读取通讯录。建立社交关系或定向屏蔽某些人。

  • 停用屏幕锁定

视频。

  • 发送短信

花用户的钱给自己发条短信。一般应用没有什么正当理由来获取这个权限。(银行验证)

  • 读取短信

查看用户的短信。

Android休眠状态(难懂)

【PS:好难懂。】
(1)任何一个应用申请了wakelock锁,待机(PS:什么是待机?待机与屏幕黑、锁屏、休眠的关系是什么?)时没有释放掉,系统是不会进入待机的,直到所有应用的wakelock锁都释放掉了,才会进入待机。
(2)如果不进行特别的设置,Android会在一定时间后屏幕变暗,在屏幕变暗后一定时间内,CPU也会休眠,大多数的程序都会停止运行,从而节省电量。
(3)Android手机有两个处理器,一个叫Application Processor(AP),一个叫Baseband Processor(BP)。非通话时间,BP的能耗基本上在5mA左右,而AP只要处于非休眠状态,能耗至少在50mA以上,执行图形运算时会更高。一般手机待机时,AP、LCD、WIFI均进入休眠状态,这时Android中应用程序的代码也会停止执行。Android为了确保应用程序中关键代码的正确执行,提供了Wake Lock的API,使得APP可以通过之阻止AP进入休眠。但不一定必要,首先,完全没必要担心AP休眠会导致收不到消息推送。通讯协议栈运行于BP,一旦收到数据包(按:收到TCP数据包才会唤醒AP,UDP包不会唤醒),BP会将AP唤醒,唤醒的时间足够AP执行代码完成对收到的数据包的处理过程。其它的如Connectivity事件触发时AP同样会被唤醒。那么唯一的问题就是程序如何执行向服务器发送心跳包的逻辑。你显然不能靠AP来做心跳计时。Android提供的Alarm Manager就是来解决这个问题的。Alarm应该是BP计时(或其它某个带石英钟的芯片,不太确定,但绝对不是AP),触发时唤醒AP执行程序代码。那么Wake Lock API有啥用呢?比如心跳包从请求到应答,比如断线重连重新登陆这些关键逻辑的执行过程,就需要Wake Lock来保护(按:只在这些关键逻辑时,需要Wake Lock API确保不休眠)。而一旦一个关键逻辑执行成功,就应该立即释放掉Wake Lock了。两次心跳请求间隔5到10分钟,基本不会怎么耗电。除非网络不稳定,频繁断线重连,那种情况办法不多。
(4)Android设置–> WLAN–>点击菜单键选择高级–>休眠状态下保持WLAN连接的下拉列表{始终、仅限充电时、从不(会增加数据流量)},如果设置不为始终,那么我们锁屏休眠后,程序将会处于无网络状态,相应的app用户会一直处于离线模式。
(5)可以设置不同的模式,让其产生不同的休眠,比如让cpu保持运行。
Flag Value CPU Screen Keyboard
PARTIAL_WAKE_LOCK On Off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright

服务端技术

用于处理业务逻辑,进行数据存储管理。
数据接口:JSON,XML。
请求响应模型:request-response
①客户端发起请求;
②服务端接受并解析处理请求;
③服务端响应客户端请求;
④客户端获取服务端响应并处理;

云服务器

(略)

其他碎片知识

接口

API接口(Application Programming Interface)
数据接口(API)及数据传输格式(XML、JSON)
API全称应用程序接口,是客户端与服务端之间的通信接口,比如登录功能,发起方是客户端,调用服务端开放的登录接口,然后进行数据传输和验证,期间完成数据请求和数据响应。API是服务端开放出来的应用能力,例如登录接口、支付接口、分享接口等。举一个形象的例子,接口就是墙壁上的插头,有两口的也有三口的,这项能力是由电网对外开放的能力。
JSON和XML都是数据传输格式,客户端向服务端发起请求后,需要将客户端的数据传输给服务端,而JSON和XML就是扮演数据载体的角色,JSON和XML是一种数据格式,好比两种不同格式的信纸,同一种数据内容分别可以以这两种不同的格式来进行传输。

定义

用于资源和信息的内部共享或外部流通时的相关数据的传输。eg:数据、后台、开放平台/供应链。
实现两个系统间的数据相互调用,保证数据闭环;(2C产品的数据共享是很敏感的,须有商务运作。)
API接口是一些预先定义的函数,包括接口地址、传入参数和返回参数。即:当需要访问某些数据,正常状态下传入合格参数,会收到该数据范围内的返回参数。
加密传输;透传;非透传
问题:接口调用无响应;响应过慢;重复响应;无重发机制;回调超时;

以美团门票举例,介绍接口的基本属性、产品逻辑和异常情况等。场景:在美团旅游频道,用户选定时间、地点后搜索航班,后台会调用搜索接口传入时间、地点等参数,接收航班类别、价格等参数,在前台页面上进行排列展示。同理,下单时会调用生单接口确认是否成单,支付时会调用支付接口完成交易,自动修改订单状态。
技术相关知识 - 图2

技术相关知识 - 图3

接口类型

接口类型和属性可分为三类:数据类、交易类和通知类。

  1. 数据类:商家数据对接到美团(涉及到商家的4个接口,拉取产品信息、产品变化通知、拉取景点信息、拉取价格日历)
  2. 交易类:“用户——美团——商家”的交易行为(涉及到商家的5个接口)
  3. 通知类:包括商家开发的已出票、票已使用、已退款3个接口,美团自有的已退款、查余额、编审状态通知的3个接口。

技术相关知识 - 图4

异常问题

接口产品的问题主要包括两类:接口问题、产品问题。接口问题就是无响应、响应过慢、重复响应等,产品问题就是存量少、变价快、时间差导致下架更新不及时等。
在做接口相关的产品时,异常与正常流程同等重要,这与核心用户和边缘用户不是一个概念。所以每一步流程都必须兼顾异常问题的发生与解决方法,尽量避免损害用户体验和商家损失。
一般的解决方法是数据监控,通过对每个业务节点的多项指标进行监控,一旦超出阈值,就用邮件、短信等形式通知相关人员,及时解决问题。
1.用户体验——具体场景&数据监控
对用户来说,流程的任一节点不顺畅,都会导致体验不好,故根据用户行为轨迹来进行数据监控。
①页面展示慢——接口响应时长、用户页面停留时长、跳失率

  • Reason:实时调接口查询景点&产品信息,因数据量大或频率快导致。
  • Solution:缓存数据,每N分钟更新一次。

②数据展示异常——后台返回接口异常的次数和概率

  • Reason:接口超时或异常。
  • Solution:可以设定重复调用,多次重试失败后,通过邮件等形式通知到运营、技术或商家。

针对数据型接口,对产品进行下架或隐藏处理。
针对交易型接口,下单、支付的问题可以提醒用户、为用户推荐同类产品、对产品进行下架或隐藏处理;退票类问题可以建议用户之后重试,如果比较紧急可以联系客服加急处理。
针对通知型接口,不涉及用户,邮件处理即可,可人工介入更新信息。
③产品变动,特别是变价——下单失败率、变价率、出票失败率

  • Reason:数据更新有时间差。
  • Solution:
  1. 当某一产品的失败率或变价率超出规定,可隐藏或下架;
  2. 针对某些产品库存少的情况进行提示,预告风险;
  3. 设定合理的定时更新任务。

④下单/支付/退票失败——失败率、失败原因

  • Reason:用户可能多次提交,或者订单已使用、已关闭等客观原因,无法成功。
  • Solution:
  1. 需要加入检验机制,比如在短时间内重复提交不调用接口,直接返回原结果;
  2. 善意提醒用户不要重复提交,如“您的手太快了,请休息30s后再试”;
  3. 可以提供IM人工或电话咨询、留言等选项。

⑤服务响应时间长——手工操作订单量和占比

  • Reason:比如用户提交退票后长时间不退款;支付后长时间不出票
  • Solution:
  1. 定时调用订单查询接口,更新订单状态并短信/推送消息告知用户;
  2. 超过服务规范时间前发送预警邮件,人工介入处理。

2.商家体验——数据监控&具体场景
对商家来说,用户体验不重要,转化率和利润才是重点,故数据监控以业务指标为主。
①重复生单、生单不支付占库存——订单量、订单支付转化率、支付失败率、库存占用量和支付量

  • Reason:用户手速太快;恶意占库存
  • Solution:制定规则,同一人只能占一个库存;同一订单最多只能订N个人。

②恶意重复调用接口——涉及到的每个接口调用频率

  • Reason:比如短时间重复调用某一接口
  • Solution:
  1. 规定同一IP地址不能在短时间内多次调用;
  2. 直接返回第一次调用接口的结果,不再重复调用;
  3. 每个接口在同一时间最多N次调用,否则返回失败等。

③因数据更新不及时等导致的亏损——(佣金、广告)投入产出比、人为损失

  • Reason:用户使用后退款完成、用户支付后变价等
  • Solution:根据时间差、处理规则来明确划定责任方。

④结算问题——财务对账自身支出(退款)和收入(美团给商家的结算金额)

  • Reason:平台和商家以“T+N”的方式结算
  • Solution:
  1. B端订单系统里的财务对账功能,可以用邮件形式每日发送;
  2. 监测异常数据,如当日无结算、结算金额与订单金额不一致。

**

SDK

什么是SDK(软件开发包)?
SDK全称是软件开发包,常见的比如百度地图SDK、微信支付SDK等。SDK是软件开发商封装自己的一些基础服务后,对外提供的一种软件开发工具包。目的在于省去第三方应用开发者的开发成本,使用现成的软件能力来服务于自己的产品。
例如百度地图SDK,提供了完整的地图展示、导航、定位等功能。作为第三方开发者,只需要调用SDK里的接口来使用这些服务即可,不需要自己从头开始来开发这些功能,极大的降低了开发成本,而对于SDK厂商来说,扩展了自己的生态圈,也丰富了用户群。

脚本

“脚本”这个词在工程师口中出现的频率比较高。当需要对数据库进行批量处理时,工程师会说“跑一个脚本统一处理一下”;当需要查询某一数据报表时,工程师会说“用一个脚本批量查询”。
脚本也是一种被计算机执行的程序,为什么叫脚本呢?可以把脚本理解成拍戏用的剧本,剧本里会按照角色及对白把要拍的戏清晰地列出来,导演和演员会严格按照剧本表演。脚本就是一种面向计算机的剧本,是一个可被计算机执行的文件,文件里是一系列计算机指令,这些指令会按照顺序被计算机解析并执行。
例如需要对数据库中所有用户数据添加一个数据项,一个一个添加显然是不可能的,通过一个批量操作一次性地完成是效率最高的做法,此时就会用到脚本。通过脚本写一个新增数据项的命令,然后执行脚本,所有的数据就会被批量执行同样的操作。

打印

“打印”在大多数场景下是指将文件或图片通过打印机从计算机世界输出到现实世界中,意味着一种结果的输出。工程师口中的“打印”表示的是一种结果输出,只是这种结果并不会输出到现实世界,只是将程序运行的结果“打印”到命令控制台上。
在编写程序代码时,需要不断测试程序片段运行是否正确,例如编写一个加法的程序片段,当代码编写完成后,工程师需要测试程序是否运行正确,所以会输入两个参数然后查看程序的运行结果,程序运行结果输出到命令控制台的过程就叫作“打印”。
在调试问题程序的过程中,也会经常用到打印技术,将每一块代码的执行结果输出到控制台,用来查看具体问题出在哪个环节。因为代码的运行过程是不可见的,所以通过“打印”的方式能让代码的运行过程和结果可视化。

写死

“写死”这个词严格来说不算一个标准的技术术语,而是工程师用来描述一种技术实现方案的说法。
例如,要设计一个下拉选择框用来切换不同的城市,这个产品需求在技术层面有两种实现方案,第一种是将城市数据放在服务器端,客户端通过请求数据接口将城市数据获取回来再显示在下拉列表中。第二种是将城市列表数据存放在客户端,客户端从本地读取城市列表并展示在下拉列表中。
第一种方式是一种相对灵活的方案,当城市数据有变化时,只需要调整服务端的数据内容即可,客户端不用做任何修改,但需要开发一个专门的数据接口获取这部分数据。第二种方式就是工程师所说的“写死”,将数据集写死在本地,这样可以省去数据接口的开发,也能快速实现想要的效果。
这两种不同的实现方式在很多产品设计环节中都会体现,例如一些客户端的文案或者图片会经常变化,这时就不太适合将需要变化的数据“写死”在本地,合理的方案是将变化的数据存储在服务端,客户端通过数据接口灵活地获取这部分数据。
当然,也不是所有的数据都不适合“写死”在本地,例如性别数据,无非就是男和女,不必专门为了它开发一个数据接口,我们得根据具体需求和使用场景判断哪些数据应该写死。

架构和框架

架构和框架是工程师经常提及的两个技术概念,在技术职能中还有架构师这一岗位。对非技术背景的产品经理而言,该如何理解和区分这两个技术概念呢?通过一个例子就可以非常直观地理解二者。在修建房屋时,会有一个总设计师负责设计整体蓝图和规划,这个工作可以理解为是架构师的工作,而房屋设计结构和规划本身是房屋的架构。
架构工作完成后就进入具体的施工环节,施工时可以选择从头开始一砖一瓦的加,也可以使用现有的房屋框架,基于成熟的房屋框架一层一层累加,后期只需要做整合和装修工作即可使用现成的框架,既能降低施工难度,也能提高施工效率。
在技术领域,架构这个词是对系统的结构设计和规划,通常由经验比较丰富的架构师或者高级工程师完成,架构的好坏直接决定了后期系统的稳定性和可扩展性。框架则是指利用现有的成熟技术框架简化开发过程,例如针对企业级应用的开发框架J2EE,就提供了很多现成的组件来降低开发的复杂度,如今很多系统的开发都会使用一些比较成熟的开发框架替代纯自主开发,这样既能保证系统质量,也能提高开发效率。

控件和组件

任何一个网页或者App产品都是由大量的输入框、按钮、文本展示框构成的,产品中的这些最小界面元素组成单元就叫作控件。一个按钮是一个控件,一个输入框也是一个控件。
大部分产品都设计为底部有几个模块,点击不同的底部按钮可以在不同的模块之间切换,实现展示和切换的就是Tab组件,它包含了页面容器展示、按钮等一系列功能,将这些细粒度的控件组合到一起来完成复杂功能,这就是组件。

进程与线程

当我们点击手机屏幕上的一个App按钮(启动一个产品)时,系统会为这个产品的运行分配系统资源(例如CPU和存储空间),分配好资源后,产品会在这个资源区域运行应用程序。这里所说的运行应用程序就是进程,也可以理解为每一个正在运行的App都是一个进程。【PS:比如杀进程】
例如,我们在手机上使用微信或者微博,就有分别属于微信和微博的系统进程。一旦关闭应用程序或因为系统资源紧张而自动关闭在后台运行的应用程序,进程就会被终止,同时对应的进程所占用的系统资源也会被释放。
相比于进程,线程是一个更小的执行单元,一个运行中的应用程序是一个进程,一个进程中可以存在多个线程,每一个子任务都可以理解为是运行中的一个线程。我们以微博为例,运行中的微博是一个系统进程,可以上传照片发布微博,也可以上传视频发布微博。
用户上传照片的任务在一个独立的线程中运行,上传视频的任务也在一个独立的线程中运行,并且这两个任务可以同时运行互不影响,这种方式叫异步线程处理,即可以并行互不干扰完成各自的子任务。当然,还有一种线程处理方式叫同步线程,即子任务是按照一定的顺序完成的。
产品之所以能同时完成很多功能,就是因为线程的存在,尤其是涉及需要网络请求的一些功能时,例如用户在微信中发布朋友圈后有可能立马去刷新朋友圈,这时可能刚刚发布的内容还没有上传成功,所以在技术实现时会用两个线程分别处理发布和获取新信息的子任务。这样做既能保证用户体验,也能保证系统资源被合理地分配和利用。

同步处理和异步处理

同步和异步是开发技术中的两个概念,计算机通过解析和运行程序完成相应的操作。在程序执行过程中会涉及同时处理多个任务或者同一时间只处理一个任务的情况。在前面的章节中我们介绍过什么是进程和线程,一个进程中包含多个执行任务的线程。
以用户登录为例,登录任务是在一个登录线程中执行的,登录任务执行过程中除了验证用户名和密码是否正确外,还需要处理其他子任务,例如从服务器获取用户信息,更新本地缓存信息等。这些子任务通常会在新开辟的子线程里执行。执行登录的线程可以称为主线程,执行获取用户信息的线程称为子线程。
在一个登录操作过程中分别执行两个任务,这个过程就叫作异步处理。异步处理不会造成线程阻塞,相当于各自处理各自的任务。如果所有的任务都在一个线程中处理,那就会出现资源占用过多和响应时间过长的情况,例如我们在使用一些安卓APP时偶尔会出现应用程序闪退的情况,这有可能是因为出现了线程死锁。
同步处理比较好理解,就是同一时间只执行一个简单任务,任务处理完后再执行第二个任务,同步处理适用于一些顺序执行的任务,例如流水线处理就是典型的同步处理,流水线上的一个环节处理完成后再处理下一个环节的任务。
【PS:同步-同一时间只执行一个简单任务,异步-同一时间执行多个简单任务】

面向对象与面向过程

面向对象的分析(OOA)——面向对象的设计(OOD)——面向对象的开发(OOP)
面向过程强调的是“过程”,体现的是操作流程。面向过程的开发思想与人的思维逻辑过程很相似,但不易于了解事物的整体。
面向对象:对象是事物存在的实体。对象可以划分为动态部分和静态部分,动态就是对象的行为,静态就是对象的特征。如鸟的飞、叫、吃食,这些是行为;鸟有嘴、翅膀、瓜子,这些是特征,我们把行为叫做方法,把特性叫做属性。面向对象的开发语言有JAVA、C#等。
面向过程过多的强调流程,关注细节就容易忽略整体,不利于大系统的开发。面向对象关注的是系统中的实体及实体间信息的交互,会更宏观的了解事物,有利于大系统的开发。
对象就是实体,在系统中很多实体是有共性的(相同的特征与行为),把共性抽象出来就产生了“类”,类的具体化就是对象,对象的抽象就是类。
例如,一只大象是一个对象,大象的行为有喝水、走路等,特征有长鼻子、象牙等,把这些共性抽象成大象类。(类的方法:喝水、走路、吃饭;类的属性:长鼻子、四条腿、象牙),对于没有象牙的大象属于个性化对象,不属于大象类。软件工程的一个重要思想就是“高内聚、低耦合”,它是判断设计好坏的标准,主要是看类的内聚性是否高,耦合度是否低。
高内聚可以更好的增强对象内部的粘性,将复杂性交给对象内部解决,对外只需留有接口。对象与对象间的交互信息尽量减少,降低信息的关联性,通过低耦合可以有效的降低对象间的依赖,降低理解成本及交互成本。

  • 封装

封装是对象的最重要特性,对象的实现细节都被封装在类中,对于用户是隐藏的。类中对内的方法与属性是私有的,对外的方法与属性是公有的,只有公有的方法与属性才能与外部进行信息的传递和交互。

  • 继承

类与类之间是可以有继承关系的,子类继承了父类,就拥有了父类的属性与方法。

  • 多态

向后兼容,父类指向子类并调用子类的方法就是多态。多态实现了父类指向子类,并可调用子类的方法,这样有利于提高程序的扩展性和可维护性。

类、对象、抽象和实例

在技术的世界里,有一类编程语言叫面向对象编程,例如典型的面向对象语言Java。说到面向对象,不得不提的几个概念是类、对象、抽象和实例。
抽象对应的反义词是具象。抽象在技术术语里的意思是提炼出一个通用模板,然后基于模板做具象化的实现。例如,在现实世界中关于人的分类,会有男人、女人、老人和小孩,如果将这个具体的分类抽象出一个类别,得到的抽象结果就是人。
所以,人就是一个抽象出来的分类,也就是技术术语里面的“类”。在编程语言的世界中,通过程序语言描述现实世界中的事物时,使用的就是抽象的方法,将一类事物抽象成一个类,就得出了程序世界中的一个基本模型。
有了基本模型后,可以基于抽象出来的模型(类)产生很多具体的实例,也就是基于类实例化的具体对象。例如,将“人”这个类实例化为两个对象,分别是男人和女人,也可以实例化为其他对象,例如小孩和老人,甚至可以实例化为具体的人,例如Maggie和Ryan。这一系列的过程如图所示。
技术相关知识 - 图5
从上述流程中可以看出,工程师做的工作就是根据产品需求将现实世界中的事物抽象成程序世界中的一个个类,然后根据需要实例化很多对象,不同对象间通过相互协作完成一个具体的产品功能。
非技术背景的产品经理在工作中也可以试着以这种技术思维的方式定义产品需求,先从产品角色开始抽象出具体的类,然后分别定义这些角色在整个产品流程中需要完成哪些关键动作,从而定义出具体的对象。这样既有利于明确需求和用户角色,也能培养非技术背景产品经理的技术思维。

MVC架构

在手机(电脑)上跑的代码是前端,在机房里跑的代码是后端。
MVC(Model View Controller)架构:业务模型(model)-用户界面(view)-控制器(controller)
业务模型(model)指的是数据和业务规则,就是在数据库中存储数据,并处理这些数据间的逻辑。
用户界面(view)就是呈现在用户眼前的界面,标题在什么位置,用什么字体,右下角要放图片之类的。
控制器(controller)处理用户交互,从界面(view)读取数据,向业务模型(model)发送数据。
前端工程师,一般负责VC的部分;后端工程师,则负责M的部分。
前端主要语言
1)Html:全称HyperText Markup Language,搭建网页的基础语言。功能强大,可跨平台使用。
2)CSS:CSS能对网页中对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计。CSS中文名叫级联样式表。
3)Javascript:通过嵌入到html中来实现自身功能,主要用于添加交互行为,可以在多平台下运行(如Windows、Linux、Mac、Android、iOS等),还可以控制cookies等。实现动态化(移动,添加,减少),比如点了一个按钮,网页上会出现相应的元素。
4)jQuery:Javascript库,主要面向查询(Query)。就是javascript里那些需要用一行行代码实现的体力活,在jQuery里面可以直接打包成模块,调取对应的接口使用,解放了开发者更多的时间。模块化的使用方式。
5)Bootstrap:Bootstrap也是对Javascript进行封装,在jQuery的基础上进行更加人性化的完善。它有很多现成的组件,比如导航栏、下拉菜单、按钮,都定义好了样式和交互,可直接使用。
后端语言:C#,Java,PHP(最早是Personal Home Page的缩写,后来更名为Hypertext Preprocessor,超文本预处理器),Ruby,Node.js,Lisp;
数据库:MySQL、MongoDB、ORACLE、DB2、SQL Server、Sybase、Informix、VF、Access;

Cookie 和 Session

个性化推荐

帮助用户快捷发现感兴趣的内容,增加用户粘性;
帮助用户发现更多优质的长尾内容,避免马态效应,使冷门内容得到爆光机会;
推荐资讯类(新闻、视频、资讯和电台):基于内容的推荐,就是根据用户过去的行为记录向用户推荐相似的内容。额推荐品。简单来说就是你常常浏览科技新闻,那就更多的给你推荐科技类的新闻。余弦向量公式;
缺点是由于内容高度匹配,导致推荐结果的惊喜度较差,而且有冷启动的问题,对新用户不能提供可靠的推荐结果。只有维度增加才能增加推荐的精度,但是维度一旦增加计算量也成指数型增长。
电商零售类(协同过滤推荐和关联规则推荐)
亚马逊有三成的销售额来自个性化的商品推荐系统。
电商主流推荐算法是基于这样的假设,“跟你喜好相似的人喜欢的东西你也很有可能喜欢。”即协同过滤算法。主要的任务就是找出和你品味最相近的用户,从而根据最近他的喜好预测你也可能喜欢什么。
这种方法可以推荐一些内容上差异较大但是又是用户感兴趣的物品,很好的支持用户发现潜在的兴趣偏好。也不需要领域知识,并且随着时间推移性能会提高。但是也存在无法向新用户推荐的问题。
电商行业也会用到基于关联规则的推荐。即以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。比如,购买了羽毛球拍,相应的会推荐羽毛球周边用品。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零售业中已经得到了成功的应用。
广告行业(基于知识的推荐)
从浏览器读取cookies,获得年龄属性等信息,完成广告的个性化投放。
当用户的行为数据较少时,基于知识的推荐可以帮助我们解决这类问题。用户必须指定需求,然后系统设法给出解决方式。推荐结果主要依赖两种形式,基于约束推荐和基于实例推荐。
组合推荐
组合方式:加权、变换、混合、特征组合、层叠、特征扩充、元级别。
为解决冷启动的问题,会相应的增加补足策略,比如根据用户模型的数据,结合挖掘的各种榜单进行补足,如全局热门、分类热门等。
推荐系统架构:
技术相关知识 - 图6

用户研究:用户分层与分群,用户网络行为分析,用户偏好分析
文本挖掘:分词、词性标注、文本分类、文本聚类、文本算法、文本匹配算法、相似词词库、高频词组;
推荐算法:以计算相关性为核心与关键,各类智能推荐算法;
分布计算:Hadoop,Hive,HBase;
实时计算:大规模流数据的实时处理;
用户偏好算法——算出来用户感兴趣的内容/产品,推荐给用户;
关联规则算法——算出物品间的支持度和置信度。比如组合购买,啤酒和尿不湿是非常经典的例子。
聚类算法——可以根据用户进行聚类,也可以对产品进行聚类。聚类后针对大类进行推荐,或者继续计算用户类和产品类之间的关系。
协同过滤算法(item_base,user_base)
item_base——根据集体用户行为算出物品间的相似度,然后把与用户看过的物品或者购买过的物品最相似的物品推荐给该用户。
user_base——根据集体行为计算用户之间的相似度,比如A跟B计算出来非常相似,则可以把B喜欢的内容,但A还没有看过,推荐给A。
内容相似性算法(content_base)——根据物品本身的属性进行关联性运算,计算出物品间的相似性,最常见的应用是同类推荐。
其他问题:
垃圾数据处理:对于系统产生的异常数据、垃圾数据需要根据业务特点制定一套清洗规则。
冷启动问题:由于新用户访问时没有数据沉淀,因此很难根据用户行为进行推荐,普遍方法是新用户首次登录时提供兴趣标签引导页面,引导用户进行设置,同时结合其它推荐算法。另外一种比较理想的方法是使用用户在其它平台的社交数据。
数据稀疏性问题:使用聚类算法进行升维后运算,并结合其它算法进行组合推荐。
推荐结果精准性和多样性:通过多种算法进行组合推荐,确保推荐结果集的精准性和多样性。

链接

什么是URL?
url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名,如“协议://授权/路径?查询”。
第一部分——模式/协议(scheme):它告诉浏览器如何处理将要打开的文件。最常用的模式是超文本传输协议(Hypertext Transfer Protocol,缩写为HTTP),这个协议可以用来访问网络。
第二部分——文件所在的服务器的名称或IP地址,后面是到达这个文件的路径和文件本身的名称。服务器的名称或IP地址后面有时还跟一个冒号和一个端口号。它也可以包含接触服务器必须的用户名称和密码。路径部分包含等级结构的路径定义,一般来说不同部分之间以斜线(/)分隔。询问部分一般用来传送对服务器上的数据库进行动态询问时所需要的参数。

链接也称为超链接,是指从一个网页指向一个目标的连接关系。
链接目标:可以是另一个网页,也可以是同网页上的不同位置,还可以是一个图片、一个电子邮件地址、一个文件、一个应用程序。
链接样式:可以是一个字或是一段文本,也可以是一个按钮、一张图片。当把鼠标指针移到某个链接时会变成一个小手。
文本样式的链接:一般在搜索引擎的网站呈现蓝色字样,大多会在下面加下划线以便识别,不过考虑到不影响文本的可读性与用户体验,逐渐取消了下划线。如Google没有,而百度有下划线。一些别的网站考虑到界面设计风格各方面的因素而不用蓝色。
按钮样式的链接:比文本样式的更容易识别,每一个按钮都是一个链接。
链接打开的方式有三种:第一种是当前页面刷新跳转,国外的网站大多是这样的打开方式;第二种是在新标签页面打开链接,国内大多采用这种;第三种是提示用APP打开。现在还有一种新的打开方式——二维码扫描。
类型:内部链接,锚点链接和外部链接。

  • 内部链接

是指同一网站域名下的内容页面之间互相链接。如频道、栏目、终极内容页之间的链接,乃至站内关键词之间的Tag链接都可以归类为内部链接,也称之为站内链接,对内部链接的优化其实就是对网站的站内链接的优化。

  • 锚点链接

锚点链接(也叫书签链接)用于内容庞大繁琐的网页,通过点击命名锚点,不仅让我们能指向文档,还能指向页面里的特定段落,更能当作“精准链接”的便利工具,让链接对象接近焦点。便于浏览者查看网页内容。类似于阅读书籍时的目录页码或章回提示。在需要指定到页面的特定部分时,标记锚点是最佳的方法。

  • 外部链接

外部链接又被称为:“反向链接”或“导入链接”,是指通过其他网站链接到你的网站的链接。
外部链接指的是针对搜索引擎,与其它站点所做的友情链接。高质量的外部链接:和你的网站建立链接的网站知名度高,访问量大,同时相对的外部链接较少,有助于快速提升你的网站知名度和排名的其他网站的友情链接。
链接在交互上一般会呈现4种状态,即默认状态/悬停时状态/点击时状态/点击后状态
链接还可以分为动态链接和静态链接。动态链接指的是可以通过改变HTML代码来实现动态变化的链接,而静态链接就是没有动态效果的链接。

查询、筛选与搜索

  • 查询与筛选(过滤)

Query Filter
单条件查询 组合条件查询
最大的不同是:
查询是从数据表中按条件查询到多少就有多少放在内存中,没查询到的是不会进入内存中,不能使用和操作的;
筛选是按查询条件在内存中的数据进行筛选的,而且就算筛选出一条记录或一条记录都没有,没筛选出的数据一样还保留在内存中,可随时供下一次筛选的.
一般的操作是先查询出数据,再从这个查询中筛选
查询是对数据库的操作,而筛选是对内存中的数据操作.所以查询较慢,筛选较快.

  • 搜索

Precision(查准率)和Recall(查全率)

单点登录

单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。
CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方.
多端登录;多端互踢;

工作流和审批流

审批流是工作流比较简单的应用。审批流的特点是一个审批流模板对应一种单据。审批流没有涉及到多个单据之间的处理,因此审批流是相对简单的。从业界的大多数工作流来看,也仅仅是实现了审批流而已,比如协同办公、以及ERP中的一些单据的审批。工作流现在应该是处于初级阶段。
一、审批流:审批流是用来,为某个具体的业务单据进行审批流程的定义。被定义了审批流程的单据将按照定义的审批流程被传递和审批。也就是讲审批流只是针对同一种单据的审批管理而已。比如,我们要对合同付款定义审批流程为,张三填写付款申请—李四负责初审—王负责二审—总经理负责终审,不管合同付款的审批有多少级,多少人参与,但都是只对合同付款这一种单据设置的审批流程而已,这就是审批流。
二、工作流:工作流引擎就是工作流程的计算模型,就是将工作流程中的工作如何前后组织在一起的逻辑和规则,通过项目管理软件来实现了。用上面的合同付款来接着讲,如果一个企业是这样规定合同付款作业流程的,所有合同付款业务必须是从合同创建—合同结算-合同付款,也就是讲没有做合同结算就不能进行合同付款申请,没有创建合同就不能做合同结算。这种规范了某类业务的前后作业顺序的功能,就是工作流。工作流与审批流不是冲突的,应该讲审批流是对工作流中的某一种具体单据的更细化流程管理。

专有云和私有云

专有云和私有云之间的区别?
作者:我是砖家我怕谁
链接:https://www.zhihu.com/question/49211169/answer/662943542
公有云:公有云通常指第三方提供商为用户提供的能够使用的云,公有云一般可通过 Internet 使用,可能是免费或成本低廉的,公有云的核心属性是共享资源服务。
这种云有许多实例,可在当今整个开放的公有网络中提供服务。公有云是面向大众的云计算服务,所有人都可以通过网络,在公有云服务提供商的平台来获取他想要的资源服务。目前有名的公有云服务提供商有国外的AWS、Azure和国内的阿里云、腾讯云等。公有云的优势是成本低、扩展性好。缺点是对于云端的资源缺乏控制、保密数据的安全性、网络性能和匹配性问题。
私有云:私有云是为单独使用而构建的,因而对数据、安全性和服务质量能有效的控制。拥有基础设施,并可以在此基础设施上部署应用程序。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所,私有云的核心属性是专有资源。
私有云的优势是安全性和隐私性,可以定制解决方案,更充分地利用计算资源;缺点是价格较高。
混合云:混合云融合了公有云和私有云,是近年来云计算的主要模式和发展方向。
使用混合云,可以将关键的应用和数据部署在私有云,提高安全性;把非关键的应用和数据部署在公有云,充分利用公有云在扩展性和成本上的优势。
阿里推出的专有云:阿里云Apsara Stack专有云,其定位为“专有公共云”,有着两个含义,其一是应用了公共云的技术,其二是以公共云的模式去运营。也就是说阿里专有云,让企业在内部即可享受与阿里云公共云体验一致的服务,获得企业“专属”的阿里云公共云服务。
通过以上的说明,阿里云推出的专有云和私有云之间的区别就很明显了。阿里云推出的专有云是基于阿里的公有云,提供阿里云公有云上的功能;而私有云为单独使用而构建的云资源服务,需要一定的基础设施,并在此基础设施上自行部署应用。

开发工具/设计器

云枢产品技术逻辑图
ljt.png
表单设计器
流程设计器
规则设计器
报表设计器
视图设计器
页面设计器