自由飞翔

我在仰望,java之上

统计

留言簿(2)

我关注的blog

阅读排行榜

评论排行榜

2011年10月26日 #

编码至高法则-高内聚低耦合

     摘要: 此法则适合所有语言,咱们以JavaScript和Java两个角度分析一下这个东东。 一、javascript 有这样的一个页面,js、css代码都写在html页面中。 例如:gnj.html v1版本Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-...  阅读全文

posted @ 2019-09-11 15:59 GavinMiao 阅读(221) | 评论 (0)编辑 收藏

Jgoodies FormLayout 小结


一、列与行的参数都由三个部分组成:对齐方式、固定尺寸、调整方式。
1.对齐方式:
1)列对齐有left, center, right, fill.默认fill
2)行对齐有:top, center, bottom, fill. 其中fill表示填充至整个区域。默认center。
2.固定尺寸:
pref表示preferred size,适当大小,即首选尺寸大小。
min表示minimum size,
dlu 表示dialog units,
px, pt, in, mm, cm)分别表示Pixel, Points, Inches, Millimeter, Centimeter。
3. 调整方式:
二、CellConstraints:
cc.xywh(3, 1, 3, 1):表示3列,1行,colspan=3,rowspan=1
三、FormLayout:
  1.FormLayout layout = new FormLayout(
   new ColumnSpec[]{
     FormSpecs.DEFAULT_COLSPEC,
     FormSpecs.GLUE_COLSPEC,
     FormSpecs.DEFAULT_COLSPEC,
     FormSpecs.GLUE_COLSPEC,
     FormSpecs.DEFAULT_COLSPEC,
     FormSpecs.GLUE_COLSPEC},
   new RowSpec[]{
     FormSpecs.DEFAULT_ROWSPEC,
     FormSpecs.GLUE_ROWSPEC,
     FormSpecs.DEFAULT_ROWSPEC,
     FormSpecs.GLUE_ROWSPEC,
     FormSpecs.DEFAULT_ROWSPEC,
     FormSpecs.GLUE_ROWSPEC
   }
  );
2.

FormLayout layout = new FormLayout( 
        "right:pref, 6dlu, 50dlu, 4dlu, center:50dlu", // columns
        "pref, 3dlu, pref, 3dlu, pref"); // rows   





参考文章:
http://hi.baidu.com/lijunwyf/item/a18d95f719ff01da6225d26f

posted @ 2012-09-29 11:29 GavinMiao 阅读(1315) | 评论 (0)编辑 收藏

Vector浅见

例子:
import java.util.*;
public class TestVector{
 public static void main(String[] args){
  Vector v = new Vector();
  v.add(null);
  v.add(new Integer(1));
  v.add("123");
  
  for(Enumeration e = v.elements();e.hasMoreElements();){
   System.out.println(e.nextElement());
  }
  v.insertElementAt("insert",2);
  v.setElementAt("insert",0);
  
  for(Enumeration e = v.elements();e.hasMoreElements();){
   System.out.println(e.nextElement());
  }
  
 }
}

结果:
null
1
123

insert
1
insert
123
 
结论:
vector中可以放入null;
vector可以放入不同类型的对象;
vector是同步的容量自增长的向量;

posted @ 2012-09-24 08:49 GavinMiao 阅读(309) | 评论 (0)编辑 收藏

火车票订票好办法

一、前提须知:
1.北京铁路局:
直属站15个:北京站北京西站天津站天津西站丰台站丰台西站南仓站塘沽站唐山站石家庄站石家庄南站、邯郸站、阳泉站、北京南站、天津西站。
2.郑州铁路局:
直属车站11个:郑州站、郑州北站、郑州东站、洛阳站、新乡站、开封站、商丘站、月山站、长治北站、长治站。
二、
北京电话订票窍门:1、座机打!;2.用手机加区号打!北京铁路局管内,如唐山区号:打0315-95105105,手机打95105105的有效区号:河北省邯郸0310石家庄0311保定0312张家口0313承德0314唐山0315廊坊0316沧州0317衡水0318邢台0319秦皇岛0335山东德州0534山西阳泉0353天津022。订好之后可以在北京取票!!

posted @ 2012-09-18 07:55 GavinMiao 阅读(371) | 评论 (0)编辑 收藏

异常积累:org.hibernate.StaleStateException

ERROR - Exception executing batch: 
org.hibernate.StaleStateException: Batch update returned unexpected row count fr
om update [0]; actual row count: 0; expected: 1

ERROR - Could not synchronize database state with session
org.hibernate.StaleStateException: Batch update returned unexpected row count fr
om update [0]; actual row count: 0; expected: 1


不注意的话,还真的有点无所适从,Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
这个异常是由于主键设置为自增长,而在我们插入记录的时候设置了ID的值导致的。看下我的Hibernate映射文件中ID的定义:

参考文章:http://hi.baidu.com/shirdrn/blog/item/adec1e82d067ddb86c81191c.html

posted @ 2012-04-18 15:33 GavinMiao 阅读(10572) | 评论 (0)编辑 收藏

java.lang.IllegalStateException: Cannot forward after response has been committed

现象:
页面报500.
原因:
在request.getRequestDispatcher("/success.html").forward(request, response);
后面还有未执行的代码,但是已经提交了响应。

posted @ 2012-04-14 09:08 GavinMiao 阅读(473) | 评论 (0)编辑 收藏

UML初接触

1.UML:unified modeling Language(统一建模语言)
2.草图与蓝图:
前者指:手工绘制的、规范度较低的UML模型;
后者指:case工具绘制的正式的、规范的UML模型;
3.不同可视性的符号:
“+”:public   “#”:protected  “-”:private  “~”:package
4.UML主要包含三种图:静态图、动态图、物理图
5.关联关系:用来表示一个对象持有另外一个对象的引用,或是调用另外一个对象的方法
6.类图:


7.类图之间的关联:
—▷▷  —>持有

posted @ 2012-04-13 11:34 GavinMiao 阅读(315) | 评论 (0)编辑 收藏

面试题(互联网网上商城行业)

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-04-12 22:39 GavinMiao 阅读(109) | 评论 (0)编辑 收藏

不用临时变量交换两个数

方法1:
a=a^b;
b=a^b;
a=a^b;
方法2:
a=a+b;
b=a-b;
a=a-b;

posted @ 2012-04-12 11:27 GavinMiao 阅读(404) | 评论 (0)编辑 收藏

易宝支付面试题(根据网上总结)

1.public class TestKnowleage5 {
public static void main(String[] args){
String strValue = "ABCDEFG";
strValue.substring(3);
System.out.println("result1"+strValue);
strValue.concat("123");
System.out.println("result2"+strValue);
String value = new String("ABCDEFG");
System.out.println(strValue==value);
}
}

运行结果:
result1ABCDEFG
result2ABCDEFG
false
2.public class Test{
    public static void main(String[] args){
         int x = 100;
int y = 200;
if(x == y)
System.out.println("not equal");
else
System.out.println("equal");
    }
}

运行结果:
equal

3.public class TestKnowleage5 {
public static void main(String[] args){
try{
new TestKnowleage5().methodA(5);
}catch(IOException e){
System.out.println("caught IOException");
}catch(Exception e){
System.out.println("caught Exception");
}finally{
System.out.println("no Exception");
}
}
public void methodA(int i) throws IOException{
if(i%2 != 0){
throw new IOException("methodA IOException");
}
}
}

运行结果:
caught IOException
no Exception

4.public class TestKnowleage5 {
static boolean isTrue(){
System.out.println("isTrue");
return true;
}
static boolean isFalse(){
System.out.println("isFalse");
return false;
}
public static void main(String[] args){
if(isTrue() || isFalse()){
System.out.println("|| operate return true");
}
if(isFalse() & isTrue()){
System.out.println("& operate return true");
}
}
}

运行结果:
isTrue
|| operate return true
isFalse
isTrue

5.public class TestKnowleage5{
public static void main(String args[]){
MyThread t = new MyThread();
t.run();
t.start();
System.out.println("A");
}
}
class MyThread extends Thread{
public void run(){
try{
Thread.currentThread().sleep(3000);
}catch(InterruptedException e){
}
System.out.println("B");
}
}
运行结果:
BBA或
BAB
6.class A{
void fun1(){
System.out.println(fun2());
}
int fun2(){
return 123;
}
}
public class TestKnowleage5  extends A{
int fun2(){
return 456;
}
public static void main(String[] args){
A a;
TestKnowleage5 b = new TestKnowleage5();
b.fun1();
a = b;
a.fun1();
}
}

运行结果:
456
456
7.class A{
int val;
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
}
public class TestKnowleage5{
public static void main(String[] args){
A data = new A();
ArrayList list = new ArrayList();
for(int i=100;i<103;i++){
data.setVal(i);
list.add(data);
}
int j = 0;
while(j<list.size()){
A tmp = (A)list.get(j);
System.out.println("list("+j+")="+tmp.getVal());
j++;
}
}
}

运行结果:
list(0)=102
list(1)=102
list(2)=102

8.hibernate导入大量数据时,为了避免内存中产生大量对象,在编码时注意什么,如何去除?

9.视图与表的区别
10.触发器有哪几种类型
11.
事务操作有那几个步骤
12.写出对应正则表达式:
1)1-6位字母或数字;
[a-zA-Z0-9]{1,6}
2)手机号(只能是139或159开头,11位数字)
1[35][9][0-9]{8}
13.字符串反转:new StringBuilder(str).reverse().toString();
14.写程序:1+2²+3²+...+n²
int func(int n){
    return n==1?1:func(n-1)+n*n
}

15.写一个延迟加载的单例模式:
public class SingleTon{
    private static  SingleTon  instance = null;
    private SingleTon(){}
    public static SingleTon getInstance(){
        if(instance == null){
                synchronized(""){
                    if(instance == null){return new SingleTon();}
                }
        }
        return instance;
    }
}

16.
JSP的9种内置对象:
request:
HttpServletRequest类的实例,
客户端的请求信息被封装在request对象中
response:
HttpServletResponse类的实例,
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。
out:
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
session:
session对象指的是客户端与服务器的一次会话,从客户端连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例
page:
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
application:
ServletContext类的实例,
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭
exception:
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
pageContext:
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext
config:
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
17.session和cookie的区别?
18.JDBC的操作步骤?

posted @ 2012-04-11 11:32 GavinMiao 阅读(1536) | 评论 (0)编辑 收藏

面试题(移动通信方面)

1.方法重载与多态,简述;
2.什么是设计模式?使用过哪些?
3.列出熟悉的java开源项目及简述;
4.一组radio,用alert弹出当前所选的是第几个radio?用原生javascript;
5.function showme(){
Book.prototype.abc = function(){
alert('456');
}
var abook = new Book(1,2);
Book.abc = function(){
alert('123');
}
abook.abc();
Book.abc();
abc();//此方法调用浏览器会报错,未定义
}
function Book(a,b){
this.a = a;
this.b = b;
Book.abc = function(){
alert('def');
}
this.abc = function(){
alert('xyz');
}
abc = function(){
alert('@@@@@@');
}
var abc = function(){
alert('$$$$$$');
}
}

点击按钮调用showme(),页面显示结果为:
第一个弹出框:xyz
第二个弹出框:123

6.线程的四种状态?
7.ext有哪些组件?ext如何与后台交互?
8.HashMap放入、查找、删除,将所有value放入一个数组,得到map中所有内容;List添加、查找、删除;
9.List<Student> student(name,age) 比较oldList<Student>和newList<student>,按名字比较,获得新增的、修改的、删除学生列表;
10.使用过哪些xml技术?怎么实现的?
11.java异常:throws、throw、try、catch、finally,举例,如何处理异常
12.字符串反转:
public class TestKnowleage5 {
public static void main(String[] args){
System.out.println(reverse("abc"));
System.out.println(reverse2("abc"));
System.out.println(reverse3("abc"));
}
public static String reverse(String str){
return new StringBuffer(str).reverse().toString();
}
public static String reverse2(String str){
char[] chs = str.toCharArray();
char[] re = new char[chs.length];
for(int i = 0 ; i<chs.length;i++){
re[i] = chs[chs.length - i - 1]; 
}
return new String(re);
}
public static String reverse3(String str){
char[] chs = str.toCharArray();
String re = ""; 
for(int i = 0;i<chs.length;i++){
re += chs[chs.length - 1 -i];
}
return re;
}
}

