设为首页 收藏本站
查看: 1296|回复: 0

[经验分享] Java 持久化技术栈

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2017-3-3 06:39:45 | 显示全部楼层 |阅读模式
基础知识储备:

  • Java SE

    • Java语言(java.long.*)
    • Java集合框架(java.util.*)
    • Java I/O(java.io.*、java.nio.*.*)
    • Java 网络(java.net.*、java.rmi.*、javax.net.*)
    • Java 并发(java.util.concurrent.*、java.util.concurrent.*.*)



实际上Jdk的内容非常多,除了上面提到的最常用的工具和方法,剩下的内容,比如像java security、java Swing、java awt等,可能平时不常用,但作为一名合格的程序员,那些都有必要了解。


  • Java EE

    • Servlet
    • JDBC
    • JPA



Servlet是现代web应用的基础,基于其原理搭建的MVC框架,比如Spring MVC、Struts等,是我们这代Java工程师都一定会用到的。经典的Java EE容器Tomcat、Jetty等也是现在每天都会用到的工具,因此,Servlet技术一定要深入掌握。JDBC和JPA是Java持久层唯二的技术。JDBC更底层,更基础,JPA则是针对ORM框架的接口规范。
Java EE覆盖到企业开发的方方面面,但因为其臃肿的设计,已经越来越跟不上时代的脚步了,最近有传言称Oracle将放弃这项技术,但不论Java EE的前景如何,我上面提到的那三门技术,都不会轻易消失。


  • JVM

    • 操作字节码:ASM、cglib、javassist
    • JVM的内存和体系结构



Java的语言的方方面面又都和JVM有关,但这部分内容我还不是很了解,以后在补充 //TODO

常用框架:

  • 数据库连接池

    • Apache DBCP
    • Druid
    • Tomcat jdbc pool

    • HikariCP



不知道为什么,我对连接池技术一直情有独钟,当年接触到的第一个连接池是c3p0,也正是从那是开始,我才有所谓“性能”、“效率”这些概念。“池”,是经典的以空间换时间的方式,提升程序效率的概念。“池”的应用非常广泛,不光有数据库连接池,还有线程池,缓存池等等。这项技术发展到现在已经非常稳定,普通公司的项目只要使用连接池,一般就没什么问题。随着时代的发展,连接池的功能也在不断扩充,阿里的Druid就提供了sql监控的功能。所以现在看连接池是相关内容,就不能仅是为了实现功能(本来功能就不多),而是要深入的理解原理,并能够自己动手实践,开发出高效稳定的服务组件。


  • 持久层的中间件

    • ottor
    • yugong
    • Cobar
    • Sharding - JDBC
    • myCat



Java持久层中间件通常分为两类,一类是分库分表,一类是数据迁移。前者是在融合了JDBC和数据库连接池的基础上,实现的面向数据库的高级功能。当系统的数据量上升到一定级别之后,分库分表是必然的选择,使用中间件,就可以和应用分离,做到灵活的控制。而后者则是对Java I/O、并发技术的高级应用。一道经典的面试题是给你一个上GB的文件,问你如何快速的找到其中出现频率最高的一组词汇,或者问你如何快速的统计出一份报表。等你深入掌握了第二类框架的运行原理之后,这些都不是问题。


  • ORM框架

    • hibernate
    • myBatis
    • Jfinal
    • nutz



SSH(Spring + Struts2 + Hibernate3)最火的时候,我刚刚工作,后来有人说hibernate不行了,大家都在用myBatis,于是紧跟着又有了SSM(myBatis)。再后来,“云”、“微服务”成为当前最炙手可热的概念,传统的ORM框架也渐渐没有了往日的热度,大家都转头去搞自己的轻量级的ORM和MVC框架,国内比较著名的有Jfinal和nutz。ORM,实体映射成了老旧的代名词.......但是,我不这么认为。现在打开hibernate的官网,发现它保持的生命力,就在6月底,还发布了其最新的5.2.1版本。一个框架的成功都是有原因的,其中肯定有非常多值得学习的地方。只有你足够了解它的时候,你才能准确的判断,自己究竟需不需要它。


  • Spring

    • Spring JDBC
    • Spring JPA
    • Spring DATA



其实看上文也知道,各种框架变来变去,但是Spring的核心统治地方,一直屹立不倒。能做到这点是一件非常了不起的事情,这和Spring一直坚持高效,坚持给程序员各式各样的“糖果”有关系。渐渐的,在应用端,Spring已经有了一统天下的姿势。上面仅列举了Spring在Java持久层的工作,除此之外,还有很多内容,就不在这里一一列举了。

  • 缓存

    • Ehcache
    • memcached
    • J2Cache




  • 非关系型数据库

    • redis
    • mongoDB



缓存和非关系型数据库很像,都是提供数据的冗余保存,从而提升性能,而且都可以分布式的部署,达到高可用。两者有区别的地方,可能就在对数据结构和存储方式的差异。



  • 关系型数据库

    • Oracle
    • MySQL
    • postgresql



大公司里,都会有专门的DBA去做高可用和性能上的架构,那是一块相对独立而且门槛较高的领域。作为应用开发的技术人员,虽然不用考虑底层的架构,但也仍需对自己写过的每一条sql负责,尤其是在轻型的架构中,底层更多的使用了原生的JDBC或myBatis,这些都需要程序员们自己些sql,当系统存在一条“无厘头”的sql时,再强大的架构也有可能被搞垮。

其他技术

  • MQ中间件,反向代理服务器
  • linux操作系统

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-349373-1-1.html 上篇帖子: tomcat:run和tomcat7:run的区别,以及Apache Tomcat Maven Plugin 相关 下篇帖子: 打包文件 MANIFEST.MF 功能详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表