J2SE
文章平均质量分 63
yaerfeng
电脑爱好者
展开
-
Java内存管理
你真的了解JAVA里的String么中文与Unicode的转换 Java内存管理特点每一个JAVA初学者都应该搞懂的问题1. String str1 = "abc"; System.out.println(str1 == "abc");转载地址:http://meng-lin.javaeye.com/步骤: 1) 棧中开辟一块空间存放引用str1, 2)原创 2012-01-09 14:50:00 · 1374 阅读 · 0 评论 -
装箱和拆箱和ValueOf以及XXXValue -- Java语法糖(Syntax sugar)
自动装箱拆箱发生在基本类型和其包装型互操作的时候。以前一直不知的拆箱和装箱是valueOf和xxValue的别名。是语法糖的一种 Java代码 public static void main(String[] args) { Integer i = 10; Integer j = 10; System.o转载 2012-01-05 12:33:06 · 2250 阅读 · 0 评论 -
关于配置的那一点点事。
如果你一直在做架构。你设计的框架一定是可配置的,包括那些数据库的配置,当然,还有其它。一个灵活的程序肯定会有各种各样的配置,具体使用情况也各不相同。本文讲解的是纯java配置文件的加载,没有使用任何ssh之类的东东。毕竟框架这样的东东学不长的,基础打好,对人生日后的发展都有好处。最常见的可能有SQL,XML,Property文件以及Java常量类。对于一些常用的变量,使用Java常量类原创 2011-12-25 11:03:48 · 5041 阅读 · 5 评论 -
关于DBCP及使用。纯JDBC架构。
DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中原创 2011-12-16 10:26:33 · 6057 阅读 · 2 评论 -
java获取当前工作目录
print(Thread.currentThread().getContextClassLoader().getResource("")); print(CurrentDirectory.class.getClassLoader().getResource("")); print(ClassLoader.getSystemResource(""));转载 2011-11-14 14:55:56 · 1539 阅读 · 0 评论 -
System.getProperties大全
public static void main(String[] args) { System.out.println("Java运行时环境版本:\n"+System.getProperty("java.version")); System.out.println("Java 运行时环境供应商:\n"+System.getPropert转载 2011-11-28 09:47:20 · 1150 阅读 · 0 评论 -
MD5加密算法使用
很多时候我们会用到一些加密算法。比如数据库中如果直接存放用户密码万一被人破解怎么办?比如说你写的一个转账的方法被人知道这些参数?如何防止这种情况发生,最好的方法就是有一种规则,把用户密码加密后放入数据库,登录时我们再加密和数据库中的密码比较,而不是你知道数据库中的密码就可以登录了。然后你转账的方法别人知道,也知道你的这些参数,别人也不一定可以调用。如果你在传参时,使用MD5校验。那些比不使用可就安原创 2011-11-30 10:49:01 · 1477 阅读 · 0 评论 -
java中equals和==的区别
java中equals和==的区别 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。==比较的是2个对象的地址,而eq原创 2012-01-09 14:57:51 · 1041 阅读 · 0 评论 -
Java内存分配原理精讲
◆寄存器:我们在程序中无法控制◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中◆堆:存放用new产生的数据◆静态域:存放在对象中用static定义的静态成员◆常量池:存放常量◆非RAM存储:硬盘等永久存储空间Java内存分配中的栈在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量转载 2012-01-09 14:51:20 · 848 阅读 · 0 评论 -
java运行速度慢的原因
1)java是解释性语言,java程序在运行时类加载器从类路经中加载相关的类,然后java虚拟机读取该类文件的字节,执行相应操作.而C++编译的时候将程序编译成本地机器码.一般来说java程序执行速度要比C++慢10-30倍.即使采用just-in-time compiling (读取类文件字节后,编译成本地机器码)技术,速度也要比C++慢好多. 2)java程序有要从网络上加载类转载 2012-01-04 21:52:21 · 8221 阅读 · 0 评论 -
java高级编程-使用反射强制给private字段赋值
今天项目中遇到了一个问题,要调用一个类,并获取这个类的属性进行赋值然后将这个类传递到方法中做为参数。实际操作时才发现,这个类中的字段属性是私有的,不能进行赋值!没有提供公有的方法。而这个类又是打包成jar给我的,我还不能更改它的代码,以至于想手动给它写个set方法都是问题。后来想到用反射可以解决这个问题,于是试了一下,果然!反射看来根本不区分是否是private的,调用本身的私有方法是原创 2011-12-26 16:22:41 · 27021 阅读 · 8 评论 -
Java多线程并发访问解决方案
Java多线程并发访问解决方案synchronized关键字主要解决多线程共享数据同步问题。 ThreadLocal使用场合主要解决多线程中数据因并发产生不一致问题。ThreadLocal和Synchonized都用于解决多线程并发访问。但是ThreadLocal与synchronized有本质的区别: synchronized是利用锁的机制,使变量或代码块在某一原创 2012-01-31 16:34:38 · 9775 阅读 · 0 评论 -
java 插入表记录后得到自增的id (转) (附3种方法代码)
原文http://www.sthelse.com/2010/07/java-to-insert-in-the-main-table-record-id-from-the-table-for-the-main-table-as-a-foreign-key.html#comment-2264在MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作为其他表的外转载 2012-02-03 13:01:59 · 29907 阅读 · 4 评论 -
权限控制:spring 3.0 security配置例子
以最新版的spring-security-3.0.2作为介绍对象,如果你了解Spring 2.0 Security的话,那就比较抱歉了,因为spring-security-3.0.2与2.0相比改动很大,在2.0中的一些配置拿到3.0几乎是行不通的,如果你还没有接触过spring,那么以下是其地址:Spring官方网址:http://www.springsource.org/spring-转载 2012-02-02 23:52:49 · 1846 阅读 · 0 评论 -
JAVA正则表达式 Pattern和Matcher
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。 它包括两个类:Pattern和Matcher 。Pattern: 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher: 一个Matcher对象是一个状态机器,它依转载 2012-02-08 17:21:10 · 1177 阅读 · 0 评论 -
JAVA线程安全之synchronized关键字的正确用法
JAVA线程安全关于synchronized关键字的用法,今天才知道原来我一直错了。以为用了synchronized关键字包住了代码就可以线程同步安全了。测试了下。发现是完全的错了。synchronized必须正确的使用才是真正的线程安全。。。虽然知道这种写法,一直以为却由于懒而用了错误的方法。看来基础还没有打好。仍需复习加强!工作中犯这种错误是不可原谅的,要知道使用synchronize原创 2012-02-13 14:14:25 · 29731 阅读 · 23 评论 -
Apache Log4j 笔记
良好的编码,良好的架构。如何写一个调试良好的日志记录,毫无疑问,log4j,slf4j,,logback都是必选之一了。日志记录器(Logger)的行为是分等级的。如下表所示:分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。一般来说,原创 2012-02-20 14:22:18 · 9012 阅读 · 7 评论 -
如何让Java程序只运行一个实例
Java没有提供这样的机制。从操作系统的观点来看,一个启动的Java Application仅仅是一个JVM的运行实例。运行相同Application的两个实例,仅仅是运行两个无关的JVM。只有让多个运行实例之间有一个既定的通讯机制就可以保证只有一个实例运行。方案1:使用Java的加锁文件机制,idea相当简单,让运行实例通过java.nio.channels.FileLock获得转载 2012-02-16 15:20:04 · 9256 阅读 · 1 评论 -
JAVA动态代理
package vo;public class User { private int id; private String username; private String password; public User(){ System.out.println("user对象创建成功"); } public int getId() { return id; }原创 2011-12-15 10:09:38 · 1010 阅读 · 0 评论 -
java编程中'为了性能'一些尽量做到的地方
原文:http://javatgo.iteye.com/blog/1155702最近的机器内存又爆满了,出了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。下面是参考网络资源和总结一些在java编程中尽可能做到的一些地方-1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加转载 2012-02-16 12:15:15 · 1071 阅读 · 1 评论 -
显示的静态初始化和非静态实例初始化
看了think in java,有一章提到了静态以及一篇非静态的初始化。心血来潮过一遍。静态初始化,大家都熟悉。比如这样一个例子。package com.tudou.t1;public class StaticTest { public static void main(String[] args) { System.out.println("main"); Cups原创 2012-02-24 00:15:05 · 2423 阅读 · 0 评论 -
位运算
位运算应用口诀 清零取反要用与,某位置一可用或 若要取反和交换,轻轻松松用异或 移位运算 要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 " 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。 4 ">>>"运算符,右边的位被挤掉,对于左边移出的空位一概补上0。 位转载 2012-02-17 13:41:19 · 2176 阅读 · 0 评论 -
junit4新特性-测试必备利器
Junit4更新的版本很多,现在已经更新到4.10了。发生的变化也相当的明显,为了更好的使用测试,有必要去学习一下其新的功能。总的来说,其变化还是比较多的。于是整合,收集了一些网友的文章。综合起来看还是算比较完整了,更多的只有自己去探讨了,不过常用的已经够用。junit4给我的印像:1,你的方法不必以test开头命名,你可以在你喜欢的任何地方进行测试,前提是你有@Test在这个方法原创 2012-02-22 10:49:38 · 4764 阅读 · 0 评论 -
think in java之构造器的真正调用顺序
构造器是OOP的重要组成部分,很多人认为它很容易。只不过是new了一个对象而已。而think in java的作者却告诉我们,其实这并不容易。先看下面这个例子。在你没看结果之前,你觉得你的答案是对的么。package com.tudou.t1;class Meal { Meal() { System.out.println("meal"); }}class Bread {原创 2012-02-26 13:24:47 · 3996 阅读 · 2 评论 -
获取JAVA[WEB]项目相关路径的几种方法
在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。另:在Jsp,Servlet,Java中详细获得路径的方法!1.jsp中取得路径: 以工程名为TEST为例: (1)得到原创 2012-02-27 11:08:13 · 121660 阅读 · 6 评论 -
Java:使用内部类实现类的多重继承
Java不支持类的多重继承,但可以使用内部类来继承实现更多的类。下面的例子,目标类需要继承两个抽象类(A和B)。目标类C本身继承类A,并使用一个匿名内部类继承另一个类B。MultiImplementation.javaabstract class A { abstract void methodA();}abstract class B { abstract void me原创 2012-03-06 22:42:12 · 1503 阅读 · 0 评论 -
Java中的闭包与回调
闭包是可以包含自由(未绑定)变量的代码块;这些变量不是在这个代码块或者任何全局上下文中定义的,而是在定义代码块的环境中定义。“闭包”一词来源于以下两者的结合:要执行的代码块(由于自由变量的存在,相关变量引用没有释放)和为自由变量提供绑定的计算环境(作用域)。在 Scheme、Common Lisp、Smalltalk、Groovy、JavaScript、Ruby 和 Python 等语言中都能找到转载 2012-03-06 22:51:35 · 13232 阅读 · 0 评论 -
JAVA中String.format的用法
JDK1.5中,String类新增了一个很有用的静态方法String.format():format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。1.对整数进行原创 2012-03-07 11:30:28 · 31409 阅读 · 3 评论 -
JAVA复制对象给另一个对象
今天算是遇到一个问题了。相当苦恼。需求如下:有2个相同id的对象,但它们的值不同。其中一个对象要用到另一个对象的属性值。由于在hibernate的sessionFactory().getSession中不能存在2个相同id的对象。故此,想出复制对象。找了很多地方,发现有2种方法可以达到复制对象的目的,只是最后这种方法还是没有解决我的问题。仅此记下来吧。1,克隆clonejava原创 2012-03-23 16:46:29 · 29615 阅读 · 1 评论 -
Java集合排序及java集合类详解:集合框架中常用类比较
package com.tudou.Collection;/** * List:ArrayList LinkedList 元素可以重复 * ArrayList:长于随机访问[插入和删除代价高] LinkedList长于插入和删除[随机访问慢] 可向上转型为Queue队列 * * Set:HashSet TreeSet LinkedHashSet 元素不能重复 * HashSet无序[原创 2012-03-01 16:26:17 · 4176 阅读 · 0 评论 -
Java中的transient,volatile和strictfp关键字
如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如: Java代码 class T { transient int a; //不需要维持 int b; //需要维持 } [java] view plaincopy"font-size: small;">class T {转载 2012-03-19 10:00:13 · 1044 阅读 · 0 评论 -
保留几位小数或者4舍5入的方法
java.text.DecimalFormat myformat=new java.text.DecimalFormat("#0.00"); //然后就用: myformat.format(a); //如: double a; a= 3.1415926; System.out.println(myformat.form原创 2011-11-11 15:00:40 · 3454 阅读 · 0 评论 -
Java Map遍历速度最优解
HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的第一种:Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry)转载 2012-05-30 11:08:51 · 1772 阅读 · 0 评论 -
Java中的位运算
//Java中的位运算/*计算机由复杂电子元器件构成,一个电子元器件有带电和不带电的两种状态,1和0多个这样的元器件的组合可以表示更多状态,也就是可以表示更多的数据,一个元器件可以表示一位(bit)数据,这种表示数据的方式称为2进制在实际的电子设备中,将8个元器件组合在一起,形成一个单元,这样的单元叫做一个字节(byte)一个字节能表示2^8=256个数,即0-2552个字转载 2012-05-23 16:23:11 · 1138 阅读 · 0 评论 -
如何在TOMCAT下指定JDK的路径
1,修改bin文件夹下面的catalina.bat文件,把如下内容 rem ----- Execute The Requested Command ---------------------------------------echo Using CATALINA_BASE: %CATALINA_BASE% echo Using CATALINA_HOME: %CATA转载 2012-05-25 10:53:08 · 1440 阅读 · 0 评论 -
理解java中的ThreadLocal
最近看了Spring和Hibernate的源码,发现大量使用了ThreadLocal,于是上网学习了一些关于ThreadLocal的文章,将自己的学习小结贴上来,大家一起进步! 1.ThreadLocal用来解决多线程程序的并发问题2.ThreadLocal并不是一个Thread,而是Thread的局部变量,当使用ThreadLocal维护变量时,Thr转载 2012-07-15 09:37:12 · 7659 阅读 · 2 评论 -
java 的double-check locking
《Java与模式》在讲Lazy Singleton时,提到在c++单例中广泛使用的double-checl locking,在java中确实无效的: “在Java编译器中,LazySingleton类的初始化与m_instance变量赋值的顺序不可预料。如果一个线程在没有同步化的条件下读取m_instance引用,并调用这个对象的方法的话,可能会发现对象的初始化过程尚未完成,从而造成崩溃转载 2012-07-19 12:09:10 · 2300 阅读 · 0 评论 -
flexPaper制作在线文库阅读器思路
哥在一个制造业上班,图纸管理是老大难。从去年年底开始,就一直在琢磨着FLASHPAPER如何从服务端打印。看到网上许多哥们有同样经历,斗胆拿出来分享经验。 整体思路:一) 客户端上传上来文件。二) 服务端调用flashpaper实际上进程有:cmd.exe|admimistrator 文件默认打开程序|network service flashprinter.转载 2012-07-29 10:14:08 · 1630 阅读 · 0 评论 -
使用java.beans.XMLEncoder类把bean转换成XML文件
我们可以使用java.beans.XMLEncoder类很方便地把bean转换成XML文件,下面例子比较简单,大家看看就知道怎样用。package ajava.code.javase;import java.beans.XMLEncoder;import java.io.BufferedOutputStream;import java.io.FileOutputStream;im转载 2012-11-04 21:23:04 · 3048 阅读 · 0 评论 -
JDBC批量更新。
数据量大时处理。// 生成自测成绩 lizhuang 2012年8月6日 @SuppressWarnings("unchecked") public String makeTestScore() { dbpool pool = new dbpool(); Connection conn = pool.getConn(); Statement ps = null; try {原创 2012-11-12 17:31:57 · 11021 阅读 · 0 评论