随笔分类 - JAVA面试
摘要:1.什么是Spring? Spring是一个轻量级、非入侵式的控制反转(IOC)和面向切面(AOP)的框架,提供了快捷测试支持,快速集成功能、拥有复杂的API模板支持。 2.Spring最主要的七大模块 (1)Spring Core:Spring核心,提供IOC和依赖注入DI特性。(2)Spring
阅读全文
摘要:复制表结构和其数据: create table table_name_new as select * from table_name_old 表结构相同,复制表数据: insert into table_name_new select * from table_name_old 表结构不同,复制表数
阅读全文
摘要:JVM-Java虚拟机 Java程序运行时,编译器将Java文件编译成平台无关的Java字节码文件(.class)。对应平台JVM对字节码文件进行解释,翻译成对应平台匹配的机器指令并运行。 JVM内存区域(内存结构) JVM内存区域粗略划分为堆和栈。 按虚拟机规范划分为五部分,包括程序计数器、虚拟机
阅读全文
摘要:创建对象有几种方式 (1)new创建对象;(2)反射创建对象;(3)采用clone机制;(4)序列化机制。 创建反射对象的几种方式 (1)类.class:通过 类名.class 创建反射获取对象; 类.class 是静态加载,是JVM编译时就要加载。 Class<ClassDemo> oClass
阅读全文
摘要:1.List有哪些? java.util包: ArrayList、LinkedList、Stack、Vector java.util.concurrent包:CopyOnWriteArrayList 2.在对List循环过程中能变更当前循环的List吗?为什么? (1)使用foreach遍历集合时,
阅读全文
摘要:1.线程的6种状态 (1)New:初始状态,线程被创建,但是还没调用start方法。(2)Running:就绪状态和运行状态,统称为运行状态(3)Blocked:阻塞状态(4)Waiting:等待状态,需要等待其他线程做出特定的动作(通知或中断)。(5)Time-Waiting:超时等待状态,表示可
阅读全文
摘要:1.JRE、JDK、JVM联系与区别 JRE:Java运行环境,包含JVM,用于解释执行Java的字节码文件。只安装 JRE(Java Runtime Environment)就可以运行 Java 程序。 JDK:包含JRE、JVM,Java标准开发包,它提供了编译、运行Java程序所需的各种工具和
阅读全文
摘要:1.Redis是一种key-value的格式存储数据的NO-SQL非关系型数据库。 2.Redis是将所有数据都存储在内存中,采用了基于非阻塞的IO多路复用机制,所以它的读写能力非常出色。 3.同时Redis也提供了将内存的数据持久化到磁盘的两种方式:RDB快照持久化和AOF命令日志持久化,防止服务
阅读全文
摘要:设计模式是一套提高代码的可维护性、扩展性、复用性、可读性、稳定性、健壮性以及安全性,由前人总结出来的一套解决方案。 设计模式原则 (1)开闭原则:对扩展开放,对修改关闭。 (2)单一职责原则:类要职责单一,只负责一个功能领域的任务。 (3)里氏替换原则:不要破坏继承体系,所有引用基类对象的地方能够透
阅读全文
摘要:使用RabbitMQ的好处 (1)使用消息队列可以将同步改成异步,可以解耦。 (2)可以通过消息队列设置最大请求数,超过阈值的抛弃或转到错误页面,避免服务器大量请求,导致服务器承压过大,以此来实现流量削峰。 (3)RabbitMQ采用的是信道通信,一个TCP连接可以容纳磁盘容量能承受范围内的多个信道
阅读全文
摘要:SpringBoot 1.SpringBoot、SpringMVC、Spring的区别 Spring主要完成的是IOC和AOP的功能。 SpringMVC是通过DispatcherServelet,ModelAndView 和 ViewResolver等使开发Web应用变得很简单了。 SpringB
阅读全文
摘要:创建线程池的方式,以及各自的特点 1.使用ThreadPoolExecutor类创建线程池。 ThreadPoolExecutor(int corePoolSize, // 线程池的核心线程数 int maximumPoolSize, // 线程池的最大线程数 long keepAliveTime,
阅读全文
摘要:MySQL MySQL分页查询 SELECT * FROM admin_company LIMIT 0,10; SELECT * FROM admin_company ORDER BY id LIMIT 0,10; limit后参数代表什么意思? LIMIT[位置偏移量,]行数,第一个参数是从哪个序
阅读全文
摘要:Mybatis Mybatis中#{}和${}区别 #{}:解析为参数占位符,生成的SQL里对应的位置用?表示,值是当做字符串处理的,会加上''。 使用#{}可以很大程度上防止sql注入(SQL拼接)。 ${}:直接解析为相应的值。在动态生成SQL时,直接进行变量替换,不会自动加''。 在动态表名和
阅读全文
摘要:String、StringBuffer、StringBuilder String类是用的 final char[] 保存的字符串,故String对象是不可变的,用+拼接字符串,就是生成的一个新的String对象。 String s1 = "abc"; 是放在字符串常量池中,如再创建一个String
阅读全文
摘要:责任链模式 用来按责任顺序来处理一系列的事务,由多个节点组成的一条执行链。一个节点处理完业务逻辑后,会根据实际的需求,去传递给下一个节点。如果符合业务处理条件,则会一直执行至最后一个节点处理完成。 下面是两种方式实现: (1)给每个节点都设置下一个节点处理类,如果最后一个节点没有设置下一节点,则结束
阅读全文
摘要:代理模式通常分为静态代理和动态代理两种,用于功能增强。 静态代理 静态代理: 1.代理类和目标类都需实现同一接口。 2.代理类中需有目标类实例。 3.代理类实现接口方法,对目标类根据实际情况进行增强,也就是执行一定逻辑,并调用目标类方法。 这样就会导致接口每增加一个方法,则代理类和目标类都需实现该方
阅读全文
摘要:基础概念 单例模式就是只需要创建一次,在整个应用生命周期都可以一直使用。 我们常分为饿汉式和懒汉式两种。 饿汉式 饿汉式是在初始化的时候就将单例对象创建出来。通常,通过属性new创建自身。该方式不存在线程安全的问题(JVM保证线程安全),但会造成内存资源的浪费。 我们可以创建一个这样的类: 1、定义
阅读全文
摘要:HashMap 数据结构 JDK1.7 HashMap由数组+单向链表组成,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。 什么是哈希冲突?由于哈希算法被计算的数据是无限的,而计算后的结果范围有限,因此总会存在不同的数据经过计算后得到的值相同,这就是哈希冲突。 如果发生hash冲
阅读全文
摘要:@ComponentScan 指定需扫描的包,一般在配置类上增加 @ComponentScan 注解。 @Bean 一般用于导入第三方组件的类,如DataSource。 @Configuration public class DataSourceConfig { @Bean @Configurati
阅读全文

浙公网安备 33010602011771号