JAVA学习知识点
该文档是博主从自己的学习中总结出来的,主要为b/s,仅作参考
java基础
- 面向对象思想
- Java运行机制以及JVM原理
- 面向对象的特征:封装、继承、抽象、多态
- 数组和容器:容器的线程安全问题
- I/O和NIO:NIO工作原理和应用
- 高并发:concurrent
- java线程
java反射
ps:虽然java封装了list,map,set等,但个人觉得还是应该学习数据结构.
现在大部分人一味的追求框架的运用,但真正能提升自我的还是对java本身的深入理解,所以说不要忽略了java基础。
这里分享几个学习网址(来源知乎)
jvm
- Java JVM:内存结构和相关参数含义
https://github.com/pzxwhc/MineKnowContainer/issues/24 - Java JVM:内存溢出
https://github.com/pzxwhc/MineKnowContainer/issues/25 - Java JVM:垃圾回收
https://github.com/pzxwhc/MineKnowContainer/issues/26 - Java JVM:编译加载机制与自定义类加载器
https://github.com/pzxwhc/MineKnowContainer/issues/27
多线程
-Java 多线程:多线程生成的原因(Java内存模型与i++操作解析)
https://github.com/pzxwhc/MineKnowContainer/issues/6
- Java 多线程:生产者消费者问题
https://github.com/pzxwhc/MineKnowContainer/issues/8
- Java 多线程:Lock接口(接口方法分析,ReentrantLock,ReadWriteLock)
https://github.com/pzxwhc/MineKnowContainer/issues/16
- Java 多线程:Condition关键字
https://github.com/pzxwhc/MineKnowContainer/issues/10
- Java 多线程:synchronized 关键字用法(修饰类,方法,静态方法,代码块)
https://github.com/pzxwhc/MineKnowContainer/issues/7
- Java 多线程:volatile关键字
https://github.com/pzxwhc/MineKnowContainer/issues/11
- Java 多线程:ThreadLocal关键字
https://github.com/pzxwhc/MineKnowContainer/issues/12
更多请见知乎网 https://www.zhihu.com/question/19851109
java中级
- 序列化:xml、json的序列化与反序列化
- jdbc:数据库操作
- jsp
- servlet:可与jsp 一同学习
- webService:jdk自带的webService框架,主要学习如何发布与运用三方服务
- 设计模式
java高级
- ORM框架:hibernate、mybatis等
- EJB:虽然ejb很繁重,但是目前还是有企业运用EJB,作了解即可
- Spring:目前主流的框架,主要学习IOC、AOP、Spring MVC
- Struts
- webService:学习webservice框架,目前运用广泛的是CXF
- 工作流:推荐学习Activity
- 缓存:目前运用广的是redis、EHCACHE
- 权限管理框架:推荐学习shiro,现在用spring security 的也有,不过个人觉得shiro更适合开发者
- 搜索:solr、lucene,推荐学习solr
- 分布式:zookeeper、dubbo、spring service
- Linux基础,虽然我们不是运维,但是Linux基础是必不可少的。ps:上述的solr redis dubbo zookeeper都是在linux环境下搭建
- Nginx:运用:反向代理,负载均衡等
- 数据库:sql,视图,存储过程等
- 协同开发:svn,git
- maven
- Hudson、Jenkins
- Netty:java nio 框架,如果没有需求,可不做深入研究(个人意见)
web基础
要做b/s开发就得具备基本的web开发能力,如html,css,js等。
- 掌握html,css等,不要求要能自己运作,做出界面,后台开发只需要掌握,能看懂就行了。
- 掌握js基本语法、js操作dom元素,掌握jquery。
ps:企业里一般会有专门的前端人员,所以要求不高,但是前端不能帮你完成后台与前台的数据交互,所以必须掌握基本的技能。
企业有感
这里分享下,博主在企业里的一些总结
- 在企业里,一般分工很明确,举个列子,一家只有20人的公司里面都是前端、后台、设计、产品、需求,每块一人,麻雀虽小,但五脏俱全,所以不用太过注重自己在各个领域的成就。
- 一般颇具规模的企业,都有一套试于自身的敏捷开发的框架,一般企业会对新进员工进行框架培训和业务培训,所以不用太担心是否熟悉公司业务框架等
- 在企业里,大家都是各司其职,大家时间都有限,所以自学能力以及解决问题的能力很重要,一定要养成查看api文档的好习惯,从api文档中来解决问题等。(ps:程序员人都很好,都乐于助人)
- 思想是最重要的东西,现在企业往往反感培训机构出生的程序员,因为培训机构是注重的是学员就业问题,在对学员的培养上往往是按部就班。博主现在的公司老总给我说的,他宁可要一个不会的学生来自己培养,也不要一个培训机构出来的。(ps:以上是博主从公司所了解的,不属于博主个人观点)
- 建议多去了解apache的开源框架
- 建议多去github上浏览别人发布的资料,同时也可以写一些好的文章或者项目发布到github上