资料整理供参考.docx
- 文档编号:27541209
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:51
- 大小:89.89KB
资料整理供参考.docx
《资料整理供参考.docx》由会员分享,可在线阅读,更多相关《资料整理供参考.docx(51页珍藏版)》请在冰豆网上搜索。
资料整理供参考
java:
(1)java集合的分类以及关系?
实现Collection接口的方法有:
Collection<--List<--Vector
Collection<--List<--ArrayList
Collection<--List<--LinkedList
Collection<--Set<--HashSet
Collection<--Set<--HashSet<--LinkedHashSet
Collection<--Set<--SortedSet<--TreeSet
1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。
例如:
[tom,1,c];
2. 所有的List中可以有相同的元素,例如Vector中可以有 [tom,koo,too,koo];
3. 所有的List中可以有null元素,例如[tom,null,1];
4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。
1.Set实现的基础是Map(HashMap);
2.Set中的元素是不能重复的,如果使用add(Objectobj)方法添加已经存在的对象,则会覆盖前面的对象
1hashMap:
使
(2)Java垃圾回收机制的基本原理
首先检查有哪些存活的对象,存活的对象进行标记,如果需要回收的对象不多,那么就只进行标记,然后进行碎片的整理,如果标记的存活对象过少,就进行复制存活这些对象到另一个堆中,修改引用的指向方式,清扫之前堆中的对象。
(3)匿名内部类
Testt=newTest()
{
publicvoid test()
{
System.out.println(“hello”);
}
};
好处:
当接口的实现需要多种方式的时候就可以使用匿名内部类
(4)向上转型
public class test{
public void test()
{
System.out.println("hello");
}
public static void test1(Test1 t)
{
t.test();
}
public class Test1 extends test{
public void test()
{
System.out.println("hello1");
}
/**
* @param args
*/
public static void main(String[]args){
// TODO Auto-generatedmethodstub
Test1t1=new Test1();
test.test1(t1);
}
}
(5) 泛型
public interface BaseDao
public Tfind(Longid);
public void delete(Longid);
public void update(Tt);
public List
public void save(Tt);
public List
public PageBeangetPageBean(int pageNum,PageUtilpageUtil);
}
ppublic class BaseDaoImpl
protected Class
public BaseDaoImpl(){
//
ParameterizedTypept=(ParameterizedType) this.getClass().getGenericSuperclass();
this.clazz =(Class
}
System.out.println("--->clazz=" + clazz);
}
}
public interface BlockDao extendsBaseDao
}
(6) 反射
ReplaceVOvo= new ReplaceVO();
vo=(ReplaceVO)rowData;
Class
>voType=vo.getClass();
Fieldfields[]=voType.getDeclaredFields();
(7) 多线程互斥操作(生产者-消费者问题)(这个问题回家再说)
(8)java设计模式:
工厂模式:
public class MailSender implements Sender {
@Override
public void Send() {
System.out.println("this is mailsender!
");
}
}
[java] viewplaincopy
public class SmsSender implements Sender {
@Override
public void Send() {
System.out.println("this is sms sender!
");
}
}
最后,建工厂类:
[java] viewplaincopy
public class SendFactory {
public Sender produce(String type) {
if ("mail".equals(type)) {
return new MailSender();
} else if ("sms".equals(type)) {
return new SmsSender();
} else {
System.out.println("请输入正确的类型!
");
return null;
}
}
}
我们来测试下:
public class FactoryTest {
public static void main(String[] args) {
SendFactory factory = new SendFactory();
Sender sender = factory.produce("sms");
sender.Send();
}
}
单例模式:
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
建造者模式:
还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender。
最后,建造者类如下:
[java] viewplaincopy
public class Builder {
private List
public void produceMailSender(int count){
for(int i=0; i list.add(new MailSender()); } } public void produceSmsSender(int count){ for(int i=0; i list.add(new SmsSender()); } } } 代理模式: (后期进行数据的添加) 接口的适配器模式: [java] viewplaincopy public interface Sourceable { public void method1(); public void method2(); } 抽象类Wrapper2: [java] viewplaincopy public abstract class Wrapper2 implements Sourceable{ public void method1(){} public void method2(){} } [java] viewplaincopy public class SourceSub1 extends Wrapper2 { public void method1(){ System.out.println("the sourceable interface's first Sub1! "); } } [java] viewplaincopy public class SourceSub2 extends Wrapper2 { public void method2(){ System.out.println("the sourceable interface's second Sub2! "); } } [java] viewplaincopy public class WrapperTest { public static void main(String[] args) { Sourceable source1 = new SourceSub1(); Sourceable source2 = new SourceSub2(); source1.method1(); source1.method2(); source2.method1(); source2.method2(); } } (9)IO流操作: (需要查看Java核心编程) /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ InputStreamin=null; try{ System.out.println("以字节为单位读取文件内容,一次读一个字节: "); //一次读一个字节 in=newFileInputStream(file); inttempbyte; while((tempbyte=in.read())! =-1){ System.out.print(tempbyte); } 以字节为单位读取文件内容,一次读多个字节 byte[]tempbytes=newbyte[100]; intbyteread=0; in=newFileInputStream(fileName); ReadFromFile.showAvailableBytes(in); // 读入多个字节到字节数组中,byteread为一次读入的字节数 while((byteread=in.read(tempbytes))! =-1){ System.out.print(tempbytes,0,byteread); } /** * 以字符为单位读取文件,常用于读文本,数字等类型的文件 */ System.out.println("以字符为单位读取文件内容,一次读一个字符: "); // 一次读一个字符 reader=newInputStreamReader(newFileInputStream(file)); inttempchar; while((tempchar=reader.read())! =-1){ // 对于windows下,\r\n这两个字符在一起时,表示一个换行。 // 但如果这两个字符分开显示时,会换两次行。 // 因此,屏蔽掉\r,或者屏蔽\n。 否则,将会多出很多空行。 if(((char)tempchar)! ='\r'){ System.out.print((char)tempchar); } } 以字符为单位读取文件内容,一次读多个字符 char[]tempchars=newchar[30]; intcharread=0; //由于要以字符来读取,所以需要套上字符流 reader=newInputStreamReader(newFileInputStream(fileName)); // 读入多个字符到字符数组中,charread为一次读取字符数 while((charread=reader.read(tempchars))! =-1){ // 同样屏蔽掉\r不显示 if((charread==tempchars.length) &&(tempchars[tempchars.length-1]! ='\r')){ System.out.print(tempchars); }else{ for(inti=0;i if(tempchars[i]=='\r'){ continue; }else{ System.out.print(tempchars[i]); } } } System.out.println("以行为单位读取文件内容,一次读一整行: "); reader=newBufferedReader(newFileReader(file)); StringtempString=null; intline=1; // 一次读入一行,直到读入null为文件结束 while((tempString=reader.readLine())! =null){ // 显示行号 System.out.println("line"+line+": "+tempString); line++; } 将一个文件的内容写入另一个文件(按行来写) File file=newFile("c: \\test.txt"); BufferedReaderread=null; BufferedWriterwriter=null; try{ writer=newBufferedWriter(new FileWriter("c: \\zwm.txt")); }catch(IOExceptione1){ e1.printStackTrace(); } try{ read=newBufferedReader(new FileReader(file)); StringtempString=null; while((tempString=read.readLine())! =null){ writer.append(tempString); writer.newLine();//换行 writer.flush();//需要及时清掉流的缓冲区,万一文件过大就有可能无法写入了 } read.close(); writer.close(); (10)FTP操作 FtpClientclient=login_sun(ftp_ip,Integer.parseInt(ftp_port),user_name,user_pwd); TelnetInputStreamin=client.get(file_path+File.separator+file_name); BufferedReaderreader=newBufferedReader(newInputStreamReader(in,"UTF-8"));//FTP读取文件流 js: 回调函数: function ajax(json){ xmlHttp = ajaxFunction(); xmlHttp.onreadystatechange = function(){ if (xmlHttp.readyState ==4){ if (xmlHttp.status == 200){ json.callback(xmlHttp.responseText); } } } xmlHttp.open(json.method, json.url, true); xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp.send(json.data); } window.onload = function(){ ajax({ url: '../AjaxServlet', data: null, method: 'post', callback: function(data){ alert(this); alert(data); } }); } function a(callback) { alert("我是parent函数a! "); alert("调用回调函数"); callback(); } function b(){ alert("我是回调函数b"); } function c(){ alert("我是回调函数c"); } function test() { a(b); a(c); } 自调函数 (function(window){ function Person(){ return { setName: setName, setAge: setAge, getName: getName1, getAge: getAge1 }; } function setName(name){ this.name = name; } function getName(){ return this.name; } function getName1() { return this.name; } function setAge(age){ this.age = age; } function getAge1(){ return this; } function aa(){ alert("hello") } function bb(){ alert("hello1") } window.aa=aa; window.Person =new P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 资料整理 供参考 资料 整理 参考