posted @ 2012-04-10 22:39 GavinMiao 阅读(526) | 评论 (0)编辑 收藏

面试题(ERP行业)

//此句,编译无法通过,Cannot make a static reference to the non-static field b
1.arrayList、linkedList、vector的区别
2.
写几种J2EE规范并简要描述
3.什么是设计模式?用过哪些设计模式?
4.OO的四大特性是哪些?并简要描述
5.方法重载、多态概念及简要描述;
6.sql常用的优化方法有哪些?
7.sleep()与wait()的区别?
8.
public class TestException {
public static void main(String[] args) {
int i = 1;
switch(i){
case 0:
System.out.println(0);
break;
case 1:
System.out.println(1);
default:
System.out.println(4);
case 2:
System.out.println(2);
case 3:
System.out.println(3);
}
}
}
运行结果:
1
4
2
3
9.HashTable和HashMap的区别
10.怎样理解mvc模式?
11.抽象类、接口的区别?
12.智力题:
有1-7号,7块地,S、U、V、W、X 5个遗产继承者,
S若继承2号,不能继承3号;
3号和4号不能同时继承;
S若继承一块或多块地,则U不能继承
1块地不能被2人合分;

问:若S继承2号地,剩余3个人中,不能同时哪2块地?
A:1和6 B:1和7 c:3和7 d:1和5 e:1和3
13.
public class TestKnowleage5 {
static int a;
int b,c=0;
public static void main(String[] args){
a++;
b++;//此句,编译无法通过,Cannot make a static reference to the non-static field b
c++; //此句,编译无法通过,cannot make a static reference to the non-static field c
}
}


参考文章:

posted @ 2012-04-10 21:59 GavinMiao 阅读(515) | 评论 (0)编辑 收藏

用友面试题(参考网上总结而出)

1,有三个jsp页面:a.jsp b.jsp c.jsp,流程是a.jsp--> b.jsp--> c.jsp,其中a.jsp提交的数据要在c.jsp中访问,用最简单的办法怎么做?不用session。
在b.jsp中放N个hidden隐藏域保存a.jsp中的数据,一起提交到c.jsp,在c.jsp中取出。2.sql server支持集群么?
支持,不过属于热备份类型,不能做负载均衡。不过符合你的条件
首先系统做集群,数据库文件放到磁盘阵列里,双机或多机共同访问磁盘阵列,就可以了,可以集群后做负载均衡;
3.HashTable与HashMap的区别:
1)HashMap非线程安全,HashTable线程安全;
2)HashMap可放一条key为空的记录,任意记录的value可为空,hashTable不可以;
3)hashMap去掉了contains方法,增加了containsKey和containsValue方法;
4.如何理解mvc模式:
mvc是sun提出的model2开发模式,将控制、视图、模型进行了分离;提高了可维护性、扩展性、可移植性、组件的可复用性;
5.SingleTon:
6.对象序列化的含义:
java序列化技术可以使你将一个对象的状态写入一个byte流里,并且可以从其它地方把该byte流里的数据读出来,重新构造一个相同的对象。
这种机制允许你将对象通过网络传播,并且随时可以把对象持久化到数据库、文件等系统里,java的序列化技术是RMI、EJB等技术的基础;
实现方法:implements Serializable标记为可序列化,然后用ObjectOutputStream和ObjectInputStream读写;
7.数据库中的锁包含哪些?
排它锁和共享锁
8.jsp和servlet的区别:
1)简单来说:jsp就是含有java代码的html,servlet就是含有html的java代码;
2)jsp最终被解释成servlet,编译再执行,jsp不过是servlet的另一种编写形式;
3)jsp擅长表示,servlet擅长数据处理,在mvc中jsp处于视图层,servlet处于控制层;
9.oracle在数据库中的交集怎么表示:
1)用intersect操作符 2)用in 语句
9.JNDI、JMS、JTA、RMI:

JNDI:java naming and directory interface java命名目录接口
JMS:java messing service java消息服务
JTA:java transaction api java事务api
RMI:
Remote Method Invocation 远程方法调用

10.事务:

1)ACID属性:
A:atomic 原子性
C:consistent 一致性
I:isolation 隔离性
D:duration 持久性
2)概念:事务就是一系列操作,它们完成一项任务。只要这些操作里有一项没成功,事务就操作失败,发生回滚事件。即撤销前面的操作,这样可以保证数据的一致性。而且可以把操作放在缓存里,等所有操作都成功就提交数据库,这样保证费时的操作都是有效操作。
3)隔离级别 4)传播行为
参考文档:http://wenku.baidu.com/view/56a532eb856a561252d36f81.html

posted @ 2012-04-09 11:32 GavinMiao 阅读(1067) | 评论 (0)编辑 收藏

面试题(某呼叫中心)

1.String b = new String("1"+"2"); -->4个
2.Customer(id,name,phone,country);每个客户均有地区(country)属性,每个地区可有1或多个客户,查询拥有超过10名客户的地区的列表;
3.public interface TreeNode{
    String getName();
    List getChildren();
}
 写一个print()方法,打印各级节点名称.

4.String与StringBuffer的区别?
String
5.ajax名词解释,它的核心价值及原理;
6.事务的概念及名词解释;
7.数据库表之间有几种关系,并举例;
8.Filter的原理,常见用例;
9.视图与表的区别?触发器类型有哪些类型?
10.建表及各种约束;
11.hibernate导入大量数据时,为了避免内存中产生大量对象,在编码时注意什么,如何去除?

posted @ 2012-04-07 00:14 GavinMiao 阅读(753) | 评论 (0)编辑 收藏

String面试题

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-04-06 18:26 GavinMiao 阅读(82) | 评论 (0)编辑 收藏

面试题(通信行业公司)

一、unix:
1.ps -ef|grep tomcat
2.mkdir dir
3.打tar包:tar -cvf XXX.tar XXX
4.解压tar包:tar -xvf XXX.tar
二、java
1.HashMap和HashTable的区别:
HashMap不是线程安全的,
HashTable是线程安全的
HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
HashTable使用Enumeration,HashMap使用Iterator。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。
Hashtable是基于陈旧的Dictionary类,完成了Map接口;HashMap是Java 1.2引进的Map接口的一个实现(HashMap继承于AbstractMap,AbstractMap完成了Map接口)。
HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
哈希值的使用不同,HashTable直接使用对象的hashCode。
2.什么是java的序列化?如何实现java的序列化:

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

序列化的实现:将需要被序列化的类实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

3.什么是java的单例模式?写一个单例模式;
单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

  代码清单1:饿汉式单例类

public class EagerSingleton 

    private static final EagerSingleton m_instance = new EagerSingleton(); 

   /** 
   * 私有的默认构造方法 
   */
 
   private EagerSingleton() { } 

   /** 
   * 静态方法获得单例 
   */ 
   public static EagerSingleton getInstance() 
   {
      return m_instance; 
   }
}

代码清单2:懒汉式单例类

package com.javapatterns.singleton.demos;
public class LazySingleton
{
    private static LazySingleton m_instance = null;


    /**
    * 私有的默认构造方法,保证外界无法直接实例化
    */
    private LazySingleton() { }


    /**
    * 静态方法,返还此类的惟一实例
    */
    public synchronized static LazySingleton getInstance()
    {
        if (m_instance == null)
        {
            m_instance = new LazySingleton();
        }
        return m_instance;
    }
}

4.静态块与构造器在继承中的执行顺序:

public class TestExeuteOrder {

public static void main(String[] args) {
Parent p = new ChildTest();
p = new ChildTest();

}

}
class ChildTest extends Parent{
static{
System.out.println("in child static");
}
public ChildTest(){
System.out.println("in child construtor");
}
}

class Parent{
static{
System.out.println("in parent static");
}
public Parent(){
System.out.println("in parent construtor");
}
}
运行结果:
in parent static
in child static
in parent construtor
in child construtor
in parent construtor
in child construtor
5.成员内部类:
public class TestExeuteOrder{
class Inner{
void test(){
if(TestExeuteOrder.this.flag){
System.out.println("what a funny");
}
}
}
private boolean flag = true;
public TestExeuteOrder(){
new Inner().test();
}
public static void main(String[] args){
new TestExeuteOrder();
}
}
运行结果:
what a funny
6.参数传递:
public class TestExeuteOrder{

public static void main(String[] args){
String a = "ello";
TestExeuteOrder t = new TestExeuteOrder();
t.change(a);
System.out.println(a);
}
public void change(String str){
str += "H";
}
}
结果:
ello
7.参数传递2:
public class TestExeuteOrder{

public static void main(String[] args){
StringBuffer x = new StringBuffer("A");
StringBuffer y = new StringBuffer("B");
change(x,y);
System.out.println(x+" "+y);
}
public static void change(StringBuffer a,StringBuffer b){
a.append(b);
b = a;
}
}
结果为:
AB B
8.

public class TestExeuteOrder{
public static void main(String[] args){
String a = "good";
char[] b = new char[]{'a','b','c'};
method(a,b);
System.out.println("a="+a+"------>b="+new String(b));
}
public static void method(String a,char[] b){
a = "Test ok";
b[0] = 'g';
}
}
结果:
a=good------>b=gbc
三、SQL:

 

1.存储过程与函数的区别:
1)前者,程序头部声明用的是procedure;后者,程序头部声明用的是function;
2)前者,不需要描述返回类型,后者需要;
3)前者可以作为一个独立的pl/sql语句来执行;后者不能独立运行,必须作为表达式的一部分条用;
4)sql语句中不可调用procedure,但可以调用function;
2.查询student表中name重复的记录:

select * from student where name in(select name from student group by sname having count(*) >1);

3.table表中有两列A,B,如果A>B选择A,如果A<B,选择B:

select( case when s1.A>s1.B then s1.A  when s1.A<s1.B then s1.B end) re from student s1;

 

posted @ 2012-03-30 16:00 GavinMiao 阅读(733) | 评论 (0)编辑 收藏

异常积累:NoClassDefFoundError: org/hibernate/ConnectionReleaseMode Error creating bean with name 'sessionFactory'

jar包不全,更新lib目录后,不再报错。

posted @ 2012-03-28 16:06 GavinMiao 阅读(388) | 评论 (0)编辑 收藏

公司口碑及待遇评价的网站

1.公司速查手册 :http://www.b1.tooyard.com/
2.分智网:http://www.fenzhi.com/  
3.我评it:http://wopingit.com/   
4.企业点评网:http://www.71dp.com/   
5.中国企业评价网: http://www.ceea.net.cn/  
6.公司点评网:http://www.gsdpw.com/  
7.企业付费邀请面试:http://www.tradecv.com/

posted @ 2012-03-27 23:13 GavinMiao 阅读(1051) | 评论 (1)编辑 收藏

ftp-java实现

一、利用框架:
1.jre下的rt.jar中sun.net.ftpClient
2.common net 中的ftp包
二、ftp协议认识:
参考规范:RFC 959
1.文件传输协议:file transfer protocol (ftp)
2.名词解释:
DTP:
数据传输过程
EOR:记录尾
PI:协议解释器
NTV:
网络虚拟终端
NVFS:
网络虚拟文件系统
3.
控制连接是建立在USER-PIT和SERVER-PI之间用于交换命令与应答的通信链路。
4.
数据连接是传输数据的全双工连接。传输数据可以发生在服务器DTP和用户DTP之间也可以发生在两个服务器DTP之间。
5.
数据连接只传输数据,控制连接传送命令和响应。
6.
FTP使用Telnet协议进行控制连接
7.




参考文章:http://blog.csdn.net/williamzhou/article/details/215293 

posted @ 2012-03-26 18:03 GavinMiao 阅读(378) | 评论 (0)编辑 收藏

ssh集成中session的管理(转载)

     摘要: 文章来源:http://www.iteye.com/topic/7339711.通过getSession()方法获得session进行操作 Java代码  public class Test  extends HibernateDaoSupport{      ...  阅读全文

posted @ 2012-03-23 15:33 GavinMiao 阅读(4715) | 评论 (0)编辑 收藏

spring2.0学习笔记

