自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 菜鸟 Spring 源码解读 推荐流程

Spring源代码解析(一):IOC容器:http://www.javaeye.com/topic/86339Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.javaeye.com/topic/86594Spring源代码解析(三):Spring JDBC:http://www.javaeye.com/topic/87034Spring源代码解析(四...

2012-01-11 09:18:38 117

原创 深入剖析Classloader(一)--类的主动使用与被动使用

我们知道java运行的是这样的,首先java编译器将我们的源代码编译成为字节码,然后由JVM将字节码load到内存中,接着我们的程序就可以创建对象了,我们知道JVM将字节码load到内存之后将将建立内存模型(JVM的内存模型我们将在稍后阐述),那JVM是怎么将类load到内存中的呢?对了,是通过Classloader,今天我们就来深入探讨一下Classloader。首先我们来看一段诡异的代码(...

2011-12-27 22:13:49 101

原创 Java中连接字符串时是使用+号还是使用StringBuilder?

字符串是Java程序中最常用的一种数据结构之一。在Java中的String类已经重载的"+"。也就是说,字符串可以直接使用"+"进行连接,如下面代码所示: String s = "abc" + "ddd"; 但这样做真的好吗?当然,这个问题不能简单地回答yes or ...

2011-12-26 14:04:52 144

原创 转一篇有关Java的内存泄露的文章(受益哦)

1 引言 Java的一个重要优点就是通过垃圾收集器GC (Garbage Collection)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java 不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC 或JVM的问题。其实,这种想法是不正确的,因为Java 也存在内存泄漏,但它的表现与C++不同。如果正在开发的Java 代码要全天24 ...

2011-07-20 09:28:35 84

原创 Tomcat内存溢出的原因

Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: 1.OutOfMemoryError: Java heap space 2.OutOfMemoryError: PermGen space...

2011-07-19 09:41:56 77

原创 深入研究java.lang.ThreadLocal类

一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一...

2011-07-13 09:39:12 53

原创 jboss中实现跨war包session同步

跨war包session同步解决方案【功能点】不同war包间session共享【关键需求理解】多系统间实现统一登陆(单点登陆),对用户屏蔽多个独立系统的存在,给用户提供一个整体统一的系统。【实现逻辑描述】用一个类的静态hashmap域来存放公共session信息,我们可以称之为session容器,其中key为sessionID,value为一个简单SessionUser对象...

2011-06-12 23:28:31 123

原创 数据库事务锁机制的分析

锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性。各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别。目前,大多数数据库管理系统都或多或少具有自我调节、自我管理的功能,因此很多用户实际上不清楚锁的理论和所用数据库中锁的具体实现。 Microsoft SQL Server(以下简称SQL Server)作为一种中小型数据库管...

2011-06-10 23:25:23 78

原创 Hibernate的乐观锁与悲观锁

锁( locking ) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的 “锁” ,即给我们选定的目标数据上锁,使其无法被...

2011-06-10 23:17:05 73

原创 SQL语言小结和优化(整理)

上面几篇讨论的是数据库方面的事务和锁方面的一些内容,实际上我们在实际中最常用的就是基本的sql语句了,实际上我个人感觉sql很难记忆(哈哈,语法和编程语言差太多了),所以往往有时候写些复杂的sql语句就必须google一下语法了,虽然现在有不错的ORM的工具,但还是觉得简单得数据库操作使用ORM比较方便,但太复杂的应用就不太爽了,当然我们可以利用面向对象的思路把复杂的sql语句给拆分成简单的。 ...

2011-06-07 16:53:30 145

原创 数据库中事务机制的进阶使用(整理)

数据库中事务机在前面的两篇blog中,我写了些关于数据库中的锁方面的一些内容,实际上锁是和事务紧密联系的,在数据库中事务这一块是很重要,也是比较复杂的,而且各个数据库产品的实现也不太相同,所以有必要在这里详细描述一下,虽然这些很细致的内容我们在实际编程时用到的概率不是很大,但毕竟知道一些还是比较好的,万一有用的到的时候就能解决大问题了。下面是一些google到的内容的整理和总结。一 事务的...

2011-06-07 16:52:11 131

原创 SQL Server2000中死锁经验总结

虽然不能完全避免死锁,但可以使死锁的数量减至最少。将死锁减至最少可以增加事务的吞吐量并减少系统开销,因为只有很少的事务: 回滚,而回滚会取消事务执行的所有工作。 由于死锁时回滚而由应用程序重新提交。下列方法有助于最大限度地降低死锁: 按同一顺序访问对象。 避免事务中的用户交互。 保持事务简短并在一个批处理中。 ...

2011-06-07 16:51:07 90

原创 数据库中锁机制的学习

我们在做很多项目时都要涉及到数据库,特别是一些比较大型的web项目,更是有较大的并发处理,所以对数据库的操作有可能会产生死锁,对于数据库的死锁,一般数据库系统都会有一套机制去解锁,一般不会造成数据库的瘫痪,但解锁的过程会造成数据库性能的急速下降,反映到程序上就会造成程序的反应性能的下降,并且会造成程序有的操作失败。虽然一般对于数据库级别的锁定于解锁程序员不会在程序中用代码编程去处理,但是对于其的...

2011-06-07 16:49:04 92

原创 开源框架spring详解-----AOP的深刻理解

开源框架spring详解-----AOP的深刻理解AOP的理解 1、AOP的概述 AOP是一种不同于OOP(面向对象编程)的编程模式,它不是OOP的替代,而是对OOP的一种有益补充。 2、spring AOP的原理 3、spring AOP的实现 ...

2011-05-26 22:13:19 213

原创 struts2核心工作流程与工作原理

1. Struts2架构图这是S truts2官方站点提供的Struts 2 的整体结构。[img]http://img1.51cto.com/attachment/201008/190330878.png[/img]2. Struts2部分类介绍这部分从Struts2参考文档中翻译就可以了。ActionMapper ActionMapper其实是Http...

2011-05-26 15:35:29 131

原创 Spring注入方式及用到的注解 -----@Component,@Service,@Controller,@Repository

注入方式:把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中,注入时不要new 这个注入的类,因为spring会自动注入,如果手动再new的话会出现错误,然后属性加上@Autowired后不需要getter()和setter()方法,Spring也会自动注入。至于更具体的内容,等对注入的方式更加...

2011-05-26 15:04:52 129

原创 Java中的native关键字浅析(Java Native Interface)

JNI是Java Native Interface的 缩写。从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计 的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。 使用java与本地已编译的代码交互,通常会丧失平...

2011-05-21 23:13:07 102

原创 Volatile 变量

Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。 锁提供了两种主要特...

2011-04-26 17:01:55 83

原创 Java对象的强、软、弱和虚引用

1.Java对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。图1为对象应用类层次。 图1...

2011-04-26 16:04:36 123

原创 Web 应用程序常见漏洞 CSRF 的入侵检测与防范

简介: 互联网的安全问题一直存在,并且在可预见的未来中没有消弭的迹象,而在软件开发周期中,加入对产品安全问题的检测工作,将极大的提升对应安全问题解决的成本,对维护一个好的产品形象至关重,在竞争愈烈的网络应用产品中的生命力也将更长。本文要介绍的跨站请求伪(CSRF)在众多的攻击手段中,更具备隐蔽性,同时有更高的危害性。笔者将对其的基本特性,攻击手段,危害及防范手段,以及如何使用 Rational A...

2011-04-23 15:00:28 291

原创 详解XSS跨站脚本攻击

一、什么是XSS攻击XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意 用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。如何寻找XSS漏洞就个人而言,我把XSS攻击分成两类,一类是来...

2011-04-23 13:46:53 220

原创 CSRF攻击原理解析

0×00. 前言在Web程序中普通用户一般只在Web界面里完成他想要的操作,Web程序接受的正常客户端请求一般来自用户的点击链接和表单提交等行为,可是恶意攻击者却可以依靠脚本和浏览器的安全缺陷来劫持客户端会话、伪造客户端请求。0×01. CSRF攻击分类CSRF是伪造客户端请求的一种攻击,CSRF的英文全称是Cross Site Request Forgery,字面上的...

2011-04-22 10:29:24 79

原创 selenium 初步体检之富文本框操作

public class LoginTest extends TestCase { private Selenium selenium; private String URL = "http://whbbs.soufun.com/soufun_forum/login.aspx?ErrorCode=1&backurl=http://whbbs.soufun.com/soufun_forum/...

2011-04-20 20:10:05 205

原创 webx

webx 学习笔记。

2011-03-05 17:54:21 101

原创 Java读带有BOM的UTF-8文件乱码解决方法

Java default io reader does not recognize all BOM markers. It it known to be fixed in JDK6, but I havent tested it yet. You can use UnicodeReader class to overcome problems and auto-recognize bom mark...

2011-03-02 11:12:21 289

原创 java sftp tools

import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.util.Iterator;import java.util.Properties;import java.ut...

2011-02-24 13:30:10 140

原创 HtmlUnit

IntroductionThe dependencies page lists all the jars that you will need to have in your classpath. The class com.gargoylesoftware.htmlunit.WebClient is the main starting point. This simulates a we...

2010-10-18 22:27:32 92

原创 Spring的三种依赖注入的方式

依赖注入有三种方式:1接口注入:接口注入的意思是通过接口来实现信息的注入,而其它的类要实现该接口时,就可以实现了注入:下面是代码Java 代码 1. public interface Manager{ 2. public void manage(Business business); 3. } 4. 5. public...

2010-06-02 10:27:11 118

原创 Struts.xml 配置详解

...

2010-06-02 10:16:32 71

原创 Struts-config.xml配置文件讲解

转载 Struts-config.xml配置文件讲解 收藏Struts的核心是struts-config.xml配置文件,在这个文件里描述了所有的Struts组件。在这里包括配置主要的组件及次要的组件,下面是 struts-config.xml包含主要元素的内容:一、 struts-config.xml的主要元素:...

2010-06-02 10:14:24 109

原创 Hibernate get与load区别

get 和 load 区别load加载方法:Java代码 1. Users user = (Users)session.load(Users.class, userId); Users user = (Users)session.load(Users.class, userId); get 加载方法:Java 代码 1. Users us...

2010-06-02 10:03:13 52

原创 struts2 工作原理图

[img]http://docs.google.com/File?id=dd4s87gd_64g9264nfg[/img]上图来源于Struts2官方站点,是Struts 2 的整体结构。一个请求在Struts2框架中的处理大概分为以下几个步骤1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做A...

2010-05-26 11:01:03 71

原创 排序方法原理与语句

插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。要点:设立哨兵,作为临时存储和判断数组边界之用。实现:Void InsertSort(Node L[],int length){Int i,j;//分别为有序区和无序区指针for...

2010-05-06 01:06:59 63

适配器(adapter)模式

适配器模式的宗旨是:保留现有类提供的服务,向客户提供接口,使得原本接口不兼容而功能相同的类一起工作。客户提供接口让实现一些个功能,而我们已经有类实现了相同的功能,但是两者的接口是不兼容的。现在可以实现一个新的类,利用已有类的功能去实现客户所希望的功能。  分为类适配与对象适配。  类适配:新的类继承已有类而实现期望的接口:  class NewClass extends SomeCla...

2010-04-26 23:23:58 69

设计模式-快餐简解-【装饰模式】

饰模式应用场景举例】 比如在玩“极品飞车”这款游戏,游戏中有对汽车进行喷涂鸦的功能,而且这个喷涂鸦是可以覆盖的,并且覆盖的顺序也影响到最后车身的显示效果,假设现在喷涂鸦具有2种样式:(1)红色火焰 (2)紫色霞光如果使用“继承父类”设计这样的功能,那么类图就像如下的这样:[img]http://java.chinaitlab.com/UploadFiles_8734/200811/2...

2010-04-26 23:14:41 61

多线程编程详解

线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方...

2010-04-15 22:20:00 78

Java虚拟机类加载顺序

当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader | extension classloader | system classloader bootstrap classlo...

2010-04-15 01:14:02 174

java内存分布

在JAVA中,有六个不同的地方可以存储数据:1. 寄存器(register)。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制 ,也不能在程序中感觉到寄存器存在的任何迹象。2. 堆栈(stack)。位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存...

2010-04-15 01:03:44 59

java内存机制

Java 中的堆和栈Java把内存划分成两种:一种是栈内存,一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 ...

2010-04-15 00:55:24 68

彻底明白Java语言中的IO系统

Java的核心库java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。在具体使用中很多初学者对Java.io包的使用非常含糊,本文将详细解说关于Java.io的使用。  一. Input和Output   1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数...

2010-04-14 00:29:27 61

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除