Interpret Technique to PM|Chapter10:Noun Interpretation

Abstract:一些会经常碰到的技术名词的通俗解释。如抽象,封装,多态,SDK,API,架构,PAC,hook,哈希表等。

4D打印

  • 3D打印:同时具备X/Y/Z三轴,能描述三维控件;
  • 4D打印:多一个纬度:时间T;随时间变化,材料可随环境/温度进行变化(前提:材料已被编程好);可能还需要10年预热期才能进入成熟期被应用;

抽象/封装/类/实例/对象

  • 对事物进行抽象,从而封装为类,由类可以生成实例或对象;
  • 封装的前提首先是抽象,抽象是对一系列拥有共同属性或行为的描述;(抽象对应的是具体,抽象后具体消失,共性出现)
  • 抽象出的共性用来封装为类(class),类可以定义实例或对象;
    eg.小红(对象)打开化妆包(抽象),拿出红石榴水(具体),运用拖拉摇椅拽拍打七种方法(能力)进行脸部护理(效果/目的);
  • 封装/继承/多态是面向对象的三大特性;

SDK,API,架构

  • SDK:software development kit,软件开发工具包,是一整套工具的集合;sdk里一般封装了许多api;
  • API:application programming interface应用程序编程接口;可理解为一个函数,函数提供里某一样特殊能力;分公有API(系统以SDK形式暴露出来,对所有开发者可见)和私有API(系统内部使用或仅限于系统自带的一些应用程序使用,不对开发者开放);
  • 架构:软件系统的结构;就是考虑了一个软件系统的所有设计要素后,梳理清楚模块划分,以及模块间的关系,所形成的结构设计;

控件,组件,框架

  • 控件:程序设计中最小粒度的可复用可编程的部件;
  • 组件:一个组合功能的控件,功能比控件复杂;
  • 框架:由很多控件和组件组装到一起且能在某一领域里完成一系列操作;如jQuery框架是对原生js的封装,提供更方便快捷的js操作;

二进制文件

  • 文本文件:txt;
  • 计算机硬盘上存储的饿文件都是二进制存储的,把文件转化为二进制,计算所占字符数,会发现:
  • 二进制文件在数字上存储要比文本文件省空间,因为文本文件按字符存储,二进制按数据类型存储;
  • 二进制文件的优点:省空间,写入速度快,可读性差,加密作用;

本地数据和云端数据

  • 好的产品设计:本地默认写死一些频道(打底数据,在无网络情况下可展示,用于解决用户体验问题),展示了打底数据后发起云端请求,拉取云端运营数据,若拉取成功则将新的频道数据覆盖本地数据,保证客户端下次启动时展示上次成功拉取的数据;若拉取失败则继续展示本地数据;

哈希表

  • 哈希:又称散列,设计一种映射关系f(key)=address,根据key来计算存储地址;可实现一次查找;f是存储过程中用来指引数据存储到什么位置的函数+将来查找这个位置的算法(哈希算法);核心:哈希函数的设计;
  • 哈希算法:可随意设计,如直接定址法,平方取中法,除数取余法;本质是通过固定的算法将存储元素变成一个数字来存储(key-value),查找时就通过计算其对应的数字一次查询;
  • 哈希冲突:很多记录映射到一个位置;哈希冲突与哈希函数的设计正相关,随机性越大产生哈希冲突的可能性越小;解决方法:1.哈希再哈希,针对第一次哈希的结果再进行一次hash来减小冲突的概率;2.对原方法增加随机性和对冲突进行适当的有损化处理;
  • hash表:一种数据结构,效率极高的查找方式;

hook

  • hook:在执行某操作之前优先处理一下,再决定后面的执行走向;
  • eg.利用hook的技术:hook住程序的校验签名函数,假装校验通过以欺骗程序;

配置文件

  • 作用:更改一些需要经常变化的设置(若写死在程序里就无法更改)

算法复杂度

  • 衡量复杂度的相对标尺:1.时间复杂度,用大写的O标识,如O(n/n^2/n^3);2.空间复杂度:每个算法对内存使用的相对衡量(空间消耗),如S(n/n^2);

    eg.要计算n*n次,则复杂度为O(n^2);长度为n的数组,空间复杂度为s(n),二位数组为s(n^2);

  • 算法优化:降低算法的复杂度,但优化不改变复杂度系数(复杂度是对算法最差情况的衡量);

  • 无锁情况下的异步执行:操作异步性和时间重叠导致写入数据库的数据有误;
  • 加锁:强行将并行执行变成顺序执行;

