
本书专为非技术背景的互联网行业从业者和想了解互联网技术的人员量身定制,分门别类地整理了Web前端技术、客户端技术、开发技术、网络技术等章节,基本涵盖了当前互联网行业的所有垂直技术领域。为了让读者能够更好地理解技术的精髓,几乎每篇文章都配以现实生活中通俗易懂的例子,用于类比复杂的互联网技术原理。在最后的“沟通”章节,作者介绍了根据自身近10年工作经验总结出的一些非技术人员与技术人员的沟通技巧,相信对读者的工作会有一定帮助。
前言 写作缘起 互联网产品经理需要懂技术吗?这是一个引起广泛讨论的问题。有人觉得产品经理每天跟程序员打交道,在需求制订和实施的过程中,少不了对相关技术实现细节进行讨论,所以产品经理必须要懂技术。也有人认为,产品经理作为产品负责人,只需要负责把控产品风险和进度,技术的事情就交给技术负责人吧! 实际上,作为程序员,在跟一些产品经理打交道的过程中,作者不止一次感慨:如果他们能有些基本的技术概念,确实可以省下不少的沟通成本。当然,作者也见过对技术细节过分拘泥的产品经理,花了过多时间探讨方案的技术可行性,而忽略了对产品体验的打磨。 通用的技术理解能力,是每一个互联网从业人员的基本素养。它包括但不限于:认识一些常用的计算机名词,如“内存操作系统”“请求”“响应”等;理解一些常见的互联网技术套路,如“延迟加载”“多线程加速”。除此之外,了解一些互联网领域的前沿技术方向,对于开阔视野也很有帮助。懂技术和不懂技术并不像整数 1 和 0 那样界限分明,它们更像一个区间的两个端点,中间的界限需要我们来把握。在这一点上,大家完全可以“功利”一点。在互联 网技术里,有 80%的概念是简单、基本、常用的,掌握这些只需要花我们 20%的时间。余下 20%的概念属于每个技术领域的实现细节,要掌握这些可能会花掉我们 80%的时间,大可以先放下它们,专攻能为我们所用的概念。 产品经理有了这些底子,当工作中真正需要用到某一项技术的时候,再去网上了解它的来龙去脉,也会事半功倍。也正是基于这样的想法,作者开始创作本书。自始至终,作者给自己定的目标就是“接地气”。本书不是晦涩难懂的教科书,相反,作者试图以科普的形式配合通俗易懂的语言和适当的例子,给产品经理讲他们能看得懂的技术。同时,作为一线程序员,作者还会结合实际工作经验,穿插一些在实践中遇到的技术问题辅助讲解。技术 本身是相通的,希望读者在理解技术的过程中,能找到它要解决的本质问题,多思考采用该技术的原因。 阅读建议 本书介绍了常见的互联网技术,基本涵盖了完成一个互联网产品需要的各个环节。除此之外,作者把平时工作中关于产品技术及管理的一些思考单独汇成一章(第 9章“沟通”),希望能对读者有所启发。详细的章节介绍如下。 第 1 章 讲解 Web 前端技术。Web 是大家最熟悉的互联网形态,通过阅读本章,读者可以快速上手。 第 2 章 讲解客户端技术。随着移动互联网的兴起,移动客户端应用成为主流。本章讲解开发一个 APP 时会用到的技术。 第 3 章 讲解开发技术,包括简单的编程语言、编程时用到的一些“套路”,以及一些计算机基础知识。 第 4 章 讲解网络技术。互联网是建立在信息传输的基础上的,本章讲解整个传输的过程,以及传输中需要解决的问题。 第 5 章 讲解网络安全和后端技术。本章介绍了黑客们常用的攻击手段,以及程序员的应对方法。 第 6 章 讲解互联网技术领域的一些专业名词。 第 7 章 讲解前终端一体化技术(大前端)。后移动互联网时代,随着 React Native的普及及小程序的流行,前端和终端成了一家人,多端运行成了趋势。 第 8 章 讲解人工智能的基本原理。人工智能代表未来,各大公司纷纷“All in”,产品经理也要紧跟时代潮流。 第 9 章 讲解产品经理平时工作时与程序员沟通的方法,以及作者平时工作中的一些感悟。 致谢 我是一名程序员,在一次和产品经理长时间的“PK”后,萌生了给产品经理讲技术的想法。当时的主要诉求是,希望通过我作为程序员的技术积累,给产品经理普及一些基本的技术概念,使大家在沟通之前,能有一些基本的共识,以提高效率。但是,一来我本人技术方向比较单一,二来业余时间实在有限,仅凭一人之力难以付诸 实践。于是我找到组里的几位同事,拉他们入伙。一顿火锅后,我们达成了共识:先从一个公众号做起。 公众号的名字也叫“给产品经理讲技术”。根据大家的技术特长,我们几个做了简单的分工。杨俊勇平时做后台工作较多,他负责网络安全和后端技术部分;陈宇是终端领域专家,他负责客户端和开发技术部分;关磊平时喜欢思考人生,他负责名词解释和沟通部分;高杨负责 Web 前端和网络技术部分;我负责大前端和人工智能部 分。我们 5 个人给自己定了个小目标:在一年中坚持每天发一篇技术科普文章。万万没想到,公众号获得了很多产品经理的认可,后来陆续得到了 5 万多名关注者。期间也有一些“大 V”自发帮忙宣传,让我们觉得这是一件越来越有意义的事情。 写公众号这件事是我们工作之余来做的,几个人都是理科生,一个句子、一个措辞都要斟酌很久,也因此耗费了大量的业余时间。感谢大家的坚持和努力! 在此,特别感谢作者项目组的领导和同事们给予的鼓励和支持。 最后,由衷地感谢电子工业出版社编辑郑柳洁和鞠燕纯对本书的耐心修改,是你们让本书更精彩。 读者反馈 如果您有好的意见和建议,请在微信公众号“给产品经理讲技术”上及时反馈给 我们。
目录 1 Web 前端技术 ....................................................................................... 1 AJAX 技术的妙用................................................................................................. 1 DOM 是什么 ......................................................................................................... 3 静态网页与动态网页 ............................................................................................ 5 分析 URL 的结构 .................................................................................................. 7 网页基础知识:表单 ............................................................................................ 9 H5 应用程序缓存简介 ........................................................................................ 10 Chrome 里的冷知识 ............................................................................................ 11 JS DDoS 攻击的原理与防御 .............................................................................. 12 UA 的故事 ........................................................................................................... 13 URL 编码 ............................................................................................................. 15 简单理解 HTML、CSS 和 JavaScript ................................................................ 16 跨域与同源 .......................................................................................................... 17 Cookie 和广告联盟 ............................................................................................. 20 HTTP Header 是什么 .......................................................................................... 21 简单理解 HTTP 的 GET 和 POST ..................................................................... 22 WebSocket 是什么 ............................................................................................... 23 “直出”是什么 .................................................................................................. 24 互联网的黄金矿工:爬虫 .................................................................................. 25 简单理解单页 Web 应用 ..................................................................................... 26 锚点与网页内跳转的实现 .................................................................................. 27 前端如何适配手机屏幕 ...................................................................................... 29 简单理解“盗链”与“反盗链” ...................................................................... 30 广告过滤机制科普 .............................................................................................. 31 2 客户端技术 .......................................................................................... 33 “骗人”的动画 .................................................................................................. 33 细说 Android 应用的“续命大法” ................................................................... 34 Hybrid APP .......................................................................................................... 36 手机传感器知多少 .............................................................................................. 39 定位终端设备位置的方法有哪些 ...................................................................... 41 客户端推送实现方式 .......................................................................................... 43 为什么美颜 APP 可以美颜 ................................................................................ 46 听歌识曲的基本原理 .......................................................................................... 48 朋友圈中的图片缓存系统 .................................................................................. 50 应用的生命周期 .................................................................................................. 52 3 开发技术 ............................................................................................. 56 “空指针”是什么 .............................................................................................. 56 程序中的“越界”是什么 .................................................................................. 57 编程五分钟,命名两小时 .................................................................................. 58 开发动画需要多少工作量 .................................................................................. 59 耦合与解耦 .......................................................................................................... 61 栈与队列 .............................................................................................................. 63 为什么有些 Bug 不能改 ..................................................................................... 64 加载等待的艺术 .................................................................................................. 65 并行计算 .............................................................................................................. 67 简单了解进程间通信 .......................................................................................... 68 “编不过”是怎么回事 ...................................................................................... 69 程序“挂了”是怎么回事 .................................................................................. 71 简单说说操作系统 .............................................................................................. 72 什么是代码混淆 .................................................................................................. 74 程序员遇到 Bug 时会做些什么 ......................................................................... 75 应用“续命”大法之异常捕获 .......................................................................... 76 搜索引擎的基石:倒排索引 .............................................................................. 79 简单理解面向对象 .............................................................................................. 80 简单理解重构 ...................................................................................................... 82 流水线技术 .......................................................................................................... 83 多线程是什么 ...................................................................................................... 85 复用的艺术:线程池 .......................................................................................... 86 4 网络技术 ............................................................................................. 88 网络基础之协议栈 .............................................................................................. 88 互联网是如何提供服务的 .................................................................................. 90 IP 地址枯竭的后悔药:网络地址转换 ............................................................. 91 PING 和网关 ....................................................................................................... 93 端口二三话 .......................................................................................................... 96 TCP 与 UDP ........................................................................................................ 97 TCP 凭什么说自己可靠 ..................................................................................... 98 谈谈 UDP 的可靠性 ............................................................................................ 99 什么是反向代理 ................................................................................................ 101 CDN 是什么 ...................................................................................................... 102 断点续传的奥义 ................................................................................................ 104 推送服务的核心:长连接 ................................................................................ 105 HTTPS 技术简介 .............................................................................................. 106 讲讲代理服务器 ................................................................................................ 108 聊聊 Wi-Fi 技术 ................................................................................................ 110 就近接入:怎样让用户找到最近的机房 ........................................................ 112 Socket 简介 ........................................................................................................ 113 什么是 HTTP 302 跳转 ..................................................................................... 115 神奇的 Hosts 文件 ............................................................................................. 117 释放你的小水管:说说下载速度那些事儿 .................................................... 119 下载劫持简介 .................................................................................................... 120 VPN 简介 ........................................................................................................... 123 5 网络安全与后端技术 ......................................................................... 125 密码存储之开发指南 ........................................................................................ 125 密码存储指南 .................................................................................................... 127 Web 安全之 SQL 语句 ...................................................................................... 129 Web 安全之 XSS ............................................................................................... 131 Web 安全之 CSRF ............................................................................................. 132 ARP 欺骗的原理 ............................................................................................... 134 DDoS 的原理 ..................................................................................................... 135 Android 应用二次打包 ..................................................................................... 137 那些年中过的病毒 ............................................................................................ 138 家庭 Wi-Fi 防“蹭网”指南 ............................................................................ 140 后台服务之 RPC 框架 ...................................................................................... 142 后台服务之 RESTful API ................................................................................. 144 Session 是用来做什么的 ................................................................................... 145 后台服务之流量控制 ........................................................................................ 147 后台服务如何生成唯一 ID ............................................................................... 148 6 名词解释 ........................................................................................... 150 抽象、封装、类、实例和对象 ........................................................................ 150 SDK、API 和架构 ............................................................................................ 152 控件、组件和框架 ............................................................................................ 153 二进制文件 ........................................................................................................ 154 脚本 .................................................................................................................... 156 内存泄漏 ............................................................................................................ 158 中间件 ................................................................................................................ 160 打底数据与云端控制 ........................................................................................ 161 变量与函数 ........................................................................................................ 162 散列表 ................................................................................................................ 163 钩子 .................................................................................................................... 165 配置文件 ............................................................................................................ 166 算法复杂度 ........................................................................................................ 167 模板 .................................................................................................................... 169 RGB 通识 .......................................................................................................... 170 应用程序、进程和线程 .................................................................................... 172 视频文件与编解码标准 .................................................................................... 173 同步、异步和回调 ............................................................................................ 175 时间戳、MD5 和 GUID ................................................................................... 176 栈的含义 ............................................................................................................ 177 JSON .................................................................................................................. 179 理解 OpenGL ..................................................................................................... 180 引擎 .................................................................................................................... 182 开源许可证 ........................................................................................................ 183 渲染 .................................................................................................................... 185 WLAN、Wi-Fi 与 IEEE 802.11 ........................................................................ 186 位图与矢量图 .................................................................................................... 187 接口 .................................................................................................................... 189 线程池、对象池和连接池 ................................................................................ 190 向前兼容和向后兼容 ........................................................................................ 192 游戏引擎 ............................................................................................................ 193 7 大前端 ............................................................................................... 196 React:流行的前端技术 ................................................................................... 196 React Native:专治急性子的产品经理 ........................................................... 198 一个 React Native 的应用是什么样的 ............................................................. 199 什么样的业务适合用 React Native 来改造 ..................................................... 201 终端开发新思路:Flutter ................................................................................. 202 一窥微信小程序的技术思路 ............................................................................ 203 如何自己开发小程序 ........................................................................................ 205 8 人工智能 ........................................................................................... 208 如何通俗地理解机器学习 ................................................................................ 208 人工智能从业者:专家、工程师和调参程序员 ............................................ 210 TensorFlow:几行代码写一个神经网络的时代来了 ..................................... 213 人工智能里的套话该怎么理解 ........................................................................ 214 一个最简单的机器学习模型 ............................................................................ 216 什么是神经网络 ................................................................................................ 218 神经网络的数据处理 ........................................................................................ 221 为什么你的神经网络像个傻瓜 ........................................................................ 223 懂你的推荐算法:你应该懂的一些知识 ........................................................ 225 9 沟通 .................................................................................................. 227 程序员的分工 .................................................................................................... 227 如何正确地提需求 ............................................................................................ 229 程序员想要的需求文档 .................................................................................... 232 为什么项目会延期 ............................................................................................ 233 目标设定的两种方法 ........................................................................................ 235 你只是在为自己工作 ........................................................................................ 236 为什么产品经理经常焦虑 ................................................................................ 237 精益创业的作用 ................................................................................................ 238