排序:
默认
按更新时间
按访问量

设计模式-外观模式

外观模式的UML类图 外观模式的应用场景 在以下情况下可以考虑使用外观模式: (1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。 (2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。 (3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以...

2018-11-13 20:03:13

阅读数:7

评论数:0

设计模式-模版模式

模板模式UML 多数情况下,可以将部分逻辑进行抽象,在抽象类中定义好如何使用这些抽象方法,然后抽象方法的具体实现交给其他人实现,或者在以后实现,客户端只需要依赖抽象类,而不需要依耐具体的实现,这就可以使得在业务运行的过程中,我们可以根据业务的变换来实现不同的子类。而且这里仅需要的一步就是继承...

2018-11-12 19:20:16

阅读数:3

评论数:0

设计模式-原型模式

原型模式的UML类图

2018-11-12 01:07:18

阅读数:5

评论数:0

设计模式-工厂方法模式

工厂方法模式UML类图 了解过简单工厂的读者会发现,工厂模式只是在简单工厂模式中将生成工厂的方法进一步抽象。 如上图UML类图的例子,对于Light有BulLight和TubeLight,对应是生产工厂有BulCreator和TubeCreator。 ...

2018-11-07 21:20:13

阅读数:11

评论数:0

设计模式-代理模式

代理模式的UML 代理模式一般用在该对象不方便直接被其他对象访问,如安全控制,我们希望我们的对象中的某项方法不应该被其他对象直接访问,但是又要保留某些方法可以被访问,这个时候就应该使用代理模式。 代理模式的实现 1、将可以被代理的逻辑进行抽象 interface Subject { ...

2018-11-04 00:24:09

阅读数:27

评论数:0

设计模式-装饰模式

装饰模式的UML类图 你会发现,在装饰模式中,除了对抽象接口的实现,更重要的还有对抽象接口的聚合。 装饰模式一般适应于为系统已有的功能动态的添加更多的功能。 使用装饰模式的一个例子 装饰模式就像穿衣服,如穿衣服需要先穿内裤,再穿上衣或者裤子,或者再加个外套, 比如哪天你不想穿外套,或者...

2018-10-31 12:18:37

阅读数:7

评论数:0

设计模式-策略模式

使用简单工厂实现一个商城消费的程序 考虑到商城消费策略经常改动,所以这里通过简单工厂来生成不同的消费策略。如打0.8折的消费策略,又如满300返100的消费策略。 代码结构: 1、抽象出商城消费策略 package simpleFactoryPattern; //抽象出收取现金的策略...

2018-10-30 12:29:25

阅读数:14

评论数:0

设计模式-简单工厂

未使用设计模式的计算机程序 package SimpleFactoryPattern_1; import java.util.Scanner; /** * 没有使用设计模式的计算器程序 * @author Lenovo * */ public class Main { public s...

2018-10-24 21:08:51

阅读数:13

评论数:0

Bit Vector算法

摘要: 该算法常用到包分类中,初次接触到bit vector算法是在对海量数据的处理。 设想我们有个很大的数据集,它的总体个数为400亿个数字,需要消除重复的数据,一种想当然的做法是,每次读取一部分,进行消重,如每次读取1000万个数据进行消重,这样我们就可以将40亿个数字分成400部分,将消...

2018-09-22 13:44:38

阅读数:65

评论数:0

CAP理论和BASE理论

CAP理论 在设计和部署分布式系统时,存在三个明显的需求: C(Consistency)一致性。即分布式数据应该同步,保存一致。 A(Availability)可用性。指系统能够很好的为用户提供服务,主要体现在用户访问之后能很 快的得到响应。 P(Oartition Tolerance)分...

2018-09-12 22:09:17

阅读数:34

评论数:0

KMP算法

朴素匹配算法 我们常会用到ctril+F这个功能,在文本中查找某个关键字,并返回第一次出现的位置。 朴素匹配算法是一种暴力破解法,逐个进行比较。 为了简单起见,这里的串下标是从1开始的。 都某个字符匹配失败的时候,i和j同时回溯。 //串的简单匹配算法 i...

2018-09-05 16:20:18

阅读数:24

评论数:0

框架级浏览器兼容性判断

做前端开发时常需要考虑浏览器的兼容性,通常采用的是判断该对象有没有这个属性,如果有就直接使用内置的属性,如果没有就使用自己构建的属性。 例如在IE8下就不能使用getElementsByClassName()这个函数,我们通常会采用如下做法。 if(document.getElem...

2018-08-28 22:24:11

阅读数:30

评论数:0

JavaScript函数原型链

任何函数都是由Function函数构造出来的,Function的使用方法如下。 var func = new Function(arg1,arg2,arg3,…,methodBody); Function中的所有方法都是字符串类型,methodBody表示方法体,也是字符串类型。...

2018-08-23 18:05:17

阅读数:39

评论数:0

由Object.create(obj)引发的思考

Object.create(obj)是用来创建一个对象,该对象的原型是参数obj,但是在较低版本的IE浏览器中是不支持该函数的。那么应该如何对浏览器兼容性进行校验呢? 使用__proto__引发的问题 我们在google浏览器上进行调试的时候,发现对象都会有__proto__这个...

2018-08-21 16:42:03

阅读数:25

评论数:0

Javascript静态成员与实例成员

静态成员 静态成员由构造方法提供,一般用在工具函数的包装中。 function Person(){ } Person.a = function(){ console.log(&...

2018-08-20 10:37:40

阅读数:22

评论数:0

Java原子操作和volatile优化

系统总线 在介绍Java原子操作是如何实现之前,先来看下计算机组成中的系统总线。 https://blog.csdn.net/liujiuxiaoshitou/article/details/72800991 上面这张图描述的是单总线结构,这也是最简单的一种总线结构,我...

2018-08-18 11:56:29

阅读数:43

评论数:0

Java之偏向锁、轻量级锁、互斥锁

自旋锁 一般都是采用一个循环来占用某个资源,可想而知,它不适合对某个资源长期占用,采用循环会严重损耗CPU性能。 CAS CAS即Compare and Set,即比较和设置的意思,它的核心思想是通过比较预期值和原值是否一样,如果不一样,则进行修改成预期,如果一样就返回fals...

2018-08-18 11:19:46

阅读数:31

评论数:0

java之CAS

java的synchronized是一种悲观锁,也就是说,一个线程占用某个资源,直到该线程释放资源。 java的CAS机制采用“无锁”机制,是一种乐观锁,他不采用锁策略,而是用一个值来判断当前资源是否被占用,内部采用自旋校验。 数据库中的行锁,select * from t_b where i...

2018-08-15 15:38:59

阅读数:20

评论数:0

Socket发送和接收解耦

为了将Socket的发送消息和接收消息解耦,笔者实现了一个简单的消息队列,这里重点是,发送队列为空的时候,要使发送线程休眠,接收队列为空的时候,要使读取Message的线程休眠。 ...

2018-08-10 11:15:42

阅读数:33

评论数:0

单例模式--静态内部类和静态代码块实现单例的区别

静态资源不是一开始就存在于内存中的。 我们来看一个例子,静态资源不是一开始就存在于内存中的。 class A{ private A(){ System.out.println("A被初始化了&quot...

2018-07-28 17:00:01

阅读数:79

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