1.前一天重点内容复习
TCP客户端编码步骤
创建客户端Socket对象
获取到文件流输入
获取到Socket对象输出流
将文件输入流内容写入到Socket对象输出流中
通知服务器端没有更多数据传入
获取到Socket对象输入流
读取Socket对象输入流内容
将读到的Socket对象输入流内容转为字符串,打印出来
TCP服务端编码步骤
创建服务端Socket对象
监听端口
获取端口输入流
获取文件输出流
将端口输入流中的数据写入文件输出流
获取端口输出流
将反馈信息写入端口输出流
获取字节码文件的方式
通过使用Object类中的getClass()方法
对象.getClass()
任意java类型的class属性可以获取
类名.class
反射的静态功能forName
public static Class forName(String pathname)
pathname为当前类的全限定名称(包名.类名)
线程状态有几种
6种,分别是NEW新建、RUNNABLE运行、BLOCKED阻塞、WAITTING死死等待、TIMED_WAITTING超时等待、TERMINATED死亡
处理异常方式
两种,throws抛出异常和try-cathch捕获异常
try-catch可以变形为try-catch-catch或者try-finally
finally中的代码一般为释放系统相关资源的代码,一定会执行,除非在此之前jvm推出了
throws和throw的区别
throws:在方法上抛出异常,可以抛多个异常,中间用‘,’隔开,异常肯出现,交给调用者处理
throw:在方法体中抛出,底层原码多在语句体中处理,后面跟异常对象new XXXException(),异常执行某段代码一定会出现,由方法体来处理
2.反射
核心思想:就是通过某个类去获得此类字节码文件对象,之后就可以通过字节码文件对象的Constructor方法来获取该类的构造方法,以此来创造该类实例对象,也可以通过字节码文件对象的Field获取到成员变量,以此来给该类成员变量赋值,也可以通过字节码文件对象的Method()方法来获取成员方法,以此来访问该类成员方法
反射操作java代码阶段: java代码经过三个阶段,源文件阶段,class文件阶段和运行阶段,反射操作java代码的编译时期的class阶段
相关方法:
public String getName():获取字节码文件的全限定名称
public Constructors<?>[] getConstructors() throws SecurityException:获取类中所有的公共构造方法的类对象
public Constructors<?>[] getDeclaredConstructors() throws SecurityException:获取类中所有的构造方法的类对象
public Constructor<T> getConstructors(Class<?> parameterTypes) throws NoSuchMethodException,SecurityException:获取类中指定的公共构造方法的类对象,参数为字节码文件对象
public T newInstance(Object... initargs):创建当前类的实例,参数为可变参数,作用为描述给构造方法的实际参数,这个方法可以由字节码文件对象调用,也可以先创建构造方法类对象,再用构造方法类对象来调用此方法
public void setAccessible(boolean flag) throws SecurityException:参数为true,取消java语言访问检查
public Field[] getFields() throws SecurityException:获取当前类的公共字段类对象
public Field[] getDeclaredFields() throws SecurityException:获取当前类的所有字段类对象
public Field getField(String name) throws NoSuchFieldException,SecurityException:获取当前类指定的公共字段类对象
public void set(Object obj, Object value) throws IllegalArgumentException,IllegalAccessException:给指定的类对象实例赋值,第一个参数为该类的具体对象,第二个参数为赋值的值
public Method[] getDeclaredMethods() throws SecurityException:获取当前类中所有成员方法,不包括继承方法
public Method[] getMethods() throws SecurityException:获取当前类中所有公共的成员方法,包括继承方法
public Method getMethod(String name,Class(?)...parameterTypes) throws NoSuchMethodException,SecurityException throws SecurityException:获取当前类中指定的的成员方法,参数1为方法名,参数2为可变参数,如果无参则不需要,如果带参则需要写上参数类型的class
public Object invoke(Object obj , Object... args):调用当前类的成员方法,参数1为当前类的对象,参数2为可变参数,作用为给形式参数赋值
public Method getDeclaredMethod(String name,Class(?)...parameterTypes) throws NoSuchMethodException,SecurityException throws SecurityException:获取当前类中指定的的成员方法类对象,包括私有的和保护的和默认修饰的
通过反射创建类对象步骤:
1.获取类的字节码文件对象
2.获取构造方法Constructor类对象
3.通过构造方法Constructor类对象来创建当前类的实例
4.输出对象名称
3.数据库
数据存储方式:
局部变量/成员变量:在类中方法外
StringBuffer:字符串缓冲区,可以存储任意字符序列,实际上还是将其转为String类型
集合:将数据存储进入Collection或者Map<K,V>
IO流:将其存入文件
数据库:
关系型:Mysql,Oracle,SqlServer,mariaDB,SQLite
非关系型:redis,MongoDB
数据库语法:
DDL:数据库定义语句
查询所有库:show databases;
创建库:create database 库名;或者create database if no exists 库名;
DML:数据库操作语句
SQL:结构化查询语句