【读书笔记】给产品经理讲技术
2021-11-26 19:36:09 2 举报
AI智能生成
产品经理需要知道的技术知识
作者其他创作
大纲/内容
第一章:Web前端技术
AJAX(阿贾克斯):部分页面刷新的技术
主要解决的是不用刷新网页,就能和后台交互获取数据,并应用于当前网页的问题
AJAX两项能力
发起网络请求
发起网络请求的能力由浏览器的内置能力提供,所有的浏览器都提供了XmlHttpRequest对象,它可以由网页调用,用来连接一个特定的地址
无须刷新,可动态操作网页
静态网页与动态网页
用途
两者都是网页,都是再浏览器上用HTML展示出来的页面,HTML是网页的基础结构,网页如何排版,每个元素在什么位置,都是由它来描述的
区别
两者的核心区别是后台是否有数据库的支撑,也可以简单的描述为网页上展示的内容是否要变化,是因人而异显示不同内容,还是根据时间线呈现内容的变化,或者是保持不变
静态网页无须经过后台程序的处理,而动态网页要经过后后台处理程序
网页基础知识-表单
用途
表单在很早的HTML版本中就已经存在,它是用户输入和网页之间数据交互的一个界面,在HTML中用<form>标签标记
H5应用程序缓存简介
提高服务器性能除了扩容外,还可通过Application Cache技术进行解决
该技术是HTML5中定义的一种离线存储技术标准,这种技术可以让开发者明确的指定页面中哪些静态资源可以在第一次访问网页的同时缓存到本地,并且在下次访问该网页时向服务器询问本地缓存的资源是否需要更新
当浏览器打开适用了该技术得网页时,会尝试先从Cache中加载数据,并同时向服务器询问本地资源是否已经国企,如果本地资源过期,浏览器会自动从服务器上更新资源到cache中
需要说明的时,如果Cache中的数据可用,浏览器就会对其进行加载,即使他们已经过期,页面可以用过注册监听器的方式获得Cache更新成功的时间,主动刷新下页面,将最新的内容及时展示给用户
优点
该技术通过缓存资源到本地,避免了每次打开网页都会从服务器拉取大量数据的过程,取而代之的只是一个轻量级的更新检查请求,这样开发者的服务器带宽就被大大的释放出来
由于网页的资源都是通过本地资源读取的,用户再次打开同一网页时,内容展示时间会大大缩短,甚至达到Native应用的水平,从而进一步优化用户体验,如果页面的所有资源都被缓存到了本地,那么页面就可以在离线的情况下被完整的加载了
爬虫
用途
抓取某个指定网页的数据并存储在本地
运行原理
首先给爬虫几个初始的URL链接,爬虫把这些链接的网页抓取回来,经过对网页进行分析,得到两部分数据
一部分时网页的有效内容,可以用来建立搜索关键词的索引,这部分数据先存储起来
另一部分就是网页中的URL链接,可以作为下一轮爬虫抓取的目标网页,如此反复操作
第二章:客户端技术
客户端推送实现方式
实现一个推送系统需要服务端和客户端的配合
一种方法时轮询,也就是不停的向服务器发起请求
另一种则是建立一条长时间链接服务器和APP的通道,通过这条捅到,不仅APP可以向服务器请求数据,服务器也可以向APP发送数据
朋友圈中的图片缓存系统
缓存的概念
缓即临时,存即存储,故缓存即临时存储
刷圈的现象
刷了几页之后回到顶部,会发现看过的图片依旧在显示,并没有出现先显示占位符,再显示图片内容的情况,这表明图片一直在内存中,随时可被直接展示
点击一条新内容的图片时,会展示一张缩略图,然后出现loading图标旋转的动画,过一会儿一张清晰大图展现出来,表明这张图片是刚刚从网络拉取的
当用户翻到几天前的内容时,再次点击图片,有时还需要从网络拉取,有时却瞬间打开,这是为什么呢?因为有可能高清图片已经被缓存系统删除,所以需要从网络重新拉取,也有可能高清图片还在缓存系统中,可以被快速加载,从而“瞬间打开”
缓存的分级
一级缓存
也称内存缓存
一级缓存存取速度最快,会多占一些内存,这是非常合理的一种以空间换取时间的程序设计,数据随着程序退出而消失
进入朋友圈,图片占用的内存空间不断增加,如果用户往回滑动,会发现刚才的图片都还在,因为这时一级缓存还没满,所有被缓存的图片都能正常满足业务需求
如果我们持续刷新朋友圈的内容,直至一级缓存的空间被完全占用,就必然要对缓存的图片进行淘汰,目前业界主要采用LRU(Least Recently Used)算法进行淘汰,也就是近期最少被使用的图片被淘汰,这里的“淘汰”,也仅仅是将图片从一级缓存迁移到二级缓存,并没有完全丢弃
二级缓存
也成磁盘缓存(SD卡或硬盘上的缓存)
二级缓存容量更大,存取速度要慢一些,程序下次启动时,依然可以使用缓存内容
应用的生命周期
概念
应用的生命周期是对应用在宿主的环境中从创建、运行到消亡的一种过程描述
图解
第三章:开发技术
空指针是什么
空指针,顾名思义,就是指向空的指针。但是“空”是一种极度抽象的概念,管理员立一块箭头牌子,总得把它指向某个具体的地址。既然没法指向真正的“空”,那就在内存中模拟出一个地址来代表“空”
开发动画需要多少工作量
位移动画
让控件在一段时间内不断改变位置。程序员在实现这个功能时,只需要创建一个“TranslateAnimation”的对象,可以把它理解成位移动画的“配置清单”
缩放动画
缩放动画就是让控件在一段时间内不断改变自身大小。与位移动画类似,这种动画也有一个“配置清单”
渐隐渐现动画
就是在一定的时间内持续改变控件的透明度
旋转动画
就是让一个控件在一段时间内围绕一个固定点旋转指定的角度
简单理解重构
代码重构是软件开发过程中提高开发效率和质量的重要手段
在软件开发过程中,每一款软件一开始都是经过精心设计的,具有良好的结构。但随着需求不断变更,之前的结构开始慢慢变得不适应
重构就是在保留现有功能的基础上,重新梳理软件中的代码结构,让原本杂乱无章的代码重新具有可读性、结构性和扩展性,增加软件的开发效率,优化程序的性能。重构的范围可大可小,大到涉及整个产品的各个模块,小到一个函数。
多线程是什么
多线程是有效提升程序运行效率的方式之一。它还在提升优化算法、提高硬件配置、分布式计算、网格计算的效率方面起着重要作用
反向代理代码的意义
首先,它可以实现负载均衡。有多台服务器可以为同一个 Web 服务提供服务,但是每台服务器的负荷不太一样,如果请求被发送到负荷较高的服务器,它的处理时间可能较长,但是客户端并不知道哪一台服务器比较空闲,所以将请求发送到反向代理服务器。反向代理服务器知道每台服务器的负载量,会将请求转发到相对空闲的服务器,以便更快地响应客户端
反向服务器还可以减轻后端服务器的一些压力,例如很多静态资源或者缓存数据,可以直接放在反向代理服务器上,不用将这些请求传递到后端服务器,这样就减轻了相同的请求对后端服务器产生的压力
它还可以对请求做进一步的封装和解封。如果我们想把所有请求升级到SSL加密连接,却不想改造后端服务器,那么可以只在客户端-反向代理服务器之间使用SSL加密连接,而代理服务器-后端服务器之间仍旧使用普通的HTTP连接,这样就事半功倍了
同时,反向代理服务器还可以为后端服务器阻挡一些网络攻击,提升后台服务器的安全性。总之,反向代理服务器对于后端服务器,就是一个接口人的角色,它接洽了所有客户端的请求,并进行简单的处理,然后分发到后端服务器
CDN是什么
CDN(Content Delivery Network,内容分发网络)
CDN专注于“内容”,也就是CDN的“C”所代表的“Content”,这里的“内容”是指静态的资源,比如一张图片、一个文本文件、一段视频、一个CSS、一个JavaScript,等等。任何以文件形式存储的“内容”都可以部署在CDN上
CDN的作用
它是一个基于互联网的数量巨大的服务器集群,专注于内容和资源分发,为用户提供快速访问资源的能力,进而提升内容访问的体验
VPN是什么
是虚拟专用网络。专用网络很好理解,就像上面的一根网线,只属于特定的人群,直达服务器
后台服务之流量控制
如何判断当前的流量达到极限呢?
漏铜算法
我们把用户请求看作水,这些水会流进一个底部有洞的水桶,而我们的服务真正处理的是从底部洞里流出的水。当流量突然暴涨,桶中注满水后,再流入的水就会直接溢出,而对应的就是拒绝服务
令牌桶算法
系统以固定的速度(如每秒产生 r个令牌)产生令牌(token),产生的令牌都扔进一个桶里,如果令牌把桶塞满了(最多能装b个令牌),就会被扔掉。当用户请求到达服务的时候,去桶里取一个令牌,如果取到了,就给后面的模块继续处理;如果这个时候桶里一个令牌都没有了,就拒绝服务该请求
第四章:名词解释
SDK
SDKSDK是Software Development Kit的简称,中文名称是软件开发工具包,是基于当前系统或者平台的一整套开发工具的集合
在开发场景中,要想在Android平台上开发Android APP,必须从Android官网下载Android SDK,然后利用这套SDK提供的API调用系统能力,比如调用系统屏幕常亮的功能
应用场景:一个团队不擅长做视频,但项目中又必须加入视频播放场景,而另一个团队是视频领域经验丰富的专业团队,这时二者合作基本都会基于SDK级别,也就是视频专业团队要为另一个团队做好一个视频SDK。有了这个SDK,只要调用其SDK封装的极其简单的“播放”“暂停”接口,就可以完成视频播放这样复杂的需求场景
API
API是Application Programming Interface的简写,中文称为应用程序编程接口
在应用开发中,系统的能力是以SDK的形式发布给开发者的,SDK中一般封装了很多API,这些API对应着系统或平台的能力
API又分为公有API和私有API。公有API是系统以SDK形式暴露出来,对所有开发者可见的。私有 API 一般仅限系统内部或者系统自带的一些应用程序使用,不允许应用程序开发者使用,这种 API 本身可能会存在一些安全性或稳定性问题。公有API是系统授权的,可随意使用,而使用私有API时要谨慎,提防未来可能因系统不再支持或触犯厂商规则而导致的下架风险
架构
架构指一个软件系统的结构,是考虑了一个软件系统的所有设计要素、梳理清楚模块划分及模块之间的关系后形成的一种结构设计
控件
控件表示程序设计中最小粒度的可复用可编程的部件。打开任意一个 APP 或一个网页,都可见到输入框、按钮、单选框、复选框等控件
组件
我们可以把组件简单理解为一个组合功能的控件,功能比一般控件要复杂,交互也更复杂
框架
框架是由很多控件和组件组装在一起的,并且能够在某一领域里完成一系列操作
时间戳
邮局通常会给信盖上邮戳,表示此封信邮寄出去的时间,这和时间戳的意义基本雷同,表示一个事件发生的时间
渲染
渲染就是对数据进行一系列计算并呈现的过程,其中包括测量、排版和绘制
向前兼容
指的是对已经发出去的老版本兼容
向后兼容
的是对还没有做好的版本兼容
0 条评论
下一页