Sweep

装饰者模式

寵の児 提交于 2019-11-29 16:03:17
装饰者模式 装饰者模式是23种设计模式之一,是指在不改变原来的类和使用继承的方式,动态的扩展这个类的功能。装饰者允许向一个现有的对象添加特定的功能却不改变它的结构。通过一个类来包装原有的类来提供额外的功能。 特点 (1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。 (2) 装饰对象包含一个真实对象的引用(reference) (3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。 (4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。 装饰者模式的结构: Component:抽象组件,被装饰的原始对象,可以是抽象类或者接口 ConcreatCompoent:实现或者继承了抽象组件,被装饰的具体的实现 Decorator:抽象的装饰者,实现或者继承了Component抽象组件,持有抽象组件的引用 ConcreatDecotarorA、ConcreatDecotarorB:具体的装饰者,实现或者继承了抽象装饰者。 实现 举个简单的例子,假设有一个科沃斯机器人,它的基本功能是扫地,现在要求这个机器人可以边扫地边唱歌,还可以边扫地边跳舞。 那么,就可以将机器定义为一个抽象的类

一文读懂JVM

岁酱吖の 提交于 2019-11-29 10:17:13
一、什么是JVM JVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是平台无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。 二、JVM总体概述 JVM总体上是由类装载子系统(ClassLoader)、运行时数据区、执行引擎、垃圾收集这四个部分组成。其中我们最为关注的运行时数据区,也就是JVM的内存部分则是由方法区(Method Area)、JAVA堆(Java Heap)、虚拟机栈(JVM Stack)、程序计数器、本地方法栈(Native Method Stack)这几部分组成。 三、JVM体系结构 3.1 类装载子系统 Class Loader类加载器负责加载.class文件

深入理解JVM,7种垃圾收集器

萝らか妹 提交于 2019-11-29 09:52:43
本人免费整理了Java高级资料,一共30G,需要自己领取; 传送门: https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。接下来讨论的收集器基于JDK1.7 Update 14 之后的HotSpot虚拟机(在此版本中正式提供了商用的G1收集器,之前G1仍处于实验状态),该虚拟机包含的所有收集器如下图所示: 上图展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。虚拟机所处的区域,则表示它是属于新生代收集器还是老年代收集器。Hotspot实现了如此多的收集器,正是因为目前并无完美的收集器出现,只是选择对具体应用最适合的收集器。 相关概念 并行和并发 并行(Parallel) :指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。 并发(Concurrent) :指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行。而垃圾收集程序运行在另一个CPU上。 吞吐量(Throughput)

给wordpess博客的数据库减肥提速

懵懂的女人 提交于 2019-11-28 21:09:45
随着wordpress网站的时间越来越久,文章越来越多,大家是不是也感受到自己的wordpress网站的运行速度也随之下降?这是什么原因呢?前面的文章,高时银博客也介绍过一些方法,如:评论头像优化、弃用google字体等。如果我们已经做这些优化,并且网站服务器没问题的情况下,我们就要考虑一下数据库的优化了。下面一起来看看 怎样给wordpress网站的数据库优化和减肥 ? 1、清理wordpress文章的Revision: WordPress现在的版本加入了自动保存日志修订版的功能。每修改一次日志,就会在wordpress数据库的wp-post表中增加一个Revision,长此以往Post Revision的数量会大得惊人。 在数据库中通过SQL语句来清理Post Revision,代码如下: DELETE a,b,c FROM wp_posts a WHERE a.post_type = 'revision' LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id); 也可以通过Delete-revision插件来清理: 安装这个插件之后,就可以清楚的看到当前数据库中所有Post Revision了,只需要点击删除