首页>网络编程教程> Java教程
全部 ASP入门教程 ASP教程 ASP.NET教程 PHP教程 JSP教程 C#/CSHARP教程 XML教程 Ajax教程 Perl教程 Shell教程 Visual Basic教程 Delphi教程 移动开发教程 C/C++教程 Java教程 J2EE/J2ME 软件工程
Java教程
  • java对指定目录下文件读写操作介绍

    java对指定目录下文件读写操作介绍

    最近因为项目的国际化的需要,需要对整个项目的100来个插件做国际化,这是一件痛苦的事情,因为纯体力劳动。为了省点工作量,想着能不能写个程序批处理了,减少点工作量,于是就有了下面的代码。 1.读取指定的(.java)文件: 复制代码代码如下:public static String readFile(String path) throws IOException { File f = new File(path); StringBuffer res = new StringBuffer(); String
    2024-11-17
  • java多线程中的异常处理机制简析

    java多线程中的异常处理机制简析

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉。这一点是通过java.lang.Runnable.run()方法声明(因为此方法声明上没有throw exception部分)进行了约束。但是线程依然有可能抛出unchecked exception,当此类异常跑抛出时,线程就会终结,而对于主线程和其他线程完全不受影响,且完全感知不到某个线程抛出的异常(也是说完全无法catch到这个异常)。JVM
    2024-11-17
  • log4j详细的常用配置说明介绍

    log4j详细的常用配置说明介绍

    很多丝都觉得log4j不好用,因为它不输出到IDE的控制台,哈哈,其实都是配置惹的祸,下面看我怎么一步步配置到控制台的,log4j的输出级别和输出模式相信丝们都知道的,这里不多说了,直接看代码注释:# All,TRACE,DEBUG,INFO,WARN,ERROR,FITAL,OFF #全局项目日志配置 log4j.rootLogger=ERROR #指定的包下所有的日志(只输出项目com包下的日志) log4j.logger.com=DEBUG,yin,dailly_rolling_file #指定输出
    2024-11-17
  • hadoop client与datanode的通信协议分析

    hadoop client与datanode的通信协议分析

    本文主要分析了hadoop客户端read和write block的流程. 以及client和datanode通信的协议, 数据流格式等.hadoop客户端与namenode通信通过RPC协议, 但是client 与datanode通信并没有使用RPC, 而是直接使用socket, 其中读写时的协议也不同, 本文分析了hadoop 0.20.2版本的(0.19版本也是一样的)client与datanode通信的原理与通信协议. 另外需要强调的是0.23及以后的版本中client与datanode的通信协议有
    2024-11-17
  • Tomcat内存溢出分析及解决方法

    Tomcat内存溢出分析及解决方法

    JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。 一、内存溢出类型1、java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的
    2024-11-17
  • Struts之logic标签库详解

    Struts之logic标签库详解

    1.logic:emptylogic:empty标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况: 当Java对象为null时 当String对象为""时 当java.util.Collection对象中的isEmpty()返回true时 当java.util.Map对象中的isEmpty()返回true时 下面的代码示例了logic:empty标签判断集合persons是否为空: <logic:empty name="listForm" property =
    2024-11-17
  • java代码之谜运算符篇

    java代码之谜运算符篇

    从最简单的运算符加号(+)说起,加号(+)是个二元运算符――也就是说,加号只把两个数联接起来,从来不把第三个或者更多的联接起来。 因此,“1加2加3” 在计算机中被表述为: (1 + 2) + 3 // a或者 1 + (2 + 3) // b虽然我们通常写做 1 + 2 + 3,但是并不意味这它和我们数学中的 1+2+3 是等价的。 那么数学中的 1+2+3 到底表示的是 a 呢,还是 b 呢? 如果计算机的求值是左结合的,那么此表达式等价于第一种a; 如果是右结合的,那么此表达式等价于第二种b。 1
    2024-11-17
  • centos下编译安装mysql报错解决方案

    centos下编译安装mysql报错解决方案

    今天在centos6.2下面源码编译安装mysql的时,在编译mysql的时候报了一个蛋蛋的错误: 复制代码代码如下:[root@vps870 mysql-5.5.28]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql / > -DMYSQL_UNIX_ADDR=/tmp/mysql.sock / > -DDEFAULT_CHARSET=gbk / > -DDEFAULT_COLLATION=gbk_chinese_ci / > -DW
    2024-11-17
  • java向多线程中传递参数的三种方法详细介绍

    java向多线程中传递参数的三种方法详细介绍

    在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数据的方法,在下一篇文章中将介绍从线程中返回数据的方法。 欲先取之,必先予之。一般在使用线程时都需要有一些初始化数据,然后线程利用这些数据进行加工处理,并返回结果。
    2024-11-17
  • java如何交换这两个变量的值方法介绍

    java如何交换这两个变量的值方法介绍

    1.借助中间量交换int x = 10; int y = 20; int temp = x; x = y; y = temp; 此种方法可以将中间量看成空杯,即把temp看成是空杯, 把x看成是装有白酒的杯子,把y看成是装有红酒的杯子 int temp = x; 把白酒倒到空杯中,此时temp装有白酒,x变成空杯 x = y; 把y中的红酒倒到x空杯中,此时x装有红酒,y变成空杯 y = temp; 把白酒倒到y空杯中,此时x装有红酒,y装有白酒,实现x和y的互换 2.数值相加减交换int x = 10;
    2024-11-17
  • Java中的String对象数据类型全面解析

    Java中的String对象数据类型全面解析

    1. 首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 2. new String()和new String("")都是申明一个新的空字符串,是空串不是null; 3. String str="kvill"; String str=new String ("kvill");的区别: 在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。 常量池(constant
    2024-11-17
  • java中的枚举类型详细介绍

    java中的枚举类型详细介绍

    枚举中有values方法用于按照枚举定义的顺序生成一个数组,可以用来历遍。我们自定义的枚举类都是继承自java.lang.Enum,拥有一下实例中的功能: 复制代码代码如下://: enumerated/EnumClass.java // Capabilities of the Enum class import static net.mindview.util.Print.*; enum Shrubbery { GROUND, CRAWLING, HANGING } public class EnumC
    2024-11-17
  • 代理模式之Java动态代理实现方法

    代理模式之Java动态代理实现方法

    今天一个偶然的机会我突然想看看JDK的动态代理,因为以前也知道一点,而且只是简单的想测试一下使用,使用很快里就写好了这么几个接口和类:接口类:UserService.java复制代码代码如下:package com.yixi.proxy;public interface UserService {public int save() ;public void update(int id);}实现类:UserServiceImpl.java复制代码代码如下:package com.yixi.proxy;pub
    2024-11-17
  • java string的一些细节剖析

    java string的一些细节剖析

    首先说明这里指的是Java中的String,虽然我已经决定转战C/C++了,但是因为今天碰到一个问题,还是来看一下。String的定义如下: 复制代码代码如下:public final class String { private final char value[]; // 保存的字符串 private final int offset; // 开始的位置 private final int count; // 字符数目 private int hash; // 缓存的hash值 ...... } 在D
    2024-11-17
  • java自动装箱拆箱深入剖析

    java自动装箱拆箱深入剖析

    这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱); 其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象;例如用int来举例: 复制代码代码如下://声明一个Integer对象 Integer num = 10; //以上的声明就是用到了自动的装箱:解析为 Integer num = new
    2024-11-17