一、setter DI:
<bean>
    <property name="">
        <ref bean="bean的name或id"/>
    </property>
    <property name="">
        <!--内部bean-->
        <bean></bean>
    </property>
    <property name="">
        <ref local="只能是同一文件的bean的id"/>
    </property>
    <!--idref元素用来引用其它bean的id,spring会验证id是否存在-->
    <property name="">
        <idref bean=""/>
    </property>
    <!--idref元素的local属性用来引用其它bean的id,spring会验证id是否存在,并且验证与引用的bean是否在同一文件-->
    <property name="">
        <idref local=""/>
    </property>
    <property name="">
        <value></value>
    </property>
    <property name="" ref=""/>
    <property name="" value=""/>
    <property name="">
        <null/>
    </property>
    <property name="">
            <props>
                <prop key=""></prop>
                 <prop key=""></prop>
            </props>
    </property>

    <property name="">
        <list>
            <value></value>
            <ref bean=""/>    
        </list>
    </property>

    <property name="">
        <set>
            <value></value>
            <ref bean=""/>    
        </set>
    </property>

    <property name="">
        <map>
            <entry>
                <key>
                    <value></value>
                </key>
                <value></value>
            </entry>
            <entry key="" value=""/><!--推荐-->
            <entry key="">
                <value>
                </value>
            </entry>
            <entry key-ref="" value-ref=""/>
            <entry>
                <key>
                    <value></value>
                </key>
                <ref bean=""/>
            </entry>
        </map>
    </property>
</bean>
二、contructor DI:
<bean>
    <constructor-arg>
        <ref bean=""/>
    </constructor-arg>
    <constructor-arg ref="bean的name或id"/>
    <constructor-arg value=""/>
    <constructor-arg type="" value=""/>
    <constructor-arg index="" value=""/><!--首选-->
</bean>

posted @ 2012-03-22 17:52 GavinMiao 阅读(340) | 评论 (0)编辑 收藏

spring1.1学习笔记

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-03-21 17:34 GavinMiao 阅读(61) | 评论 (0)编辑 收藏

spring2.5新特性

1.spring2.5完全支持java1.6
2.完全支持Java EE 5
3.spring2.5提供了完整的annotation集合:@Autowired,以及对JSR-250注解@Resource,@PostConstruct,@PreDestroy
4.在classpath中自动搜索带有annotation的组件。
5.spring2.5加入了对bean(...)pointcut元素的支持,在spring定义的bean命名中对指定的命名进行匹配
6.在spring应用中使用AspectJ加载时织入context:load-time-weaver
7.增加,通过context:load-time-weaver和tx:annotation-driven mode="aspectj"联合使用的注解驱动的事务管理
8.对JPA,升级到支持Open JPA1.0
9.2.5显著的扩充了SimpleJdbcTemplate的功能,引入了SimpleJdbcCall和SimpleJdbcInsert操作对象
10,web层,增加了基于注解的Controller
11.spring2.5引入了基于annotation的MVC编程模型,使用@RequestMapping、@RequestParam、@ModelAttribute等等
12.增加对tiles2的支持
13.引入了sping TestContext Framework,它提供了注解驱动的单元和集成测试支持

posted @ 2012-03-20 17:57 GavinMiao 阅读(541) | 评论 (0)编辑 收藏

spring2.0新特性

1.
引入request scope、session scope和可自定义的scope(hooks)
2.
引入了XML 
Schema的namespace,
简化了配置,包括了对bean属性的各种简化,AOP配置的简化,事务配置的简化,JNDI配置的简化等方面
3.spring2.0集成了AspectJ切入点(pointcut)语言和@AspectJ切面(aspect)声明类型
4.支持@AspectJ注解定义切面
5.提供了JPA的抽象层
6.对于JMS,spring2.0提供异步接受消息
7.对于jdbc,增加了NamedParameterJdbcTemplate、SimpleJdbcTemplate
8.对java1.5的支持,结合AspectJ使用@Transactional、使用AspectJ来为domain object进行依赖注入、@AspectJ、@Required、SimpleJdbcTemplate

posted @ 2012-03-20 17:37 GavinMiao 阅读(293) | 评论 (0)编辑 收藏

window下dos窗口中文乱码解决办法


进入注册表:
HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
新建DWORD值,然后重命名为:CodePage,修改其值为十进制的936

posted @ 2012-03-20 11:16 GavinMiao 阅读(535) | 评论 (0)编辑 收藏

java中的位运算应用

1, a & 0xff 可得到a对应而二进制的最后8位;
2,左移n位--》表示乘以2的N次方
3,  右移n位-->表示除以2的N次方

posted @ 2012-03-19 16:36 GavinMiao 阅读(362) | 评论 (0)编辑 收藏

spring整合struts2

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-03-16 14:55 GavinMiao 阅读(21) | 评论 (0)编辑 收藏

spring2.0整合struts1(转载)

     摘要: 文章来源:http://hi.baidu.com/liuzhe041/blog/item/e12251dcf2ffe053ccbf1ad2.htmlspring 和struts整合 有3种方式,推荐用第三种。下面一一介绍,不管使用哪种方式,都需要在web.xml 中配置 spring的 监听器Java代码 <context-param>   &n...  阅读全文

posted @ 2012-03-16 10:14 GavinMiao 阅读(278) | 评论 (0)编辑 收藏

spring整合hibernate(annotation方式)

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-03-15 11:08 GavinMiao 阅读(73) | 评论 (0)编辑 收藏

spring整合hibernate

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-03-14 17:42 GavinMiao 阅读(68) | 评论 (0)编辑 收藏

java播放wav的基础代码(转载)

 文章来源:http://hi.baidu.com/breezedancer/blog/item/7eebb499680d8f086e068cb9.html 

import javax.sound.sampled.*;
import java.io.*;
public class TestMusic{
 
 private AudioFormat format;
    private byte[] samples;
 
 public static void main(String args[])throws Exception{
  TestMusic sound =new TestMusic("1.wav");
  InputStream stream =new ByteArrayInputStream(sound.getSamples());
        // play the sound
        sound.play(stream);
        // exit
        System.exit(0);
 }
 
    public TestMusic(String filename) {
        try {
            // open the audio input stream
            AudioInputStream stream =AudioSystem.getAudioInputStream(new File(filename));
            format = stream.getFormat();
            // get the audio samples
            samples = getSamples(stream);
        }
        catch (UnsupportedAudioFileException ex) {
            ex.printStackTrace();
        }
        catch (IOException ex) {
            ex.printStackTrace();
        }
   }
   
   public byte[] getSamples() {
        return samples;
    }
   
     private byte[] getSamples(AudioInputStream audioStream) {
        // get the number of bytes to read
        int length = (int)(audioStream.getFrameLength() * format.getFrameSize());

        // read the entire stream
        byte[] samples = new byte[length];
        DataInputStream is = new DataInputStream(audioStream);
        try {
            is.readFully(samples);
        }
        catch (IOException ex) {
            ex.printStackTrace();
        }

        // return the samples
        return samples;
    }
 
 public void play(InputStream source) {

        // use a short, 100ms (1/10th sec) buffer for real-time
        // change to the sound stream
        int bufferSize = format.getFrameSize() *
            Math.round(format.getSampleRate() / 10);
        byte[] buffer = new byte[bufferSize];

        // create a line to play to
        SourceDataLine line;
        try {
            DataLine.Info info =
                new DataLine.Info(SourceDataLine.class, format);
            line = (SourceDataLine)AudioSystem.getLine(info);
            line.open(format, bufferSize);
        }
        catch (LineUnavailableException ex) {
            ex.printStackTrace();
            return;
        }

        // start the line
        line.start();

        // copy data to the line
        try {
            int numBytesRead = 0;
            while (numBytesRead != -1) {
                numBytesRead =
                    source.read(buffer, 0, buffer.length);
                if (numBytesRead != -1) {
                   line.write(buffer, 0, numBytesRead);
                }
            }
        }
        catch (IOException ex) {
            ex.printStackTrace();
        }

        // wait until all data is played, then close the line
        line.drain();
        line.close();

    }


}

posted @ 2012-03-14 14:30 GavinMiao 阅读(1465) | 评论 (0)编辑 收藏

informix小知识

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-03-13 17:05 GavinMiao 阅读(63) | 评论 (0)编辑 收藏

延迟加载

也叫延迟检索或懒加载
一.实现方式:
1.*hbm.xml中的class元素的lazy属性设置为true;
2.*hbm.xml中的set元素的lazy属性设置为true;
3.
@[One|Many]ToOne](fetch=FetchType.LAZY) @LazyToOne(PROXY) @Fetch(SELECT)
@[One|Many]ToOne](fetch=FetchType.EAGER) @LazyToOne(FALSE) @Fetch(JOIN)
@ManyTo[One|Many](fetch=FetchType.LAZY) @LazyCollection(TRUE)@Fetch(SELECT)
@ManyTo[One|Many](fetch=FetchType.EAGER) @LazyCollection(FALSE) @Fetch(JOIN)

参考文章:

posted @ 2012-03-13 10:46 GavinMiao 阅读(346) | 评论 (0)编辑 收藏

hibernate注意点

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-03-13 09:53 GavinMiao 阅读(64) | 评论 (0)编辑 收藏

commit()与flush()的区别

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-03-13 09:23 GavinMiao 阅读(75) | 评论 (0)编辑 收藏

load与get的区别

1.如果数据库没有匹配的记录,load()方法可能会抛出无法恢复的异常(unrecoverable exception);get()方法会返回null;
2.load可以使用延迟加载;get不可以;


load与get的工作原理:
get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;
若设置了lazy=true,load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库;
未设置lazy=true时,与get方法相同;
注意:
到底使用谁:如果不确定是否有匹配的行存在,应该使用get方法。

posted @ 2012-03-13 09:02 GavinMiao 阅读(266) | 评论 (0)编辑 收藏

Linux系统参数查询命令

查看操作系统版本:
head -n 1 /etc/issue
Red Hat Enterprise Linux Server release 6.0 (Santiago)
查看cpu信息:
cat /proc/cpuinfo
model name      : Intel(R) Xeon(R) CPU           E5450  @ 3.00GHz
查看内存使用情况:
free -m
查看各分区使用情况:
df -h 
查看指定目录的大小
du -sh <目录名>
查看内存总量:
grep MemTotal /proc/meminfo
查看空闲内存量:
grep MemFree /proc/meminfo
查看实时的内存情况:
top

posted @ 2012-03-12 15:06 GavinMiao 阅读(609) | 评论 (0)编辑 收藏

呼叫中心企业

参考:http://www.ctiforum.com/expo/2012/ccec2012spring/010.htm 

华为技术有限公司
阿尔卡特朗讯
Genesys,阿尔卡特朗讯旗下公司
Dialogic公司
中国联通
中国电信集团号百信息服务有限公司
北京英立讯科技有限公司
杭州远传通信技术有限公司
奥迪坚通讯系统(上海)有限公司
缤特力贸易(苏州)有限公司
新太科技股份有限公司
深圳市东进通讯技术股份有限公司
Teleopti
广州市毅航通信技术有限公司
潮流网络技术有限公司
杭州三汇信息工程有限公司
亿迅(中国)软件有限公司
大唐高鸿数据网络技术股份有限公司
深圳市友邻通讯设备有限公司
北京易才博普奥管理顾问有限公司
北京天润融通科技有限公司
广州市杰音通讯科技有限公司
北京直真信通科技有限公司
广州市北恩电声技术有限公司
北京七星蓝图科技有限公司
北京科特尔泰讯科技有限公司
北京云端时代科技有限公司
北京宏盛高新技术有限公司
北京纽曼腾飞科技有限公司

posted @ 2012-03-09 15:26 GavinMiao 阅读(279) | 评论 (0)编辑 收藏

javascript面向对象

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-03-09 11:14 GavinMiao 阅读(86) | 评论 (0)编辑 收藏

不同厂商JDK下载网址



各厂商JDK官网下载地址: 
1、Oracle JDK,介质分32位和64位,分Linux、Solaris、Windows平台 
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html 
2、HP JDK,介质不分32位和64位,分PA和IA平台 
https://h20392.www2.hp.com/portal/swdepot/displayProductInfo.do?productNumber=HPUXJDKJRE60 
3、IBM JDK,介质分32位和64位 
https://www.ibm.com/developerworks/java/jdk/aix/service.html#i1 


