Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
再谈缓存
凡是涉及管理数据的系统 都可以用图书馆来考虑 都要面临图书的位置查找和实际摆放两个问题 对应的两大组件就是就是index store 所有的数据管理系统都包含这两部分 缓存从过期又什么触发的角度分为容量触发和时间触发 容量触发 就是缓存满了
系统分析设计
OoD
同类问题汇总
mds的 labelIndex 静态预排序
一般排序是数据 doc resultItem 取出来之后 按某个某个字段的值排序 也就是必须拿到doc resultItem之后才能排序 mds排序的特点是在取resultItem之前就排序 不是对resultItem排序 而是对docId
系统分析设计
面向对象OO 设计、架构终极理解, 以及如何学习一个领域
程序就是一些互相引用的内存快 互相发消息 每个内存块就是一个状态机 状态的迁移规则是定制好的一些消息 方法 构造函数用来初始化状态 一个内存块的方法除了改变自身状态 也有可能向引用的别内存快发消息 引起别的内存块发生状态转移 重点不在过程化
OoD
系统分析设计
基于HashHeap的LFU实现
普通heap支持的操作和queue stack一样 就是push pop 只是pop出的是最小值 具体点就是add delMin hashheap支持一般HashMap的功能 同时维护最小值 和LinkedHashMap是对等的 后者是Ha
算法
系统分析设计
大数据问题汇总
1最基本的 一个数据流 文件 求top k biggest solution 维护大小为K的最小堆 和堆顶比 大于堆顶的加入堆 堆顶相当于准入门槛 如果size 超过K 移除堆顶 vector
系统分析设计
同类问题汇总
redis中hashtable 的 rehash/ resizing 策略
依赖于连续存储的数据结构 具体的 就是依赖array 都有一个resizing问题 对于vector 一般的策略就是满的时候double and copy 降到1 4时候 halve and copy Hashtable也可以这么做 均摊的
数据存储和查找
架构
系统分析设计
面向对象课程学习
设计一般流程 黑盒 1用例分析 白盒 2 识别类 分析阶段只identify 问题领域的类 设计阶段可能添加软件世界特有的类 或者 3 识别类之间的关系 关联 泛化 聚合 组合 依赖 4 画顺序图 结合用例图 完善类图 类图是结构设计 顺序
系统分析设计
架构
学习笔记
搜索提示是如何实现的
经典的想法就是一个Trie的 keysWithPrefix 问题 更高级的 进一步考察 keysWithPrefix需要做prefix下的inOrder遍历 但是每当用户type下一个字符 那个提示列表瞬间就显示出来了 不像是遍历很大一棵树
架构
系统分析设计
再谈type ahead 问题
问题 给定一个词典 包括一些词和其出现的频率 实现type ahead功能 要求用户每键入一个字符 下拉框显示以当前输入为前缀的前10个最热门的词 解法1 用不带data的Trie data仅仅是词频 实时查询法 需要实时的去build h
同类问题汇总
算法
系统分析设计
一个完整的语法分析、词法分析例子——Universal Pasrser
需求 用户用formal notation指定语法 词法 然后可以匹配相应的文本 用法类似正则表达式 只需给出formal notation 不需要为每一种格式的文本单独写匹配器 formal notation主要是3个部分 1 BNF 列
parser
算法
同类问题汇总
系统分析设计
一致性的3种协议,并发,事务
Two Phase Commit MVCC Paxos TPC对应于传统数据库上的local cluster的一致性 分布式事务 每个节点上的local事务可以是不同的亦可以是相同的 replica MVCC的思想是抓住Transactio
数据库
系统分析设计
并发
架构
BigQueue:The Architecture and Design of a Publish & Subscribe Messaging System Tailored for Big Data
The Architecture and Design of a Publish Subscribe Messaging System Tailored for Big Data Collecting and Analytics MAR 2
系统分析设计
文件操作
架构
电梯系统OO设计
理论上应该先黑盒用例 分析需要求 系统边界的输入输出 再白盒类图 但是对于现实世界模拟的OO 个人感觉先emulate现实世界 初步识别类和类之间的关系 再用用例和顺序图丰富 修正类图 识别类 最主要的原则是封装 数据和数据的操作封装成一个
架构
系统分析设计
OoD
什么是Service, 以及Service 模板
Service本质就是一个驻留Process 驻留Prcess至少有一个驻留线程 这个线程处在waiting的状态 相对于Runable 控制流停在某个点上 等待外部事件驱动 或者是自己的timer驱动 Windows Service 是一
并发
系统分析设计
架构
多线程
random_queue:支持push, popRamdom的数据结构
pop哪一个元素 决定了queue stack priority queue的不同 新加一个random queue 等概率的从集合里取出一个元素pop 1 先用rand int l int r 得到一个随机位置 2 和top交换 3 to
系统分析设计
数据结构扩展
还是搜索、索引的问题
搜索要弄清2个基本问题 1 要搜索出什么类型的entity 2 entity的哪个方面 维度和关键词发生关联的 一般来说可以有多个角度link到entity 一个entity支持多个索引 可以从不同的column检索 对于 web sear
架构
系统分析设计
同类问题汇总
自己动手写一个key value store
一涉及到persistent 哪怕只是最基本的需求 很多人都会依赖数据库 或是其他现成的库或工具 确实 对于文件 大部分人很少直接打交道 或者只是诸如整体反序列化 序列化 按行读取 append new line等有限的操作 一个persi
算法
文件操作
系统分析设计
同类问题汇总
架构
爬虫中网页分析的几种技术
一般来说我们只抓取网页中的特定数据 比如抓取某人所有的blog 我们就只关心list 页面中文章列表那部分的链接和title 有几种技术可以用来分析网页 1 正则匹配 2 一般字符串匹配content substring pattern s
parser
同类问题汇总
系统分析设计
资源调度器的一些基本问题
1 调度算法 Capacity based DRF dominant recourse fairness label based等 多态化 插件化 可以多种策略一起工作 对应于不同Job 优先级 job特性 service or batch
架构
系统分析设计