![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习
yanghaitao_1990
我就是我
展开
-
java垃圾收集描述
java的垃圾收集机制主要针对新生代和老年代的内存进行回收,不同的垃圾收集算法针对不同的区域。所以java的垃圾收集算法使用的是分代回收。一般java的对象首先进入新生代的Eden区域,当进行GC的时候会回收新生代的区域,新生代一般采用复制收集算法,将活着的对象复制到survivor区域中,如果survivor区域装在不下,就查看老年代是否有足够的空间装下新生代中的对象,如果能装下就装下,否则老年代原创 2016-06-24 09:21:23 · 508 阅读 · 0 评论 -
Java中print、printf、println的区别
printf主要是继承了C语言的printf的一些特性,可以进行格式化输出;print就是一般的标准输出,但是不换行;println和print基本没什么差别,就是最后会换行;System.out.printf(“the number is: d”,t); 参照JAVA API的定义如下: ‘d’ 整数 结果被格式化为十进制整数 ‘o’ 整数 结果被格式化为八进制整数 ‘x’, ‘X’ 整数转载 2016-06-18 17:18:13 · 426 阅读 · 0 评论 -
Java关键字final、static使用总结
一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final转载 2016-06-18 21:53:24 · 379 阅读 · 1 评论 -
java一些概念
Switch能否用string做参数?在 Java 7 之前, switch 只能支持byte,short,char,int 或者其对应的封装类以及 Enum 类型。在JAVA 7中,String 支持被加上了。 equals与==的区别:==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同 Object有哪些公用方法?方法equ原创 2016-06-19 22:07:11 · 224 阅读 · 0 评论 -
String StringBuffer和StringBuilder异同
都是final类,不允许被修改被继承;String长度是不可变的,StringBuffer StringBuilder长度是可变的;StringBuffer是线程安全,StringBuilder不是线程安全,但它俩所有方法都是相同的,StringBuffer 是在StringBuilder的方法添加了synchronized修饰,保证线程安全;StringBuilder比StringBuffe原创 2016-06-20 15:22:08 · 350 阅读 · 0 评论 -
JVM内存
大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) , VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack ( 本地方法栈 ),其中Method Area 和 Heap 是线程共享的 ,VM Stack,Native Me原创 2016-06-20 16:29:00 · 237 阅读 · 0 评论 -
int 和 Integer 的区别与作用
int是JAVA八大基本数据类型(byte,shor,int,long,char,boolean,float,double)之一。 JAVA语言为八大基本数据提供了包装类,Integer对应是int类型的包装类,就是把int类型包装成Object对象。 Java有2种不同的类型:引用类型和原始类型。Int是java的原始数据类型,Integer是java的为int提供的封装类。Java为每个原原创 2016-06-20 19:17:53 · 1078 阅读 · 0 评论 -
说出ArrayList,Vector, LinkedList的存储性能和特性?
ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始ArrayList和Vector都是用数组方式存储数据,此数组元素数要大于实际的存储空间以便进行元素增加和插入操作,他们都允许直接用序号索引元原创 2016-06-20 20:03:55 · 21410 阅读 · 1 评论 -
java 是如何进行异常处理的
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try原创 2016-06-20 20:16:37 · 530 阅读 · 0 评论 -
Servlet的生命周期分为3个阶段:? 和CGI的区别
Servlet的生命周期主要由3个过程组成。(1)init()方法:服务器初始化servlet。(2)service()方法:初始化完毕,servlet对象调用该方法响应客户的请求。(3)destroy()方法:调用该方法消灭servlet对象。其中,init()方法只在servlet第一次被请求加载的时候被调用一次,当有客户再请求servlet服务时,web服务器将启动一个新的线程,在该线程中,调原创 2016-06-20 21:35:51 · 1715 阅读 · 0 评论 -
Java 序列化Serializable详解(附详细例子)
1、什么是序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。2、什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候;3、如何实现序列化将需要序列化的类实现Seri原创 2016-06-20 23:00:31 · 343 阅读 · 0 评论 -
Java后台-面试问题汇总:历时20天,主流互联网公司面试经历
本人Java开发,3年经验,7月初来到帝都,开启面试经历,前后20天左右,主面互联网公司,一二线大公司或者是融资中的创业公司都面试过,拿了一些offer,最后综合决定还是去360了。 不同面试官面试风格一定不同,我这里就是总结这些天面试Java开发过程中的大多数问题,综合分类有Java基础,框架,多线程,网络通信,Linux,数据库,设计模式,算法,缓存等几个模块,由于问题太多,下面先列出问题,之转载 2016-06-25 09:53:36 · 12858 阅读 · 2 评论 -
spring的事务管理有几种方式实现,如何实现
Spring+Hibernate的实质: 就是把Hibernate用到的数据源Datasource,Hibernate的SessionFactory实例,事务管理器HibernateTransactionManager,都交给Spring管理。那么再没整合之前Hibernate是如何实现事务管理的呢? 通过ServletFilter实现数据库事务的管理,这样就避免了在数据库操作中每次都要进行数据原创 2016-06-25 20:49:25 · 21714 阅读 · 0 评论 -
简述spring 的事务传播行为和 隔离级别
spring 的事务传播行为: Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。 PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务原创 2016-06-20 20:19:21 · 951 阅读 · 0 评论 -
SpringMVC工作原理
上面的是springMVC的工作原理图:1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及转载 2016-06-25 22:03:49 · 657 阅读 · 0 评论 -
Servlet学习
Servlet 生命周期 Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:Servlet 通过调用 init () 方法进行初始化。Servlet 调用 service() 方法来处理客户端的请求。Servlet 通过调用 destroy() 方法终止(结束)。最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。init() 方原创 2016-06-27 11:19:21 · 461 阅读 · 0 评论 -
Servlet 与 CGI 的比较
和CGI程序一样,Servlet可以响应用户的指令(提交一个FORM等等),也可以象CGI程序一样,收集用户表单的信息并给予动态反馈(简单的注册信息录入和检查错误)。 然而,Servlet的机制并不仅仅是这样简单的与用户表单进行交互。传统技术中,动态的网页建立和显示都是通过CGI来实现的,但是,有了Servlet,您可以大胆的放弃所有CGI(perl?php?甚至asp!),利用Servlet原创 2016-06-27 09:54:23 · 515 阅读 · 0 评论 -
Java中的NIO,BIO,AIO定义
BIO 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。 BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。NIO 同步非阻塞,服务器实现模式为一个请求一个线程,即客户转载 2016-06-27 22:07:23 · 665 阅读 · 0 评论 -
线程池
什么是线程池?如果让你设计一个动态大小的线程池,如何设计,应该有哪些方法? 什么是线程池 线程池顾名思义就是事先创建若干个可执行的线程放入一个池(容器)中,需要的时候从池中获取线程不用自行创建,使用完毕不需要销毁线程而是放回池中,从而减少创建和销毁线程对象的开销。设计一个动态大小的线程池,如何设计,应该有哪些方法 一个线程池包括以下四个基本组成部分: 线程管理器(ThreadPool)转载 2016-06-27 22:29:19 · 1752 阅读 · 0 评论 -
触发Full GC执行的情况
除直接调用System.gc外,触发Full GC执行的情况有如下四种。 1. 旧生代空间不足 旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误: java.lang.OutOfMemoryError: Java heap space 为避免以上两种状况引起的Full GC,调优时应尽量做到让对象在Minor GC转载 2016-06-23 18:06:49 · 918 阅读 · 0 评论