随笔分类 -  算法与数据结构

摘要:链模式 解析jQuery 通过 直接返回其原型方法; 添加初始化获取节点方法,并链式返回; 覆盖获取 之前没次返回的都是同一个对象,会覆盖; 使用构造函数, 返回的类型为 ; 注意此时返回的 就不再指向 ,再设置 ; 修改构造器: 丰富元素获取 JS是弱类型语言,并没有纯粹的数组类型,JS引擎的实现 阅读全文
posted @ 2015-10-19 23:41 JinksPeng 阅读(179) 评论(0) 推荐(0)
摘要:数据访问对象模式 本地数据访问例子 节流模式 对重复的业务逻辑进行节流控制,执行最后一次操作病取消其他操作; 节流器 页面滚动例子 优化浮层 当光标划入和划出容器时,为避免是用户误操作,应该使用节流器延迟操作; 图片延迟加载优化 目标是使可视范围内的图片优先加载; 先将获取的 设置到图片的 ,再延迟 阅读全文
posted @ 2015-10-19 23:40 JinksPeng 阅读(159) 评论(0) 推荐(0)
摘要:访问者模式 针对对象结构中的元素,定义在不改变对象前提下访问结构元素的新方法; 对象访问器例子 备忘录模式 在不破坏对象封装性前提下,在对象之外捕获并保存该对象内部的状态以便日后使用或恢复到某个状态; 新闻页面缓存器例子 缓存数据可以减轻重复性请求数据的压力; 但数据量过大时需要考略缓存的优化或限制 阅读全文
posted @ 2015-10-19 23:39 JinksPeng 阅读(188) 评论(0) 推荐(0)
摘要:中介者模式 解除对象与对象之间的耦合关系;增加一个中介者后,所有的对象都可以通过中介者通信而不是互相引用; 中介者模式例子 游戏 购买商品 var goods = { 'red|32G': 3, 'red|16G': 0, 'blue|32G': 1, 'blue|16G': 6 }; var me 阅读全文
posted @ 2015-10-19 23:38 JinksPeng 阅读(272) 评论(0) 推荐(0)
摘要:状态模式 状态模式的关键是把事物的每种状态都封装成单独的类,跟此种状态有关的行为都被封装在这个类内部;当内部状态改变时,会带来不同的行为变化; 电灯开关的例子 JS版本的状态机器 JS是无类的,没有规定让状态对象一定要从类中创建而来;此外JS可以非常方便地使用委托技术,并不需要要事先让一个对象持有另 阅读全文
posted @ 2015-10-19 23:38 JinksPeng 阅读(167) 评论(0) 推荐(0)
摘要:组合模式 将对象组合成树形结构,以表示‘部分-整体’的层次结构;遍历树形结构的操作只需要一次操作; 利用对象多态性的统一对待组合对象和单个对象,不用关心他们的不同; 像命令模式中宏命令就是一种组合模式; 请求在树中传递的过程; 如果子节点是叶节点,叶对象自身会处理这个请求;如果还是组合对象则继续往下 阅读全文
posted @ 2015-10-19 23:36 JinksPeng 阅读(177) 评论(0) 推荐(0)
摘要:享元模式 是一种用于性能优化的模式; 核心是运用共享技术来有效支持大量细粒度的对象,避免对象间拥有相同的内容造成多余的开销; 内部状态和外部状态 享元模式要求对象的属性划分为内部状态和外部状态; 目标是减少共享对象的数量; 内部状态存储于对象内部; 内部状态可以被一些对象共享; 内部状态独立于具体的 阅读全文
posted @ 2015-10-19 23:35 JinksPeng 阅读(207) 评论(0) 推荐(0)
摘要:观察者模式 又叫发布订阅模式,定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知; JS开发中,一般用事件模型替代传统的发布-订阅模式 作用 可以广泛应用于异步编程中,替代传统回调函数;如订阅 请求的 事件; 取代对象之间硬编码的通知机制,一个对象不再显示地调用另一个 阅读全文
posted @ 2015-10-19 23:34 JinksPeng 阅读(250) 评论(0) 推荐(0)
摘要:代理模式 为一个对象提供一个代用品或占位符。以便控制对他的访问; 面向对象设计原则-单一职责原则 就一个类(对象,函数)而言,应该仅有一个引起他变化的原因;(低耦合) 代理和本体借口的一致性 当不需要代理的时候可以替换回本体 保护代理 过滤请求;可以用于控制不同权限对象对目标对象的访问 虚拟代理 把 阅读全文
posted @ 2015-10-19 23:33 JinksPeng 阅读(254) 评论(0) 推荐(0)
摘要:单例模式 保证一个类只有一个实例,并提供一个访问他的全局访问点; 模拟单例实现 传统方式: 代理实现: JS中的单例模式 传统模式中单例对象从类中创建而来,但JS其实并无类; 抓做单例模式核心:确保只有一个可全局访问的实例;可以用更符合JS的方式创建 使用命名空间 适当使用全局命名空间 动态创建命名 阅读全文
posted @ 2015-10-19 23:31 JinksPeng 阅读(195) 评论(0) 推荐(0)
摘要:工厂模式 简单工厂模式 创建同一类的对象; 通过一个对象来代替 工厂方法模式 创建多类; 将实际创建对象工作推迟到子类当中; 抽象工厂模式 创建的不是对象实例,而是一个类簇; 汽车模型例子: 创建者模式 将一个复杂对象的构建层和表示层分离; 工厂模式不关心过程而关心最后的产出,建造者模式更关注创建的 阅读全文
posted @ 2015-10-19 23:30 JinksPeng 阅读(283) 评论(0) 推荐(0)
摘要:对象 常用产生 一般对象; 函数对象; 类; 多态: 简介: 同一操作用于不同对象可以产生不同的结果; 背后的思想:将不变的事与可能变的事分开,封装;关键是消除类型之间的耦合; 实现: 一般语言:常用继承,向上转型来表现对象的多态特性; JS:由于本身的的特征,不存在类型耦合的问题; 作用:通过把过 阅读全文
posted @ 2015-10-19 23:28 JinksPeng 阅读(243) 评论(0) 推荐(0)
摘要:动态规划: 递归是从顶部开始将问题分解,通过解决所有分解出小问题来解决整体问题; 动态规划从底部开始解决问题,将所有小问题解决,然后合并掉一个整体解决方案; 背包问题: 递归解决: 动态规划: 阅读全文
posted @ 2014-10-25 12:04 JinksPeng 阅读(289) 评论(0) 推荐(0)
摘要:顺序查找:也称线性查找,暴力查找的一种 基本格式: var nums = []; for(var i = 0; i < 10; ++i) { nums[i] = Math.floor(Math.random() * 101); } function seqSearch(arr,data) { for 阅读全文
posted @ 2014-10-25 10:48 JinksPeng 阅读(276) 评论(0) 推荐(0)
摘要:高级排序算法:(处理大数据:百万以上) 希尔排序:是插入排序的优化版; 首先设置间隔数组,然后按照每个间隔,分别进行排序; 如第一个间隔为5,首先a[5]与a[0]进行插入排序;然后a[6]和a[0],a[1]进行插入排序,直到最后一个; 然后换下一个间隔值,直到所有间隔值排序完(当间隔值为1时,就 阅读全文
posted @ 2014-10-20 09:11 JinksPeng 阅读(177) 评论(0) 推荐(0)
摘要:基本准备: 基本排序算法: 冒泡排序:最容易实现也是最慢的算法之一 从头开始依次分别比较相邻的两个元素并排序,直到最后一个;此时确定最后一个会是最大的; 重复上面步骤但不比较已经确定的,此时确定最后第二个是第二大的; 继续重复直到剩下第一个元素为止,确定它是最小的; 从头开始依次分别比较相邻的两个元 阅读全文
posted @ 2014-10-19 17:23 JinksPeng 阅读(324) 评论(0) 推荐(0)
摘要:图:是由边和定点的集合组成; 按照图的定点对是否有序可以分为:有向图和无向图; 路径:所有顶点都由边连接构成;路径长度为第一个定点到最后一个顶点之间的数量; 环:指向自身的顶点,长度为0;圈:至少有一条边的路径,且第一个顶点和最后一个顶点相同; 强连通:如果两个顶点之间有路径,则这两个顶点就是强连通 阅读全文
posted @ 2014-10-18 19:14 JinksPeng 阅读(1090) 评论(1) 推荐(0)
摘要:树:以分层的方式存储数据;节点:根节点,子节点,父节点,叶子节点(没有任何子节点的节点);层:根节点开始0层; 二叉树:每个节点子节点不超过两个;查找快(比链表),添加,删除快(比数组); BST:二叉树查找: 设置根节点为当前节点; 如果要插入的节点小于当前节点,则设置其左节点为新的当前节点;大于 阅读全文
posted @ 2014-10-18 11:24 JinksPeng 阅读(386) 评论(2) 推荐(1)
摘要:集合:唯一性,无序性; 基本结构: 操作:demo 集合的基本操作:并集,交集,补集; 并集: 操作: demo; 交集: 操作: demo; 补集: 父集判断: 操作:demo 阅读全文
posted @ 2014-10-17 20:45 JinksPeng 阅读(232) 评论(0) 推荐(0)
摘要:哈希表(散列表):通过哈希函数将键值映射为一个字典; 哈希函数:依赖键值的数据类型来构建一个哈希函数; 一个基本的哈希表:(按字符串计算键值) 操作:demo:; 可能出现的问题: 碰撞;即在哈希函数计算的时候出现相同的哈希值; 解决:这要解决哈希函数的计算问题;如上面定义中哈希函数,是求余计算:这 阅读全文
posted @ 2014-10-17 16:13 JinksPeng 阅读(376) 评论(0) 推荐(0)