IO流的分类
输入流
主要是InputStream和Reader作为基类
输出流
主要由outputStream和Writer作为基类
什么是序列化?
- 序列化:把Java对象转换为字节序列的过程。
- 反序列化:把字节序列恢复为Java对象的过程。
用来处理对象流。
什么是对象流?将对象的内容进行流化。 - 实现:实现java.io.Serializable接口,为了标注该对象是可被序列化的
- 用途:1.永久保存数据,保存在文件中2.在网络中传输对象的字节序列
- 对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态和非静态字段的值。
Java 提供的事件处理模型是一种人机交互模型。它有三个基本要素:
-
事件源(Event Source):即事件发生的场所,就是指各个组件,如按钮等,点击按钮其实就是组件上发生的一个事件;
-
事件(Event):事件封装了组件上发生的事情,比如按钮单击、按钮松开等等;
-
事件监听器(Event Listener):负责监听事件源上发生的特定类型的事件,当事件到来时还必须负责处理相应的事件;
类中静态语句块仅在类加载时被执行一次
数组复制方法
效率:System.arraycopy > clone > Arrays.copyOf > for循环
LinkedBlockingQueue
基于链接节点的可选限定的blocking queue 。
有界的阻塞队列,不允许null。
线程安全。
这个队列排列元素FIFO(先进先出)。 队列的头部是队列中最长的元素。 队列的尾部是队列中最短时间的元素。 新元素插入队列的尾部,队列检索操作获取队列头部的元素。 链接队列通常具有比基于阵列的队列更高的吞吐量,但在大多数并发应用程序中的可预测性能较低。
blocking queue说明:不接受null元素;可能是容量有限的;实现被设计为主要用于生产者 - 消费者队列;不支持任何类型的“关闭”或“关闭”操作,表示不再添加项目实现是线程安全的;
ConcurrentLinkedQueue
基于链接节点的无界线程安全队列,该队列的元素遵循FIFO原则。
PriorityQueue
无界队列,不允许null值,入队和出队的时间复杂度是O(log(n))。
每次从队列中取出的是具有最高优先权的元素。
- java的封装性:指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,通过该类提供的方法实现对内部信息的操作访问。
- 反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性
J2EE
- web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET直接更容器中的环境变量接**互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。
JNDI:(Java Naming & Directory Interface)JAVA命名目录接口。主要提供的功能是:提供一个目录系,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
JTA:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。
堆区:类中成员变量,线程共享
方法区:静态存储区。存放class文件和静态数据。线程共享
栈区:方法中的局部变量,存放在栈区