- 博客(23)
- 收藏
- 关注
原创 设计模式之装饰模式(Decorator)
装饰模式(Decorator)的核心思想是指能动态的给一个对象新增功能,而且还能动态撤销。要实现装饰模式,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。这样在装饰对象调用被装饰对象的方法前后就可以动态添加处理逻辑,从而达到装饰的效果。该模式容易产生过多的相似对象,不易排错。
2015-03-27 15:37:09 432
原创 设计模式之适配器模式(Adapter)
类适配器是指该适配器继承至某个源类,因此它只为这个类提供适配服务;因为适配器继承了源类,所以它就拥有了源类的能力,同时我们可以给该适配 器类添加新的方法,去完成目标对象的任务而该任务源类对象是无法完成,这样我们就实现了从源类到目标类的适配工作。也可以这样理解,假设目标接口类需要拥有源类的能力,同时还需要新增一些能力,这时我们就可以新建一个适配器类继承源类,同时实现目标接口类,则
2015-03-27 15:16:21 443
原创 设计模式之原型模式
原型模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象;复制过程可分为浅复制和深复制。 浅复制是指直接调用父类(即Object类)的clone方法(super.clone()),该方法是本地(native)方法,调用该方法clone出来的新对象,基本数据类型的属性变量是新创建的,在不同的堆内存中,但是新对象的引用类型属性变量则和原对象保持一致,指向相
2015-03-27 14:39:17 399
原创 设计模式学习之构建者模式(Builder)
构建者模式主要包含产品角色、抽象构建者角色、具体构建者角色以及指导者角色四类;产品角色类需要指定构建该产品需要的各个部件属性或方法;抽象构建者角色类根据构建产品需要的各个部件规定具体构建者必须实现的构建方法以及提供获取该产品的方法;具体构建者角色类需要维护一个具体产品类的实例对象,并实现该产品各个部件的构建过程,最后还需要提供一个可以获取该产品的方法;指导者角色类需要维护一个构建者角色的实例,并提
2015-03-27 11:35:47 613
原创 设计模式之单例模式(Singleton)
单例模式需要注意的几点: 1、构造方法必须是private私有方法; 2、getInstantce()方法如果不加synchronized,则无法保证线程安全;但加了则会影响性能; 3、做双重判空处理,只有当未被实例化的时候,才将实例化的过程用synchronized同步块,对该对象加锁,然后判空是否需要实例化;但由于在java指令中,创建对象和赋值是分开执行的,jvm并不能保证两个的先后顺
2015-03-26 16:49:42 430
原创 设计模式之抽象工厂方法模式
抽象工厂方法模式的核心思想就是工厂类也抽象化,所有工厂类都实现共同的接口,每个工厂类只负责一种产品的新建,需要哪种产品,就用专门的工厂获取。 实现步骤: 1、产品类的接口类; 2、各个产品类; 3、工厂类的接口类; 4、各个工厂类; 5、客户端调用;
2015-03-26 15:53:20 430
原创 设计模式之工厂方法模式
工厂方法(Factory Method)模式分为三种: 1、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。 实现步骤: 1.1 新建一个接口类(所有需要工厂类管理实例创建的类都必须要实现该接口); 1.2 新建所有的实例类(必须实现1.1的接口); 1.3 新建工厂类(调用同一个工厂方法,根据入参的不同,实例化不同的具体类给用户); //ps:可用if e
2015-03-26 15:24:56 369
原创 设计模式学习之简介
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每
2015-03-26 14:42:40 412
原创 javascript学习之内置顶层函数
名词解释: 1.函数 2.内置: ECMAscript 内置函数:ECMAscript 自带的函数 Number() 宿主函数: BOM DOM alert() prompt() confirm(); //confirm() 弹出一个带有确定和取消按钮的一个对话框,确定返回真,取消返回假。 3.
2015-03-24 22:32:37 1815
原创 javascript学习之解析顺序和变量作用域
作用域:指的就是一段代码的作用范围。 一、变量的作用域 1.全局变量 在代码中任何地方都能够访问得到的变量,拥有全局的作用域。 A.最外层函数外面定义的变量。 B.没有定义直接赋值的变量,拥有全局属性。 2.局部变量 只能在固定的代码片段(函数片段中)中访问得到。 A.函数内部定义的变量
2015-03-24 22:31:42 547
原创 javascript学习之函数的参数和return语句
一、参数(最多是25) 可以动态的改变函数体内对应的变量的类型或值,使同一函数体得到不同的结果。 形参:在定义函数的时候,函数括号中定义的变量叫做形参。 实参:调用函数的时候,在括号中传入的变量或值叫做实参。 1.参数的类型 可以是任何的数据类型 2.参数的个数(最多是25) A.实参和形参数量
2015-03-24 22:29:55 575
原创 javascript学习之流程控制
流程:就是程序代码的执行顺序。 流程控制:通过 规定的语句 让程序代码 有条件的 按照一定的方式 执行。 一、顺序结构 按照书写顺序来执行,是程序中最基本的流程结构。 二、选择结构(分支结构、条件结构) 根据给定的条件有选择的执行形相应的语句。 (1) if else if else 1.单路分支
2015-03-24 22:27:32 531
原创 javascript学习之数据类型隐式转换
一、函数类 isNaN() 该函数会对参数进行隐式的Number()转换,如果转换不成功则返回true; alert() 输出的内容隐式的转换为字符串 二、运算符类 1.算数运算符 - * / % 如果操作数不是数值,将会隐式的调用Number()函数,按照这个函数的转换规则进行转换, 如果转换不成
2015-03-24 22:25:42 456
原创 javascript学习之数据类型强制转换
一、转换为数值类型 Number(参数) 把任何的类型转换为数值类型 A.如果是布尔值,false为0,true为1 B.如果是数字,转换成为本身。将无意义的后导0去掉。 C.如果Null转换为0 D.如果是undefined 转换为NaN not a number E.如果对象则会先调用对象的 valueOf(),如果valueOf(
2015-03-24 22:22:13 473
原创 javascript学习之javascript运算符
一、运算符和操作数的组合就称为表达式。 二、javascript运算符 (一) 算术运算符 + - * / % var++ ++var var-- --var A. + (1) 用于数值的运算 (2) 用于字符串的连接 ********
2015-03-24 22:20:59 401
原创 javascript学习之变量和数据类型
一、typeof 操作符 他是用来检测数据类型的一元运算符,并且返回的结果始终是一个字符串。 二、数据类型 1.初始类型 Undefined: 指的就是变量创建后但是没有赋值,而变量的默认值就是undefined Null: 指的是什么都没有,仅仅是一个占位符。 Number:包括整型和浮点型。支持二进制、八进制、十进
2015-03-24 22:18:22 372
原创 nginx学习之反向代理服务器+负载均衡
用nginx做反向代理和负载均衡非常简单, 支持两个用法 1个proxy, 1个upstream,分别用来做反向代理,和负载均衡 以反向代理为例, nginx不自己处理php的相关请求,而是把php的相关请求转发给apache来处理. ----这不就是传说的”动静分离”,动静分离不是一个严谨的说法,叫反向代理比较规范. 反向代理后端如果有多台服务器,自然可形成负载均衡, 但p
2015-03-24 12:32:26 391
原创 nginx学习之nginx的缓存设置 &提高网站性能
对于网站的图片,尤其是新闻站, 图片一旦发布, 改动的可能是非常小的.我们希望 能否在用户访问一次后, 图片缓存在用户的浏览器端,且时间比较长的缓存. 可以, 用到 nginx的expires设置 . nginx中设置过期时间,非常简单, 在location或if段里,来写. 格式 expires 30s; expires 30m; expires 2h;
2015-03-24 11:48:08 523
原创 nginx学习之网页内容的压缩编码与传输速度优化
我们观察news.163.com的头信息 请求: Accept-Encoding:gzip,deflate,sdch 响应: Content-Encoding:gzip Content-Length:36093 再把页面另存下来,观察,约10W字节,实际传输的36093字节 原因-------就在于gzip压缩上. 原理: 浏览器---请求----> 声明可以接受 gzi
2015-03-24 11:47:32 967
原创 nginx学习之nginx+php的编译
nginx+php的编译 apache一般是把php当做自己的一个模块来启动的. 而nginx则是把http请求变量(如get,user_agent等)转发给 php进程,即php独立进程,与nginx进行通信. 称为 fastcgi运行方式. 因此,为apache所编译的php,是不能用于nginx的. 注意: 我们编译的PHP 要有如下功能: 连接mysql, gd,ttf,
2015-03-24 11:45:34 457
原创 nginx学习之rewrite(重写)
rewrite 重写 重写中用到的指令 if (条件) {} 设定条件,再进行重写 set #设置变量 return #返回状态码 break #跳出rewrite rewrite #重写 If 语法格式 If 空格 (条件) { 重写模式 } 条件又怎么写? 答:3种写法 1: “=”来判断相等, 用于字符串比较 2: “~” 用正
2015-03-24 11:42:03 838
原创 nginx学习之安装&配置&入门
nginx 的安装 下载地址: http://nginx.org/download/nginx-1.4.2.tar.gz 安装准备: nginx依赖于pcre库,要先安装pcre yum install pcre pcre-devel cd /usr/local/src/ wget http://nginx.org/download/nginx-1.4.2.tar.gz ta
2015-03-24 11:33:22 480
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人