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

黑马程序员<Java笔记<GUI 网络编程反射>>

2015-06-14 22:12 567 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

1:GUI(了解)

(1)GUI是用户图形接口。
(2)两个包:
java.awt:和系统关联较强,重量级组件。
javax.swing:由纯Java实现,轻量级组件。
(3)组件:就是对象。
基本组件:依赖于容器组件能够具备独立功能。
容器组件:存储基本组件和容器组件的组件。
(4)案例:
第一个窗体
第一个窗体关闭
窗体添加按钮,并对按钮添加事件
窗体添加文本框,并转移数据
一级菜单案例
多级菜单案例
(5)事件监听机制(理解)
事件源:发生事件的组件
事件:要发生的事情
事件处理:对该事件的处理方案
事件监听:把事件源和事件进行关联

(6)适配器模式
接口:有多个功能

抽象类:实现接口,全部提供空实现

具体类:继承抽象类,使用谁,重新谁

(1)网络编程概述
A:计算机网络
是指将地理位置不同的具有独立功能的多台计算机及其外部设备,
通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,
实现资源共享和信息传递的计算机系统。
B:网络编程
就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。

(2)网络模型概述和图解
A:网络模型概述
计算机网络之间以何种规则进行通信,就是网络模型研究问题。
网络模型一般是指
OSI(Open System Interconnection开放系统互连)参考模型
TCP/IP参考模型

(3)网络编程(网络编程三要素概述)
A:IP地址:InetAddress
网络中设备的标识,不易记忆,可用主机名
B:端口号
用于标识进程的逻辑地址,不同进程的标识
C:传输协议
通讯的规则
常见协议:TCP,UDP

(4)IP概述
A:IP概述
所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。
按照TCP/IP规定,IP地址用二进制来表示,每个IP地址长32bit,
比特换算成字节,就是4个字节。
例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,
这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,
IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。
于是,上面的IP地址可以表示为“10.0.0.1”。
IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。
B:IP地址的组成
IP地址 = 网络号码+主机地址
A类IP地址:第一段号码为网络号码,剩下的三段号码为本地计算机的号码
B类IP地址:前二段号码为网络号码,剩下的二段号码为本地计算机的号码
C类IP地址:前三段号码为网络号码,剩下的一段号码为本地计算机的号码
C:IP地址分类
A类 1.0.0.1---127.255.255.254(1)10.X.X.X是私有地址(私有地址就是在互联网上不使用,而被用在局域网络中的地址)(2)127.X.X.X是保留地址,用做循环测试用的。
B类 128.0.0.1---191.255.255.254172.16.0.0---172.31.255.255是私有地址。169.254.X.X是保留地址。
C类 192.0.0.1---223.255.255.254192.168.X.X是私有地址
D类 224.0.0.1---239.255.255.254
E类 240.0.0.1---247.255.255.254
D:特殊地址
127.0.0.1 回环地址,可用于测试本机的网络是否有问题. ping 127.0.0.1   

DOS命令 ipconfig:查看本机IP地址

xxx.xxx.xxx.0 网络地址
xxx.xxx.xxx.255 广播地址

(5)InetAddress类的概述
此类表示互联网协议 (IP) 地址。 
InetAddress类的常见功能
public static InetAddress getByName(String host)
public String getHostAddress()
public String getHostName()

(6)端口
物理端口 网卡口
逻辑端口 我们指的就是逻辑端口
a:每个网络程序都会至少有一个逻辑端口
b:用于标识进程的逻辑地址,不同进程的标识
c:有效端口:0~65535,其中0~1024系统使用或保留端口。
通过360可以查看端口号

(7)协议
UDP
将数据源和目的封装成数据包中,不需要建立连接;
每个数据报的大小在限制在64k;
因无连接,是不可靠协议;
不需要建立连接,速度快
TCP
建立连接,形成传输数据的通道;
在连接中进行大数据量传输;
通过三次握手完成连接,是可靠协议;
必须建立连接,效率会稍低

(8)Socket通信原理
A:Socket套接字概述:
网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
B:Socket原理机制:
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。

1:不同类加载器的使用

2:反射(理解)
(1)通过字节码文件对象去使用构造方法,成员变量,成员方法。
(2)如何获取字节码文件对象:
A:通过Object类的getClass()方法。
B:通过数据类型的class静态属性。
C:通过Class类的静态方法forName()。
(3)反射获取操作:
A:通过反射获取构造方法并使用。
通过构造方法对象创建对象。
B:通过反射获取成员变量并使用。
通过成员变量对象给成员变量赋值。
C:通过反射获取成员方法并使用。
通过成员方法对象调用成员方法。
(4)暴力反射:取消访问权限检查
(5)面试题:
反射越过泛型检查。
反射运行配置文件内容。(可以帮助我们理解反射的好处)

3:简单设计模式

设计模式概述:
设计模式这个术语是由Erich Gamma等人在1990年代从建筑设计领域引入到计算机科学的。它是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。

