`
褚晓娜(0511)
  • 浏览: 6005 次
  • 性别: Icon_minigender_2
  • 来自: 石家庄
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
Day1

目标
    面向对象OOP、抽象、封装 (构造方法)
抽象类、接口(方法的重载、重写)
String 字符串的正则表达式验证
异常 checkedException、unCheckedException、自定义异常
参数传递
枚举类型

1、面向对象OOP、抽象、封装 (构造方法)
    面向对象OOP: OOP是一种编程的思想、先通过代码建立
对象的模板(原型)、根据模板创建具体的实体、使用实体
进行实体间的消息传递来完成需要的操作。

    简单的:new 出对象,对象.xxx 调用方法;

模板: class{}
实体:  new Object(); 
消息传递 : obj1.doXXX(消息 obj2);



基于对象OBP: 对象在编写代码之前已经存在。

发明:
发现:

----------------------------------------
抽象
  在发明对象的时候,思考的过程, ideal 。
封装
   在思考的时候,把一个 ideal 慢慢的具体化。

远古的时候:发明了轮子

----------------------------------------
//编写一个轮子类
class Wheel{
    private double r;     //半径
private String type;  //材料
private String factory; //厂家

public Wheel(){}

//通过构造方法赋值,
//不带返回值,
//方法名与类名相同
//类中一定要有默认构造方法,不带参的构造方法
public Wheel(double r,String type,String factory){
this.r = r;
this.type = type;
this.factory = factory;
}

Day2
目标
    使用 "接口" 了解设计模式--策略模式(多态)
集合框架       (*)
泛型           (*)
文件
文件流 IO(流)   (*)
IO 中使用的设计模式--装饰者模式

1、使用 "接口" 了解设计模式--策略模式(多态)
   编写一个程序,模拟游戏--鸭子(游泳、呱呱叫、飞)
       (外观:红色的脑袋;黄色的脑袋;黑色的脑袋;白色的脑袋)
  
   策略模式:定义算法族,分别封装,让它们之间可以替换。
此模式让算法独立于使用算法的用户。
  
   算法:程序运行中变化的部分。
  
   设计原则:开闭原则。
对功能不变的内容,不允许修改代码;对经常变化的功能,允许通过代码扩展。
           
多用组合、少用继承


   好处:方便功能的扩展




2、集合框架       (*)
   java.util.*  提供了 Java 中的集合框架、日期处理类、格式类等工具
  
   集合:单独的一个对象,该对象中能够存储很多其他的对象。
可以把该对象看做弥勒佛的乾坤袋。
   有一个集合对象,往里面放入数据(任意类型),放入后,集合
对象如何管理里面的数据??
   (1)自动转换类型,任意类型-->Object 类型
   (2)排序
   (3)查找
   (4)取出数据
   (5)删除
   (6)插入
  
   集合框架:
                Collection(列表)
     /                    \
List(有序的,可重复)      Set(无序的,唯一)
/              \             |
ArrayList LinkedList       HashSet
     
  ----------------------------------
                  Map(映射)
  /     \
              HashMap   Hashtable

    ----------------------------------------

Collection.add(obj);   //自动分配内存,自动分配 index
Collection.delete(obj)  //obj 对应的索引会重新排序,把后续数据前移,继续使用该索引

不管做如何操作,保证 索引连续性

List    Set 的内存排序图如上,但是 List 中存储的对象 地址可以一样(可以存放重复对象)。   Set 中不同索引中必须存放不同地址的对象。

注意:
(1) 索引与内存地址不一样;
(2) 索引有集合对象生成和管理;
(3) 一般使用 Iterator 迭代器自动通过索引取值。


得到一个集合对象后,可以封装到 Collections 类中,然后进行排序
ArrayList list = new ArrayList();
list.add(obj1);
list.add(obj2);
list.add(obj3);
list.add(obj4);

Collections.addAll(list);
可以使用 Collections 内部自带的方法进行排序;
也可以自定义类继承 Collections ,自定义排序规则进行排序。


3、泛型           (*)
   JDK 5 新特性。
   (1)新的 for 循环
   (2)自动装箱、拆箱
   (3)泛型

   泛型好处:
   (1)泛型一般定义在集合对象中
   (2)确保放入到集合对象中的数据是符合要求的类型。
   (3)在代码运行过程中,不要进行类型判断或转换,提高运行的速度。
  
   /////////////////////////////////////////
   ArrayList<Integer> list2 =new ArrayList<Integer>() ;
list2.add(12);  //自动装箱

   int num = list2.get(0);  //自动拆箱
  
    仅仅限于 8 个原始数据类型使用。8种从 C 中直接拿来用的类型。
Java 在设计的时候直接把用于科学计算的 8 种类型借用过来,但是
这些类型不是对象。
   
使用包装类,把 8 个原始类型变成 Object 类型。
JDK 1.4 以及之前,都需要要手动的包装、类型转换。
int num = 10;
Integer num = new Integer(10);

//////////////////////////////
Map 中使用泛型 Map<key , value>

//放入数据时考虑类型
Map<String,Student>
//取出数据完全不考虑类型,提高运行效率

Set<K> map.keySet()
          返回此映射中包含的键的 Set 视图。
    Collection<V>  map.values()
          返回此映射中包含的值的 Collection 视图。

4、文件
java.io.File 
文件类 File 代表计算机硬盘上面存储的数据,这些数据有各自的
存储路径、有各自的名称、有各自的存储方式(字符、10100011001)、
存储后的属性。


D:\工作安排\所带学员\2010年11月8日-11月30日-河北冀软 3M\Day3-基础回顾\Day3.txt

\                  路径分割符
\所带学员\        不带后缀的 File 对象叫文件夹
    day2.txt          带后缀的 File 对象叫文件


File 类
属性
    static String separator
          与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串

File f = new File();
String ss = f.separator;  \(windows 系统)  /(UNIX)

构造方法
File(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一
  个新 File 实例。
    File(String pathname)
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
    File(String parent, String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
   
url 路径:一般是绝对路径,需要指定盘符;不指定盘符的话,相对于
    xxx.java    xxx.class

常用方法
boolean canRead()
          测试应用程序是否可以读取此抽象路径名表示的文件。
    boolean canWrite()
          测试应用程序是否可以修改此抽象路径名表示的文件。
     boolean exists()
          测试此抽象路径名表示的文件或目录是否存在。

File getAbsoluteFile()
          返回此抽象路径名的绝对路径名形式。
    String getAbsolutePath()
          返回此抽象路径名的绝对路径名字符串。
    String getName()
          返回由此抽象路径名表示的文件或目录的名称。
    String getParent()
          返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
    String getPath()
          将此抽象路径名转换为一个路径名字符串。
    long getTotalSpace()
          返回此抽象路径名指定的分区大小。
    boolean isDirectory()
          测试此抽象路径名表示的文件是否是一个目录。
    boolean isFile()
          测试此抽象路径名表示的文件是否是一个标准文件。
    boolean isHidden()
          测试此抽象路径名指定的文件是否是一个隐藏文件。
    long lastModified()
          返回此抽象路径名表示的文件最后一次被修改的时间。
    long length()
          返回由此抽象路径名表示的文件的长度。
     boolean mkdir()
          创建此抽象路径名指定的目录。
    boolean mkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

createNewFile();
      创建指定路径和名称的文件
 
 
 



5、文件流 IO(流)   (*)
    IO 包中重点描述的是各种情况下,读取文件中内容的工具---流
(1)输入/输出流
(2)节点流、处理流
(3)文件流
(4)缓冲流
(5)数据流
(6)转化流
(7)Print 流
(8)Object 流

输入输出:参照物是内存,
数据是从硬盘到内存--->输入
反之叫---->输出

流 的分类
(1)按照数据流的方向分为  输入流/输出流
(2)按照处理数据的单位不同,分为字节流(一次一个字节)、
   字符流(一次两个字节,处理汉字)
(3)按照功能分,节点流(从文件中读取)、处理流(带缓冲的流)

    API 中代码分类
             | 字节流       |   字符流
   -----------------------------------------
    输入流   | InputStream  | Reader
    输出流   | OutputStream | Writer


读取方法
    input.read()  一次读取一个字节
readLine()    一次读取一行
read(byte[] buffer)  一次读取多个字节,带缓冲的读取







6、IO 中使用的设计模式--装饰者模式













7、作业
   使用集合框架中的类,完成一个购物车类的逻辑代码,要求新建一个
ShoppingCar 类,实现,加入商品,自动计算商品的种类、个数、总价
可以删除一个商品、修改一种商品的数量。

收款单
编号    商品   单价   数量 
001     可乐   3.00    2
002     饼干   5.00    1
003     方便面 3.5     10

----------------------------
                总价: 46


  
  
  Day3
--------------------------------------------------------------------------------
目标
    回顾 Java IO
理解 Java 的线程           (*)
了解 Java 的反射
    了解 Java 的网络编程
回顾 JDBC 编程

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)关闭数据库连接。
  


http://quake2-gwt-port.appsport.com
http://mrdoob.com/
  
  
  Day4
----------------------------------------------------------------------------------
目标
   了解 Web 阶段课程
   回顾 JDBC
   了解 Web 标准
   了解  HTML 语言
   了解  HTML 语法
   掌握  HTML 常用标签
  
1、了解 Web 阶段课程
   HTML、CSS、JavaScript、Servlet、JSP、Ajax     14 天

   前台页面技术:HTML、CSS、JavaScript、JSP、、
   后台处理技术:Servlet、Ajax

   目标:完成一个完整功能的 Web 项目。
  
2、回顾 JDBC
   DBConnection.java  //专门负责建立和关闭数据库连接的类
  
   public Connection getConnection(){
Connection conn = null;
try{
    //通过  反射,在内存中得到一个 驱动的类对象
Class.forName(driverClass);

conn = DriverManager.getConnection(url,user,password);
}catch(Exception e){}

return conn;
   }
  
   public void closeConnection(Connection c){
try{
if(c != null){c.close();}
}catch(Exception e){}
   }
  
   ------------------------------------------------------
   UserDaoImp.java    Dao(Database  Access Object)
   class UserDaoImp{
//把所有的 SQL 定义在类中,方便查看和修改
private String insertSql = "insert into user(name,age) values(?,?)";

public boolean addUser(User user){
boolean b =false;

//参数检查
if(user == null){return b;}

Connection conn = null;
PreparedStatement ps = null;
try{
conn = DBConnection.getConnection();
conn.setAutocommite(false);  //取消自动提交事务

//创建 Statement 对象,先处理 SQL 语句
ps = conn.createStatement(this.insertSql);
//按照类型选择设置值的方法
//按照 ? 在 SQL 语句中的位置,指定值  索引从 1 开始
ps.setString(1,user.getName());
ps.setInt(2,user.getAge());

int rows = ps.executeUpdate();  //返回影响数据的条数

conn.commite();   //提交事务

if(rows > 0){b=true;}

}catch(){
conn.rollback();  //回滚事务
}finally{
DBConnection.close(conn);
}

return b;
}
   }

3、了解 Web 标准
   W3C 组织:国际互联网标准指定组织。
  
   底层网络协议:
网络底层协议(TCP/IP)、网络应用层协议(http,ftp)、
   网络传输内容的协议:
XML、HTML、CSS、JavaScript(Web 标准协议)
  
   上述标准,每个都有各自的用途,每个标准都需要不同的生产厂商支持。
    程序员需要了解上述标准,能够综合应用上述标准进行软件开发。  


    HTML:最新版本 5.0,使用的标准 HTML 4.0(宽松的标准)|XHTML 1.0(严格的标准)
    CSS :最新版本 3.0,使用的版本 2.x
JavaScript :没有统一标准。

Web 2.0 时代,代表网页使用 W3C 组织制定的 2.0版本的一系列
技术标准来实现的时代。
主要强调,通过浏览器展示更加丰富的页面效果,提高用户的体验,
同时让浏览器中显示的内容适应越来越多的计算机设备。
    富客户端界面: Adobe Flex、Oracle Fx、ExtJS、HTML 5
   

4、了解  HTML 语言
    HTML 语言是从 XML  语言衍生出来的<标记语言>。HTML 是专门在
浏览器中显示内容的组织结构语言(内容排版)。

<开始标签 属性1="值1" >标签内容</结束标签>
<element attribute1="value1" attribute2="value1"...>
element body
</element>

HTML 在早期,技术比较贫乏的时候,用于做进行页面内容布局,页面
样式修饰,字体修饰等。目前这些技术都已经过时了。。。

    -------------------------------------------
HTML 版本
  HTML 4.0(宽松的标准)|XHTML 1.0(严格的标准)
  HTML 5
 

5、了解  HTML 语法
   (1)网页 HTML 版本声明,声明该页面中使用的  HTML 版本
   <!DOCTYPE   XHTML 1.0 >
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html>
<head></head>
<body></body>
</html>
  
    (2)HTML 文件标记
   <html>
<head></head>
<body></body>
</html>

(3)HTML 内容排版标记
   一级标题、二级标题、、、、、、
   <h1></h1>、、、<h6></h6>
   段落
   <p></p>
   文字
   <span>HTML</span>
   换行       <br />
   分割线     <hr />
   块、层     <div></div>  (一个矩形的区域) (盒子)
       注释       <!-- -->
 
(4)HTML 字体标记
   <strong></strong>  <font></font>  <B></B> <I></I>
   <EM></EM> 
   都可以用 CSS 替换
(5)HTML 清单标记
   有序列表
<ol>
<li></li>
<li></li>
<li></li>
</ol>
   无序列表
   <ul>
<li></li>
<li></li>
<li></li>
</ul>
   自定义列表
     <dl>
<dd></dd>
<dd></dd>
<dd></dd>
</dl>
(6)HTML 调色标记
    <font>
  推荐使用 CSS  <p style="color:red" ></p>
(7)HTML 多媒体标记
   <embed  >
   目前使用很少

6、掌握  HTML 常用标签
   表格(显示数据给用户看)
     <table>
<tr><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
 
 
   表单(接受用户输入数据)
     <form  action="" method="" name="" id="">
用户名:<input type="text" name="name" value=""  /><br />
密码:<input type="password" name="pwd" value=""  /><br />
头像:<input type="file" name="img" value=""  /><br />
爱好:<input type="checkbox" name="like" value="1"  />篮球
      <input type="checkbox" name="like" value="2"  />睡觉
  <input type="checkbox" name="like" value="3"  />吃饭
  <input type="checkbox" name="like" value="4"  />游戏
  <input type="checkbox" name="like" value="5"  />上网
  <input type="checkbox" name="like" value="6"  />学习
<br />
性别:<input type="radio" name="sex" value="1" checked />男
      <input type="radio" name="sex" value="2"  />女
<br />
<input type="submit" name="" value="提交"  /><br />
<input type="reset" name="" value="取消"  /><br />
<input type="button" name="" value="返回"  /><br />

</form>


ACCESSKEY="u"   Alt+u   快捷键



http://www.exploreshanghai.com/ditie/
http://web2.qq.com/
http://javafx.com/

http://zh.wikipedia.org/zh-cn/HTML5







    
  
  
  
  
  
  
  

  
  





  
  
  

















分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics