1. 泛型的作用
- 提高代码复用率
- 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)
2. 线程与进程
进程 :是指一个内存中运行的应用程序,每个进程都有一个独立的内存空。线程 :是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行。 一个进程最少 有一个线程 。线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干执行路径又可以划分成若干个线程。
3. Runnable 与 Callable
Runnable 与 Callable 的相同点:
- 都是接口
- 都可以编写多线程程序
- 都采用Thread.start()启动线程
Runnable 与 Callable 的不同点:
- Runnable没有返回值;Callable可以返回执行结果
- Callable接口的call()允许抛出异常;Runnable的run()不能抛出
4. ServerSocket
用于创建服务器 . 创建完毕后 , 会绑定一个端口号 .然后此服务器可以等待客户端连接 .每连接一个客户端 , 服务器就会得到一个新的 Socket 对象 , 用于跟客户端进行通信 。//常用构造方法: ServerSocket(int port); **** 创建一个基于TCP/IP协议的服务器 , 并绑定指定的端口号. 注意: 参数port的范围是: 0-65535 (建议1025-65535)
5. Socket
是两台计算机之间通信的端点 , 是网络驱动提供给应用程序编程的一种接口 一套标准 , 一种机制 .//构造方法: Socket(String ip,int port) **** 创建一个套接字, 并连接指定ip和端口号的服务器. 参数1. 服务器的ip地址 参数2. 服务器软件的端口号..
//常用方法: - OutputStream getOutputStream(); //返回的是 , 指向通信的另一端点的输出流 - InputStream getInputStream(); //返回的是 , 指向通信的另一端点的输入流 - void close(); //关闭套接字 注意: 在网络编程时, 获取输入输出流的操作 ,对于客户端与服务器来说是相对的 客户端的输入流, 输入的是服务器的输出流 输出的内容. 客户端的暑促刘, 输出到了服务器的输入流中. 所以 在使用时, 需要注意以下一点规则: 客户端与服务器获取流的顺序必须是相反的: 例如: 客户端先得到了输入流 , 那服务器必须先获取输出流
6. 面试题
问 : Java中有几种XML解析方式 ? 分别是什么 ? 有什么样的优缺点 ?
答 : 四种。
1. SAX解析
解析方式是事件驱动机制 !SAX 解析器 , 逐行读取 XML 文件解析 , 每当解析到一个标签的开始 / 结束 / 内容 / 属性时 , 触发事件 .我们可以编写程序在这些事件发生时 , 进行相应的处理 .优点:
- 分析能够立即开始,而不是等待所有的数据被处理
- 逐行加载,节省内存.有助于解析大于系统内存的文档
- 有时不必解析整个文档,它可以在某个条件得到满足时停止解析.
缺点:
- 单向解析,无法定位文档层次,无法同时访问同一文档的不同部分数据(因为逐行解析, 当解析第n行是, 第n-1行已经被释放了, 无法在进行操作了).
- 无法得知事件发生时元素的层次, 只能自己维护节点的父/子关系.
- 只读解析方式, 无法修改XML文档的内容.
2. DOM解析
是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准,分析该结构通常需要加载整个文档和内存中建立文档树模型 . 程序员可以通过操作文档树 , 来完成数据的获取 修改 删除等 .优点:
- 文档在内存中加载, 允许对数据和结构做出更改.
- 访问是双向的,可以在任何时候在树中双向解析数据。
缺点:
- 文档全部加载在内存中 , 消耗资源大.
3. JDOM解析
目的是成为 Java 特定文档模型,它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型, JDOM 一直得到大力推广和促进。JDOM 文档声明其目的是 “ 使用 20% (或更少)的精力解决 80% (或更多) Java/XML 问题 ”(根据学习曲线假定为 20% )优点:
- 使用具体类而不是接口,简化了DOM的API。
- 大量使用了Java集合类,方便了Java开发人员。
缺点:
- 没有较好的灵活性。
- 性能不是那么优异。
4. DOM4J解析
它是 JDOM 的一种智能分支。它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath支持、 XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项, DOM4J是一个非常优秀的 Java XML API ,具有性能优异、功能强大和极端易用使用的特点,同时它也是一 个开放源代码的软件。如今你可以看到越来越多的Java 软件都在使用 DOM4J 来读写 XML 。目前许多开源项目中大量采用 DOM4J , 例如 :Hibernate
7. JSON解析
参考链接:JSON解析
8. Java 线程池
参考链接:Java线程池