Skip to content

Latest commit

 

History

135 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java学习记录

week02:

week03:

week04:

  • 多线程

1、程序,进程和线程

2、多线程的优势

3、多线程实现的两种方式

  • 继承Thread类;缺点:只能是单一继承
  • 实现Runnable接口;可以多实现
  • 都需要重写run()方法

4、线程的生命周期

  • 新线程(new新对象)
  • 就绪状态
  • 运行状态
  • 等待/阻塞状态
  • 死亡状态

5、线程使用的四个步骤

  1. 定义线程
  2. 创建线程对象
  3. 启动线程
  4. 终止线程

6、启动时调用start()方法

7、sleep()yield()的区别

sleep() yield()
使当前线程进入被阻塞的状态 将当前线程转入暂停执行的状态
即使没有其他等待运行的线程,当前线程也会等待指定的时间 如果没有其他等待执行的线程,当前线程会马上恢复执行
其他等待执行的线程的机会是均等的 会将优先级相同或更高的线程运行

8、内部类实现Runnable接口的方法

9、匿名内部类的方式转换为Lambda表达式方式

10、线程的停止

  • 正常执行结束;
  • 标志位,如果有休眠状态,无法立刻满足;
  • interrupt()可以立刻停止,但是无法让IO等待立刻停止;
  • IO底层对象的关闭,close()

11、线程不同状态之间的转换

12、线程的分类:用户线程和后台线程

13、设置后台线程的方法:Thread类的steDaemon(boolean on)

14、获取和设置线程名:Thread.currentThread().getName()setName()

15、线程优先级获取和设置:getPriority()setPriority()

16、默认初始化的线程优先级为:5;取值范围为:1-10;

16、线程组

17、join()方法:阻塞调用此方法的线程

18、线程同步的两种方式:同步块和同步方法;都使用Synchronized

19、线程通讯:wait()notify()notifyAll()

20、线程池:主要解决线程生命周期开销问题和资源不足问题

21、信号量:是计数的信号量,维持一个许可集

22、生产者-消费者模式

23、Runnable与Callable两接口的区别

  • Callable接口的call()方法,可以返回任务执行后的结果

  • Runnable接口的run()方法,则不能返回任何结果

24、Lock锁:与synchronized用法相似;

  • lock():上锁
  • unlock():释放锁

25、线程池调度器

26、ThreadLocal的作用:为每个线程对象创建自己独立的的副本

27、任务分类

  • 定时任务:某个时间点执行一次

  • 重复任务:循环执行任务,时间间隔可以设定好的

week05:

  • 反射

1、反射的起点:Class

2、Class实例的三种获取方式

3、使用反射动态的创建对象的两种方式

4、Method类动态调用方法

  • 内省

1、满足类JavaBean类的条件

2、内省(Inspector)机制基于反射的基础

3、内省机制:通过get或者set判断一个属性是否属于这个类的方式

4、API中与内省有关的内容

  • java.beans.Introspector
  • Java.beans.BeanInfo接口
  • Java.beans.PropertyDescriptor

5、内省机制,PropertyDescriptor类中用于获取或者设置属性值

  • Method getReadMethod()
  • Method getWriteMethod()

6、内省机制获取一个类的属性的三个步骤

  • 泛型

1、泛型是参数化类型

2、泛型方法、泛型类、泛型接口

3、泛型的优势:安全简单,在编译期就可以检查数据类型,提高代码的重用

4、泛型主要用于属性不确定

5、泛型的两种方式

  • 传统方式采用方式Object
  • 采用泛型的方式:类名<泛型类名> 对象名 = new 类名<泛型类名>();

6、编译器处理泛型有两种方式

  • Codespecialization
  • CodesharingJava处理采用的是方式

7、类型擦除(typeerasue):多种泛型类形实例映射到唯一的字节码表示

8、泛型类的静态变量是共享主要因为类型擦除的存在

9、Java中的数组是协变

10、在泛型类中使用泛型的方法无需再声明泛型

11、泛型通配符:<? extends Fruit>,<? super T>,<?>

  • 枚举

