‘壹’ 学习java都要掌握哪些东西
你可以看下Java课程学习大纲,系统性的学习才有效果
一、JavaSE基础
1.1、J2SE
JAVA 开发基础知识 | Eclipse 开发环境 | J2SE 5.0 API | J2SE 8.0新特性 | 多线程技术 | Socket 网络技术
|
Regular Expression | Java反射技术 | Properties技术 | 各种实战设计模式| Java Debug技术 |
面向对象设
计原则详解 | 实例解决面向对象设计 | 面试题内部详解 | 面试答题技巧详解 | AWT/SWING技术
1.2、实战数据结构
数据结构实战训练 | 数组、链表等常用数据结构实战
1.3、正则表达式
正则表达式基本语法。预搜索、断言、分组。 JAVA操作正则表达式Matcher/Pattern
1.4、反射机制
JAVA的动态性、Reflection技术、JVM类加载器、Class对象、Method等。
1.5、CHAT项目
Chat项目通过完成一个模拟的在线聊天系统,主要锻炼大家对于TCP/IP、Socket编程、C/S模式的编程、线程的运用等方面的能力。
1.6、坦克大战单机版/图片版/网络版
这三个项目通过大家喜闻乐见的小游戏的形式来锻炼大家对于JavaSE综合运用的能力,并且能够初步运用面向对象的编程理念,锻炼初步的设计能力,并基本掌握多线程的编程。
二、Java Web开发
2.1、数据库技术
Oracle 基础管理;SQL 语言PL/SQL
语言;触发器、存储过程;MySQL,SQLServer简介;业界常见问题设计;数据库表的设计范式;数据备份与移植;多表连接难题详解;嵌入式数据库应用;
2.2、JDBC技术
JDBC基础; 连接池技术;使用设计模式开发连接池;详细扩展与测试池效率;
2.3、HTML4 & CSS & JavaScript
HTML 语言;CSS 语言; JavaScript 语言;JS常用模版;后台管理模版; DOM; JS操作CSS; JS操作DOM;
ECMAScript; JS操作DIV;protoype;js基于对象编程; ;Firefox和firebug调试技术;
2.4、Bootstrap
前端css框架,让我们的学生不会美工也能做出漂亮的页面;
2.5、Jquery
Jquery基本技术;Jquery使用插件;
2.6、Http协议深入
使用HttpWatcher深入理解协议内部机制;
2.7、JSTL标签库
JSTL核心标签库,JSTL函数标签库、JSTL格式化标签库,JSTL之XML解析标签库、自定义标签技术;
2.8、JSP & Servlet
Servlet 技术;JSP 技术; JSTL Tag Library 技术; Filter&Listener技术; 报表系统;
FileUploading; Tomcat 服务器技术;servlet 过滤器和AOP编程;servlet监听器;
2.9、SCM技术
CVS初步;SVN简介;
2.10、Java Web实战演练
综合运用所学知识; HTML + CSS + JS; JSP + Servlet + JavaBean; FileUploading; 分页技术;
数据校验; MVC初步; Filter; Listener;
2.11、XML 技术
XML + XSL + DTD/Schema;XML数据解析; XML应用详解;XQUERY技术;CAST技术(XML数据和对象互转);
2.12、AJAX技术
AJAX技术基础; AJAX技术框架; AJAX技术调试技巧;
2.13、项目实战
《基于servlet/JSP技术的电子商务网站》、《基于AJax和Jquery的BBS论坛系统》、《基于Apache Commons
FileUpload的网络硬盘系统》
三、主流框架技术及项目实战
3.1、流行Web 框架简介
Struts2/spring4.x/hibernate4.x/spring mvc / WebWork /mybatis等简介
3.2、MVC 模式
Model View Controller 模式深入
3.3、SpringMVC
springmvc概述; springmvc的开发流程;springmvc基本配置; springmvc的注解开发; 常用注解;
service,control,reposity,reques+mapping,responseboby等
3.4、Struts2.x
Struts2的基本开发流程;action类的三种实现方法; XML配置的几种方法; Struts2国际化支持; Struts2异常处理;
Struts2的验证框架; Struts2的多模块配置;拦截器;
3.5、Hibernate4.x
Hibernate基本开发流程; ORM简介; 模拟SQL语句的自动生成; hibernate的检索; 性能优化 一级缓存 二级缓存 查询缓存 事务与并发
悲观锁、乐观锁
3.6、Spring4.x
简单工厂模式 ;抽象工厂; 工厂方法模式; Spring3简介; Spring的基本开发流程; IOC、DI; Bean的配置;
SSH框架的整合;Spring的注解开发; Spring AOP开发 代理模式 静态代理、动态代理、CGLIB;
3.7、Mybatis
Mybatis简介; Mybatis的开发流程; 配置文件 ;映射文件; 面向接口的Mybatis开发;
3.8、手工编写实战开发 struts2.x框架
亲自动手开发struts2.x框架,融入设计模式,让大家的对struts的核心机制烂熟于胸!
3.9、手工编写实战开发 Hibernate4.x框架
芯学苑名师亲自带领你开发hibernate框架,让你真正将ORM框架理解透彻!
3.10、手工编写实战开发mybatis框架
完成另一个ORM框架mybatis的开发工作!
3.11、手工编写实战开发 Spring 4.x框架
Spring是最着名的框架之一!也是业界应用范围非常广泛的框架!是否对其核心机制有透彻了解,往往是高薪的关键!因此,芯学苑名师带领你完成spring框架核心机制的开发。当别人还在探讨如何使用spring时,你已经更上层楼!
3.12、项目实战
《基于struts2+spring+mybatis的电子政务系统》、《基于spring MVC+hibernate的在线考试系统》
‘贰’ java网络io模型有几种
#BIO---Blocking IO
- 每个socket一个线程,读写时线程处于阻塞状态。
优点:实现简单
缺点:无法满足高并发,高接入的需求
- 不使用线程池的BIO模型,除了无法满足高并发需求外,由于需要为每个请求创建一个线程,还可能因为接入大量不活跃连接而耗尽服务器资源。
- 使用线程池的BIO模型,虽然控制了线程数量,但由于其本质上读写仍是阻塞的,仍无法满足高并发需求。
#NIO---Non-Blocking IO(非阻塞IO)
##非阻塞IO和多路复用
非阻塞IO和多路复用实际上是两个不用的概念,由于两者通常结合在一起使用,因此两者往往被混为一谈。下面我将试着分清这两个概念:
###非阻塞IO
与BIO相对应,非阻塞IO的读写方法无论是否有数据都立即返回,因此可以通过轮询方式来实现,但轮询方式的效率并不比BIO有显着提高,因为每个连接仍然需要占用一个线程。下面是轮询方式实现的IO模式图:
###多路复用
- 多路复用结合非阻塞IO能够明显提高IO的效率,这也是Java1.4把非阻塞IO和多路复用同时发布的原因。
- 多路复用的核心是多路复用器(Selector),它是需要操作系统底层支持的,简单的说,就是进程把多个socket和它们关心的事件(比如连接请求或数据已准备好)都注册在多路复用器上,操作系统会在事件发生时通知多路复用器,这样进程就可以通过多路复用器知道在那个socket上发生了什么时间,从而进行对应的处理。
- 多路复用的优点在于只需要一个线程监测(阻塞或轮询方式均可)多路选择器的状态,只有在有事件需要发生时才会真正的创建线程进行处理,因此更适合高并发多接入的应用环境。
- 在Linux系统下,多路复用的底层实现是epoll方法,与select/poll的顺序扫描不同,epoll采用效率更高的事件驱动方式,而且epoll方式并没有socket个数限制。
##BIO和NIO的比较
- BIO适用于连接长期保持的应用,比如一个复杂系统中模块之间通过长连接来进行通信。
- NIO加多路复用的模式更适合短连接、高并发、多接入的情形,比如网络服务器。
##NIO网络编程的常用接口
##Reactor模式
Reactor模式用于解决事件分发处理的问题,Handler把自己的channel和关注的事件注册到Selector中,当对应的事件发生在自己的channel上时,对应的handler就会得到通知并进行处理。
- 单线程的Reactor
消息的分发、读写、处理都在一个线程中处理,是Reactor最简单的实现方式,如果消息的处理需要较长时间,会影响效率。
```java
//Reactor类,负责分发事件并调用对应的handler
class Reactor implements Runnable {
final Selector selector;
final ServerSocketChannel serverSocket;
//Reactor初始化
Reactor(int port) throws IOException {
selector = Selector.open();
serverSocket = ServerSocketChannel.open();
serverSocket.socket().bind(new InetSocketAddress(port));
serverSocket.configureBlocking(false); //必须配置为非阻塞
//Acceptor会在Reactor初始化时就注册到Selector中,用于接受connect请求
SelectionKey sk = serverSocket.register(selector, SelectionKey.OP_ACCEPT);
sk.attach(new Acceptor()); //attach callback object, Acceptor
}
//分发消息并调用对应的handler
public void run() {
try {
while (!Thread.interrupted()) {
selector.select();
Set selected = selector.selectedKeys();
Iterator it = selected.iterator();
while (it.hasNext())
dispatch((SelectionKey)(it.next()); //Reactor负责dispatch收到的事件
selected.clear();
}
} catch (IOException ex) { /* ... */ }
}
void dispatch(SelectionKey k) {
Runnable r = (Runnable)(k.attachment()); //调用之前注册的callback对象
if (r != null)
r.run();
}
//Acceptor也是一个handler,负责创建socket并把新建的socket也注册到selector中
class Acceptor implements Runnable { // inner
public void run() {
try {
SocketChannel c = serverSocket.accept();
if (c != null)
new Handler(selector, c);
}
catch(IOException ex) { /* ... */ }
}
}
}
//Concrete Handler:用于收发和处理消息。
//在当前的实现中,使用Runnable接口作为每个具体Handler的统一接口
//如果在处理时需要参数和返回值,也可以为Handler另外声明一个统一接口来代替Runnable接口
final class Handler implements Runnable {
final SocketChannel socket;
final SelectionKey sk;
ByteBuffer input = ByteBuffer.allocate(MAXIN);
ByteBuffer output = ByteBuffer.allocate(MAXOUT);
static final int READING = 0, SENDING = 1;
int state = READING;
Handler(Selector sel, SocketChannel c) throws IOException {
socket = c; c.configureBlocking(false);
// Optionally try first read now
sk = socket.register(sel, 0);
sk.attach(this); //将Handler作为callback对象
sk.interestOps(SelectionKey.OP_READ); //第二步,接收Read事件
sel.wakeup();
}
boolean inputIsComplete() { /* ... */ }
boolean outputIsComplete() { /* ... */ }
void process() { /* ... */ }
public void run() {
try {
if (state == READING) read();
else if (state == SENDING) send();
} catch (IOException ex) { /* ... */ }
}
void read() throws IOException {
socket.read(input);
if (inputIsComplete()) {
process();
state = SENDING;
// Normally also do first write now
sk.interestOps(SelectionKey.OP_WRITE); //第三步,接收write事件
}
}
void send() throws IOException {
socket.write(output);
if (outputIsComplete()) sk.cancel(); //write完就结束了, 关闭select key
}
}
//上面 的实现用Handler来同时处理Read和Write事件, 所以里面出现状态判断
//我们可以用State-Object pattern来更优雅的实现
class Handler { // ...
public void run() { // initial state is reader
socket.read(input);
if (inputIsComplete()) {
process();
sk.attach(new Sender()); //状态迁移, Read后变成write, 用Sender作为新的callback对象
sk.interest(SelectionKey.OP_WRITE);
sk.selector().wakeup();
}
}
class Sender implements Runnable {
public void run(){ // ...
socket.write(output);
if (outputIsComplete()) sk.cancel();
}
}
}
```
- 多线程Reacotr
处理消息过程放在其他线程中执行
```java
class Handler implements Runnable {
// uses util.concurrent thread pool
static PooledExecutor pool = new PooledExecutor(...);
static final int PROCESSING = 3;
// ...
synchronized void read() { // ...
socket.read(input);
if (inputIsComplete()) {
state = PROCESSING;
pool.execute(new Processer()); //使用线程pool异步执行
}
}
synchronized void processAndHandOff() {
process();
state = SENDING; // or rebind attachment
sk.interest(SelectionKey.OP_WRITE); //process完,开始等待write事件
}
class Processer implements Runnable {
public void run() { processAndHandOff(); }
}
}
```
- 使用多个selector
mainReactor只负责处理accept并创建socket,多个subReactor负责处理读写请求
```java
Selector[] selectors; //subReactors集合, 一个selector代表一个subReactor
int next = 0;
class Acceptor { // ...
public synchronized void run() { ...
Socket connection = serverSocket.accept(); //主selector负责accept
if (connection != null)
new Handler(selectors[next], connection); //选个subReactor去负责接收到的connection
if (++next == selectors.length) next = 0;
}
}
```
#AIO
AIO是真正的异步IO,它于JDK1.7时引入,它和NIO的区别在于:
- NIO仍然需要一个线程阻塞在select方法上,AIO则不需要
- NIO得到数据准备好的消息以后,仍然需要自己把消息复制到用户空间,AIO则是通过操作系统的支持把数据异步复制到用户空间以后再给应用进程发出信号。
‘叁’ java 提供了哪些IO方式
Java IO 方式有很多种,基于不同的 IO 抽象模型和交互方式,可以进行简单区分。
首先,传统的 java.io 包,它基于流模型实现,提供了我们最熟知的一些 IO 功能,比如 File 抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线性顺序。
java.io 包的好处是代码比较简单、直观,缺点则是 IO 效率和扩展性存在局限性,容易成为应用性能的瓶颈。
很多时候,人们也把 java.net 下面提供的部分网络 API,比如 Socket、ServerSocket、HttpURLConnection 也归类到同步阻塞 IO 类库,因为网络通信同样是 IO 行为。
第二,在 Java 1.4 中引入了 NIO 框架(java.nio 包),提供了 Channel、Selector、Buffer 等新的抽象,可以构建多路复用的、同步非阻塞 IO 程序,同时提供了更接近操作系统底层的高性能数据操作方式。
第三,在 Java 7 中,NIO 有了进一步的改进,也就是 NIO 2,引入了异步非阻塞 IO 方式,也有很多人叫它 AIO(Asynchronous IO)。异步 IO 操作基于事件和回调机制,可以简单理解为,应用操作直接返回,而不会阻塞在那里,当后台处理完成,操作系统会通知相应线程进行后续工作。
‘肆’ java nio多路复用是什么意思
就是NIO库可以利用Selector多路复用各个Socket连接。
提高连接效率,降低连接的阻塞。
‘伍’ 学习java有什么技能点
Java一直是企业级别开发最喜欢选择的编程语言,从java目前的就业形势来看还是相当不错的,由于手机安卓开发的需要,许多人也开始转战Java的学习,极客营觉得虽然java开发人员的需求量变得越来越大,但这并不代表做java开发人员的技术就可以一成不变,java技术更新的很快,而且在现在中国的培训机构里java学员都是批量生产的,那么竞争压力也是很大的。所以许多人在学好java的基础后,转战到火热的安卓开发。极客营今天来分析一下java各种大致学习路线。
首先总结一下做java最后大致是两个方向:web企业级开发(JavaWeb J2EE)和手机android开发。这两个方向的先决条件是J2SE,J2SE并不是那么简单,只有当你逐渐学的深入了你才体会到java的精髓。
1.HTML+CSS+DIV,前端会用到,作为研发人员至少应该会简单写些页面出来,这是许多编程语言都需要了解的基础。
2.JAVASCRIPT,想要使用一些特殊的效果就需要这个了,但是你并不需要很精通,当你需要用到JS的地方可以用Jquery代理,Jquery很好学,很有用的JS框架,看似复杂华丽的效果他都能轻松完成。
3.Ajax,前端异步交互技术,值得去研究
4.JSP,Servlet,Javabean,发展至今已经不提倡在JSP里嵌入JAVA代码,所以仅仅是作为视图层使用,嵌入些如JSTL和Struts2标签库的标签成为动态页面。Servlet是应该重点学习的,包括如过滤器、监听器等,这些都是当下Struts2或者未来WEB框架的底层基础和原理。
5.Strut2+Hibernate(or JPA)+Spring,当下十分流行的开发框架。其实是很容易上手的,但关键是需要懂得原理。
6.Web Service技术,它能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。
框架:Spring,Structs,Hibernate;是要掌握的,这三个毋庸置疑,还有MVC,JSP,TOMACAT,数据库掌握一个其他的也好用一些了,基本上你上面所展示的技能公司都会用到,只是有些公司会自己封装一些技术罢了,还有些公司会用spring 但是其他2个都不用,所以你们老师提出的技能都是有用的,另外再加2个技能就是javaScript,Jquery
‘陆’ java.nio.channels的多路复用
非阻塞 I/O
描述
SelectableChannel 可实现多路复用的通道
DatagramChannel java .net.DatagramSocket 通道
Pipe.SinkChannel 对管道的写入结束
Pipe.SourceChannel 对管道的读取结束
ServerSocketChannel java .net.ServerSocket 通道
SocketChannel java .net.Socket 通道
Selector 可选择通道的多路复用器
SelectionKey 表示通道注册到选择器的标记
Pipe 形成单向管道的两个通道
多路复用的非阻塞 I/O 比面向线程的阻塞 I/O 的可伸缩性更好,由选择器、可选择通道 和选择键 提供。
选择器 是可选择通道 的多路复用器,它是可被置于非阻塞模式 的特殊类型的通道。要执行多路复用的 I/O 操作,首先要创建一个或多个可选择通道、将其置于非阻塞模式,并将注册 到选择器注册一个通道会指定一组由选择器测试其是否准备就绪的 I/O 操作,并返回一个表示该注册的选择键。
一旦已经向选择器注册了通道,就可执行选择操作 以发现哪些通道(如果有)已经准备好执行先前已声明感兴趣的一个或多个操作。如果某个通道已准备就绪,则将注册时所返回的键添加到该选择器的已选择键集中。为了确定每个通道已准备好执行哪些操作,可以检查该键集和其中的键。为了执行所需的任何 I/O 操作,可根据每个键检索相应的通道。
指示其通道对某个操作已准备就绪的选择键只是一个提示,并不保证线程执行此种操作而不导致被阻塞。为了在这些提示证明不正确时忽略这些提示,则要强制写入负责执行多路复用 I/O 操作的代码。
此包定义了与 java .net 包中定义的 DatagramSocket、ServerSocket 和 Socket 类相对应的可选择通道类。为了支持与通道相关的套接字,已经对这些类进行了较小的更改。此包还定义了实现单向管道的简单类。在所有情况下,都是通过调用相应类的静态 open 方法来创建新的可选择通道。如果某个通道需要一个关联的套接字,则此操作同时也创建一个套接字。
可通过“插入”一个在 java.nio.channels.spi 包中定义的 SelectorProvider 类的替代定义或实例来替换选择器、可选通道和选择键的实现。并不期望很多开发人员都会实际使用这些设施;提供它的主要目的是为了在需要极高的性能时,能够让经验丰富的用户能充分利用特定于操作系统的 I/O 多路复用机制。
实现多路复用 I/O 抽象所要求的很多簿记和同步任务由 java.nio.channels.spi 包中的 AbstractInterruptibleChannel、AbstractSelectableChannel、AbstractSelectionKey 和 AbstractSelector 类来执行。在定义一个自定义的选择器提供程序时,应该只直接扩展 AbstractSelector 和 AbstractSelectionKey 类;自定义通道类应该扩展此包中定义的适当 SelectableChannel 子类。
从以下版本开始:
1.4
‘柒’ 罗列出你常用的JAVA类
java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。
java.awt 包含用于创建用户界面和绘制图形图像的所有类。
java.awt.color 提供用于颜色空间的类。
java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。
java.awt.dnd Drag 和 Drop 是一种直接操作操作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。
java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。
java.awt.font 提供与字体相关的类和接口。
java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。
java.awt.im 提供输入方法框架所需的类和接口。
java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。
java.awt.image 提供创建和修改图像的各种类。
java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。
java.awt.print 为通用的打印 API 提供类和接口。
java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。
java.beans.beancontext 提供与 bean 上下文有关的类和接口。
java.io 通过数据流、序列化和文件系统提供系统输入和输出。
java.lang 提供利用 Java 编程语言进行程序设计的基础类。
java.lang.annotation 为 Java 编程语言注释设施提供库支持。
java.lang.instrument 提供允许 Java 编程语言代理监测运行在 JVM 上的程序的服务。
java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。
java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。
java.lang.reflect 提供类和接口,以获取关于类和对象的反射信息。
java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。
java.net 为实现网络应用程序提供类。
java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。
java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。
java.nio.channels.spi 用于 java.nio.channels 包的服务提供程序类。
java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。
java.nio.charset.spi java.nio.charset 包的服务提供程序类。
java.rmi 提供 RMI 包。
java.rmi.activation 为 RMI 对象激活提供支持。
java.rmi.dgc 为 RMI 分布式垃圾回收提供了类和接口。
java.rmi.registry 提供 RMI 注册表的一个类和两个接口。
java.rmi.server 提供支持服务器端 RMI 的类和接口。
java.security 为安全框架提供类和接口。
java.security.acl 此包中的类和接口已经被 java.security 包中的类取代。
java.security.cert 提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口。
java.security.interfaces 提供的接口用于生成如 RSA Laboratory Technical Note PKCS#1 中所定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及如 NIST 的 FIPS-186 中所定义的 DSA(数字签名算法)密钥。
java.security.spec 提供密钥规范和算法参数规范的类和接口。
java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。
java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。
java.util 包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。
java.util.concurrent 在并发编程中很常用的实用工具类。
java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁定的线程安全编程。
java.util.concurrent.locks 为锁定和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。
java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。
java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。
java.util.prefs 此包允许应用程序存储并检索用户和系统首选项和配置数据。
java.util.regex 用于匹配字符序列与正则表达式指定模式的类。
java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。
javax.accessibility 定义了用户界面组件与提供对这些组件进行访问的辅助技术之间的协定。
javax.crypto 为 cryptographic(加密)操作提供类和接口。
javax.crypto.interfaces 按在 RSA Laboratories' PKCS #3 中定义的那样提供 Diffie-Hellman 密钥接口。
javax.crypto.spec 为密钥规范和算法参数规范提供类和接口。
javax.imageio Java Image I/O API 的主要包。
javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。
javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。
javax.imageio.plugins.bmp 包含供内置 BMP 插件使用的公共类的包。
javax.imageio.plugins.jpeg 支持内置 JPEG 插件的类。
javax.imageio.spi 包含用于 reader、writer、transcoder 和流的插件接口以及一个运行时注册表的 Java Image I/O API 包。
javax.imageio.stream Java Image I/O API 的一个包,用来处理从文件和流中产生的低级别 I/O。
javax.management 提供 Java Management Extensions 的核心类。
javax.management.loading 提供实现高级动态加载的类。
javax.management.modelmbean 提供了 ModelMBean 类的定义。
javax.management.monitor 提供 monitor 类的定义。
javax.management.openmbean 提供开放数据类型和 Open MBean 描述符类。
javax.management.relation 提供 Relation Service 的定义。
javax.management.remote 对 JMX MBean 服务器进行远程访问使用的接口。
javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传输到远程 MBean 服务器。
javax.management.timer 提供对 Timer MBean(计时器 MBean)的定义。
javax.naming 为访问命名服务提供类和接口。
javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。
javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。
javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。
javax.naming.spi 提供一些方法来动态地插入对通过 javax.naming 和相关包访问命名和目录服务的支持。
javax.net 提供用于网络应用程序的类。
javax.net.ssl 提供用于安全套接字包的类。
javax.print 为 JavaTM Print Service API 提供了主要类和接口。
javax.print.attribute 提供了描述 JavaTM Print Service 属性的类型以及如何分类这些属性的类和接口。
javax.print.attribute.standard 包 javax.print.attribute.standard 包括特定打印属性的类。
javax.print.event 包 javax.print.event 包含事件类和侦听器接口。
javax.rmi 包含 RMI-IIOP 的用户 API。
javax.rmi.CORBA 包含用于 RMI-IIOP 的可移植性 API。
javax.rmi.ssl 通过安全套接字层 (SSL) 或传输层安全 (TLS) 协议提供 RMIClientSocketFactory 和 RMIServerSocketFactory 的实现。
javax.security.auth 此包提供用于进行身份验证和授权的框架。
javax.security.auth.callback 此包提供与应用程序进行交互所必需的类,以便检索信息(例如,包括用户名和密码的身份验证数据)或显示信息(例如,错误和警告消息)。
javax.security.auth.kerberos 此包包含与 Kerberos 网络身份验证协议相关的实用工具类。
javax.security.auth.login 此包提供可插入的身份验证框架。
javax.security.auth.spi 此包提供用于实现可插入身份验证模块的接口。
javax.security.auth.x500 此包包含应该用来在 Subject 中存储 X500 Principal 和 X500 Private Crendentials 的类。
javax.security.cert 为公钥证书类。
javax.security.sasl 包含用于支持 SASL 的类和接口。
javax.sound.midi 提供用于 MIDI(音乐乐器数字接口)数据的 I/O、序列化和合成的接口和类。
javax.sound.midi.spi 在提供新的 MIDI 设备、MIDI 文件 reader 和 writer、或音库 reader 时提供服务提供程序要实现的接口。
javax.sound.sampled 提供用于捕获、处理和回放取样的音频数据的接口和类。
javax.sound.sampled.spi 在提供新音频设备、声音文件 reader 和 writer,或音频格式转换器时,提供将为其创建子类的服务提供程序的抽象类。
javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。
javax.sql.rowset JDBC RowSet 实现的标准接口和基类。
javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。
javax.sql.rowset.spi 第三方供应商在其同步提供程序的实现中必须使用的标准类和接口。
javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。
javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。
javax.swing.colorchooser 包含供 JColorChooser 组件使用的类和接口。
javax.swing.event 供 Swing 组件触发的事件使用。
javax.swing.filechooser 包含 JFileChooser 组件使用的类和接口。
javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。
javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。
javax.swing.plaf.metal 提供根据 Java 外观(曾经代称为 Metal)构建的用户界面对象,Java 外观是默认外观。
javax.swing.plaf.multi 提供了组合两个或多个外观的用户界面对象。
javax.swing.plaf.synth Synth 是一个可更换皮肤 (skinnable) 的外观,在其中可委托所有绘制。
javax.swing.table 提供用于处理 javax.swing.JTable 的类和接口。
javax.swing.text 提供类 HTMLEditorKit 和创建 HTML 文本编辑器的支持类。
javax.swing.text.html 提供类 HTMLEditorKit 和创建 HTML 文本编辑器的支持类。
javax.swing.text.html.parser 提供默认的 HTML 解析器以及支持类。
javax.swing.text.rtf 提供一个类 (RTFEditorKit),用于创建富文本格式(Rich-Text-Format)的文本编辑器。
javax.swing.tree 提供处理 javax.swing.JTree 的类和接口。
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。
javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。
javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。
javax.xml 根据 XML 规范定义核心 XML 常量和功能。
javax.xml.datatype XML/Java 类型映射关系。
javax.xml.namespace XML 名称空间处理。
javax.xml.parsers 提供允许处理 XML 文档的类。
javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 API。
javax.xml.transform.dom 此包实现特定于 DOM 的转换 API。
javax.xml.transform.sax 此包实现特定于 SAX2 的转换 API。
javax.xml.transform.stream 此包实现特定于流和 URI 的转换 API。
javax.xml.validation 此包提供了用于 XML 文档验证的 API。
javax.xml.xpath
‘捌’ java的API中有哪些常用的包
Application Programming Interface 应用程序编程接口,Java的api就多的数不清了,平时编程用的都是API。
‘玖’ Java中BIO,NIO和AIO的区别和应用场景
Reactor and Proactor
IO读写时,多路复用机制都会依赖对一个事件多路分离器,负责把源事件的IO 事件分离出来,分别到相应的read/write事件分离器。涉及到事件分离器的两种模式分别就是 Reactor和Proactor,Reactor是基于同步IO的,Proactor是基于异步IO的。
在Reactor模式中,事件分离者等待某个事件或者可应用或个操作的状态发生(比如文件描述符可读写,或者是socket可读写),事件分离者就把这个事件传给事先注册的事件处理函数或者回调函数,由后者来做实际的读写操作。