参考文章:
http://shuwen.iteye.com/blog/1149992

posted @ 2012-03-08 15:30 GavinMiao 阅读(868) | 评论 (0)编辑 收藏

转载:Response.ContentType 详细列表

文章来源:http://www.cnblogs.com/chenghm2003/archive/2008/10/19/1314703.html

不同的ContentType 会影响客户端所看到的效果.默认的ContentType为 text/html 也就是网页格式.
代码如:
<% response.ContentType ="text/html" %> 
<!--#i nclude virtual="/ContentType.html" -->

显示的为网页,而
<% response.ContentType ="text/plain" %> 
<!--#i nclude virtual="/sscript/ContentType.html" -->

则会显示html原代码.

以下为一些常用的 ContentType
GIF images 
<% response.ContentType ="image/gif" %> 
<!--#i nclude virtual="/myimage.gif" -->

JPEG images 
<% response.ContentType ="image/jpeg" %> 
<!--#i nclude virtual="/myimage.jpeg" -->

TIFF images 
<% response.ContentType ="image/tiff" %> 
<!--#i nclude virtual="/myimage.tiff" -->

MICROSOFT WORD document 
<% response.ContentType ="application/msword" %> 
<!--#i nclude virtual="/myfile.doc" -->

RTF document 
<% response.ContentType ="application/rtf" %> 
<!--#i nclude virtual="/myfile.rtf" -->

MICROSOFT EXCEL document 
<% response.ContentType ="application/x-excel" %> 
<!--#i nclude virtual="/myfile.xls" -->

MICROSOFT POWERPOINT document 
<% response.ContentType ="application/ms-powerpoint" %> 
<!--#i nclude virtual="/myfile.pff" -->

PDF document 
<% response.ContentType ="application/pdf" %> 
<!--#i nclude virtual="/myfile.pdf" -->

ZIP document 
<% response.ContentType ="application/zip" %> 
<!--#i nclude virtual="/myfile.zip" -->



下面是更详细的ContentType
'ez' => 'application/andrew-inset', 
'hqx' => 'application/mac-binhex40', 
'cpt' => 'application/mac-compactpro', 
'doc' => 'application/msword', 
'bin' => 'application/octet-stream', 
'dms' => 'application/octet-stream', 
'lha' => 'application/octet-stream', 
'lzh' => 'application/octet-stream', 
'exe' => 'application/octet-stream', 
'class' => 'application/octet-stream', 
'so' => 'application/octet-stream', 
'dll' => 'application/octet-stream', 
'oda' => 'application/oda', 
'pdf' => 'application/pdf', 
'ai' => 'application/postscript', 
'eps' => 'application/postscript', 
'ps' => 'application/postscript', 
'smi' => 'application/smil', 
'smil' => 'application/smil', 
'mif' => 'application/vnd.mif', 
'xls' => 'application/vnd.ms-excel', 
'ppt' => 'application/vnd.ms-powerpoint', 
'wbxml' => 'application/vnd.wap.wbxml', 
'wmlc' => 'application/vnd.wap.wmlc', 
'wmlsc' => 'application/vnd.wap.wmlscriptc', 
'bcpio' => 'application/x-bcpio', 
'vcd' => 'application/x-cdlink', 
'pgn' => 'application/x-chess-pgn', 
'cpio' => 'application/x-cpio', 
'csh' => 'application/x-csh', 
'dcr' => 'application/x-director', 
'dir' => 'application/x-director', 
'dxr' => 'application/x-director', 
'dvi' => 'application/x-dvi', 
'spl' => 'application/x-futuresplash', 
'gtar' => 'application/x-gtar', 
'hdf' => 'application/x-hdf', 
'js' => 'application/x-javascript', 
'skp' => 'application/x-koan', 
'skd' => 'application/x-koan', 
'skt' => 'application/x-koan', 
'skm' => 'application/x-koan', 
'latex' => 'application/x-latex', 
'nc' => 'application/x-netcdf', 
'cdf' => 'application/x-netcdf', 
'sh' => 'application/x-sh', 
'shar' => 'application/x-shar', 
'swf' => 'application/x-shockwave-flash', 
'sit' => 'application/x-stuffit', 
'sv4cpio' => 'application/x-sv4cpio', 
'sv4crc' => 'application/x-sv4crc', 
'tar' => 'application/x-tar', 
'tcl' => 'application/x-tcl', 
'tex' => 'application/x-tex', 
'texinfo' => 'application/x-texinfo', 
'texi' => 'application/x-texinfo', 
't' => 'application/x-troff', 
'tr' => 'application/x-troff', 
'roff' => 'application/x-troff', 
'man' => 'application/x-troff-man', 
'me' => 'application/x-troff-me', 
'ms' => 'application/x-troff-ms', 
'ustar' => 'application/x-ustar', 
'src' => 'application/x-wais-source', 
'xhtml' => 'application/xhtml+xml', 
'xht' => 'application/xhtml+xml', 
'zip' => 'application/zip', 
'au' => 'audio/basic', 
'snd' => 'audio/basic', 
'mid' => 'audio/midi', 
'midi' => 'audio/midi', 
'kar' => 'audio/midi', 
'mpga' => 'audio/mpeg', 
'mp2' => 'audio/mpeg', 
'mp3' => 'audio/mpeg', 
'aif' => 'audio/x-aiff', 
'aiff' => 'audio/x-aiff', 
'aifc' => 'audio/x-aiff', 
'm3u' => 'audio/x-mpegurl', 
'ram' => 'audio/x-pn-realaudio', 
'rm' => 'audio/x-pn-realaudio', 
'rpm' => 'audio/x-pn-realaudio-plugin', 
'ra' => 'audio/x-realaudio', 
'wav' => 'audio/x-wav', 
'pdb' => 'chemical/x-pdb', 
'xyz' => 'chemical/x-xyz', 
'bmp' => 'image/bmp', 
'gif' => 'image/gif', 
'ief' => 'image/ief', 
'jpeg' => 'image/jpeg', 
'jpg' => 'image/jpeg', 
'jpe' => 'image/jpeg', 
'png' => 'image/png', 
'tiff' => 'image/tiff', 
'tif' => 'image/tiff', 
'djvu' => 'image/vnd.djvu', 
'djv' => 'image/vnd.djvu', 
'wbmp' => 'image/vnd.wap.wbmp', 
'ras' => 'image/x-cmu-raster', 
'pnm' => 'image/x-portable-anymap', 
'pbm' => 'image/x-portable-bitmap', 
'pgm' => 'image/x-portable-graymap', 
'ppm' => 'image/x-portable-pixmap', 
'rgb' => 'image/x-rgb', 
'xbm' => 'image/x-xbitmap', 
'xpm' => 'image/x-xpixmap', 
'xwd' => 'image/x-xwindowdump', 
'igs' => 'model/iges', 
'iges' => 'model/iges', 
'msh' => 'model/mesh', 
'mesh' => 'model/mesh', 
'silo' => 'model/mesh', 
'wrl' => 'model/vrml', 
'vrml' => 'model/vrml', 
'css' => 'text/css', 
'html' => 'text/html', 
'htm' => 'text/html', 
'asc' => 'text/plain', 
'txt' => 'text/plain', 
'rtx' => 'text/richtext', 
'rtf' => 'text/rtf', 
'sgml' => 'text/sgml', 
'sgm' => 'text/sgml', 
'tsv' => 'text/tab-separated-values', 
'wml' => 'text/vnd.wap.wml', 
'wmls' => 'text/vnd.wap.wmlscript', 
'etx' => 'text/x-setext', 
'xsl' => 'text/xml', 
'xml' => 'text/xml', 
'mpeg' => 'video/mpeg', 
'mpg' => 'video/mpeg', 
'mpe' => 'video/mpeg', 
'qt' => 'video/quicktime', 
'mov' => 'video/quicktime', 
'mxu' => 'video/vnd.mpegurl', 
'avi' => 'video/x-msvideo', 
'movie' => 'video/x-sgi-movie', 
'ice' => 'x-conference/x-cooltalk' 


posted @ 2012-03-07 13:13 GavinMiao 阅读(243) | 评论 (0)编辑 收藏

throws与throw的区别

1.throw是语句抛出一个异常,throws是方法抛出异常;
2.throws可声明多个异常,用逗号分割;
3.throws可单独使用,throw必须与try-catch-finally或throws搭配使用;
4.throws表示可能抛出哪些异常,throw是必定抛出这个异常;

posted @ 2012-03-06 09:48 GavinMiao 阅读(339) | 评论 (0)编辑 收藏

flex入门知识


一、
1、下载flex SDK:
http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK 
2、将flexSDK_home/bin加入path环境变量
3、创建mxml文件
4、编译mxml文件:
dos 命令:mxmlc --strict=true --file-specs exer.mxml
5、运行SWF文件:
用Adope flash player运行;

注意:
要查看编译时生成as文件,可使用命令:
mxmlc --keep-generated-actionscript --strict=true --file-specs exer.mxml
二、

posted @ 2012-03-02 15:14 GavinMiao 阅读(316) | 评论 (0)编辑 收藏

java.lang.NoSuchFieldError: deferredExpression

java.lang.NoSuchFieldError: deferredExpression at org.apache.taglibs.standard.tag.common.core.ForEachSupport.release(ForEachSupport.java:178) at org.apache.jasper.runtime.TagHandlerPool.release(TagHandlerPool.java:166) at org.apache.jsp.index_jsp._jspDestroy(index_jsp.java:31)
java ee 5 libraries带了一个jstl-1.2.jar
Reference Libraries里面还有jstl-1.1.2.jar
删除一个就OK

posted @ 2012-02-29 17:23 GavinMiao 阅读(1834) | 评论 (0)编辑 收藏

java小知识注意项

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2012-02-22 17:35 GavinMiao 阅读(39) | 评论 (0)编辑 收藏

CLASS_PATH认识

作用:JRE按CLASS_PATH指定的路径搜索类文件;
注意:
1.一般设置:
CLASS_PATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
2.jdk 1.5以上版本可以不用设置此环境变量;

posted @ 2012-02-22 13:51 GavinMiao 阅读(301) | 评论 (0)编辑 收藏

POI学习

POI所有组件:


posted @ 2012-02-22 10:01 GavinMiao 阅读(288) | 评论 (0)编辑 收藏

tomcat对jsp、servlet版本要求

Apache Tomcat version 5.5 implements the Servlet 2.4 and JavaServer Pages 2.0 specifications  
Apache Tomcat version 6.0 implements the Servlet 2.5 and JavaServer Pages 2.1 specifications 
Apache Tomcat version 7.0 implements the Servlet 3.0 and JavaServer Pages 2.2 
specifications




如果某jar包的META-INF目录下存在对应的tld文件,那么对于JSP1.2+的web 容器,
若把此jar包放在WEB-INF/lib目录下,可以直接引用标签,
不用再web.xml里面配置taglib;

posted @ 2012-02-14 16:31 GavinMiao 阅读(235) | 评论 (0)编辑 收藏

(转载)hiernate 参数

原文地址:http://www.ideagrace.com/html/doc/2007/01/30/08608.html

属性名用途
hibernate.dialect一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL. 取值 full.classname.of.Dialect
hibernate.show_sql输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个log category设为debug。 eg. true | false
hibernate.format_sql在log和console中打印出更漂亮的SQL。 取值 true | false
hibernate.default_schema在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上. 取值 SCHEMA_NAME
hibernate.default_catalog在生成的SQL中, 将给定的catalog附加于非全限定名的表名上. 取值 CATALOG_NAME
hibernate.session_factory_nameSessionFactory创建后,将自动使用这个名字绑定到JNDI中. 取值 jndi/composite/name
hibernate.max_fetch_depth为单向关联(一对一, 多对一)的外连接抓取(outer join fetch)树设置最大深度. 值为0意味着将关闭默认的外连接抓取. 取值 建议在03之间取值
hibernate.default_batch_fetch_size为Hibernate关联的批量抓取设置默认数量. 取值 建议的取值为48, 和16
hibernate.default_entity_mode为由这个SessionFactory打开的所有Session指定默认的实体表现模式. 取值 dynamic-mapdom4jpojo
hibernate.order_updates强制Hibernate按照被更新数据的主键,为SQL更新排序。这么做将减少在高并发系统中事务的死锁。 取值 true | false
hibernate.generate_statistics如果开启, Hibernate将收集有助于性能调节的统计数据. 取值 true | false
hibernate.use_identifer_rollback如果开启, 在对象被删除时生成的标识属性将被重设为默认值. 取值 true | false
hibernate.use_sql_comments如果开启, Hibernate将在SQL中生成有助于调试的注释信息, 默认值为false取值 true | false

