- 浏览: 12680 次
- 性别:
- 来自: 成都
最新评论
-
gegewuqin9:
例子很好,说的也很明了
java sleep与wait方法区别
文章列表
批量导入导出测试点:
导出:
1、导出文件名检查;
2、导出文件打开数据展示正常;
3、大数据量导出:文件分页拆分自动分页下载;
4、大数据量导出性能测试:最多支持多少条导出,是否有超时回退机制;
5、如果导出的是模板,则需测试直接使用导出的模板,并填充合法数据后,用当前文件再导入,观察是否正常导入。
导入:
1、每个字段检查:(有的字段要求要在数据库中存在,比如组,角色,有的字段要求不能存在,比如账号)
1、不填;
2、非法字段:中文、大小写英文、数字,非法字符;
3、不在枚举范 ...
一、基本命令:
mvn clean compile:编译
mvn clean test:测试,会先自动compile
mvn clean package:打包,会先自动test
mvn clean install:安装到“本地仓库”中,供其他应用用
mvn clean deploy:运行清理和发布(发布到私服上面)
2018目标,立贴为证:
目标:
1、工资再上一个台阶;
2、房子装修好;
3、身体调养好,怀宝宝;
4、工作上,对业务研究更深入,架构原理、测试架构、理论都有更深入的学习和理解。
改掉坏习惯:
1、不扣鼻,除掉鼻炎的隐患因素;
2、戒掉游戏,戒掉手机依赖症;
3、戒掉拖延;
4、戒掉做事不专注;
做事8字真言:目标,专注,坚持,方法。
java动态代理与反射
引言:
java的代理分为静态代理与动态代理,静态代理有其固有缺点,即代码量大,缺乏灵活性。故我们主要关注的还是动态代理。而动态代理是基于java反射机制实现的一种代理模式。
动态代理的用处:动态代理的用处很广。比如,我们常用的spring的AOP,即是通过动态代理技术来实现的。
要理解动态代理,首先需要了解java反射的基本概念及API方法。在这里假设你已经知道java反射的基础知识,在这个前提下,我们通过一个例子程序,即可说明动态代理的实现原理:
1、java执行时是动态加载class的,不是一次性加载完。
2、classloader的分层:
最上一层是bootclassLoader,然后是扩展(Extesion classloader)、应用(Application classLoader,用户自定义的class)、其他loader
注意:classLoader在load class的时候首先找上一层的loader是不是load过了,如果已经load了,就不会再次load。
作用: 安全性好!比如:自己写的String.class
Java常用设计模式总结
单例,又分5种:
1、初级懒汉模式,只适合单线程环境(不好)
2、懒汉式,多线程的情况可以用(性能不好,每个线程执行到时都会被资源的锁给限制)
3、懒汉式,双重校验锁(还可以)
4、饿汉模式(天生线程安全,建议使用)
缺点:没有lazy loading的效果,从而降低内存的使用率
5、静态内部内。(建议使用)
优点:达到了lazy loading的效果,即按需创建实例
(原文转自:http://blog.csdn.net/u011546655/article/details/52170470)
1、概述
在Java中,内存分为两种,一种是栈内存,另一种就是堆内存。
2、堆内存
1.什么是堆内存?
堆内存是是Java内存中的一种,它的作用是用于存储Java中的对象和数组,当我们new一个对象或者创建一个数组的时候,就会在堆内存中开辟一段空间给它,用于存放。
2.堆内存的特点是什么?
我们都知道Java语言是完全面向对象的,在java中,所有的对象都是继承于Object类。其 equals 方法比较的是两个对象的引用指向的地址,hashcode 是一个本地方法,返回的是对象地址值。Ojbect类中有两个方法equals、hashCode,这两个方法都是用来比较两个对象是否相等的。
为何重写 equals方法的同时必须重写 hashcode方法呢
先看看一个java的约定:
Java中equals()和hashCode()有一个契约:
1. 如果两个对象相等的话,它们的hash code必须相等;
2. 但如果两个对象的hash code相等的话,这两个对象不一 ...
(转自:http://blog.csdn.net/liuxiao723846/article/details/53908870)
很多时候为了重用我们会想要重置一个ArrayList,这里的重置是指清空列表或移除列表所有的元素。在Java中,有两个方法可以帮助我们实现重置clear或removeAll。在列表长 ...
java基础数据类型自动装箱拆箱
一、定义:
public class test {
public static void main(String[] args) {
Integer a = 3;//装箱
int b = a;//拆箱
}
}
查看Integer的源码,可知:
基础类型的包装类,装箱,实际调用的是包装类的valueof方法;
拆箱,调用的是包装类的:xxxValue方法;
比如对于Integer,装箱:Integer.valueOf(int i);拆箱:Integer.intValue() ...
ArrayList & LinkedList 区别对比:
一、源代码:
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E&g ...
容器知识总结:
1、Collection接口
Collection接口中的常用方法:
Size()
isEmpty()
clear()
contains()
add()
remove()
iterator():返回其指针
2、List(ArrayList & LinkedList):继承自Collection,增加了以下常用方法:
vim的模式:
正常模式(按Esc或Ctrl+[进入) 左下角显示文件名或为空
编辑模式(按i或a键都可以进入) 左下角显示--INSERT--
可视模式(不知道如何进入) 左下角显示--VISUAL--
vim内部常用命令(以下命令,除了2、编辑命令外,其余都是在正常模式下直接输入命令):
1、查找:"/" + 查找内容
2、编辑:按a,然后开始添加
3、删除:删除行:dd
4、替换:
:s/old/new/ : 用old替换new,替换当前行的第一个匹配(光标必须先移动到那一行)
:s/old/new/g : 用old替换new, ...
先给出w3c的对比:
GET
POST
后退按钮/刷新
无害
数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
主要区别如下:
1、每个对象都有一个锁来控制同步访问,Synchronized关键字可以和对象的锁交互,来实现同步方法或同步块。sleep()方法正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行(注意:sleep方法只让出了CPU,而并不会释放同步资源锁!!!);wait()方法则是指当前线程让自己暂时退让出同步资源锁,以便其他正在等待该资源的线程得到该资源进而运行,只有调用了notify()方法,之前调用wait()的线程才会解除wait状态,可以去参与竞争同步资源锁,进而得到执行。(注意:notify的作用相当于叫醒睡着 ...