1、回顾 Java IO
使用 IO 流来完成文件内容的读取、复制等操作的步骤:
(1)新建 File 对象(节点,包含很多要传输的数据)
File f = new File(url);
(2)新建 节点流对象 ,把 File 对象放入流对象的构造方法
FileInputStream in = new FileInputStream(f);
(3)新建 处理流对象,把 节点流对象,放入 后者的构造方法中
BufferedInputStream bis = new BufferedInputStream(in);
(4)使用 处理流对象,对文件中的数据进行读取
bis.readLine(); //读到内存中,可被程序直接使用
(5)处理完毕,扫尾,释放资源。
bis.flush(); //把流中的数据全部挤出
bis.close(); //按照打开流相反的顺序关闭流
in.close();
装饰者模式:
卖奶茶:基础组成:水、奶粉、糖、
珍珠奶茶类:薰衣草奶茶、西瓜奶茶、香蕉奶茶、凤梨奶茶、
柳橙奶茶、青苹果奶茶、水蜜桃奶茶、蓝莓奶茶、韩国饮品、
哈密瓜奶茶、香草奶茶、玫瑰奶茶、芒果奶茶、椰子奶茶、咖啡奶茶、
韩国饮品、香芋奶茶、草莓奶茶、鸳鸯奶茶、巧克力奶茶
青苹果果汁、凤梨果汁、奇异果果汁、水蜜桃果汁、玫瑰果汁、
草莓果汁、哈密瓜果汁、石榴果汁、葡萄果汁、水晶酸奶
装饰者模式能够动态的把责任(功能),添加到对象上面,如果要对
一个对象进行扩展,装饰者比继承要灵活。
一般通过构造方法来组合多个对象
BufferedInputStream(new InputStream(new File()))
2、理解 Java 的线程 (*)
java.lang.Thread
例子:肚子饿
进入一条美食街,有各种小吃店。每一家小吃店就叫一个进程。
挑选一家,叫当前进程。
进入这家小吃店后,发现人很多(100),服务员很少(2)、厨师更少(1)
大多数人排队等候,等待吃饭的人是线程。服务员是线程调度程序。
厨师是机器的核心 CPU。
进程:指能够有独立代码和数据空间的程序,进程之间切换消耗较大。
线程:轻量级的进程,一个进程中能够同时执行的多个控制流。
开发步骤:
(1)继承 Thread 类 也有一个可以重写的方法 run(){}
通过 t.start() 启动线程
(2)实现 Runnable 接口,只有一个必须实现的方法 run(){}
通过 r.run() 启动线程
我们需要进行线程控制的代码写在 run(){} 方法中,run() 线程体
线程状态:
|------阻塞态---------|
| |
开始---t.start()--->就绪--->服务员调度--->运行态--->终止
控制方法:
t.isAlive() 判断线程是否终止
t.getPriority() 得到当前线程的优先级
t.setPriority() 设置当前线程的优先级(给服务员小费)
t.sleep() 让当前线程休息,从运行态到阻塞态
t.notify() 通知等待状态的一个线程,可以使用 CPU
t.notifyAll() 通知等待状态的所有线程,可以使用 CPU
t.join() 线程合并
t.yield() 主动退出 CPU 时间片
//打断一个线程对象的睡眠
r.interrupt();
try {
sleep(1000); //1 second
} catch (InterruptedException e) {
//InterruptedException 打断睡觉的异常类型
System.out.println("Runner3 的睡眠被打断........");
return;
}
同步:
为防止两个线程,同时使用相同的资源,当一个线程使用 CPU 时间片
时,把相关的资源上锁。当该线程执行完毕,解锁。
上锁有两种方式:
(1)在代码段上面添加 synchronized (线程对象) {//上锁的代码}
(2)在方法上面添加 public synchronized void run(){}
3、了解 Java 的反射
反射是通过类的完整名称,反向得到类的详细信息的手段。
例如:破案高手,看到犯罪分子留下的“脚印”。反向推断,人的身高、
体重、是否残疾、走路的习惯、
java.lang.Class
Java 中反射从 Class 类开始,能够通过一个类名,得到该类中所有的
属性、方法、构造函数、得到类的对象
面向对象,每个对象都是对象,每一个类也是对象。Class
Class c = null;
try{
c = Class.forName("aa.bb.cc.Test");
Test t = new Test();
Class cc = t.getClass();
}catch(ClassNoFoundException e){}
深入一点:通过 Class 对象可以得到一个类的:构造函数、属性、方法
java.lang.reflect.Constructor[] c.getConstructors()
java.lang.reflect.Field[] c.getDeclaredFields()
java.lang.reflect.Method[] c.getDeclaredMethods()
4、了解 Java 的网络编程
服务器、客户端、网络
上缴周报:客户端(窗口)、网络(安博昆山局域网)、服务器(FTP软件)、
使用 Socket 主要用于进行网络之间的远距离通讯。
实现过程:
(1)先编写 服务器端代码
ServerSocket ss= new ServerSocket(6666);
Socket s = ss.accept();
(2)编写 客户端代码
Socket s = new Socket("127.0.0.1",6666);
(3)先运行服务器端代码,一直运行,等待客户访问
(4)随时访问服务器
http://www.iciba.com/yield/ 域名解析--->
http://172.4.11.44:8080/iciba 真实地址
http: 网络协议
172.4.11.44: 服务器所在 IP 地址
8080 服务器访问端口号
iciba 服务器上运行的程序名
客户端代码: IP 地址、端口号
服务器:端口号、协议
5、掌握 JDBC 开发的基本步骤 (*)
JDBC 开发步骤:
(1)打开数据库服务器
(2)在项目中加入 数据库驱动程序文件
(3)写数据库连接类
(4)加载驱动 Class.forName();
(5)得到连接 DriverManager.getConnection(url,user,password);
(6)准备 SQL 语句
(7)得到 Statement 对象
(8)通过 Statement 对象执行 SQL 语句,得到返回值
(9)处理返回结果。
(10)关闭数据库连接。