写给产品经理的技术书本书由小乐帝整理,欢迎关注小乐帝简书/users/4f404b107782/latest_articles 写给产品经理的技术书1写给产品经理的技术书3一、客户端相关技术31.IOS和安卓产品差异32.Web前端技术-HTML、CSS、JavaScript33.实时更新移动客户端技术--React Native54.Android应用权限55.Android休眠状态86.app推送原理97.应用程序、进程和线程128.同步和异步129.渲染1410.QQ快的原因1511.图片资源处理1612.Cookie和广告联盟1713.动画原理19二、服务端相关211.302状态码212.升级及下载加速原理223.代理服务器264.轻量级虚拟机--DOCKER28三、交互相关291.网页与原生App如何交互292.应用下载劫持313.前端和后台的数据交互与协议33收集整理者备注本书由产品经理读书会收集、整理,欢迎产品爱好者分享、传阅,但不允许用于商业目的。
关于产品经理读书会专为爱读书的产品人提供书籍推荐、读书交流、以书会友的环境,欢迎爱读书的产品人分享读书感悟、找寻改变世界之路。
产品经理读书会QQ群:429128593产品经理读书会微信公众号:写给产品经理的技术书一、客户端相关技术1.IOS和安卓产品差异(1)IOS机型集中,安卓机型呈现碎片化。
IOS机型就那么些,做好几个机型的适配就行,测试也方便,安卓的机型太长尾了,有时就一款机型就弄死你,为了兼容一款机器要放弃很多东西,还有图片尺寸这种视觉稿里高大上,一到奇葩分辨率的机器上立马low几个等级。
所以安卓的测试一般都很辛苦。
(2)IOS性能优化较好,安卓性能方面需第三方工具优化。
IOS系统在耗电,流量加载方面提供了很好的优化,但在安卓系统上则要做一些额外的优化,安卓的用户使用的最多的app不是微信,也不是手淘,是一键清理这种系统优化工具,各种耗电榜,内存消耗榜,虽然我觉得这些工具最好别装,但是这已经是安卓用户的习惯,安卓要尤其关注app的电量和流量(3)IOS和安卓交互设计有差异。
IOS和安卓的交互差异,比如安卓长按删除,IOS左滑删除,安卓的菜单操作,设计风格等这些都是非常细节的地方需要和交互设计师一起研究。
(4)IOS动画效果较好,有更多选择。
IOS的动画效果更好,安卓受制于一些低端机型只能放弃大部分动画交互,取而代之弹窗提示这种保证功能性的方案。
2.Web前端技术-HTML、CSS、JavaScriptHTML、CSS、JavaScript共同构建了你看到的任何一个网页展示和交互:HTML(HyperTextMarkup Language)超文本标记语言CSS(Cascading Style Sheets)级联样式表JavaScript一种脚本语言,主要用于前端页面的DOM处理文本的意思,应该大家都明白,就是你随手在桌面上建立一个txt,这就是一个文本文件。
那什么是HTML超文本标记语言呢?超文本就是超越文本的意思呗,超越文本的意思就是它已经不仅仅是简单的文本,比普通的txt要高级一些,那到底高级在哪里呢,是第二个词Markup(标记的意思),就是对一个普通的txt里面的文字进行标记,标记其中的一段为title,标记另一段应该另起一行,标记任意一段为某个意思。
最后超越了普通文本的标记,这些记号对普通文本的修饰,就构成了一套规则,这套规则就是html。
CSS中文名叫级联样式表,也是一个超别扭的名字,但是样式大家都应该懂,就是长什么样子,类比到生活中,就是HTML只是你的肉体,你总要穿上衣服,戴上牙套,穿双鞋再出门吧。
再举刚才盖房子的例子,你定义好了各个空间,并且房子也盖起来了,你要装修,比如客厅用什么壁纸,卧室的地板用什么样子,CSS就是起装修作用的,必须要和HTML 一起配合使用。
JavaScript是一种脚本语言,他在网页中使用的主要场景是控制HTML中的每一个元素,有时候可以把有些元素删除,有时候要添加新元素,你常常遇到过这样的场景,点了一个按钮,这个时候会有一个网页上从没有过的元素出来,其实就是利用JavaScript实现的。
你的房子已经装修好,贴上了墙纸,铺上了地板,桌子,板凳,沙发都已经摆好了,一切都完美了,可是一切都是静态的,作为一个有生活情趣的人,你总是要买些新家具,或者想把茶几换个位置,这个时候这种在这个屋子里的所有移动,添加,减少物件就只能靠JavaScript 实现。
当前互联网上的任何一个网页,都是由他们三个构建起来的,虽然简单,但你不可不知。
3.实时更新移动客户端技术--React Native做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调成16号呗,颜色变成#FFFF00FF,老大说这里最好改一下”,作为一名app的开发只能无奈但心里窃喜的告诉你,“只能等下个版本了,必须要重新发布才能改”,如果你问为什么不能改了就生效啊,那说明你对技术的理解要么真的很差,要么你就是知道这项React-Native新技术所爆发出来的力量。
React Native是Facebook推出的一个用JavaScript语言就能同时编写ios,android,以及后台的一项技术,2015年9月发布了android版本,又在程序员里面掀起了一波小高潮,不断有喜欢尝鲜的程序员投入到这个领域。
用大白话说,就是从此一名程序员自己就可以创业了,他只用这一门技术,就可以同时写出androidapp,ios app,以及后台应用程序,并且,请注意这里,它可以做到实时热更新(就像网页一样,改了一个字体,随时可上线),app也能做到随时都能更新了,第一段讲的那个需求可以分分钟秒杀解决,不用新发版本,只需在服务器改动一下代码即可,真的很牛逼。
4.Android应用权限目前国内top100的热门应用,来看看它们最喜欢的申请的权限是什么,以及拿到这些权限后可用做些什么事情网络访问权限100/100互联网产品,当然要联网才行啦,所以每个应用都申请了这个权限修改或删除外置存储中的内容100/100往用户的SDCard上随意读写文件的权限。
当你的手机用了一段时间后,发现SDCard上面乱糟糟的,什么奇怪的文件名都有,就是因为这个权限,每个应用都想着你手机里留下一些痕迹。
其实为了存储数据,系统给了特定的存储空间,这并不是应用必须要用的权限读取手机状态和身份98/100有了这个权限,可以获取到手机的唯一识别码IMEI,很多应用用它来做为单一用户的标识,没什么可怕的。
查看WLAN连接98/100可以查看用户当前的WiFi接入点信息控制振动95/100这个没什么好说,就是要让你手机有动次达次的效果检索正在运行的应用95/100可以查看用户当前运行了哪些应用,瞅瞅你平时喜欢用些什么应用,也可以看看竞品的活跃程度:)防止手机休眠94/100在锁屏后为了降低功耗系统会进入休眠状态,但是很多应用为了维持后台运行,就会申请这个权限,这也是Android系统比较耗电的原因之一,都是应用不自觉大致位置(基于网络)83/100O2O这么火的年代,为了提供更个人化的服务,各路应用都希望知道用户的当前位置开机启动82/100要想日日夜夜的陪伴,那就得一开机就启动,也是耗电的罪魁相机80/100帮你打开相机,扫一扫二维码,拍一拍片片在其他应用之上显示内容76/100桌面上那些飘来飘去的东西,或者你正用着一个应用,其它某个APP又突然蹦了出来盖在上面,都是用的这个权限精确位置(基于GPS和网络)76/100三胖想定点轰炸你,就得用这个权限,获取精确的GPS位置安装快捷方式73/100很多应用希望用户更方便的启动自己,都喜欢往桌面上发送一个快捷图标,更有丧心病狂的应用,会发送多个图标到桌面。
往往新买一个手机,安装10个应用,桌面上会出现20个以上图标的,就是因为它录音61/100每个应用都有一个成为微信的梦想卸载快捷方式54/100悄悄的将自(友)己(商)的图标删掉:)读取联系人信息52/100大家都对这个权限很敏感,应用有了这个权限,就可以读取你的通讯录,不怀好意的应用还会偷偷上传,哪天你收到垃圾短信也不必奇怪,也许是你的某个好基友“出卖”了你停用屏幕锁定50/100你得一直看着我,不要让屏幕锁定了发送短信44/100有了这个权限,就可以花用户的钱,给自己发条短信。
感觉应用都没有什么正当理由来获取这个权限读取短信43/100查看用户的短信,感觉这是老大哥干的事,普通应用拿来是够恶心的5.Android休眠状态(1)任何一个应用申请了wakelock锁,待机(按:什么是待机?待机与屏幕黑、锁屏、休眠的关系是什么?)时没有释放掉,系统是不会进入待机的,直到所有应用的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分钟,基本不会怎么耗电。
除非网络不稳定,频繁断线重连,那种情况办法不多。