表 3.4.  Hibernate JDBC和连接(connection)属性

属性名用途
hibernate.jdbc.fetch_size非零值,指定JDBC抓取数量的大小 (调用Statement.setFetchSize()).
hibernate.jdbc.batch_size非零值,允许Hibernate使用JDBC2的批量更新. 取值 建议取530之间的值
hibernate.jdbc.batch_versioned_data如果你想让你的JDBC驱动从executeBatch()返回正确的行计数 , 那么将此属性设为true(开启这个选项通常是安全的). 同时,Hibernate将为自动版本化的数据使用批量DML. 默认值为falseeg. true | false
hibernate.jdbc.factory_class选择一个自定义的Batcher. 多数应用程序不需要这个配置属性. eg. classname.of.Batcher
hibernate.jdbc.use_scrollable_resultset允许Hibernate使用JDBC2的可滚动结果集. 只有在使用用户提供的JDBC连接时,这个选项才是必要的, 否则Hibernate会使用连接的元数据. 取值 true | false
hibernate.jdbc.use_streams_for_binary在JDBC读写binary (二进制)serializable (可序列化) 的类型时使用流(stream)(系统级属性). 取值 true | false
hibernate.jdbc.use_get_generated_keys在数据插入数据库之后,允许使用JDBC3 PreparedStatement.getGeneratedKeys() 来获取数据库生成的key(键)。需要JDBC3+驱动和JRE1.4+, 如果你的数据库驱动在使用Hibernate的标 识生成器时遇到问题,请将此值设为false. 默认情况下将使用连接的元数据来判定驱动的能力. 取值 true|false
hibernate.connection.provider_class自定义ConnectionProvider的类名, 此类用来向Hibernate提供JDBC连接. 取值 classname.of.ConnectionProvider
hibernate.connection.isolation设置JDBC事务隔离级别. 查看java.sql.Connection来了解各个值的具体意义, 但请注意多数数据库都不支持所有的隔离级别. 取值 1, 2, 4, 8
hibernate.connection.autocommit允许被缓存的JDBC连接开启自动提交(autocommit) (不建议). 取值 true | false
hibernate.connection.release_mode指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用after_statement, 这样在每次JDBC调用后,都会主动的释放连接. 对于非JTA的连接, 使用after_transaction在每个事务结束时释放连接是合理的. auto将为JTA和CMT事务策略选择after_statement, 为JDBC事务策略选择after_transaction取值 on_close | after_transaction | after_statement | auto
hibernate.connection.<propertyName>将JDBC属性propertyName传递到DriverManager.getConnection()中去.
hibernate.jndi.<propertyName>将属性propertyName传递到JNDI InitialContextFactory中去.

表 3.5.  Hibernate缓存属性

属性名用途
hibernate.cache.provider_class自定义的CacheProvider的类名. 取值 classname.of.CacheProvider
hibernate.cache.use_minimal_puts以频繁的读操作为代价, 优化二级缓存来最小化写操作. 在Hibernate3中,这个设置对的集群缓存非常有用, 对集群缓存的实现而言,默认是开启的. 取值 true|false
hibernate.cache.use_query_cache允许查询缓存, 个别查询仍然需要被设置为可缓存的. 取值 true|false
hibernate.cache.use_second_level_cache能用来完全禁止使用二级缓存. 对那些在类的映射定义中指定<cache>的类,会默认开启二级缓存. 取值 true|false
hibernate.cache.query_cache_factory自定义实现QueryCache接口的类名, 默认为内建的StandardQueryCache取值 classname.of.QueryCache
hibernate.cache.region_prefix二级缓存区域名的前缀. 取值 prefix
hibernate.cache.use_structured_entries强制Hibernate以更人性化的格式将数据存入二级缓存. 取值 true|false

表 3.6.  Hibernate事务属性

属性名用途
hibernate.transaction.factory_class一个TransactionFactory的类名, 用于Hibernate Transaction API (默认为JDBCTransactionFactory). 取值 classname.of.TransactionFactory
jta.UserTransaction一个JNDI名字,被JTATransactionFactory用来从应用服务器获取JTA UserTransaction取值 jndi/composite/name
hibernate.transaction.manager_lookup_class一个TransactionManagerLookup的类名 - 当使用JVM级缓存,或在JTA环境中使用hilo生成器的时候需要该类. 取值 classname.of.TransactionManagerLookup
hibernate.transaction.flush_before_completion如果开启, session在事务完成后将被自动清洗(flush)。 现在更好的方法是使用自动session上下文管理。取值 true | false
hibernate.transaction.auto_close_session如果开启, session在事务完成后将被自动关闭。 现在更好的方法是使用自动session上下文管理。取值 true | false

表 3.7.  其他属性

属性名用途
hibernate.current_session_context_class为"当前" Session指定一个(自定义的)策略。eg. jta | thread | custom.Class
hibernate.query.factory_class选择HQL解析器的实现. 取值 org.hibernate.hql.ast.ASTQueryTranslatorFactory or org.hibernate.hql.classic.ClassicQueryTranslatorFactory
hibernate.query.substitutions将Hibernate查询中的符号映射到SQL查询中的符号 (符号可能是函数名或常量名字). 取值 hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC
hibernate.hbm2ddl.autoSessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库. 使用 create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema. 取值 validate | update | create | create-drop
hibernate.cglib.use_reflection_optimizer开启CGLIB来替代运行时反射机制(系统级属性). 反射机制有时在除错时比较有用. 注意即使关闭这个优化, Hibernate还是需要CGLIB. 你不能在hibernate.cfg.xml中设置此属性. 取值 true | false

3.4.1.  SQL方言

你应当总是为你的数据库将hibernate.dialect属性设置成正确的 org.hibernate.dialect.Dialect子类. 如果你指定一种方言, Hibernate将为上面列出的一些属性使用合理的默认值, 为你省去了手工指定它们的功夫.

表 3.8.  Hibernate SQL方言 (hibernate.dialect)

RDBMS方言
DB2org.hibernate.dialect.DB2Dialect
DB2 AS/400org.hibernate.dialect.DB2400Dialect
DB2 OS390org.hibernate.dialect.DB2390Dialect
PostgreSQLorg.hibernate.dialect.PostgreSQLDialect
MySQLorg.hibernate.dialect.MySQLDialect
MySQL with InnoDBorg.hibernate.dialect.MySQLInnoDBDialect
MySQL with MyISAMorg.hibernate.dialect.MySQLMyISAMDialect
Oracle (any version)org.hibernate.dialect.OracleDialect
Oracle 9i/10gorg.hibernate.dialect.Oracle9Dialect
Sybaseorg.hibernate.dialect.SybaseDialect
Sybase Anywhereorg.hibernate.dialect.SybaseAnywhereDialect
Microsoft SQL Serverorg.hibernate.dialect.SQLServerDialect
SAP DBorg.hibernate.dialect.SAPDBDialect
Informixorg.hibernate.dialect.InformixDialect
HypersonicSQLorg.hibernate.dialect.HSQLDialect
Ingresorg.hibernate.dialect.IngresDialect
Progressorg.hibernate.dialect.ProgressDialect
Mckoi SQLorg.hibernate.dialect.MckoiDialect
Interbaseorg.hibernate.dialect.InterbaseDialect
Pointbaseorg.hibernate.dialect.PointbaseDialect
FrontBaseorg.hibernate.dialect.FrontbaseDialect
Firebirdorg.hibernate.dialect.FirebirdDialect

表 3.9.  Hibernate日志类别

类别功能
org.hibernate.SQL在所有SQL DML语句被执行时为它们记录日志
org.hibernate.type为所有JDBC参数记录日志
org.hibernate.tool.hbm2ddl在所有SQL DDL语句执行时为它们记录日志
org.hibernate.pretty在session清洗(flush)时,为所有与其关联的实体(最多20个)的状态记录日志
org.hibernate.cache为所有二级缓存的活动记录日志
org.hibernate.transaction为事务相关的活动记录日志
org.hibernate.jdbc为所有JDBC资源的获取记录日志
org.hibernate.hql.AST在解析查询的时候,记录HQL和SQL的AST分析日志
org.hibernate.secure为JAAS认证请求做日志
org.hibernate为任何Hibernate相关信息做日志 (信息量较大, 但对查错非常有帮助)

表 3.10. JTA TransactionManagers

Transaction工厂类应用程序服务器
org.hibernate.transaction.JBossTransactionManagerLookupJBoss
org.hibernate.transaction.WeblogicTransactionManagerLookupWeblogic
org.hibernate.transaction.WebSphereTransactionManagerLookupWebSphere
org.hibernate.transaction.WebSphereExtendedJTATransactionLookupWebSphere 6
org.hibernate.transaction.OrionTransactionManagerLookupOrion
org.hibernate.transaction.ResinTransactionManagerLookupResin
org.hibernate.transaction.JOTMTransactionManagerLookupJOTM
org.hibernate.transaction.JOnASTransactionManagerLookupJOnAS
org.hibernate.transaction.JRun4TransactionManagerLookupJRun4
org.hibernate.transaction.BESTransactionManagerLookupBorland ES

posted @ 2012-02-14 15:07 GavinMiao 阅读(350) | 评论 (0)编辑 收藏

(转载)System.getProperty()

     摘要: 文章来源:http://www.blogjava.net/javafield/archive/2008/01/05/172952.htmlSystem.getProperty() 1public class Information {    2    public st...  阅读全文

posted @ 2012-02-13 16:52 GavinMiao 阅读(377) | 评论 (0)编辑 收藏

ibatis扩展example类对数据库分页的实现(转载)

     摘要: 文章来源:http://blog.csdn.net/lu_yongchao/article/details/6209166mysql:sql代码:select  *  from   user   where ... order   by ....  阅读全文

posted @ 2012-02-03 10:05 GavinMiao 阅读(3189) | 评论 (0)编辑 收藏

异常积累:org.hibernate.hql.ast.QuerySyntaxError: User is not mapped. [from User where username=?]

org.hibernate.hql.ast.QuerySyntaxError: User is not mapped. [from User where username=?]
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:63)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:196)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:130)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:427)
at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:884)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:834)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:603)
at com.demo.hibernate.dao.UserDAOImpl.select(UserDAOImpl.java:19)
at com.demo.hibernate.service.UserServiceImpl.login(UserServiceImpl.java:21)
at com.demo.hibernate.test.UserServiceTest.testLogin(UserServiceTest.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by:  User is not mapped.
at org.hibernate.hql.ast.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:85)
at org.hibernate.hql.ast.FromElementFactory.addFromElement(FromElementFactory.java:77)
at org.hibernate.hql.ast.FromClause.addFromElement(FromClause.java:67)
at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:217)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:2830)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2719)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:513)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:371)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:201)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:151)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:189)
... 28 more
原因:

hibernate.cfg.xml映射.<mapping resource=""/>的配置

类似原因还可能有:
 
hql是写的是table名,不是POJO对象

posted @ 2012-01-19 11:02 GavinMiao 阅读(6135) | 评论 (0)编辑 收藏

java相关下载网址

hibernate:
http://sourceforge.net/projects/hibernate/files/
struts
1:
http://archive.apache.org/dist/struts/  
struts2:

posted @ 2012-01-18 11:35 GavinMiao 阅读(320) | 评论 (0)编辑 收藏

异常积累: HttpURLConnection POST 出现 java.io.FileNotFoundException错误

原因:url未加“\”转义。url格式不正确导致。

posted @ 2012-01-13 13:44 GavinMiao 阅读(751) | 评论 (0)编辑 收藏

Flex入门学习


