
Java基础
gaoqinqing
IT工人
展开
-
WebSocket不同版本的三种握手方式以及一个Netty实现JAVA类
一、WebSocket不同版本的三种握手方式WebSocket是HTML5中的新特性,应用也是非常的广泛,特别是用户WEB端与后台服务器的消息通讯,如阿里的WEBWW就是使用的WebSocket与后端服务器建立长连接进行的通讯。目前WebSocket还处于发展当中,就目前的发展过程而言,WebSocket现在不同的版本,有三种不同的握手方式:1、基于Flash的WebSocket通转载 2012-01-01 21:42:06 · 535 阅读 · 0 评论 -
java中字符串池是存在于栈中还是存在于堆中?
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的转载 2011-12-30 11:17:34 · 1317 阅读 · 0 评论 -
圣思园——Java SE Lesson 4
1. 包装类(Wrapper Class)。针对于原生数据类型的包装。所有的包装类(8 个)都位于 java.lang 包下。Java 中的 8个包装类分别是:Byte, Short, Integer, Long, Float, Double, Character, Boolean。他们的使用方式都是一样的,可以实现原生数据类型与包装类型的 双向转换。2. 数组(Array):相同类型原创 2011-12-30 11:17:13 · 1274 阅读 · 0 评论 -
圣思园——Java SE Lesson 6
1. 当向ArrayList添加一个对象时,实际上就是将该对象放置到了 ArrayList 底层所维护的数组当中;当向 LinkedList 中添加一个对象时,实际上 LinkedList 内部会生成一个Entry 对象,该 Entry 对象的结构为:Entry{Entry previous;Object element;Entry next;}原创 2011-12-30 11:17:07 · 1215 阅读 · 0 评论 -
圣思园-----Java SE Lesson 7
1. 有这样一个类: // getter and setter要求:假如有若干个类 Person 对象存在一个 List 当中,对他们进行排序,分别按照名字、年龄、 id 进行排序(要有正序与倒序两种排序方式)。假如年龄或者姓名重复,按照 id的正序进行排序。 要求使用策略模式进行 。2. HashSet 底层是使用 HashMap 实现的。当使用 add 方原创 2011-12-30 11:17:04 · 1329 阅读 · 0 评论 -
圣思园——Java SE Lesson 11
1. 所谓自定义异常, 通常 就是定义了一个继承自 Exception 类的子类,那么这个类就是 一个自定义异常类。通常情况下,我们都会直接继承自 Exception 类, 一般 不会继承 某个运行时的异常类。 2. 我们可以使用多个 catch 块来捕获异常,这时需要将父类型的 catch 块放到子类型的 catch 块之后,这样才能保证后续的 catch 可能被执行,否则子类型原创 2011-12-30 11:17:00 · 1321 阅读 · 0 评论 -
Java中的native关键字浅析(Java Native Interface )
JNI是Java Native Interface的 缩写。从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计 的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。 使用java与本地已编译的代码交互,通常会转载 2011-12-29 10:15:28 · 285 阅读 · 0 评论 -
圣思园---Java SE Lesson 8
1. 当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。For-Each循环的加入简化了集合的遍历其語法如下:for(type element : array) { System.out.println(element).... }2. 自动装箱/拆箱自动装箱/拆箱大大原创 2011-12-29 10:16:04 · 1330 阅读 · 0 评论 -
圣思园——Java SE Lesson 12
1. 事件-描述发生了什么的 对象 ? - 事件源-事件的产生器 ? - 事件处理器-接收事件、解释事件并处理用户交互的 方法2. 当单击一个按钮时就会产生一个事件( ActionEvent ),然后检查是否有与该按钮关联 的事件处理器(实际上就是一个方法),如果没有,那么什么都不执行;如果有,就 会将该事件传递给与该按钮关联的事件处理器方法,作为该方法的参数,之后该事 件处理器方法就会自原创 2011-12-29 10:16:37 · 1290 阅读 · 0 评论 -
圣思园——Java SE Lesson 13
1. 内部类(Inner Class),内部类共分为 4 种。 2. 静态内部类(static inner class):只能访问外部类的静态成员变量与静态方法,声明静态内部类:public OutClass{ public static class InnerClass{}}生成静态内部类对象:OuterClass.InnerClass inner = new O原创 2011-12-29 10:16:57 · 1175 阅读 · 0 评论 -
Jdbc连接各种数据库
1、Oracle8/8i/9i数据库(thin模式)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SIDString user="test";String password=转载 2011-12-30 11:18:21 · 350 阅读 · 0 评论 -
静态代码的执行顺序
静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。 1 父类的静态代码块 2 子类的静态代码块 3 父类的构造函数 4 子类的构造函数 需要注意的地方: 1 子类的 构造函数 默认是 调用 父类的 无参构造函数。 2 如果 父类没有无参构造原创 2011-12-30 11:18:34 · 272 阅读 · 0 评论 -
圣思园——Java SE Lesson 16
1. 如果某个 synchronized 方法是 static 的,那么当线程访问该方法时,它锁的并不是synchronized 方法所在的对象, 而是 synchronized 方法所在的对象所对应的 Class 对象,因为 Java 中无论一个类有多少个对象 ,这些对象会对应唯一一个 Class 对象,因此当线程分别访问同一个类的两个对象的两个 static , synchronized 方法原创 2011-12-29 10:16:46 · 1300 阅读 · 0 评论 -
JNI技术(Java Native Interface)
说白了,就是JAVA调用由C/C++编写的库文件DLL(WINDOWS)/SO(UNIX)public class testdll { static { System.loadLibrary("goodluck"); } public native static int get();转载 2011-12-29 10:15:42 · 241 阅读 · 0 评论 -
Java clone方法使用详解
以下是J2SE6的API中关于接口Cloneable的说明:************************************************************************public interface Cloneable 此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。转载 2011-12-31 02:04:09 · 455 阅读 · 0 评论 -
Java学习笔记
Java编译器编译的是源文件而Java解释器解释的是类不是文件System.out.println()的含义:System是类,out是System类的一个静态成员变量同时又是PrintStream类(该类是FilterOutputStream类的子类)的对象,它的类型是static PrintStream类型的,而PrintStream也是一个类,println是out的一个方法转载 2011-12-31 02:04:00 · 790 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量---volatile 变量使用指南
简介: Java语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 Java 理论与实践 中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对其适用性限制提出一些建议。.Java 语言转载 2011-12-31 02:04:04 · 310 阅读 · 0 评论 -
JNDI介绍
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。那么,JNDI到底起什么作用?要了解JNDI的作用,我们可以从"如果不用JNDI我们怎样做?用了JNDI后我们又将怎样做?"这个问题来探讨。转载 2011-12-30 11:18:37 · 321 阅读 · 0 评论 -
Java IO梳理
(结合decorator 模式理解,很容易理清这些类的关系)1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Out stream)都包括两种类型:1.1 以字节为导向的stream以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节转载 2011-12-30 11:18:15 · 258 阅读 · 0 评论 -
全面分析Java的垃圾回收机制
引言 Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于转载 2011-12-30 11:17:46 · 329 阅读 · 0 评论 -
Java中堆内存与栈内存
Java中堆内存与栈内存分配浅析 Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。 堆内存用来存放由 new 创建的对象和数组,转载 2011-12-30 11:17:30 · 283 阅读 · 0 评论 -
圣思园——Java SE Lesson 5
1. 对于Java中的常量的命名规则:所有单词的字母都是大写,如果有多个单词,那么使用下划线连接即可。比如说:public static final int AGE_0F_PERSON = 20;2. 在 Java 中声明 final 常量时通常都会加上 static 关键字,这样对象的每个实例都会访问唯一一份常量值。3. IDE ( Integrated Development原创 2011-12-30 11:17:10 · 1250 阅读 · 0 评论 -
Java的native关键字(一)
今天研究Java基础类库,Object类的时候,发现了一个关键字:nativejava native关键字: 一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的转载 2011-12-29 10:15:38 · 301 阅读 · 0 评论 -
JDBC修改Blob字段和文件转移
private static void Removetodata2(String path) {Session session = null;Connection conn = null;java.sql.Statement stmt = null;try {session = SessionFactory.openSession(EasySQL.ORACL转载 2011-12-30 11:18:17 · 443 阅读 · 0 评论 -
Java 强引用、 软引用、 弱引用、虚引用
1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。图1为对象应用类层次。图1转载 2011-12-30 11:18:08 · 257 阅读 · 0 评论 -
Java反射机制
Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。 1. 一个简单的例子考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。Java代码 :import java.lang.refl转载 2011-12-30 11:17:56 · 237 阅读 · 0 评论 -
java中的native关键字详解
这几天看java的源代码时多次见到方法前有个native关键字,而且凡是有这个关键字修饰的方法都没有方法体,只是一个方法的声明。很是疑惑,于是上网查了一下,现总结如下,希望能帮到大家。NO.1 native用在类的method前面,表示这个method不是用java实现的。 NO.2 java语言是运行在虚拟机上的, java又是不允许直接访问原创 2011-12-29 10:15:18 · 511 阅读 · 0 评论 -
java数据库连接方法汇总
一、问题引入在java程序中,需要访问数据库,做增删改查等相关操作。如何访问数据库,做数据库的相关操作呢? 二、Java连接数据库方法概述java.sql提供了一些接口和类,用于支持数据库增删改查等相关的操作。该jar包定义了java访问各种不同数据库(mysql,oracle,sqlserver。。。。。)的统一接口和标准。同时,各个数据库厂商都提供了该jar包中转载 2011-12-27 13:21:54 · 412 阅读 · 0 评论 -
java 获得类名,方法名,行数
public static String getTraceInfo() { StringBuffer sb = new StringBuffer(); StackTraceElement[] stacks = new Throwable().getStackTrace(); int stacksLen = stacks.le转载 2011-12-27 13:20:32 · 1201 阅读 · 0 评论 -
理解线程的等待释放(wait/notify)
下面有个错误的例子/** * 线程A: 循环50次后等待并放弃锁,让线程B执行。 */class ThreadA extends Thread{ //线程同步的公共数据区 Object oa=null; ThreadA(Object o){ this.oa=o; } //线程A执行转载 2011-12-27 13:21:17 · 392 阅读 · 1 评论 -
Java IO 全攻略---之一
Java IO 本篇主要讲述IO相关的内容,主要包括:与IO相关的简单的历史背景知识;Java IO的简单分类;与IO设计相关的两个模式;同时列举几个简单的例子;分析其中几个实现的源代码;最后给大家一些简单扩展的例子。治学先治史,下面我们先从简单的历史开始吧! 一、 历史背景 “对语言设计人员来说,创建好的输入/输出系统是一项特转载 2011-12-27 13:19:29 · 251 阅读 · 0 评论 -
javadoc做注释
一. Java 文档 // 注释一行 /* ...... */ 注释若干行 /** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写法如下: /** * ......... * ......... */ javadoc -d 文档存放目录 -author -version 源文件名.java 这条命令编译一个转载 2011-12-27 13:23:24 · 230 阅读 · 0 评论 -
线程池的实现
在现代的操作系统中,有一个很重要的概念――线程,几乎所有目前流行的操作系统都支持线程,线程于操作系统中进程的概念,进程有自己的虚拟地址空间以及正 文段、数据段及堆栈,而且各自占有不同的系统资源(例如文件、环境变量等等)。与此不同,线程不能单独存在,它依附于进程,只能由进程派生。如果一个进程 派生出了两个线程,那这两个线程共享此进程的全局变量和代码段,但每个线程各拥有各自的堆栈,因此它们拥有各自的局转载 2011-12-27 13:20:57 · 318 阅读 · 0 评论 -
Java IO 全攻略--之二
3.4 字节流与字符流 从上面我们可以看出IO中的字节流是极其复杂的,存在大量的类,到目前为止还没有真正使用它们,使用它们应该也是极其复杂的吧!JDK1.1后Sun对IO库进行了重大的改进。看到Reader和Writer类时,大多数人的第一个感觉(不要太相信感觉哦!感觉也许会欺骗你的!)就是它们是用来替换原来的InputStream和OutputStream类。有新的类,干吗还转载 2011-12-27 13:19:58 · 265 阅读 · 0 评论 -
集合类的说明和区别
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)转载 2011-12-25 17:26:36 · 750 阅读 · 0 评论 -
HashMap和Hashtable的区别
导读:1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2 HashTable是线程安全的一个Collection。HashMap是Hashtable的轻量级实现(非线转载 2011-12-29 10:15:01 · 189 阅读 · 0 评论 -
圣思园——Java SE Lesson 3
1. 接口中所声明的方法都是抽象方法。接口中的方法都是 public 的。2. 接口中也可以定义成员变量。接口中的成员变量都是 public、final、static 的。3. 一个类不能既是 final,又是 abstract 的。因为 abstract 的主要目的是定义一种约定, 让子类去实现这种约定,而final 表示该类不能被继承,这样 abstract 希望该类可以原创 2011-12-30 11:17:16 · 1531 阅读 · 0 评论 -
JAVA 对日期处理
public class TimeTest { //用来全局控制 上一周,本周,下一周的周数变化 private int weeks = 0; private int MaxDate;//一月最大天数 private int MaxYear;//一年最大天数 /** * @param args */转载 2011-12-27 13:23:47 · 407 阅读 · 0 评论 -
Java内存管理机制
为了判断Java中是否有内存泄露,我们首先必须了解Java是如何管理内存的。Java的 内存管理就是对象的分配和释放问题。在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。另外,对象的释放是由GC决定和执行的。在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线 的方法确实简化了程序员的工作。但转载 2011-12-30 11:17:40 · 278 阅读 · 0 评论 -
圣思园 ——JAVA SE Lesson 0
Java SE 第一讲:Java SE:Java Standard EditionJava ME: Java Misco EditionJava EE:Java Enterprise Edition Java是由Sun公司推出的(今年初被Oracle公司收购)。收购价格:74亿美金 J2SE、J2ME、J2EE JDK原创 2011-12-30 11:17:26 · 1473 阅读 · 0 评论