设计模式,架构,框架

  • 设计模式:一种思想,关注的是写代码过程中遇到的非常具体的某一类问题《常见的23种设计模式》
  • 框架:树的主干,自己写的代码是叶子;
  • 架构:一种设计决策;

时间戳,MD5,GUID

  • 时间戳(TimeStamp):当某一事件发生时,立刻为他存储一个时间;
  • MD5:信息摘要算法第五版;主要解决的问题:对一个文件或字符串生成一个唯一标识,保证一个字符串生成的MD5码是绝对唯一的;
  • GUID:全局唯一标识符,128位的数字标识符;

  • 有好几层含义:
  • 1.数据结构;标识一个先进先出的队列;push进,pop出;
  • 2.表示由操作系统管理和分配的一些内存区域,用来存储程序中的变量和参数;栈溢出——内存空间被用完了;
  • 3.栈信息:程序出错的打印信息;
  • 全栈:精通前端/后台/终端/架构的工程师;

OpenGL

  • 图形编程:最基本的问题——如何用程序再显示器上绘制东西;有两种方式:1.软件绘制:CPU在内存里准备好了要绘制的东西然后交给显示器去显示,2.硬件加速:显卡在显存里准备好了要绘制的东西交给显示器去显示;
  • OpenGl:利用显卡的硬件加速能力帮助绘制图形;700多个API(每个API代表一种能力),跨平台,支持各种语言;是一个状态机(不停做状态切换);

引擎

  • 引擎:一套能力的组合;

PAC文件

  • PAC:proxy auto-config,自动配置代理,核心是一个函数「FindProxyForURL(url,host)」,输入一个url和域名,则返回一个或多个代理服务器的地址,或返回一个命令,告诉浏览器不使用代理访问该url;

渲染

  • 流程:测量-排版-绘制;
  • 展示熳、卡顿问题:渲染的不是很流畅;

AR/VR技术

  • AR:增强现实,是对真实世界的信息扩展,虚实结合;关键技术:计算机视觉(对真实环境进行处理的前提是让电脑认识真实环境中的事物);
  • VR:提供沉浸感极强的虚拟世界;利用计算机三维建模(构建场景)和动作追踪技术(提供交互)作为系统输出和输入;三维建模完成虚拟世界的建设,VR设备集成的各种传感器则负责让用户与世界建立真实的连接,通过传感器的动作捕捉,将用户的一举一动作用到实时计算生成的三维虚拟世界中;

位图和矢量图

  • 位图:用像素点阵来描述图片;失真;jpg,png,WEBP;
  • 矢量图:由点、直线、多边形等几何图元(可由数值和方程式描述的)构成的图像;不失真;SVG;

接口

  • 接口:提供一种别人可调用的能力的标准;一组能力的集合,抽象的,不包括具体实现(调用者在不需要知道具体实现的前提下即可获得结果);

线程池,对象池,连接池

  • 对象池:提供很多对象放到池子里,循环利用(创建对象是浪费时间的);
  • 连接池:同理(数据库连接是宝贵的);
  • 池化技术:充分保障系统效率的前提下,充分复用资源的方式;

关于兼容

  • 向后兼容:对已发出去的老版本兼容;可适度做的,无法长期兼容未来的;
  • 向前兼容:对未来还未做好的版本兼容;一定要做的,一定有解决方案的;

游戏引擎

  • 游戏世界的基础 框架,定义并实现了游戏中的自然法则,包括光影效果、动画系统、物理系统、渲染系统等;

渐进式图片

  • 渐进式:压缩方式是根据小波变换,先存储低频(轮廓)内容,再存储高频(细节)内容;展示方式:先显示图片轮廓,然后随下载数据的增多逐渐细化图片的各个细节,使图片分辨率逐渐提高,最终还原完整图像;
  • 普通jpeg图片:从左至右、从上至下压缩;

LiFi

  • LiFi:light fidelity,利用可见光传输信息的技术;原理是将可见光的明暗变化进行编码,由接收端将光信号转化为数字信号;
  • 优点(相对Wi-Fi):高频宽(不用为降低信号干扰而频繁调整信道);高速率(传输速率高);
拿钱去买猫粮和狗粮嗷 ~