进入互联网公司实习有一段时间了,和学校的学习有很大的不同。记录一下大体流程方便自己以后学习。只是个人了解结合了公司和维基百科
1.webx:阿里巴巴的框架内部广泛使用,建立在Java Servlet API基础上的的通用WEB框架。用Webx搭建的应用可以运行在任何一个标准的WEB应用服务器上面。 Webx是一个基于Spring的组件框架。组件是一个软件包,它可以被其它组件扩展,也可以扩展。其它组件利用这些特性,Webx不仅能够用来开发高度可定制的Web应用(这是它的主要功能),也能够用来帮助你开发高度可扩展的非WEB的应用。学习资料openwebx.org
2.Velocity:java的模板引擎处理和存储数据输出到vm上显示出来(vm:分离jsp和java让前端和后端分块开发)
3.MemCached:memcached缓存机制,查询数据时,如果memcached中有数据直接取出数据,无数据就到Mysql中查询更新mysql中数据,如果memcached中也有相同数据要进行更新。要学习memcached的内存管理和memcached的集群。
4.Cassandra:是一套开源分布式NOsql数据库系统Cassandra使用的是宽列存储模型(Wide Column Stores)[2],每行数据由row key唯一标识之后,可以有最多20亿个列[5],每个列由一个column key标识,每个column key下对应若干value。这种模型可以理解为是一个二维的key-value存储,即整个数据模型被定义成一个类似map<key1, map<key2,value>>的类型.Cassandra的系统架构与Dynamo类似,是基于一致性哈希的完全P2P架构,每行数据通过哈希来决定应该存在哪个或哪些节点中[11]。集群没有master的概念,所有节点都是同样的角色,彻底避免了整个系统的单点问题导致的不稳定性,集群间的状态同步通过Gossip协议来进行P2P的通信
5.Mybatis:与其他的对象关系映射框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存储过程、视图、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数据库进行操作,或者要完全控制SQL的执行,MyBatis是一个不错的选择。(学校学习的是Hibernate),Mybatis是半自动化,hibernate是全自动化,性能上Mybatis高。
6.Nginx:面向性能设计HTTP服务器nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强可以配置4台机器上安装Tomcat,由Nginx进行负载均衡。
7.Tomcat:本身含有HTTP服务器,被视为单独的Web服务器。一言难尽大家可以看看《How Tomcat Works》讲解很详细从HTTP请求发送到Tomcat容器内部解析到响应返回到HTML上,非常不错。
8.JVM:java虚拟机Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码)。JVM执行过程:1.加载.class文件.2.分配并管理内存分配3.执行垃圾回收。想深入学习可以看看JVM性能优化
9.JMX:JMX(Java Management Extensions,即Java管理扩展)是Java平台上为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。EJB的容器JBOSS就是在JMX基础上的,Tomcat和JVM上都有JMX进行相应参数的暴露。
10.BTrace:我们需要知道更多的程序的运行细节,但又不可能在开发的时候就把程序中所有的运行细节都打印到日志上,通常这个时候能采取的就是修改代码,重新部署,然后再观察,但这种方法对于online应用来说不是很好,另外一方面如果碰到不好改的代码,例如引用的其他的外部的包什么的,就很麻烦了,BTrace就是一个可以在不改代码、不重启应用的情况下,动态的查看程序运行细节的工具,其官方网站在此:http://kenai.com/projects/btrace/