public static void replaceString(String a,String b,String c){
System.out.println(a);
String result = a.replaceAll("(?i)"+b, c); //大小写不敏感
System.out.println(result);
System.out.println(a.replaceAll(b, c));//大小写敏感
}
只要加个(?i),很多的代码都省了。
引用通告地址: http://tmsoft.lsxy.com/trackback.php?tbID=887&extra=8705a6 ......
转 : http://wintys.blog.51cto.com/425414/94051
/**
*名称:BinarySearch
*功能:实现了折半查找(二分查找)的递归和非递归算法.
*说明:
* 1、要求所查找的数组已有序,并且其中元素已实现Comparable<T>接口,如Integer、String等.
* 2、非递归查找使用search();,递归查找使用searchRecursively();
*
*本程序仅供编程学习参考
*
*@author: Winty
*@date: 2008-8-11
*@email: wintys@gmail.com
*/
class BinarySearch<T extends Comparable<T>> {
private T[] data;//要排序的数据
public BinarySearch(T[] data){
this.data = data;
}
public int search(T key){
int low;
int high;
int mid;
&nb ......
转 : http://jayzotion.javaeye.com/blog/404084
public class TestBinSearch {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
System.out.println(binSearch(a, 0, a.length - 1, 100));
}
// 二分查找递归实现
public static int  ......
static String string2Unicode(String s) {
try {
StringBuffer out = new StringBuffer("");
byte[] bytes = s.getBytes("unicode");
for (int i = 2; i < bytes.length - 1; i += 2) {
out.append("u");
String str = Integer.toHexString(bytes[i + 1] & 0xff);
for (int j = str.length(); j < 2; j++) {
out.append("0");
}
String str1 = Integer.toHexString(bytes[i] & 0xff);
out.append(str);
out.append(str1);
out.append(" ");
}
return out.toString().toUpperCase();
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
static String unicode2String(String unicodeStr){
StringBuffer sb = new StringBuffer();
String str[] = unicodeStr.toUpperCase().split("U");
for(int i=0;i ......
package com.mywebtest.common;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
/**
* Java reflection 非常有用,它使类和数据结构能按名称动态检索相关信息,并允许在运行着的程序中操作这些信息。
* Java 的这一特性非常强大,并且是其它一些常用语言,如 C、C++、Fortran 或者 Pascal 等都不具备的。
*/
public class ReflectionTest {
public double d;
public ReflectionTest() {
}
public ReflectionTest(int a, int b) {
System.out.println("a = " + a + " b = " + b);
}
public static void main(String[] args) {
try {
//获得一个Cla ......
线程安全
只有在单例并发的情况下才会出现线程安全问题,引起问题的主要原因就在于对象的资源共享(如实例变量等),不过局部变量是线程安全的。因此在程序设计的时候尽量不要用实例变量。产生这样原因在于java的内存分配机制,实例变量是存放在堆内存中的所有线程共享,而每个线程也都有自己的线程盏,局部变量存放在线程盏中,各线程独享。
简要的说在并发的时候,servlet与struts1都是单例多线的模式,一旦声明的有实例变量,就会引起线程安全问题。struts2是多例单线模式(需要配置)无所谓线程安全。spring中server层对象一般都是无状态的,因此运用单例亦不会出现线程安全问题,如果对象存在状态就需要考虑并发下的线程安全问题。
下面简单的介绍下ThreadLocal:
ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread
,而是thread local variable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。
线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一
个变量值的副本 ......