01 2021 档案

摘要:简介 前面介绍了广告定向的实现,它是一个查询密集型 (query-intensive) 程序,所以每个发给它的请求都会引起大量计算。本文将实现一个简单的社交网站,则会尽可能地减少用户在查看页面时系统所需要做的工作。 P184 用户和状态 P185 用户对象存储了用户的基本身份标识信息、用户的关注者人 阅读全文
posted @ 2021-01-31 14:08 满赋诸机 阅读(302) 评论(0) 推荐(0)
摘要:使用 Redis 进行搜索 P153 通过改变程序搜索数据的方式,并使用 Redis 来减少绝大部分基于单词或者关键字进行的内容搜索操作的执行时间。 P154 基本搜索原理 P154 倒排索引 (inverted indexes) 是互联网上绝大部分搜索引擎使用的底层结构,它类似于书本末尾的索引。倒 阅读全文
posted @ 2021-01-29 22:40 满赋诸机 阅读(911) 评论(0) 推荐(0)
摘要:任务队列 P133 通过将待执行任务的相关信息放入队列里面,并在之后对队列进行处理,可以推迟执行那些耗时对操作,这种将工作交给任务处理器来执行对做法被称为任务队列 (task queue) 。 P133 先进先出队列 P133 可以 Redis 的列表结构存储任务的相关信息,并使用 RPUSH 将待 阅读全文
posted @ 2021-01-28 21:47 满赋诸机 阅读(802) 评论(0) 推荐(0)
摘要:自动补全 P109 自动补全在日常业务中随处可见,应该算一种最常见最通用的功能。实际业务场景肯定要包括包含子串的情况,其实这在一定程度上转换成了搜索功能,即包含某个子串的串,且优先展示前缀匹配的串。如果仅包含前缀,那么可以使用 Trie 树,但在包含其他的情况下,使用数据库/ ES 本身自带查询就足 阅读全文
posted @ 2021-01-27 22:24 满赋诸机 阅读(479) 评论(0) 推荐(0)
摘要:复制简介 P61 关系型数据库通常会使用一个主服务器 (master) 向多个从服务器 (slave) 发送更新,并使用从服务器来处理所有读请求。 Redis 也采用了同样的方法实现自己的复制特性,并将其用作扩展性能的一种手段。 P69 在接收到主服务器发送的数据初始副本 (initial copy 阅读全文
posted @ 2021-01-26 21:21 满赋诸机 阅读(573) 评论(0) 推荐(1)
摘要:持久化选项简介 P61 Redis 提供了两种不同的持久化方法来将数据存储到硬盘里面。 RDB(redis database):可以将某一时刻的所有数据都写入硬盘里面。(保存的是数据本身) AOF(append only file):会在执行命令时,将被执行的写命令复制到硬盘里面。(保存的是数据的变 阅读全文
posted @ 2021-01-25 22:07 满赋诸机 阅读(191) 评论(0) 推荐(0)
摘要:发布与订阅 P52 Redis 实现了发布与订阅(publish/subscribe)模式,又称 pub/sub 模式(与设计模式中的观察者模式类似)。订阅者负责订阅频道,发送者负责向频道发送二进制字符串消息。每当有消息被发送至给定频道时,频道的所有订阅者都会接收到消息。 发布与订阅命令 P52 命 阅读全文
posted @ 2021-01-24 10:56 满赋诸机 阅读(432) 评论(0) 推荐(0)
摘要:字符串 P39 Redis 的字符串是一个有字节组成的序列,可以存储以下 3 种类型的值:字节串(byte string)、整数、浮点数。 在需要的时候, Redis 会将整数转换成浮点数。整数的取值范围和系统的长整型(long)的相同,浮点数取值范围和精度与 IEEE 754 标准下的双精度浮点数 阅读全文
posted @ 2021-01-23 10:21 满赋诸机 阅读(495) 评论(0) 推荐(0)
摘要:需求 功能: P23 登录 cookie 购物车 cookie 缓存生成的网页 缓存数据库行 分析网页访问记录 高层次角度下的 Web 应用 P23 从高层次的角度来看, Web 应用就是通过 HTTP 协议对网页浏览器发送的请求进行响应的服务器或者服务(service)。 Web 请求一般是无状态 阅读全文
posted @ 2021-01-22 22:52 满赋诸机 阅读(254) 评论(0) 推荐(0)
摘要:需求 功能: P15 发布文章 获取文章 文章分组 投支持票 数值及限制条件 P15 如果一篇文章获得了至少 200 张支持票,那么这篇文章就是一篇有趣的文章 如果这个网站每天有 50 篇有趣的文章,那么网站要把这 50 篇文章放到文章列表页前 100 位至少一天 支持文章评分(投支持票会加评分), 阅读全文
posted @ 2021-01-21 22:21 满赋诸机 阅读(652) 评论(2) 推荐(0)
摘要:一些数据库和缓存服务器的特性和功能 P4 名称 类型 数据存储选项 查询类型 附加功能 Redis 使用内存存储(in-memory)的非关系数据库 字符串、列表、哈希表、集合、有序集合 每种数据类型都有自己的专属命令,另外还有批量操作(bulk operation)和不完全(partial)的事务 阅读全文
posted @ 2021-01-20 21:08 满赋诸机 阅读(220) 评论(0) 推荐(0)
摘要:背景 先看一下目前的效果:在「Markdown 笔记」原有的上传图片弹窗中增加了一个我们自定义的上传按钮,通过直接与后端 API 交互完成图片上传(相关 API 是「笔记」上传时公开使用的)。 两年前还没开始使用 GitHub 记录读书笔记,那时在用有道云笔记。我使用的是 「Markdown 笔记」 阅读全文
posted @ 2021-01-19 22:49 满赋诸机 阅读(647) 评论(0) 推荐(1)
摘要:模式 是在某情境(context)下,针对某问题的某种解决方案。 P579 情景:应用某个模式的情况 问题:你想在某情境下达到的目标,但也可以是某情境下的约束 解决方案:一个通用的设计,用来解决约束、达到目标 模式必须应用于一个重复出现的问题。 P581 思考题 配对下列模式和描述: P587 装饰 阅读全文
posted @ 2021-01-18 21:23 满赋诸机 阅读(144) 评论(0) 推荐(0)
摘要:复合模式 在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。 P500 思考题 public interface Quackable { public void quack(); } public class MallardDuck implements Quackable { pub 阅读全文
posted @ 2021-01-17 10:43 满赋诸机 阅读(293) 评论(0) 推荐(0)
摘要:思考题 如何设计一个支持远程方法调用的系统?你要怎样才能让开发人员不用写太多代码?让远程调用看起来像本地调用一样,毫无瑕疵? P435 已经接触过 RPC 了,所以就很容易知道具体流程:客户端调用目标类的代理对象(消费者)的方法,消费者内部将相关调用信息通过网络传到服务端对应的目标类的代理对象(生产 阅读全文
posted @ 2021-01-16 13:10 满赋诸机 阅读(363) 评论(0) 推荐(0)
摘要:思考题 public class GumballMachine { final static int SOLD_OUT = 0; final static int NO_QUARTER = 1; final static int HAS_QUARTER = 2; final static SOLD 阅读全文
posted @ 2021-01-15 21:06 满赋诸机 阅读(171) 评论(0) 推荐(0)
摘要:思考题 我们不仅仅要支持多个菜单,甚至还要支持菜单中的菜单。你如何处理这个新的设计需求? P355 【提示】在我们的新设计中,真正需要以下三点: P354 我们需要某种属性结构,可以容纳菜单、子菜单和菜单项 我们需要确定能够在每个菜单的各个项之间游走,而且至少要像现在用迭代器一样方便 我们也需要能够 阅读全文
posted @ 2021-01-14 20:51 满赋诸机 阅读(162) 评论(0) 推荐(0)
摘要:思考题 public void printMenu() { PancakeHouseMenu pancakeHouseMenu = new PancakeHouseMenu(); ArrayList breakfastItems = pancakeHouseMenu.getMenuItems(); 阅读全文
posted @ 2021-01-13 20:41 满赋诸机 阅读(172) 评论(0) 推荐(0)
摘要:模板方法模式 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 P289 特点 主导算法框架,并且保护这个算法 P288 最大化复用代码 P288 算法只存在于一个地方,容易修改 P288 专注算法本身,由子类提供完整 阅读全文
posted @ 2021-01-12 20:51 满赋诸机 阅读(185) 评论(0) 推荐(0)
摘要:思考题 想想看,你在 JavaAPI 中遇到过哪些外观,你还希望 Java 能够新增哪些外观? P262 println、log 日志接口、JDBC 接口 突然让想感觉想不出来,各种 API 都用得挺顺的,没有太麻烦的使用 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高 阅读全文
posted @ 2021-01-11 21:29 满赋诸机 阅读(176) 评论(0) 推荐(0)
摘要:思考题 你能想到真实世界中,还有哪些适配器的例子? P236 HDMI 转 VGA 转换器 Type-C 转 3.5mm 线 适配器模式解析 客户使用适配器的过程: P241 客户通过目标接口调用适配器的方法对适配器发出请求 适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口 客户接收到 阅读全文
posted @ 2021-01-10 10:43 满赋诸机 阅读(184) 评论(0) 推荐(0)
摘要:命令模式 将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 P206 特点 使请求调用者和请求接收者解耦 P207 适合用来建立有弹性的设计,维持开闭原则 (同装饰器模式 P104) 使用宏命令可以一次执行其他一系列命令 P225 缺点 存大量具体 阅读全文
posted @ 2021-01-09 11:27 满赋诸机 阅读(174) 评论(0) 推荐(0)
摘要:全局变量的缺点 如果将对象赋值给一个全局变量,那么必须在程序一开始就创建好对象 P170 和 JVM 实现有关,有些 JVM 的实现是:在用到的时候才创建对象 思考题 Choc-O-Holic 公司使用如下工业强度巧克力锅炉控制器 public class ChocolateBoiler { pri 阅读全文
posted @ 2021-01-08 21:22 满赋诸机 阅读(292) 评论(0) 推荐(0)
摘要:思考题 如何将实例化具体类的代码从应用中抽离,或者封装起来,使它们不会干扰应用的其他部分? P111 将实例化具体类的代码放入一个对象中管理,通过不同入参决定实例化具体的类 简单工厂 不是23种GOF设计模式之一,而更像一种编程习惯。 P117 特点 通常利用静态方法创建实例,但这样无法通过继承来改 阅读全文
posted @ 2021-01-07 21:10 满赋诸机 阅读(234) 评论(0) 推荐(0)
摘要:思考题 有如下类设计: 如果牛奶的价钱上扬,怎么办?新增一种焦糖调料风味时,怎么办? 造成这种维护上的困难,违反了我们之前提过的哪种设计原则? P82 取出并封装变化的部分,让其他部分不收影响 多用组合,少用继承 思考题 请为下面类的 cost() 方法书写代码。 P83 抽象类:Beverage 阅读全文
posted @ 2021-01-06 21:42 满赋诸机 阅读(204) 评论(0) 推荐(0)
摘要:思考题 在我们的一个实现中,下列哪种说法正确?(多选) P42 public class WeatherDate { // 实例变量声明 public void measurementsChanged() { float temp = getTemperature(); float humidity 阅读全文
posted @ 2021-01-05 22:22 满赋诸机 阅读(181) 评论(0) 推荐(0)
摘要:当涉及到“维护”时,为了“复用”目的而使用继承,结局并不完美 P4 对父类代码进行修改时,影响层面可能会很大 思考题 利用继承来提供 Duck 的行为,这会导致下列哪些缺点?(多选) P5 A. 代码在多个子类中重复 使用继承就是为了复用代码 【答案有此选项】从另一方面考虑,也有这个缺点,比如:多个 阅读全文
posted @ 2021-01-04 23:08 满赋诸机 阅读(260) 评论(0) 推荐(0)
摘要:Head First 学习原则 P xxx 可视化:图片使得学习效率更高,更易懂 交谈式:第一人称交谈方式讲述学习内容更易引起注意 多思考:自主思考练习题和拓展知识的问题 保持注意力集中:将知识融合进有趣、亮眼的内容中,不断引起并保持注意力 影响情绪:关心、好奇、有趣、自豪感等有助于提高记忆能力 学 阅读全文
posted @ 2021-01-04 13:56 满赋诸机 阅读(210) 评论(0) 推荐(0)