• 正则表达式及网络编程


    一、缓冲流(都是将数据先换冲到内存缓冲区,然后写入磁盘,或者读取到内存)

    1、字节缓冲输入流

    构造方法:

    BufferedInputStream(InputStream in) 通过字节输入流创建 字节输入缓冲流 对象,默认是8KB

    2、字节缓冲输出流

    ①构造方法:

    BufferedInputStream(InputStream in) 通过字节输入流创建 字节输入缓冲流对 默认是8KB

    只有字节缓冲输出流或者字符缓冲输出流才有flush方法,他们都是先将数据输出到缓冲区,然后flush或者close方法,将数据同步导磁盘

    3、字符缓冲输入流

    ①构造方法:

       BufferedReader(Reader in)    

    ②BufferedReader缓冲流类还提供了一个一次读取一行的方法:

       String readLine()   (只有这个类提供了这个方法)一次读取一行字符,

    如果读取不到字符,则会返回null(这是和read方法的区别),它是以        

    来判断是不是一行的,当没有出现这些标志时,他会一直等着,不会结束

    4、字符缓冲输出流

    ①构造方法:

       BufferedWriter(Writer out)

    ②BufferedWriter特有的方法:

        void newLine() 写入一个换行符。

    二、异常处理方式二

    java7之后,IO流出现了一种自动关闭流的异常处理。

    java7之后所有的IO流都实现了一个接口,该接口叫做  AutoCloseable,

      并且这个异常处理会自动关闭流

      try(

       创建IO流对象,该对象必须实现了AutoCloseable接口

      ){

       可能出现异常的代码

      }catch(异常类型 变量名){

       异常处理

      }catch(异常类型 变量名){

      异常处理

      }catch(异常类型 变量名){

      异常处理

      }

    三.打印流

      PrintStream(OutputStream out)   把数据打印到指定的输出流中

    四.标准输入流、标准输出流、标准错误流

    System类(属于系统类)内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。

    static PrintStream out “标准”输出流。

        static PrintStream err “标准”错误输出流。 只是将输出的内容标红而已

    static InputStream in “标准”输入流。

    五、正则表达式(regex

    ①正则表达式: 简单理解就是一个字符串,只是该字符串它是另外的字符串的匹配规则。

      

       ②作用: 验证其他字符串是否按照正则表达式的规则编写         满足:true, 不满足:返回false

      

       ③常见的正则表达式的规则写法:

       ABC----》验证你的字符串是否就是一个ABC

       [0-9]--->验证你的字符串是否是0-9中任意一位数字         注意:它只能匹配字符串一位

       [A-Z]--->验证你的字符串是否是A-Z中任意一位字符         注意:它只能匹配字符串一位

       [a-z]--->验证你的字符串是否是a-z中任意一位字符         注意:它只能匹配字符串一位

       [a-zA-Z]--->验证你的字符串是否是任意一位英文字母         注意:它只能匹配字符串一位

       [a-zA-Z0-9]--->验证你的字符串是否是任意一位英文字母或者数字  注意:它只能匹配字符串一位

       [ABC]---->验证你的字符串是否是A或者B或者C中的任意一位   注意:它只能匹配字符串一位

      

       d 表示一个整数

      

       ④Greedy 数量词

    X? X,一次或一次也没有

    X* X,零次或多次

    X+ X,一次或多次

    X{n} X,恰好 n 次

    X{n,} X,至少 n 次

    X{n,m} X,至少 n 次,但是不超过 m 次

    ⑤预定义字符类

    . 任何字符(与行结束符可能匹配也可能不匹配)

    d 数字:[0-9]

    D 非数字: [^0-9]

    s 空白字符:[ x0Bf ]

    S 非空白字符:[^s]

    w 单词字符:[a-zA-Z_0-9]   判断你的字符串是否是任意字母,任意数字或者_   满足:true  不满足 false

    W 非单词字符:[^w]

    ⑥边界匹配器

    ^ 行的开头

    $ 行的结尾

    ⑦Logical 运算符

    XY    X后紧跟 Y

    X|Y X 或 Y

    六、ip操作

      InetAddress(工具类,方法基本都是static修饰)此类表示互联网协议 (IP) 地址。

      IP 地址是 IP 使用的 32 位(四段)或 128位(八段)无符号数字,它是一种低级协议,UDP 和 TCP 协议都是在它的基础上构建的。

      static InetAddress getLocalHost() 返回本地主机。

        static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。

       static InetAddress[] getAllByName(String host) 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。

        static InetAddress getByAddress(byte[] addr) 在给定原始 IP 地址的情况下,返回 InetAddress 对象。

        static InetAddress getByAddress(String host, byte[] addr)  根据提供的主机名和 IP 地址创建 InetAddress。

        boolean isReachable(int timeout)  测试是否可以达到该地址

    七、URL

      平时我们在网上看到的网址,只看到域名并没有看到端口号

       答:http协议浏览器默认的端口号是80   https浏览器默认端口号是443    默认端口号是被省了的

      URL = 协议 + ip地址(域名) +端口号 + 资源路径    为什么要使用域名而不使用IP地址?为了方便记忆

      protocol:协议

      host: ip地址

       port:端口号

       File:资源文件

      构造方法:

       URL(String protocol, String host, int port, String file)

    常用方法:

    InputStream openStream() 打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream对象。

    八、URL的编码和解码

    URLencoder是对URL以指定的字符集进行编码;

    URLdecoder是对URL以指定的字符集进行解码。

    static String encode(String s, String enc)  以指定的字符集进行编码

    static String decode(String s, String enc)  以指定的字符集进行解码

    一般都是用在,对网址进行编码或者对你查询的参数进行编码,其实一般都是对中文进行编码

    九、网络编程

    package cn.itsource_o9tcp2;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class Client {
        public static void main(String[] args) throws UnknownHostException, IOException {
            Socket socket = new Socket("192.168.43.59",9999);
            //客户端监听服务端发过来的信息
            InputStream inputStream = socket.getInputStream();
            new ClientThread(inputStream).start();
            //创建打印流(打印流是将数据打印到指定的流中)
            PrintStream printStream = new PrintStream(socket.getOutputStream());
            InputStream in = System.in;
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
            String line;
            while((line = bufferedReader.readLine()) != null){
                printStream.println(line);
            }
            
        }
    
    }
    View Code
    package cn.itsource_o9tcp2;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    public class ClientThread extends Thread{
        private InputStream inputStream;
    
        public ClientThread(InputStream inputStream) {
            super();
            this.inputStream = inputStream;
        }
        @Override
        public void run() {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            while(true){
                String line;
                try {
                    while((line = bufferedReader.readLine()) != null){
                        System.out.println("客户端接收到的数据:="+line);
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    
    }
    View Code
    package cn.itsource_o9tcp2;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
        public static void main(String[] args) throws IOException {
            //创建一个服务器
            ServerSocket server = new ServerSocket(9999);
            //创建一个终端监听服务器(如果没接收到数据,这儿会发生阻塞)
            Socket socket = server.accept();
            //创建一个终端的字节输入流对象
            InputStream inputStream = socket.getInputStream();
            //创建一个server线程来一直监听终端是否收到信息,一旦收到信息,便执行线程中的内容
            new ServerThread(inputStream).start();
            //通过终端的字节输出流对象创建一个打印流
            PrintStream printStream = new PrintStream(socket.getOutputStream());
            //创建一个标准输入流对象
            InputStream in = System.in;
            //用标准输入流对象创建一个字符输入流对象,//通过字符缓冲输入流进行读取控制台里面输入的内容
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
            String line;
            while((line = bufferedReader.readLine())!=null){
                //读多少,打印流就输出多少
                printStream.println(line);
            }
        }
    
    }
    View Code
    package cn.itsource_o9tcp2;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    public class ServerThread extends Thread{
        //定义一个成员变量来保存InputStream的信息
        private InputStream inputStream;
        //通过构造方法为成员变量赋值
        public ServerThread(InputStream inputStream) {
            this.inputStream = inputStream;
        }
        @Override
        public void run() {
            //用接收到的字节输入流对象经过转换流来创建一个字符缓冲流对象
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            try {
                //因为这个线程要一直监听服务器,因此只能是死循环 
                while(true){
                    String line;
                    while((line = bufferedReader.readLine()) != null){
                        System.out.println("服务端线程收到的数据:=:"+line);
                    }
                    
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    
    }
    View Code
  • 相关阅读:
    Ajax跨域解决实例
    关于tween.js测试介绍
    signal() 和 sigaction()
    信号概述
    监控文件事件
    栈和栈帧
    进程结构和内存布局
    关于文件I/o的原子操作
    查询Linux系统中glibc的版本
    IOPS和Throughput
  • 原文地址:https://www.cnblogs.com/limengkun/p/10739310.html
Copyright © 2020-2023  润新知