Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

设计模式-代理模式(Proxy Model)

设计模式-代理模式(Proxy Model)

目录1、写在前面2、概述3、目的4、结构组成5、实现5.1 静态代理5.2 动态代理6、总结1、写在前面 这次写代理模式,代理模式里面的动态代理(Dynamic Proxy)逻辑稍显混乱,不太容易理解,本章节会将代理模式里面的静态代理(Static Proxy)和动态代理(Dynamic Proxy)结合对比理解,其中动态代理的实现需要具备 Java 的反射(Reflection)知识,原理方面会结合实例和静态代理的对比尽量说清楚。2、概述 在某些情况...
Java设计模式 -- 基本原则

Java设计模式 -- 基本原则

开始系统地学习设计模式相关的知识,对每一个原则或者设计模式主要从下面几点分析学习:定义:简单地描述其作用解决问题:说明该原则或设计模式解决什么限制条件下的问题。结构图:绘制相关例子的UML机构图。代码示例:通过一个例子解释该模式的实现方法。优缺点:该模式的局限性。单一职责原则(Single Responsibility Principle)定义:一个类只负责一个功能领域的职责;换句话说,就一个类而言,应该只有一个引起它变化的原因。注意:职责扩散是单一职责的...
搜狗实习面试记录

搜狗实习面试记录

前两天,参加了搜狗实习的面试。因为实习是一时的想法,没有做太多准备。第一天投简历,第二天就面试了。搜狗营销事业部的董先生面试的,总体来说表示的十分不好,好多地方都欠缺。特此把面试中的问题记录下来,留作后续复习使用。设计模式选择你熟悉的设计模式,画出UML图。(策略模式、装饰者模式、门面模式等)你在项目中使用到了什么设计模式,为什么使用?数据库如果要设计一个分布式数据库,你会怎么设计,需要考虑什么。分布式事务的实现方式。数据库的隔离级别。数据库加索引的时候,...
Java Lambda表达式初探

Java Lambda表达式初探

前言Java 8已经发行两年多,但很多人仍然在使用JDK7。对企业来说,技术上谨慎未必是坏事,但对个人学习而言,不去学习新技术就很可能被技术抛弃。Java 8一个重要的变更是引入Lambda表达式(lambda expression),这听起来似乎很牛,有种我虽然不知道Lambda表达式是什么,但我仍然觉得很厉害的感觉。不要怕,具体到语言层面上Lambda表达式不过是一种新的语法而已,有了它,Java将开启函数式编程的大门。为什么需要Lambda表达式不要...
Lambda表达式和匿名内部类

Lambda表达式和匿名内部类

前言Java Labmda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法。实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedynamic指令来实现Lambda表达式的。具体原理放到下一篇。本篇我们首先感受一下使用Lambda表达式带来的便利之处。取代某些匿名内部类本节将介绍如何使用Lambda表达式简化匿名内部类的书写,但Lambda表达式并不能取代所有的匿名内部类,只能用来取代函数接...
Java基础知识学习:异常

Java基础知识学习:异常

当异常发生时,原本要接着执行的代码不再执行,转而让其他部分的代码来处理。如果没有代码负责处理,控制台会报告异常。 异常出现时的执行机制: 异常机制最大的好处是:清晰地分开了 正常的业务逻辑 和 遇到情况时的处理 代码。(当在业务逻辑中,有多步可能会抛出不同的异常时,异常处理机制的好处更得以体现。如果没有这种机制,也许会通过很多的if...else...来实现异常处理,甚至是多层嵌套的if...else...,这样的代码可读性很差) 通过例子来理解:p...
Java基础知识:GUI之事件处理

Java基础知识:GUI之事件处理

