1.学习Java,都要学哪些课程?
2.JUC架构-ReentrantLock的公平与非公平
3.Java学习路线
学习Java,都要学哪些课程?
来看看千锋武汉Java开发基础学习路线图是怎么样的:
1、认识java语言,包括jdk、jvm等等,c 音乐播放器源码知道代码从写好到实现之间的流程。
2、学习java基本语法。
3、学习操作系统里的各种基本算法,因为下一阶段的线程可能会用到。
4、开始学习j2se,主要包括面向对象的关系、线程、集合文件等等。
5、此阶段结束可以做一些桌面程序等等小应用。
6、进入j2ee学习,DS社区源码首先学习一些基本的前端知识,html、css、javascript、jquery、ajax
7、深入学习一些前端东西,比如easyui、bootstrap、vue等等。
8、进入后端学习jsp、servlet。
9、学习数据库mysql、oracle、sqlserver、DB2.
、学习ssh框架,因为小部分企业目前还在使用此框架。神奇购源码
、深入学习ssm框架,由于很多企业开发都使用此框架进行开发。
、着重理解掌握spring框架,并且能够最终源码。
、学习各种设计模式,试着自己去写一写简单的框架。
、学习其他后台框架,比如activiti等。
、maven、git、svn等项目管理工具的使用。
、学习面向服务的体系结构soa、webservice等
、jms、余额分红源码EJB的开发等。
、了解并使用weblogic、websphere等。
、JVM优化、java程序性能优化等。
、学习分布式技术tomcat、Nginx、并发控制等等。
想系统学习Java,是要付出很多的精力的。可以从讲师水平、学习的内容,环境,是否面授几方面选择,适合自己的才是最好的。最好去实地看看,可以去千锋试听一下,mpich源码分析不过再好的学校自己不努力还是不行。
JUC架构-ReentrantLock的公平与非公平
ReentrantLock是Java中一种强大的可重入锁,提供了与synchronized不同的线程同步机制。它的重要特性包括:
1. 可重入性:允许线程多次获取同一锁,但需要精确管理锁的获取和释放,以防止死锁。
2. 公平与非公平选择:ReentrantLock有两种模式:公平锁和非公平锁。公平锁按申请顺序分配锁,确保每个线程按等待时间获取,可能增加性能开销;非公平锁则优先给当前持有锁的线程,提高效率,但可能导致线程饥饿。
3. 显式控制:与synchronized不同,ReentrantLock需要显式调用lock()获取锁和unlock()释放锁,适合更精细的同步控制。
4. 条件变量:ReentrantLock支持Condition接口,实现复杂的线程协作和等待通知机制。
5. 可中断的获取:lockInterruptibly()方法允许在获取锁时响应中断,避免阻塞过久。
6. 保证可见性:与synchronized一样,ReentrantLock确保线程可见性,避免数据同步问题。
在选择ReentrantLock时,需注意平衡公平性、效率和线程饥饿的风险。默认情况下,它采用非公平模式,但可以为特定场景调整为公平锁。深入了解其公平与非公平的实现细节,可以参考AQS源码和Condition的讲解。
Java学习路线
根据个人实际的经历,结合多种书籍,特别整理出了下面的java学习路线:一、Java SE部分
1、java基础:基础语法;面向对象(重点);集合框架(重点);常见类库API;
2、java界面编程:AWT;事件机制;Swing;
3、java高级知识:Annotation;IO和NIO、AIO;多线程、线程池;阻塞、非阻塞、异步网络通信;反射、动态代理;
二、JDBC编程
4、SQL基础:基础SQL语句;基本查询;多表查询;子查询;结果集的交、并、差运算;
5、JDBC基础:常见数据库用法;JDBC操作常见数据库;RowSet与离线结果集;数据库连接池;事务管理、批处理;
6、JDBC进阶:存储过程、函数;触发器;理解JCBC的不足;掌握ORM工具优势和设计;
三、DHTML编程
7、HTML基础:基本HTML标签;常见表单标签;DIV+CSS布局;
8、JavaScript知识:javascript基本语法;javascript基本对象特征;Json语法;深刻理解javascript的动态特征;
9、Dom和事件机制:DOM操作、编程;常见浏览器事件机制;掌握用户交互技巧;
四、XML编程
、XML基础:XML基础规则;DTD和SCheme;XML和样式单;
、XML进阶:DOM、SAX和JAXP;dom4j、JDOM等工具;XQuery和XQJ;基于XML的数据交换;
、Web Service:JAX_WS2、SAAJ规范;WSDL和SOAP协议;CXF框架、拦截器;CXF整合Spring;
五、Java Web编程
、Web编程基础:Tomcat服务器;Jsp语法、EL、内置对象;Servlet API;Servlet 3.0注解;Listener和Filter;
、Web编程进阶:自定义标签库;MVC和DAO、Servlet、标签的作用;JSTL、DisplayTag等常见标签库用法;
、Web编程原理:请求/响应、架构;Http协议;深刻理解Jsp运行原理;掌握Web容器底层的线程池、socket通信、调用Servlet的命令模式;
六、Ajax编程:
、Ajax编程:XML HttpRequest和异步请求;发送请求和处理响应;常见Ajax库(Prototype、Jquery、ExtJs、DWR)用法;结合Http协议、异步请求深入研究ajax库的设计;
七、Android开发
、Android基础:Android开发调试环境;Android应用结构;界面组件与界面编程;资源管理;四大组件;
、Android中级:文件IO和SQLite;图形、图像与动画;音频、视频的录制与播放;传感器编程;GPS应用;
、Android高级:网络编程与Web Service;OpenGL_ES 3D开发;整合Google服务;使用NDK开发;java和c相互调试;
八、轻量级Java EE
、Struts2:MVC与struts体系;Action和Result;国际化和标签库;文件上传、下载;类型转换和输入检验;拦截器与插件开发;
、Hibernate:ORM与持久化映射;关系映射、继承映射;延迟加载、性能调优;HQL查询、条件查询、SQL查询;二级缓存和查询缓存;
、Spring:IoC与Bean配置、管理;Bean生命周期;SP、EL;AOP与事务权限控制;S2SH整合开发;Spring整合Jpa;
九、经典Java EE
、JSF<选学>:MVC与JSF设计理念;托管Bean与导航模型;JSF流程与事件机制;JSF标签库;类型转换与输入检验;
、EJB及相关技术:JNPI与RMI;会话Bean及其生命周期;IoC与EJB拦截器;JMS与MDB;会话Bean与Web Service;
、JPA:ORM框架与JPA规范;JPA注解与常用API;JTA事务与事务管理;JPQL查询;EJB、JPA整合;
十、Java 拓展、进阶:
、Java EE实践与架构:Ant+Ivy或Maven;SVN、CVS;深刻理解种以上设计模式;掌握各种Java EE架构及各自优势;
、Workflow:Workflow规范及功能;JBPM等workflow框架;多次重构、反复思考;大型项目经验;
、Java EE进阶:掌握各MVC框架运行原理、能开发类似框架;掌握Spring、HiveMind、AspectJ等框架原理、能开发类似工具;掌握Hibernate、iBatis等框架原理,能开发类似工具;深入研究EJB机制、大致了解应用服务器的实现;
希望对您有所帮助!~