- 博客(28)
- 收藏
- 关注
转载 购物车(cookie和session各自的优缺点)
1. cookie cookie是由服务器产生,存储在客户端的一段信息。它定义了一种Web服务器在客户端存储和返回信息的机制,cookie文件它包含域、路径、生存期、和由服务器设置的变量值等内容。当用户以后访问同一个Web服务器时,浏览器会把cookie原样发送给服务器。通过让服务器读取原先保存到客户端的信息,网站能够为浏览者提供一系列的方便,例如在线交易过程中标识用户身份、安全要求不高的
2017-04-19 23:31:07
10682
原创 java序列化
1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候
2016-11-20 11:15:14
306
转载 配置好log4j后启动tomcat后JUnit4报空指针异常
eclipse发布项目到tomcat时,默认是没有把包发布到tomcat目录下,所以需要把项目所依赖的包赋值到项目WEB-INF下的lib目录下或者也可以把项目所需要的包中的jar文件复制到tomcat目录下的lib目录下
2016-11-18 09:29:31
635
转载 Log4j.properties 属性详解
我们可以在log4j.properies配置文件看到以下属性:#定义输出级别和输出平台log4j.rootLogger=INFO,stdout,fileout#设定stdout输出平台log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4
2016-11-15 19:27:59
344
原创 log4j:WARN No appenders could be found for logger
直接写我的解决办法:在src下面新建file名为log4j.properties内容如下:# Configure logging for testing: optionally with log filelog4j.rootLogger=WARN, stdout# log4j.rootLogger=WARN, stdout, logfilelog4j.appender.
2016-11-14 23:13:01
386
转载 接口和抽象类有什么区别
接口和抽象类有什么区别你选择使用接口和抽象类的依据是什么?接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.
2016-11-12 13:03:28
245
原创 Struts的优点/缺点
优点 1,struts简单、易懂。容易被人采用,功能强大。 2,通过采用模型-视图-控制器(MVC)设计模式,使用struts可以开发使用 JAVA Servlets和javaServer Pages的高性能、面向事务的WEB应用程序。 3,struts提供的模型2体系结构,视图层-事务处理层-数据模型层,通过明确的应用程序分工
2016-11-03 15:45:50
1565
转载 java泛型的pecs法则
? extend1List apples = new ArrayList();2Listextends Fruit> fruits = apples;3fruits.add(new Strawberry());这次,代码就编译不过去了!Java编译器会阻止你往一个Fruit list
2016-10-27 16:34:07
349
转载 comparable和comparator的区别
1. Comparator 和 Comparable 相同的地方他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么一个personList,里面包含了person1, person2, persion3.....
2016-10-23 16:24:30
323
转载 java泛型中<? super String>和<? extends String> 的区别
(1) is any class which is a superclass of String (including String itself). (In this case, the only other suitable class is Object.)即包括String的父类和它本身的类。(2) (which in this specific case wouldn'
2016-10-22 17:04:22
380
原创 hashcode和equals
首先,想要明白hashCode的作用,必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。 前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。那么这里就有一个比较严重的问题了:要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢? 这就是Object.equals方法了。但是,如果每增加
2016-10-22 13:21:45
252
原创 String、StringBuilder和StringBuffer之间的区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常
2016-10-21 15:49:13
332
原创 构造方法和普通方法的区别
1.构造函数的命名必须和类名完全相同;在java中普通函数可以和构造函数同名,但是必须带有返回值。2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.3.构造函
2016-10-21 15:28:30
5071
原创 OCJP详解
QUESTION 1Given a pre-generics implementation of a method:给定下列还未使用泛型的代码:11. public static int sum(List list) {12. int sum = 0;13. for ( Iterator iter = list.iterator(); iter.hasNex
2016-10-21 14:30:17
2357
原创 Java接口的多继承
接口是常量值和方法定义的集合。接口是一种特殊的抽象类。java类是单继承的。classB extends classAjava接口可以多继承。interface3 extends interface0, interface1, interface……类不允许类多继承的主要原因是,如果A同事继承B和C,而b和c同时有一个D方法,A如何决定继承哪一个呢?但接口不存在这样
2016-10-21 13:52:33
273
原创 笔记
1.两个以上的线程可以同时死锁 如果一个线程片段会死锁,那么你就不能通过Thread.yield方法调用取消死锁2.调用wait()方法是,如果当前线程不是次对象监视器的所有者,就会报IllegeMonitorStateException错3.同步函数的锁对象是this4.一个线程对象中只能调用一次start方法
2016-10-18 16:02:56
297
原创 重载/覆盖
重载(overload): 对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系。覆盖 (override): 也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。 当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了。发
2016-10-18 16:01:19
244
原创 java中的存储区域
一、栈 在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间, 当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 每个线程包含一个栈区,每个栈中的数据(原始类型
2016-10-18 16:00:38
320
原创 向上转型和向下转型
1、父类引用可以指向子类对象,子类引用不能指向父类对象。2、把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。 如Father father = new Son();3、把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。 如father就是一个指向子类对象的父类引用,把father赋给子类引用s
2016-10-18 15:54:47
683
原创 编译时类型/运行时类型
Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型 例如: Person person = new Student();这行代码将会生成一个person变量,该变量的编译时类型是Person,运行时类型是Student。 说明一下编译时类型和运行时类型:Java的引用
2016-10-18 15:53:29
452
原创 封装、继承、多态
一、封装 封装性就是把类的属性和行为结合成一个独立的相同单位, 并尽可能隐蔽类的内部细节,对外形成一个边界,只保留有限的对外接口,使之与外部发生联系。 封装的特性使得类以外的部分不能随意存取类的内部属性,保证了程序和数据不受外部干扰且不被误用。二、继承 1、继承是实现代码复用的重要手段。 Java的继承
2016-10-18 15:51:28
301
原创 多线程七
利用Callable&Future创建线程问题: 之前遇到的的执行任务都是run方法实现的任务,而run方法是没有返回值的,我们并不知道线程什么时候执行结束。解决途径 : 如果线程执行结束之后能返回一个值,那么我们就知道线程已经之行结束了public static void main(String[] args
2016-10-18 15:49:53
242
原创 多线程六
线程池问题:在实际应用中不希望无休止的创建线程解决途径:不管有多少个任务都交给固定的线程数的线程来执行任务 可以让一个线程执行多个任务创建线程池: Executors类的 newFixedThreadPool(指定线程数) 方法
2016-10-18 15:45:56
276
原创 多线程五
(wait / notify)方法实现生产者-消费者模型 任何一个对象都拥有一个线程等待池 挂在同一个对象的线程池中的线程之间可以互相唤醒 所以wait / notify 方法是属于Object类的 wait方法的使用必须放在synchronized同步快中一、生产者类 / 消费者类 来实现 生产者
2016-10-18 15:42:26
255
原创 多线程四
利用yeild方法来实现 : 生产者-消费者模型(主动放弃cpu但又去但与竞争)cpu表示压力很大生产者类 class FlagSend implements Runnable{ int theValue; boolean flag; @Override public void run() { for (int i = 0; i < 5; i
2016-10-18 15:38:35
246
原创 多线程三
一、锁对象( ReentrantLock ) import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Test2 { public static void main(String[] args) { Output1 output = new
2016-10-18 15:34:14
299
原创 多线程二
线程的互斥操作(解决多线程共享数据问题)1. 同步块(保证某一段代码在某一时刻只能有一个线程访问) 锁(java中任何对象都是一把锁,有且只有一把钥匙) //同步函数,锁是thispublic synchronized void f(){ System.out.print("hello world");} 2. 同步函数
2016-10-18 15:26:21
279
原创 多线程一
一、创建线程方式 1、继承Thread类创建线程 a. 定义Thread类的子类,并重写该类的run方法 b. 创建Thread子类的实例 c. 调用start方法来启动线程 2、 通过Runnable接口创建线程 a. 定义runnable接口的实现类,并重写该接口的run方法
2016-10-18 15:24:15
905
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人