0%

基本使用步骤

  1. 在官网下载对应的jar包并导入项目

  2. 加载驱动

    Class.forName(“com.mysql.jdbc.Driver);

  3. 创建一个链接

    Connection conn = DriverManager.getConnection(“url”,”user”,”password”);

  4. 执行完所有语句后关闭连接

    conn.close();

    阅读全文 »

基本注解

  • @Override:表示重写父类方法
  • @Deprecated:表示某些方法已过时
  • @SuppressWarnings:取消显示指定的编辑器警告
  • @Documented: 指定某个注解类可以被写进文档
  • @Inherited:指定被它修饰的注解将具有继承性
  • @Target:同样只能修饰注解,表示该注解只能用于修饰某些程序单元
ElementType.ANNOTATION_TYPE:指定该注解只能修饰注解
ElementType.CONSTRUCTOR:只能修饰构造器
ElementType.FIELD:只能修饰成员变量
ElementType.LOCAL_VARIABLE:只能修饰局部变量
ElementType.METHOD:只能修饰方法定义
ElementType.PACKAGE:只能修饰包定义
ElementType.PARAMETER:只能修饰参数
ElementType.TYPE:只能修饰类、接口、枚举类型
阅读全文 »

基本使用

//枚举类的定义
public enum Color{
    RED,BLUE,GREEN;//表明只能为三个值其中之一
}

//相关使用
Color colorEnum;
colorEnum  = Color.RED;
//  colorEnum = 2;//会报错
System.out.println(colorEnum);
System.out.println(colorEnum.name());//获取此枚举实例的名称
System.out.println(colorEnum.toString());//与name方法相似
System.out.println(Color.valueOf(Color.class,"RED"));//获取指定枚举类的枚举值
System.out.println(Arrays.toString(Color.values()));//获取所有枚举内容
System.out.println(colorEnum.ordinal());//返回索引值
阅读全文 »

java使用正则表达式的两种方法

  1. 使用String类封装好的matches方法
  2. 使用Pattern和Macher类
  • 将正则表达式编译成Pattern类在内存中存在
  • 将执行匹配所涉及的状态保留在Matcher类中
  • 执行Matcher类的matches进行匹配
//1.
String nginx = "aaaaaab";
nginx.matches("a*b");
//2
Pattern p = Pattern.compile("a*b");
Matcher m = p.macher("aaaaaab");
boolean b = m.matches();

反射

通过程序运行时信息来获取类或对象的类信息
获取Class对象的三种方法

Class class = dog.getCalss();
Class class = Dog.class;
Class class = Class.forName("com.vince.Dog");//会有ClassNotFoundExeception
阅读全文 »

TCP协议原理案例

package inet;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务器端
 */

public class EchoServeDemo {
    public static void main(String[] args){
        //创建一个服务器端的Socket(0-1024)一般不用,因为是一些其他公司产品的端口
        try {
            ServerSocket server = new ServerSocket(6666);
            System.out.println("服务器已启动,等待客户端的连接...");

            //等待客户端连接,会造成阻塞,如果客户端连接成功,立即返回一个Socket对象
            Socket socket = server.accept();
            System.out.println("客户端连接成功"+server.getInetAddress().getHostName());
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(socket.getInputStream())
            );
            //通过输入流读取网络数据
            String info = br.readLine();
            System.out.println(info);
            //获取输出流,向客户端返回消息
            PrintStream ps = new PrintStream(
                    new BufferedOutputStream(socket.getOutputStream()));
            ps.println("echo "+info);
            ps.flush();
            //关闭
            ps.close();
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

package inet;

import java.io.*;
import java.net.Socket;

/**
 * 客户端
 */
public class EchoClientDemo {
    public static void main(String[] args) {
        //创建一个socket对象,指定要连接的服务器
        try {
            Socket socket = new Socket("localhost",6666);
            //获取socket的输入项
            PrintStream ps = new PrintStream(
                    new BufferedOutputStream(socket.getOutputStream()));
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));
            ps.println("hello,my name is xiaoming.");
            ps.flush();
            //读取服务器返回的数据
            String info = br.readLine();
            System.out.println(info);
            ps.close();
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
阅读全文 »

进程与线程

进程:程序在处理机上的一次执行过程,一个具有独立功能的程序,每一个进程都有它自己的地址空间(一个程序的运行)
进程的状态:进程执行的间断性,决定了进程具有多种状态

  • 就绪状态(Ready)
  • 运行状态(Running)
  • 阻塞状态(Blocked)

线程:线程是在进程基础上的进一步划分,一个进程启动后,里面的若干程序可以划分为若干个线程,线程是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程

并行:两个任务同时运行(多核CPU)
并发:两个任务同时请求运行,而处理器一次只能接受一个任务,就会把两个任务安排轮流执行,由于CPU时间片运行时间短,感觉两个任务在同时运行

阅读全文 »

相当于将数据类型参数化
泛型只作用于编译期,在编译后会被所指定的具体类型代替

阅读全文 »

集合分为三大接口:
Collection,Map,Iterator

Collection

用于存储单个对象的集合,其下有两个子接口:
List,Set

List接口

  1. 有序接口
  2. 允许有多个null元素,元素可以重复
  3. 具体的实现有常用的:ArrayList,Vector,LinkedList

ArrayList

采用动态数组实现,默认构造方法是创建一个空数组
添加时每次都扩充一个单位
不适合进行删除和插入
为了防止数组动态扩充次数过多,可以在创建时给定初始容量
线程不安全,适合在单线程访问时使用,效率较高

阅读全文 »