后端开发知识点总结
文章平均质量分 87
Java-后端开发面试题总结
Black_Me_Bo
最长的路也有尽头,最黑暗的夜晚也会迎接清晨。
展开
-
常用sql语句
文章目录1.sql语句的分类2.超键、候选键、主键、外键3.SQL约束4.关联查询4.1.INNER JOIN4.2.LEFT JOIN4.3.RIGHT JOIN4.4.UNION4.5.UNION ALL4.6.FULL JOIN5.子查询5.1.MySQL子查询在WHERE子句中5.1.1.MySQL子查询与比较运算符5.1.2.具有IN和NOT IN运算符的MySQL子查询5.2.FROM子句中的MySQL子查询5.3.MySQL相关子查询5.4.MySQL子查询与EXISTS和NOT EXISTS原创 2022-03-30 15:35:51 · 1122 阅读 · 0 评论 -
Mysql存储引擎的不同
文章目录1.MyISAM与Innodb的区别1.1.事务支持1.2.存储结构1.3.存储空间1.4.可移植性、备份及恢复1.5.AUTO_INCREMENT1.6.表锁差异1.7.全文索引1.8.表主键1.9.表的具体行数1.10.CURD操作1.11.外键1.12.查询效率2.MyISAM和InnoDB两者的应用场景1.MyISAM与Innodb的区别1.1.事务支持MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,原创 2022-03-30 15:34:50 · 285 阅读 · 0 评论 -
Mysql的视图、存储过程与函数、触发器
文章目录1.视图什么是视图1.2视图的特点1.3视图的使用场景1.4视图的优点1.5视图的缺点1.6什么是游标2.存储过程2.1什么是存储过程2.2存储过程的优点2.3存储过程的缺点3.触发器3.1什么是触发器3.2使用场景3.3Mysql中的触发器1.视图什么是视图为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以储存的数据值形式存在原创 2022-03-28 13:12:59 · 478 阅读 · 0 评论 -
Mysql的索引
文章目录1.什么是索引2.索引的使用场景3.索引的缺点4.索引的类型5.索引的数据结构(B树,Hash)6.索引的基本原理7.索引的算法8.索引设计的原则9.创建索引的原则10.创建索引的三种方式10.1.在执行create table 时创建索引10.2.使用alter table命令去增加索引10.3.使用 create index命令创建11.删除索引的方式11.1.根据索引名删除普通索引、唯一索引、全文索引11.2.删除主键索引12.百万级别或以上的数据如何删除13.前缀索引14.最左前缀原则15.原创 2022-03-28 13:12:27 · 132 阅读 · 0 评论 -
Mysql基础知识
文章目录1.数据库基础知识1.1数据库三大范式1.2mysql有关权限的表1.3MySQL的binlog的三种录入格式2.数据类型3.引擎3.1MyISAM引擎与InnoDB引擎区别3.2InnoDB引擎的4大特性3.3存储引擎选择4.事务4.1什么是数据库事务?4.2事务的四大特性4.3事务的隔离级别5.锁5.1隔离级别与锁的关系5.2锁的类别5.3MySQL中InnoDB引擎的行锁的实现5.4InnoDB存储引擎的锁的算法有三种5.5怎么解决死锁5.5怎么解决死锁1.数据库基础知识1.1数据库三大范原创 2022-03-28 13:11:11 · 130 阅读 · 0 评论 -
Spring和JDBC实现事务
文章目录1.Spring如何实现事务1.1编程式事务和声明式事务的区别1.2编程式事务实现1.2.1使用TransactionTemplate1.2.2使用PlatformTransactionManager1.3声明式事务实现1.3.1配置方式2.JDBC如何实现事务1.Spring如何实现事务Spring 事务四种实现方式:基于编程式事务管理实现基于TransactionProxyFactoryBean的声明式事务管理基于AspectJ的XML声明式事务管理基于注解的声明式事务管理1.原创 2022-03-25 20:49:05 · 387 阅读 · 0 评论 -
Spring 数据访问
文章目录1.解释对象/关系映射集成模块2.Spring框架中如何更有效地使用JDBC3.Spring DAO 有什么用4.Spring 事务4.1Spring支持的事务管理类型, spring 事务实现方式有哪些4.2Spring事务的实现方式和实现原理4.3Spring的事务传播行为4.4Spring 的事务隔离4.5Spring框架的事务管理优点1.解释对象/关系映射集成模块 Spring 通过提供ORM模块,支持我们在直接JDBC之上使用一个对象/关系映射映射(ORM)工具,Spring支持集原创 2022-03-25 17:28:32 · 232 阅读 · 0 评论 -
Spring MVC知识总结
文章目录1.SpringMVC框架介绍2.SpringMVC原理图3.SpringMVC接口解释4.SpringMVC运行原理5.Spring MVC 的优点1.SpringMVC框架介绍spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web原创 2022-03-25 17:27:54 · 790 阅读 · 0 评论 -
Spring IOC知识总结
文章目录1.什么是IOC/DI1.1IOC(控制反转)1.1.1控制反转(IoC)有什么作用1.1.2IOC的优点是什么?1.1.3Spring IoC 的实现机制1.2DI(依赖注入)1.2.1什么是Spring的依赖注入1.2.2依赖注入的优势2.IOC/DI的实现方式2.1IOC的三种实现方式2.1.1xml配置2.1.2Java配置2.1.3注解配置2.2DI的三种实现方式2.2.1setter方式2.2.2构造方法注入(Construct注入)2.2.3注解注入3.Spring IOC体系结构3.原创 2022-03-25 17:27:06 · 963 阅读 · 0 评论 -
Spring AOP知识总结
文章目录1.AOP(面向切面编程思想)1.1概念1.2核心概念1.3AOP的通知类型2.AOP的实现原理和场景2.1场景2.2实现技术3.Spring AOP的两种代理模式3.1JDK动态代理3.2CGLIB动态代理3.3JDK动态代理与CGLIB动态代理的区别4.Spring AOP 的两种代理方式使用4.1接口使用JDK代理4.1.1定义接口4.1.2实现类4.1.3定义切面4.1.4输出4.2非接口使用CGLIB代理4.2.1类定义4.2.2定义切面4.2.3输出5.Spring AOP的切入点(po原创 2022-03-25 17:25:19 · 1034 阅读 · 0 评论 -
Mybatis数据源与连接池
文章目录Mybatis数据源与连接池MyBatis数据源DataSource分类数据源DataSource的创建过程DataSource什么时候创建Connection对象不使用连接池的UnpooledDataSource使用了连接池的PooledDataSource获取java.sql.Connection对象的过程popConnection()方法java.sql.Connection对象的回收怎样实现Connection对象调用了close()方法,而实际是将其添加到连接池中JNDI类型的数据源Dat原创 2022-03-24 13:35:39 · 1875 阅读 · 0 评论 -
SpringBoot基础知识总结
文章目录Spring Boot概述什么是SpringBootSpringBoot的优点SpringBoot的核心注解配置JavaConfigSpringBoot自动配置原理SpringBoot配置加载顺序YAML配置bootstrap.properties 和 application.propertiesSpring Profiles安全实现SpringBoot应用程序的安全性Spring Security 和 Shiro 各自的优缺点Spring Boot 中如何解决跨域问题CSRF攻击监视器Spring原创 2022-03-23 20:42:34 · 1536 阅读 · 0 评论 -
Java锁机制
文章目录CAS(比较并交换-乐观锁机制-锁自旋)概念及特性ABA问题AQS(抽象队列同步器)AQS 定义两种资源共享方式Exclusive独占资源-ReentrantLockShare共享资源-Semaphore/CountDownLatch自定义同步器Mark Word乐观锁悲观锁可重入锁(递归锁)公平锁和非公平锁JAVA中的锁ReentrantLockReentrantLock与synchronizedCondition 类和Object 类锁方法区别共享锁和独占锁ReadWriteLock 读写锁自旋原创 2022-03-23 16:32:02 · 516 阅读 · 0 评论 -
HashMap死循环问题
文章目录HashMap的死循环问题问题原因分析HashMap的put方法分析案例分析总结HashMap的死循环问题问题 如果是在单线程下使用HashMap,自然是没有问题的,如果后期由于代码优化,这段逻辑引入了多线程并发执行,在一个未知的时间点,会发现CPU占用100%,居高不下,通过查看堆栈发现,线程都在hashMap的get()方法上,服务重启之后,问题消失,过段时间可能又复现了。原因分析HashMap使用一个Entry数组保存key、value数据,当一对key、value被加入时,会通原创 2022-03-22 20:33:46 · 343 阅读 · 0 评论 -
ConcurrentHashMap的扩容实现(jdk1.8)
文章目录深入分析ConcurrentHashMap的扩容实现什么情况会触发ConcurrentHashMap扩容transfer实现深入分析ConcurrentHashMap的扩容实现什么情况会触发ConcurrentHashMap扩容第一种:如果新增节点之后,所在链表的元素个数达到了阈值 8,则会调用 treeifyBin 方法把链表转换成红黑树,不过在结构转换之前,会对数组长度进行判断,实现如下:private final void treeifyBin(Node<K,V>[]原创 2022-03-22 20:08:48 · 1264 阅读 · 0 评论 -
多线程详解
java多线程详解、包括线程池创建使用、阻塞队列、拒绝策略、线程状态原创 2022-03-22 17:07:22 · 541 阅读 · 0 评论 -
JVM详解
文章目录JVM的主要组成及其作用作用堆栈的区别物理地址内存分别存放的内容程序可见度对象的创建为对象分配内存处理并发安全问题对象的访问定位句柄访问直接指针类装载的执行过程双亲委派模型User user =new User()操作JVM内存模型与GC算法JVM内存模型程序计数器(线程私有)Java虚拟机栈(线程私有)本地方法栈(线程私有)Java堆(线程共享)方法区(线程共享)运行时常量池直接内存GC算法标记-清除算法复制算法标记-整理算法垃圾回收(GC在什么时候,对什么东西,做了什么事情)在什么时候对什么东西原创 2022-03-21 15:02:01 · 454 阅读 · 0 评论 -
ConcurrentHashMap底层原理以及与HashTable的区别
ConcurrentHashMap底层具体实现及实现原理jdk1.7 首先将数据分为一段一段的存储,然后给每一段数据一把锁,当一个线程征用所访问其中一个数据时,其他段的数据也能被其他线程访问。 在jdk1.7中采用segment数组+HashEntry的方式来实现,结构如下:一个ConcurrentHashMap里包含一个segment数组。segment的结构和HashMap类似,是一种数组和链表结构,一个segment包含一个HashEntry数组,每个HashEntry是一个链表结构的原创 2022-03-20 14:35:55 · 735 阅读 · 0 评论 -
HashMap与HashTable的区别
Hash与HashTable的区别线程安全HashMap是非线程安全的,HashTable内部方法基本都经过了synchronized修饰,所以HashTable是线程安全的效率因为线程安全的问题,HashMap要比HashTable的效率高一点儿对Null key和Null value的支持HashMap中,null可以作为键,这样的键只有一个,可以有一个或多个值为nullHashTable不允许有null的键或值,如果put进的键值只要有一个为null,则抛出空指针异常初始容量大小与每次原创 2022-03-20 13:44:53 · 424 阅读 · 0 评论 -
HashMap解决哈希冲突
HashMap解决Hash冲突什么是哈希冲突当两个个不同的值,根据同一散列函数计算出相同的散列值现象,称为哈希冲突HashMap的数据结构HashMap是由数组+链表组成的,jdk1.8后加入了红黑树 使用链地址法来解决哈希冲突,这样我们可以将具有相同哈希值的对象组织成一个链表放在hash值所对应的bucket下,但是相比hashCode返回的int类型,HashMap初始的容量大小为DEFAULT_INITIAL_CAPACITY = 1 << 4(即2的四次方16)要远小于原创 2022-03-20 11:45:56 · 1496 阅读 · 0 评论 -
HashMap的put方法具体流程
HashMp的put方法具体流程,手撕源码原创 2022-03-19 21:22:21 · 1024 阅读 · 0 评论 -
07-Spring面试题总结
什么是Spring框架一般说的Spring是指Spring Framework,它是很多模块的集合,使用这些模块可以很方便的协助我们进行开发。这些模块是:核心容器、数据访问/集成、Web、AOP、工具、消息、和测试模块。Spring的6个特征:核心技术:依赖注入,aop,事件,资源,验证,数据绑定,类型转换,i18n,SpEL测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient数据访问:事务,DAO支持,JDBC,ORM,编组XMLWeb支持:Spr原创 2022-03-09 19:39:46 · 395 阅读 · 0 评论 -
06-Java虚拟机-相关面试题
Java内存区域(运行时数据区)JDK1.8之前:JDK1.8之后:线程私有的:程序计数器虚拟机栈本地方法栈线程共享的:堆方法区直接内存(非运行时数据区的一部分)程序计数器(线程私有) 程序计数器是一块较小的内存空间,可以看做是当前线程锁执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一原创 2022-03-09 15:11:07 · 122 阅读 · 0 评论 -
05-Java多线程-相关面试题
什么是线程和进程?进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在java中,当我们启动main函数时其实就是启动了一个JVM进程,而main函数所在的线程就是进程中的一个线程,也称为主线程。线程 线程与进程相似,单线程是一个比进程更小的执行单位。一个进程再起执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈、和本地方法栈,所以系原创 2022-03-09 15:10:18 · 168 阅读 · 0 评论 -
04-Java集合-相关面试题
Java集合概述List、Set、Map三者的区别ListSetMap数据格式元素有序可重复元素无序不重复key无序不重复,value无序可重复是否实现了Collection接口是是否集合框架底层数据结构总结List:ArrayList:Object[]数组Vector:Object[]数组LinkedList:双向链表(jdk1.6之前为循环链表,jdk1.7取消了循环)Set:HashSet(无序,唯一):基于HashMap实现的,底原创 2022-03-05 23:34:30 · 342 阅读 · 0 评论 -
03-Java异常-相关面试题
Java异常在Java中,所有异类都有一个共同的祖先java.lang包中的Throwable类。Throwable:有两个重要的子类Exception和Error异常类层次结构图如下:Error Error是指程序无法处理的错误,表示运行程序中较为严重的问题。大多数错误与代码编写者的执行操作无关,而表示代码运行时JVM出现的问题。Exception Exception是程序本身可以处理的异常。Throwable类常用方法public String getMessage(原创 2022-03-05 23:33:49 · 157 阅读 · 0 评论 -
02-Java面向对象-相关面试题
Java类和对象面向对象和面向过程的区别面向过程:面向过程比面向对象的性能高。因为类调用是需要实例化,开销比较大、比较消耗资源、所以当性能是最重要的考量因素时一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展面向对象:面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态性的特性,所以设计出低耦合的系统、是系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低面向过程也需要分配内存,计算内存偏移量,Java性能差的主要原因并不是因为他是面向对象语言,而是JAVA原创 2022-03-05 23:32:57 · 144 阅读 · 0 评论 -
01-java基础知识-相关面试题
Java基础概念Java语言的特点简单易学面向对象(封装、继承、多态)平台无关性(Java虚拟机实现平台无关性)可靠性安全性支持多线程支持网络编程并且很方便编译与解释并存JVM-JDK-JREJVM JVM是运行java字节码的虚拟机。JVM有针对不同系统的特定实现,目的是使用相同的字节码,它们都会给出相同的结果。字节码在java中,JVM可以理解的代码叫做字节码(.class文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了传原创 2022-03-05 23:32:18 · 320 阅读 · 0 评论