09 2016 档案
优秀代码规范
摘要:关于优雅代码风格的描述: 代码简单:不隐藏设计者的意图,抽象干净利落,控制语句直截了当。 接口清晰:类型接口表现力直白,字面表达含义,API 相互呼应以增强可测试性。 依赖项少:依赖关系越少越好,依赖少证明内聚程度高,低耦合利于自动测试,便于重构。 没有重复:重复代码意味着某些概念或想法没有在代码中 阅读全文
posted @ 2016-09-27 18:22 張暁磊 阅读(253) 评论(0) 推荐(0)
那些年搞不懂的术语、概念:协变、逆变、不变体
摘要:阅读目录 简述什么是协变性、逆变性、不变性 泛型委托的可变性 泛型接口的可变性 不变性 延伸思考 总结 简述什么是协变性、逆变性、不变性 协变性,如:string->object (子类到父类的转换) 逆变性,如:object->string (父类到子类的转换) 不变性,基于上面两种情况,不可变。 阅读全文
posted @ 2016-09-27 18:17 張暁磊 阅读(201) 评论(0) 推荐(0)
只是想简单说下序列化
摘要:【博主】反骨仔 【原文地址】http://www.cnblogs.com/liqingwen/p/5902005.html 目录 序列化的含义 通过序列化保存对象数据 众说纷纭 序列化的含义 通过序列化保存对象数据 众说纷纭 一、序列化的含义 序列化是将对象处理为字节流以存储对象或传输到内存、数据库 阅读全文
posted @ 2016-09-27 18:15 張暁磊 阅读(235) 评论(0) 推荐(0)
横向时间进度条
摘要:[javascript] view plain copy function ready(){ if(${benefit==0}){ $("#money").attr("disabled","disabled"); }else{ $("#money").removeAttr("disabled"); 阅读全文
posted @ 2016-09-24 16:25 張暁磊 阅读(291) 评论(0) 推荐(0)
进度条与时间轴绑定显示图片
摘要:1 2 3 4 5 6 7 8 9 10 11 12 13 14 <!doctype html> <html lang="en-US"> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html" 阅读全文
posted @ 2016-09-24 11:59 張暁磊 阅读(1579) 评论(0) 推荐(0)
jQuery的61种选择器
摘要:jQuery选择器 1. #id : 根据给定的ID匹配一个元素 结果: 这是第一个p标签 这是第二个p标签 2. element : 根据给定的元素标签名匹配所有元素 结果: 这是div标签1 这是div标签2 这是p标签 3. .class : 根据给定的css类名匹配元素 结果: 这是第一个p 阅读全文
posted @ 2016-09-23 17:35 張暁磊 阅读(257) 评论(1) 推荐(0)
乐视支付架构
摘要:架构 乐视 订单架构 构建一个支撑每秒十万只读系统并不复杂,无非是通过一致性哈希扩展缓存节点,水平扩展web服务器等。每秒钟数十万数据更新操作,在任何数据库上都是不可能的任务,首先需要对订单表进行分库分表。 在进行数据库操作时,一般会用ID(UID)字段,所以选择以UID进行分库分表。 分库策略我们 阅读全文
posted @ 2016-09-21 17:39 張暁磊 阅读(246) 评论(0) 推荐(0)
电商缓存设计
摘要:前段时间,在和朋友讨论和研究缓存的使用,一直对缓存的使用搞的不太清楚,所以这次把和朋友讨论过缓存系统的设计的相关问题总结总结。 对于一个电商系统,缓存是重要组成部分,提升系统性能的主要方式之一就是缓存。它可以挡掉大部分的数据库访问的冲击,如果没有它,系统很可能会因为数据库不可用导致整个系统崩溃。 但 阅读全文
posted @ 2016-09-21 17:35 張暁磊 阅读(1074) 评论(0) 推荐(0)
深入理解JSON对象
摘要:前面的话 json(javascript object notation)全称是javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据。2001年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式。本文将详细介绍关于json的内容 语 阅读全文
posted @ 2016-09-21 17:27 張暁磊 阅读(166) 评论(0) 推荐(0)
大话异步与并行(一)
摘要:很久没安下心来写博客了,几年的开发过程中,对于异步与并行的了解也随着清淅起来。首先很多人问我,异步与并行的区别,那么我们来了解下概念。 本博文写的主旨是用最白话的语言来说明问题,不想照搬概念。 在古老的单核计算机中,一般是单核的,并行也只是在进程中交替的执行,表现出来的像并行执行一样,只是时间比较短 阅读全文
posted @ 2016-09-21 17:20 張暁磊 阅读(177) 评论(0) 推荐(0)
大话异步与并行(三)
摘要:上两章主要熟悉及验证异步与并行的基础知识,本节主要讲讲,现实中的需求--线程或异步给我们计算机带来的“性能”提升 我们最熟悉的不过就是操作数据作了,现以有两个数据库AccountA和AccountB,为了模拟,里面分别有相同的user表。 同步方式就是针对两张表登录事务然后事务提交insert ,就 阅读全文
posted @ 2016-09-21 17:19 張暁磊 阅读(157) 评论(0) 推荐(0)
大话异步与并行(二)
摘要:接着上期的文章继续说异步与并行 并行来自于线程的方法实现,异步不一定。这句话,晕倒一大片程序员。 首先,多线程序是实现异步一种方法,两者的共同目的:使主线程保持对用户操作的实时响应,如点击、拖拽、输入字符等。使主程序看起来实时都保持着等待用户响应的状态,而后台却有若干件事情在自己干。按消耗资源所在地 阅读全文
posted @ 2016-09-21 17:19 張暁磊 阅读(141) 评论(0) 推荐(0)
从 AJAX 到 JSONP的基础学习
摘要:目录索引: 一、AJAX的概念二、POST && GET三、原生实现AJAX简单示例 3.1 实现代码 3.2 重点说明四、框架隐藏域 4.1 基本概念 4.2 后台写入脚本 4.3 JS主动判断Iframe的改变 4.4 表单提交数据实战五、JQ 的 AJAX 5.1 load() 5.2 $.g 阅读全文
posted @ 2016-09-21 17:15 張暁磊 阅读(125) 评论(0) 推荐(0)
我的后端开发书架2015 2.0版
摘要:《Java并发编程实战》 人手一本不用多说了。 《深入理解 Java 虚拟机 第2版》 深入理解虚拟机并不是那么难,Java程序员都该看看,很多知识其实是必须的。另外还有几本类似主题的,忽然一下子都出来了。 《Java性能优化权威指南》 虽然后面的章节好像用处不大,前面有些部分还是值得看,不过Gos 阅读全文
posted @ 2016-09-16 21:11 張暁磊 阅读(175) 评论(0) 推荐(0)
程序员的人生职业规划
摘要:很多大公司的工作氛围是这样的:每天上班来打卡,然后坐在自己的工位上开始做事,很少和同事有交流,公司为了减少同事之间的交流甚至在工位之间用板子隔开,即使和同事交流也只谈工作的事情;公司没事的时候很闲,大公司养人,没事做时能让你闲半年, 在闲的时候和同事交流更少,每天只是上班打卡,然后虚度一天,下班打卡 阅读全文
posted @ 2016-09-16 21:05 張暁磊 阅读(234) 评论(0) 推荐(0)
互联网行业趋势
摘要:程序员在做职业规划时,除了要明白自己处于技术的哪个阶段,每个应该做什么之外。也需要了解行业趋势,这样才能帮助我们选准技术方向和公司。下面简单说说三个趋势: 全栈和标准化、产业互联网、社群经济。 全栈是现在的趋势,标准化是未来的趋势。 以前我们认为的技术大牛是精通Linux系统底层、熟悉MySQL、P 阅读全文
posted @ 2016-09-16 21:05 張暁磊 阅读(174) 评论(0) 推荐(0)
向内的寻找
摘要:程序员是一群善于思考的人, 作为一个程序员可能或多或少都思考过人生, 就在2015年两位互联网界的大佬思考出了自己的人生, 一位是李开复, 另外一位是黎万强。 李开复在他的《向死而生·我修的死亡学分》中阐述说要选择自己热爱的事情。而黎万强在他的《花与树的星空》摄影展上也是向众人们表达了要选择自己发自 阅读全文
posted @ 2016-09-16 21:04 張暁磊 阅读(772) 评论(0) 推荐(0)
了解潜意识
摘要:当你听见电话响了,你会做什么?我们的第一反应都是会去接电话。这个第一反应就是潜意识,它是一种条件反射。 我们想想,能不能不去接电话,自己继续看书,不受它的影响? 要明白,你的行动、你的情绪你自己是有控制的。 潜意识是十分快速的,是没有经过大脑思考的。之前我们讲过缘脑也有记忆功能, 潜意识应该就是存在 阅读全文
posted @ 2016-09-16 21:01 張暁磊 阅读(1656) 评论(0) 推荐(0)
面对困难
摘要:当你遇到困难的时候,你是什么心态? 我说一下我自己的一个经历。我学会了html和css后,就以为自己会做网站了,然后在网上接活做。 我第一个客户找我做网站。给我说,他要网站有留言的功能,论坛的功能等等。 当时我都不会做。一下感觉好困难,做网站怎么这么困难呀? 其实我那个时候,自己有点气馁,没有信心了 阅读全文
posted @ 2016-09-16 21:00 張暁磊 阅读(311) 评论(0) 推荐(0)
人生的三个阶段
摘要:之前我们总结了技术的三个阶段,同样,我认为人对人生的思考也有三个阶段,由浅入深可分为三个阶段:认识困难->认识潜意识->认识本体。 第一阶段:认识困难 困难是每个人都感受过的,困难让人感觉不安全,可能是触发了缘脑的阻碍机制,人面对困难的第一反应是逃避。这个阶段,人们看一些心灵鸡汤的书或是名人名言就能 阅读全文
posted @ 2016-09-16 20:59 張暁磊 阅读(659) 评论(0) 推荐(0)
开发排期
摘要:前面我们说了完整的开发流程应该有这四步:分析->设计->编码->测试。 分析和设计这两步可以用xmind完成。 xmind最终能体现程序怎么写,体现了有哪些程序模块。我们还可以在此基础上进行估时间,估完时间后可以把任务列到trello看板上进行排期管理,在开发时可以用番茄工作法让自己集中注意力开发。 阅读全文
posted @ 2016-09-16 20:52 張暁磊 阅读(1231) 评论(0) 推荐(0)
开发流程
摘要:一个完整的开发流程应该有这四步:分析->设计->编码->测试。很多开发团队往往只有编码这边,弱化了其他步骤,他们拿到需求就开始写代码, 写着写着发现有问题,要么是遇到一个难点解决不了,要么是发现要返回修改以前写过的代码, 要么是发现有大量的重复代码,又不知道怎么封装,只能将错就错。做好了分析和设计编 阅读全文
posted @ 2016-09-16 20:51 張暁磊 阅读(274) 评论(0) 推荐(0)
服务器的优化
摘要:作为一个技术人员,不能范两种错误:一个是安全问题、一个是高并发的问题。前面我们说了安全问题,这里我们再来说说高并发的问题。 产品的新增用户越来越多,本来产品走势很好。但可能会因为不能承受高并发,影响用户正常使用功能,用户就都纷纷去用竞争对手的产品了。2015年初足记APP突然走红,但因为足记承受不了 阅读全文
posted @ 2016-09-16 20:49 張暁磊 阅读(208) 评论(0) 推荐(0)
安全性
摘要:安全性 作为一个技术人员,不能犯两种错误,一个是安全问题一个是高并发的问题, 如果一个产品出现了这两个问题失去大量用户。 这节我们重点说说安全问题,下节将会讲解高并发的问题。 安全问题的出现的原因是我们太信任用户输入的内容,对用户输入的内容没有进行严格的过滤。我们要了解一些常见的安全漏洞,如XSS、 阅读全文
posted @ 2016-09-16 20:48 張暁磊 阅读(551) 评论(0) 推荐(0)
深入理解JavaScript系列(50):Function模式(下篇)
摘要:介绍 本篇我们介绍的一些模式称为初始化模式和性能模式,主要是用在初始化以及提高性能方面,一些模式之前已经提到过,这里只是做一下总结。 立即执行的函数 在本系列第4篇的《立即调用的函数表达式》中,我们已经对类似的函数进行过详细的描述,这里我们只是再举两个简单的例子做一下总结。 // 声明完函数以后,立即执行该函数 (function () { console.log('watch ... 阅读全文
posted @ 2016-09-15 14:08 張暁磊 阅读(132) 评论(0) 推荐(0)
深入理解JavaScript系列(结局篇)
摘要:介绍 最近几个月忙得实在是不可开交,终于把《深入理解JavaScript系列》的最后两篇“补全”了,所谓的全是不准确的,因为很多内容都没有写呢,比如高性能、Ajax安全、DOM详解、JavaScript架构等等。但因为经历所限,加上大叔希望接下来写点其它东西,所以此篇文字就暂且当前完结篇的总结吧,以后有时间的话,可以继续加上一些未涉及的专题内容。 网络文章来源 本系列文章参考了大量的互联网... 阅读全文
posted @ 2016-09-15 14:08 張暁磊 阅读(131) 评论(0) 推荐(0)
深入理解JavaScript系列(49):Function模式(上篇)
摘要:介绍 本篇主要是介绍Function方面使用的一些技巧(上篇),利用Function特性可以编写出很多非常有意思的代码,本篇主要包括:回调模式、配置对象、返回函数、分布程序、柯里化(Currying)。 回调函数 在JavaScript中,当一个函数A作为另外一个函数B的其中一个参数时,则函数A称为回调函数,即A可以在函数B的周期内执行(开始、中间、结束时均可)。 举例来说,有一个函数用... 阅读全文
posted @ 2016-09-15 14:07 張暁磊 阅读(172) 评论(0) 推荐(0)
深入理解JavaScript系列(47):对象创建模式(上篇)
摘要:介绍 本篇主要是介绍创建对象方面的模式,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码。 模式1:命名空间(namespace) 命名空间可以减少全局命名所需的数量,避免命名冲突或过度。一般我们在进行对象层级定义的时候,经常是这样的: var app = app || {}; app.moduleA = app.moduleA || {}; app.moduleA.subM... 阅读全文
posted @ 2016-09-15 14:06 張暁磊 阅读(142) 评论(0) 推荐(0)
深入理解JavaScript系列(48):对象创建模式(下篇)
摘要:介绍 本篇主要是介绍创建对象方面的模式的下篇,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码。 模式6:函数语法糖 函数语法糖是为一个对象快速添加方法(函数)的扩展,这个主要是利用prototype的特性,代码比较简单,我们先来看一下实现代码: if (typeof Function.prototype.method !== "function") { Functi... 阅读全文
posted @ 2016-09-15 14:06 張暁磊 阅读(190) 评论(0) 推荐(0)
深入理解JavaScript系列(46):代码复用模式(推荐篇)
摘要:介绍 本文介绍的四种代码复用模式都是最佳实践,推荐大家在编程的过程中使用。 模式1:原型继承 原型继承是让父对象作为子对象的原型,从而达到继承的目的: function object(o) { function F() { } F.prototype = o; return new F(); } // 要继承的父对象 var parent = { ... 阅读全文
posted @ 2016-09-15 14:05 張暁磊 阅读(187) 评论(0) 推荐(0)
深入理解JavaScript系列(45):代码复用模式(避免篇)
摘要:介绍 任何编程都提出代码复用,否则话每次开发一个新程序或者写一个新功能都要全新编写的话,那就歇菜了,但是代码复用也是有好要坏,接下来的两篇文章我们将针对代码复用来进行讨论,第一篇文避免篇,指的是要尽量避免使用这些模式,因为或多或少有带来一些问题;第二排是推荐篇,指的是推荐大家使用的模式,一般不会有什么问题。 模式1:默认模式 代码复用大家常用的默认模式,往往是有问题的,该模式使用Paren... 阅读全文
posted @ 2016-09-15 14:04 張暁磊 阅读(195) 评论(0) 推荐(0)
深入理解JavaScript系列(44):设计模式之桥接模式
摘要:介绍 桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化。 正文 桥接模式最常用在事件监控上,先看一段代码: addEvent(element, 'click', getBeerById); function getBeerById(e) { var id = this.id; asyncRequest('GET', 'beer.uri?id=' + id, f... 阅读全文
posted @ 2016-09-15 14:03 張暁磊 阅读(200) 评论(0) 推荐(0)
深入理解JavaScript系列(42):设计模式之原型模式
摘要:介绍 原型模式(prototype)是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象。 正文 对于原型模式,我们可以利用JavaScript特有的原型继承特性去创建对象的方式,也就是创建的一个对象作为另外一个对象的prototype属性值。原型对象本身就是有效地利用了每个构造器创建的对象,例如,如果一个构造函数的原型包含了一个name属性(见后面的例子),那通过这个构造函... 阅读全文
posted @ 2016-09-15 14:02 張暁磊 阅读(189) 评论(0) 推荐(0)
深入理解JavaScript系列(43):设计模式之状态模式
摘要:介绍 状态模式(State)允许一个对象在其内部状态改变的时候改变它的行为,对象看起来似乎修改了它的类。 正文 举个例子,就比如我们平时在下载东西,通常就会有好几个状态,比如准备状态(ReadyState)、下载状态(DownloadingState)、暂停状态(DownloadPausedState)、下载完毕状态(DownloadedState)、失败状态(DownloadFailed... 阅读全文
posted @ 2016-09-15 14:02 張暁磊 阅读(142) 评论(0) 推荐(0)
深入理解JavaScript系列(41):设计模式之模板方法
摘要:介绍 模板方法(TemplateMethod)定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法是一种代码复用的基本技术,在类库中尤为重要,因为他们提取了类库中的公共行为。模板方法导致一种反向的控制结构,这种结构就是传说中的“好莱坞法则”,即“别找找我们,我们找你”,这指的是父类调用一个类的操作,而不是相... 阅读全文
posted @ 2016-09-15 14:01 張暁磊 阅读(189) 评论(0) 推荐(0)
深入理解JavaScript系列(39):设计模式之适配器模式
摘要:介绍 适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作。速成包装器(wrapper)。 正文 我们来举一个例子,鸭子(Dock)有飞(fly)和嘎嘎叫(quack)的行为,而火鸡虽然也有飞(fly)的行为,但是其叫声是咯咯的(gobble)。如果你非要火鸡... 阅读全文
posted @ 2016-09-15 14:00 張暁磊 阅读(162) 评论(0) 推荐(0)
深入理解JavaScript系列(40):设计模式之组合模式
摘要:介绍 组合模式(Composite)将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 常见的场景有asp.net里的控件机制(即control里可以包含子control,可以递归操作、添加、删除子control),类似的还有DOM的机制,一个DOM节点可以包含子节点,不管是父节点还是子节点都有添加、删除、遍历子节点的通用功能。所以说组... 阅读全文
posted @ 2016-09-15 14:00 張暁磊 阅读(146) 评论(0) 推荐(0)
深入理解JavaScript系列(38):设计模式之职责链模式
摘要:介绍 职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。 也就是说,请求以后,从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给链中的下一个候选者。提交请求的对象并不明确知道哪一个对象将会处理它——也就是该请求有一个隐式的接受... 阅读全文
posted @ 2016-09-15 13:59 張暁磊 阅读(133) 评论(0) 推荐(0)
深入理解JavaScript系列(36):设计模式之中介者模式
摘要:介绍 中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 主要内容来自:http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/#mediatorpatternjavascript 正文 软件开发中,中介... 阅读全文
posted @ 2016-09-15 13:58 張暁磊 阅读(162) 评论(0) 推荐(0)
深入理解JavaScript系列(37):设计模式之享元模式
摘要:介绍 享元模式(Flyweight),运行共享技术有效地支持大量细粒度的对象,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。 享元模式可以避免大量非常相似类的开销,在程序设计中,有时需要生产大量细粒度的类实例来表示数据,如果能发现这些实例除了几个参数以外,开销基本相同的 话,就可以大幅度较少需要实例化的类的数量。如果能把那些参数移动到类实例的外面,在方法调用的时候... 阅读全文
posted @ 2016-09-15 13:58 張暁磊 阅读(170) 评论(0) 推荐(0)
深入理解JavaScript系列(35):设计模式之迭代器模式
摘要:介绍 迭代器模式(Iterator):提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。 迭代器的几个特点是: 1.访问一个聚合对象的内容而无需暴露它的内部表示。 2.为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。 3.遍历的同时更改迭代器所在的集合结构可能会导致问题(比如C#的foreach里不允许修改item)。 正文 一般的迭... 阅读全文
posted @ 2016-09-15 13:57 張暁磊 阅读(144) 评论(0) 推荐(0)
深入理解JavaScript系列(33):设计模式之策略模式
摘要:介绍 策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。 正文 在理解策略模式之前,我们先来一个例子,一般情况下,如果我们要做数据合法性验证,很多时候都是按照swith语句来判断,但是这就带来几个问题,首先如果增加需求的话,我们还要再次修改这段代码以增加逻辑,而且在进行单元测试的时候也会越来越复杂,代码如下: val... 阅读全文
posted @ 2016-09-15 13:56 張暁磊 阅读(153) 评论(0) 推荐(0)
深入理解JavaScript系列(34):设计模式之命令模式
摘要:介绍 命令模式(Command)的定义是:用于将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及执行可撤销的操作。也就是说改模式旨在将函数的调用、请求和操作封装成一个单一的对象,然后对这个对象进行一系列的处理。此外,可以通过调用实现具体函数的对象来解耦命令对象与接收对象。 正文 我们来通过车辆购买程序来展示这个模式,首先定义车辆购买的具体操作... 阅读全文
posted @ 2016-09-15 13:56 張暁磊 阅读(160) 评论(0) 推荐(0)
深入理解JavaScript系列(32):设计模式之观察者模式
摘要:介绍 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。 使用观察者模式的好处: 支持简单的广播通信,自动通知所有已经订阅过的对象。 页面载入后目标对象很容易与观察者存在一种动态关联,增加了灵活性。 目标对象与观察者之间的抽象耦合关... 阅读全文
posted @ 2016-09-15 13:55 張暁磊 阅读(143) 评论(0) 推荐(0)
深入理解JavaScript系列(30):设计模式之外观模式
摘要:介绍 外观模式(Facade)为子系统中的一组接口提供了一个一致的界面,此模块定义了一个高层接口,这个接口值得这一子系统更加容易使用。 正文 外观模式不仅简化类中的接口,而且对接口与调用者也进行了解耦。外观模式经常被认为开发者必备,它可以将一些复杂操作封装起来,并创建一个简单的接口用于调用。 外观模式经常被用于JavaScript类库里,通过它封装一些接口用于兼容多浏览器,外观模式可以让... 阅读全文
posted @ 2016-09-15 13:54 張暁磊 阅读(120) 评论(0) 推荐(0)
深入理解JavaScript系列(31):设计模式之代理模式
摘要:介绍 代理,顾名思义就是帮助别人做事,GoF对代理模式的定义如下: 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 代理模式使得代理对象控制具体对象的引用。代理几乎可以是任何对象:文件,资源,内存中的对象,或者是一些难以复制的东西。 正文 我们来举一个简单的例子,假如dudu要送酸奶小妹玫瑰花,却不知道她的联系方式或者不好意思,想委托大叔去送这些玫瑰,那大叔就是... 阅读全文
posted @ 2016-09-15 13:54 張暁磊 阅读(141) 评论(0) 推荐(0)
深入理解JavaScript系列(29):设计模式之装饰者模式
摘要:介绍 装饰者提供比继承更有弹性的替代方案。 装饰者用用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置成原始对象调用(例如装饰者的构造函数)。 装饰者用于通过重载方法的形式添加新功能,该模式可以在被装饰者前面或者后面加上自己的行为以达到特定的目的。 正文 那么装饰者模式有什么好处呢?前面说了,装饰者是一种实现继承的替代方案。当脚本运行时,在子类中增加行为会影响原有类所有... 阅读全文
posted @ 2016-09-15 13:53 張暁磊 阅读(131) 评论(0) 推荐(0)
深入理解JavaScript系列(28):设计模式之工厂模式
摘要:介绍 与创建型模式类似,工厂模式创建对象(视为工厂里的产品)时无需指定创建对象的具体类。 工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型。 这个模式十分有用,尤其是创建对象的流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类类定义需要创建的... 阅读全文
posted @ 2016-09-15 13:52 張暁磊 阅读(140) 评论(0) 推荐(0)
深入理解JavaScript系列(26):设计模式之构造函数模式
摘要:介绍 构造函数大家都很熟悉了,不过如果你是新手,还是有必要来了解一下什么叫构造函数的。构造函数用于创建特定类型的对象——不仅声明了使用的对象,构造函数还可以接受参数以便第一次创建对象的时候设置对象的成员值。你可以自定义自己的构造函数,然后在里面声明自定义类型对象的属性或方法。 基本用法 在JavaScript里,构造函数通常是认为用来实现实例的,JavaScript没有类的概念,但是有特殊... 阅读全文
posted @ 2016-09-15 13:51 張暁磊 阅读(146) 评论(0) 推荐(0)
深入理解JavaScript系列(27):设计模式之建造者模式
摘要:介绍 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。 建造者模式可以将一个复杂对象的构建... 阅读全文
posted @ 2016-09-15 13:51 張暁磊 阅读(146) 评论(0) 推荐(0)
深入理解JavaScript系列(25):设计模式之单例模式
摘要:介绍 从本章开始,我们会逐步介绍在JavaScript里使用的各种设计模式实现,在这里我不会过多地介绍模式本身的理论,而只会关注实现。OK,正式开始。 在传统开发工程师眼里,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供... 阅读全文
posted @ 2016-09-15 13:50 張暁磊 阅读(174) 评论(0) 推荐(0)
深入理解JavaScript系列(23):JavaScript与DOM(上)——也适用于新手
摘要:文档对象模型Document Object Model DOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API。Javascript和DOM一般经常作为一个整体,因为Javascript通常都是用来进行DOM操作和交互的。 主要内容来自:http://net.tutsplus.com/tutorials/javascript... 阅读全文
posted @ 2016-09-15 13:49 張暁磊 阅读(176) 评论(0) 推荐(0)
深入理解JavaScript系列(24):JavaScript与DOM(下)
摘要:介绍 上一章我们介绍了JavaScript的基本内容和DOM对象的各个方面,包括如何访问node节点。本章我们将讲解如何通过DOM操作元素并且讨论浏览器事件模型。 本文参考:http://net.tutsplus.com/tutorials/javascript-ajax/javascript-and-the-dom-lesson-2/ 操作元素 上一章节我们提到了DOM节点集合或单个节... 阅读全文
posted @ 2016-09-15 13:49 張暁磊 阅读(222) 评论(0) 推荐(0)
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP
摘要:前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第5篇,依赖倒置原则LSP(The Dependency Inversion Principle )。 英文原文:http://freshbrewedcode.com/derekgreer/2012/01/22/solid-javascript-the-dependency-inversion-principle... 阅读全文
posted @ 2016-09-15 13:48 張暁磊 阅读(419) 评论(0) 推荐(1)
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP
摘要:前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第4篇,接口隔离原则ISP(The Interface Segregation Principle)。 英文原文:http://freshbrewedcode.com/derekgreer/2012/01/08/solid-javascript-the-interface-segregation-principl... 阅读全文
posted @ 2016-09-15 13:47 張暁磊 阅读(145) 评论(0) 推荐(0)
深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解
摘要:介绍 昨天发的《大叔手记(19):你真懂JavaScript吗?》里面的5个题目,有很多回答,发现强人还是很多的,很多人都全部答对了。 今天我们来对这5个题目详细分析一下,希望对大家有所帮助。 注: 问题来自大名鼎鼎的前端架构师Baranovskiy的帖子《So, you think you know JavaScript?》。 答案也是来自大名鼎鼎的JS牛人Nicholas C. Za... 阅读全文
posted @ 2016-09-15 13:46 張暁磊 阅读(184) 评论(0) 推荐(0)
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现(推荐)
摘要:介绍 本章是关于ECMAScript面向对象实现的第2篇,第1篇我们讨论的是概论和CEMAScript的比较,如果你还没有读第1篇,在进行本章之前,我强烈建议你先读一下第1篇,因为本篇实在太长了(35页)。 英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-7-2-oop-ecmascript-implementation/ 注:由于篇幅... 阅读全文
posted @ 2016-09-15 13:45 張暁磊 阅读(251) 评论(0) 推荐(0)
深入理解JavaScript系列(19):求值策略(Evaluation strategy)
摘要:介绍 本章,我们将讲解在ECMAScript向函数function传递参数的策略。 计算机科学里对这种策略一般称为“evaluation strategy”(大叔注:有的人说翻译成求值策略,有的人翻译成赋值策略,通看下面的内容,我觉得称为赋值策略更为恰当,anyway,标题还是写成大家容易理解的求值策略吧),例如在编程语言为求值或者计算表达式设置规则。向函数传递参数的策略是一个特殊的case... 阅读全文
posted @ 2016-09-15 13:45 張暁磊 阅读(318) 评论(0) 推荐(0)
深入理解JavaScript系列(17):面向对象编程之概论
摘要:介绍 在本篇文章,我们考虑在ECMAScript中的面向对象编程的各个方面(虽然以前在许多文章中已经讨论过这个话题)。我们将更多地从理论方面看这些问题。 特别是,我们会考虑对象的创建算法,对象(包括基本关系 - 继承)之间的关系是如何,也可以在讨论中使用(我希望将消除之前对于JavaScript中OOP的一些概念歧义)。 英文原文:http://dmitrysoshnikov.com/ecm... 阅读全文
posted @ 2016-09-15 13:42 張暁磊 阅读(171) 评论(0) 推荐(0)
深入理解JavaScript系列(16):闭包(Closures)
摘要:介绍 本章我们将介绍在JavaScript里大家经常来讨论的话题 —— 闭包(closure)。闭包其实大家都已经谈烂了。尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭包内部究竟是如何工作的。 正如在前面的文章中提到的,这些文章都是系列文章,相互之间都是有关联的。因此,为了更好的理解本文要介绍的内容,建议先去阅读第14章作用域链和第12章变量对象。 英文原文... 阅读全文
posted @ 2016-09-15 13:41 張暁磊 阅读(197) 评论(0) 推荐(0)
深入理解JavaScript系列(15):函数(Functions)
摘要:介绍 本章节我们要着重介绍的是一个非常常见的ECMAScript对象——函数(function),我们将详细讲解一下各种类型的函数是如何影响上下文的变量对象以及每个函数的作用域链都包含什么,以及回答诸如像下面这样的问题:下面声明的函数有什么区别么?(如果有,区别是什么)。 原文:http://dmitrysoshnikov.com/ecmascript/chapter-5-functions... 阅读全文
posted @ 2016-09-15 13:40 張暁磊 阅读(194) 评论(0) 推荐(0)
深入理解JavaScript系列(14):作用域链(Scope Chain)
摘要:前言 在第12章关于变量对象的描述中,我们已经知道一个执行上下文 的数据(变量、函数声明和函数的形参)作为属性存储在变量对象中。 同时我们也知道变量对象在每次进入上下文时创建,并填入初始值,值的更新出现在代码执行阶段。 这一章专门讨论与执行上下文直接相关的更多细节,这次我们将提及一个议题——作用域链。 英文原文:http://dmitrysoshnikov.com/ecmascript/... 阅读全文
posted @ 2016-09-15 13:39 張暁磊 阅读(219) 评论(0) 推荐(0)
深入理解JavaScript系列(13):This? Yes,this!
摘要:介绍 在这篇文章里,我们将讨论跟执行上下文直接相关的更多细节。讨论的主题就是this关键字。实践证明,这个主题很难,在不同执行上下文中this的确定经常会发生问题。 许多程序员习惯的认为,在程序语言中,this关键字与面向对象程序开发紧密相关,其完全指向由构造器新创建的对象。在ECMAScript规范中也是这样实现的,但正如我们将看到那样,在ECMAScript中,this并不限于只用来指向... 阅读全文
posted @ 2016-09-15 13:38 張暁磊 阅读(207) 评论(0) 推荐(0)
深入理解JavaScript系列(11):执行上下文(Execution Contexts)
摘要:简介 从本章开始,我将陆续(翻译、转载、整理)http://dmitrysoshnikov.com/网站关于ECMAScript标标准理解的好文。 本章我们要讲解的是ECMAScript标准里的执行上下文和相关可执行代码的各种类型。 原始作者:Dmitry A. Soshnikov 原始发布: 2009-06-26 俄文原文:http://dmitrysoshnikov.com/ecmas... 阅读全文
posted @ 2016-09-15 13:37 張暁磊 阅读(141) 评论(0) 推荐(0)
深入理解JavaScript系列(12):变量对象(Variable Object)
摘要:介绍 JavaScript编程的时候总避免不了声明函数和变量,以成功构建我们的系统,但是解释器是如何并且在什么地方去查找这些函数和变量呢?我们引用这些对象的时候究竟发生了什么? 原始发布:Dmitry A. Soshnikov 发布时间:2009-06-27 俄文地址:http://dmitrysoshnikov.com/ecmascript/ru-chapter-2-variable-ob... 阅读全文
posted @ 2016-09-15 13:37 張暁磊 阅读(159) 评论(0) 推荐(0)
深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇)
摘要:本篇是ECMA-262-3 in detail系列的一个概述(本人后续会翻译整理这些文章到本系列(第11-19章)。每个章节都有一个更详细的内容链接,你可以继续读一下每个章节对应的详细内容链接进行更深入的了解。 适合的读者:有经验的开发员,专业前端人员。 原作者: Dmitry A. Soshnikov 发布时间: 2010-09-02 原文:http://dmitrysoshnikov.c... 阅读全文
posted @ 2016-09-15 13:36 張暁磊 阅读(154) 评论(0) 推荐(0)
深入理解JavaScript系列(9):根本没有“JSON对象”这回事!
摘要:前言 写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢。 正文 本文的主题是基于ECMAScript262-3来写的,2011年的262-5新规范增加了JSON对象,和我们平时所说的JSON有关系,但是不是同一个东西,文章最后一节会讲到新增加的JSO... 阅读全文
posted @ 2016-09-15 13:35 張暁磊 阅读(153) 评论(0) 推荐(0)
深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP
摘要:前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第3篇,里氏替换原则LSP(The Liskov Substitution Principle )。 英文原文:http://freshbrewedcode.com/derekgreer/2011/12/31/solid-javascript-the-liskov-substitution-principle/ ... 阅读全文
posted @ 2016-09-15 13:34 張暁磊 阅读(245) 评论(0) 推荐(0)
深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP
摘要:前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle )。 开闭原则的描述是: Software entities (classes, modules, functions, etc.) should be open for extension but closed for modific... 阅读全文
posted @ 2016-09-15 13:33 張暁磊 阅读(196) 评论(0) 推荐(0)
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
摘要:前言 Bob大叔提出并发扬了S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是: The Single Responsibility Principle(单一职责SRP) The Open/Closed Principle(开闭原则OCP) The Liskov Substitution Principle(里氏替换原则LSP) The Interface Segregat... 阅读全文
posted @ 2016-09-15 13:32 張暁磊 阅读(178) 评论(0) 推荐(0)
深入理解JavaScript系列(5):强大的原型和原型链
摘要:前言 JavaScript 不包含传统的类继承模型,而是使用 prototypal 原型模型。 虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。实现传统的类继承模型是很简单,但是实现 JavaScript 中的原型继承则要困难的多。 由于 JavaScript 是唯一一个被广泛使用的基于原型继承的语言,所以理解两种继承模式的差异是需要... 阅读全文
posted @ 2016-09-15 13:31 張暁磊 阅读(142) 评论(0) 推荐(0)
深入理解JavaScript系列(4):立即调用的函数表达式
摘要:前言 大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行。 在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以按照你自己的理解来取一个名字,不过我听很多人都叫它为“自执行”,但作者后面说了很多,来说服大家称呼为“立即调用的函数表... 阅读全文
posted @ 2016-09-15 13:29 張暁磊 阅读(191) 评论(0) 推荐(0)
深入理解JavaScript系列(3):全面解析Module模式
摘要:简介 Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式。 首先我们来看看Module模式的基本特征: 模块化,可重用 封装了变量和function,和全局的namaspace不接触,松耦合 只暴露可用public的方法,其它私有方法全部隐藏 关于Module模式,最早是由YUI的成员Eric Mira... 阅读全文
posted @ 2016-09-15 13:28 張暁磊 阅读(1018) 评论(0) 推荐(0)
深入理解JavaScript系列(2):揭秘命名函数表达式
摘要:前言 网上还没用发现有人对命名函数表达式进去重复深入的讨论,正因为如此,网上出现了各种各样的误解,本文将从原理和实践两个方面来探讨JavaScript关于命名函数表达式的优缺点。 简单的说,命名函数表达式只有一个用户,那就是在Debug或者Profiler分析的时候来描述函数的名称,也可以使用函数名实现递归,但很快你就会发现其实是不切实际的。当然,如果你不关注调试,那就没什么可担心的了,... 阅读全文
posted @ 2016-09-15 13:26 張暁磊 阅读(189) 评论(0) 推荐(0)
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点
摘要:才华横溢的Stoyan Stefanov,在他写的由O’Reilly初版的新书《JavaScript Patterns》(JavaScript模式)中,我想要是为我们的读者贡献其摘要,那会是件很美妙的事情。具体一点就是编写高质量JavaScript的一些要素,例如避免全局变量,使用单变量声明,在循环中预缓存length(长度),遵循代码阅读,以及更多。 此摘要也包括一些与代码不太相关... 阅读全文
posted @ 2016-09-15 13:24 張暁磊 阅读(220) 评论(0) 推荐(0)
深入理解JavaScript系列
摘要:http://www.sxrczx.com/docs/js/2305513.htmlhttp://www.sxrczx.com/ 阅读全文
posted @ 2016-09-14 15:22 張暁磊 阅读(94) 评论(0) 推荐(0)
大白话讲解Promise(一)
摘要:去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性之一,我们有必要掌握并理解透彻。本文将由浅到深,讲解Promise的基本概念与使用方法。 ES6 Promise 先拉出来遛遛 复杂的概念先不讲,我们先简单粗暴地把Prom 阅读全文
posted @ 2016-09-14 15:14 張暁磊 阅读(167) 评论(0) 推荐(0)
《你不知道的JavaScript》整理(二)——this
摘要:最近在读一本进阶的JavaScript的书《你不知道的JavaScript(上卷)》,这次研究了一下“this”。 当一个函数被调用时,会创建一个活动记录(执行上下文)。 这个记录会包含函数在哪里被调用(调用栈)、函数的调用方法、传入的参数等信息。 this就是记录的其中一个属性,会在函数执行的过程 阅读全文
posted @ 2016-09-07 09:34 張暁磊 阅读(158) 评论(0) 推荐(0)
如何在 ASP.NET MVC 中集成 AngularJS(2)
摘要:在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩、应用程序版本自动刷新和工程构建等内容。 下面介绍如何在 ASP.NET MVC 中集成 AngularJS 的第二部分。 ASP.NET 捆绑和压缩 CSS 和 JavaScript 阅读全文
posted @ 2016-09-07 09:31 張暁磊 阅读(428) 评论(0) 推荐(0)
Ajax语法浅析
摘要:Ajax是目前很普遍的一门技术,也是很值得探讨和研究的一门技术。本文将针对Ajax的发展过程并结合其在不同库框架中的使用方式来和大家分享下Ajax的那些新老语法。 Ajax简介 Ajax全称为“Asynchronous Javascript And XML”, 即“异步JavaScript和XML” 阅读全文
posted @ 2016-09-07 09:25 張暁磊 阅读(200) 评论(0) 推荐(0)
电商总结(六)系统容量预估
摘要:前几天聊过,pv 和并发 的概念,也大概解释了 并发,带宽等指标的计算。感兴趣的朋友,可以看看我前面那篇文章:《聊一聊PV和并发》。今天再来聊一聊容量预估。 电商公司的朋友,,这样的场景是否似曾相识: 运营和产品神秘兮兮的跑过来问: 我们晚上要做搞个促销,服务器能抗住么?如果扛不住,需要加多少台机器 阅读全文
posted @ 2016-09-07 09:19 張暁磊 阅读(270) 评论(0) 推荐(0)
先定个小目标, 使用C# 开发的千万级应用
摘要:dotNET跨平台 微信号 opendotnet 功能介绍 在这里你可以谈微软.NET,Mono的跨平台开发技术,也可以谈谈其他的跨平台技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台 dotNET跨平台 微信号 opendotnet 功能 阅读全文
posted @ 2016-09-06 09:40 張暁磊 阅读(2796) 评论(1) 推荐(1)
ASP.NET WebForm 之 Ajax 请求后端处理
摘要:概述 ASP.NET MVC中的异步用途非常广泛,操作起来也非常简单。前台请求异步请求 Controller下的Action 方法,后端返回ActionResult 即可。但是在ASP.NET WebForm中使用异步就比较麻烦,下面介绍两种处理WebForm异步请求的形式。若前端Ajax异步请求不 阅读全文
posted @ 2016-09-02 15:31 張暁磊 阅读(2306) 评论(0) 推荐(1)
asp.net webForm也可以这样用Ajax -- My Ajax Framework [全屏看文]
摘要:对于asp.net WebForm项目,进行Ajax操作大概有三种方式:web服务(.asmx文件) , 一般处理程序(.ashx)和 一些Ajax控件。 对于.net提供的ajax控件,暂且不说,只说另外两种方式,都需要引入额外的代码文件对Ajax进行操作(asmx和ashx,且web服务还要引入 阅读全文
posted @ 2016-09-02 15:04 張暁磊 阅读(248) 评论(0) 推荐(0)