java
liushuai_ly
这个作者很懒,什么都没留下…
展开
-
Java分布式处理技术(RMI、JNDI)
Java分布式处理技术 1.1 RMI的基本概念 1.1.1 什么是RMI RMI(Remote Method Invocation)远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样。 1.1.2 RMI的用途 1、转载 2013-03-04 18:22:40 · 8538 阅读 · 0 评论 -
对java io操作的再理解
以前对于io操作,总是马马虎虎,弄的不是很清楚,总结下: InputStream --> 字节流 byte数组 byte[]bytes = new byte[1024] read方法 Reader ---> 字符流 char数组 char[] c = new byte[1024] read方法 ,如果是原创 2012-12-09 22:45:01 · 576 阅读 · 0 评论 -
java中是否存在内存泄露--比较好的回答
会。java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。 1.集合类,集合类仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。这一点其实也不明确,这个集合类如果仅仅是局部变量,根本不会造成内存泄露,在方法栈退出后就没转载 2013-02-28 15:57:24 · 1485 阅读 · 0 评论 -
dom4j
DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。 DOM4J使用起来非常简单。只要你了解基本的XML-DOM模型,就能使用。然而他自己带的指南只有短短一页(html),不过说的到挺全。国内的中转载 2013-03-15 10:52:36 · 1149 阅读 · 0 评论 -
理解ThreadLocal
理解: 每个线程有一个ThreadLocalMap对象,这是一个Map结构的对象。 在同一个线程中可以构造多个ThreadLocal对象。它的set(T value)方法其实是以ThreadLocal对象为键key,参数对象value为值value,放入ThreadLocalMap里面。get(),也是以ThreadLocal对象为键key,从map里取 ------------转载 2013-03-15 14:22:17 · 889 阅读 · 0 评论 -
\r \n的区别
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来。 在控制台中打印(不要在IDE中)System.out.println("abc\r1") --->1bc,\r 光标回到行首了,然后1把a取代了。 通常我们要达到 回车换行的效果,strBuilder.append(line).append("\r\n"); \r\n 都原创 2013-05-14 11:17:57 · 560 阅读 · 0 评论 -
java中关键字volatile的作用
Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。这就是说线程能够自动发现 volatile 变量的最新值。 ========转载 2013-05-28 20:43:47 · 534 阅读 · 0 评论 -
java.util.Timer
在应用开发中,经常需要一些周期性的操作,此时需要用到java.util.Timer。 Timer是JDK中的定时调度类,主要用来定时触发任务: Timer是调度控制器,TimerTask是可调度的任务: public static void main(String[] args) { Timer timer = new Timer(); /转载 2013-05-29 20:50:30 · 722 阅读 · 0 评论 -
replaceAll("&","&")方法不起作用
项目中写的一段代码,发现 line.replaceAll("&", "&").replaceAll("", ""); 不起作用,明明line已经每一行都读取到了,但是执行完方法之后,line的值并没有改变。 后来发现replaceAll()方法返回一个新的字符串,原来的字符串并未改变,所以写成line = line.replaceAll("&","&")就可以了。原创 2013-06-20 13:47:50 · 2017 阅读 · 0 评论 -
Java编程中“为了性能”要做的几点
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。 下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。 1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以转载 2013-07-22 10:11:05 · 555 阅读 · 0 评论 -
volatile关键字
关于volatile 我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内转载 2013-09-23 10:23:38 · 600 阅读 · 0 评论 -
java内省
内省 内省是 Java 语言对 Bean 类属性、事件的一种缺省处理方法。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问name 属性,这就是默认的规则。 Java 中提供了一套 API 用来访问某个属性的 getter/setter 方法,通过这些 API 可以使你不需要了解这个规则(转载 2013-10-09 16:52:21 · 644 阅读 · 0 评论 -
String是否相等的几种情况
String相关操作: String s1 = “1”; String s2 = “1”; 此时s1,s2是同一个对象(s1 == s2 为true)。String是final的,”1”生成之后是不会在改变的,s1,s2都是”1”的引用。 String s1 = new String(“1”); String s2 = new String(“2”); 此时s1,s2不是同一个对象原创 2013-11-23 15:16:55 · 2095 阅读 · 0 评论 -
java三目运算符问题
面试的时候 喜欢挖掘关于基础的东东,平时不太注意的需要记录下来。 int x = 1; System.out.println((x>1)? 1.1: 1); 打印的结果是1.0。 在三目运算符中,冒号两边的数据类型要保持一致。原创 2012-12-09 22:14:34 · 568 阅读 · 0 评论 -
java线程安全
为一个Java web开发人员,很少也不需要去处理线程,因为服务器已经帮我们处理好了。记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT、Socket、多线程、I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远了。上次在百度开发者大会上看到一个提示语,自己写的代码,6个月不看也是别人的代码,自己学的知识也同样如此,学完的知识如果不转载 2012-12-09 22:09:32 · 910 阅读 · 0 评论 -
为什么要重写hashcode() 方法
Java中的集合(Collection)有两类,一类是List,再有一类是Set。 前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 那么我们怎么判断两个元素是否重复呢? 这就是Object.equals方法了。 通常想查找一个集合中是否包含某个对象,就是逐一取出每个元素与要查找的元素进行比较,当发现某个元素与要查找的对象进行equals方法比较的结果相等时,则转载 2012-11-18 22:41:01 · 15356 阅读 · 6 评论 -
一道面试题,对一个数组进行排序,第一个最大,第二个最小,第三个次大,一次类推
package test; import java.util.Arrays; public class TestSort { static int[] a = { 12, 24, 32, 28, 25, 60, 48, 9, 15 }; public static void main(String[] args) { for (int i = 0; i System.o转载 2012-03-27 01:31:57 · 4756 阅读 · 0 评论 -
Date格式与String格式的相互转换
首先,说明一下 java.sql.Date与java.util.Date的区别: java.util.Date就是在除了SQL语句的情况下面使用 java.sql.Date,是 java.util.Date的子类,是针对SQL语句使用的,它只包含日期而没有时间部分 它都有getTime方法返回毫秒数,自然就可以直接构建。 java.util.Date原创 2012-07-09 22:58:50 · 619 阅读 · 0 评论 -
JavaSE再学习笔记(1)
1.path: windows系统执行命令时,要搜寻的路径。 2.classpath:一个class寻找另外一个class。因为大项目 ,有很多class文件。classpath就是去哪找其他的class。 3.内存有4块,heap,statck,code segment(类的代码存放的地方) ,data segment(静态变量,字符串常量等)。heap堆,stack栈。 new出来的东西在原创 2012-08-18 00:16:28 · 439 阅读 · 0 评论 -
JavaSE再学习笔记(2)
1.定义成员变量的时候,可以对他初始化,也可以不初始化,如果不初始化,java会进行一个默认的初始值,所有引用类型,不进行初始化,默认都为null。局部变量,必须要初始化。 2.基本类型在内存中只有一块,引用类型在内存中占两块。 3.方法只有在调用的时候内存才分配空间,对象只有运行期间动态分配内存。 4.方法结束后,方法的局部变量申请的内存空间就全部消失了。栈内存中,如果方法结束后,是立即消原创 2012-08-18 00:19:29 · 443 阅读 · 0 评论 -
JavaSE再学习笔记(3)
1.String s1 = "hello"; String s3 = "hello" ; System.out.println(s1 == s3); //true 注意 s1,s3不是new出来的。 s1 = new String("hello"); s2 = new String("hello"); System.out.println(s1 == s2); //原创 2012-08-18 00:20:48 · 376 阅读 · 0 评论 -
java序列化
对象序列化:通过让类实现java.io.Serializable接口,可以将类序列化。对象序列化也是流应用的一个重要方面。序列化就是把一个对象转换成一串字节,既可以保存起来,也可以传给另外的java程序使用。ObjectOutputStream,ObjectInputStream就是专门用来序列化和反序列化。 最近在阅读Core J2EE Patterns 的时候发现例子里用于在转载 2012-08-26 22:35:08 · 486 阅读 · 0 评论 -
java反射机制
反射基本概念: 在java运行时环境中,对于任意一个类,能够动态的获取类的信息,动态调用类的方法。 在运行期间:判断,构造,调用任意一个类的成员变量和方法。而在编译期间:我们是用new 创建java的对象。 通过reflection机制,我们可以在运行时取得任何一个已知名称的class的内部信息,包括其修饰符,以及superclass,interfaces,也包括fields和meth转载 2012-08-26 22:54:04 · 514 阅读 · 0 评论 -
hashCode方法的作用
一直以来都想写篇文章来说明下hashCode的作用以及相关的知识,许久没动笔,最近找了点资料,自己整理了一下,于是就诞生了下面的东西! (1)前言,想要明白hashCode的作用,你必须要先知道Java中的集合。 Java中的集合(Collection)有两类,一类是List,再有一类是Set。 前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 那么我们怎转载 2012-10-29 23:30:14 · 451 阅读 · 0 评论 -
java中获得系统当前时间
java中获得系统当前时间: //大致的思路:获取当前毫秒数,换成日期,转换自己需要的格式。 Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(new Date().getTime()); //new一个Date,返回的是自1970年以来的毫秒数 SimpleDateFormat dateForm原创 2012-11-25 23:13:52 · 923 阅读 · 0 评论 -
Java异常
如果一个方法调用了另一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。 运行时异常,在开发调试阶段,尽量去避免这种异常,通过改进程序的设计和编码的方式来修改错误。 受检查(checked)异常表示程序可以处理的异常。如果抛出异常的方法本身并不处理,那么方法的调用者必须去处理改异常,否则调用会出错,连编译也无法通过。 运行时异常是unchecked异常。原创 2012-11-18 22:32:32 · 521 阅读 · 0 评论 -
为什么内部类访问的外部变量需要使用final修饰
因为生命周期的原因。方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。 首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量肯定也就被GC了,然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已原创 2012-11-18 22:57:46 · 13212 阅读 · 3 评论 -
Java中参数传递的问题
Java中参数的传递,一般来说有两种,一种传值,一种传引用。但是这种说法并不准确。 (1)如果是基本数据类型就把值复制一份给临时空间(杯子复制一个给你,你摔碎了,我的杯子还是好的) (2)如果是对象就把其内存地址复制一份,其实就是让被调方法的对象指向形参的引用(气球的绳子给你,我们绑的还是一个气球,你把气球扎破了即使你死了,我的气球也破掉了) Thinking in java中讲,jav原创 2012-11-18 23:34:16 · 505 阅读 · 0 评论 -
浅复制(克隆)与深复制
浅复制(克隆): 复制的对象的所有的变量都含有与原来相同的值,而所有对其他对象的引用,仍然指向原来的对象。也就是说,浅复制只考虑要复制的那个对象,至于他所引用的其他对象,并不复制。 深复制(克隆); 复制的对象的所有的变量都含有与原来相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制要把复制对象所引用的对象也原创 2012-11-18 22:03:20 · 317 阅读 · 0 评论 -
StringBuffer 和 String Builder的区别
StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是 StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因 此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程 不安全的。 StringBuffer 始于 JDK 1.0 StringBuilder 始于 JDK 1.5 从 J转载 2013-05-14 11:09:33 · 7391 阅读 · 0 评论