- 博客(20)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 struts1源码分析(三)请求处理主线
在初始化主线一文中,我们详细分析了框架的初始化过程。本文将从Struts的另外一条主线出发,分析框架的实现原理。上文的初始化主线是一个铺垫,它将框架运行时需要的数据和组件准备完毕,为请求处理主线打下基础。本文基于Struts1.2.8版本,1.3.x系列的差异性将另文说明。 [请求处理接口]在整体概览和核心组件一文中,我们提到了Struts框架抽象出统一的业务逻辑基类,用户可以...
2014-01-04 13:34:49 168
原创 struts1源码分析(二)初始化主线
在Struts1整体概览和核心组件一文中,我们提到了Struts1框架的两条主线:初始化主线和请求处理主线,本文将探寻Struts1框架初始化这条主线。本文使用的Struts版本为1.2.8, 不同版本会略有差异,1.3.x系列对请求处理进行优化,差异性将另文叙述。 [问题]在介绍初始化过程之前,我们先来思考几个问题。1. 如何在web应用中植入框架的初始化过程?2. 如何...
2014-01-01 01:30:41 181
原创 struts1源码分析(一)整体概览和核心组件
今年12月Apache官方正式宣布Struts1 EOL( End-of-Life),标志着这个里程碑式的框架正式告别历史舞台。从Struts1第一版发布,至今已十来余年,Apache在2008年底发布了最后一个版本1.3.10。这几年随着Struts2和Spring MVC等框架的红红火火,Struts1已被人慢慢淡忘。 从今天的角度来看Struts1,或许你能提出一堆设计上的...
2013-12-29 22:02:39 328
原创 多线程批量检测未注册域名
最近想注册一个域名,使用万网尝试了很多域名,基本都已被注册。之前听说双拼域名很火,所以想写个脚本,看看哪些双拼域名还未被注册。 一、查询接口网上搜索了一下,万网的域名查询接口比较简单易用,查询URL格式为: http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=aaa.com返回值及含义:210 : Domain nam...
2013-10-28 17:27:45 605
原创 Struts文件上传报OutOfMemoryError问题分析
好久没有更新博客了,最近项目也接近尾声了,今天记录一个case处理过程。 一、问题描述1. 异常信息 java.lang.OutOfMemoryError: Java heap space java.io.ByteArrayOutputStream.<init>(Unknown Source) org.apache.commons.fileupload....
2013-09-27 10:40:23 276
原创 jackson快速入门
1. 背景 目前维护的产品使用jackson处理json,现整理一下jackson相关资料,希望对初次接触jackson的新手有所帮助。 jackson主页: http://jackson.codehaus.org/ jackson document: http://wiki.fasterxml.com/JacksonJavaDocs JacksonInFiveMinute...
2012-08-02 15:55:40 324
ibatis源码学习(五)缓存设计和实现
缓存不算是ibatis框架的一个亮点,但理解ibatis的缓存设计和实现对我们合理使用ibatis缓存是很有帮助的。本文将深入分析ibatis框架的缓存设计和实现。缓存的使用参见官方文档:[url=http://ibatis.apache.org/docs/dotnet/datamapper/ch03s08.html]Cache Models[/url]。本文使用的ibatis版本...
2012-04-07 21:06:04 143
原创 ibatis源码学习(四)动态SQL的实现原理
动态SQL是ibatis框架的一个重要特性,本文将深入分析ibatis框架中动态SQL的实现原理。动态sql的使用参见官方文档:[url=http://ibatis.apache.org/docs/dotnet/datamapper/ch03s09.html]Dynamic SQL[/url]。本文使用的ibatis版本为[color=red]2.3.4[/color]。[...
2012-04-03 16:47:21 145
ibatis源码学习(三)参数和结果的映射原理
在[url=http://learnworld.iteye.com/blog/1447284]ibatis整体设计和核心流程[/url]一文中,我们提到了ibatis框架中sql的执行过程,sql执行前后有两个重要步骤: 参数对象映射到sql执行参数,sql执行结果映射到结果对象。本文将深入分析ibatis框架中参数和结果的映射原理。[size=medium][b]问题[/...
2012-03-18 23:10:44 244
ibatis源码学习(二)初始化和配置文件解析
在[url=http://www.iteye.com/topic/1121467]ibatis整体设计和核心流程[/url]一文中,我们提到了ibatis框架的初始化过程,本文将深入分析ibatis框架的初始化和配置文件解析过程。本文使用的ibatis版本为2.3.4,不同版本间会略有差异。[b][size=large]问题[/size][/b]在详细介绍ibatis初始化过程之前,让...
2012-03-11 00:15:38 150
ibatis源码学习(一)整体设计和核心流程
本文主要从ibatis框架的基本代码骨架进行切入,理解ibatis框架的整体设计思路,各组件的实现细节将在后文进行分析。[b][size=large]背景[/size][/b]介绍ibatis实现之前,先来看一段jdbc代码:[code="java"] Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:my...
2012-03-09 08:48:23 263
j.u.c同步器使用总结
从jdk1.5开始,java.util.concurrent提供了在并发编程中很常用的实用工具类,包括几个小的、已标准化的可扩展框架,以及一些提供有用功能的类。没有这些类,并发功能会很难实现或实现起来冗长乏味。本文将关注j.u.c中提供的四种同步器: CountDownLatch, CyclicBarrier, Semaphore, Exchanger,它们用于辅助实现一些常见的同...
2012-02-26 12:02:28 106
BTrace使用总结
[b][size=large]一、背景[/size][/b] 在生产环境中可能经常遇到各种问题,定位问题需要获取程序运行时的数据信息,如方法参数、返回值、全局变量、堆栈信息等。为了获取这些数据信息,我们可以通过改写代码,增加日志信息的打印,再发布到生产环境。通过这种方式,一方面将增大定位问题的成本和周期,对于紧急问题无法做到及时响应;另一方面重新部署后环境可能已被破坏,很难重新问题...
2012-02-11 22:43:43 220
java虚拟机常用命令工具
[size=medium][b]一、概述[/b][/size] 程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志、堆dump文件、线程dump文件、GC日志等。通过虚拟机监控和诊断工具可以帮忙我们快速获取、分析需要的数据,进而提高问题解决速度。 本文将介绍虚拟机常用监控和问题诊断命令工具的使用方法,主要包含以下工具:[table]|jps|...
2012-01-30 20:06:12 182
apache启动报错原因和解决方案
一. 现象今天项目搭建测试环境时,启动apache报错,错误日志如下:[code="java"][wolf@ccbudev150133x bin]$ ./startws Start server copy ...... OK!Start JBoss configuration copy ...... OK![color=red](13)Permission denied:[...
2011-11-04 17:37:28 2770
apache rewrite模块安装和使用
最近工作需要用到apache rewrite功能,之前本机已经安装apache,但没有安装rewrite模块。下面总结一下rewrite模块的安装过程和相关知识。本机已安装的apache版本为2.2.16,操作系统为ubuntu10.10。一、 安装过程1. 在apache源码目录下查找mod_rewrite.c文件。find . -name mod_rewrite.c2....
2011-11-01 23:54:43 686
tomcat学习系列(1)---tomcat事件处理机制
最近在阅读“how tomcat works”这本书,结合tomcat7的源码进行学习。对于学习的收获,将通过“tomcat学习系列”记录下来,和大家一起分享和交流,也算对自己学习的一种促进。闲话不多说,正文开始。 Catalina内部由多个组件组成,启动时各个组件都需要启动,关闭时需要各个组件关闭。如何协作各个组件的初始化、启动、停止、销毁等的一致性,通过各组件实现Lifecy...
2011-04-23 17:45:45 192
spring任务调度方法之Quartz
[b]一、Quartz简介[/b] Quartz是一个开放源码项目,专注于任务调度器,提供了极为广泛的特性如持久化任务,集群和分布式任务等。Spring对Quartz的集成与其对JDK Timer的集成在任务、触发器和调度计划的声明式配置方面等都非常相似。 Quartz的核心由两个接口和两个类组成:Job和Scheduler接口,JobDetail和Trigger类。不...
2010-11-01 02:40:04 106
spring任务调度方法之JDK Timer
一、基本概念任务(job):需要被调度以指定的时间间隔运行的任务单元。触发器(trigger):引发任务运行的条件。调度计划(schedule):一个任务和用来管理这个任务的一组触发器的集合。通常一个任务在他的调度计划中只有一个触发器,所以触发器和调度计划这两个概念通常可以互换。二、spring的两种任务调度方法1. JDK Timer JVM1.3版本后提供的任务调度...
2010-10-26 20:34:38 131
面向对象培训的一点感悟
参加了两天的面向对象设计培训课程,感触最大的不是学到了多少新的设计方法,而是思想上的转变。 平时我们在做需求过程中,需求方看重的是功能有没有做到,能不能按时上线;老板看重的是你做的有多快,上线后有没有故障,这是对你考核的标准;我们程序员能够控制的就是代码的质量。正是有了这些外界压力,我们往往为了赶进度,系统设计上较少,甚至“0设计”,走自己的“敏捷路线”,代码写的...
2010-10-23 21:52:26 203
指令重排序会破坏happens-before原则吗
2011-11-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人