![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试专题
每天一个搞懂一个面试题
害你加班的BUG都是我写的
热爱编程
展开
-
SQL查询某条数据是否存在,不用count(*)
// SQLSELECT count(*) FROM table WHERE a = 1 AND b = 2// JAVAint nums = xxDao.countXxxxByXxx(params);if ( nums > 0 ) { //当存在时,执行这里的代码} else { //当不存在时,执行这里的代码}这是一条经典的错误查询,因为在没有索引的情况下它会遍历整个数据库。但是在日常业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。优化方案/原创 2020-08-28 11:28:35 · 1034 阅读 · 0 评论 -
SpringMVC执行流程解析
Spring mvc执行流程用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件。前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc.xml中配置的或者注解的url与对应的处理类找到并进行存储,用map<url,handl转载 2020-06-01 12:49:54 · 255 阅读 · 0 评论 -
Spring AOP详解
AOP作用:在不修改源代码的情况下,可以实现功能的增强1. 静态代理要说AOP,它的核心是动态代理,说道动态代理,必须先说静态代理。静态代理是通过新增代理类对源代码进行增强IRunnner接口如下public interface IRunner{ public void run();}Runner类如下public class Runner implements IRunner { @Override public void run() { Sys原创 2020-05-22 00:55:03 · 183 阅读 · 0 评论 -
Java多线程和线程池详解
多线程1. 线程的声明周期新建 :从新建一个线程对象到程序start() 这个线程之间的状态,都是新建状态;就绪 :线程对象调用start()方法后,就处于就绪状态,等到JVM里的线程调度器的调度;运行 :就绪状态下的线程在获取CPU资源后就可以执行run(),此时的线程便处于运行状态,运行状态的线程可变为就绪、阻塞及死亡三种状态。等待/阻塞/睡眠 :在一个线程执行了sleep(睡眠)、suspend(挂起)等方法后会失去所占有的资源,从而进入阻塞状态,在睡眠结束后可重新进入就绪状态。终止 :原创 2020-05-09 16:15:12 · 857 阅读 · 0 评论 -
Spring系列:AOP
原文链接:狂神说Spring07:AOP就这么简单什么是AOPAOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间...转载 2020-05-08 10:33:00 · 126 阅读 · 0 评论 -
Synchronized面试概念总结
1.什么是SynchroniedSynchronized是一个同步关键字,解决多个线程对共享资源的同步性问题,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。1.1 修饰目标修饰目标锁方法实例方法当前实例对象(即方法调用者)静态方法类对象代码块this当前实例对象(即方法调用者)class对象...原创 2020-05-03 00:00:33 · 159 阅读 · 0 评论 -
MySQL常见面试概念理解
1. MySQL有哪些引擎?其实有很多引擎,但是我们平常就知道InnoDB和MyISAM就足够了1.1 InnoDB和MyISAM的区别InnoDB在主键上建聚簇索引:将主键组织到一棵B+树中,而行数据就储存在叶子节点上。在非主键上建辅助索引:第一步在辅助索引B+树中检索属性值,到达其叶子节点获取对应的主键;第二步使用主键在主索引B+树种再执行一次B+树检索操作(回表),最终到达叶子节点即...原创 2020-05-02 19:49:02 · 417 阅读 · 0 评论 -
JVM面试题常见概念总结
介绍一下JVM的内存模型线程私有的,有虚拟机栈,本地方法栈,程序计数器线程共享的,有堆和方法区程序计数器看作是当前线程执行的字节码行号的一个指示器,指示下一个要执行的语句,所以必须是线程私有的虚拟机栈就是线程的栈,保存局部变量。当执行一个方法时,会向这个栈区放入一个栈帧本地方法栈和虚拟机栈服务,区别就是虚拟机栈是为Java字节码服务;而本地方法栈是为本地native方法服务...原创 2020-05-01 14:21:18 · 209 阅读 · 0 评论 -
TheadLocal的理解
ThreadLocal是什么?ThreadLocal是用来维护线程中的变量不被其他线程干扰而出现的一个结构,内部包含一个ThreadLocalMap类,该类为Thread类的一个局部变量,该Map存储的key为ThreadLocal对象自身,value为我们要存储的对象,这样一来,在不同线程中,持有的其实是当前线程的变量副本,与其他线程完全隔离,以此来保证线程执行过程中不受其他线程的影响。Th...原创 2020-04-30 19:41:45 · 390 阅读 · 0 评论 -
Java:为什么要有包装类
java中有了基本类型为什么还要有包装类型?个人总结包装类的思想并不是简单的让Java基本类型拥有OOP的特性,更深层的用意是——由于Java的底层运行是JVM,而Java虚拟机在运行时分为了五个分区基础类型保存的位置位于栈区,而我们常用的数据结构容器类:List,Set,Map等容器类因为是对象的属性,会分配到堆区(为什么这样设计,我就不懂了)。因为两个区的不同,所以必须有一个在创建在堆...原创 2020-04-25 01:12:25 · 906 阅读 · 0 评论 -
Java面试:Collections和Collection的区别
Collection从官方文档看,Collection是一个顶层接口,绝大多数常用的容器类都实现了Collection接口,里面定义的容器类的基本方法,例如:CollectionsCollections是一个工具类,此类不能实例化,就像一个工具类,服务于Java的Collection框架。他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。总结Collection...原创 2020-04-25 01:03:32 · 306 阅读 · 0 评论