原来的JAVA没学好啊~~惭愧~~囧。。
11月30日
1.JAVA安装
java_home:java安装路径 jdk
path:JAVA编译解释路径 jdk/bin
classpath:类路径 .;jre/lib
2.helloworld
d: cd
编译:javac helloworld.java
解释:java helloworld
3.在src中建公文包,收费:com.公司名.项目名.jbs/不收费org.
12月1日
1.标识符:以字母、下划线、"$"开头。
2.java是强类型语言。(所有的变量都必须显示声明类型)
3.java分为两大类型:简单(原始)数据类型和引用类型。
boolean 1 byte 8 char 16 short 16 int 32 float 32 long 64 double 64
4.整形:byte int short long .
5.类型一致才能计算。短整形、浮点型可以自动向长整形、浮点型转换。
例:short a=1;
short c=(short) (a+1);
1)两种类型兼容。2)目标类型要大于原始类型。默认:int、double.
表达式:表达式中最大类型式long,则表达式提升为long型。
6.引用类型:类、接口、数组。
7.类类型:Student s1;
s1=new Student("hdj",23);
1)系统在栈中为s1分配内存。s1:null
2)碰到new时在堆中为s1的属性分配内存。
name :null
age :0
sex :null
grade:0
3)调用构造器。this.name=name,this.age,this.sex,this.grade.
4)地址转换:name:0x1234 s1:0x1234。
8.全局变量有默认初始值,使用可以不用初始化。
局部变量没有默认初始值,在使用之前必须初始化。
9.实参可以传给形参,形参不能传给实参(值传递)。
10.String s=new String("abc");(创建了两个对象)
String s="abc";(创建了一个对象)
11.类顺序:属性、构造器、set.get方法,其他方法。
12.接口首字母大写,方法、变量首字母小写2单词字母大写,常量大写。
13.数组(Array) String[] args;int[] a;
14.for循环里面定义的变量只能在for中有效。
15.j=++i先加1再赋值,j=i++先赋值再加1。
16.&与运算符,~非,|或运算符.
17.a+=2等于a=a+2.
18.int a=2;
a=a<<2;(左移)
12月7日上午
1、2.0是double类型。5/2.0=2.5,5/2=2。
2、==,!=可用于对象的比较。
3、5+“abc”=“5abc”。
4、switch(n),n是int型。switch(2++)相当于switch(3)。
5、while(true){};死循环,服务器。
6、for(;i<100;i++).
7、循环的作用:让程序按顺序执行。
8、return是直接退出函数,后面的程序不会执行。
9、break跳出整个循环体,continue结束当前循环,进入下个循环。
10、0%2=0;
11、int[] a = new int[5];
12、int[] a = new int[]{3,4,5}静态初始化。
13、动态初始化:int[] a;
a=new int[4];
for(int i=0;i<4;i++)
{
a[i] = 2*i+8;
}
14、Arrays.sort();
Math.random();产生0到1的随机数。
15、System.arraycopy(a,4,b,0,5);索引值。
作业:
1、0到100产生任意数的数组,用冒泡和快速排序进行排序。
2、学生类,10个,按工资排序,从高到低输出工资并打印出名字。
3、求任意数的阶乘。
4、用switch语句实现根据int i;的值(0到9,10到99,100-999)调用不同的方法do0_9(),do10_99(),do100_999().
12月8日
1、面向对象的的特点:数据封装、继承、多态。
2、类的构造器不能被重写,可以被重载,不能被继承。
3、面向对象最重要的特点之一是可以实现对类的复用。
4、1个类只能继承一个父类。
5、object类:任何类都是object的子类。
6、如果子类和父类不在同一个包中,子类不能继承父类的友好成员。在同一个包中,子类可以继承父类友好成员。
不管子类和父类在不在同一个包中,子类都继承父类的受保护的和公共的成员,都不能继承私有成员。
7、方法覆盖(重写)后要调用父类的方法时用关键字super. 方法。
8、覆盖要具有相同的方法名称、输入参数和返回值。
9、子类中的覆盖方法不能使用比父类更严格的访问权限。
10、this.方法,this可省略。方法直接可相互使用。
11、super的追溯不仅限于直接父类。
12、子类的构造方法创建一个子类对象时,子类的构造方法总是先调用父类的某个构造器。
13、构造器调用构造器用this(),放在程序的最前面,子类调用父类构造器用super()。
14、子类没有显式调用父类构造器时,就自动调用父类无参构造器。
15、{age=18;name="java33";}初始化块,放在属性后面,初始化块中的语句在构造器中语句执行之前执行,初始化一次。
16、方法重载返回类型可以不一样。
17、碰到new就给属性分配内存、初始化块、再调用构造器。
18、==和equals(),对象用==比较时比较的是内存地址。
19、整形变字符串:
Integer i= new Integer(10);
int s=i.intValue();
i.toString();
20、字符串变int型:
int a=Integer.parseInt("5");
21、一般的两个对象不可能==,重写Object中的equals()方法,如果两个对象的属性相等就返回真。
22、String类中已经覆盖了Object中的equals()方法,两个字符串内容相同就返回真。
23、String类不能被继承。
24、super.x = 100;super.play();就是操作被子类隐藏的变量x和方法play()。
当通过super调用被隐藏的方法play()时,该方法中出现的x是指被隐藏的x。
作业:
1、覆盖和重载程序练习,覆盖和重载文档。
2、子类对象的创建过程写文档,person和teacher类。
3、==、equals、toString的使用。
4、折半查找法。
5、PDF上的两道题。
12月10日
1、静态初始化static{}:只在类加载的时候加载一次,通常用于初始化静态变量。
而普通的初始化块{}在new之后构造器之前执行。
2、静态变量和方法在类加载时就分配内存。(类属性和类方法)
3、构造器不能用static修饰。
实例方法可以调用该类中的实例方法或类方法,类方法只能调用该类的类方法,不能调用实例方法,实例方法可以操作实例变量或类变量,
而类方法只能操作类变量,不能操作实例变量。
4、单子模式(singleton):整个类只能有一个实例,定义一个类类型的静态变量。(例Shoes.java)
5、final类不能被继承,final类是最终类,String和Math是final类,final方法不能被覆盖(重写)。
6、final修饰原始类型变量时,在初始化后不能改变变量的值。
7、final修饰引用类型变量时,不能改变它的引用变量,但可以改变对象的属性。
8、abstract类不能被实例化。
9、可以用abstruct修饰类和方法,叫抽象类和抽象方法。
10、抽象方法只有方法的声明,而没有方法的实现。
11、在以下任何一个条件成立时,类必须定义成抽象类:
1)类中有至少一个抽象方法。
2)类继承了父类的抽象方法,但有至少一个抽象方法没有被实现。
3)类实现了某个接口,但没有全部实现接口中的方法。
12、接口只有方法和常量值。
13、接口弥补了java的单继承的不足。
14、接口常量的定义:(public static final) int FGY = 10;
(public abstract) void exchange();
15、类实现接口,接口可以继承接口。接口定义:修饰符 interface 名字。
16、父类的引用指向子类的实例就是多态,接口变量指向实现类实例也叫多态。
17、子类方法覆盖父类方法,父类引用指向子类实例调用的是子类方法。
18、子类变量隐藏父类变量,父类引用指向子类实例调用的是父类变量。
19、一个引用类型变量如果声明为父类类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法。
20、一个对象只能有一种确切的数据类型。
21、一个接口可以继承多个父类接口。
22、类在实现接口方法时一定要用public来修饰,接口中的方法默认是public abstract可以省略。
接口中的属性默认值是public static final 可以省略。
23、类实现的接口方法和接口中的常量可以被类的对象调用。
24、接口不能实例化但可以声明接口变量,接口回调。
25、接口中只有常量和抽象方法。
12月11日
1、if(p instanceof Man)
{
Man man= (Man) p;
}
2、RuntimeException
ArithmeticException:数学计算异常
NullPointerException: 空指针异常
NegativeArraySizeException:负数组长度异常
ArrayOutOfBoundsException:数组索引越界异常
ClassNotFoundException:类文件未找到异常
ClassCastException:造型异常
IOException
FileNotFoundException:文件未找到异常
EOFException:读写文件尾异常
MalfformedURLException:URL格式错误异常
SocketException:Socket异常
3、 f6.f5调试。
4、IOException编译不通过,RuntimeException编译通过,运行时报错。
5、出现异常后,异常处后面的程序不会执行。
6、出现异常后,马上交给java虚拟机执行。
7、抛出异常退出程序之前会无条件的执行finaly语句块。[finaly{语句}]。
8、覆盖方法抛出的异常,可以抛出与被覆盖方法的相同的异常或者被覆盖方法的异常的子类异常。
9、主动抛出异常用throw。
10、对象造型分为两类:自动造型和强制造型,对象的造型只用在有继承关系的对象之间。
11、内部类对其封装类的内部私有属性和方法有访问权限。
12、外部类不能设置为私有的、受保护的、静态的,内部类可以设置成私有的或者受保护的和静态的。
13、实例化内部类的两中方法:
1)Outer.Inter in = new Outer().new Inter();
2)Outer o = new Outer();
Outer.Inter I = o.new Inter();
14、如果内部类是static,也可以这样定义:
Outer.Inter j = Outer.new Inter();
15、内部类的名字只有在定义的范围内使用,除非使用有效的全名。
16、内部类也可以定义在方法的内部。方法中的final类型的局部变量都可以被内部类的方法访问。
17、内部类可以声明为static的,但此时就不能再使用外层封装类的非static的成员变量。
18、非static的内部类中的成员不能声明为static的,只有在顶层类或static内部类中才可声明static成员。
19、内部类可以声明为抽象类,因此可以被其他的内部类继承,也可以声明为final的。
20、一个类不能即被声明为final又被声明为abstract。
21、匿名类不类一般只能有一个抽象方法。
12月12日
1、作业1:兔子问题(兔子生兔子)。
2、静态方法不能调用实例变量,因为实例变量在类加载时没有分配内存空间。
3、System.exit(0);退出。
4、作业2:写一个属性文件,读出来。
5、System.in读字节。
6、BufferedReader读行。
7、inputstream读字符。
8、作业3:从键盘读3个数字比较大小。
9 、 Scanner的用法。
10、Math.round()需要四舍五入返回long型,math.ceil()(负数取整)和math.floor()(正数取整)直接去掉小数。
11、Math.min(),math.max(),math.sqrt(),math.pow(),math.abs(),math.pI,math.e。
12、作业4:写程序使用Math类中的函数。
13、“abc”是String类型的直接数。
14、作业5:练习使用String类中的各种方法。
15、s.concat("abc").concat("zhong guo");s.replaceAll("a","n");s.substring(0);s.substring(3,4);s.trim();s.trim().toUpperCase();s.indexOf("a")返回-1表示没有找到;a字符第一次出现的位置。s.lastIndexOf("a");最后一次出现的位置。
16、s.substring(2,4);从2开始截取到4之前的字符为止创建一个子串不包括4,从0开始数.
17、String[] strs = s.split("a");让a切割字符串s。
18、中文一个字是两个字节,英文是一个字节。s.getbytes().length!=s.length()表示有中文;
19、作业6:“http://localhost:8080/LCRMS/resumeAdd.do/"取出resumeAdd字符串。
20、prperties类实现了从名字到值的映射。
21、propertyNames()返回一个包含所有属性名的Enumeration对象。
22、getProperty(String prop_name)返回一个代表该属性值的字符串。
23、String s = "absdf";
byte[] str = s.getBytes();
char[] str1 = s.toCharArray();
24、使用load(FileInputStream fis)从文件读入属性集,使用store(FileOutputStream fis)将属性集写入文件.
26、properities 在java.util包中。
12月15日
1、辅音:
清辅音:p,t,k,s,Q,r .两个清音或浊音在一起时后面的音要变成反音,辅音结尾/元音开头要连读。school学院。
浊音: b,d,g,z, ,l.
2. good morning!It is my honor to be here for your interview. Now I will introduce myself briefly.
I am an undergraduate from wuhan college of science and technology.I will get my bachelor's degree in
Computer Science and Technology next July. I am eager to join your company with a resolution to put my
professional skills into practice and create a win-win situation.my name is Hu Dongjie. born and bride in
HuBei province.
sofewire engineering.
The four-year university life has acquainted me with the basic knowledge.
That's all.Thank you for your attention.
Character and hobby.性格和爱好.
性格:character,personality,trait
优点:strong points,strengths,merits,advantage
缺点:disadvantage
open-minded 开明的;introvert/extrovert外向/内向;easy-going 随和的;mature and stable成熟稳重的;
reasonable and calm 理智冷静的;Optimistic乐观的
I don't like leaving thing half done.
I wouldn't call myself introverted though sometimes I'm resweved and enjoy staying all by myself,often and
often I like sharing activtis with other.I get on well with others.
3、Collection顶级接口(集合):List有序可重复子接口,Set无序不可重复子接口。
4、ArrayList类是List接口的一个可变长数组实现。(动态数组)
ArrayList中的函数有:
public int size();//返回列表中的元素个数
public Object get(int index);//返回指定位置的元素
public void set(int index,Object obj);//设置指定位置元素
public void add(Object obj);//在列表末尾增加元素
public void add(int index,Object obj);//在列表指定位置插入元素
public void remove(int index);//删除列表中指定位置元素
public void clear();//删除列表中的所有元素
public boolean contains(Object obj);//判断列表中指定对象是否存在
5、List list = new ArrayList();
Iterator<> its = list.iterator();
while(its.hasNext()){
System.out.print(its.next());
}
6、List、ArrayList里面装的全部是Object对象,所以类对象要先强制转换成该类对象。
Student stu = (Student) its.next();
System.out.println(stu.getAge());
7、泛型1.5才支持,List
8、Set set = new HashSet();
Iterator<> its = set.iterator();
while(its.hasNext()){
System.out.print(its.next());
}
9、List:ArrayList,Vector,LinkedList.
10、StringBuffer类:
StringBuffer sb = new StringBuffer();
sb.append(true).append(34.6).append("hdj").append(3);
System.out.println(sb.toString());
System.out.println(sb.reverse().toString());反转输出(3hdj34.6true).
11、文件:File 类,File.seperator自动打斜杠。包括文件和文件夹。
12、创建文件:
File file1 = new File("F:/file/abx.txt");
或者File file1 = new File("F:/file","abx.txt");
或者File file = new File("F:/file");File file1 = new File(file,"a.txt");
if(!file1.exists()){
file1.createNewFile();
}
13、创建文件夹:
String path = "F:/file/abc/cde";
File file = new File(path);
if(!file.exists()){
file.mkdir();
}
14、length()返回多少个字节。
15、lastModified()最后一次修改时间。
16、剪切:
File file1 = new File("F:/file/ax.txt");
File file2 = new File("F:/file/abc/ax.txt");
file1.renemeTo(file2);
17、获取文件路径:
System.out.println(file2.getParent());
System.out.println(file2.getName());
System.out.println(file2.lastModified());
System.out.println(file2.getParent());
System.out.println(file2.length());
19、作业:把某个文件夹中后缀名为txt的文件全部剪切走。
判断后缀名是不是txt:
File desFile = new File(des,fileArr[i].getName());
20、listFiles()函数返回File数组。
21、file.isFile()判断是不是数组,返回boolean类型。
22、作业:把一个文件夹里面的所有的东西剪切到另外一个文件夹中。
23、map:HashMap;映射。
Map map = new HashMap();
map.put("1",new Student("123",22));
map.put("2",new Student("123",22));
map.put(null,new Student("233",23));
map.put("4",null);
Student stu = (Student)map.get("2");
Map
Student stu = map.get("2");
Set set = map.keySet();
24、hashtable(key和value)不允许null值,hashmap(key和value)允许null,hashtable的方法是同步的,hashmap是未经同步的。
25、Iterator拿一个少一个。
26、中文字节的值大于127和小于0。
12月16日
1、 Date类以1970 1.1 为开始时间过了多少毫秒。
2、 long getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
void setTimeInMillis(long millis)
设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
setTime(Date date)
使用给定的 Date 设置此 Calendar 的时间。
String toString()
把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中:
dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
boolean after(Date when)
测试此日期是否在指定日期之后。
boolean before(Date when)
测试此日期是否在指定日期之前。
Object clone()
返回此对象的副本。
int compareTo(Date anotherDate)
比较两个日期的顺序。
boolean equals(Object obj)
比较两个日期的相等性。
3、SimpleDateFormat类把时间字符串和毫秒相互转换。
4、把毫秒转换成中国时间:
Date date = new Date();(默认当前时间)
SimpleDateFormat sdf = new SimpleDateFormat("EEEE yyyy年MM月dd日 HH:mm:ss:SSS");
System.out.println(sdf.format(date));
5、将字符串转换成Date对象:
public void f(String s){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
date = sdf.parse(s);
System.out.println(date.getTime());
System.out.println(date.toString());
}
6、不记日期格式的方法:
Date date = new Date();
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
System.out.println(df.format(date));
7、Calendar类(抽象类),实现类GregorianCalendar,可任意翻看日历设置时间日期。
8、月份0到11,星期从星期天开始。
9、日历方法:
abstract void add(int field, int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
10、日历类应用:
Calendar cal = new GregorianCalendar();
Date date = new Date();
cal.setTime(date);
SimpleDateformat df = DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println(df.format(cal.getTime());
cal.add(Calendar.DAY_OF_MONTH,189);
System.out.println(df.format(cal.getTime());
cal.add(Calendar.YEAR,-2);
System.out.println(df.format(cal.getTime());
cal.set(Calendar.YEAR,2010);
cal.set(Calendar.MONTH,Calendar.APRIL);
cal.set(Calendar.DAY_OF_MONTH,1);
System.out.println(df.format(cal.getTime());
cal.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
System.out.println(df.format(cal.getTime());
11、作业:从今天开始算起获取10个18日是星期六。
public void getSat(){
Calendar cal = new GregorianCalendar();
Date date = new Date();
SimpleDateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
cal.setTime(date);
cal.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY);
int counter = 0;
while(counter<=10){
if(cal.get(Calendar.DAY_OF_MONTH)==18){
counter++;
System.out.println(df.format(cal.getTime()));
}
cal.add(Calendar.DAY_OF_MONTH,7);
}
}
12、作业1:Date与字符串转换。
作业2:从今天开始算起找10个润年里面的29是星期五。
作业3:从键盘输入年和月,然后输出日历。
14、(m%4==0 && m%100!=0 || m % 400==0)闰年。
12月17日 select count(distinct uid) from gold_record a
where (select count(*)from gold_record where uid=a.uid)>1
java流IO流
1、输入流:只能从中读取字节数据,硬盘中的数据流入程序中。
2、输出流:只能向其写入字节数据,程序里面的东西写到硬盘中。
3、按流所处理的数据类型划分为:字符流、字节流。
4、直接和硬盘和键盘、网络打交道的叫节点流(小管子),低级流
5、处理流:封装小管子,封装低级流,StringBuffer,高级流。
6、InputStream和OutputStream用于处理字节数据,输入输出的顶级父类。
7、int read():读取一个字节,返回整型。
int read(byte[] buffer)
int read(byte[] buffer,int offset,int length),offset, length是byte[]的 开始和结束的位置。
8、void close():关闭流。
9、读文件在控制台输出的程序:
FileInputStream(类)低级字节流。
public static void readInput(String path)
{
FileInputStream fis = null;
fis = new FileInputStream(path);
int n = 0;
while((n=fis.read())!=-1){
System.out.print((char)n);
}
fis.close();
}
10、byte[] buffer;
public static void readInput(String path)
{
FileInputStream fis = null;
byte[] buffer = new byte[512];
fis = new FileInputStream(path);
int n = 0;
whlie((n=fis.read(buffer))!=-1){
System.out.write(buffer,0,n);
}
fis.close();
}
11、OutputStream
void write(int c);
void write(byte[] buffer);
void write(byte[] buffer,int offset,int length);
12、public void testOutput(String path){
FileOutputStream fos = new FileOutputStream(path);
String s = "面朝大海,春暖花开";
byte[] buffer = s.getBytes();
fos.write(buffer,0,buffer.length);
fos.close();
}
12、PrintStream
13、字节拷贝
public void copy(String src,String des){
FileInputStream fis = new FileInputStream(str);
FileOutputStream fos=new FileOutputStream(des);
byte[] buffer = new byte[512];
int n = 0;
while((n=fis.read(buffer))!=-1){
fos.write(buffer,0,n);
fos.flush();
}
fos.close();
fis.close();
}
14、Reader常用方法:字符流BufferedReader
FileInputStream --FileReader---BufferReader
public void readerChar(String path){
try{
FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
String s = null;
while((s = br.readLine())!=null){
System.out.println(s);
}
br.close();
}
15、FileWriter:BufferedWriter,PrintWriter.往文件里面写东西
public void testWrite(String path){
try{
FileWriter fw = new FileWriter(path);
BufferedWriter=new BufferedWriter(fw);
fw.write("java33 huanying ni ");
bw.newline();
bw.close();
}
}
16、字符拷贝
public void testCopy(String src,String des)
{
try{
FileReader fr = new FileReader(src);
FileWriter fw = new FileWriter(des);
char[] buffer = new char[512];
int n=0;
while((n=fr.read(buffer))!=-1){
fr.write(buffer,o,n);
fw.flush();
}
fw.close();
fw.close();
}
}
17、PrintWriter
18、字节转字符。
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
19、作业:拷贝文件夹(与鼠标的拷贝一样的效果)
20、作业:BufferedWriter,PrintWriter的区别。
21、缓冲流:
BufferedWriter
BufferedReader
BufferInputStream
BufferOutputStream
Buffer开辟一块内存空间
22、DataInputstream
public void testData(String path){
FileInputStream fis = new FileInputStream(path);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(path)));
dos.writeUTF("中国武汉");
dos.writeBoolean(true);
dos.writeDouble(34.8);
dos.flush();
System.out.println(dis.readUTF());
23、字节转字符和字符转字节的编码方式不同时会出现中文乱码。
12月18日
1、序列化 Serializable写对象读对象。
public class student implements Serializable{
private int age;
private String name;
public Student(){
}
public void testObject(String path){
FileInputStream fis = new FileInputStream(path);
FileOutputStream fos = new FileOutputStream(path);
ObjectOutputStream oos = new ObjectOutputStream(fos);
ObjectInputStream ois = new ObjectInputStream(fis);
oos.writeObject(new Student(22,"hdj"));
Student stu = (Student) oos.readObject();
System.out.println(stu.getAge()+" "+stu.getName());
}
2、RandomAccessFile
long getFilePointer()
返回此文件中的当前偏移量。
long length()
返回此文件的长度。
public void testFile(String path) {
RandomAccessFile raf;
try {
raf = new RandomAccessFile(path, "rw");
raf.writeBoolean(true);
raf.writeChars("abcdef");
raf.writeDouble(34.9);
raf.seek(0);
boolean flag = raf.readBoolean();
raf.skipBytes(4);
char chara = raf.readChar();
raf.skipBytes(6);
double value = raf.readDouble();
System.out.println(flag + "" + chara + "" + value);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3、作业1:写一个学生类,存3个学生进去,再读取,先读第二个学生,再读第一个学生,再读第三个学生(使用RandomAccessFile)。
4、真正做事的是线程。
5、把cpu分成多块多个线程使用。
6、一个进程都有一个主线程main()函数。
7、Thread类,调用start()进入排队等待状态。
8、创进程的方法一:继承thread类,同时覆盖run()方法。
9、
long getId()
返回该线程的标识符。
String getName()
返回该线程的名称。
int getPriority()
返回线程的优先级。
static void sleep(long millis)
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。
static void sleep(long millis, int nanos)
在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行)。
Thread.State getState()
返回该线程的状态。
void setName(String name)
改变线程名称,使之与参数 name 相同。
10、创进程的方法二:通过实现runnable接口中的run()方法创建一个线程。
11、两种方法创建线程有什么区别:
n个线程要共享资源就要用第二种方法。
12、作业2:每隔一秒种判断两个文件里面的内容有没有被改变。
13、作业3:用4个线程拷贝myeclipse.exe,拷完可用,4个线程共享一个资源。
14、作业4:练习ObjectInputStream和ObjectOutputStream.
15、作业5:练习DataInputstream、RandomAccessFile。
16、File:
long lastModified()
返回此抽象路径名表示的文件最后一次被修改的时间。
17、作业6:用4个线程拷贝myeclipse.exe:继承thread的方法做,分成4份。
12月19日
1、测试线程是否正处于runnable状态
isAlive();
2、设置线程的优先级
tcf.setPriority(Thread.MIN_PRIORITY);
tcf.start();
不设置时默认是5(中).
tcf.getPriority();得到优先级。
3、优先级高的线程不一定先完成任务,1/4个时间片给高优先级线程。
4、join()方法的使用:作业1:写个例子,mian()和子线程。
5、互斥锁:n个线程锁一个对象
当某个对象用synchronized修饰时,表明该对象在任一时刻只能由一个线程访问。
6、synchronized的使用:作业2:写个例子,4个售票员卖100张票。private int tickets = 100;锁代码。synchronized(this){...}
7、Object类定义了wait(),notify(),notifyAll()方法,不是线程特有的方法,等待和唤醒。
8、作业3:做一个放号器,多个线程同时申请号码不重复,断电后能回复。(两个线程).
9、作业4:两个线程之间如何共享数据。
10、不相关线程、相关但无须同步、同步线程、互斥资源。
网络编程
12月21日
1、计算机网络、操作系统看下。
2、计算机联网可以实现:
使用远程资源,共享信息、程序和数据,分布处理。
3、中国1995年使用inter网,中部华科,gird网格第三代。
4、星型、总线、环线网络。
5、TCP处于传输层。
6、UDP无连接不可靠的,IP协议位于网络层。
7、A类地址可以组126个网络,0000和1111不能用(0开头一个字节1-126)。
8、B类地址(10开头两个字节128-191)
9、c类地址(110开头三个字节192-223)
10、IP地址是唯一的。
11、TCP有65536个端口(0到65535),ftp端口21,SMTP端口25,HTTP端口80.
12、作业:InetAddress类测试。
13、telnet www.sohu.com 25
14、ps.print("GET /index.html /HTTP1.1");
15、作业:Socket测试。
16、作业:做一个自己规定协议的服务器。
17、BufferedWriter bw = new BufferedWriter(new FileWriter("d:/3.txt",true));
bw.write(s+"\n");追加。
12月23日
1、ps.println(System.getProperty("line.separator"));换行。
2、作业1:做一个简单的QQ玩以下。
3、三种方法创建类对象。
1) Student s = new Student();
2) 反射:Class.forName("com.sunbase.jbsTest.Student").newInstance();
3) 克隆:Object obj = s.clone();
4、类加载器:Classloader抽象类。
5、Class用来描述对象,就是代表对象的引用。
6、反射:
三种方式得到class对象
Student obj = new Student();
Class c1 = obj. getClass();
Class c2 = Student.class;
Class c3 = Class.forName(“package_name.Student”);
Class c4 = int.class;
System.out.println(c1.getName() );
System.out.println(c2.getName() );
System.out.println(c3.getName() );
System.out.println(c4.getName() );
7、作业:反射练习。
12月24日
1、用class调用student类中的get方法。
2、Class stu = Class.forName("com.sunbase.jbsTest.homework12_23.StudentDTO");
Constructor[] cons = stu.getConstructors();
创建对象的方法:Object dto = stu.newInstance() ;
StudentDTO dt = (StudentDTO) Class.forName("com.sunbase.jbsTest.homework12_23.StudentDTO").newInstance();
2、方法调用:
Class[] parm1 = new Class[]{String.class,int.class};
Method set = stu.getMethod("getname",parm1);
Object res = set.invoke(dto, "hello",5);
System.out.println(res);
3、两个类对象属性传值:
BeanUtils.copyProperties(dto,stuF);
作业:自己写一个copyProperties(dto,stuF)方法,stuF和dto的属性一样。
4、代理模式:
Logger类的使用:
12月25日
1、数据库:Oracle,DB2,SQLServer,MySQL.
2、Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://192.168.33.136:3306/mytest";
Connection con = DriverManager.getConnection(url, "root", "123");
PreparedStatement ps = con
.prepareStatement("select * from publish where user=");
ResultSet rs = (ResultSet) ps.executeQuery();
while (rs.next()) {
System.out.print(rs.getInt(1) + " " + rs.getString(2)+"\t");
}
ps.execute();
con.close();
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sunbase";
Connection con = DriverManager.getConnection(url, "sa", "123");
加载驱动器load the JDBCDriver
创建连接:IP、端口号、数据库名、用户名和密码Establish the Database connection
创建执行语句Create a Statement Object
执行Execute a Qurey
结果process the Results
关闭Close the Connection
3、JDBC API接口
4、导包:工程---new---folder---lib
12月26日
1、腾讯是c/s模式,三个类:awt,swing,swt。
2、数据是用来描述事物的符号记录。
3、selcet b.*,p.* from book as b, publish p
where b.publishId=p.publishId;
select count(pubname) from publish;
select avg(publishId) from publish;
4、swing:JFrame,JPanle,JScrollPane.
6、作业1:计算器。
7、BorderLayout布局处理器,分为:中央、东、南、西、北。
8、btn.addActionListener(new ActionListener(){});
9、public void actionperformed(ActionEvent e){
String tmp = ((Button)e.getSource()).getName();
10、作业2:对象传值。
12月28日
1、对象传值:
类:StudentTDO;类:StuFrom;
public static void copyproperities(Object from,Object to){
Class fs = from.getClass();
Class fst = to.getClass();
Field[] fsFrom = fs.getDeclaredFields();
Field[] fsTo = fst.getDeclaredFields();
for(int i = 0;i
//判断该属性是否在fsTo中存在
if(checkExists(priName,fsTo)){
String name = priName.substring(0,1).toUpperCase()+
priName.substring(1);
String getName = "get"+name;
String steName = "set" +name;
Method getMethod = fs.getMethod(getName,null);
Object ret = getMethod.invok(from,null);
Class retType = getMethod.getRetrunType();
Method setMethod = fst.setMethod(setName,new Class{retType});
setMethod.invok(to,ret);
Method getMethod2 = fst.getMethod(getName,null);
System.out.println(getMethod2.invok(to,null));
}
}
}
public static boolean checkExists(String priName,Field[] fsTo){
boolean flag = false;
for(int i = 0;i
flag = true;
break;
}
}
return flag;
}
2、复习:
1)构造器不能被继承
2)访问权限。
3)自定义异常。
4)properties类,数据库、程序、系统都有各自的编码方式。
3、写base64编码。
4、outer发送成功没。
5、outlook使用。
6、ehlo要用base64编码,HELO没限制。
1月10日
1、html是解释型语言,速度慢,运行一次解释一次。
2、html结构
4.
5.
6.
1月11日
标准网页(1-5)
1、所有HTML全部小写。
2、为图片添加alt属性。
3.关闭所有标记。
4.给每个属性增加引号。
5.用id属性代替name属性,id必须唯一。
6.Css层叠样式表。
7.内联样式和内部样式以及外部样式。内联:font或
1月13日
1. String user = request.getParameter("username");
String pass = request.getParameter("password");
if((user.equals("cay"))&&(pass.equals("231"))){
response.sendRedirect("true.jsp");
}
esle{
request.getSession().setAttribute("err","用户密码错误");
response.sendRedirect("login.jsp");
}
2. login.jsp:request.getSession().getAttribute("err");
3.
4.java代码写在<% %>中间。
5.Java Server Pages JSP.
6.tomcat把jsp代码解释成java代码。
7.配置tomcat环境变量:tomcat_home
8.web-inf/lib导包。
9.web.xml是所有动态工程的入口。
10.request.setCharacterEncoding("utf-8");(解决编码问题)
1月14日
1.批量删除:
<%
String[] ids = request.getParameterValues("checkbox");
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/mytest";
Connection con = DriverManager.getConnection(url,"root","123");
for(int i=0;i
int id =Integer.parseInt(ids[i]);
ps.setInt(1,id);
ps.execute();
}
con.close();
response.sendRedirect("list.jsp");
%>
3.javascript排名第5的语言,事件驱动和页面验证。
4.引号和单引号交替使用。
5.11大内置对象:Globel,String:indexof()如果没有返回-1.
6.var array= new Array(6);array[1].
sort(),reverse(),
7.Math ,Date.
8.全选和反选:
checkbox1 onclik="getAll()"
checkbox2 onclik="unGet()"
function getAll(){
var elements = document.form1.checkbox;
var length=elements.length;
for(var i=0;i
element.checked=true;
}
}
function unGet(){
var elements = document.form1.checkbox;
var length=elements.length;
for(var i=0;i
element.checked=!element.checked;
}
}
9.下拉列表:
10.、关闭按钮: οnclick="javascript:window.close()"
删除按钮: οnclick="javascript:window.confirm("你确定删除吗?");"
转向按钮: οnclick="goPage()"
跳转页面: οnclick="javascript:window.location.href='add.jsp'"
11.window.open(url,"","scrollbar=yse,top=100,left=200,width=100,height=100");
12.大的javaw时虚拟机的进程。
13. />
1月15日
1、javascript把所有东西都看成节点:分为3类。
2.元素节点:有始有终的
3.属性节点:value="a"
4.文本节点:湖北湖南
5、每个节点都有3个属性:nodeName,nodeType,nodevalue.
6.作业1:添加书项删除项。
7.导JS文件,
8.作业2:做树形菜单和框架。
9.作业3:练习document对象。
10.
11.进注册表:regedit 删除 2 3 中的software中的microsoft中的sqlserver
1月17日
1、数据是描述事物的符号记录。
2、关系型数据库设计范式。
3.第一范式:字段值唯一,不可再分。
4.第二范式:数据库表中不存在非关键字段对任一候选关键字段(组合关键字中的任意一个都叫候选关键字段)的部分函数依赖,也即所有非关键字段都完全依赖于任意一组候选关键字。
多对多时把每个多分成一个表,至少3张表。
5.第三范式:不存在传递函数依赖(学生学院表,外键,约束关系),一对多的时候,至少2张表。
6.正序asc,倒序desc.
7.子查询
select top 2 * from emp_jd
where empId not in(select top 2 empId from emp_jd);
use willPower;
select depId,min(salary),empname
from hr_emp group by depId,salary,empname
having min(salary)>
(select min(salary)
from hr_emp where depId=1)
select * from hr_emp where
salary> any (select min(salary)
from hr_emp group by depId)
8.内连接
select * from hr_emp as e,hr_dep d,hr_job j
where e.depId=d.depId and e.jobId=j.jobId
9.左外连接
select e.*,d.* from hr_emp e left outer join
hr_dep d on e.depId=d.depId;
select e.*,d.*,j.*
from hr_job j,hr_emp e
left outer join hr_dep d
on e.depId=d.depId where j.jobId=
e.jobId;
10.右外连接
select e.*,d.* from hr_emp e right outer join
hr_dep d on e.depId=d.depId;
11.集合查询(加)
select * from hr_emp where depId<3
union
select * from hr_emp where salary>3000
and depId=4
12.视图
create view emp_jd(empId,empname,depname,jobname)
as select e.empId,e.empname,d.depname,j.jobname from
hr_emp e,hr_dep d,hr_job j where e.depId=d.depId
and e.jobId=j.jobId
13.重命名
sp_rename 'hr_xx','hr_dep','object';
14.增删改字段
alter table student add xueli varchar(50);
alter table student drop column xueli;
alter table student alter column sex varchar(50);
15.建表
create table student (
stunumber varchar(50) primary key,
stuname varchar(50) not null,
sex varchar(50) not null,
age int(8) not null
);
16.删除表
drop table student;
17.创建和删除索引。
create unique index empxu on hr_emp(salary desc);
drop index hr_emp.empxu;
18.增删改
insert into student values('0504111083','胡东杰','男','大四',23);
insert into student(stunumber,stuname,sex,grade,age)
values('0504111084','张文锋','男','大四',23);
delete from student where stunumber='0504111084';
update student set age=20 where stunumber='0504111083';
19.按循序查询
select * from hr_emp
order by salary desc;
select * from hr_emp
order by salary asc;
20.单表查询
select * from hr_emp
order by salary desc;
select * from hr_emp where empname='胡东杰';
select * from hr_emp where salary>4000;
select * from hr_emp where salary between 3000 and 8500;
select * from hr_emp where empname like '胡东_';
select * from hr_emp where empname like '%周%';
select max(salary) from hr_emp ;
select count(depId) from hr_emp;
select * from hr_emp where depId in (1,2,3);
1月18日
1.finaly{
if(con!=null)
con.close();
}
2.com.microsoft.sqlserver.jdbc.SQLServerDriver
2005以后】
3、连接池
import org.apache.commons.dbcp.BasicDataSource;
public class DataSourceFactory {
private static BasicDataSource bs;
public static BasicDataSource getDataSource(){
if(bs==null){
bs=new BasicDataSource();
bs.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
bs.setUrl("jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=willPower");
bs.setUsername("sa");
bs.setPassword("198574520");
bs.setMaxActive(5);
}
return bs;
}
}
4.单子模式
public class Shoes {
private String color;
private double size;
private static Shoes shoes;
public double getSize() {
return size;
}
public void setSize(double size) {
this.size = size;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
private Shoes(String color,double size)
{
this.color = color;
this.size = size;
}
public static Shoes getInstance(String color){
if (shoes == null) {
shoes = new Shoes(color, Math.random() * 10 + 30);
}
return shoes;
}
public static void main(String[] args){
Shoes shoes0 = Shoes.getInstance("yellow");
Shoes shoes1 = Shoes.getInstance("red");
Shoes shoes2 = Shoes.getInstance("white");
System.out.println(shoes0.getColor()+" "+shoes0.getSize());
System.out.println(shoes1.getColor()+" "+shoes1.getSize());
System.out.println(shoes2.getColor()+" "+shoes2.getSize());
}
}
5.连接池用法:
con=DataSourceFactory.getDataSource().getConnection();
6.多个类共享Connection con;
通过构造器传con进去,每个DAO都没有权利申请连接。
7.把SQL语句定义成常量便于修改。
8.把DAO变成工厂模式但不能用单子模式。
DAOFactory.getBookDAO(con);
DAOFactory.getPublishDAO(con);
DAOFactory.getJobDAO(con);
1月19日
1.事务的特性:
原子性:事务是一个完整的操作。
2.java中的事务:
Databasename=willPower;selectMothod=cursor启用事务
con.setAutoCommit(false);
ps=con.prepareStatement("insert into hr_job values(?)");
for(int i=0;i
ps.execute();
}
con.commit();
con.setAutocommit(true);
异常里面加:
con.rollback();飞雪连天射白鹿,笑书神侠倚碧鸳。
3.分页
public List findAll(int pageIndex){
ps = con.prepareStatement("select * from student",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = ps.executeQuery();
rs.absolute((pageIndex-1)*3+1);
rs.previous();
int counter=0;
while(rs.next()&&counter<3){
StuDTO dto = new StuDTO();
dto.setStuId(rs.getInt(1));
dto.setStuname(rs.getString(2));
dto.setStuage(rs.getFloat(3));
list.add(dto);
conter++;
}
}
4、自连接 员工上司表
selsect m.empname+'working for' as emp,n.empname from tb_employee m,tb_employee n
where n.managerId=n.empId;
5.T-SQL语言
局部变量以@开头
DECLARE @变量名 数据类型
赋值
DECLARE @name varchar(50);
SET @name='郭靖';或者
select @name=stuname from student
where stuId='sc002
print @name
6.查找左右同桌
declare @seat int(8)
select @seat=seat from student
where stuname='郭靖'
select * from student where (seat=@seat+1) or (seat=@seat-1)
7.全局变量
以@@开头
8.逻辑控制语句
IF(条件)
begin
end
else begin
end
例子:
declare @avgscore float
select @avgscore=AVG(wrexam) from
tb_stuexam
if(@avgscore>70) begin
print '本班成绩优秀,前两名是'
select top 2* from tb_stuexam order
by wrexam desc end
else begin
print '本班成绩差,后两名是'
select top 2* from tb_stuexam order
by wrexam asc end
9、while
declare @aint int
select @aint=count(*) from tb_stuexam
where wrexam<60 print @aint
while(1=1) begin
if(@aint>0)
update tb_stuexam set wrexam=wrexam+2
where wrexam>60
else break
end
select* from tb_stuexam
10.case-end
select sum(price) from tb_product
where month(saletime)=2
select year(saletime),sum(price) as total,sum(case when month
(saletime)=2 then price else 0 end) as '一月份'
,sum(case when month
(saletime)=2 then price else 0 end) as '二月份'
,sum(case when month
(saletime)=4 then price else 0 end) as '四月份'
,sum(case when month
(saletime)=10 then price else 0 end) as '十月份'
from tb_product
group by year(saletime)
11.转账事务
begin transaction
declare @errersum int
set @errersum=0
update hr_bank set money = money+1000
where username ='张三'
set @errersum=@errersum+@@error
update hr_bank set money = money-1000
where username ='李四'
set @errersum=@errersum+@@error
IF @errorSum<>0 --如果有错误
BEGIN
print '交易失败,回滚事务'
ROLLBACK TRANSACTION
END
ELSE
BEGIN
print '交易成功,提交事务,写入硬盘,永久的保存'
COMMIT TRANSACTION
END
12.存储过程(stored Process)
CREATE PROCEDURE getName
@id varchar(50),
@username varchar(50) output
AS
select @username=stuname from student where stuId=@id
GO
调用:
getName 'sc002','sdfs'
13.触发器
是自动调用,在表右键trigger properties创建
CREATE TRIGGER deletebbs ON [dbo].[bs_area]
FOR DELETE
AS
delete bs_bbs from deleted, bs_bbs b where deleted.areaId = b .areaId
14.程序中调用存储过程
Connection con = DriverManager.getConnection(url,"sa","123");
CallableStatement cs=con.prepareCall("{call addBook(?,?,?,?,?)}");
cs.setString(1,"java");
cs.setFloat(2,35);
cs.setString(3,"hudongjie");
cs.setString(4,"33-4443-343");
cs.setInt(5,3);
cs.execute();
cs.close();
con.close();
1月20日(jsp)
jsp内置对象,运行机制
JavaServerPage
1.jsp可以跨平台
2.嵌JS,
3.java要嵌入到body中。
4.web(tomcat)把jsp解释成java代码。
5.服务器:Tomcat,Tboss,
6.包放在webcontent/web-inf/lib下,eclipse自动加载。
7.HttpServletRequest,HttpServletResponse
pageContext,config,out,session,page,application
8.发布:把工程放到tomcat的webapp中。
9.tomcat/conf/catalina/localhost/stuDemo.xml,修改发布路径
10.Servlet是运行在服务器端的java类
11.Sun公司制定Servlet API接口的5个方法
init()初始化
getServletInfo()获取相关信息
service()
destroy()销毁
getServletConfig()获取配置
12.编写servlet程序
13.404错误是找不到路径。
14.作业1:房屋出租,DAO模式,分页,上传下载。
15.作业2:了解servlet。
16.作业3:复习第一阶段,数据库,数据结构。
2月2日
1.SQL的三类
DML(select,insert,update,delete),DDL(create,alter drop),DCL(grant,revoke,setrole)
2.描述项目,注重概念。
3.事务是一种机制,它保证多个SQL语句被当作单个工作单元来处理。
事务是包含一个或多个SQL语句的逻辑工作单元,事务中的SQL语句是能够全部提交,也能全部回滚。
4个特性:ACID准则
4.html中嵌入java代码就是jsp。
5.get请求把参数都显式出来,页面获取的都是string类型的。
6.修改
value="<%=name%>"
request.setCharacterEncoding("utf-8");
String strId=request.getParameterValues("id");
7.单步按f6
8.servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorldServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out=response.getWriter();
out.println("");
out.println("java33");
out.println("");
out.println("java33");
out.println("");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
public static void main(String[] args){
}
}
9.在浏览器中输入地址是doGet()请求。
10.jsp访问servlet,action="abc.do"
欢迎访问<\a>
11.servlet构造器只能被容器调用一次,单子模式
12.
13.构造器比初始化方法先调用,一个构造器被调用紧接着调用初始化方法,再调用别的构造方法。
14.init()方法
public void init() throws ServletException {
String driver=this.getInitParameter("driverClassName");
String username=this.getInitParameter("username");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out=response.getWriter();
out.println("");
out.println(driver);
out.println("");
out.println(username);
out.println("");
}
15.获取当前工程的绝对路径
String path = this.getServletContext().getRealPath("/");
16.HTTPServlet把service换成了doGet(),doPost(),doPut().
17.jsp也是单子模式,第一次启动时servlet比jsp快,以后速度一样。
18.regedit进注册表
19.servlet是运行在服务器端的java类,处在容器里面的单子模式。
20.顶级接口:Servlet,ServletConfig
抽象类:GeneralServlet
HttpServlet
21.servlet里面只能定义公共变量或常量。只能写无参构造器,因为反射机制只能调用无参构造器。
22.servlet的生命流程
1)web服务器启动时自动装载web.xml文件
2)如果servlet有load-on-startup就创建servlet实例并调用init方法(反射单子模式创建)
3)如果没有load-on-startup web容器就在客户端第一次访问到达的时候创建servlet实例并调用init方法
4)Servlet进驻内存
5)Servlet调用doGet或dopost方法
6)容器关闭时自动销毁Servlet实例
23.Connection con = DataSourceFactory.getDataSource();
BookDAO dao=DAOFactory.getBookDAO(con);
List
request.setAttribute("BOOK",books);
requestDispatcher rd = request.getRequestDispatcher("bookList.jsp");
rd.forward(request,response);
在jsp里面获取:
java.util.List
2月3日
1.加/表示到webcontent中去找,绝对路径。
2.复习servlet的生命流程
3.mvc概念
4.servlet动态添加出版社