Enum

  • 注解

1、注解的定义和作用

1.1、元数据,是一种代码级别的说明

2、注解的形式

3、@Target

  • 类或接口:ElementType.TYPE
  • 字段:ElementType.FIELD
  • 方法:ElementType.METHOD
  • 构造方法:ElementType.CONSTRUCTOR
  • 方法参数:ElementType.PARAMETER

4、@Retention

  • 仅编译期:RetentionPolicy.SOURCE
  • class文件:RetentionPolicy.CLASS
  • 运行期:RetentionPolicy.RUNTIME

5、@Override

6、@FunctionInterface

  • 数据结构

1、单链表

2、队列

3、哈希表(散列表)

4、二叉树

  • 前序遍历
  • 中序遍历
  • 后序遍历

5、 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree)

  • 集合

1、Collection接口

  • List子接口:有顺序不可重复
    • ArrayList
    • LinkedList
    • Vector

ArrayList和LinkedList的区别

  • Set子接口:无序可重复
    • HashSet
    • TreeSet
    • EnumSet

2、Map

  • GC垃圾回收机制

week06:

  • IO

1、java.io.File类的对象可以表示文件和目录

File类帮助访问File对象的属性、大小、是否存在等

2、输出流

  • 字节输出流OutputStream(二进制文件)
  • 字符输出流Writer(文本文件)

3、输入流

  • 字节输入流InputStream(二进制文件)

  • 字符输入流Reader(文本文件)

4、操作文件的三步

  1. 判断文件类型

  2. 读操作还是写操作

  3. 是否要求高效操作

5、字节流与字符流的适配器

  • InputStreamReader:字节流通向字符流的桥梁

  • OutputStreamWriter:字符流通向字节流的桥梁

6、System三个都是被static final修饰的静态常量

  • System.in:标准“输入流”,对应InputStream

  • System.out:标准”输出流“,对应PrintStream

  • System.err:标准”错误输出流“

7、序列化和返序列化

  1. 实例对象实现Serializable接口
  • 去除实例对象敏感信息的两种方式
    • 对敏感属性添加transient
    • 添加readObjectwriteObject的方法
  1. 实例对象实现Externalizable接口
  • 去除实例对象敏感信息
    • 重写writeExternal(ObjectOutput out)readExternal(ObjectInput in)

8、IONIO的区别

  • 网络编程

1、TCP/IP协议簇

2、TCP/IP模型对应的OSI模型

  • 应用层(应用层、表示层、会话层)
  • 传输层(传输层)
  • IP层(网络层)
  • 网络接口层(链路层、物理层)

3、TCP(传输控制协议)与UDP(用户数据报协议)的区别

  • TCP面向连接传输速度慢,UDP面向无连接传输速度快

  • TCP是数据的可靠传输,UDP是数据的不可靠传输

  • TCP使用字节流模式发送数据,UDP使用数据报模式发送数据

  • TCP适用于可靠性要求高的应用环境,UDP适用于一次只传送少量数据、对可靠要求不高的应用环境

4、IP(网络协议):位于网络层

5、IP地址:是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址

6、端口号:是用来区分各种服务。一台计算机上有65536个端口号,已经被操作系统占用的0-1024;例如:http:80,使用前需要获得管理员权限,尽量不用

7、网络号的标识就是子网

8、Java语言对TCP协议网络通信使用java.net包中的SocketServerSocket进行支持;Socket被称为“套接字”,用来描述IP地址和端口

9、TCP通讯

  • 服务器端

    1. 创建ServerSocketSocket对象
    2. 监听客户端请求accept
    3. 操作
    4. 关闭资源
  • 客户端

    1. 创建Socket对象
    2. 操作
    3. 关闭资源
  • 设计模式

1、什么是设计模式

2、单例模式

  • 饿汉模式:空间换时间
  • 懒汉模式:时间换空间

3、工厂模式

4、观察者模式

5、代理模式

  • 静态代理:客户端与代理是一一绑定的关系

  • 动态代理:客户端与代理是动态关联的关系

  • 工具

1、XML

About

Java学习记录

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages