
java
文章平均质量分 71
shijinupc
这个作者很懒,什么都没留下…
展开
-
Java与编码问题串讲之二--如何理解java采用Unicode编码
Java开发者必须牢记:在Java中字符仅以一种形式存在,那就是Unicode(不选择任何特定的编码,直接使用他们在字符集中的编号,这是统一的唯一方法)。由于java采用unicode编码,char 在java中占2个字节。2个字节(16位)来表示一个字符。 这里的Java中是指在JVM中、在内存中、在代码里声明的每一个char、String类型的变量中。例如:System.ou原创 2012-06-20 15:34:02 · 9527 阅读 · 2 评论 -
DOM、JDOM、DOM4J解析XML实例
一、DOM方式原始name.xml 李华 14 张三 16 王娟 18 数据模型Student.javapackage com.upcgrid.dom;public class Student { private String name; private String sex; pri原创 2012-06-12 20:31:35 · 1552 阅读 · 0 评论 -
java字节流与字符流的区别&编码&缓冲
部分摘自http://blog.youkuaiyun.com/cynhafa/article/details/6882061 所有的文件在存储和传输时都是以字节(byte)为单位进行的,包括图片等都是按字节的方式存储的,而字符只有在内存中才会形成,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列。所原创 2012-05-22 10:52:40 · 3718 阅读 · 0 评论 -
远程方法调用(Remote Method Invocation,RMI)
背景 远程方法调用(Remote Method Invocation,RMI)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不原创 2012-03-15 22:20:28 · 5763 阅读 · 0 评论 -
BufferedInputStream类中的mark(int readlimit)方法释疑
先看官方API文档markpublic void mark(int readlimit)See the general contract of the mark method of InputStream.Overrides: mark in classFilterInputStreamParameters: readlimit - the maximum limit原创 2012-01-09 15:52:38 · 3926 阅读 · 1 评论 -
JDBC相关
1 whatSUN公司提供的一组API,由类和接口组成,用于操作不同的数据库2 whenJava操作数据库时需要在Java和数据库之间建立连接,JDBC是桥梁3 whyJava使用JDBC来操作数据库4 how4.1.加载驱动(Load the driver)什么是驱动各个数据库厂商针对SUN公司的接口提供的实现类,并将这些类打包成jar文件放在网上共Java程原创 2012-04-09 20:06:51 · 1557 阅读 · 0 评论 -
远程过程调用协议(Remote Procedure Call Protocol,RPC)
基本简介 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 目前转载 2012-03-16 21:58:27 · 3217 阅读 · 0 评论 -
JAVA NIO
1. 基本概念 IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。(c 的 printf scanf,java 的面向对象封装 ) 2. Java 标准io 回顾 Java 标准IO类转载 2012-03-15 15:01:31 · 828 阅读 · 0 评论 -
java反射机制
java程序的执行过程ClassLoader讲编译好的class文件load到内存中的codeSegment代码段;运行环境找到main方法开始执行;运行过程中会有更多的class被load到内存ClassLoaderClassLoader是类装载器,用于将class装载进内存URL getResource(String name);用于获取资源URL,寻找资源不依赖于相对路径,不原创 2012-03-14 16:30:25 · 2002 阅读 · 1 评论 -
java enum 枚举类型
1. 关于 Java Enum: Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。把这些属性常量放在枚举类型里不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals 。2. 如何使用 Java Enum 简单的用法: JavaEnum 简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。如:原创 2012-03-14 11:21:09 · 790 阅读 · 0 评论 -
java多线程之消费者生产者模式
/*@author shijin* 生产者与消费者模型中,要保证以下几点:* 1 同一时间内只能有一个生产者生产 生产方法加锁sychronized* 2 同一时间内只能有一个消费者消费 消费方法加锁sychronized* 3 生产者生产的同时消费者不能消费 生产方法加锁sychronized* 4 消费者消费的同时生产者不能生产 消费方法加锁sychronized原创 2012-02-11 10:20:41 · 49086 阅读 · 13 评论 -
获得所有java System属性,实验所得,非文档拷贝,最全
package job;import java.util.Enumeration;import java.util.TreeMap;public class SysProperties { /** * @author shijin * @param args */ public static void main(String[] args) {原创 2012-06-19 20:35:42 · 1600 阅读 · 0 评论 -
Java与编码问题串讲之一--ANSI、Unicode与UTF8
我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。ANSI编码(American National Standards Insti原创 2012-06-20 15:27:30 · 12457 阅读 · 4 评论 -
数据库连接池的设计思路及java实现
connectionPool.DBConnectionManagerpackage connectionPool;import java.sql.Connection;import java.sql.Driver;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Arr原创 2012-08-06 17:07:50 · 11763 阅读 · 5 评论 -
详解进程文件锁FileLock
import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;import java.nio.channels.FileL原创 2012-08-17 09:26:13 · 23076 阅读 · 2 评论 -
控制字符
控制字符(Control Character),出现于特定的信息文本中,表示某一控制功能的字符。 在ASCⅡ码中,第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。US-ASCII控制字符Seq转载 2012-08-16 08:30:20 · 10222 阅读 · 0 评论 -
java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题
package job;public class TestConsSeq { public static void main(String[] args) { /* * 几大原则 * 一、静态成员变量(Static) * 1、静态成员变量为类变量,所有对象共享同一内存空间 * 2、静态成员变量的声明和定义仅在首次加载类时执行一次 *原创 2012-06-26 11:36:05 · 9163 阅读 · 1 评论 -
结合实例详解clone()函数,Cloneable接口以及深拷贝与浅拷贝的问题
package job;/** * ps:java中的clone()方法的功用类似于C++中的拷贝构造函数 * 拷贝对象还可以用对象流中转一下获得,需要实现标记型接口Serializable * Serializable接口中的方法对程序是不可见的,因此实现了该接口的类不需要实现 * 额外的方法,当把一个序列化的对象写入ObjuctOutputStream时,JVM就会实现原创 2012-07-05 11:37:42 · 4254 阅读 · 0 评论 -
java中的Volatile关键字(成员变量修饰符)
Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。这样当多个线程同时与某个对象交转载 2012-07-29 09:29:33 · 9148 阅读 · 0 评论 -
Arrays.copyof(···)与System.arraycopy(···)区别
首先观察先System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)的声明:public static native void arraycopy(Object src, int srcPos, Object d原创 2012-08-03 16:18:20 · 39672 阅读 · 0 评论 -
Java泛型简明教程
Java泛型简明教程泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它。关于Java泛型的教程,免费的,不免费的,有很多。我遇到的最好的教材有:The Java Tutorial Java Generics and Collections, by Maurice Naftalin and Philip转载 2012-06-27 11:11:38 · 1080 阅读 · 1 评论 -
Java与编码问题串讲之三--乱码
先澄清这么几个事实:1:byte转二进制编码的问题,为何要先与0xff相与再转。java中byte是以其补码存储的。ava中的一个byte其范围是-128~127,Integer.toHexString(int)的参数为int型,当byte传入其中时,会自动转换成int,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么原创 2012-06-20 15:46:10 · 4160 阅读 · 0 评论 -
java中io各种流的关闭顺序
还是先看APIvoidclose() Closes this stream and releases any system resources associated with it.closevoid close() throws IOExceptionCloses this stream and原创 2012-01-10 17:56:42 · 48353 阅读 · 1 评论 -
java笔记3继承和多态
继承和访问控制符??????无条件继承有条件访问? 子类能够继承父类中public和protected成员;子类能够继承父类中default成员,但 子类与父类必须位于同一包内;子类不能继承父类的private成员;子类不能直接使用父类隐藏的成员变量和重写的父类方法;(super)?子类通过继承的父类的方法来访问继承自父类的私有成员;可以用子类对象来代替父类对象或:父类对象的引用可以指向父类对象,也可以指向 子类对象;一个父类的引用不可以访问其子类对象新增加的成员(属性和方法);向下造型需要强制类型转换,原创 2010-07-31 02:02:00 · 906 阅读 · 0 评论 -
Applet
Applet的工作原理 . 含有Applet的网页的HTML文件代码中部带有 和这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。 Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支原创 2010-07-21 08:31:00 · 860 阅读 · 0 评论 -
javadoc注释规范
javadoc做注释 一. Java 文档 // 注释一行 /* ...... */ 注释若干行 /** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写法如下: /** * ......... * ......... */ javadoc -d 文档存放目录 -author -version 源文件名.java 这条命令编译一个名为 “源文件名.java”的 java 源文件,并将生成的转载 2010-07-21 03:28:00 · 574 阅读 · 0 评论 -
InputStream读取中文字符并由ByteArrayOutputStream写入
public String getString() { String str = ""; InputStream in = this.getClass().getResourceAsStream("/res/data.txt"); int c; ByteArrayOutputStream bais = new ByteArrayOutputStream(); tr原创 2010-05-19 03:10:00 · 5072 阅读 · 0 评论 -
java 字符串分割
●利用split函数: String s = new String("2_8_7_4_3_9_1"); String[] arr = s.split("_"); Java中用split函数进行分割字符串。 1.语法如下 String.split(sourceStr,maxSplit) String.split(sourceStr) 参数说明:sourceStr是被分割的字原创 2010-05-15 13:12:00 · 852 阅读 · 0 评论 -
java 转义字符
Xml代码 /n 回车(/u000a) /t 水平制表符(/u0009) /b 空格(/u0008) /r 换行(/u000d) /f 换页(/u000c) / 单引号(/u0027) /" 双引号(/u0022) // 反斜杠(/u005c) /ddd 三位八进制 /udddd原创 2010-05-15 13:09:00 · 3646 阅读 · 1 评论 -
java.util.vector中的vector的详细用法
ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; /** * 演示Vector的使用。包括Vector的创建、向Vector中添加元素、从Vector中删除元素、 * 统计Vector中元素的个数和遍历Vector中的元素。 */ public class VectorD原创 2010-05-15 12:04:00 · 712 阅读 · 0 评论 -
JAVA获取系统当前时间
//导入 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; Date dt=new Date();//如果不需要格式,可直接用dt,dt就是当前系统时间 DateFormat df = new SimpleDateFormat("yyyy/MM原创 2010-05-15 07:37:00 · 792 阅读 · 0 评论 -
java函数查看文件大小
FileInputStream fis=null; try { fis=new FileInputStream("file url") } catch(Exception e){e.printStackTrace()} System.out.println("File has "+ fis.available() + " bytes");原创 2010-04-26 06:13:00 · 2521 阅读 · 0 评论 -
java.lang.Runtime
每一个java程序都有Runtime类的单一实例,这个实例允许程序和程序运行的环境交互。当前的运行环境可通过getRuntime方法获得。一个程序不能创建这个类的自己的实例。void addShutdownHook(Thread hook) Registers a new virtual-machine shutdown hook.int availableProc翻译 2010-04-17 15:47:00 · 725 阅读 · 0 评论 -
java笔记1java语言基础
java在执行字节码文件时执行以下三步:加载代码,校验代码,执行代码 标示符只能以字母下划线和美元符开头 ~:对数据的每一个二进制位取反; &:参与运算的两个值,相应位均为1,则结果为1,否则为0。 |:参与运算的两个值,只要相应位有一个为1,则结果为1,否则为0。 ^:参与运算的两个值,相应位相同,则结果为0,否则为1。 >>:有符号右移,使用“符号扩展”:若值为正,则高位插入0,若值为负,高位插入1 ; >>>:无符号右移:各二进制若干位,移出低位被舍弃,高位补零。不考虑符号位。 >原创 2010-07-31 01:54:00 · 573 阅读 · 0 评论 -
java笔记2面向对象和数组
在定义成员变量时可以对其初始化,如果不对其初始化,编译器实用默认值对其初始化;局部变量声明后必须对之进行初始化,否则编译出错 对象的生命周期由指向它的引用决定,当指向对象的引用都失效时,该对象将无法被访问,则其生命周期终结,成为“垃圾”对象。此时,对象仍存留于内存中,直至被垃圾回收器清除; 在类体中,可以用{…}将代码括起来,构成一个初始化块,与成员变量、方法、构造方法平起平坐;初始化块以“块”的形式加入到构造方法的开头执行,多个块则按照其在类中出现的顺序执行;初始化块将块中代码作为所有构造方法的公原创 2010-07-31 01:59:00 · 659 阅读 · 0 评论 -
JAVA中有关byte,int,long这些基本数据类型的存储方式以及负数在JAVA中的表示方式
Java 定义的位运算(bitwise operators )直接对整数类型的位进行操作,这些整数类型包括long,int,short,char,and byte 。表4-2 列出了位运算: 表4.2 位运算符及其结果 运算符 结果 ~ 按位非(NOT)(一元运算) & 按位与(AND) | 按位或(OR) ^ 按位异或(XOR) >> 右移 >>> 右移,左边转载 2011-12-07 22:12:00 · 2846 阅读 · 0 评论 -
Java 的 Class Path 和 Package
一, 类路径 (class path) 当你满怀着希望安装好了 java, 然后兴冲冲地写了个 hello world,然后编译, 运行, 就等着那两个美好的单词出现在眼前, 可是不幸的是, 只看到了 Can t find class HelloWorld 或者 Exception in thread "ma转载 2011-06-08 17:42:00 · 797 阅读 · 0 评论 -
汉诺塔演示中的几点经验
1、完全确定了方法的可行性后再编程,想当然的去编到最后不一定真能解决问题 2、要选择一种合理的数据结构 3、画类图,看程序共需要几个类,类与类之间的调用关系是什么,尽量减小类之间的耦合,避免来回调用 4、关于java对象的深拷贝与浅拷贝问题,对于复杂对象,若想借由临时变量完成某些操作而不影响原有对象时,则必须定义对象的拷贝函数,因为对象名只是对存储空间的引用,等号浅拷贝只是将左面的变量指向了右面变量指向的存储单元,对新对象的所有改变都会影响原有对象。 5、画图时别忘了刷屏,刷掉以前的图形以便重画原创 2010-11-22 01:49:00 · 836 阅读 · 0 评论 -
java笔记8多线程
1、采用继承Thread类创建线程 定义一个java.lang.Thread类的子类,并重写其run方法: class MyThread extends Thread{ public void run() { ……} } 然后生成该类的对象:MyThread myThread = new MyThread(…); 2、通过实现Runnable接口创建线程 定义实现Runnable接口的线程类 class MyThread implem原创 2010-11-15 11:29:00 · 1365 阅读 · 0 评论 -
java“指针”
最近看JAVA,发现它不是没有指针,而是对指针进行了伪装:使用上泛化、强化和简单化,概念上淡化和弱化。。。 C++中可以有对象类型的变量和对象指针类型,两者的区别如下: Object oo = Object(); Object * oop = new Object(); 也就是说当使用new方式时,是动态为对象分配内在并将地址赋给oop这个指针变量。 JAVA中只有一种相关类型:对象类型,可是它的表现形式却是这样的: Object oo = new Object(); 比较一下,原来它就是使用了C++的动态原创 2011-01-06 08:13:00 · 986 阅读 · 0 评论