
java
文章平均质量分 81
二蛋和他的大花
喜欢电脑,喜欢创新。
展开
-
java设计模式:备忘录模式
前言备忘录模式能记录一个对象的内部状态,当用户后悔时能撤销当前操作,使数据恢复到它原先的状态。定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。优点提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。简化了发起人类。发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录原创 2021-06-09 15:37:54 · 252 阅读 · 0 评论 -
java设计模式:访问者模式
前言访问者模式是一种将数据操作和数据结构分离的设计模式。定义将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。优点扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系统的复用程度。灵活性好。访问者模式将数据结构与作用于结构上原创 2021-06-09 14:55:10 · 273 阅读 · 0 评论 -
Java设计模式:迭代器模式
前言在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍历方法由用户自己实现是否可行呢?答案是同样不可取,因为这种方式会存在两个缺点:暴露了聚合类的内部表示,使其数据不安全;增加了客户的负担。“迭代器模式”能较好地克服以上缺点,它在客户访问类与聚合类之原创 2021-05-13 14:51:23 · 273 阅读 · 0 评论 -
java设计模式:中介者模式
前言在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须让其他所有的朋友一起修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”就可以了。如前面所说的“每个人必须记住所有朋友电话”的问题,只要在网上建立一个每个朋友都可以访问的“通信录”就解决了。这样原创 2021-05-13 11:46:58 · 296 阅读 · 0 评论 -
java设计模式:命令模式
前言在软件开发系统中,“方法的请求者”与“方法的实现者”之间经常存在紧密的耦合关系,这不利于软件功能的扩展与维护。例如,想对方法进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与实现者解耦?”变得很重要,命令模式就能很好地解决这个问题。在现实生活中,命令模式的例子也很多。比如看电视时,我们只需要轻轻一按遥控器就能完成频道的切换,这就是命令模式,将换台请求和换台处理完全解耦了。电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者)。再比如,我们去餐厅吃饭,菜单不是等到原创 2021-05-12 14:28:54 · 253 阅读 · 0 评论 -
java设计模式:享元模式
前言在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。定义运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系原创 2021-05-12 13:41:44 · 356 阅读 · 1 评论 -
java设计模式:桥接模式
桥接模式的定义与特点桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。通过上面的讲解,我们能很好的感觉到桥接模式遵循了里氏替换原则和依赖倒置原则,最终实现了开闭原则,对修改关闭,对扩展开放。这里将桥接模式的优缺点总结如下。优点抽象与实现分离,扩展能力强符合开闭原则符合合成复用原则其实现细节对客户透明缺点由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两原创 2021-05-11 17:24:01 · 274 阅读 · 0 评论 -
java开发模式:状态模式
状态模式中,行为是由状态来决定的,不同状态下有不同行为。举个例子把,比如电视,电视有2个状态,一个是开机,一个是关机,开机时可以切换频道,关机时切换频道不做任何响应。public interface TvState{ public void nextChannerl(); public void prevChannerl(); public void turnUp(); ...原创 2018-05-03 11:31:29 · 555 阅读 · 0 评论 -
java设计模式:原型模式
定义用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。优点Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程,以便在需要的时候使用(例如恢复到历史某一状态),可辅助实现撤销操作。缺点需要为每一个类都配置一个 clone原创 2021-04-21 13:41:11 · 232 阅读 · 0 评论 -
java设计模式:抽象工厂模式
定义是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。使用抽象工厂模式一般要满足以下条件。系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。系统一次只可能消费其中某一族产品,即同族的产品一起使用。优点抽象工厂模式除了具有工厂方法模式的优点外,其他主要优点如下。可以在类的内部对产品族中相原创 2021-04-21 10:23:41 · 246 阅读 · 0 评论 -
java 设计模式:工厂方法模式
前言简单工厂模式每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度,违背了“开闭原则”。“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。优点:用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。缺点:原创 2021-04-20 14:22:49 · 227 阅读 · 0 评论 -
java 设计模式:简单工厂
工厂模式的定义定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。简单工厂如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。简单工厂通常为静态方法,因此又叫静态工厂方法模式优点:工厂类包含必要的逻辑判断,可以决定在什么时候创建哪一个产品的实例。客户端可以免除直接创建产品对象的职责,很方便的创建出相应的产品。工厂和产品的职责区分明确。客户端无需知道所创建具体产品的类名,只需知道参数即可。原创 2021-04-20 11:49:37 · 251 阅读 · 0 评论 -
算法与数据结构之队列
算法与数据结构之队列概念基本属性队列分类(以下图都是盗的,有侵的话私聊我)根据存储结构划分链式队列循环队列单向队列双向队列根据阻塞/非阻塞划分阻塞队列非阻塞队列根据有界/无界划分有界队列无界队列基本操作enQueue(入队):deQueue(出队):概念队列(Queue)是一种先进先出(FIFO)的结构队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作基本属性队头front:删除数据的一端。队尾rear:插入数据的一端。数组原创 2021-03-31 17:43:19 · 357 阅读 · 0 评论 -
算法与数据结构之链表
算法与数据结构之链表概念链表分类(以下图都是盗的,有侵的话私聊我)单链表循环链表双向链表基本单位基本操作删除节点添加节点有关链表的算法链表算法注意事项算法一(单链表的倒数第K个结点)算法二(判断一个链表有环)算法三(两个链表的第一个公共结点)生活中的算法(排排坐,赶走第三者)个人说明:拿过国内某算法大赛全国三等。。。(渣渣)概念链表是计算机数据结构中比较重要的一个,也是最基础之一。在开发过程中,有些时候会采用这种结构。链表可以说是一种动态的数据结构。链表是一种物理存储上非连续的存储结构,数据的顺序与原创 2021-03-08 11:50:18 · 560 阅读 · 0 评论 -
算法与数据结构之数组
它用一组连续的内存空间,来存储一组具有相同类型的数据。优点:查找速度快,可以快速随机访问缺点:删除,插入效率低,大小固定,不支持动态扩展,要求内存空间必须连续数组是一种线性表结构原创 2021-03-09 11:06:48 · 362 阅读 · 1 评论 -
java 设计模式:责任链模式与Android事件传递
1、概念是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。2、使用场景有多个对象可以处理同一个请求,具体哪个对象处理该请求待运行时刻再确定 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 可动态制定一组对象处理请求,客户端可以动态创建职责链来处理请求。3、uml结构...原创 2019-05-23 12:14:07 · 488 阅读 · 0 评论 -
java 设计模式:观察者
1、概念在对象之间定义了一对多的依赖,使得么当一个对象状态发生改变,其相关依赖对象会收到通知并自动更新。2、场景一个抽象模型有两个方面,其中一个方面依赖于另一个方面 一个对象的改变将导致一个或多个其他对象也发生改变 需要在系统中创建一个触发链3、UML结构图分析抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察...原创 2019-04-30 18:43:44 · 320 阅读 · 0 评论 -
java 设计模式:模版方法
模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式,如大话设计模式中说到的考试场景中,每个人的试卷都是一样的,只有答案不一样。这种场景就适合于模板方法模式。模板方法模式适用的业务场景算法或者操作遵循相似的逻辑 重构时(...原创 2019-04-30 18:05:53 · 331 阅读 · 0 评论 -
java 设计模式:策略模式
概念:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换,策略模式让算法独立于使用它的客户而独立变化。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。使用场景:一个类定义了多种行为,并且这个行为在这个类的方法中以多个条件语句形式出现,那么可以使用策略模式避免在类中使用大量的条件语句。UML:代码展示:为了更清晰的展示出策略模式的...原创 2019-04-30 16:34:42 · 304 阅读 · 0 评论 -
这是一个纵横火柴棒游戏。如图[1.jpg],在3x4的格子中,游戏的双方轮流放置火柴棒。
【编程题】(满分34分) 这是一个纵横火柴棒游戏。如图[1.jpg],在3x4的格子中,游戏的双方轮流放置火柴棒。其规则是: 1. 不能放置在已经放置火柴棒的地方(即只能在空格中放置)。 2. 火柴棒的方向只能是竖直或水平放置。 3. 火柴棒不能与其它格子中的火柴“连通”。所谓连通是指两根火柴棒可以连成一条直线,且中间没有其它原创 2014-05-14 20:22:32 · 1482 阅读 · 0 评论 -
java的拆箱与装箱
神马叫拆箱,神马叫装箱呢?我这里就简单写一写~~话说百度能百度一堆装箱与拆箱主要就是类型转化装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型~~其实这也是我百度的~~23333333原创 2016-02-23 22:09:43 · 587 阅读 · 0 评论 -
服务器集群session共享方案
首先说明一点~~这方面我也不是很专业~~业余说一说~~ 有什么错误看到的指正一下就好了,毕竟我还是too young too simple我目前做过的又这么两种方案~~(纯属个人扯淡经验) 都是和redis相关的~~第一种 直接配置tomcat的session管理让session直接让redis管理 主要的配置是在 修改tomcat的context.xml<Valve className=原创 2016-02-27 12:30:24 · 629 阅读 · 0 评论 -
java多线程开发 如何正确关闭线程
在java高级开发中,经常会碰到多线程,关于线程的关闭,可能会用stop() 方法,但是stop是线程不安全的,一般采用interrupt,判断线程是否中止采用isInterrupted, 如果线程中有Thread.sleep方法,当设置中断后,执行这个方法会抛出异常,就务必在异常中继续关闭线程Thread thread = null;thread = new Thread(new Runnab原创 2016-04-19 23:31:33 · 18939 阅读 · 0 评论 -
java线程池和关闭线程池中的线程
如果线程经常喜欢去new的话是不对的,你需要一个池子管理。当然放倒线程池里的东西就随他而去吧,你就不要去尝试关闭了,如果想去关闭的话,还是老老实实的new吧~newCachedThreadPool 这个一个带缓存的线程池,是个可以无限大的线程池,新建的线程放倒这个池子里,当线程停掉了的时候,下个个线程进来,可以复用这个线程。 newFixedThreadPool 是个有长度的线程池,与上一个不同的原创 2016-04-20 23:53:35 · 10892 阅读 · 0 评论 -
java 反射详解
反射作为java高级的一个知识点。虽然一般开发情况下不会用到,但是也算是必须知道的知识点 如下则是java的反射包 java.lang.reflect 在开始我们建立一个父类 Anmion (名字我瞎起的,只作为展示代码效果来看,主要测试某些方法):public class Anmion { protected int aaa; private int bbb; public原创 2016-08-03 12:08:34 · 521 阅读 · 0 评论 -
java开发:file.delete()与file.deleteOnExit()的区别
1.delete()方法: 当调用delete()方法时,直接删除文件,不管该文件是否存在,一经调用立即执行;2.deleteOnExit()方法: 当调用deleteOnExit()方法时,只是相当于对deleteOnExit()作一个声明,当程序运行结束,JVM终止时才真正调用deleteOnExit()方法实现删除操作。即该方法是将删除的命令缓存了一下,到服务停止的转载 2017-02-22 14:31:33 · 14020 阅读 · 0 评论 -
算法:动态规划-硬币找钱问题:最少需要多少硬币来找钱,并且分别是多少硬币
public static void main(String[] args) { /** * 拥有的硬币数额 */ int[] coinValue = new int[] { 25, 21, 10, 5, 1 }; /** * 要破开的数额 */ int mon...原创 2018-07-09 18:15:50 · 1639 阅读 · 0 评论 -
Java NIO与BIO
简介:BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。NIO:同步非阻塞式IO,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。AIO(NIO.2):异步非...转载 2019-04-11 17:59:03 · 270 阅读 · 0 评论 -
java开发:异常你了解多少
一、异常体系1、error/exception异常是 Throwable 这个父类实现的,下面有两大子类,Error与ExceptionError表示错误,exception表示异常Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常...原创 2019-04-12 17:39:14 · 326 阅读 · 0 评论 -
java 设计模式:外观设计模式
1、概念外观设计模式的主要目的在于让外部减少与子系统内部多个模块的交互,从而让外部能够更简单的使用子系统。他负责把客户端的请求转发给子系统内部的各个模块进行处理。2、使用场景当你要为一个复杂子系统提供一个简单接口时 客户程序与抽象类的实现部分之间存在很大的依赖性。引入外观类可以将子系统与客户端解耦,从而提高子系统的独立性和可移植性。 当你需要构建一个层次结构的子系统时;在层次化结...原创 2019-04-26 10:53:32 · 319 阅读 · 0 评论 -
java 设计模式:组合模式
1、概念将对象以树形结构组织起来,以达成“部分-整体”的层次机构,使得客户端对单个对象和组合对象的使用具有一致性。是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。2、使用场景部分、整体场景,如树形菜...原创 2019-04-26 15:40:21 · 336 阅读 · 0 评论 -
java 设计模式:adapter
adapter定义:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。类适配器定义:是把适配的类的api转化成为目标类的api。adapter是为了让adaptee与Target发生关系建立的adapter 实现Target接口,来继承Adaptee,实现需要实现的方法代码://适配接口publi...原创 2019-04-23 17:06:16 · 372 阅读 · 0 评论 -
java开发经验谈:你真的会用单例么?
单例是什么?是一种对象创建模式,可以确保项目中一个类只产生一个实例。好处对于频繁使用的对象可以减少创建对象所花费的时间,这对于重量级对象来说,简直是福音。由于new的减少,对系统内存使用频率也会降低,减少GC的压力,并缩短GC停顿时间,这也会减少Android项目的UI卡顿。如何实现单例1、饿汉模式public class TestSingleton { pri...原创 2019-04-19 14:16:17 · 428 阅读 · 0 评论 -
java 设计模式:builder
概念:建造者模式是较为复杂的创建型模式,将组件和组件的组件过程分开,然后一步一步建造一个复杂的对象。所以建造者模式又叫生成器模式。它允许用户在不知道内部构建细节的情况下,非常精细地控制对象构建流程。该模式是为了将构建过程非常复杂的对象进行拆分,让它与它的部件解耦,提升代码的可读性以及扩展性。使用场景:构造一个对象需要很多参数的时候,并且参数的个数或者类型不固定的时候UML结构图...原创 2019-04-23 16:05:55 · 326 阅读 · 0 评论 -
java 设计模式:装饰者模式
简单详解:1、概念动态地给一个对象添加一些额外的职责。就增加功能来说, 装饰模式相比生成子类更为灵活。该模式以对客户端透明的方式扩展对象的功能。2、使用场景在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。和继承类似添加相应的职责。 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一...原创 2019-04-25 15:58:31 · 301 阅读 · 0 评论 -
俗话说:十赌九输。因为大多数赌局的背后都藏有阴谋。不过也不尽然,有些赌局背后藏有的是:“阳谋”。
【编程题】(满分23分) 俗话说:十赌九输。因为大多数赌局的背后都藏有阴谋。不过也不尽然,有些赌局背后藏有的是:“阳谋”。 有一种赌局是这样的:桌子上放六个匣子,编号是1至6。多位参与者(以下称玩家)可以把任意数量的钱押在某个编号的匣子上。所有玩家都下注后,庄家同时掷出3个骰子(骰子上的数字都是1至6)。输赢规则如下: 1. 若某一个骰子上的数原创 2014-05-13 18:42:03 · 2117 阅读 · 0 评论