- 浏览: 26111 次
- 性别:
- 来自: 杭州
最新评论
文章列表
由于不同对象的生命周期不一样,因此在JVM的垃圾回收策略中有分代这一策略。本文介绍了JVM分代垃圾回收策略的目标,如何分代,以及垃圾回收的触发因素。
JVM分代垃圾回收策略的基础概念
为什么要分代
JVM分代垃圾回收策 ...
1、悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。
2、乐观锁( Optimistic Locking )
相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。
...
解读mysql时间函数sysdate()和now()
- 博客分类:
- DB
解读mysql时间函数sysdate()和now()
NOW()
返回当前日期和时间值,其格式为 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS , 具体格式取决于该函数是否用在字符串中或数字语境中。
mysql> SELECT NOW();
-> '1997-12-15 23:50:26'
mysql> SELECT NOW() + 0;
-> 19971215235026
在一个存储程序或触发器内, NOW() 返回一个常数时间,该常数指示了该程序或触发语句开始执行的时间。这同SYSDATE() ...
iBatis SqlMap的配置总结
SqlMap的配置是iBatis中应用的核心。这部分任务占据了iBatis开发70%的工作量。
1、命名空间:
<sqlMap namespace="Account">
在此空间外要引用此空间的元素,则需要加上命名空间名。
2、实体的别名:
<typeAlias alias="Account" type="com.lavasoft.ibatissut.simple.domain.entity.Account"/>
如果有用到的全名的地方,可以 ...
常用快捷操作:
Ctrl+Shift+F 格式化代码
Alt + / 代码辅助
Ctrl+Shift+O 自动导入你现在所写代码所用到的类。
Ctrl+Shift+Space 参数提示\
Ctrl+shift+r open resource
Ctrl+shift+t open type
Ctrl+t 打开选中实例的层次结构
调试部分:
F3 跳转到类、变量的声明
单步返回 F7
单步跳过 F6
单步跳入 F5
单步跳入选择 Ctrl+F5
调试上次启动 F11
继续 F8
使用过滤器单步执行 Shift+ ...
在线程中使用共享资源时,能够保证共享资源在任何时候都是原子的、一致的,这样的线程就是线程安全的线程。
共享资源是多线程中每个线程都要访问的类变量或实例变量,共享资源可以是单个类变量或实例变量,也可以是一组类变量或实例变量。多线程程序可以有多个共享资源。下面描述他们之间的一对多关系(*表示多):
多线程程序(1)----共享资源(*)----类变量或实例变量(1…*)
只有类变量和实例变量可以成为共享资源。
所谓原子性,是指一个共享资源的所有属性在任何时刻都是一起变化、密不可分的。
所谓一致性,是指一个共享资源的所有属性在变化之后一定会达到一个一 ...
HashMap遍历的两种方式
- 博客分类:
- java-基础知识
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
效率高,以后一定要使用此种方式!
第二种:
Map map = new HashMap();
Iterator iter = map.keySet().iterator();
whi ...
Servlet的线程安全问题主要是由于实例变量使用不当而引起的
如:一个Servlet实例化全局变量PrintWriter output;在service方法将其赋值为用户的输出。当一个用户访问该Servlet时,程序会正常的运行,但当多个用户并发访问时,就可能会出现其它用户的信息显示在另外一些用户的浏览器上的问题。这是一个严重的问题。是由于实例变量不正确的使用是造成Servlet线程不安全。
解决办法:
1、实现 SingleThreadModel 接口
该接口指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法将 ...
要使用json来传输数据,必须将所承载的数据转换成json的格式。
json的格式如下: JSON建构于两种结构:
1. “名称/值”对的集合。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
2. 值的有序列表。在大部分语言中,它被理解为数组(array)。 这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成 ...
如果一个java 类没有显式定义没有参数的构造器,将有一个默认缺省的构造器。如果定义了一个有参数的构造器,那么原来的缺省的构造器将不在有效。
public class A{
}
此时如果用 new A(); java 编译器将使用缺省的构造器。
public class A{
public A(int i){
}
}
如果此时用 new A(); 将产生一个编译错误,因为此时显式定义了,一个有参数的构造器。
在Java 方法中传递参数,对于基本类型来讲传递的是值参数,相当于建立的一个参数的拷贝,不影响原来变量的值。
在引用方法中可以改变传递对象的内容,但对象引用从来不会改变。
public class tt{
public static void main (String args[]){
A aa = new A();
aa.num =5;
tt t = new tt();
System.out.println("11 aa="+aa + "num="+aa.num);
t.test(aa);
Sys ...
class Employee
|
class Manager
向上校正,总是允许的,Manager 直接使用父类Employee 的方法。
向下校正,必须用instanceof 检验,才能将一个Employee 转换为Manager 对象。
public void test(Employee e){
if (e instanceof Manager){
Manager m = (Mnager)e;
...
}
}
(1). break 退出整个循环
(2). countinue 只中断本次循环
(3). return 退出本方法,跳到上层调用方法。如果本方法的返回类型不是void,就需要提供相应的返回值
用于存储一组相同类型数据的数据结构。
1. 可以使用以下三种方式声明数组:
(1). 数据类型[ ] 数组名; //声明一个数组
(2). 数据类型[ ] 数组名 = new 数据类型[大小]; //创建一个数组
(3). 数据类型[ ] 数组名 = {值 1,值 2,…值 N}; //声明,创建并初始化
(4). 一个泛型数组的数组正确的初始化:
ArrayList<Integer> a1 = new ArrayList<Integer>();
2. 可以通过整型下标访问数组的 ...
==用来判断两个引用是否是指向同一个变量的,equals是比较两个变量的内容是不是一样的。
也就是说:
==是比较的指针或者引用,就是内存地址是不是相同
Equals比较的是值相同不相同
1)比较方式角度:
= =是面向过程的操作符;equals是面向对象的操作符
= =不属于任何类,equals则是任何类(在Java中)的一个方法;
我们可以1)Primitive1 (基本类型)= = Primitive2(基本类型);
2)Object Reference1(对象引用)= = Object Reference2(对象引用)
3)Object Refer ...