![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
文章平均质量分 67
笋干zzZ~
小菜比zzZ
展开
-
Bean的生命周期
Bean的生命周期:解析xml文件。通过构造器创建bean实例(无参构造器)。为bean的属性设置值和设置其他bean的引用(调用set方法)。把bean实例传递给bean后置处理器前置方法postProcessBeforeInitialization。调用bean的初始化方法(需要进行配置初始化的方法)。把bean实例传递给bean后置处理器后置方法postProcessAfterInitialization。bean可以使用了(对象获取到了)。当容器关闭时候,调用bean的销毁方法(需原创 2022-05-17 14:43:22 · 96 阅读 · 0 评论 -
SpringBoot 部分注解理解
SpringBoot 部分标签理解:@ResponseBody:作用其实是将java对象或者json字符串转为json对象(json对象==js对象)。如果返回的是字符串的话,那么返回的就是字符串。dataType为json时,会将返回值往js对象转化。如果是dataType为text,就不做处理,返回是什么就是什么。@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlenco原创 2022-02-25 14:06:15 · 178 阅读 · 0 评论 -
Spring中BeanFactory和FactoryBean的区别
Spring中BeanFactory和FactoryBean的区别:1、BeanFactory BeanFactory是IOC最基本的容器,负责生产和管理bean,它为其他具体的IOC容器提供了最基本的规范,例如ApplicationContext,XmlBeanFactory 等具体的容器都是实现了BeanFactory,再在其基础之上附加了其他的功能。BeanFactory源码:package org.原创 2021-12-06 17:23:51 · 479 阅读 · 0 评论 -
数据库设计三范式
1NF: 符合1NF的关系中的每个属性都不可再分。在使用数据库管理系统的时候比如mysql,sql server等创建的数据表都满足1NF,如果不满足这个范式,是不能创建成功数据表的。属性不可再分的意思是每一个字段都是最小的,不包含其他字段,不重复,原子性。如下表:问题:数据冗余,插入异常,删除异常,修改异常等。插入异常:如果需要新建一个系,并且有系主任。但是因为还没有学生开始学习,所有主键是空的,肯定是不能插入的。删除异常:如果需要把某个系下面学原创 2021-09-21 17:17:37 · 235 阅读 · 0 评论 -
面试前的笔记
进程和线程的区别?进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源。线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位。同一个进程中的多个线程之间可以并发执行。...原创 2021-09-20 15:46:32 · 74 阅读 · 0 评论 -
Mybatis 执行器
JDBC的执行流程如下图:先提起JDBC是因为mybatis就是一个基于JDBC的ORM(Object/Relation Mapping 对象/关系映射)框架。mybatis执行器:**执行接口Executor:**提供增删改查,提交事务,回滚,关闭等操作。**抽象父类BaseExecutor:**主要提供获取连接,一级缓存等公共功能。query方法提供缓存使用。这也是我们经常说的基于sqlsession的一级缓存。**简单执行器SimpleExecutor:**默认的执行器,每次执行sql原创 2021-09-20 11:54:39 · 437 阅读 · 0 评论 -
Java 单例模式
Java 单例模式单例模式第一版:public class Singleton { private Singleton() {} //私有构造函数 private static Singleton instance = null; //单例对象 //静态工厂方法 public static Singleton getInstance() { if (instance == null) { instance = new Singl原创 2021-09-14 20:02:13 · 107 阅读 · 0 评论 -
Spring AOP理解
Spring AOP理解:什么是AOP AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也就是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高了程序的可重用性,同时提高了开发效率。Aop在Spring中的作用原创 2021-09-14 15:55:11 · 122 阅读 · 0 评论 -
Java 冒泡/选择/快速排序及二分查找
冒泡排序时间复杂度为:O(n^2)public class BubbleSort {/** * N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。 * @param args */ public static void main(String[] args) { int arr[] = {26,15,29,66,99,88,36,77,111,1,6,8,8};原创 2021-09-13 16:07:20 · 146 阅读 · 0 评论 -
Collection和Map总结
Collection:Map:原创 2021-09-11 19:43:22 · 79 阅读 · 0 评论 -
Redis的经典三问以及哨兵
Redis的经典三问以及哨兵:1、什么是Redis: Redis是由意大利人Salvatore Sanfilippo(塞尔瓦托·桑菲利波)开发的一款开源的基于内存的高速缓存处理器。Redis的全称是Remote Dictionary Server(远程字典/数据服务器),该软件是使用C语言进行编写的。Redis是一个key-value键值对存储的系统,它具有string、list、set、zset(sorted set)、hash等数据类型,同时还是一款No原创 2021-09-11 13:59:02 · 114 阅读 · 0 评论 -
MySQL存储过程
MySQL存储过程:一、基本概念 我们常用的操作数据库语句在执行的时候需要先编译、然后再执行。而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数来调用执行它。 sql语句一般是零散的,sql语句如果是一句又一句的话,那么存储过程就是把这些话以顺序执行、分支执行或者循环执行组值起来的文章,这篇文章要到达一定的目的!二、原创 2021-09-08 22:03:32 · 364 阅读 · 1 评论 -
MySQL事务
MySQL事务:一、事务执行流程:二、事务的基本要素(ACID)1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位,是化学变化的最小粒子。2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。这表示写入的资料必须完全符合所有的预设规则,比如A向B转账,不可能A扣原创 2021-09-07 23:29:52 · 75 阅读 · 0 评论 -
Redis的持久化方式RDB和AOF的区别
redis的持久化方式RDB和AOF的区别:1.概论 使用到Redis做缓存,方便多个业务进程之间共享数据。由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB(Redis DataBase)持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一原创 2021-09-07 22:19:51 · 388 阅读 · 0 评论 -
MySQL中MyISAM和InnoDB的区别与实现
Mysql 中MyISAM和InnoDB的区别与实现:区别:InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一。InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会失败。InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限。执行大量select,MyISAM是最好的选择;执原创 2021-09-07 21:40:09 · 187 阅读 · 0 评论 -
七/四/五层网络模型
网络模型:一.体系结构 计算机网络的各层及其协议的集合被称为网络的体系结构,按照不同的维度,其常被分为七层、五层、四层网络结构:1.七层网络模型 开放式系统互联模型(Open System Interconnection Model,简称为 OSI 模型),七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机原创 2021-09-07 00:00:37 · 282 阅读 · 0 评论 -
Spring 静/动态代理模式
Spring 静/动态代理模式:AOP的底层就是动态代理代理模式分为静态代理和动态代理一、静态代理1.静态代理角色分析抽象角色 : 一般使用接口或者抽象类来实现真实角色 : 被代理的角色代理角色 : 代理真实角色 ; 代理真实角色后 , 一般会做一些附属的操作 .客户 : 使用代理角色来进行一些操作 .2.代码实现Rental . java 即抽象角色//抽象角色:租房public interface Rental { public void rent();}L原创 2021-08-27 17:40:39 · 108 阅读 · 0 评论 -
Mybatis 缓存
Mybatis 一二级缓存:1.什么是缓存? 存储在内存中的临时数据。 将用户需要经常查询的数据放在缓存中,用户去查询数据就不用从磁盘上进行查询,也就是访问数据库进行查询,从缓存中直接查询,提高了查询效率,解决了高并发系统的性能问题。2.为什么使用缓存? 减少与数据库的交互次数,减少系统开销,节省资源,提高系统的效率。3.什么样的数据能够使用缓存? 原创 2021-08-27 14:17:58 · 60 阅读 · 0 评论 -
Servlet简介及其运行原理
Servlet简介及其运行原理:1.Servlet是什么? Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或者其他HTTP客户端的请求和HTTP上的数据库或者应用程序的中间层,可交互式的处理客户端发送到服务端的请求,并完成操作相应。 Java Servlet是一种动态网页技术(JSP就是其体现)。 Java Servle原创 2021-08-26 20:10:22 · 520 阅读 · 0 评论 -
Java 四种内部类
Java 四种内部类:1.实例内部类public class InnerClassTest01 { private int a; private int b; InnerClassTest01(int a,int b){ this.a=a; this.b=b; } //内部类可以使用private和protected修饰 private class Inner1{ int i1=0; int原创 2021-08-19 16:54:44 · 85 阅读 · 0 评论 -
TCP三次握手和四次挥手
TCP三次握手和四次挥手:1.TCP的报文格式第一行:其中是源端口和目的端口各占16位,要在建立连接之前需要知道对方信息。(例如:IP,Port…)第二行:表示发送的数据字节流,确保TCP传输有序,对每个字节编号。第三行:发送放期望的下一个序列号,接收成功后的序列号加1,只有当ACK=1时菜有效.第四行:ACK:Acknowledge character(确定字符)是确认序号的标志,ACK=1表示有效,ACK=0表示报文不含确认序号信息.SYN:Synchronize Sequence Num原创 2021-08-12 21:40:06 · 303 阅读 · 0 评论 -
Java实体类的序列化
Java实体类的序列化:1.web服务器在进行服务的时候,有许多暂时没有活动未超时的HttpSession对象转移到文件系统或者数据库中进行保存,在服务器需要使用的时候在把这些对象载入到内存,这种方式叫做Session的持久化。2.将这些HttpSession对象保存到文件系统或者数据库中,需要采取序列化的方式,将对象的每一个属性进行保存,如果在将这些保存在文件系统或者数据库中的对象在载入内存并恢复该对象的每一个属性,这种方式叫做反序列化,所以我们在存储这些HttpSession对象中的每个属性对象就必原创 2021-07-30 17:36:10 · 2932 阅读 · 0 评论 -
Redis的雪崩穿透击穿
雪崩 穿透 击穿:雪崩:对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着急,重启数据库,但是数据库立马又被新的流量给打死了。雪崩解决:1.在缓存的时候给过期时间加上一个随机值,这样就会大幅度的减少缓存在同一时间过期。2.对于“Redis挂掉了,请求全部走数据库原创 2021-07-13 00:26:52 · 119 阅读 · 0 评论 -
Java Map遍历
Java Map遍历:方法一 在for-each循环中使用entries来遍历:Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + e原创 2021-04-29 16:51:11 · 101 阅读 · 0 评论 -
Java 文件的复制剪切
Java 文件的复制剪切:package three;import java.io.*;public class CopyCut { public static void main(String[] args) throws Exception { CopyCut CC=new CopyCut(); File in=new File("F:\\2102\\day22\\a"); BufferedReader reader=new Buffer原创 2021-04-04 19:22:48 · 248 阅读 · 0 评论 -
Java Servlet Cookie
Java ServletCookie:Servlet Cookie 处理Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。Java Servlet 显然支持 HTTP Cookie。识别返回用户包括三个步骤:服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。浏览器将这些信息存储在本地计算机上,以备将来使用。当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户。本章将向您讲解如何原创 2020-12-20 19:53:34 · 202 阅读 · 0 评论 -
Java 多线程同步异步
同步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求不到,怎么办,A线程只能等待下去异步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为没有同步机制存在,A线程仍然请求的到,A线程无需等待普通B/S模式(同步)AJAX技术(异步)同步:提交请求->等待服务器处理->处理完返回这个期间客户端浏览器不能干任何事异步:请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕可见,彼“同步”非此“同步”——我们说的j原创 2020-11-19 12:46:46 · 74 阅读 · 0 评论 -
Java 线程的5种状态
Java 线程的5种状态:线程共包括以下 5 种状态:1. 新建状态(New): 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。3. 运行状态(Running): 线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进原创 2020-11-19 11:35:44 · 181 阅读 · 0 评论 -
Java JSP文件调用原理
Java JSP文件调用原理1.Http服务器调用JSP步骤:(1)Http服务器将JSP文件内容 编辑 为一个Servlet接口实现类(.java)(2)Http服务器将Servlet接口实现类 编译 为class文件(.class)(3)Http服务器负责创建这个class的实例对象,这个实例对象就算Servlet实例对象(4)Http服务器通过Servlet实例对象调用_jspServlet()方法,将JSP文件内容写入到响应体2.Http服务器 编辑 与 编译 JSP 文件位置word原创 2020-11-15 17:20:58 · 270 阅读 · 0 评论 -
Java int和String类型的转换
1.int转Stringpublic class IntToStringDemo { public static void main(String[] args) { int num= 28; //方式一:(要会,但不推荐)拼接字符串 String s1 = "" + num; System.out.println(s1); //方式二(通用型,推荐方法)任何类型的数据转换成字符串原创 2020-11-01 22:08:28 · 131 阅读 · 0 评论 -
C语言 计算字符串长度的几种方法
C语言 计算字符串长度的几种方法C语言计算字符串长度,可以手动计算也可以使用库函数或者sizeof()操作符。自定义函数求长度使用strlen()函数使用sizeof()操作符自定义函数int cont_str(char *s){ int i = 0; while ( str[i++] != '\0'); return --i;}使用string头文件中的strlen()函数strlen(str); //假设str为待求的字符串数组名使用size原创 2020-09-23 21:09:30 · 14296 阅读 · 0 评论 -
Java Comparable与Comparator的区别
Java Comparable与Comparator的区别:一.Comparable简介Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。该接口定义如下:package java.lang;import java.util.*;public in原创 2020-09-06 14:25:06 · 87 阅读 · 0 评论 -
Java 多线程编程
Java 多线程编程:Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的。一个线原创 2020-08-29 18:12:57 · 71 阅读 · 0 评论 -
Java 日期时间
Java 日期时间:Java中如果要想获得当前的日期时间可以直接通过java.util.Date类来实现。此类的常用操作方法如下:No.方法类型描述1public Date()构造实例化Date类对象2public Date(long date)构造将数字变为Date类对象,long为日期时间数据3public long getTime()普通将当前的日期时间变为long型范例: 获取当前日期时间package seven.date;im原创 2020-08-28 15:18:17 · 235 阅读 · 0 评论 -
Java 流(Stream)、文件(File)和IO
Java 流(Stream)、文件(File)和IO:Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。读取控制台输入原创 2020-08-27 14:12:56 · 94 阅读 · 0 评论 -
Java 正则表达式
Java 正则表达式:在其他语言中,\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。在 Java 中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。所以,在其他的语言中(如Perl),一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达式中,两个 \ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \d,而表原创 2020-08-26 15:11:58 · 96 阅读 · 0 评论 -
Java 继承
Java 继承:继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。生活中的继承:兔子和羊属于食草动物类,狮子和豹属于食肉动物类。食草动物和食肉动物又是属于动物类。所以继承需要符合的关系是:is-a,父类更通用,子类更具体。虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性原创 2020-08-24 16:44:08 · 304 阅读 · 0 评论 -
Java Number & Math 类
Java Number & Math 类:一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。int a = 5000;float b = 13.65f;byte c = 0x4a;然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Nu原创 2020-08-24 15:50:23 · 96 阅读 · 0 评论 -
Java 反射机制
Java 反射机制:1.认识反射机制Class类是反射机制的根源,可以通过Object类所提供的方法获取一个Class实例获取Class实例化对象:public final Class<?> getClass()案例:获取反射信息package seven;import java.util.Date;public class JavaReflectDemo { public static void main(String[] args) { Date d原创 2020-08-19 15:02:32 · 93 阅读 · 0 评论 -
Java 多态
Java 多态:1.什么是多态性:多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:展现形式1: 方法的多态性(同样的方法有不同的实现)方法的重载:同一个方法可以根据传入的参数的类型,顺序和个数的不同实现不同的功能方法的重写:同一个方法可能根据实现子类的不同有不同的实现展现形式2: 对象的多态性(父类与子类之间的实例转换处理)对象向上转型:父类 父类实例=子类实例,自动完成转换对象向下转型:子类 子类实例=(子类)父类实例,强制原创 2020-08-18 18:03:36 · 147 阅读 · 0 评论