事件处理可以简单地这么理解,当有一个事件产生,程序要根据这个事件做出响应。比如,我们做了一个可以通过按钮改变背景颜色的窗口,当我们点击按钮时便产生了一个事件,程序会根据这个事件来做出响应,也就是去改变背景的颜色。运行结果 那么程序是怎样做出响应的呢?这就需要事件监听器ActionListener,这是一个接口,里面包含了actionPerformed方法(也就是根据事件去执行的操作),所以我们要实现这个接口(实现接口里的actionPerformed方法...
Java基础知识学习总结 -- 图形用户界面GUI

Java基础知识学习总结 -- 图形用户界面GUI

虽然目前Java算不上前端开发的主力,但是作为Java入门基础的一部分,学习Java的GUI编程还是有必要的,而且可以做出一些小且有趣的图形程序来提高学习热情。本篇学习总结均为一个Beginner的笔记与心得,如有描述不到或错误之处,敬请指正。 目录:JavaGUI主要开发工具 -- Swing类库的诞生与功能创建JFrame框架在框架中添加组件JComponent 1. JavaGUI主要开发工具 -- Swing类库的诞生与功能 一个合格的Jav...
Java基础知识:接口、抽象类与抽象函数

Java基础知识:接口、抽象类与抽象函数

Java基础知识:抽象类与抽象函数interface是一种特殊的class接口是纯抽象类所有的成员函数都是抽象函数;所有的成员变量都是public static final;接口是为了方便类的调用一个类如果要去实现某个接口,要加 implements 接口名Java基础知识:抽象类与抽象函数abstract class抽象类不能制造对象,但是可以定义变量,赋给这个变量的一定是他非抽象子类的对象;抽象类中的抽象函数没有函数体,例如:public abstra...
Java基础知识:多态

Java基础知识:多态

Java的继承与多态,看得我是有点小懵逼。其实大致是懂了,不过到了具体应用中,特别是比较复杂的继承和调用关系的时候些许迷路。好了,话不多说,今日先对多态来个小记。现在我们要做这么一个媒体库,用来存放CD和DVD。可以往媒体库里添加CD和DVD,还可以列出来媒体库里所有的CD和DVD。我们用到了继承的概念:CD是一个对象,DVD也是。两者又有很多相似的地方,比方说都有名字,播放时间,评论,等等,为了以后便于管理和调试,我们做了一个父类叫Item,它下面有两个...
Java基础知识:继承 的简单总结

Java基础知识:继承 的简单总结

为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD。如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD的函数,单独做一个添加DVD的函数,如果还要往这个媒体库里添加其他的媒体类,还要再创建另一个添加函数。我们说这样的代码不具备可扩展性。另外,CD和DVD有很多相似之处,它们的成员变量里都有标题,播放时长,评论,等等,我们称这样的程序存在大量的代码复制,代码复制是代码不良的表现。所以我们可以创建一个...
Java基础知识:对象容器

Java基础知识:对象容器

目录:ArrayList 顺序泛型容器HashSet 集合容器HashMap<Key,Value>容器要用Java实现记事本的功能。首先列出记事本所需功能:可以添加记录(字符串);可以获得记录条数;可以删除其中某一条记录;可以获得指定第几条的记录;可以列出所有的记录。如果这个记事本是某个大程序的其中一部分,也就是说还有上层程序,那么上层程序就有可能会调用这个记事本以上列出的某个数据。所以我们称上述所列功能为这个记事本的 接口 。那么调用这些接口...
理解Java对象的交互:时钟显示程序

理解Java对象的交互:时钟显示程序

实现:结构:对象:时钟 - 对象:小时 - 对象:分钟小时和分钟具有相同属性(值,上限),可以用一个类Display来定义这两个对象;但是两者之间又具有联系(当分钟达到上限时,小时要加1),但两者同属于一个类里,不能产生直接联系,这时我们用另外一个类Clock来对它们进行管理;首先用Clock类来定义一个clock的对象,用它来管理两个Display类型的对象,也即是clock的成员变量(min,hour),来管理它们之间的关系,再做显示;总...
Java中Date与String的相互转换

Java中Date与String的相互转换

我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需要一个日期类型,反过来,在页面上显示的时候,需要从数据库获取出生日期,此时该类型为日期类型,然后需要将该日期类型转为字符串显示在页面上,Java的API中为我们提供了日期与字符串相互转运的类DateForamt。DateForamt是一个抽象类,所以平时使用的是它的子类SimpleDateFormat。Simp...
Java基础之关键字static

Java基础之关键字static

static是Java中的一个关键字,用来修饰成员变量与成员方法,还可以用于编写静态代码块,对于被static修饰的东西,JVM在加载类的时候,就给这些变量在内存中分配了一定的空间,即在编译阶段时就为这些成员变量的实例分配了空间。一、静态变量被static关键字修饰的成员变量叫做静态变量,前面我们讲到成员变量与局部变量的区别,那么静态变量与成员变量又有哪些不同呢?1、调用方式静态变量:类变量,可以直接通过类名调用,也可以通过对象名调用,这个变量属于类成员变...
成员变量与局部变量的区别

成员变量与局部变量的区别

成员变量与局部变量的区别1、在类中的位置不同成员变量:在类中方法外面局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中)2、在内存中的位置不同,可以看看Java程序内存的简单分析见 http://www.linuxidc.com/Linux/2016-10/135687.htm成员变量:在堆中(方法区中的静态区)局部变量:在栈中3、生命周期不同成员变量:随着对象的创建而存在,随着对象的消失而消失局部变量:随着方法的调用或者代码块的执行而存在,随...
Java中的阻塞队列

Java中的阻塞队列

1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。2.Java里的阻塞队列JDK中提供了七个阻塞队列:ArrayBlockingQueue :一个由...
<< 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 >>