黑马程序员——网路编程、正则表达式

来源:互联网 发布:python爬虫入门书籍 编辑:程序博客网 时间:2024/06/06 07:25

 ------- android培训、java培训、期待与您交流! ----------

———————————————————————————————————————————————————



29、GUI

Graphical User Interface
awt: Abstract Window ToolKit
布局管理器:
flow
 
|——Component  体系结构
|--Container
|---Panel
|---Window
|----Frame
|----Dialog
|-----FileDialog
 
 
30、网络编程
网络编程也叫Socket编程
|——UDP传输
DatagramSocket
此类表示用来发送和接收数据报包的套接字。
DatagramPacket
此类表示数据报包。 
数据报包用来实现无连接包投递服务
|——TCP
ServerSocket 服务端套接字
Socket 客户端套接字
服务器端想要和客户端通信,就需要得到当前客户端的套接字

|——最常见的客户端:
浏览器:IE ,现在很多浏览器使用webkit内核
最常见的服务端:
服务器:Tomcat
 
|——模拟web服务器:
GET / HTTP/1.1//请求行 。目前http协议有两个  1.0  和1.1
//请求消息头   属性名:属性值    其实就是键值对
Host: localhost:9090
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) 
Chrome/23.0.1271.64 Safari/537.11  AirView3.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8
Accept-Encoding: gzip,deflate,sdch   //支持的压缩方式
Accept-Language: zh-CN,zh;q=0.8//支持的语言
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3//支持的编码方式

//请求体   请求体和请求头有一个空行
自定义信息
 
|——模拟浏览器
HTTP/1.1 505 HTTP Version Not Supported  //应答行 ,协议版本,应答状态码,应答状态描述协议
Server: Apache-Coyote/1.1
Date: Tue, 11 Jun 2013 12:42:50 GMT
Connection: close
//空行
应答体
 
|——URL
String url_str = "http://www.baidu.com/index.html?name=zhangsan";
URL url = new URL(url_str);

System.out.println("getProtocol:"+url.getProtocol());
System.out.println("getHost:"+url.getHost());
System.out.println("getPort:"+url.getPort());
System.out.println("getFile:"+url.getFile());
System.out.println("getPath:"+url.getPath());
System.out.println("getQuery:"+url.getQuery());
 
URL openStream()方法 返回值是InputStream
打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
它其实是URL中openConnection().getInputStream()

|——获取URL的连接器对象。将连接封装成了对象:java中内置的可以解析的具体协议的对象//是一种底层实现
URLConnection con = url.openConnection();  //这个叫做URL连接器对象
//直接打印连接器对象
sun.net.www.protocol.http.HttpURLConnection:http://www.baidu.com/index.html?name
=zhangsan
 
 
|——为了解析服务器发回的web信息。就要使用URL对象
URL url = new URL(url_str);
URLConnection con = url.openConnection(); 
使用URL或者连接器的方法
 
31、 反射 提高了扩展性
java反射机制就是运行在运行状态中,对于任意一个类(class文件)都能够知道这个类的所有属性和方法
动态获取的信息以及动态调用对象的方法的功能称为反射机制
动态类获取类中信息就是java反射
反射一般有:接口、配置文件
想要对一个类文件进行解剖,只要拿到这个类的class文件就可以了
|——获取字节码的三种方式:
Class clazz = 类.class;
Class clazz = 对象.getClass();
Class clazz = Class.forName("完整类名");
 
|—— 基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)
和关键字 void 也表示为 Class 对象。 
 
32、 正则表达式  
正则表达式是用于操作字符串数据的
通过一定的符号来体现的
|——一些常用的表达式:
字符类 
[abc] a、b 或 c(简单类) 
[^abc] 任何字符,除了 a、b 或 c(否定) 
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) 
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集) 
[a-z&&[def]] d、e 或 f(交集) 
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去) 
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去) 



预定义字符类 
. 任何字符(与行结束符可能匹配也可能不匹配) 
\d 数字: [0-9] 
\D 非数字: [^0-9] 
\s 空白字符: [ \t\n\x0B\f\r] 
\S 非空白字符: [^\s] 
\w 单词字符: [a-zA-Z_0-9] 
\W 非单词字符: [^\w] 
边界匹配器 
^ 行的开头 
$ 行的结尾 
\b 单词边界 
\B 非单词边界 
\A 输入的开头 
\G 上一个匹配的结尾 
\Z 输入的结尾,仅用于最后的结束符(如果有的话) 
\z 输入的结尾 
Greedy 数量词 
X? X,一次或一次也没有 
X* X,零次或多次 
X+ X,一次或多次 
X{n} X,恰好 n 次 
X{n,} X,至少 n 次 
X{n,m} X,至少 n 次,但是不超过 m 次 


组和捕获 
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组: 


1     ((A)(B(C))) 
2     \A 
3     (B(C)) 
4     (C) 


组零始终代表整个表达式。
 
|——正则表达式对字符串的常见操作:
1、 匹配:
其实使用的就是String类中的matches方法
2、 切割:
其实就是使用String类的split方法
String str = "zhangsantttlisimmmmwangwu";
String []names = str.split("(.)\\1+");
3、 替换:
其实使用的就是String类中replaceAll方法
String tel = "15000002222";
tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
4、 获取:
String str = "ni men hao.hello world";
 
Pattern p = Pattern.compile("\\b[a-z]{3}\\b");  // \b表示单词边界
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group());
}
|——建立表达式的方法:
String reg = "[1-9][0-9]{4,14}"; //直接使用string
//将正则表达式封装成对象
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
原创粉丝点击