先附一张JAVA虚拟机内存结构图: 其中JAVA虚拟机的线程问题<为什么JAVA虚拟机分为线程共享和非线程共享?>一文中已经有详细介绍,本文从面试中常问的一些JAVA虚拟机问题出发,主要从 堆空间的内存分配 JVM class类加载机制 JVM中的GC垃圾回收机制 三个大方面进行详细说明 堆空间的内存分配 HotSpot JVM①把年轻代分为了三部分:1个Eden区和2个Survivor区(分别叫from和to).默认比例为8:1,为啥默认会是这个比例,接下来我们会聊到.一般情况下,新创建的对…
1.SpringMVC在项目中的应用? 1)service层,项目的业务逻辑层,一般先定义一个接口,在写一个实现类,实现所有的接口方法.service的实现类中要加注解@Service(用于标注业务层组件),@Resource 注入dao组件,方便在业务层中调用对用dao的方法. @Servicepublic class ContentServiceImpl implements ContentService{  @Autowired private   ContentDao  contentd…
sleep和wait的区别? sleep()来自Thread类,和wait()来自Object类.调用sleep()方法的过程中,线程不会释放对象锁.而 调用 wait 方法线程会释放对象锁 sleep()睡眠后不出让系统资源,wait让其他线程可以占用CPU sleep(milliseconds)需要指定一个睡眠时间,时间一到会自动唤醒.而wait()需要配合notify()或者notifyAll()使用 notify()和notifyAll()有什么区别? 如果线程调用了对象的 wait()…
1.类加载 bootstrap classloader -引导(也称为原始)类加载器,它负责加载Java的核心类. extension classloader -扩展类加载器,它负责加载JRE的扩展目录(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系统属性指定的)中JAR的类包. system classloader -系统(也称为应用)类加载器,它负责在JVM被启动时,加载来自在命令java中的-classpath或者java.class.path系统属性 或者…
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      *      * 1,获取:     * 1.1 获取字符串中字符的个数(长度).     *         int length();     * 1.2 取字符串中的某一个字符,其中的参数index指的是字符串中序数.字符串的序数从0开始到length()-1 .     *       …
package com.itjh.javaUtil;   import java.util.ArrayList; import java.util.List;   /** * * String工具类. <br> * * @author 宋立君 * @date 2014年06月24日 */ public class StringUtil {       private static final int INDEX_NOT_FOUND = -1;     private static final…
/** java.lang.Object   |--java.util.Dictionary<K,V>      |--java.util.Hashtable<Object,Object>          |--java.util.Properties * @author Administrator *Properties集合:         * 特点:         * 1,该集合中的键和值都是字符串类型.         * 2,集合中的数据可以保存到流中,或者从流加载 …
java  基础知识一初识java 1.java语言的特点 (1)简洁有效(2)可移植性(3)面向对象(4)解释型(5)适合分布式计算 2.java的源文件扩展名为.java 编译后的扩展名为.class 3.jvm是指java虚拟机 保证编译后的java代码能够在安装java虚拟器的系统上运行 4.java的编译方式 IDE或者命令行 编译==>java文件-编译-class文件即是:javac     First.java 5.java的运行方式 IDE或者命令行 运行==>java编译后…
Mysql的主键选择(主键自增,UUID,snowflake)? 使用自增长做主键的优点:1.很小的数据存储空间2.性能最好3.容易记忆使用自增长做主键的缺点:1.如果存在大量的数据,可能会超出自增长的取值范围2.很难(并不是不能)处理分布式存储的数据表,尤其是需要合并表的情况下3.安全性低,因为是有规律的,容易被非法获取数据使用GUID做主键的优点:1.它是独一无二的,出现重复的机会少2.适合大量数据中的插入和更新操作,尤其是在高并发和分布式环境下3.跨服务器数据合并非常方便4.安全性较高使用…
一.hashCode 与 equals (重要) 面试官可能会问你:"你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?" 1.1.hashCode()介绍 hashCode() 的作用是获取哈希码,也称为散列码:它实际上是返回一个int整数.这个哈希码的作用是确定该对象在哈希表中的索引位置.hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数.  散列表存储的…