- 浏览: 681940 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (198)
- 编程经验 (12)
- 移动端 (2)
- linux (1)
- 基础理论 (10)
- 开发工具 (8)
- 开发语言_java (21)
- 开源框架_Axis2 (8)
- GIS开发_OpenLayers (9)
- GIS开发_ArcGIS (6)
- GIS开发_googleAPI (4)
- GIS开发_AO (2)
- Web前端_Javascript (7)
- Web前端_CSSDIV (2)
- Web前端_WebGL (5)
- Web前端_HTML5 (1)
- 数据库 (17)
- 项目管理 (6)
- REST服务_Restlet (0)
- REST服务_RestEasy (5)
- 连接池 (6)
- 框架组合_SSI (7)
- 框架组合_SSH (37)
- 异常处理 (10)
- 测试 (1)
- ASP/ASP.NET (3)
- 我所遇到的JavaScript (1)
- cas (1)
- CI (1)
- nginx (1)
- 大数据 (1)
- maven (1)
- 机器学习 (0)
最新评论
-
章元o:
正解,问题解决了,要换tomcat的
webservice开发时项目启动过程中出现版本问题 -
dcloud:
大师,按照你的指点进行初始化工作,但是在connection. ...
AO连接sde出现java.lang.UnsatisfiedLinkError: no ntvauth in java.library.path -
yiran0314:
您好 关于这个问题能描述得更详细一点吗?
CXF异常处理 -
tianhandigeng:
找了半个小时了也没小号到m2e最新的地址,既然这个都让你找得这 ...
Myeclipse8.6安装Maven插件------ -
wxb880114:
这个发的比较早了,现在在myeclipse中有自带的,ecli ...
Myeclipse8.6安装Maven插件------
博客分类: Java
SpringHibernateDWRfreemarkerjQuery.
技术选型
2.1. 基础架构
1.
IOC Container: Spring, Guice
我们需要IOC Container的依赖注入作为胶水,把其他工具包粘在一起。还需要它的AOP,进行事务配置,权限管理。
这么多人都在使用Spring,实际使用中可以获得巨大的便利,如果选择了其他平台就要面临在关键时刻自己造轮子的窘境。使用Spring的实际经验更长,方便与其他组件整合。
Guice是由Google出品的,又使用了JDK5中的注解功能,问题是以后是否能得到很好的支持。
2.
MVC: struts2, struts, JSF, RESTful Framework, SpringMVC
struts2比struts好用,在了解了OGNL的用法后,还是比较方便的。
struts毕竟还是老掉牙了。
JSF好复杂,没有IDE的支持基本没法用,看不清方向。
RESTfull Framework感觉太草率,有前途吗。
springmvc现在默认不包含在spring包中了,它的功能太简陋,有些新功能华而不实。
3.
ORM: Hibernate, JPA, iBatis, JDBC
作为ORM方案,使用hibernate3对JPA的支持,使用annotation简化配置。
Hibernate用起来比较熟,支持多数据库,简化了数据库的操作,目前把所有调优的希望都放在二级缓存上了。
JPA对于规范不太了解。
iBatis据称是对JDBC的最简封装,但是与hibernate有太多的区别。
JDBC根本没进行封装,用起来风险太高。使用封装的框架更容易统一开发。
4.
View: JSP-2.0, Freemarker, Velocity
严重偏向Freemarker,易用性,扩展性,自定义宏,还可以用在不支持JSP-2.0的服务器上,而且还可以与struts2配合。可是Freemarker并没有合适IDE配合,而且能够熟练使用的程序员也不多。
JSP-2.0功能明显不足,限制太多,不容易扩展,必须和taglib配合才能对付实际中的工作,taglib又太难写。
Velocity功能不如Freemarker。
5.
Security: Spring Security, jsecurity, struts menu
Spring Security作为acegi的升级版本,更易用了,与spring整合在一起,控制权限。
jsecurity作为apache孵化器里的项目,有人对它进行了强烈推荐。
是否还考虑基于struts menu写一套自定义的菜单?
6.
Ajax Widgets: ExtJS, Dojo, YUI, JQuery-UI
ExtJS轻便,好用,漂亮,功能强大。只是协议有问题。
Dojo笨重,难看,都不知道怎么用。
YUI是ExtJS的原型,但是封装没有ExtJS好。
JQuery-UI还很青涩。
如果不使用上述这类统一组件库,还可以选择jsCalendar这个日期选择组件,FckEditor和Tiny_mce都是富文本编辑器。据说专业人士喜欢用FckEditor,喜欢漂亮的都喜欢用Tiny_mce。JavaScriptTemplate可以批量生成HTML。和DWR结合实现上传进度条等功能。
7.
JS Function Lib: Prototypejs, JQuery, Mootools
Prototypejs最老。对应的扩展主要有Script.Aculo.us。
JQuery有强力的查询能力。对应的扩展容易找到。
Mootools被fin强烈推荐,说OO封装做得很好,但感觉扩展组件不丰富。
8.
JSON: DWR, json-lib
使用dwr和 commmons-fileupload制作上传文件的进度条。
考虑使用dwr-2的服务器推,制作在线聊天。
与服务器之间交互采用json格式传递数据,目前采用的json-lib在处理循环引用的时候需要特别设置,否则在处理hibernate双向关联的时候100%出错。
2.2. 扩展架构
在基础架构上进行的扩展,实现特定功能的工具:
1.
WebService: CXF, XFire, Axis-2
Axis-2总感觉很笨重,而且不容易和Spring结合。
XFire已经停止开发,后来与Celtix合并为apache中的新项目CXF。
CXF是由Objectweb Celtix和Codehaus XFire合并成立的。与Axis1~2比较,更易于整合到Spring中。而且据说支持JAX-WS。不过不知道JAX-WS是干啥的。
2.
工作流: Jbpm-3, Jbpm-4, Osworkflow
Jbpm-3是开源中比较火的框架了。但是spring-module-jbpm31封装的有问题,单元测试会报异常。
Jbpm-4太新,还是alpha版,而且改动太大了。
Osworkflow,号称最灵活的工作流引擎,据说所有实现都要自己写代码。
两者都支持Hibernate。
3.
规则引擎: drools
据说是很轻量级的,拥有平民语法的规则引擎。
4.
Search Engine: Hibernate-search, Compass, Lucence
Compass同另外一个Hibernate-search都是基于Lucence,对数据库的全文搜索引擎。
Compass开发的时间更长一些。Hibernate-search出现的时间还比较短,会用的人少,不知道前途如何。如果两者都不符合,还要考虑自己直接操作Lucence。
之前使用过Compass,在单元测试的时候会出现内存溢出的问题。
5.
报表: JasperReport, BIRT, 自定义
JasperReport负责文本报表,JFreeChat图形报表。
虽然没使用过JasperReport,但已经听到过太多其他人对它的怨言了。
BIRT没有想像中那样好用,依赖那些eclipse中的包,显得太大了。
因为东西方习惯差异,自定义属于自己的一套报表应该可以解决国内很多问题。首选答案竟然是手写PDF和JFreeChat结合生成图表。
6.
JMS: ActiveMQ, Jencks, Lingo
ActiveMQ是很多人推荐使用的JMS框架。
Jencks是一个JCA平台,可以提供J2EE里的资源容器。
Lingo据说可以把JMS封装成POJO。
7.
定时调度: Quartz, java.util.Timer
据说Quartz是唯一免费的解决方式。这个组件放到web.xml里,可能造成内存泄露。robbin认为这种定时任务不应该和项目绑定在一起,而是应该建立一个单独的任务服务器。
如果是简单功能,也可以用JDK自带的Timer。
8.
Cluster Cache: Open Terracotta
被许多公司使用,据说是很强大的分布集群策略。
9.
JMX: Spring封装,MX4j
Java管理扩展,给人的感觉像是RMI一类的远程调用。
10.
OSGI: equinox, felix
有点儿反感equinox的笨重,而且equinox是否能和eclipse分离呢?能否独立使用呢?能否能嵌入自己的项目呢?
felix是apache的项目,而且有maven插件,但是看了源代码之后,感觉太不成熟了。
11.
动态语言: bsh, groovy, jruby, jython, rhino
bsh最简单,而且都是java语法,功能也不多。
rhino只是解析js,也没什么特别功能。
groovy被期许了很大的希望,受到多方支持,有为数不少的组件,值得考虑一下。
jruby和jython的话,语法和java相差太大了,基本等于再学一门语言。
2.3. 开发环境
1.
JDK: 5.0, 1.4, 6.0
5.0的那些特性还是很好用的,而且可以使用Retrotranslator把5.0编译的class转换成可以在1.4下运行的class。
推荐使用JRockit-27.2,据说可以解决sun jdk的perm gen内存不足问题。
6.0有点儿新了,怕出问题。
2.
Servlet Container: Tomcat-5.5, Weblogic-9/10, Jboss, Geromino, Tomcat-6.0, Glassfish, Jetty, Resin
一般人还是用Tomcat-5.5,据说Tomcat-6.0支持OSGI了而且运行方式跟之前都不同了。
Jetty还是用在集成测试中。
之后的迭代里,应该兼容Weblogic, Jboss, Geromino, Glassfish。
3.
数据库: Hsqldb, Mysql, H2database, Derby, Oracle, SQLServer
采用hsqldb作为嵌入式数据库,可与工程绑定发布,用户下载体验版后不需要额外安装数据库,减少了配置出错的机会。
考虑H2database和Derby,似乎H2功能更强力,Derby出身名门但是不支持commit是个问题。
Mysql是必须要支持的,因为是免费中使用特别广的。
SQLServer也是国内很多地方使用的中型数据库。
Oracle有很多人迷信,的确也是非常常用的大型数据库。
Hibernate本身支持多数据库,包括Mysql, SQLServer, Oracle等,未来替换成企业数据库也不是问题。
2.4. 测试工具
1.
单元测试: JUnit-3, JUnit-4, TestNG
JUnit-3。经典单元测试工具,应用很广,基本所有工具都支持。
JUnit-4有点儿新,新功能不太清楚。
TestNG据说很厉害,但不太熟悉。
js的单元测试工具 jsunit不知如何应用。
2.
Mock: EasyMock, JMock, Spring-test
EasyMock是老牌了,不需要继承特定的超类。
JMock需要继承特定超类,属于新框架。
Spring-test里提供了很多对付servlet里接口的测试类。它还提供了许多常用的测试基类,可以缓存xml配置并支持事务。
3.
测试覆盖率: Cobertura, Clover
Cobertura发展至今,界面和功能已经接近Clover了,开源并且没有古怪的协议约束,Maven2上的配置也比Clover更简便。
4.
Web集成测试: Selenium
Selenium是一款被众口称赞的集成测试工具,使用Firefox的插件录制测试,然后可以翻译成多种平台语言进行自动化测试。
同类产品还有httpunit和jwebunit。DBUnit可以帮助维护数据库中测试数据的完整,但是无法处理表间双向外键的情况。
可以使用Maven2插件进行测试,但是问题是一直没有发布1.0,一直只能使用1.0-SNAPSHOT。
5.
WebService测试: SOAPUI
据说是唯一的WebService测试工具。
6.
压力测试: JMeter
JMeter听过但是没用过。
2.5. 项目管理
1.
UML: Enterprise Architecture, Rose 2003, Visio, StarUML
EA不是免费的。
Rose是名门。
Visio是画图挺方便。
StarUML是免费开源方案。
2.
项目部署工具: Maven2, Ant
Ant更灵活,但是对于大规模项目,自己写build.xml再配置所有的插件和各种流程太麻烦了。而且要借助ivy才好管理依赖。
Maven2拥有规范的目录结构和流程体系,拥有更易用的插件,还可以统一管理jar依赖,它支持多种插件,进行自动打包,测试,代码分析,生成报表。。问题是从外网下载依赖的时候受网速影响太大,一旦遇到外网缺失的依赖更是无可奈何,必须搭建内部repo。Maven2的一个问题,在于不知道如何把这么巨大的一个xml文件拆分成多个可以复用的模块。所以也只好采用这种parent的继承关系对所有的依赖和插件进行管理。
3.
持续集成: CruiseControl, Hudson
cc是老牌劲旅,但是界面也太难看了。
Hudson是日本人写的,界面漂亮,所有配置都可以直接通过界面配置。
4.
代码规范: Jalopy, checkstyle
Jalopy用来美化代码,sf.net上的开源项目已经好多年没有更新了,最新的jalopy已经变成了收费的商业项目。不过我们使用几年前的免费项目就足够了。
把Checkstyle的规范与Jalopy的美化规范调节一致,就可以放心编写代码了。
5.
代码检测: PMD, Findbugs, JavaNCSS, Taglist, Jdepend
PMD, CPD帮助我们检测无用的代码和重复的代码。
Findbugs检测代码中的缺陷。
JavaNCSS计算有效代码行数。
Taglist统计代码中的特定标记。
Jdepend用于统计包之间的依赖性。
6.
版本控制,缺陷跟踪和WIKI: SVN, JIRA, Confluence
Subversion作为版本控制工具,JIRA作为缺陷管理,Confluence提供资源库平台。
7.
数据库版本控制: DBDeploy
DBDeploy让数据库脚本也可以实现版本控制。咱们基于dbdeploy扩展的dbside,可以提供db:migrate, db:rollback, db:view等功能。
使用Hibernate-tools从数据库反向生成领域模型。
8.
Web服务器控制: Cargo
据说可以统一控制各种Web服务器,比如Tomcat, Jboss, Weblogic
2.6. 杂项
1.
JDK-5.0
2.
公共Utils工具类。
3.
日志。
4.
缓存。
5.
JavaMail。
6.
UTF-8与国际化。
7.
异常处理。
发表评论
-
浅析Static用法解析java语言
2013-05-08 10:32 813在类中定义的数据成为 ... -
httpclient报异常
2013-03-17 21:14 3349Exception in thread "main& ... -
(转载)java synchronized详解
2013-01-25 10:44 772java synchronized详解 记下来,很重要。 ... -
JDBC Connection接口实现ResultSet的方法
2013-01-24 15:27 1148JDBC Connection接口实现Resu ... -
基于JDBC的数据库连接池高效管理策略
2013-01-24 08:43 747基于JDBC的数据库连接池高效管理策略 发布时间:2 ... -
关于一个大型WEB系统架构设计和技术选型的讨论摘录
2013-01-23 09:06 1005关于一个大型WEB系统架 ... -
HTTP Status 405 - HTTP method GET is not supported by this URL
2012-11-30 13:25 1365出现错误的原因: 1,继承HttpServlet的Ser ... -
JVM内存资源耗尽,有解决方案吗?
2012-09-24 09:09 975去了趟sun,知道为什么了,heap,stack都有大小限制. ... -
转载 :网站并发测试工具
2012-09-21 09:33 950转载 :网站并发测试工 ... -
获取客户端Ip地址网上方案总结
2012-09-09 11:03 1096客户端: <script language=" ... -
对象与JSON之间的转换
2012-09-04 10:13 945JSON-lib这个Java类包用于把bean,map和XML ... -
调用JSONArray.fromObject(stss)出现java.lang.reflect.InvocationTargetException错误
2012-09-03 12:01 3731调用JSONArray.fromObject(stss)出现j ... -
How Tomcat Work——Tomcat 的默认连接器
2012-08-28 07:48 782注意: 本章中提及的“ ... -
Socket用法详解-----转载
2012-08-24 09:22 1615Socket用法详解 原文:ht ... -
数据结构与算法——数组实现Stack代码
2012-08-17 20:33 904package com.part02; publ ... -
数据结构与算法——简单排序
2012-08-14 21:13 849public class Sort { //存值 ... -
EL表达式取值
2012-07-23 16:55 1444EL表达式取值 1.EL表达式的语法格式很简单: 以前 ... -
Java基础学习------Vector类
2012-07-16 09:47 970一、定义 Vector 类可 ... -
Java基础学习------字符串、String类、StringBuffer类、StringBuilder类总结
2012-07-14 15:09 948一、定义: 字符串是字符的序列、它可以包含字母、数字和其 ... -
java字符串与整数之间的互相转换
2012-07-12 09:32 1639java字符串与整数之间的互相转换 1、如何将字符串S ...
相关推荐
Umi-OCR-main.zip
基于springboot+Web的毕业设计选题系统源码数据库文档.zip
基于springboot校外兼职教师考勤管理系统源码数据库文档.zip
58商铺全新UI试客试用平台网站源码
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于SpringBoot的口腔诊所系统源码数据库文档.zip
数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/143956923
3-240P2162218.zip
网络安全 基于Qt创建的Linux系统下的浏览器.zip
C++ 类和对象:多态-练习题目2(制作咖啡和茶叶)
基于springboot+J2EE在线项目管理与任务分配中的应用源码数据库文档.zip
简介本项目提供了一个在51单片机上运行的简单操作系统,旨在帮助学习者深入理解操作系统的基本原理和任务调度机制。该操作系统通过汇编和C语言编写,实现了任务调度、中断处理等核心功能,并提供了详细的源代码和注释,方便学习和实践。
本文将深度卷积神经网络(CNN)设计实现一个复杂结构的生成模型,旨在通过多阶段的编码器-解码器结构,能够有效地将灰度图像转换为彩色图像。最后,本文将实现一个简单的Web应用,用户可以通过上传灰度图像,应用会使用预训练的Caffe模型对其进行颜色化,并将结果返回给用户。 1.模型设计:模型由多个卷积层、ReLU激活函数和批归一化层组成,通过前向传播函数将输入的灰度图像(L通道)转换为彩色图像(ab通道)。如果指定了 pretrained=True,则会自动下载并加载预训练的模型权重。 2. 系统通过Flask框架提供了一个Web应用,用户可以上传灰度图像,系统会自动将其转换为彩色图像,并在网页上显示结果。整个过程包括文件验证、图像处理、颜色化预测和结果展示,具有较高的实用性和用户体验。
一个JAVA图形化的、联网的五子棋游戏.zip javaweb
KWDB 是一款面向 【AIoT 场景】的【分布式多模数据库】,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。
页面数量:7页 网页主题:网站模板、酒店网站模板、官方网站模板 网页页面:首页、关于我们、相关服务、服务详情、在线博客、博客详情、在线留言 页面实现元素:加载动画、滚动加载、主题切换、导航栏 、轮播图、图文列表、图片切换、 文字列表、 按钮悬停、图片悬停、表单 实现技术:HTML、CSS 、JQuery 源码样式及js文件均分开存放,所有内容仅供初学者学习参考
内容概要:本文档提供了详细的 Neo4j 安装与配置指南,涵盖 Windows、Linux 和 Mac 系统的安装步骤。具体包括下载、安装、启动服务、修改配置文件(如端口配置、远程访问和内存限制)、设置管理员密码以及基本的 Cypher 查询语言使用方法。同时,还提供了一些常见问题及其解决方案。 适合人群:数据库管理员、软件开发人员、系统管理员。 使用场景及目标:①帮助初学者快速掌握 Neo4j 的安装与配置;②适用于需要搭建和使用图数据库的项目;③为已有用户解决常见问题。 其他说明:本文档不仅包含了基础的安装和配置流程,还提供了实际操作中可能遇到的问题及其解决方法,有助于提高使用者的实际操作能力。
基于SpringBoot+Vue的软件产品展示销售系统源码数据库文档.zip
《书戴嵩画牛》教学课件.pptx
20届智能车 【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。