- 浏览: 10738 次
最新评论
文章列表
Struts1于Struts2的区别
- 博客分类:
- Struts
/**Action类Struts1要求Action类继承一个抽象类,Struts1使用抽象类编程而不是接口Struts2可以实现Action接口也可以不实现,Struts2提供一个ActionSuport基类去实现常用接口。Action接口不是必须的,任何有execute的标识的
POJO都有可能成为struts2的Action的对象
/**线程模式Struts1的Action是单例模式并且是线程安全的,仅有Action一个实例来处理所有请求。单策略模式限制了Struts1 Action能做的事。比且在开发时要
注意Action资源必须是线程安全比且是同步的。Struts2 ...
在用C或者C++处理大数时感觉非常麻烦,但是在JAVA中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。
这两个类都在java.math.*包中,因此每次必须在开头处引用该包。
Ⅰ基本函数:
1.valueOf(parament);将参数转换为制定的类型
java内部类的作用分析
- 博客分类:
- Java
提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比。内部类从表面上看,就是在类中又定义了一个类(下 ...
Servlet的生命周期
- 博客分类:
- Struts
Servlet的生命周期
Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示。
Servlet的生命周期包含了下面4个阶段:
(1)加载和实例化
...
session与cookie的区别
- 博客分类:
- Struts
session与cookie的区别
1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。 2、session中保存的是对象,cookie中保存的是字符串。 3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。 4、session需要借助cookie才能正常工作。如果客户端完全禁止cookie,session将失效。
http是无状态的协议,客户每次读取web页面时,服务 ...
详细介绍Java垃圾回收机制
- 博客分类:
- Java
垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再使用的对象。GC ...
SQL注入和SQL优化
- 博客分类:
- 数据库
1、SQL注入漏洞
由于“’1′=’1′”这个表达式永远返回 true,而 true 与任何布尔值的 or 运算的结果都是 true,那么无论正确密码是什么“Password=’1′ or ’1′=’1′”的计算值永远是 true,这样恶意攻击者就可以使用任何帐户 ...
JDK代理和CGLIB代理的区别
- 博客分类:
- Java
一.概念
代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理商跟用户打交道。如果:公司接口中有一个卖产品的方法,那么公司需要实现这个方法,而代理商也必须实现这个方法。如果公司卖多少钱,代理商也卖多少钱,那么代理商就赚不了钱。所以代理商在调用公司的卖方法后,加上自己的利润然后再把产品卖给客户。而客户部直接跟公司打交道,或者客户根本不知道公司的存在,然而客户最终却买到了产品。
专业点说:代理模式是常用的java设计模式,代理模式给某一个对象提供代理,并由代理对象控制原对象(目标对象,被代理对象)的引用。简单点说,就是通过一个工厂生成一个类的代 ...
Hibernate 缓存机制详解
- 博客分类:
- Hibernate
hibernate提供的一级缓存
hibernate是一个线程对应一个session,一个线程可以看成一个用户。也就是说session级缓存(一级缓存)只能给一个线程用,别的线程用不了,一级缓存就是和线程绑定了。
hibernate一级缓存生命周期很短,和session生命周期一样,一级缓存也称session级的缓存或事务级缓存。如果事务提交或回滚了,我们称session就关闭了,生命周期结束了。
缓存和连接池的区别:缓存和池都是放在内存里,实现是一样的,都是为了提高性能的。但有细微的差别,池是重量级的,里面的数据是一样的,比如一个池里放100个Connection连接对象,这 ...
类加载器基本概念:
类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象。
基本上所有的类加载器都是 java.lang.ClassLoader类的一个实例。
类 ...
Java虚拟机学习 - 体系结构 内存模型
- 博客分类:
- Java
一:Java技术体系模块图
二:JVM内存区域模型
1.方法区
也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大 ...
JVM内存限制和调整
- 博客分类:
- Java
堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。 堆内存分配 JVM初始分配的内存由 ...
tomcat性能优化
- 博客分类:
- tomcat
1.精简Tomcat的配置文件 1.删除不需要的管理应用和帮助应用,提高tomcat安全性。 # 删除webapps下所有文件 # rm –fr $CATALINA_HOME/webapps/* # 删除server/wenapps下所有文件 # ...
JDBC中Statement与PreparedStatement的区别
1. statement每次执行sql语句,相关数据库都要执行sql语句的编译;preparedstatement是预编译的, 采用Cache机制(预编译语句,放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来,有利于sql生成查询计划。),对于批量处理可以大大提高效率. 也叫JDBC存储过程。
例如,如果要执行两条sql语句
SELECT colume FROM TABLE WHERE colume=1;
SELECT colume FROM TABLE WHER ...
1.尽量在合适的场合使用单例
使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:
控制资源的使用,通过线程同步来控制资源的并发访问;
控制实例的产生,以达到节约资源的目的;
控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。
2.尽量避免随意使用静态变量
要知道,当某个对象被定义为stataic的变量所引用,那么GC通常是不会回收这个对象所占有的内存,如
public class A{ static B b = new B();} 此时静态变量b的生命周期与A类同步,如果 ...