论框架设计(一)

Web

  1. MVC Framwork:SpringMVC,Restful的风格,对比Strus2更简单,更友好。
  2. CSS Framwork:最热火的Twitter Bootstrap,提供了简便的布局能力和基本的页面美化。
  3. Javascript Library:随大流用了JQuery
  4. Validation Framwork:当然用jQuery Validation,客户端校验和体验都不错!

Database

  1. 数据库设计一般性原则

    1. 主键的列名统一为id。
    2. 为方便数据操作及维护,不建立任何外键,用程序去保证关联关系。
    3. 为表名添加前缀以便日后管理。比如有几十个表,将联系比较紧密的表,使用相同的前缀。
    4. 表名全小写,因为MySQL在Linux下默认区分表名大小写。
  2. 传统关系型数据库

    1. MySql,Postgresql
    2. Oracle
  3. 流行的NoSql

    1. MongoDB,最流行Nosql,一个分布式,面向文档的开源数据库,将数据存成BSON格式,与关系型数据库最为相似,也提供类似SQL的查询语句,更像个schema-less的数据库。
    2. Redis,一个基于内存的缓存数据库,提供强大的TTL等功能,Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
    3. SSDB,基于磁盘高速数据库(国产),号称一个高性能的支持丰富数据结构的 NoSQL 数据库代替Redis。
    4. HBase,一个分布式的、面向列的开源数据库,该技术来源于Google论文“Bigtable:一个结构化数据的分布式存储系统”。
  4. 本地缓存Cache

    1. 在JVM里的缓存,最老牌的就是Ehcache;
    2. 另外最简单的是Guava的Cache,也提供TTL;
  5. ORM框架

    1. MyBatis,追求高性能的应用,代码与SQL分离管理,相对码农来说更友好,个人推荐的ORM。
    2. Hibernate,最流行的ORM框架,无论是JPA还是Hibernate(当然JPA的实现还是用Hibernate),都是码农界里面最快速开发的东西。

Search Engine

  1. Elasticsearch,一个基于Lucene构建的开源,分布式,RESTful搜索引擎;设计用于云计算;能够达到实时搜索,稳定,可靠,快速。本人喜欢这个。
  2. Solr,一个基于Lucene构建的开源,最流行的,最快的搜索引擎。

Services

  1. Security Framework

    1. Apache Shiro,个人推荐,比Spring Security简单,容易扩展。
    2. Spring Security, 老牌的安全权限框架。
  2. Schedule

    1. Quartz,最推荐这个。
    2. Spring Schedule spring自带的轻量级定时调度器

Utilizes

  1. General 常规包
    1. Apache Commons Lang,这也太黏码农了,陪伴着码农长大的Jar。
    2. Guava,Google新鲜出炉的优雅产品,有点新潮,Java8好多基础Class都收此为囊中。
    3. Apache Commons IO, 同样好使。
    4. Commons FileUpload,基础上传文件包。
  2. XML
    1. JDK JAXB ,JDK自带
    2. Xstream ,以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换。
  3. JSON
    1. GSon,出身名门,出于Google之手,接口优雅。
    2. Jackson,功能丰富,相对快,Spring默认用它,所以我一直都用他。
    3. Fastjson,出于阿里人之手,号称全球最快的Json处理框架。
  4. Logging
    1. Slf4j,早就替代了Apache Common Logging了,个人一直用它Log日志。
    2. Logback,Log4j作者的后作Logback就好很多了,另外选择Logstash做日志的中央式处理。
  5. HttpClient
    1. JDK URL,JDK原生的URL请求。
    2. Apache HttpClient,建议用Apache HttpClient好过JDK自带。
  6. Serializer
    1. JDK Serializer
    2. Jackson Serializer
    3. Thrift,出自Facebook,跨语言,推荐
    4. Avro,出自Hadoop之父Doug Cutting,跨语言,推荐

Test

  1. Unit Test:Junit正统Java测试用例框架,AssertJ 是目前最好的Assert语句库。
  2. Performance/Stability Test:[Jmeter]作为测试工具是最成熟,常用于压力测试,并发测试等等。