第一步:看http://www.deepcast.net/wiki/flex  
第二步:看http://www.why100000.com/_articles/show_a_article.asp?tab=tabOtherLanguage&autoid=5(Mcromedia Flex标记语言)
Flex学习网站:
1.
Adobe Flex 2 Component Explorer: 官方的,展示了各种组件的用法,入门必看。   http://examples.adobe.com/flex2/inproduct/sdk/explorer/explorer.html 
2.
很好的一个Flex资源站点 http://www.cflex.net/ 主要看右边一栏
3.http://flexbox.mrinalwadhwa.com/ 
一个收集了网上很多开源组件的站点,是进阶学习的好帮手
4.http://code.google.com/p/flexlib/ 
也是一个开源Flex组件站点,不过与FlexBox不同的是,这个是原创,而FlexBox只是收集。
5.http://www.adobe.com/devnet/flex.html 
Adobe Flex开发者中心,经常会有一些好的教程出现。
6.http://labs.adobe.com/
7.
Flex.org:http://www.flex.org/  官方的,基本上应有尽有。
8.
http://examples.adobe.com/flex2/consulting/styleexplorer/Flex2StyleExplorer.html 
用来设计程序样式风格的工具,很好用,现在源代码已经可以下载。
9.http://www.merhl.com/flex2_samples/filterExplorer/ 
用来调节各种滤镜(filter),非官方的,源代码提供下载。
10.http://wenku.baidu.com/view/739d962e453610661ed9f4c5.html


参考文章:http://blog.csdn.net/microrain/article/details/1601303





posted @ 2011-12-29 10:34 GavinMiao 阅读(278) | 评论 (0)编辑 收藏

转载:在JavaScript中调用Flex方法

文章来源:http://www.cnblogs.com/liuzhong/archive/2011/06/27/2091294.html
一、在JavaScript中调用Flex方法
在Flex中可以用ExternalInterface来调用Flex的方法,途径是
1.通过在Flex应用可调用方法列表中添加指定的公用方法。 在Flex应用中通过调用addCallback()可以把一个方法添加到此列表中。addCallback将一个ActionScript的方法注册为一个JavaScript和VBScript可以调用的方法。
addCallback()函数的定义如下:
addCallback(function_name:String, closure:Function):void
function_name参数就是在Html页面中脚本调用的方法名。closure参数是要调用的本地方法,这个参数可以是一个方法也可以是对象实例。

举个例子:
<mx:Script>
    import flash.external.*;
    public function myFunc():Number {
        return 42;
    }
    public function initApp():void {
        ExternalInterface.addCallback("myFlexFunction",myFunc);
    }
</mx:Script>

2.那么在Html页面中,先获得SWF对象的引用,也就是用<object .../>声明的Swf的Id属性 ,比如说是MyFlexApp。然后就可以用以下方式调用Flex中的方法。
<SCRIPT language='JavaScript' charset='utf-8'>
    function callApp() {
        var x = MyFlexApp.myFlexFunction(); 
        alert(x);
    }
</SCRIPT>
<button onclick="callApp()">Call App</button>



二、在Flex中调用 JavaScript
你可以调用Html页面中的JavaScript,通过与JavaScript的交互,可以改变Style,调用远程方法。还可以将数据传递给Html页面,处理后再返回给Flex,完成这样的功能主要有两种方法:ExternalInterface()和navigateToUrl()。
在Flex中调用JavaScript最简单的方法是使用ExternalInterface(),可以使用此API调用任意JavaScript,传递参数,获得返回值,如果调用失败,Flex抛出一个异常。
ExternalInterface封装了对浏览器支持的检查,可以用available属性来查看。
ExternalInterface的使用非常简单,语法如下:
flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;
参数function_name是要调用的JavaScript的函数名,后面的参数是JavaScript需要的参数。
举个例子说明如何调用JavaScript函数
Flex应用中,添加如下方法:
<mx:Script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        import flash.external.*;
    
        public function callWrapper():void {
            var f:String = "changeDocumentTitle";
            var m:String = ExternalInterface.call(f,"New Title");
            trace(m); 
        }
    </mx:Script>
    <mx:Button label="Change Document Title" click="callWrapper()"/>
</mx:Application>
Html页面中有如下函数定义:
<SCRIPT LANGUAGE="JavaScript">
    function changeDocumentTitle(a) {
        window.document.title=a;
        return "successful";
    }
</SCRIPT>

posted @ 2011-12-29 00:51 GavinMiao 阅读(370) | 评论 (0)编辑 收藏

转载:http响应码介绍

文章来源:


HTTP 1.1状态代码及其含义

100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)

101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)

200 OK 一切正常,对GET和POST请求的应答文档跟在后面。

201 Created 服务器已经创建了文档,Location头给出了它的URL。

202 Accepted 已经接受请求,但处理尚未完成。

203 Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(HTTP 1.1新)。

204 No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。

205 Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。

206 Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。

300 Multiple Choices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。

301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。

302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。
出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。

注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求http://host/~user(缺少了后面的斜杠),有的服务器返回301,有的则返回302。

严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。

303 See Other 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP 1.1新)。

304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

305 Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。

307 Temporary Redirect 和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向。(HTTP 1.1新)

400 Bad Request 请求出现语法错误。

401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。

403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。

404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。

405 Method Not Allowed 请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。(HTTP 1.1新)

406 Not Acceptable 指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容(HTTP 1.1新)。

407 Proxy Authentication Required 类似于401,表示客户必须先经过代理服务器的授权。(HTTP 1.1新)

408 Request Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP 1.1新)

409 Conflict 通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。(HTTP 1.1新)

410 Gone 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP 1.1新)

411 Length Required 服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1新)

412 Precondition Failed 请求头中指定的一些前提条件失败(HTTP 1.1新)。

413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头(HTTP 1.1新)。

414 Request URI Too Long URI太长(HTTP 1.1新)。

416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的Range头。(HTTP 1.1新)

500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。

501 Not Implemented 服

posted @ 2011-12-22 14:39 GavinMiao 阅读(1021) | 评论 (0)编辑 收藏

jquery插件编写参考

(function($){
    $.fn.yourName = function(options){
        //各种属性、参数
        }
        var options = $.extend(defaults, options);
        this.each(function(){
        //插件实现代码
        });
    };
})(jQuery);

参考文章:

posted @ 2011-12-13 15:32 GavinMiao 阅读(302) | 评论 (0)编辑 收藏

MyEclipse修改项目名称

项目上右击鼠标-->Properties-->MyEclipse-->Web-->Content Root-->Web content-root-->改成你想要的项目名 即可

posted @ 2011-12-03 23:37 GavinMiao 阅读(7622) | 评论 (1)编辑 收藏

mysql设置编码格式

