java中bio nio aio的区别和联系
发布时间:2025-05-23 11:17:45 发布人:远客网络
一、java中bio nio aio的区别和联系
1、先来个例子理解一下概念,以银行取款为例:
2、同步:自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写);
3、异步:委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API);
4、阻塞: ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才返回);
5、非阻塞:柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到号你就不能去,你可以不断问大堂经理排到了没有,大堂经理如果说还没到你就不能去(使用非阻塞IO时,如果不能读写Java调用会马上返回,当IO事件分发器会通知可读写时再继续进行读写,不断循环直到读写完成)
6、Java BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
7、Java NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
8、Java AIO(NIO.2):异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,
二、Java学习路线
根据个人实际的经历,结合多种书籍,特别整理出了下面的java学习路线:
1、java基础:基础语法;面向对象(重点);集合框架(重点);常见类库API;
2、java界面编程:AWT;事件机制;Swing;
3、java高级知识:Annotation;IO和NIO、AIO;多线程、线程池;阻塞、非阻塞、异步网络通信;反射、动态代理;
4、SQL基础:基础SQL语句;基本查询;多表查询;子查询;结果集的交、并、差运算;
5、JDBC基础:常见数据库用法;JDBC操作常见数据库;RowSet与离线结果集;数据库连接池;事务管理、批处理;
6、JDBC进阶:存储过程、函数;触发器;理解JCBC的不足;掌握ORM工具优势和设计;
7、HTML基础:基本HTML标签;常见表单标签;DIV+CSS布局;
8、JavaScript知识:javascript基本语法;javascript基本对象特征;Json语法;深刻理解javascript的动态特征;
9、Dom和事件机制:DOM操作、编程;常见浏览器事件机制;掌握用户交互技巧;
10、XML基础:XML基础规则;DTD和SCheme;XML和样式单;
11、XML进阶:DOM、SAX和JAXP;dom4j、JDOM等工具;XQuery和XQJ;基于XML的数据交换;
12、Web Service:JAX_WS2、SAAJ规范;WSDL和SOAP协议;CXF框架、拦截器;CXF整合Spring;
13、Web编程基础:Tomcat服务器;Jsp语法、EL、内置对象;Servlet API;Servlet 3.0注解;Listener和Filter;
14、Web编程进阶:自定义标签库;MVC和DAO、Servlet、标签的作用;JSTL、DisplayTag等常见标签库用法;
15、Web编程原理:请求/响应、架构;Http协议;深刻理解Jsp运行原理;掌握Web容器底层的线程池、socket通信、调用Servlet的命令模式;
16、Ajax编程:XML HttpRequest和异步请求;发送请求和处理响应;常见Ajax库(Prototype、Jquery、ExtJs、DWR)用法;结合Http协议、异步请求深入研究ajax库的设计;
17、Android基础:Android开发调试环境;Android应用结构;界面组件与界面编程;资源管理;四大组件;
18、Android中级:文件IO和SQLite;图形、图像与动画;音频、视频的录制与播放;传感器编程;GPS应用;
19、Android高级:网络编程与Web Service;OpenGL_ES 3D开发;整合Google服务;使用NDK开发;java和c相互调试;
17、Struts2:MVC与struts体系;Action和Result;国际化和标签库;文件上传、下载;类型转换和输入检验;拦截器与插件开发;
18、Hibernate:ORM与持久化映射;关系映射、继承映射;延迟加载、性能调优;HQL查询、条件查询、SQL查询;二级缓存和查询缓存;
19、Spring:IoC与Bean配置、管理;Bean生命周期;SP、EL;AOP与事务权限控制;S2SH整合开发;Spring整合Jpa;
20、JSF<选学>:MVC与JSF设计理念;托管Bean与导航模型;JSF流程与事件机制;JSF标签库;类型转换与输入检验;
21、EJB及相关技术:JNPI与RMI;会话Bean及其生命周期;IoC与EJB拦截器;JMS与MDB;会话Bean与Web Service;
22、JPA:ORM框架与JPA规范;JPA注解与常用API;JTA事务与事务管理;JPQL查询;EJB、JPA整合;
23、Java EE实践与架构:Ant+Ivy或Maven;SVN、CVS;深刻理解10种以上设计模式;掌握各种Java EE架构及各自优势;
24、Workflow:Workflow规范及功能;JBPM等workflow框架;多次重构、反复思考;大型项目经验;
25、Java EE进阶:掌握各MVC框架运行原理、能开发类似框架;掌握Spring、HiveMind、AspectJ等框架原理、能开发类似工具;掌握Hibernate、iBatis等框架原理,能开发类似工具;深入研究EJB机制、大致了解应用服务器的实现;
三、java学习路线是什么0基础可以学习吗
1、鼠标演练是第一步,拖动,复制、粘贴、移动等等,主要是训练对于鼠标功能的了解,以及熟练度。
2、开始学习用键盘上打字母、打拼音、打汉字,练习对于键盘的熟练度等等。也可以通过玩一定键盘游戏,了解键盘。
3、学会了解文件属性,比如:大小、分辨率、尺等等。可以在网上视频学习excel、ppt等相关教程,哔哩哔哩网站可搜索相关教程学习。
4、开始认识格式、并知道用“格式工厂”等软件转载格式,对格式的认识是非常重要的。常见的格式有:文本文件(.TXT)(.DOC)(.XLS)、图片(.BMP)(.JPG)(.GIF)、音频(.MP3)(.WAV)、视频(.AVI)(.RA)。
5、学习通过搜索内容、购物、查资料等等。
6、学习网站安全知识、知道如何杀毒。同时、对于网络知识做一定完善、让自己懂得怎么上网最为安全、怎么最快速等等。
1、学会阅读帮助文档和教程:应用程序和操作系统通常提供帮助文档或教程,了解如何使用和解决常见问题。学会查找和阅读这些文档,可以更好地理解软件功能和操作方法。
2、加强安全意识:学习如何保护你的个人电脑安全,包括设置强密码、避免点击可疑链接、定期更新软件和操作系统等。确保你的电脑和个人信息的安全。
3、练习提问和寻求帮助:在遇到问题时,善于向他人寻求帮助。提出明确的问题,并在寻求帮助时提供相关的背景信息,这样更容易得到准确的回答和解决方案。
1、职业发展:在当前数字化时代,几乎所有行业都与电脑和技术密切相关。掌握电脑知识和技能,如基本操作系统的使用、办公软件的应用、互联网的运用等,可以增加求职竞争力,提升职业发展的机会。
2、日常工作和生活:无论你从事何种职业,电脑都会在工作和日常生活中发挥重要作用。掌握基本的电脑操作技能,如文件管理、信息搜索、联络沟通等,将大大提高你的工作效率和生活质量。
3、访问信息和资源:互联网是获取信息的重要来源之一,通过电脑学习,你可以学会使用浏览器搜索信息、获取在线学习资源、参与社交媒体等,这有助于你不断学习和获取知识。