网络编程概述:
Java是 Internet 上的语言,它从语言级上提供了对网络应用程 序的支持,程序员能够很容易开发常见的网络应用程序。
Java提供的网络类库,可以实现无痛的网络连接,联网的底层 细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并 且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一 的网络编程环境。
网络通信:
计算机网络:
把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规 模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、 共享硬件、软件、数据信息等资源。
网络编程的目的:直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯。
通信双方地址
1、IP
2、端口号
一定的规则(即:网络通信协议。有两套参考模型)
OSI参考模型:模型过于理想化,未能在因特网上进行广泛推广
TCP/IP参考模型(或TCP/IP协议):事实上的国际标准。
网络协议
传输层协议中有两个非常重要的协议
传输控制协议TCP
用户数据报协议UDP
TCP协议:
使用TCP协议前,须先建立TCP连接,形成传输数据通道
传输前,采用“三次握手”方式,点对点通信,是可靠的
TCP协议进行通信的两个应用进程:客户端、服务端。
在连接中可进行大数据量的传输
传输完毕,需释放已建立的连接,效率低
UDP协议:
将数据、源、目的封装成数据包,不需要建立连接
每个数据报的大小限制在64K内
发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
可以广播发送
发送数据结束时无需释放资源,开销小,速度快
正则表达式
正则表达式:定义了字符串的匹配模式可以用来搜索,编辑或处理文本,并不仅限于某一种语言,但是每种语言中有细微的差别
JDK1.4 推出的 java.util.regex 包,很好的支持了正则表达式
常用语法:
\转义符,把有意义的字符转为无意义的字符,但java中\也是转义符,所以在java中编写正则表达式的时候,
* 需要转义符的时候要写两个\\
* 字符取值范围相关
[abc]:表示可能是a,可能是b,也可能是c(abc中的任意一个)
[^abc]:表示不是abc中的任何一个
[a-zA-Z]:表示是大小写字母,[a-z] 小写字母 , [A-Z] 大写字母 [0-9] 数字0-9
*a-zA-Z0-9] : 表示是数字或字母
简洁表示:
. :匹配任意字符
\d :表示数字,等同于[0-9]
\D : 表示非数字 等同于 [^0-9]
\s : 表示由空字符组成, [\t\n\r\x\f]
\S : 表示非空字符组成
\w : 表示由字母数字下划线组成 [a-zA-Z0-9_]
\W : 表示非字母数字下划线 [^a-zA-Z0-9_]
表示数量:
? : 表示出现0次或1次
+ : 表示1次或多次, 大于等于1
* : 任意次数(0~N)
{n} : 表示出现n次
{n,m} : 表示出现n次到m次
{n,} : 表示出现n及以上 >=n
() : 把他们看做一个整体
| 或,a|b ,a和b都可以匹配
^ : 以什么什么打头 , 但是 用在[^xxx] 就表示取反
$ : 以什么什么结尾
校验非汉字:
[^\u4e00-\u9fa5]
Pattern : 创建正则表达式对象,能做一些基本的简单操作
三大功能 :
验证 : boolean matchers(String regex);
拆分 : String[] split(String regex);
替换 : String replaceAll(String regex,String replacement);
Pattern类
用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建
可以通过Pattern.complie(String regex)创建一个正则表达式
只能做一些简单的匹配操作
Matcher类
构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例 Matcher m = p.matcher("aaaaab");
支持便捷强大的正则匹配操作,包括分组、多次匹配支持
Matcher三大方法
Matcher.matches():对整个字符串进行匹配,只有整个字符串都匹配了才返回true
Matcher.lookingAt():对前面的字符串进行匹配,只有匹配到的字符串在最前面才返回true
Matcher.find():对字符串进行匹配,匹配到的字符串可以在任何位置