- 博客(16)
- 收藏
- 关注
转载 命令模式
命令模式关注动作本身,通过将动作封装成对象实现调用者和底层实现相分离。调用者只需要简单的下达命令,然后等待命令完成即可,对底层发生了什么完全不知情。关于命令模式一个很直观的例子就是点餐:当我们点餐时,我们只用关心将选好的菜品下单,然后等待送餐即可,我们不关心饭菜是怎么做的,不关心厨师是男是女。下面通过一个万能遥控器的例子进一步认识命令模式。步入物联网时代,很多家电都可以实现远程控...
2019-10-01 13:17:00 105
转载 装饰者模式
装饰者模式能够动态地将责任附加到对象上,在扩展对象功能方面比继承更加灵活,具体来说,装饰者模式将行为委托给相应的包装对象,并添加上自己的对应逻辑来实现特定的功能。装饰者模式的UML图如下: 首先需要有被装饰的组件接口和具体组件,然后有装饰者对象,由于装饰者对象需要能够代替组件,所以要继承组件接口,并组合组件对象来完成委托任务。 下面以一个简单的...
2019-09-29 00:31:00 122
转载 观察者模式
观察者模式允许多个观察者订阅一个主题,当主题的状态发生变化时,能够将这种变化通知到每个观察者。从主题的角度看,这是典型的一对多关系,即一个主题可以对应多个观察者。以订阅邮件为例,当订阅某一类主题内容(例如娱乐新闻,动漫等)时,如果该主题的内容有更新,那么每一个订阅该主题的人都会受到一封内容更新的邮件,这便是典型的观察者模式。 要实现邮件订阅的功能,需要先定义一个...
2019-09-22 01:57:00 105
转载 策略模式
策略模式采用组合的形式,把一个算法任务委托给被组合的接口,根据运行时传入对象的不同,算法可以做到相互替换,同时这些变化可以独立于具体的使用者。 例如,一般车上都会有喇叭,不同的车喇叭的声音不一样,将车抽象成一个接口如下:1 public interface Vehicle{2 void whistle(); //鸣笛3 } ...
2019-09-15 16:34:00 94
转载 适配器模式和外观模式
适配器模式提供了将一种对象转换成另一种对象的能力,利用它可以实现两个不兼容接口的协调工作。外观模式是封装对象内的复杂逻辑,对外提供一个简化的接口。1. 适配器模式 生活中最常见的适配器的使用场景就是各种转换线和转换插头,例如投影仪到电脑之间的转换线,港版iPhone和国内插座之间的转换插头等。下面就以iPhone和插座之间的转换插头为例来看看适配器模式的用法...
2019-09-14 02:01:00 144
转载 工厂模式和抽象工厂模式
最近在啃设计模式,这篇文章是设计模式的第一篇,希望可以一直写下去。 工厂模式和抽象工厂模式都属于创建型模式,是用来创建对象的。程序中将创建对象的操作(例如各种new)抽离到单独的接口中,由接口的子类来完成对象的创建工作,从而实现对象的创建与业务逻辑解耦的目的。这里所说的接口,既包括interface,也包括抽象类。 下面以“饺子”作为例子来讲解这两...
2019-09-08 19:04:00 133
转载 常见的排序算法整理
在这里整理一下目前一些常见的排序算法和一些个人理解,可能会存在一定的错误,后续发现后会立即更正。所涉及到的算法包括:冒泡排序、选择排序、插入排序、希尔排序、快速排序(递归和非递归版本)、堆排序、归并排序、桶排序、基数排序、计数排序。一些理解:快速排序和归并排序都是基于分治的思想,区别在于快速排序是先整体再局部:先把数据整体划分成两部分,一部分大于某个值,另一部分小于某个值,然...
2019-05-02 23:38:00 100
转载 我为什么要写博客
我经常会思考一个问题,就是自己为什么要写博客呢?很多时候,我写的东西已经有人写过,而且比我写得更好,在这种情况下,我是否还需要把这些东西再写一遍呢?万一有一些知识点我没有理解透彻,写的博客不严谨,岂不是会误导其他人?最近我想明白了这个问题,所以决定把自己的想法记录下来,时时提醒自己。首先,博客是写给自己看的。因为自己写的东西,必然是已经理解的东西,为了方便以后查阅才进行记录。...
2018-06-17 14:27:00 132
转载 Java深拷贝与序列化
对基本类型的变量进行拷贝非常简单,直接赋值给另外一个对象即可:1 int b = 50;2 int a = b; // 基本类型赋值对于引用类型的变量(例如 String),情况稍微复杂一些,因为直接等号赋值只是复制了一份引用,而复制前后的两个引用指向的是内存中的同一个对象。要想实现引用类型的拷贝,可以通过实现 Cloneable 接口,并覆盖其中的 clone...
2018-06-17 13:37:00 105
转载 Java并发笔记——单例与双重检测
单例模式可以使得一个类只有一个对象实例,能够减少频繁创建对象的时间和空间开销。单线程模式下一个典型的单例模式代码如下:① 1 class Singleton{ 2 private static Singleton singleton; 3 private Singleton(){} 4 5 public ...
2017-09-07 23:59:00 108
转载 Mysql索引
当数据库记录达到一定规模时,常规的查询将会耗费非常多的时间,这对于瞬时性能要求较高的系统来说是无法接受的。为了提高查询的速度,人们设计了索引来辅助查询。在查询的时间消耗上,主要包括内存操作耗时和磁盘IO耗时,而内存操作比磁盘IO操作效率高得多,因而磁盘物理记录的检索占用了绝大部分的查询时间。根据磁盘IO的原理,人们又设计了B树和B+树来尽可能的减少IO操作。所以在讲到索引的时候,...
2017-08-26 00:36:00 84
转载 小解红黑树
1.基本定义首先,红黑树是一种特殊的二叉查找树(Binary Search Tree,也叫二叉搜索树)。一个BST是指:它是一颗空树,或者满足左子树(如果有)所有节点的值均小于根节点,右子树(如果有)所有节点的值都大于根节点,且左右子树均是二叉搜索树,这是一个递归定义。从BST的定义可以看出,其中序遍历序列是递增序列。红黑树在BST定义的基础上,增加了几个属性:key : 用...
2017-04-26 00:13:00 154
转载 Spring与Mybatis配置问题
Spring和Mybatis的整合,主要借助于Spring的依赖注入和控制反转来简化Mybatis的配置,使用两个配置文件【注:此种配置文件网上已经有很多】:spring.xml: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org...
2016-08-20 16:19:00 74
转载 Springmvc加载静态文件和开启EL表达式的支持
一、静态文件加载问题刚开始学习SpringMVC,发现静态文件无法加载web.xml配置如下:<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins...
2016-08-07 00:33:00 204
转载 php调用java类文件
最近在折腾php调用java类,网上查阅资料,最终选用JavaBridge,遇到的第一个问题是java_require() 函数引入自定义java打包而成的jar文件,在新版本的JavaBridge中,该函数已被废弃,使用会出错。网上搜索的资料,大致有两种方法,亲测可行;方法一 从http://php-java-bridge.sourceforge.ne...
2015-04-21 16:28:00 196
转载 在Nginx上配置ThinkPHP项目
前段时间用Apache配合TP开发了一个小型网站,也算是我使用TP的第一次实战。我习惯使用pathinfo模式,本地运行一切正常,然而部署到服务器上时,由于对方使用的是Nginx,默认是不支持ThinkPHP的pathinfo模式,所以导致路径错误,出现了页面循环跳转的问题,于是就把nginx下载下来在本地亲自测试。 其实,要解决nginx不支持pathinfo...
2015-02-01 22:19:00 123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人