在stylesheet标签里声明命名空间和调用方法:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:proc="${path}/packageName" exclude-result-prefixes="proc">
......
<xsl:value-of select="proc:className.methodName(param)"/>
${path}随便怎样写都可以,即使是个不存在的path也可以,但必须保证最后一个packageName是java的classpath中的第一个包,例如包名为:process,类名为:processor,方法为:format。则xslt这样写:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:proc="http://java.com/xslt/process" exclude-result-prefixes="proc">
......
<xsl:value-of select="proc:processor.format(/root/path/@attr)">
在某文件夹下(例如D:/java/classes,确保D:/java/classes在classpath中)建立文件夹process,在process文件夹里创建processor.java,processor.java这样写:
package process;
import org.w3c.dom.Node;
public class processor()
{
public static String format(Node node)//必须使用静态方法
{
if (node ......
客户端:
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.awt.*;
public class ClientPoint extends JFrame implements ActionListener,KeyListener{
static int SERVERPORT=8088;
static String SERVERADDRESS="127.0.0.1";
private BufferedReader cin=null;
private PrintWriter cout=null;
private Socket client=null;
public String clientname;
private JPanel jPanel1=new JPanel();
private JTextField jTextSendInfo=new JTextField(38);
private JTextArea jTextGetInfo=new JTextArea(16,33);
public JScrollPane areaScrollPane=new JScrollPane(jTextGetInfo);
private Button Send=new Button("发送");
private Button Link=new Button("连接");
public ClientPoint(){
super("聊天室^_^");
enab ......
Java Arrays中提供了对所有类型的排序。其中主要分为primitive和Object两大类,分别使用了快速排序与合并排序。本章以int[] 的排序,讲解Java对primitive排序。
首先大家要了解什么是快速排序,它有什么优点,这些我就不累述了,给出地址。http://zh.wikipedia.org/zh/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F
在了解了基本原理之后,上图可以动态的展示快速排序的基本思路。很经典~
接下来,我们展示源码,并仔细讲解!
public static void sort(int[] a) {
sort1(a, 0, a.length);
}
这个方法是对外暴露的调用接口。 sort1 是排序方法的主体,传入参数分别为:待排序数组,排序起始位置,待排序元素长度。
sort1中使用到另外3个方法,首先介绍。
1. swap:简单的使用中间变量来交换数组内元素。
private static void swap(int x[], int a, int b) {
int t = x[a];
x[a] = x[b];
x[b] = t;
}
2.med3:计算中值。
private static int med3(int x[], int a, int b, int c) {
return (x[a] < x[b] ?
(x[b] < x[c] ? b : x[a] < x[c] ? c : a) :
(x[b] > x[c] ......
Java通过java.lang.Thread类完成多线程。我们通过同一个例子,看线程的两种创建方法,以及运行方法:
(1)一种是声明 Thread 的子类,重载 Thread 类的方法 run(Extend java.lang.Thread and override the run method)
public class MyThread extends Thread
{
public void run()
{//因为缺省的run()方法什么都不做,你必须重载run()以完成有用的工作。
for (int count = 1, row = 1; row < 20; row++, count++)
{
for (int i = 0; i < count; i++)
System.out.print('*');
  ......
常见配置举例
堆大小设置
JVM
中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制.32位系统
下,一般限制在1.5G~2G;64为操作系统对内存无限制.我在Windows Server 2003
系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m.
典型设置:
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k
-Xmx3550m:设置JVM最大可用内存为3550M.
-Xms3550m:设置JVM初始内存为3550m.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存.
-Xmn2g:设置年轻代大小为2G.整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8.
-Xss128k:
设置每个线程的堆栈大小.JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行
调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右.
java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize= ......
今天在编写一个快速排序函数,其中想用一个在C++中类似swap功能的函数,结果引发了一系列的问题。
下面是在网上搜到的代码,并在我的本地机上作了运行。
public class ParamTest
{
public static void main(String[] args)
{
/*
*Test 1:Methods can't modify numeric parameters
*/
System.out.println("Testing tripleValue:");
double percent = 10;
System.out.println("Before: percent =" + percent);
tripleValue(percent);
System.out.println("After: percent = " + percent);
/*
*Test 2: Methods can change the state ......