ALTER DATABASE `databasename` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE `tableName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE `tableName` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL 
create table()ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='哈喽啦'
show variables like 'collation_%';
SHOW VARIABLES LIKE 'character%';
SET character_set_client = utf8 ; 
set character_set_server = utf8;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_results = utf8;
set character_set_system = utf8;

set collation_connection='utf8_general_ci';
set collation_database=
'utf8_general_ci';
set collation_server='utf8_general_ci';

posted @ 2011-12-01 21:52 GavinMiao 阅读(932) | 评论 (0)编辑 收藏

mysql重启命令

/etc/rc.d/init.d/mysql restart 

posted @ 2011-12-01 21:20 GavinMiao 阅读(271) | 评论 (0)编辑 收藏

rpm及liunx下mysql安装及卸载

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-12-01 13:24 GavinMiao 阅读(67) | 评论 (0)编辑 收藏

liunx解压、打包

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-12-01 13:09 GavinMiao 阅读(80) | 评论 (0)编辑 收藏

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

解决办法:
cd /etc/init.d
mysqld --user=root start

参考文章:
http://apps.hi.baidu.com/share/detail/854577 
今天服务器遇到了一个很熟悉的问题输入#mysql -u root -pERROR 2002 (HY000):Can't connect to local MySQL server随即上网找寻答案根据大家提供的方法我逐一尝试
方案1.
1.#ps -A|grep mysql 显示类似:1829 ? 00:00:00 mysqld_safe
1876 ? 00:00:31 mysqld
2.#kill -9 1829 
3.#kill -9 1876
4.#/etc/init.d/mysql restart
5.#mysql -u root -p 他的麻烦解决了,我的还没解决!
继续找方案2
先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.
另外看看是不是权限问题.
------------------------------------------------------------------------------------
[root@localhost beinan]#chown -R mysql:mysql /var/lib/mysql
[root@localhost beinan]# /etc/init.d/mysqld start
启动 MySQL: [ 确定 ]
[root@localhost lib]# mysqladmin -uroot password '123456'
[root@localhost lib]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.1.11

Type 'help;' or '\h' for help. Type '\c' to clear the buffe他的也解决了,我的麻烦还在继续,依然继续寻找
方案3
问题解决了,竟然是max_connections=1000 他说太多了,然后改成500也说多,无奈删之问题解决了。还是不行
方案4 /var/lib/mysql 所有文件权限 改成mysql.mysql 不行不行方案5
摘要:解决不能通过mysql.sock连接MySQL问题 这个问题主要提示是,不能通过 '/tmp/mysql.sock'连到服务器,而php标准配置正是用过'/tmp/mysql.sock',但是一些mysql安装方法将 mysql.sock放在/var/lib/mysql.sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可 以看到如下的东东:
[mysqld] 
socket=/var/lib/mysql.sock 
改一下就好了,但也会引起其他的问题,如mysql程序连不上了,再加一点: 
[mysql] 
socket=/tmp/mysql.sock 
或者还可以通过修改php.ini中的配置来使php用其他的mysql.sock来连,这个大家自己去找找

或者用这样的方法:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

成功了,就是这样ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

OK!



以上资料是网上的资料
我今天遇到的情况是我使用的mysqld_safe --user=mysql &重启mysql发现无法启动mysql,最后用
/etc/init.d/mysqld start启动成功

posted @ 2011-12-01 11:46 GavinMiao 阅读(13986) | 评论 (1)编辑 收藏

转载:tomcat各种配置及编码设置

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-12-01 10:49 GavinMiao 阅读(74) | 评论 (0)编辑 收藏

XP 用命令查看和杀死进程

1:查看8080端口占用情况:
C:\Documents and Settings\Administrator>netstat -aon | findstr "8080"
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       3608

2:查看进程

C:\Documents and Settings\Administrator>tasklist | findstr "3608"
javaw.exe                   3608 Console                 0     69,484 K

3.杀进程:
tskill 3608

posted @ 2011-11-28 15:28 GavinMiao 阅读(568) | 评论 (0)编辑 收藏

页面utf-8,jsp提交中文action中乱码

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-11-25 15:11 GavinMiao 阅读(86) | 评论 (0)编辑 收藏

转载:java断言Assertion

     摘要: 文章来源:http://www.cnblogs.com/woodslee/articles/165669.html 一、 Assertion的语法和语义J2SE 1.4在语言上提供了一个新特性,就是assertion(断言)功能,它是该版本在Java语言方面最大的革新。在软件开发中,assertion是一种经典的调试、测试方式,本文将深入解析assertion功能的使用以及其设...  阅读全文

posted @ 2011-11-25 13:20 GavinMiao 阅读(771) | 评论 (0)编辑 收藏

tree和menu控件

Xtree
download及demo页面:http://webfx.eae.net/dhtml/xtree/index.html
api页面:
http://webfx.eae.net/dhtml/xtree/api.html 

参考文章:
http://apps.hi.baidu.com/share/detail/45745962
大量开源menu控件:http://www.open-open.com/ajax/Menu.htm
easy
ui Menu及ext tree等;

posted @ 2011-11-24 15:22 GavinMiao 阅读(285) | 评论 (0)编辑 收藏

iframe页面调用父页面的js函数 (转载)


假若iframe所在的页面here.html有个JS函数为:wode(),它位于页面的<script></script>这个节

然后iframe的src,即里面的页面为:other.html,那么我们在other.html里面就可以如下调用here.html里面的wode这个函数:window.parent.wode();


对于父页面的控件的引用就如法炮制:window.parent.document.getElementById('xxxx')
来自: http://hi.baidu.com/%D3%DA%EA%BB%CC%ED/blog/item/a8384000e1ddec0f1c9583e6.html

posted @ 2011-11-24 12:03 GavinMiao 阅读(818) | 评论 (0)编辑 收藏

mysql导入导出表结构及表数据及执行sql文件

在mysql中执行sql文件的命令 : source  d:\myprogram\database\db.sql;
连接MYSQL:
mysql -h主机地址 -u用户名 -p用户密码
修改密码:
mysqladmin -u用户名 -p旧密码 password 新密码

从数据库导出数据库文件:

1.将数据库mydb导出到e:\MySQL\mydb.sql文件中:

打开开始->运行->输入cmd 进入命令行模式

  1. c:\>MySQLdump -h localhost -u root -p mydb >e:\MySQL\mydb.sql 

然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。

2.将数据库mydb中的mytable导出到e:\MySQL\mytable.sql文件中:

  1. c:\>MySQLdump -h localhost -u root -p mydb mytable>e:\MySQL\mytable.sql 

3.将数据库mydb的结构导出到e:\MySQL\mydb_stru.sql文件中:

  1. c:\>MySQLdump -h localhost -u root -p mydb --add-drop-table >e:\MySQL\mydb_stru.sql 

-h localhost可以省略,其一般在虚拟主机上用

四.从外部文件MySQL导入数据到数据库中:

从e:\MySQL\mydb2.sql中将文件中的SQL语句导入数据库中:

1.从命令行进入MySQL,然后用命令CREATE DATABASE mydb2;创建数据库mydb2。

2.退出MySQL 可以输入命令exit;或者quit;

3.在CMD中输入下列命令:

  1. c:\>MySQL -h localhost -u root -p mydb2 < e:\MySQL\mydb2.sql 

然后输入密码,就OK了。

五.下面谈一下关于导入文件大小限制问题的解决:

默认情况下:MySQL导入文件大小有限制的,最大为2M,所以当文件很大时候,直接无法导入,下面就这个问题的解决列举如下:

1.在php.ini中修改相关参数:

影响MySQL导入文件大小的参数有三个:

  1. memory_limit=128M,upload_max_filesize=2M,post_max_size=8M 

修改upload_ ......

参考文章:
http://database.51cto.com/art/201005/200739.htm

posted @ 2011-11-22 10:54 GavinMiao 阅读(8821) | 评论 (0)编辑 收藏

转载:解决 java.util.MissingResourceException: Can't find bundle for base name com...config, locale zh_CN 错误

文章来源:http://blog.csdn.net/nickshen3/article/details/1698261 
ResourceBundle.getBundle("com.cheng.scrap.config") tells the classloader to load a resource named "config" with package "com.cheng.scrap."  Its fully-qualified-resource-name is"com.cheng.scrap.config"


posted @ 2011-11-17 15:28 GavinMiao 阅读(3624) | 评论 (0)编辑 收藏

MyEclipse + Tomcat项目重命名

文章来源:
问题描述:
原来项目名称是shopping,部署到tomcat后直接输入地址端口后加项目名http://localhost:8080/shopping就可以浏览主页了,后来我把项目名改成shoppingCar,重新部署到tomcat后发现部署过去的项目还是shopping而不是shoppingCar
解决方案:
在MyEclipse里面只把项目重命名是不行的,还要修改以下内容:
项目→properties→MyEclipse→Web下修改Web Context-root的名字为重命名之后的名字即可。

posted @ 2011-11-15 15:09 GavinMiao 阅读(428) | 评论 (0)编辑 收藏

转载:在项目中使用多个数据源-多sessionFactory方案

适用范围:适合SSH架构访问多个数据库,数据库的类型和表结构不必相同,且没有跨库事务的情况(跨库事务最好用分布式事务处理)。

文章来源:http://apps.hi.baidu.com/share/detail/15756344

实现方式:我们可以在spring的配置文件中配置多个sessionFactory,如:
<bean id="aDataSource"
   class="org.apache.commons.dbcp.BasicDataSource"
   destroy-method="close">
   <property name="driverClassName">
    <value>${adriver}</value>
   </property>
   <property name="url">
    <value>${aurl}</value>
   </property>
   <property name="username">
    <value>${ausername}</value>
   </property>
   <property name="password">
    <value>${apassword}</value>
   </property>
</bean>
<bean id="bDataSource"
   class="org.apache.commons.dbcp.BasicDataSource"
   destroy-method="close">
   <property name="driverClassName">
    <value>${bdriver}</value>
   </property>
   <property name="url">
    <value>${burl}</value>
   </property>
   <property name="username">
    <value>${busername}</value>
   </property>
   <property name="password">
    <value>${bpassword}</value>
   </property>
</bean>
<bean id="cDataSource"
   class="org.apache.commons.dbcp.BasicDataSource"
   destroy-method="close">
   <property name="driverClassName">
    <value>${cdriver}</value>
   </property>
   <property name="url">
    <value>${curl}</value>
   </property>
   <property name="username">
    <value>${cusername}</value>
   </property>
   <property name="password">
    <value>${cpassword}</value>
   </property>
</bean>

 

<!-- Hibernate SessionFactorys -->
<bean id="aSessionFactory"
   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
   <property name="dataSource">
    <ref local="aDataSource" />
   </property>
   <property name="mappingResources">
    <list>
     <value>
      .hbm.xml文件
     </value>
    </list>
   </property>
   <property name="hibernateProperties">
    <props>
     <prop key="hibernate.dialect">
      ${ahibernate.dialect}
     </prop>
     <prop key="hibernate.show_sql">true</prop>
     <prop key="format_sql">true</prop>
    </props>
   </property>
</bean>

<bean id="bSessionFactory"
   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
   <property name="dataSource">
    <ref local="bDataSource" />
   </property>
   <property name="mappingResources">
    <list>
     <value>
      .hbm.xml文件
     </value>
    </list>
   </property>
   <property name="hibernateProperties">
    <props>
     <prop key="hibernate.dialect">
      ${bhibernate.dialect}
     </prop>
     <prop key="hibernate.show_sql">true</prop>
     <prop key="format_sql">true</prop>
    </props>
   </property>
</bean>

<bean id="cSessionFactory"
   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
   <property name="dataSource">
    <ref local="cDataSource" />
   </property>
   <property name="mappingResources">
    <list>
     <value>
       .hbm.xml文件
     </value>
    </list>
   </property>
   <property name="hibernateProperties">
    <props>
     <prop key="hibernate.dialect">
      ${chibernate.dialect}
     </prop>
     <prop key="hibernate.show_sql">true</prop>
     <prop key="format_sql">true</prop>
    </props>
   </property>
</bean>

<bean id="sessionFactory" class="com.cintel.dcp.datasource.MultiSessionFactory">
   <property name="sessionFactory"><ref local="aSessionFactory"/></property>
</bean>
注意:最后一个com.cintel.dcp.datasource.MultiSessionFactory要自己实现,它实现了SessionFactory接口和ApplicationContext接口,如下:
package com.cintel.dcp.datasource;

import java.io.Serializable;
import java.sql.Connection;
import java.util.Map;
import java.util.Set;

import javax.naming.NamingException;
import javax.naming.Reference;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Interceptor;
import org.hibernate.SessionFactory;
import org.hibernate.StatelessSession;
import org.hibernate.classic.Session;
import org.hibernate.engine.FilterDefinition;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.metadata.CollectionMetadata;
import org.hibernate.stat.Statistics;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class MultiSessionFactory implements SessionFactory, ApplicationContextAware {
private static final long serialVersionUID = 2064557324203496378L;
private static final Log log = LogFactory.getLog(MultiSessionFactory.class);
private ApplicationContext applicationContext = null;
private SessionFactory sessionFactory = null;

public ApplicationContext getApplicationContext() {
   return applicationContext;
}

public void setApplicationContext(ApplicationContext applicationContext) {
   this.applicationContext = applicationContext;
}

public SessionFactory getSessionFactory(String sessionFactoryName) {
   log.debug("sessionFactoryName:"+sessionFactoryName);
   try{
    if(sessionFactoryName==null||sessionFactoryName.equals("")){
     return sessionFactory;
    }
    return (SessionFactory)this.getApplicationContext().getBean(sessionFactoryName);
   }catch(NoSuchBeanDefinitionException ex){
    throw new RuntimeException("There is not the sessionFactory <name:"+sessionFactoryName+"> in the applicationContext!");
   }
}

public SessionFactory getSessionFactory() {
   String sessionFactoryName = CustomerContextHolder.getCustomerType();
   return getSessionFactory(sessionFactoryName);
}

public void setSessionFactory(SessionFactory sessionFactory) {
   this.sessionFactory = sessionFactory;
}


/* (non-Javadoc)
* @see org.hibernate.SessionFactory#close()
*/
public void close() throws HibernateException {
   getSessionFactory().close();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#evict(java.lang.Class)
*/
public void evict(Class persistentClass) throws HibernateException {
   getSessionFactory().evict(persistentClass);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#evict(java.lang.Class, java.io.Serializable)
*/
public void evict(Class persistentClass, Serializable id) throws HibernateException {
   getSessionFactory().evict(persistentClass, id);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#evictCollection(java.lang.String)
*/
public void evictCollection(String roleName) throws HibernateException {
   getSessionFactory().evictCollection(roleName);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#evictCollection(java.lang.String, java.io.Serializable)
*/
public void evictCollection(String roleName, Serializable id) throws HibernateException {
   getSessionFactory().evictCollection(roleName, id);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#evictEntity(java.lang.String)
*/
public void evictEntity(String entityName) throws HibernateException {
   getSessionFactory().evictEntity(entityName);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#evictEntity(java.lang.String, java.io.Serializable)
*/
public void evictEntity(String entityName, Serializable id) throws HibernateException {
   getSessionFactory().evictEntity(entityName, id);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#evictQueries()
*/
public void evictQueries() throws HibernateException {
   getSessionFactory().evictQueries();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#evictQueries(java.lang.String)
*/
public void evictQueries(String cacheRegion) throws HibernateException {
   getSessionFactory().evictQueries(cacheRegion);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#getAllClassMetadata()
*/
public Map getAllClassMetadata() throws HibernateException {
   return getSessionFactory().getAllClassMetadata();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#getAllCollectionMetadata()
*/
public Map getAllCollectionMetadata() throws HibernateException {
   return getSessionFactory().getAllCollectionMetadata();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#getClassMetadata(java.lang.Class)
*/
public ClassMetadata getClassMetadata(Class persistentClass) throws HibernateException {
   return getSessionFactory().getClassMetadata(persistentClass);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#getClassMetadata(java.lang.String)
*/
public ClassMetadata getClassMetadata(String entityName) throws HibernateException {
   return getSessionFactory().getClassMetadata(entityName);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#getCollectionMetadata(java.lang.String)
*/
public CollectionMetadata getCollectionMetadata(String roleName) throws HibernateException {
   return getSessionFactory().getCollectionMetadata(roleName);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#getCurrentSession()
*/
public Session getCurrentSession() throws HibernateException {
   return getSessionFactory().getCurrentSession();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#getDefinedFilterNames()
*/
public Set getDefinedFilterNames() {
   return getSessionFactory().getDefinedFilterNames();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#getFilterDefinition(java.lang.String)
*/
public FilterDefinition getFilterDefinition(String filterName) throws HibernateException {
   return getSessionFactory().getFilterDefinition(filterName);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#getStatistics()
*/
public Statistics getStatistics() {
   return getSessionFactory().getStatistics();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#isClosed()
*/
public boolean isClosed() {
   return getSessionFactory().isClosed();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#openSession()
*/
public Session openSession() throws HibernateException {
   return getSessionFactory().openSession();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#openSession(java.sql.Connection)
*/
public Session openSession(Connection connection) {
   return getSessionFactory().openSession(connection);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#openSession(org.hibernate.Interceptor)
*/
public Session openSession(Interceptor interceptor) throws HibernateException {
   return getSessionFactory().openSession(interceptor);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#openSession(java.sql.Connection, org.hibernate.Interceptor)
*/
public Session openSession(Connection connection, Interceptor interceptor) {
   return getSessionFactory().openSession(connection, interceptor);
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#openStatelessSession()
*/
public StatelessSession openStatelessSession() {
   return getSessionFactory().openStatelessSession();
}
/* (non-Javadoc)
* @see org.hibernate.SessionFactory#openStatelessSession(java.sql.Connection)
*/
public StatelessSession openStatelessSession(Connection connection) {
   return getSessionFactory().openStatelessSession(connection);
}
/* (non-Javadoc)
* @see javax.naming.Referenceable#getReference()
*/
public Reference getReference() throws NamingException {
   return getSessionFactory().getReference();
}
}


然后我用一个常量类来标识sessionFactory
public class DynamicDataSourceType {
public static final String A= "aSessionFactory";
public static final String B= "bSessionFactory";
public static final String C= "cSessionFactory";
}

最后一个关键类:用来存放当前正在使用的sessionFactory
public class CustomerContextHolder {

private static final ThreadLocal contextHolder = new ThreadLocal();

public static void setCustomerType(String customerType) {
   Assert.notNull(customerType, "customerType cannot be null");
   contextHolder.set(customerType);
}

public static String getCustomerType() {
   return (String) contextHolder.get();
}

public static void clearCustomerType() {
   contextHolder.remove();
}
}

可以在action、service、dao中进行数据库切换,切换方式:
CustomerContextHolder.setCustomerType(DynamicDataSourceType.A);

以上思路来自javaEye论坛的一个高手,在此标识感谢

posted @ 2011-11-14 16:11 GavinMiao 阅读(849) | 评论 (0)编辑 收藏

转载:动态切换数据源(spring+hibernate)

文章来源:

起因:在当前我手上的一个项目中需要多个数据源,并且来自于不同类型的数据库... 因为很多历史原因.这个项目的住数据源是MySQL,整个系统的CURD都是操作的这个数据库.

但是还有另外两个用于数据采集的数据库: MSSQL,ACCESS.还好只是用于数据采集,在事务上可以不要跨数据库了,这一点节省了好多的工作量.环境:我搭建的测试环境是 spring2.5.6+hibernate3.2
思路:动态切换数据源确切的来说是在同一类型数据库的情况下的。意思就是说 , 在系统中的使用的数据库分布在多台数据库服务器或者在同台服务器上的多个数据库. 在运行时期间根据某种标识符来动态的选择当前操作的数据库.     1.数据源是相同类型的数据库: 一个SessionFactory+动态数据源+一个事务管理器     2.数据源是不同类型的数据库: 根据类型 配置多套SessionFactory模拟:两个mysql数据源+一个Access数据源
实现
1.切换数据源需要标识符,标识符是Object类型
package lhp.example.context;
public enum DBType {
dataSource1, dataSource2;
}

2.然后创建一个用于切换数据源(设置或者获得上下文)的工具类
package lhp.example.context;

public class ContextHolder {
private static final ThreadLocal<Object> holder = new ThreadLocal<Object>();

public static void setDbType(DBType dbType) {
holder.set(dbType);
}

public static DBType getDbType() {
return (DBType) holder.get();
}

public static void clearDbType() {
holder.remove();
}
}

3.创建动态数据源类,继承org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource这个类.
package lhp.example.context;

import java.util.logging.Logger;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

public class DynamicDataSource extends AbstractRoutingDataSource {
public static final Logger logger = Logger.getLogger(DynamicDataSource.class.toString());

@Override
protected Object determineCurrentLookupKey() {
DBType key = ContextHolder.getDbType();//获得当前数据源标识符
//logger.info("当前数据源 :" + key);
return key;
}

}

4.然后配置多个数据源
<!-- 数据源1 : mysql -->
<bean id="dataSource1" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/dec" />
<property name="user" value="root" />
<property name="password" value="" />
</bean>
<!-- 数据源2 : mysql -->
<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/lms" />
<property name="user" value="root" />
<property name="password" value="" />
</bean>

<!-- 数据源3 : access -->
<bean id="dataSource3" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="sun.jdbc.odbc.JdbcOdbcDriver" />
<property name="jdbcUrl" value="jdbc:odbc:accessTest" />
<property name="user" value="administrator" />
<property name="password" value="XLZX0309" />
</bean>

<!-- mysql 动态数据源设置-->
<bean id="mysqlDynamicDataSource" class="lhp.example.context.DynamicDataSource">
<property name="targetDataSources">
<!-- 标识符类型 -->
<map key-type="lhp.example.context.DBType">
<entry key="dataSource1" value-ref="dataSource1" />
<entry key="dataSource2" value-ref="dataSource2" />
</map>
</property>
<property name="defaultTargetDataSource" ref="dataSource1" />
</bean>

5.配置sessionFactory
<!-- mysql sessionFactory -->
<bean id="mysqlSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="mysqlDynamicDataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop><!--create validate -->
<prop key="hibernate.query.substitutions">true 1, false 0</prop>
</props>
</property>
</bean>

<!-- access sessionFactory -->
<bean id="aceessSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource3" />
<property name="hibernateProperties">
<props>
<!-- access 语法和MSSQL相似 所以用的MSSQL方言,或者可以使用第三方方言 -->
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.jdbc.batch_size">30</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop><!--create validate -->
<prop key="hibernate.query.substitutions">true 1, false 0</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<!-- <prop key="hibernate.cache.use_second_level_cache">true</prop> -->
<!-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> -->
<!-- <prop key="hibernate.cache.use_query_cache">true</prop> -->
<!-- <prop key="hibernate.generate_statistics">true</prop> -->
<!-- <prop key="hibernate.cache.provider_configuration_file_resource_path">classpath:ehcache.xml</prop> -->
</props>
</property>
</bean>

6.测试用例
package lhp.example.junit;

import static org.junit.Assert.*;
import java.sql.DatabaseMetaData;
import lhp.example.context.ContextHolder;
import lhp.example.context.DBType;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ServiceTest {
private ApplicationContext context;
//三个数据源的URL
private String dataSource1_URL = "jdbc:mysql://127.0.0.1:3306/dec";
private String dataSource2_URL = "jdbc:mysql://127.0.0.1:3306/lms";
private String dataSource3_URL = "jdbc:odbc:accessTest";
private SessionFactory mysqlSessionFactory;
private SessionFactory aceessSessionFactory;

@Before
public void setUp() throws Exception {
// 选择数据源初始化spring
ContextHolder.setDbType(DBType.dataSource1);
//
String[] xmlFiles = new String[] {
"applicationContext-dataSource.xml",
"applicationContext-hibernate.xml",
"applicationContext-spring.xml" };
//
context = new ClassPathXmlApplicationContext(xmlFiles);
//
mysqlSessionFactory = (SessionFactory) context.getBean("mysqlSessionFactory");
aceessSessionFactory = (SessionFactory) context.getBean("aceessSessionFactory");
}

@SuppressWarnings("deprecation")
@Test
public void mysqlDataSourceTest() {
try {

Session mysqlSession = mysqlSessionFactory.openSession();
// 获得数据库元数据
DatabaseMetaData meatData = mysqlSession.connection().getMetaData();

// 默认启动数据源 dataSource1
//断言当前数据源URL是否是dataSource1的URL
assertEquals(dataSource1_URL, meatData.getURL());

// 切换到数据源 dataSource2
ContextHolder.setDbType(DBType.dataSource2);
mysqlSession = mysqlSessionFactory.openSession();
meatData = mysqlSession.connection().getMetaData();
//断言当前数据源URL是否是dataSource2的URL
assertEquals(dataSource2_URL, meatData.getURL());

} catch (Exception e) {
e.printStackTrace();
}
}

@SuppressWarnings("deprecation")
@Test
public void accessDataSourceTest() {
try {
Session accessSession = aceessSessionFactory.openSession();
// 获得数据库元数据
DatabaseMetaData meatData = accessSession.connection().getMetaData();
//断言当前数据源URL是否是dataSource3的URL
assertEquals(dataSource3_URL, meatData.getURL());


} catch (Exception e) {
e.printStackTrace();
}
}

}

posted @ 2011-11-14 15:37 GavinMiao 阅读(788) | 评论 (0)编辑 收藏

liunx版本查询、创建用户及用户组

1.liunx版本查询:
lsb_release -a或者
 cat /etc/issue或者
cat /etc/redhat-release 
2.
创建用户

useradd
-u  uid,例如:500
-G  附加组
-g  主要组 
-d  家目录 /home/mysql
-s  默认登录shell 例如:/bin/bash
eg:useradd -u 500 -g majorGroup -G  minorGroup -d  /home/username -s /bin/bash USERNAME
userdel -r(连同家目录一起删了)
eg2:useradd -g mysql  -d  /home/test -s /bin/bash test
3.创建组:groupadd

posted @ 2011-11-10 12:08 GavinMiao 阅读(322) | 评论 (0)编辑 收藏

异常积累:java.lang.UnsupportedOperationException (转载)

文章来源:http://hi.baidu.com/%C2%CC%B0%D3%D0%C4%C9%F1%B2%BB%C4%FE/blog/item/139b9b17a3c3b44621a4e935.html    
在使用Arrays.asList()后调用add,remove这些method时出 现java.lang.UnsupportedOperationException异常。这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,所以throw UnsupportedOperationException。
例如:

String[] s = {
"one", "two", "three", "four", "five",
"six", "seven", "eight", "nine", "ten",
};

List a = Arrays.asList(s);

解决办法:List b = new ArrayList(a);然后再去执行add和remove;

posted @ 2011-11-08 20:13 GavinMiao 阅读(1126) | 评论 (0)编辑 收藏

查询:informix数据库端口

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-11-08 14:55 GavinMiao 阅读(64) | 评论 (0)编辑 收藏

转载:解决org.hibernate.exception.GenericJDBCException: Cannot open connection

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-11-07 12:36 GavinMiao 阅读(31) | 评论 (0)编辑 收藏

异常积累:java.lang.IllegalStateException: No value for key [com.gavin.datasource.M ultiSessionFactory@19fc33d] bound to thread [http-8080-10]

原因:有一个请求将 session .close;
解决办法:
将getSession().close();改为releaseSession(getSession());

posted @ 2011-10-28 09:55 GavinMiao 阅读(3144) | 评论 (1)编辑 收藏

异常积累:org.hibernate.exception.SQLGrammarException: could not execute query-hibernate解释后的sql语句有问题

错误信息
Hibernate: 
    select
        first 0 agentstate0_.id as id2_,
        agentstate0_.agentid as agentid2_,
        agentstate0_.agentpassword as agentpas3_2_,
        agentstate0_.agenttype as agenttype2_,
        agentstate0_.apptype as apptype2_,
        agentstate0_.autoidle as autoidle2_,
        agentstate0_.autoworkinterval as autowork7_2_,
        agentstate0_.autoworkon as autoworkon2_,
        agentstate0_.devicenumber as devicenu9_2_,
        agentstate0_.donotdistribute as donotdi10_2_,
        agentstate0_.group_id as group11_2_,
        agentstate0_.phonetype as phonetype2_ 
    from
        cts_agentinfo agentstate0_ 
    where
        agentstate0_.group_id='999999'
WARN - SQL Error: -201, SQLState: 42000
ERROR - A syntax error has occurred.
ERROR - Error:
org.hibernate.exception.SQLGrammarException: could not execute query
原因1:hibernate方言有问题
原因2:hibernate设置分页的first与max为0;

posted @ 2011-10-27 14:33 GavinMiao 阅读(9287) | 评论 (1)编辑 收藏

异常积累:org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFact ory (Locale not supported.)

tomcat启动时报错,原因如下:
url=jdbc:informix-sqli://192.168.2.114:8888/test:INFORMIXSERVER=testdb1;NEWLOCALE=en_us;NEWCODESET=zh_cn.gb;
中的字符集错误,应改为:
url=jdbc:informix-sqli://192.168.2.114:8888/test:INFORMIXSERVER=testdb1;NEWLOCALE=GB2312,en_us;NEWCODESET=GB2312,8859-1,819;

posted @ 2011-10-26 10:13 GavinMiao 阅读(8844) | 评论 (0)编辑 收藏

informix 命令积累1

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-10-26 09:58 GavinMiao 阅读(60) | 评论 (0)编辑 收藏

tomcat 调内存

一、java.lang.OutOfMemoryError: PermGen space 错误解决办法:
修改TOMCAT_HOME/bin/catalina.sh 
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: 
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m 
二、java.lang.OutOfMemoryError: Java heap space 错误解决办法:
解决方法:手动设置Heap size 
修改TOMCAT_HOME/bin/catalina.sh 
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: 
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

注意:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 

posted @ 2011-10-26 09:51 GavinMiao 阅读(336) | 评论 (0)编辑 收藏