
java基础知识
dengit_w
在一个圈子里,努力了不一定能成为最好的那一位,但绝对不允许自己差劲
展开
-
Set和List的区别,List和Map的区别(介绍List,Set,Map对象结构
1.List的结构特点是:List中的内容有序可重复2.Set的结构特点是:Set中的内容是无序不可重复的3.Map的结构特点是:Map中的内容是以键值对的形式存放 的,其中key不能重复,如果重复value将被覆盖原创 2017-09-13 13:55:31 · 325 阅读 · 0 评论 -
equals方法和hashCode方法
在有些情况下,程序设计者在设计一个类的时候为需要重写equals方法,比如String类,但是千万要注意,在重写equals方法的同时,必须重写hashCode方法。为什么这么说呢?请下面看一个例子:package com.cxh.test1;import java.util.HashMap;import java.util.HashSet;import java.util.Set;class转载 2017-09-25 21:38:39 · 175 阅读 · 0 评论 -
Java线程池使用与原理
线程池是什么?我们可以利用java很容易创建一个新线程,同时操作系统创建一个线程也是一笔不小的开销。所以基于线程的复用,就提出了线程池的概念,我们使用线程池创建出若干个线程,执行完一个任务后,该线程会存在一段时间(用户可以设定空闲线程的存活时间,后面会介绍),等到新任务来的时候就直接复用这个空闲线程,这样就省去了创建、销毁线程损耗。当然空闲线程也会是一种资源的浪费(所有才有空闲线程存活时间的限制),转载 2017-09-25 21:51:31 · 299 阅读 · 1 评论 -
JAVA中的GC机制详解
一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才转载 2017-09-25 22:28:46 · 263 阅读 · 0 评论 -
泛型
http://geek.youkuaiyun.com/news/detail/237839一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码:public class GenericTest {public static void main(String[] args) { List list = new ArrayList(); list.add("qqyumidi");转载 2017-09-24 20:37:56 · 189 阅读 · 0 评论 -
heap和stack有什么区别?
1.heap是堆,stack是栈。2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。3.stack空间有限,heap的空间是很大的自由区。在Java中,若只是声明一个对象,则先在栈内存中为其分配地址空间,若再new一下,实例化它,则在堆内存中为其分配地址。4.举例:数据类型 变量名;这样定义的东西在栈区。如:Object a =null;原创 2017-09-25 22:34:42 · 616 阅读 · 0 评论 -
WebService中的wsdl文件作用是什么?
传统上,我们把计算机后台程序(Daemon)提供的功能,称为”服务”(service)。比如,让一个杀毒软件在后台运行,它会自动监控系统,那么这种自动监控就是一个”服务”。通俗地说,”服务”就是计算机可以提供的某一种功能。 根据来源的不同,”服务”又可以分成两种:一种是”本地服务”(使用同一台机器提供的服务,不需要网络),另一种是”网络服务”(使用另一台计算机提供的服务,必须通过网络才能完成)。转载 2017-09-25 16:12:12 · 3546 阅读 · 0 评论 -
为什么要使用单例模式?
1、避免在开发程序的时候,创建出一个类的多个实例(占用空间,性能问题),所以使用单例模式,保证该类只创建一个对象;2、一般单例模式通常有两种形式:它的构造函数为private的,必须有一个静态方法,静态方法返回自己的实例;实行形式有两种,懒汉式和饿汉式;所谓的饿汉式就是在声明实例的时候直接初始化对象,而懒汉式是先声明一个空对象,在静态方法中实例化该对象并返回。原创 2017-09-17 15:52:53 · 1666 阅读 · 0 评论 -
单例模式的写法
1、构造方法私有 2、声明private static的该类属性 3、提供public static方法返回该实例(先判断实例过了吗,如果没有实例化,则new)`/饱汉单例模式/ public class Singleton { //定义该类静态属性 private static Singleton obj ;//构造方法私有化,避免在本类外直接创建对象private S转载 2017-09-17 15:54:53 · 189 阅读 · 0 评论 -
属性变量和局部变量的区别
1、直接声明在类里边,方法外边的变量为属性变量,直接声明在方法里边的变量为局部变量2、属性变量有默认值,在使用之前不要求一定赋值,局部变量没有默认值,在使用之前一定要被赋值3、属性变量可以有权限修饰符修饰,局部变量不能用权限修饰符修饰4、属性变量的作用范围在整个类中,局部变量的作用范围在所属代码段中5、属性变量可以由static修饰,局部变量不能由static修饰原创 2017-09-17 16:01:10 · 1586 阅读 · 4 评论 -
Mybatis之xml配合接口开发,更体现面向对象
Mybatis的对象关系映射,用反射技术配合接口开发,更灵活,也更能体现java语言的面向对象方法。首先定义一个接口,方法有如下:public interface Idept { List<Dept> showAll(); int save(Dept dept); int update(Dept dept); int delete(Dept dept);}总配置文件请参考:原创 2017-09-26 16:56:50 · 606 阅读 · 0 评论 -
preparedStatement和Statement的区别
PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时PreparedStatement还经转载 2017-09-27 22:13:00 · 350 阅读 · 0 评论 -
说说事务的概念,在JDBC编程中处理事务的步骤。
1,事务是作为单个逻辑工作单元执行的一系列操作。 2,一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务 事务处理步骤: 3,conn.setAutoComit(false);设置提交方式为手工提交 4,conn.commit()提交事务 5,出现异常,回滚 conn.rollback();原创 2017-09-27 22:14:35 · 5289 阅读 · 0 评论 -
数据库连接池的原理。为什么要使用连接池。
1,数据库连接是一件费时的操作,连接池可以使多个操作共享一个连接。 2,数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发,测试及性能调整原创 2017-09-27 22:16:07 · 2222 阅读 · 0 评论 -
hashcode是什么意思?
用最简单的方法来说,hashcode就是一个签名。当两个对象的hashcode一样时,两个对象就有可能一样。如果不一样的话两个对象就肯定不一样。 一般用hashcode来进行比较两个东西是不是一样的,可以很容易的排除许多不一样的东西。 最常用的地方就是在一堆东西里找一个东西。先用你要找的东西的hashcode和所有东西的hashcode比较,如果不一样的话就肯定不是你要找的东西。如果一样的话就很转载 2017-09-25 21:26:26 · 9055 阅读 · 0 评论 -
对于多线程类 实现Runnable接口和继承Thread类有什么区别
一个类要想具备多线程能力。必须继承Thread类或者实现Runnable方法。二者区别: 由于在Java中类和类之间是单继承的,一个类如果继承了Thread类就不能再继承其他类了,但是如果一个类实现了Runnable接口,则不妨碍它继承其它类。也就是说实现Runnable的类的扩展能力强。 继承Thread类,多线程之间不能共享同一对象。实现Runnable接口的类,可以在多线程情况下原创 2017-09-17 13:55:41 · 1090 阅读 · 0 评论 -
sleep() 和 wait() 有什么区别?
sleep就是暂停当前线程一段时间,把cpu让给其他线程使用,到时后会自动恢复。调用sleep不会释放对象锁。 wait方法导致本线程放弃对象锁,进入等待,只有等到本对象的notify方法(或notifyAll)后本线程才进入就绪状态,等待执行。转载 2017-09-17 13:52:01 · 200 阅读 · 0 评论 -
HashMap和Hashtable,TreeMap的区别
1.HashMap和Hashtable以及TreeMap都实现了Map接口; 2.HashMap和TreeMap是非线程安全的,而Hashtable是线程安全的,因为Hashtable里的方法使用Synchronize关键字修饰的; 3.因为HashTable使用了Synchronize关键字修饰,其性能比较差;而且HashMap中的key和value值都能为null值Hashtable中的ke转载 2017-09-13 14:05:57 · 1636 阅读 · 0 评论 -
文章标题单例模式的好处和缺点?为什么要用单例模式?
【单例模式含义】 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 【采用单例模式动机、原因】 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能转载 2017-09-13 14:22:43 · 326 阅读 · 0 评论 -
java中的值传递和引用传递到底有什么区别
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。 引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参原创 2017-09-13 15:48:39 · 167 阅读 · 0 评论 -
JVM中的分布式垃圾回收(DGC)
分布式垃圾回收(DGC): 概念: 1)Java虚拟机中,一个远程对象不仅会被本地虚拟机内的变量引用,还会被远程引用。 2)只有当一个远程对象不受到任何本地引用和远程引用,这个远程对象才会结束生命周期。 说明: 1)服务端的一个远程对象在3个地方被引用:转载 2017-09-13 17:24:04 · 557 阅读 · 0 评论 -
什么是POJO?
POJO的全称是plain old java object 相当于JAVA BEAN,又叫做实体类 entity bean (其他的应该也没什么解释了吧,要是有的话,欢迎留言告诉,谢谢)原创 2017-09-23 10:46:41 · 1529 阅读 · 0 评论 -
java语言的特点
一种面向对象的语言一种与平台无关的语言一种健壮的语言转载 2017-09-15 10:55:33 · 196 阅读 · 0 评论 -
java两种核心机制
JVM:既java虚拟机,可理解为一个以字节码为机器指令的系统,对于不同的运行平台,有不同版本的虚拟机,java语言程序运行的跨平台性也就是因为不同平台下有不同的虚拟机,2.垃圾回收机制gc,Java语言消除了程序员回收无用内存空间的责任;它提供一种系统级线程,跟踪内存使用情况。并在JVM的空闲时,检查并释放那些可被释放的无用内存 ,垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和原创 2017-09-15 11:03:15 · 702 阅读 · 0 评论 -
关于org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'heroService' is
出现这个异常的原因是因为在spring的上下文中找不到相应bean类。如果你的xml配置和注解都没有什么问题,那么就看你在解析xml文件的时候按如:@Test public void test(){加载xml BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");原创 2017-09-07 17:00:15 · 1128 阅读 · 0 评论 -
Java中常见的异常
你能区分异常和错误吗?我们每天上班,正常情况下可能30分钟就能到达。但是由于车多,人多,道路拥挤,致使我们要花费更多地时间,这就是生活中的异常!程序和生活一样都会出现异常,先来看个异常: 上面出现的是算数错误的异常。在java中,除去一些编译上的错误(语法)之外,就有异常和错误!异常的定义是可自己进行处理后,程序依然可以正常运行下去!错误是Java虚拟机抛出的,终止程序的运行,这就是程序和异常的区转载 2017-09-24 21:54:11 · 401 阅读 · 0 评论 -
程序=数据结构+算法
1.指针与对象的关系示意图: 一个指针只能指向一个对象,可以不指向任何对象,称为空指针,值为null 一个对象可以由多个指针指向它,如果一个对象没有任何指针指向它,那这个对象就是垃圾对象2.对象的内存表示 为什么y不跟随对象的存储空间? 因为数据是静态的,不管创建多少个对象,都有一个静态数据y,这样下来,大大减少了内存的消耗,方法区也是如此。对象=数据+方法3.字符串的内存表示原创 2017-09-16 10:58:40 · 1444 阅读 · 0 评论 -
JDK5.0新特性
1.静态导入 作用:用于简化程序对类静态属性和方法的调用。 语法:import static 包名.类名.静态属性|静态方法|* 例如: import static java.lang.System.out import static java.lang.Math.*2.自动拆箱/装箱 自动装箱:指开发人员可以把一个原创 2017-09-16 11:11:52 · 194 阅读 · 0 评论 -
仿写java中集合工具类中的ArrayList
java的数据存储离不开集合工具,集合工具有很多种,今天在这就不一一举例了,进入今天的主题:先定义一个List的接口,定义一些仿ArrayList功能的方法public interface List { Object get(int index); boolean add(Object obj); void set(Object obj,int index); boolean原创 2017-09-25 14:45:09 · 570 阅读 · 0 评论 -
String 和StringBuffer,StringBuilder的区别
1.String 是个不可变长度的字符串,而StringBuffer是个可变长度的字符串; 2、在对String类进行操作的时候(例如增加字符),实际上是在内存中产生了一个新的String对象; 而StringBuffer是给原对象增加字符,不是新创建一个对象; (说明:String是有不可变性的,如果String中的内容一旦发生变化必将开辟新的空间。 由于String的不可变性造成当对St转载 2017-09-17 13:35:48 · 155 阅读 · 0 评论 -
final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。Finally中的代码将在异常处理的最后自动执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用,可以通过手动操作。原创 2017-09-17 13:41:55 · 179 阅读 · 0 评论 -
java多线程同步的五种方法
一、前几天去面试,被大师问道一些很基础的问题,感觉自己答的很不满意,闲话不多说,进入正题.二、为什么要使用同步? 因为当我们有多个线程要同时访问同一个变量或对象时,如果这些线程中午既有读又有写操作时,就会导致变量值或者对象的状态出现混乱,从而导致程序异常,举个例子:如果同一个银行账户被连个线程操作,一个存钱1000.00,一个取1000.00,假设该账户原本为金额为0.00,如果取钱线程和转载 2017-09-12 10:15:13 · 4367 阅读 · 0 评论