
面试题整理
JAVA面试题整理
北风浊酒
这个作者很懒,什么都没留下…
展开
-
mysql 事物的四种隔离级别
事务的 四个特征(ACID)事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。1 、原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2 、一致性。事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就原创 2020-05-10 11:53:32 · 216 阅读 · 0 评论 -
Java 多线程之悲观锁与乐观锁介绍与深入探索
一、悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观...原创 2020-04-02 14:52:40 · 178 阅读 · 0 评论 -
SpringBoot特性见解与分析
一、SpringBoot解决的问题1、使编码变得简单2、使配置变得简单3、使部署变得简单4、使监控变得简单二、springboot主要特性1、遵循习惯优于配置的原则。使用springboot我们只需要很少的配置,大多数使用默认配置即可2、项目快速搭建。springboot帮助开发者快速搭建spring框架,可无需配置的自动整合第三方框架3、可以完全不使用xml配置,只需...原创 2020-04-02 14:50:06 · 295 阅读 · 0 评论 -
Java 请求转发和重定向的区别
一、请求转发和重定向1)请求转发:request.getRequestDispatcher(URL地址).forward(request, response)处理流程:客户端发送请求,Servlet做出业务逻辑处理。 Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。2)重定向:response.sendRedirect(...原创 2020-04-02 13:48:54 · 257 阅读 · 0 评论 -
Servlet的生命周期简述
Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。1.加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet2.创建:通过调用Servlet的构造函数来创建一个Servlet实例3.初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已经被创建,但在向客户端提供服务之前调用。4.处理客户请求...原创 2020-02-12 16:38:40 · 2595 阅读 · 0 评论 -
spring事务属性的种类
事务属性的种类:传播行为、隔离级别、只读和事务超时a)传播行为定义了被调用方法的事务边界。 传播行为 意义 PROPERGATION_MANDATORY 表示方法必须运行在一个事务中,如果当前事务不存在,就抛出异常 PROPAGATION_NESTED ...原创 2020-02-12 16:32:30 · 218 阅读 · 0 评论 -
两个Integer的引用对象传给一个swap方法在方法内部交换引用,返回后,两个引用的值是否会发现变化
答案:不会可以说Java中只有值传递。具体分析----Java内存模型简介: Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样底层细节。此处的变量与Java编程时所说的变量不一样,指包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,后者是线程私有的,不会被共享。 Java内存模...原创 2020-02-12 15:07:15 · 464 阅读 · 0 评论 -
Java AOP的底层实现原理
一、什么是AOP1、AOP:Aspect Oriented Programming(面向切面编程),OOP是面向对象编程,AOP是在OOP基础之上的一种更高级的设计思想。2、OOP和AOP之间也存在一些区别,OOP侧重于对象的提取和封装。----封装对象AOP侧重于方面组件,方面组件可以理解成封装了通用功能的组件,方面组件可以通过配置方式,灵活地切入到某一批目标对象方法上。----封装...原创 2020-02-12 11:19:48 · 820 阅读 · 0 评论 -
为什么线程执行要调用start而不是直接run
直接run,跟普通方法没什么区别,先调start,run才会作为一个线程方法运行!多线程的原理:相当于玩游戏机,只有一个游戏机(cpu),可是有很多人要玩,于是,start是排队!等CPU选中你就是轮到你,你就run(),当CPU的运行的时间片执行完,这个线程就继续排队,等待下一次的run()。调用start()后,线程会被放到等待队列,等待CPU调度,并不一定要马上开始执行,只是将这...原创 2020-02-11 16:59:11 · 698 阅读 · 0 评论 -
遍历Hashmap的几种方式
public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put("1", "M"); map.put("2", "J"); map.put("3", "X"); /...原创 2020-02-11 16:54:41 · 4063 阅读 · 0 评论 -
JVM常见命令
1. jps 显示系统中所有Hotspot虚拟机进程2. jinfo 显示虚拟机的配置信息,可观察进程运行环境参数,包括Java System属性和JVM命令行参数3. jstack 显示虚拟机的线程栈信息,用于生成当前JVM的所有线程快照4. jstat 实时显示本地或远程JVM进程中类装载、内存、垃圾收集、JIT编译等数据5. jmap 用于生成虚...原创 2020-02-11 16:37:19 · 410 阅读 · 1 评论 -
JAVA中的锁有哪些种类,都有什么区别?
公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能...原创 2020-02-11 16:21:07 · 475 阅读 · 0 评论 -
缓存----Memcache和Redis的区别
MemCache是什么MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。...原创 2020-02-11 15:48:28 · 291 阅读 · 0 评论 -
MySql中存储引擎myisam和innodb的区别
1.概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);InnoDB存储引擎既支持行级锁( row-level locking),也支持表级锁,但默认情况下是采用行级锁。 MySQL主要的两种锁的特性可大致归纳如下:表级锁:...原创 2020-02-10 17:47:56 · 113 阅读 · 0 评论 -
ConcurrentHashmap的锁是如何加的?是不是分段越多越好
JDK1.8的ConcurrentHashmap利用 ==CAS + synchronized== 来保证并发更新的安全底层使用==数组+链表+红黑树==来实现---------------------------------------------------------------------------------------线程不安全的HashMap因为多线程环境下,使...原创 2020-02-10 16:18:50 · 5875 阅读 · 0 评论 -
关于MySQL性能优化技巧总结
MySQL优化三大方向① 优化MySQL所在服务器内核(此优化一般由运维人员完成)。② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。③ 对SQL语句以及表优化。MySQL参数优化1:MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看mysql> show variables like 'max_con...原创 2020-02-10 16:01:56 · 216 阅读 · 0 评论