Map存储的是key->value的值对,key的值是唯一的,而value的值可以重复。通常使用的是HashMap或TreeMap,如果考虑性能,使用HashMap。TreeMap使用红黑树实现,保留有key值顺序性,会自动按照key值排序。
默认是按照key值的升序排序,key值必须实现 Comparator接口。如果希望按找一定规则排序,则需要重新定义compare函数。
如:
TreeMap hm = new TreeMap<String, String>(new Comparator() {
public int compare(Object o1, Object o2) {
//如果有空值,直接返回0
if (o1 == null || o2 == null)
return 0;
return String.valueOf(o1).compareTo(String.valueOf(o2));
}
});
对于处理有中文排序的问题
TreeMap hm = new TreeMap<String, String>(new Comparator() {
public int compare(Object o1, Object o2) {
//如果有空值,直接返回0
if (o1 == null || o2 == null)
return 0;
......
问题域:
--系统中你需要获得某个类的唯一实例,所有客户端对它的访问都将通过一个公共的访问点获得
--创建一个类并使其:(A)定义一个私有的构造器(B)定义一个私有、静态的变量指向自己(C)定义一个公有、静态的访问方法用于返回该类的一个唯一实例
分为 饿汉式 和 懒汉式,下面是一个简单的示例代码,应该很容易理解:
package pattern.singleton.basic;
/**
* java设计模式:单例模式(饿汉式)
* @author wasw100
*/
public class Singleton {
// 提供一个静态私有变量指向自己,属于类
private static Singleton instance = new Singleton();// 提前消费
// 提供私有构造器,只有在当前类中可以使用new,外界不能构造该类的对象
private Singleton() {
}
// 对外提供一个公共访问点
public static Singleton getInstance() {
return instance;
}
}
2、懒汉式代码
package pattern.singleton.basic;
/**
* java设计模式:单例模式(懒汉式)
* @author wasw100
*/
public class Singleton {
private static Singleton instance = null;
private Singleton(){}
//synchronized避免在访问量比较大的时候 第 ......
文件上传其实是一个很基本的页面操作,以前也做过。在jsp+servlet时,关键点是只要指定jsp用于提交上传文件资源的form的enctype属性为multipart/form- data即可。这个属性 其实是设置了提交的内容是以数据流的方式提交给servlet的。当然也包含了文件的流,这样在servlet里利用common- fileupload.jar里的接口方法,解析这个流,就可以获得上传的文件的信息。
今天在利用ext的js代替了jsp时,却碰到了点小麻烦。现在总结如下。
其实利用ext实现的原理是一样的,只是编写js的过程中要主要,当发送ajax请求时,要保证所发的请求是在enctype为multipart/form-data的form中,否则,后台无法解析上传文件信息。
对于表单的定义可以采用如下方法:
var uploadForm = new Ext.form.FormPanel({ url: "AuthManager.do?action=addCertificate",//ajax请求的地址 rame:true,//要设为true fileUpload:true,//一定要这一项,表明这个表单是做文件上传所用 id:'uploadForm', height:130, labelAlign: 'right', bodyStyle:'padding:6px 5px 0', //enctype : 'multipart/form-data', //其实这一项是没有用的,fileUpload:true的令一层意思也就是这个 items: new Ext.fo ......
package edu.zzu.jdbc.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.ambow.jdbc.entity.Student;
public class TestDBConn{
public static void main(String args[]){
String url="jdbc:sqlserver://localhost:1433;databaseName=zzu";
String username="sa";
String password="123456";
Connection conn =null;
Statement stmt =null;
ResultSet rs =null;
try {
//1、加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2、通过DriverManagee获取连接包括(数据库连接字符串,用户名,密码)
conn = DriverManager.getConnection(url, username, password);
//3、通过 Connection 对象来创建 createStatement
stmt = conn.createStatement();
......
String startTime, String endTime;
Date start = null;
Date end = null;
Date startTimeStamp = null;
Date endTimeStamp = null;
try {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dfs = new SimpleDateFormat("yyyyMMddHHmm");
startTimeStamp = dfs.parse(startTime);
endTimeStamp = dfs.parse(endTime);
start = df.parse(startTime.substring(0, 8));
end = df.parse(endTime.substring(0, 8));
} catch (ParseException e) {
e.printStackTrace();
logger.error("Time format must match [yyyyMMddHHmm].");
throw new BusinessException(e.getMessage());
}
stmt.setDate(1, new java.sql.Date(start.getTime()));
stmt.setDate(2, new java.sql.Date(end.getTime() ......
String s1 = “abc“;
s1指向了“abc”
String s2 = new String(“abc“);
生成了对象new String(“abc“);s2指向这个对象,这个对象引用了“abc”;
equals意义是判断内容是否一直因为s1内容为“abc”,s2内容也为“abc”因此返回true。
==是判断引用是否一致,s1、s2指向不同所以返回false。
“abc”只生成一次,具体是生成在堆还是栈不同虚拟机实现原理不同 ......