语言这个东西,长时间不摸就是会忘,你会的技术越多,忘的也就越多。所以要勤写博客,做好烂笔头。
web开发这一块,我心中理想的开发组合是html+javascript+python+c。其中主体是javascript和c,前者是做RIA的主力,后者用来快速成型,而且有cpython这样功力不差的解释器以及五花八门的类库可以解决80%问题。剩下20%吃速度的需求都用c编写好动态链接库,然后使用python的ctype或者其它方法调用就好啦(这里只是说开发语言的选择)
至于java这个东西呢,哎……总有点不给力的感觉,毕竟是强类型语言,转换来转换去,看着乱飞的范型心中就无法平静。而且还不知到oracle老大哥心底到底在想什么,是拿java老实做IT服务,还是只作为专利战的武器……废话太多了,凭着有点记忆,赶紧记一下java这几个框架的心得。
首先说spring
spring中最重要的是IoC控制反转了。简单的说,就是如果有两个模块AB,当A要用B时,A就要在自己的代码里面写上B的名字,详细的过程。可是这样就造成了强耦合,万一B改动了,这边也要改,麻烦。所以就把A和B通通都交给spring管理,spring看到有合适的B就把一个B生成,发给A(DI依赖注入)。A和B都控制不了将来的事,这都靠spring调度,A和B只提需求。这都是通过反射实现的。
spring的AOP是面向切面编程,就是把一个函数调用的一前一后包裹起来,有点像python的装饰器。这其实也是装饰器的设计模式,不过觉得java里好麻烦,不知道是怎么实现的。
还有,spring一般作为框架的中心,配其它框架一起使用。
其次是freemarker
回想起当年教我组的女生freemarker:因为没有编程基础,所以她上来就直接想往jsp里嵌代码,被我及时制止,赶紧教了freemarker……她当时大惑不解,说为什么要这么麻烦。我就只好写一个个样例程序,给她演示如果不用freemarker,代码未来会演化成什么样……
freemarker的好处就是无法运行java代码,这实在是太好了。
freemarker的坏处就是变量不赋值就要抛出异常,YYD,if满天非,丑死了,都快疯了……
然后生成了静态页面后,如果改了模板,一定要重新生成静态页面,不然就悲剧了
还一个不好就是freemarker里面的key必须是string……
然后是struts2
呃,其实我不怎么看好struts2,因为在我眼里只会struts两个功能:一个是MVC框架,一个是各种tag……struts2的MVC首先是有一个struts-config.xml的文件,里面配了各种url跳转到哪些地方。它的controller是ActionServlet,负责读取这个文件。struts2的标签库我是不用的,感觉虽然方便,但是怕扰乱布局,怕跨浏览器支持问题(?可能不对)。还有就是觉得spring mvc就够用了,没必要再引一个struts2,怕麻烦。因为这两点,所以不怎么看好struts2……(struts2的拦截器interceptor感觉也和spring的aop重叠,记住DRY)
最后是hibernate和ibatis
第一反应就是可怕的ORM,以及更可怕的HQL……
觉得hibernate的精髓在于缓存。一级缓存在内存,缓存事务且永不过期;二级缓存可在内存、硬盘,缓存不常用且不怎么并发的类的实例,比如select * from table中所有的对象,都按照id缓存。hibernate还有按查询语句缓存等,这都是数据缓存和事务缓存了,作用还是蛮大的(最直接的应该是页面缓存)
其实hibernate我也不是很清楚,为什么说一次会查处很多很多没必要的数据,所以还亡羊补牢似的弄了一个延迟加载……
我觉得ORM这个东西轻量级就好了,尽量每次都是对单表的ORM操作,如果有级联、join的话就用自己手写的select,然后把数据集包装成一个arraylist<Map<string, object>>不也挺好?之前我在项目里就这样干的(反射完成ORM,把级联select全部持久化到硬盘),还是比较爽的。
hibernate在面向对象编程这方面是太偏执了,java可以OOP,hibernate也可以OOP,但广大的RDMS老人家们可不是都是源自OOP思想设计的。如果是面向对象数据库,搞不好会好多了吧?
ibatis我很喜欢,直接把sql语句写配置文里,好查也好管,不错。
最后一句,互联网应用以查询为主,谁能应付高磁盘I/O谁就能胜出。这里我看好列存储然后是KV存储数据库
分享到:
相关推荐
struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...
图解MyEclipse配置struts+hibernate+spring+FreeMarker.rar
附件是我平时对一些技术的Demo,包含 Struts2 Hibernate Spring集成,涉及到CXF JSON FreeMarker等技术,SSH2使用的Struts2的零配置。有兴趣的可以下载研究学习。
Struts+Spring+Hibernate+Freemarker新闻系统
简单的用ssh做了一个小例子,最初级的,简单的很,有机会在增加内容
能生成静态的新闻页面可以供Struts+Spring+Hibernate+Freemarker框架的整合应用!
整合S2SH+Freemarker+oscache,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。
用spring+hibernate+struts+freemarker做的个人博客源码 里边包含了数据库模块,配置即可用,可分析源码做为学习
JEECMS使用目前java主流技术架构:hibernate3+struts2+spring2+freemarker。AJAX使用jquery和json实现。视图层并没有使用传统的JSP技术,而是使用更为专业、灵活、高效freemarker。 数据库使用MYSQL,并可支持orcale...
整合S2SH+Freemarker,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。
• 采用hibernate3+struts2+spring2+freemarker主流技术架构 • 懂html就能建站,提供最便利、合理的使用方式 • 强大、灵活的标签,用户自定义显示内容和显示方式 • 在设计上自身预先做了搜索引擎优化,增强对...
初学者绝佳入门实例,展现web开发最主流框架:struts+hibernate+spring,使用前沿技术freemarker实现模板重用,使用FckEditor提供和word媲美的在线文本编辑功能。