设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。面向对象设计模式通常以类或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

设计模式分类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

(1)、单例设计模式
在整个应用中有且仅有一个实例对象
典型案例:
RunTime

(2)、适配器设计模式
将一个类的接口根据用户的需求,适配成便于使用的类/抽象类
典型案例:
GUI监听器

(3)、装饰设计模式
添加一个修饰类包裹原来的类,在运行时便可以扩充其新的功能
典型案例:
高效缓冲IO流

(4)、工厂设计模式
使用工厂创建某些类的实例对象,从而取代之前自身调用构造new的操作
典型案例:
线程池

(5)、模板设计模式
将一个完整功能分隔成不同步骤,对多个实现类共同的操作使用具体的实现,对多个类的差异操作使用抽象

9.图形界面编程

9.1.GUI概念

?什么是GUI

?GUI是Graphical User Interface的缩写,图形化用户界面

?awt和swing

?Java为GUI提供的对象都存在java.awt,javax.swing两个包中

?awt依赖于本地系统平台,如颜色样式显示

?swing跨平台

?组件与容器

?组件Component,是GUI图形界面的组成单元。

?容器Container,可以存放组件,也可以存放容器。

9.2.布局管理

?FlowLayout(流式布局管理器)

?从左到右的顺序排列。

?BorderLayout(边界布局管理器)   

?东,南,西,北,中

?GridLayout(网格布局管理器)

?规则的矩阵

?CardLayout(卡片布局管理器)

?选项卡

?GridBagLayout(网格包布局管理器)

?非规则的矩阵

9.3.建立一个窗体

?窗体中可以存放各种组件,所以窗体是容器Container。创建时我们使用的是它的子类

?Container的常用子类有两个,Window和Panel。Window是我们常用的窗体,Panel是用来布局的不可见的。

?Window也有两个常用子类,Frame和Dialog。Frame是我们常用的带有标题和边框的顶层窗口,Dialog是对话框。

?所有AWT包中的类都会运行在AWT线程上

9.4.事件处理

?事件处理机制

?事件:用户对组件的一个操作。

?事件源:发生事件的组件。

?监听器:我们需要处理某个事件,就需要在发生事件的组件上添加监听器,也就是java.awt.event包中XxxListener接口的子类。

?事件处理器:监听器中的方法。监听器被添加在组件上之后,组件上发生了对应事件就会执行指定方法。

?常用事件分类

?窗体事件,WindowEvent,窗体打开、关闭、正在关闭、激活、最小化等。

?鼠标事件,MouseEvent,鼠标按下、抬起、进入、移出等。

?键盘事件,KeyEvent,键盘按下、抬起等。

?动作事件,ActionEvent,在某一组件上发生了定义好的动作,例如按钮上鼠标点击或按空格,菜单上鼠标点击或按回车等。

?Adapter

?通常Listener接口中都是有多个抽象方法的,而我们使用的时候有可能不会全部需要,如果定义子类实现接口那么就必须重写所有方法,这是比较麻烦的。Java中为我们提供了一些抽象的实现类,在类中对接口的抽象方法进行了空的实现,我们再定义监听器时只要继承这些抽象类就可以,这样那些不需要的方法就可以不再去重写了。

10.网络编程

10.1.网络编程概念

?IP地址

?每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。 

?ipconfig:查看本机IP

?ping:测试连接

?本地回路地址:127.0.0.1

?IPv4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。 

?IPv6:8组,每组4个16进制数。

1a2b:0000:aaaa:0000:0000:0000:aabb:1f2f

1a2b::aaaa:0000:0000:0000:aabb:1f2f

1a2b:0000:aaaa::aabb:1f2f

1a2b:0000:aaaa::0000:aabb:1f2f

1a2b:0000:aaaa:0000::aabb:1f2f

?端口号

?每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。

?端口号范围从0-65535

?编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。

?常用端口

mysql: 3306

oracle: 1521

web: 80

tomcat: 8080

QQ: 4000

feiQ: 2425

?网络协议

?为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

?UDP

面向无连接,数据不安全,速度快。不区分客户端与服务端。

?TCP

面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。

?Socket

?通信的两端都有Socket。

?网络通信其实就是Socket间的通信。

?数据在两个Socket间通过IO流传输。

?Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。

10.2.UDP传输

?发送

创建DatagramSocket

创建DatagramPacket

使用DatagramSocket发送DatagramPacket

关闭DatagramSocket

?接收

创建DatagramSocket

创建DatagramPacket

使用DatagramSocket接收DatagramPacket

关闭DatagramSocket

10.3.TCP传输 

?客户端

?创建Socket连接服务端

?调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的管道流

?输入流可以读取服务端输出流写出的数据

?输出流可以写出数据到服务端的输入流

?服务端

?创建ServerSocket

?调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket

?调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的管道流

?输入流可以读取客户端输出流写出的数据

?输出流可以写出数据到客户端的输入流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: