大纲
- [x] 一、Java基础(语言、集合框架、OOP、设计模式等)
- [x] 二、Java高级(JavaEE、框架、服务器、工具等)
- [x] 三、多线程和并发
- [x] 四、Java虚拟机
- [x] 五、数据库(Sql、MySQL、Redis等)
- [x] 六、算法与数据结构
- [x] 七、计算机网络
- [x] 八、操作系统(OS基础、Linux等)
- [x] 九、其他
二、Java高级(JavaEE、框架、服务器、工具等)
1. Servlet
1.1 Servlet继承实现结构
Servlet (接口) --> init|service|destroy方法
GenericServlet(抽象类) --> 与协议无关的Servlet
HttpServlet(抽象类) --> 实现了http协议
自定义Servlet --> 重写doGet/doPost
1.2 编写Servlet的步骤
- 继承HttpServlet
- 重写doGet/doPost方法
- 在web.xml中注册Servlet
1.3 Servlet生命周期
init:仅执行一次,负责装载servlet时初始化servlet对象service:核心方法,一般get/post两种方式destroy:停止并卸载servlet,释放资源
1.4 过程
- 客户端request请求 -> 服务器检查Servlet实例是否存在 -> 若存在调用相应service方法 -> 服务结束
- 客户端request请求 -> 服务器检查Servlet实例是否存在 -> 若不存在装载Servlet类并创建实例 -> 调用init初始化 -> 调用service -> 服务结束
1.5 doPost方法要抛出的异常:ServletExcception、IOException
1.6 Servlet容器什么时候装载装载Servlet
- web.xml中配置load-on-startup启动时装载
- 客户首次向Servlet发送请求
- Servlet类文件被更新后, 重新装载Servlet
1.7 HttpServlet容器响应web客户请求流程
- Web客户向servlet容器发出http请求
- servlet容器解析Web客户的http请求
- servlet容器创建一个HttpRequest对象, 封装http请求信息
- servlet容器创建一个HttpResponse对象
- servlet容器调用HttpServlet的service方法, 把HttpRequest和HttpResponse对象作为service方法的参数传给HttpServlet对象
- HttpServlet调用httprequest的有关方法, 获取http请求信息
- httpservlet调用httpresponse的有关方法, 生成响应数据
- Servlet容器把HttpServlet的响应结果传给web客户
1.8 HttpServletRequest完成的一些功能
- request.getCookie()
- request.getHeader(String s)
- request.getContextPath()
- request.getSession()
HttpSession session = request.getSession(boolean create)
返回当前请求的会话
1.9 HttpServletResponse完成一些的功能
- 设http响应头
- 设置Cookie
- 输出返回数据
1.10 Servlet与JSP九大内置对象的关系
JSP对象 怎样获得
1. out -> response.getWriter
2. request -> Service方法中的req参数
3. response -> Service方法中的resp参数
4. session -> request.getSession
5. application -> getServletContext
6. exception -> Throwable
7. page -> this
8. pageContext -> PageContext
9. Config -> getServletConfig
exception是JSP九大内置对象之一,其实例代表其他页面的异常和错误。只有当页面是错误处理页面时,即isErroePage为 true时,该对象才可以使用。
2. JSP
JSP的前身就是Servlet
3. Tomcat
3.1 Tomcat容器的等级
Tomcat - Container - Engine - Host - Servlet - 多个Context(一个Context对应一个web工程)-Wrapper
4. struts
- struts可进行文件上传
- struts基于MVC模式
- struts让流程结构更清晰
- struts有许多action类, 会增加类文件数目
5. Hibernate的7大鼓励措施
- 尽量使用many-to-one, 避免使用单项one-to-many
- 灵活使用单项one-to-many
- 不用一对一, 使用多对一代替一对一
- 配置对象缓存, 不使用集合对象
- 一对多使用bag, 多对一使用set
- 继承使用显示多态
- 消除大表, 使用二级缓存
6. Hibernate延迟加载
- Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)
- Hibernate3 提供了属性的延迟加载功能
当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 - hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
- hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
7. Java 中,DOM 和 SAX 解析器有什么不同?
DOM 解析器将整个 XML 文档加载到内存来创建一棵 DOM 模型树,这样可以更快的查找节点和修改 XML 结构,而 SAX 解析器是一个基于事件的解析器,不会将整个 XML 文档加载到内存。由于这个原因,DOM 比 SAX 更快,也要求更多的内存,但不适合于解析大的 XML 文件。
8. Java 中,Maven 和 Ant 有什么区别?
虽然两者都是构建工具,都用于创建 Java 应用,但是 Maven 做的事情更多,在基于“约定优于配置”的概念下,提供标准的 Java 项目结构,同时能为应用自动管理依赖(应用中所依赖的 JAR 文件)。
9. 解析XML不同方式对比
DOM、SAX、JDOM、DOM4J
- [x] DOM DOM树驻留内存
可以进行修改和写入,耗费内存。
步骤:创建DocumentBuilderFactory对象 -> 创建DocumentBuilder对象 -> Document document = db.parse("xml")
- [x] SAX 事件驱动模式
获取一个SAXParserFactory工厂的实例 -> 根据该实例获取SAXParser -> 创建Handler对象 -> 调用SAXParser的parse方法解析
用于读取节点数据 不易编码 事件有顺序 很难同时访问xml的多处数据
- [x] JDOM
创建一个SAXBuilder的对象 -> 创建一个输入流,加载xml文件 ->通过saxBuilder的build方法将输入流加载至saxBuilder并接收Document对象
使用具体类而不使用接口
- [x] DOM4J
通过SAXReader的read方法加载xml文件并获取document对象
使用接口和抽象类,灵活性好,功能强大
10. Nginx相关
请参考我的Nginx
11. XML与JSON对比和区别
XML
1)应用广泛,可扩展性强,被广泛应用各种场合
2)读取、解析没有JSON快
3)可读性强,可描述复杂结构
JSON
1)结构简单,都是键值对
2)读取、解析速度快,很多语言支持
3)传输数据量小,传输速率大大提高
4)描述复杂结构能力较弱
JavaScript、PHP等原生支持,简化了读取解析。成为当前互联网时代普遍应用的数据结构。
【感谢您能看完,如果能够帮到您,麻烦点个赞~】
更多经验技术欢迎前来共同学习交流:一点课堂-为梦想而奋斗的在线学习平台 http://www.yidiankt.com/
![关注公众号,回复“1”免费领取-【java核心知识点】]
QQ讨论群:616683098
QQ:3184402434
想要深入学习的同学们可以加我QQ一起学习讨论~还有全套资源分享,经验探讨,等你哦!