`
learnworld
  • 浏览: 168224 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
在初始化主线一文中,我们详细分析了框架的初始化过程。本文将从Struts的另外一条主线出发,分析框架的实现原理。上文的初始化主线是一个铺垫,它将框架运行时需要的数据和组件准备完毕,为请求处理主线打下基础。本 ...
在Struts1整体概览和核心组件一文中,我们提到了Struts1框架的两条主线:初始化主线和请求处理主线,本文将探寻Struts1框架初始化这条主线。本文使用的Struts版本为1.2.8, 不同版本会略有差异,1.3.x系列对请求处理进行优化,差 ...
       今年12月Apache官方正式宣布Struts1 EOL( End-of-Life),标志着这个里程碑式的框架正式告别历史舞台。从Struts1第一版发布,至今已十来余年,Apache在2008年底发布了最后一个版本1.3.10。这几年随着Struts2和Spring MVC等框架的红红火火,Struts1已被人慢慢淡忘。 从今天的角度来看Struts1,或许你能提出一堆设计上的问题,但每个框架背后都有特定的历史背景和存在价值,Struts1也不例外。因为手上维护的遗留项目中目前还在使用Struts1,加上最近给团队分享一些web开发基础知识,所以有机会重拾Struts1,期间 ...
最近想注册一个域名,使用万网尝试了很多域名,基本都已被注册。之前听说双拼域名很火,所以想写个脚本,看看哪些双拼域名还未被注册。   一、查询接口 网上搜索了一下,万网的域名查询接口比较简单易用,查询URL格式为: http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=aaa.com 返回值及含义: 210 : Domain name is available 211 : Domain name is not available 212 : Domain name is invalid 214 : Unknown error   ...
好久没有更新博客了,最近项目也接近尾声了,今天记录一个case处理过程。   一、问题描述 1. 异常信息   java.lang.OutOfMemoryError: Java heap space java.io.ByteArrayOutputStream.<init>(Unknown Source) org.apache.commons.fileupload.DeferredFileOut ...
1. 背景 目前维护的产品使用jackson处理json,现整理一下jackson相关资料,希望对初次接触jackson的新手有所帮助。    jackson主页: http://jackson.codehaus.org/    jackson document: http://wiki.fasterxml.com/JacksonJavaDocs    JacksonInFiveMinutes: http://wiki.fasterxml.com/JacksonInFiveMinutes    本文主要内容译自JacksonInFiveMinutes,增加了部分示例,转载请注明出处。 受 ...
        缓存不算是ibatis框架的一个亮点,但理解ibatis的缓存设计和实现对我们合理使用ibatis缓存是很有帮助的。本文将深入分析ibatis框架的缓存设计和实现。缓存的使用参见官方文档:Cache Models。本文使用的ibatis版本为2.3.4。 问题 在介绍ibatis缓存设计和实现之前,我们先思考几个问题。 1. 缓存的目标是什么? 缓存中存放哪些数据? 2. 缓存数据的生命周期是怎样? 何时创建? 何时更新? 何时清理? 3. 缓存数据的作用域是怎样? Session? 应用范围? 4. 有哪些缓存管理策略? 如何加载策略配置? 如何使用这些策略? 5. 缓存ke ...
        动态SQL是ibatis框架的一个重要特性,本文将深入分析ibatis框架中动态SQL的实现原理。动态sql的使用参见官方文档:Dynamic SQL。本文使用的ibatis版本为2.3.4。 问题 在介绍动态SQL的实现原理之前,让我们先来思考几个问题。 1. 为什么需要动态SQL? 通过动态sql可以提高运行程序的灵活性,使我们可以方便地实现多条件下的数据库操作。 2. 如何描述动态SQL? 对于变化的数据,通常是封装在配置文件中。对于动态SQL中的不同条件,可以采用不同标签表示其含义。通过各种条件标签的组合,描述需要表达的语义。 3. 如何实现动态SQL? 首先采用条 ...
        在ibatis整体设计和核心流程一文中,我们提到了ibatis框架中sql的执行过程,sql执行前后有两个重要步骤: 参数对象映射到sql执行参数,sql执行结果映射到结果对象。本文将深入分析ibatis框架中参数和结果的映射原理。 问题 在详细介绍ibatis参数和结果映射原理之前,让我们先来思考几个问题。 1. 为什么需要参数和结果的映射? 相对于全自动的orm,ibatis一个重要目标是,通过维护POJO与SQL之间的映射关系,让我们执行 SQL时对输入输出的数据管理更加方便。也就是说,ibatis并不会为程序员在运行期自动生成SQL 执行,具体的 SQL 需要程序员编写 ...
在ibatis整体设计和核心流程一文中,我们提到了ibatis框架的初始化过程,本文将深入分析ibatis框架的初始化和配置文件解析过程。本文使用的ibatis版本为2.3.4,不同版本间会略有差异。 问题 在详细介绍ibatis初始化过程之前,让 ...
本文主要从ibatis框架的基本代码骨架进行切入,理解ibatis框架的整体设计思路,各组件的实现细节将在后文进行分析。 背景 介绍ibatis实现之前,先来看一段jdbc代码: Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/learnworld"; Connection con = DriverManager.getConnection(url, "root","learnworld" ...
        从jdk1.5开始,java.util.concurrent提供了在并发编程中很常用的实用工具类,包括几个小的、已标准化的可扩展框架,以及一些提供有用功能的类。没有这些类,并发功能会很难实现或实现起来冗长乏味。本文将关注j.u.c中提供的四种同步器: CountDownLatch, CyclicBarrier, Semaphore, Exchanger,它们用于辅助实现一些常见的同步场景。下面将分别介绍java并发包中的每种同步器使用方法和常见场景。 一、CountDownLatch 1. 功能 用于同步多个线程的完成操作,让先完成的线程进行等待,直至所有线程完成。 2. 使 ...
一、背景        在生产环境中可能经常遇到各种问题,定位问题需要获取程序运行时的数据信息,如方法参数、返回值、全局变量、堆栈信息等。为了获取这些数据信息,我们可以通过改写代码,增加日志信息的打印,再发布到生产环境。通过这种方式,一方面将增大定位问题的成本和周期,对于紧急问题无法做到及时响应;另一方面重新部署后环境可能已被破坏,很难重新问题的场景。 二、BTrace功能        BTrace天生就为解决这类问题而来,它可以动态地跟踪java运行程序。通过hotswap技术,动态将跟踪字节码注入到运行类中,对运行代码侵入较小,对性能上的影响可以忽略不计。        BTrace在使 ...
一、概述            程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志、堆dump文件、线程dump文件、GC日志等。通过虚拟机监控和诊断工具可以帮忙我们快速获取、分析需要的数据,进而提高问题解决速度。 本文将介绍虚拟机常用监控和问题诊断命令工具的使用方法,主要包含以下工具: jps显示系统中所有Hotspot虚拟机进程jstat收集Hotspot虚拟机各方面运行数据jstack显示虚拟机的线程栈信息jinfo显示虚拟机的配置信息jmap用于生成虚拟机的内存快照信息 以上工具的官方文档地址: http://docs.oracle.com/javase/1.5. ...
一. 现象 今天项目搭建测试环境时,启动apache报错,错误日志如下: [wolf@ccbudev150133x bin]$ ./startws Start server copy ...... OK! Start JBoss configuration copy ...... OK! [color=red](13)Permission denied:[/color] make_sock: could not bind to address [::]:80 (13)Permission denied: make_sock: could not bind to address 0. ...
Global site tag (gtag.js) - Google Analytics