您的位置:首页 > 理论基础 > 计算机网络

黑马程序员——第十五篇:线程池、单例设计模式、图形化界面、网络编程

2015-12-19 15:32 507 查看
  ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a

  href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

1.
线程池

 
1:  Executors类创建线程池对象
 
2:  ExecutorService 提交线程任务
 
3:  Future 获取线程执行返回值
 
4:  线程第三种实现方式
Callable接口,适用于线程池
 
程序Demo1:
通过Executors类创建线程池对象(实现Runnable接口)



程序Demo2:
通过Executors类创建线程池对象(实现Callable接口)



程序Demo3:
Callable中的call方法实现1+100,1+200的和



2.
单例设计模式

1:饿汉式程序Demo:



 
2:懒汉式程序Demo:



3. Runtime类

 
java.lang.Runtime
该类是一个单例设计模式,让我们自己写的程序和系统连接。
 
getRuntime()方法获取Runtime类对象,不允许自己创建Runtime类对象
 
Process exec(String command) 在单独的进程中执行指定的字符串命令
 
exec("") 执行系统命令,终止当前正在运行的 Java
虚拟机

4. java.awt包和javax.swing包

 
里面的类,接口,为图形界面服务
 
A:awt
抽象窗口工具包,所有功能都必须依赖操作系统
 
调用了操作系统底层功能,实现图形界面
 
重量级组件
 
 
B:javax.swing
基于awt的基础之上,Java语言自己编写的一套图形界面
 
  swing不依赖操作系统,轻量级组件
 
 
C:区别:
awt
在Windows上效果,就会和Windows一样的,在Linux上运行,图形效果就和Linux一样
swing
在Windows和Linux上的效果是一样的

5.
图形界面中继承关系

  
Component 具有图形表示能力的对象
    
|-- Container 图形界面对象,表示容器
      
|-- Window  没有边界和菜单窗口
        
|-- Frame 具有边界和菜单的窗口
        
 |-- Dialog 对话框
        
    |-- FileDialog 文件对话框
      
|-- Panel   面板,局部容器
 
    
|-- Button   按钮组件
    
|-- Label    文本标签组件
    
|-- checkbox 复选框
 
    
|-- TextComponent 文本组件,用户可以编辑的对象
      
|-- TextField   单行文本组件,不能换行
      
|-- TextArea    多行文本组件

6. Frame类

  
功能:创建具有标题,边框,菜单的窗口
  
A. 构造方法
    
Frame(String title)传递字符串标题
    
会显示在窗口最上面
  
B. 窗口的设置方法
    
void setVisible(boolean b) 父类中的方法
    
true显示窗体,fasle隐藏窗体
    
void setLocation(int x,int y)父类中的方法
    
窗体定位坐标, x
表示距离屏幕左侧的像素值
    
void setSize(int width,int height)父类方法
    
设置大小尺寸,宽度和高度,都是像素
    
void setBounds(int x,int y,int w,int h)父类中的方法
    
设置窗体的位置和大小
    
void setBackground(Color c)父类中的方法,设置背景色

7.
在窗体上添加按钮

  
Button类:可以实现按钮组件
  
构造方法:传递字符串标签,显示在按钮上面
  
每个容器都有方法add,添加组件
  
容器布局管理器
  
每个窗体容器都有一个方法 setLayout,设置布局管理器
  
frm.setLayout(new FlowLayout())   流式布局
  
frm.setLayout(new BorderLayout()) 边界布局
  
frm.setLayout(null)不使用布局管理器,绝对定位,组件可以随便放置

8.
事件监听机制 (event listener)

 软件和用户交互的一个途径
 用户操作软件,软件必须有一个功能回馈
 
 
A. 事件源
   
事件源就是用户在操作的部分
   
按钮,输入文本框,窗体 
复选框
 
B. 事件
   
用户操作事件源的方式
    
鼠标事件
       
点击
移入
离开
    
键盘事件
       
按下
弹起
    
窗体事件
       
最大化,最小化,打开,关闭
 C.
监听器
   
理解为窃听器,装在一个隐蔽的地方
   
随时工作中,只有声音,就会被监听器捕获,传送他的主人
   
监听器:安装在事件源上,监听器的工作等待捕获用户对鼠标的操作
   
只要有鼠标操作了,动作就会被监听器抓住,监听器就会根据用户的具体操作
   
调用不同的处理方式

 
D. 处理方式
   
就是普通的方法而已
   
方法我们自己不能调用,让监听器调用
   
鼠标点击方法(){}
   
鼠标移入方法(){}

9.
窗体事件监听机制

 
创建容器中的方法
    
注册窗体事件监听器
    
addWindowListener(WindowListener l)
    
在事件源上,已经安装好监听器(窃听器)
    
有窗体操作,就会被监听器抓住
 
    
addWindowListener(WindowListener l的实现类对象)
    
addWindowListener(new WindowListenerXXX())
    
windowIconified(WindowEvent e)
    
窗口从正常状态变为最小化状态时调用。
    
实现类重写windowIconified方法,监听器捕捉到了用户最小化动作
    
自动调用重写方法windowIconified
    
图形界面中的事件监听器的书写模版
      
事件源对象.addXXXListener(new XXXAdapter(){
          
public void YYY方法(XXXEvent e){
        
   }      
      
});
      
按钮对象.addMouseListener(new MouseAdapter(){
         
public void mouseClicked(MouseEvent e){
        
  }
      
});
      
