java使用dom4j解析xml配置文件实现抽象工厂反射示例
摘要:本文主要介绍了java使用dom4j读取配置文件实现抽象工厂和反射的示例,在Java中也可以同Donet一样,将差异配置在配置文件里面。另外,我们采用下面的方式实现,将会更加便捷 逻辑描述: 现在我们想在B层和D层加上接口层,并使用工厂。而我们可以将创建B和创建D看作是两个系列,然后就可以使用抽象工
阅读全文
posted @
2021-07-06 11:01
Rosepotato
阅读(130)
推荐(0)
java反射 抽象工厂_抽象工厂加反射
摘要:为什么使用抽象工厂+反射: 抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂编程:是完全依靠接口编程,不需要具体的实现类。 抽象工厂与OCP原则 增加新的产品族时,需要增加具体工厂类,符合OCP原则。 增加新产品时,需要修改具体工厂类和增加产品类,不符合OCP原
阅读全文
posted @
2021-07-06 10:56
Rosepotato
阅读(193)
推荐(0)
JAVA中获取项目文件路径
摘要:在java中获得文件的路径在我们做上传文件操作时是不可避免的。web 上运行1:this.getClass().getClassLoader().getResource("/").getPath();this.getClass().getClassLoader().getResource("").g...
阅读全文
posted @
2014-06-04 11:17
Rosepotato
阅读(1912)
推荐(0)
SSH框架总结(框架分析+环境搭建+实例源码下载)
摘要:转自 http://blog.csdn.net/shan9liang/article/details/8803989首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持。Spring一方面作为一个轻量级的IoC容器,负责查找、定位、创建
阅读全文
posted @
2014-03-12 14:49
Rosepotato
阅读(212)
推荐(0)
@interface java注解
摘要:@Documented,@Retention,@Target,@Inherited1. 编写自定义@Todo注解经常我们在写程序时,有时候有些功能在当前的版本中并不提供,或由于某些其它原因,有些方法没有完成,而留待以后完成,我们在javadoc中用@TODO来描述这一行为,下面用java注解来实现。public @interface Todo { } // Todo.java如果你想让这个注解类型能够自省的话,给它加上@Todo注解,写法如下:@Todopublic @interface Todo{ }下面我们给这个注解接受参数的能力,代码如下:@Todo("Just article
阅读全文
posted @
2014-03-03 13:59
Rosepotato
阅读(390)
推荐(0)
Java Ant build.xml详解
摘要:1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处跨平台 --因为ant是使用java实现的,所以它跨平台使用简单--与ant的兄弟make比起来语法清晰--同样是和make相比功能强大--ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。当你自己开发一些ant插件的时候,你会发现它更多的功能。4,ant的兄弟makeant做的很多事情,大部分是曾经有一个叫make的所做的,不过对象不同,make更多应用于c/c++ ,ant更多应用于Java。当然
阅读全文
posted @
2014-03-03 10:00
Rosepotato
阅读(194)
推荐(0)
Java 比较两张图片的相似度
摘要:importjava.awt.image.BufferedImage;importjava.io.File;importjavax.imageio.ImageIO;/***比较两张图片的相似度*@authorGuihua**/publicclassBMPLoader{//改变成二进制码publicstaticString[][]getPX(Stringargs){int[]rgb=newint[3];Filefile=newFile(args);BufferedImagebi=null;try{bi=ImageIO.read(file);}catch(Exceptione){e.printSt
阅读全文
posted @
2014-01-22 17:26
Rosepotato
阅读(1444)
推荐(0)
Java 线程池的原理与实现
摘要:JAVA线程池原理以及几种线程池类型介绍文章分类:Java编程 在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.将需处理的任务的数量大 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。 线程池工作原理:http://www.ibm.com/developerworks/cn/java/j-jtp0730/ 该文章里有个例子,简单的描述了线程池的内部实现,建议根据里面的例子来了解JAVA 线程池的原理。同时,里面还详细描述了使用线程池存在的优点和弊端,大家可以研究...
阅读全文
posted @
2013-11-14 22:37
Rosepotato
阅读(3509)
推荐(0)
Java盲点:双重检查锁定及单例模式
摘要:尊重原创: http://gstarwd.iteye.com/blog/6929372004 年 5 月 01 日所有的编程语言都有一些共用的习语。了解和使用一些习语很有用,程序员们花费宝贵的时间来创建、学习和实现这些习语。问题是,稍后经过证明,一些习 语并不完全如其所声称的那样,或者仅仅是与描述的功能不符。在 Java 编程语言中,双重检查锁定就是这样的一个绝不应该使用的习语。在本文中,Peter Haggar 介绍了双重检查锁定习语的渊源,开发它的原因和它失效的原因。 编辑注 :本文在针对 Java 5.0 修订前参考了 Java 内存模型;关于内存排序的描述也许不再正确。尽管如此,在新的
阅读全文
posted @
2013-11-13 11:11
Rosepotato
阅读(306)
推荐(0)
java 参数传递是引用传递还是值传递?
摘要:JAVA的参数传递倒底是值传递还是引用传递,我觉得两种说法都没错,关键是看怎么理解“引用”和“引用传递”。(一)从编译原理的角度讲,所有那些无法通过形参来修改实参本身的传递机制都是“值传递”,在JAVA中,你只能通过在形参上调用方法来修改实参所引用的那个对象,却修改不了实参本身(不能使它引用到另个对象),如:voidf(ArrayListlist){list=newArrayList();//不影响外边的实参。}所以从这个角度,JAVA中根本就没有“引用传递”(不像C#中,真的有引用传递,只需要加个ref或out关键字,就不仅可以修改实参所引用的对象,还能修改实参本身)。这种说法并非没有道理,
阅读全文
posted @
2013-11-13 08:16
Rosepotato
阅读(282)
推荐(0)
java RuntimeException
摘要:总结了一下JAVA中常见的几种RuntimeException,大约有如下几种:Java代码NullPointerException-空指针引用异常ClassCastException-类型强制转换异常。IllegalArgumentException-传递非法参数异常。ArithmeticException-算术运算异常ArrayStoreException-向数组中存放与声明类型不兼容对象异常IndexOutOfBoundsException-下标越界异常NegativeArraySizeException-创建一个大小为负数的数组错误异常NumberFormatException-数字格
阅读全文
posted @
2013-11-11 13:53
Rosepotato
阅读(388)
推荐(0)
java 死锁及解决
摘要:Java线程死锁如何避免这一悲剧 Java线程死锁需要如何解决,这个问题一直在我们不断的使用中需要只有不断的关键。不幸的是,使用上锁会带来其他问题。让我们来看一些常见问题以及相应的解决方法: Java线程死锁 Java线程死锁是一个经典的多线程问题,因为不同的线程都在等待那些根本不可能被释放的锁,从而导致所有的工作都无法完成。假设有两个线程,分别代表两个饥饿的人,他们必须共享刀叉并轮流吃饭。他们都需要获得两个锁:共享刀和共享叉的锁。 假如线程 “A”获得了刀,而线程“B”获得了叉。线程“A”就会进入阻塞状态来等待获得叉,而线程“B”则阻塞来等待“A”所拥有的刀。这只是人为设计的例子,但尽...
阅读全文
posted @
2013-11-11 08:36
Rosepotato
阅读(420)
推荐(0)
java之内部类与匿名内部类
摘要:Java 内部类 分四种:成员内部类、局部内部类、静态内部类和匿名内部类。 1、成员内部类: 即作为外部类的一个成员存在,与外部类的属性、方法并列。 注意:成员内部类中不能定义静态变量,但可以访问外部类的所有成员。 public class Outer{ private static int i = 1; private int j=10; private int k=20; public static void outer_f1(){ //do more something } public void out_f2(){ //do more something }//成员...
阅读全文
posted @
2013-11-10 10:40
Rosepotato
阅读(294)
推荐(0)
java实现快速排序
摘要:快速排序的基本思想: 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。 先看一下这幅图:把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交换。这样循环往复,一趟排序完成,左边就是比中轴小的,右边就是比中轴大的,然后再用分治法,分别对这两个独立的数组进行排序。
阅读全文
posted @
2013-11-06 15:19
Rosepotato
阅读(186)
推荐(0)
java参数传递时到底是值传递还是引用传递
摘要:java参数传递时到底是值传递还是引用传递(baidu搜集)最近比较长一段时间以来,网上的IT同行里面比较流行“JAVA面试32问”,很多人的BLOG里都引用这些面试题,最近因为工作内容比较枯燥,也来看看这些试题以调节一下口味,其中有一道题让我很费解。原题是:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?用google查询结果,得到答案基本上是:值传递。当时觉得挺纳闷儿,为什么连参数的内容都被修改了,怎么还能说是“值传递”呢?因为在传统的印象里(尤其是从C++过来以后),值传递都应该是不改变原参数的。问问周围的同事,也
阅读全文
posted @
2013-11-04 12:01
Rosepotato
阅读(230)
推荐(0)
JVM加载class文件的原理机制
摘要:1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的, 类装载器所做的工作实质是把类文件从硬盘读取到内存中2.java中的类大致分为三种: 1.系统类 2.扩展类 3.由程序员自定义的类3.类装载方式,有两种 1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中, 2.显式装载, 通过class.forname()等方法,显式加载需要的类 隐式加载与显式加载的区别: 两者本质是一样?, ?4.类加载的动态性体现 一个应用程序总是由n多个类组成,Java程序启动时,并不是一次把所有的...
阅读全文
posted @
2013-11-03 13:27
Rosepotato
阅读(252)
推荐(0)
java中synchronized的用法详解
摘要:记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。 三、尤其关键的是,当一个线程访问object的一个synchronized(this
阅读全文
posted @
2013-11-03 13:02
Rosepotato
阅读(395)
推荐(0)
理解Java对象序列化(二)
摘要:关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。在撰写本文时,既参考了Thinking in Java, Effective Java,JavaWorld,developerWorks中的相关文章和其它网络资料,也加入了自己的实践经验与理解,文、码并茂,希望对大家有所帮助。(2012.02.14最后更新)1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不
阅读全文
posted @
2013-11-03 12:53
Rosepotato
阅读(272)
推荐(0)
java的Serialization 机制
摘要:基本使用方法 Serialization是指把类或者基本的数据类型持久化(persistence)到数据流(Stream)中,包括文件、字节流、网络数据流。 JAVA中实现serialization主要靠两个类:ObjectOuputStream和ObjectInputStream。他们是JAVA IO系统里的OutputStream和InputStream的子类。既然他们是JAVA IO中的流,那么就可以像操作一般的流一样来操作他们。下面是他们使用方法:Java代码importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutput
阅读全文
posted @
2013-11-03 12:52
Rosepotato
阅读(415)
推荐(0)
谈谈Runtime类中的freeMemory,totalMemory,maxMemory等几个方法
摘要:最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(),totalMemory(),maxMemory ()这几个方法的一些问题,很多人感到很疑惑,为什么,在java程序刚刚启动起来的时候freeMemory()这个方法返回的只有一两兆字节,而随着 java程序往前运行,创建了不少的对象,freeMemory()这个方法的返回有时候不但没有减少,反而会增加。这些人对freeMemory()这 个方法的意义应该有一些误解,他们认为这个方法返回的是操作系统的剩余可用内存,其实根本就不是这样的。这三个方法反映的都是java这个进程的内存情 况,跟操作系统的内存根本
阅读全文
posted @
2013-10-25 23:12
Rosepotato
阅读(230)
推荐(0)