自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dengjili的专栏

我是学渣

  • 博客(31)
  • 资源 (2)
  • 收藏
  • 关注

原创 代理模式-保护代理

案例场景,相亲网,本人不能对自己打分,只能修改自己的基本信息其他人只能对别人打分,不能修改别人的基本信息代码实现接口package headfirst.hd.proxy.eg2;public interface PersonBean { String getName(); String getGender(); String getIntere...

2018-03-31 11:50:40 1125

原创 加载耗时资源代码实现

加载网络图片当图片没有加载好时,提示文字信息,加载完毕,显示图片模型设计蓝色为代理模式 橘红色为状态模式对应代码package headfirst.hd.proxy.eg;import java.awt.Graphics;import javax.swing.Icon;import javax.swing.JComponent;class...

2018-03-30 22:30:35 579

原创 代理模式

代理案例一,RMI 搭建远程rmi例子rmi:https://blog.csdn.net/dengjili/article/details/79750093分析,客户端本地出现了服务端的代理对象 代理案例二,加载耗时资源代码实现对应链接:https://blog.csdn.net/dengjili/article/details/79764204代理案例三,保护...

2018-03-30 17:03:34 131

原创 Java RMI入门详细搭建过程

RMI:远程方法调用(Remote Method Invocation)。能够让A电脑的java虚拟机上的对象调用B电脑的java 虚拟机中的对象上的方法。类似于websocket的远程调用所需代码客户端代码:链接: https://pan.baidu.com/s/1t5DaLvbNzbRikVYBWrDa_Q 密码: iptcRmiTestClient- - rmi...

2018-03-29 22:05:42 1557

原创 ubantu安装java环境

下载linux版本jdk地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html解压targz包,放到任意一个目录当前解压后java_home路径为:/home/ubantu/app/jdk1.8.0_161,为以下文件使用配置文件/etc/profi...

2018-03-29 16:09:19 521

原创 状态模式入门

状态模式状态模式可以理解是策略者模式的特例,主要是用途上表现出特例策略者模式链接:https://blog.csdn.net/dengjili/article/details/79273928简单例子理解饮料自动贩卖机自动贩卖机状态图简化为以下几种状态 对应代码package headfirst.hd.state.eg;public class ...

2018-03-28 16:11:13 225

原创 多个Iterator的整合应用

迭代器模式Iterator入门:https://blog.csdn.net/dengjili/article/details/79666954多个Iterator顺序输出(先进先出)Iterator1:aIterator2:1,2Iterator3:x,y,z输出结果:a,1,2,x,y,z管理器package headfirst.hd.iterator.eg3...

2018-03-27 22:42:48 881

原创 组合模式

组合模式组合模式主要表现形式为树型结构,有一个整体和部分的关系,如我们平时使用的省份,县市,区县等下面我们来看一个例子这是一家餐厅的菜单结构,现在我们需要将其遍历输出 引入组合模式设计 对应代码基类代码package headfirst.hd.composite.eg;public abstract class Component { // 集...

2018-03-26 22:48:06 361

原创 java-zip方式压缩和解压缩,操作单个文件源码

代码可直接使用import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.z...

2018-03-26 15:50:00 401

原创 迭代器模式Iterator

迭代器用途:遍历每一个含有的元素为什么需要迭代器由于数据结构导致了不同结构数据不一致,相应的操作也有差异 例如,数组遍历 int[] ints = {1, 2, 3}; if (ints != null) { for (int i = 0; i < ints.length; i++) { ...

2018-03-23 14:18:35 230

原创 超越模板方法模式,模板接口方式,来自于Gson例子

模板方法模式:https://blog.csdn.net/dengjili/article/details/79631472类ObjectNavigator/* * Copyright (C) 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you ma...

2018-03-22 19:24:22 287

原创 模板方法-高级应用 hook(钩子)

模板方法模式入门:https://blog.csdn.net/dengjili/article/details/79631472修改设计加入hook,其中这个hook方法是可选的给出例子,再给出解释package headfirst.hd.template.eg;public abstract class AbstractClass { //不让子类覆盖掉...

2018-03-22 17:28:10 3230

原创 回调函数正确理解

回调过程简单理解就是,A调用B,然后B在调用A对应模型 对应代码回调接口package callback;public interface CallBack { void backMethod();}调用者package callback.other;import callback.CallBack;public class Cal...

2018-03-22 16:34:15 1006

原创 模板方法应用-Arrays.sort(Object[] a)

不清楚模式方法模式可以参考:http://blog.csdn.net/dengjili/article/details/79631472Arrays.sort(Object[] a)定义public static void sort(Object[] a)根据元素的自然顺序对指定对象数组按升序进行排序。数组中的所有元素都必须实现 Comparable 接口。此外,数组中的所有元素都必须...

2018-03-21 21:35:50 1767

原创 模板方法模式

引入一个模板方法列子,我们经常写一些web工程,下面是我们常见的写代码的方式package servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServ...

2018-03-20 20:45:44 410

原创 最少知识原则-headfirst

最少知识原则先看一段错误例子,这段代码耦合了多少类public float getTemp() { return station.getThermometer().getTemperature();}其中,station.getThermometer()返回时一个对象,然getTemperature()是前者返回对象的方法,这里属于耦合错误改进,实际上与上一致...

2018-03-20 16:30:07 643

原创 外观模式

外观模式:简化接口 我们通常在完成某一个流程操作时候,需要调用很多接口,我们可以对这些接口进行封装,提供一个简化接口未引入外观模式例子 早上出门,我们需要完成一些步骤对应代码package headfirst.hd.facade.eg.error;public class Eatable { public void eat() { S...

2018-03-20 15:56:00 129

原创 适配者模式应用:java转换流InputStreamReader和OutputStreamWriter类

适配者模式参考:http://blog.csdn.net/dengjili/article/details/79485034java中的IO流转换主要针对字节流向字符流的转换,字符流有行读写方法InputStreamReader对象适配器设计模式 重要说明InputStreamReader为适配器模式BufferedReader为装饰者模式具体例子代码文...

2018-03-20 11:59:04 1576

原创 Iterator接口与Enumeration接口双向兼容,适配器模式案例

适配者模式参考:http://blog.csdn.net/dengjili/article/details/79485034问题Enumeration是java中比较早提供的遍历稽核接口,Iterator是新的遍历接口,后来兼容原来旧的代码,需要使用到适配器Iterator方法Enumeration方法Iterator兼容Enumeration接口对象适...

2018-03-15 21:45:28 1125

原创 命令模式的用途:日志请求的具体例子数据库回滚

命令模式 undo,redo参考:http://blog.csdn.net/dengjili/article/details/79533521 序列化与反序列化参考:http://blog.csdn.net/dengjili/article/details/79541333描述来自于headfirst某些应用需要将所有的动作都记录在日志中,并能在系统死机后,重新调用这些动作恢复到之前...

2018-03-13 21:43:16 872

原创 命令模式的用途:具体的例子多线程队列请求

命令模式参考:http://blog.csdn.net/dengjili/article/details/79495454描述来自于headfirst命令可以将运算块打包(一个接受者和一组动作),然后将它传来传去,就像是一般的对象一样。现在,即使在命令对象被创建许久之后,运算依然可以被调用。事实上,它甚至可以在不同的线程中被调用。我们可以利用这样的特性衍生一些应用,例如:日程安排、线程...

2018-03-13 20:48:30 1016 1

翻译 java 序列化与反序列化

什么是序列化与反序列化?  序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点(在网络上传输)。这个过程称为序列化。通俗来说就是将数据结构或对象转换成二进制串的过程  反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程   序...

2018-03-13 15:41:55 266

原创 命令模式 undo,redo

命令模式入门例子:http://blog.csdn.net/dengjili/article/details/79495454为什么需要undo很多时候,我们再操作完,命令之后,我们发现,这个功能不是我们想要的,比如我们在文本编辑中,误删除了文本,我们希望通过回退操作,达到之前的状态。像之前的列子,我们打开了灯,但是之后发现,我们不需要开灯,我们也可以通过undo能撤销刚才的命令...

2018-03-12 21:45:31 2170

原创 命令模式-headfirst例子改进

分析命令模式引入情景分析 现在我们有很多智能家居,他们都由同一个控制器控制,比如,能控制点灯,窗帘,电视等 每一个按钮(相当于命令)都对应一个电器的功能,列如点灯的开,电视的关等,如下 但是控制器1按钮,对应功能不一定是电视开功能,也可能是电灯开功能,或者其他,也就是说,我们的控制器按钮,可以绑定任意的具体电器功能,(这也是我们在设计模式中所追求的),所有我们修改一下设计,定义统...

2018-03-09 11:47:00 664

原创 适配者模式

生活中适配者例子1,这是我的电脑,网线接口和传统接口不一样,必须要通过一个转换器,转成usb接口,我的电脑才可以上网 例子2,现在我们的手机种类很多,对应着给手机充电需要对应的数据线 简答的适配者模式例子入门猩猩和人类很多相似的地方,但又不同于人类,随着有些猩猩经过训练,会变得越来越聪明,现在我们将猩猩适配为人类现给出例子,后给出解释动物接口packag...

2018-03-08 15:26:10 539

原创 确保类只有一个唯一对象,单件模式

为什么需要单件模式我们为什么要用到单件模式,当我们用到这些对象如:线程池,缓存,注册表和日志对象等,事实上,这些对象我们只能有一个实例,不然会导致很多问题出现,所以我们要将它弄成单件的。分析常用单件模式类图很简单 package headfirst.hd.singleton;public class Singleton { static Singleton ...

2018-03-07 11:48:51 544

转载 Java并发编程:volatile关键字解析

原文出处:http://www.cnblogs.com/dolphin0520/p/3920373.htmlJava并发编程:volatile关键字解析volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字...

2018-03-06 21:22:33 165

原创 依赖倒置原则定义,及倒置的两种理解

依赖倒置原则定义如下(可先不管) - 高层模块不应该依赖低层模块,两者都应该依赖抽象 - 抽象不应该依赖细节 - 细节应该依赖抽象情景描述 当前有一家饮料店,里面卖着很多饮料设计如下 问题描述这里箭头符号表示BeverageStore依赖Juice,及高层依赖于低层在BeverageStore中,对应的是具体的饮料实现,具体代码如下pa...

2018-03-06 11:33:28 4274

原创 设计模式之工厂模式

为什么需要工厂我们来看看,当没有工厂时引发的问题业务情景,当前有许多卖手机的店,里面卖着各种型号的手机,当前卖了苹果,三星,oppo,三款手机当前设计 对应代码IPhone package headfirst.hd.factory.phone;public class IPhone { public double price = 6000;}Sams...

2018-03-05 20:03:03 163

原创 BufferedInputStream源码分析,解答readlimit相关的问题

承接上面一个主题:BufferedInputStream中,readlimit相关的问题BufferedInputStream源码分析 BufferedInputStream类是一个装饰者子类,FilterInputStream为装饰者基类,InputStream类和其子类是被包装的类原理图原始InputStream读取方式,应用程序直接从物理设备上读取数据 Buf...

2018-03-01 19:26:21 1092 3

原创 BufferedInputStream中的mark()和reset()用法,及其中readlimit相关的问题

mark与reset基本用法官方文档,虽然没什么用 mark reset 调用流程 在BufferedInputStream中,有一个定义一个byte数组来存放流,文件等数据(俗称缓冲区数组),如下图所示将文件数据部分读入缓冲区,缓冲区大小为10 从缓冲区中取出1,2两个数据 调用mark(int readlimit)方法,具体值为:mark(3) ...

2018-03-01 17:52:22 6487 5

BufferedInputStream源码分析图

BufferedInputStream源码分析图

2018-03-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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