frm.addWindowListener(new WindowAdapter(){
         
public void windowClosing(WindowEvent e){
        
  }
      
})

10.
鼠标事件

 
事件处理方法
  
mouseClicked 鼠标点击后被监听器调用
  
mouseEntered 鼠标点移入到组件后被监听器调用
  
mouseExited  鼠标点离开组件后被监听器调用
 
  
鼠标事件处理方法中有个参数,MouseEvent
类的对象
  
对象由监听器复杂传递
 
  
MouseEvent方法 getClickCount()获取点击次数,实现鼠标双击效果

11. TextField

 
表示可以编辑的单行文本框
 
构造方法:TextField()
 
String getText() 获取文本框内输入的文字
 
void setText() 设置文本框的文字

12.
键盘事件

 
重写方法keyPressed(KeyEvent e){
    
sop(e) 键盘按下的ASCII,按下字母
 
}
 
KeyEvent 定义了很多静态常量
 
定义规则:
   
键盘上键的名字变量名 =
码值
 
KeyEvent 类方法
   
int getKeyCode() 获取键盘的码值
   
char getKeyChar() 获取键盘的按下键的字符

 
KeyEvent类的父类InputEvent,有个方法
 
consume() 阻止输入
 
KeyEvent类的父类InputEvent,有个方法
 
boolean isControlDown() 判断按下的是不是Ctrl键
 
如果是返回true

13.图形化界面综合案例:

        
需求:文本转移,在上面文本框单行输入,当按回车键或者点击按钮时文本转到多行文本框。



14. InetAddress类

|-- static InetAddress getLocalHost()获取本机IP对象
|-- static InetAddress getByName(String ip)获取指定主机IP对象
|-- String getHostName()获取主机名
|-- String getHostAddress()获取主机IP地址

15.
协议

 |-- UDP
  
无连接
  
不安全,不可靠
  
限制64KB
  
运行速度快
 
 |-- TCP
  
面向连接
  
三次握手确认连接
  
运行速度慢
  
安全可靠,大数据传输

16. Scoket服务机制

 
表示IP+端口号,套接字
 
通信双方都必须具有Socket服务
 
数据是在两个Socket之间进行传输
 
数据是在两个Socket之间使用IO流技术传输
 
网络编程,不是在做网络,在建立好连接后,IO

17. UDP协议发送端

 
java.net.DatagramPacket 数据包,打包也可以拆包
 
java.net.DatagramSocket Socket服务机制
发生数据包,接收数据包
 
 
A. DatagramPacket发送,封装数据包
   
构造方法:
   
DatagramPacket(byte[] buf, int length, InetAddress address, int port)

                 
字节数组
发多长,  
P地址对象,     
端口号
 
B.DatagramSocket 发送数据包
   
构造方法:
    
DatagramSocket()
   
send(数据包对象)
发送数据包
close()关闭资源
 
程序Demo:使用UDP协议发送数据:



18. UDP接收端

   
java.net.DatagramPacket 数据包,打包也可以拆包
   
java.net.DatagramSocket Socket服务机制
发生数据包,接收数据包
  
A. DatagramSocket接收端
   
构造方法:
     
DatagramSocket(int 端口号)
   
接收数据包方法
     
receive(DatagramPacket dp)
  
B.DatagramPacket 接收端
拆包
   
构造方法:
     
DatagramPacket(byte[] buf, int length)
                  
字节数组, 
数组长度
   
拆包方法:
     
int getLength() 获取发送的数据包的长度
     
int getPort()   获取发送方的端口号
     
InetAddress getAddress() 获取发送方的IP地址对象
     
InetAddress方法 getHostAddress()
发送方IP
     
广播地址:192.168.31.255
     
只要IP是192.168.31开头的,就都可以受到信息
 
程序Demo:使用UDP协议接受数据



19. TCP通信

 
客户端和服务器之间的数据交换
 
客户端Socket对象,连接服务器
 
服务器ServerSocket对象,接收客户端连接
 
只要连接成功,连接道路,创建IO对象
 
 
客户端
输出数据到服务器 
输出流 
write
 
服务器
接收客户端的数据 
输入流 
read
 
 
服务器
数据回给客户端   
输出流
 
客户端
接收服务器的数据 
输入流
 

20. TCP客户端

 
java.net.Socket 实现客户端套接字
 
A. 构造方法:
     
Socket(String host, int port)
           
服务器IP地址,
端口
 
构造方法只要运行,连接服务器,如果没有服务器,直接抛异常
 
 
B. OutputStream  getOutputStream()获取字节输出流
 
作用:数组以字节形式,写到服务器
 
 
C. InputStream getInputStream()获取字节输入流
 
作用:
读取服务器发回字节数组



21. TCP服务器端

 
java.net.ServerSocket 实现服务器端套接字
  
A. 构造方法:
    
ServerSocket(int 端口)
  
B. Socket accept()
    
获取客户端的连接对象Socket
    
使用客户端的连接对象Socket获取IO
 
程序Demo:实现TCP服务器端



22. TCP图片上传案例

客户端:
 
客户端,字节流读取图片,字节数组
 
字节数组写到服务器端
 
程序Demo:



服务器端:
  读取客户端发来图片(字节数组)
 
将图片写到自己的文件夹 d:\\upload
 
将上传成功回写客户端
程序Demo:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: