Java
文章平均质量分 54
Jeffrey-Gao
这个作者很懒,什么都没留下…
展开
-
Eclipse及其项目中的JRE设置
在Eclipse的每个项目中可以为项目指定不同的JRE版本,比如A项目使用JDK1.4编译,B项目使用JDK1.5编译。这个JDK版本和Eclipse本身运行的JRE没有直接关系。那么如何指定Eclipse启动所用的JRE呢?Eclipse的JVM启动的时候找JRE的顺序是:l 如果eclipse.ini中配置了-vm参数,则使用这个参数指定的JRE;l 否则就去查看eclip转载 2014-08-21 13:16:41 · 3094 阅读 · 1 评论 -
Log4j高级配置
首先我们要使用log4j日志文件时,我们需将两个必须的包放入lib目录下:log4j.XX.jar和commons-logging.XX.jar;然后在classpath目录下(IDE中即为项目下的src目录下)新建一个日志文件,统一命名为:log4j.properties;1.需求一:存储数据库a. 首先在数据库中建一个用来存储日志的数据库命名为operate_log;字段如下:转载 2015-02-11 12:02:03 · 1223 阅读 · 0 评论 -
结构型模式-组合
结构图模式说明无类级扩展点。扩展方法在抽象接口Component中。Component提供Composite和Leaf的抽象接口声明和共有方法。Leaf是Component的特殊形式,Composite是Component的一般树状结构描述。客户端需要知道具体使用哪个Component具体实现类。将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象的使原创 2015-02-15 10:29:43 · 474 阅读 · 0 评论 -
浅析SLF4j使用
SLF4j是一层简单日志包装层,它底层可以嫁接到log4j, jdk等常用日志框架上。它的简单用法:import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class Wombat { final Logger logger = LoggerFactory.getLogger(Wombat.class);原创 2015-03-02 09:51:58 · 613 阅读 · 0 评论 -
关于Java classloader的加载机制
从上图可以看出虚拟机中的Classloader的层次结构, 由最外层的Classloader去load全限定名指定的class,外层Classloader首先委托给该classloader的父classloader加载,父classloader再委托祖父classloader,直至到root classloader,然后从root classloader一级开始逐步向下一级查找class,找到转载 2015-03-11 17:36:27 · 479 阅读 · 0 评论 -
Java类初始化代码中的异常Exception控制策略
使用Class.forName(paramClassName)方法时要注意了,如果被初始化的类paramClassName在类的静态初始化代码中有异常抛出,且未被捕捉,那么该方法执行到此将suspend。public class Foo { static { init(); } static void init() { throw new Runtim原创 2014-12-12 10:38:36 · 2129 阅读 · 0 评论 -
Java使用ProcessBuilder创建子进程出现错误:CreateProcess error=87
Exception occurred executing command line. Cannot run program... CreateProcess error=87, The parameter is incorrect网上说的错误原因是CLASSPATH过长,但我测试发现,还有一种原因根据ProcessBuilder的构造器,/**Constructs a原创 2015-03-31 11:36:44 · 3437 阅读 · 0 评论 -
Java年谱
VERSION CODE NAME RELEASE DATE------------------------------------------------ Java Birthday ------ 1995.05.23 JDK 1.0 ------ 1996.01.23 JDK 1.1转载 2015-04-24 15:30:25 · 578 阅读 · 0 评论 -
java.lang.management.ManagementFactory的JAVA属性
通过工厂类java.lang.management.ManagementFactory,可以获得JAVA平台的相关属性。例如:ManagementFactory.getRuntimeMXBean(),返回一个RuntimeMXBean接口,该接口可以得到关于该JVM启动时的系统参数,JVM版本号,输入参数,类路径等信息ManagementFactory.getThreadMXBean(),返回一原创 2015-08-10 16:51:06 · 2124 阅读 · 0 评论 -
BeanUtils和PropertyUtils的区别
BeanUtils中的describe方法,把一个对象生成Map结构,其中:key是对象的属性名,value是属性取值对象所得到的字符串,不能进行深层复制PropertyUtils中的describe方法,把一个对象生成Map结构,其中:key是对象的属性名,value仍然是属性的原始取值,不做字符串转换。换句话说,它是可以进行深层对象复制转换的。原创 2016-08-16 16:14:59 · 1664 阅读 · 0 评论 -
创建型模式-建造者
结构图模式说明扩展点在Builder接口的具体实现类,如果有一个新的实现类ConcreteBuilder3,则只需要添加该实现类,其他部分不用修改。 客户端需要知道使用哪个具体的Builder实现类。 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。客户端public static void main(String[] args) {Director...原创 2019-03-23 17:27:16 · 154 阅读 · 0 评论 -
Log4j高级配置
首先我们要使用log4j日志文件时,我们需将两个必须的包放入lib目录下:log4j.XX.jar和commons-logging.XX.jar;然后在classpath目录下(IDE中即为项目下的src目录下)新建一个日志文件,统一命名为:log4j.properties;1.需求一:存储数据库a.首先在数据库中建一个用来存储日志的数据库命名为operate_log;字段如下:...转载 2019-03-23 17:29:28 · 251 阅读 · 0 评论 -
结构型模式-装饰
结构图模式说明扩展点在具体的ConcreteDecorator,若增加一个新的Decorator类,无需改动整个结构。客户端需要知道具体哪个Component实现类,以及每一个Decorator的实现类。客户端可以定制Decorator的执行顺序。动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更加灵活。客户端public static void原创 2015-01-21 10:21:48 · 487 阅读 · 0 评论 -
结构型模式-适配器
结构图模式说明扩展点在Adaptee类,Adaptee可以被其他类替换。客户端需要知道哪个具体的Adapter负责将Adaptee转换成需要的Target接口。客户端不关心具体哪个Adaptee被适配和转换的。将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。客户端public static void main原创 2015-01-19 11:06:05 · 442 阅读 · 0 评论 -
JAVA常用编解码方法
JAVA常用编解码方法(含SUN公司在JDK中提供的方法):1. BASE64编码:sun.misc.BASE64Encoder.encode(byte[])2. BASE64解码:sun.misc.BASE64Decoder.decode(String)3. UCEncoder编码:sun.misc.UCEncoder.encode(byte[])4. UCDecoder解码:s原创 2014-10-10 13:07:18 · 1836 阅读 · 0 评论 -
关于Log4j输出代码位置的说明
使用Log4j输出日志时,如果加上参数%l,表示可能打印出该输出语句所在的类的方法和位置。但有个限制条件:你不能把Logger对象的info,warn,error等方法封装在父类中,否则这个位置永远会指向父类调用的方法处,也就是说,这个位置是跟着info,warn,error等输出方法走的。原创 2014-10-17 11:51:51 · 1344 阅读 · 0 评论 -
spring事务特性分析
spring事务特性spring所有的事务管理策略类都继承自org.springframework.transaction.PlatformTransactionManager接口public interface PlatformTransactionManager { TransactionStatus getTransaction(TransactionDefini转载 2014-11-20 18:11:24 · 2638 阅读 · 0 评论 -
Tomcat 7.0.3x 启动时遇到StackOverflowError导致失败的解决办法
Tomcat 7.0.3x 启动慢并且遇到StackOverflowError的异常的解决办法之前使用tomcat7时遇到启动报错问题,日志如下:Nov 07, 2014 9:52:10 AM org.apache.catalina.core.AprLifecycleListener initINFO: The APR based Apache Tomcat Native librar转载 2014-11-07 11:14:35 · 9087 阅读 · 1 评论 -
创建型模式-工厂方法
工厂方法模式结构图 模式说明1. 扩展点是ConcreteProduct,如果有一个新的Product实现类ConcreteProduct,则需要创建一个新的工厂类ConcreteCreator。这是为了满足开放封闭原则。2. 每一个Creator只负责一种类型的Product。3. 客户端需要知道使用哪个具体的ConcreteCreator。4. 客户端不关心使用哪个原创 2015-01-06 13:54:43 · 567 阅读 · 0 评论 -
使用Java类定义逻辑方法的原则
对于一个类,究竟要使用静态方法,还是使用一般的实例方法来定义逻辑,并没有一个绝对的标准,关键要看这个类的使用场景。如果这个类需要被反复频繁的使用,那么应该尽量定义静态方法,通过无状态的类引用,从而减少对象在内存堆中的频繁构建和销毁过程。class TransformParameterSetup { private static final String PARAMSETUP_URL原创 2014-12-18 17:16:13 · 936 阅读 · 0 评论 -
为何JAVA从File中读取数据不会阻塞,而从Socket中读取数据会阻塞
为何JAVA语言中,从File中读取数据不会阻塞,而从Socket中读取数据会阻塞?这是因为,任何一个文件,当你从磁盘中读取的那一刻,它的大小一定是已知的,这样,你从开始读的时候,何时到文件结尾,也就是说文件指针已经到了文件最大字节数的位置,自然就不可能再读到任何数据了,所以就退出不阻塞。但是当你从Socket中读取的时候,因为你不知道何时Socket中不会输出数据,除非Socket主动被原创 2014-12-19 12:08:39 · 2168 阅读 · 1 评论 -
结构型模式-桥接
结构图模式说明扩展点在两条线,一条是Abstraction的实现类;另一条是Implementor的实现类。Abstraction通过持有一个implementor对象的引用,在Abstraction和Implementor之间建立一个bridge,因此可以让系统在两个维度上独立发展。客户端可以选择使用哪个具体的Abstraction。客户端可以选择使用哪个具体的Impleme原创 2015-01-28 17:02:43 · 413 阅读 · 0 评论 -
Java 中与时间有关的几个问题
Java 中与时间有关的几个问题 1. Date# 需要说明的是 Date 无时区,# 但date.toString() 则是按当前 JVM 的默认时区来格式化的,也就是 TimeZone.getDefault() 获得的时区,# 同时 date.toString() 是按照 "EEE MMM dd HH:mm:ss zzz yyyy" 来格式化的;2. D转载 2014-12-09 17:04:28 · 512 阅读 · 0 评论 -
面向对象的设计模式-2
设计模式类别创建型模式、结构型模式、行为型模式 创建型模式工厂方法模式、单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式 创建型模式隐藏了这些类的实例是如何被创建和放在一起,整个系统关于这些对象所知道的是由抽象类所定义的接口。这样,创建型模式在创建了什么、谁创建它、它是怎么被创建的,以及何时创建这些方面提供了很大的灵活性。 结构型模式外观模式、适配器模原创 2014-12-30 17:05:59 · 489 阅读 · 0 评论 -
Java使用ProcessBuilder创建子进程出现错误:CreateProcess error=87
Exception occurred executing command line. Cannot run program... CreateProcess error=87, The parameter is incorrect网上说的错误原因是CLASSPATH过长,但我测试发现,还有一种原因根据ProcessBuilder的构造器,/**Constructs ...原创 2019-03-23 17:30:03 · 825 阅读 · 0 评论