面试题
木村牧村
这个作者很懒,什么都没留下…
展开
-
Spring MVC 面试题
Spring MVC 面试题Spring MVCSpring MVC 框架有什么用?Spring Web MVC 框架提供”模型-视图-控制器”( Model-View-Controller )架构和随时可用的组件,用于开发灵活且松散耦合的 Web 应用程序。MVC 模式有助于分离应用程序的不同方面,如输入逻辑,业务逻辑和 UI 逻辑,同时在所有这些元素之间提供松散耦合。介绍下 Spri...原创 2020-01-17 17:20:44 · 971 阅读 · 0 评论 -
面试问烂的 Spring IOC 过程
面试问烂的 Spring IOC 过程1. 广义的 IOCIoC(Inversion of Control) 控制反转,即“不用打电话过来,我们会打给你”。两种实现: 依赖查找(DL)和依赖注入(DI)。IOC 和 DI 、DL 的关系(这个 DL,Avalon 和 EJB 就是使用的这种方式实现的 IoC):DL 已经被抛弃,因为他需要用户自己去是使用 API 进行查找资源和组...原创 2020-01-15 15:20:53 · 818 阅读 · 0 评论 -
dubbo面试题
dubbo面试题1.Dubbo 有几种配置方式?XML 配置注解配置属性配置Java API 配置详细参见官方文档:http://dubbo.apache.org/zh-cn/docs/user/configuration/xml.html比如,xml配置provider.xml 示例<beans xmlns:xsi="http://www.w3.org/2001/XM...原创 2020-01-02 17:46:55 · 2069 阅读 · 0 评论 -
Java并发编程:线程池的使用
Java并发编程:线程池的使用一.Java中的ThreadPoolExecutor类java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。下面我们来看一下ThreadPoolExecutor类的具体实现源码。在ThreadPoolExecutor类中提供了四个构造方法:public...转载 2019-06-19 14:07:59 · 143 阅读 · 0 评论 -
CountDownLatch
CountDownLatch原理1. 简介在上篇博客中,我们介绍了 Java 四大并发工具之一的 CyclicBarrier ,今天要介绍的CountDownLatch 与 CyclicBarrier 有点儿相似。用给定的计数初始化 CountDownLatch。由于调用了 #countDown() 方法,所以在当前计数到达零之前,#await() 方法会一直受阻塞。之后,会释放所有等待的...转载 2019-05-29 10:53:42 · 2349 阅读 · 0 评论 -
CyclicBarrier
CyclicBarrier原理1. 简介CyclicBarrier ,一个同步辅助类,在 AP I中是这么介绍的:它允许一组线程互相等待,直到到达某个公共屏障点 (Common Barrier Point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 Barrier 在释放等待线程后可以重用,所以称它为循环( Cyclic ...转载 2019-05-29 10:53:22 · 322 阅读 · 0 评论 -
信号量 Semaphore
信号量 Semaphore1. 简介信号量 Semaphore 是一个控制访问多个共享资源的计数器,和 CountDownLatch 一样,其本质上是一个“共享锁”。一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire,然后再获取该许可。每个 release 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对...转载 2019-05-29 10:31:20 · 1479 阅读 · 0 评论 -
深入分析 CAS
深入分析 CAS1. 概述CAS ,Compare And Swap ,即比较并交换。Doug Lea 大神在实现同步组件时,大量使用CAS 技术,鬼斧神工地实现了Java 多线程的并发操作。整个 AQS 同步组件、Atomic 原子类操作等等都是基 CAS 实现的,甚至 ConcurrentHashMap 在 JDK 1.8 的版本中,也调整为 CAS + synchronized 。可以说...转载 2019-05-29 10:30:51 · 200 阅读 · 0 评论 -
LinkedBlockingQueue 和 ConcurrentLinkedQueue的用法及区别
LinkedBlockingQueue 和 ConcurrentLinkedQueue的用法及区别在 Java 多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的 Queue 可以分为阻塞队列,典型例子是 LinkedBlockingQueue适用阻塞队列的好处:多线程操作共同的队列时不需要额外的同步,另外就是队列会自动平衡负载,即...转载 2019-05-28 16:00:56 · 708 阅读 · 0 评论 -
从一个故障说说Java的三个BlockingQueue
从一个故障说说Java的三个BlockingQueue最近出了个故障,排查的时候耗费了很长的时间,回顾整个排查过程,经验主义在这里起了不好的作用,直接导致了整个故障排查的时间非常长,这个故障的根本原因在于BlockingQueue用的有问题,顺带展开说说Java中常用的几个BlockingQueue:ArrayBlockingQueue、LinkedBlockingQueue和Synchrono...转载 2019-05-28 16:00:34 · 189 阅读 · 0 评论 -
ArrayBlockingQueue与LinkedBlockingQueue
ArrayBlockingQueue与LinkedBlockingQueue序本文主要简单介绍下ArrayBlockingQueue与LinkedBlockingQueue。对比queue阻塞与否是否有界线程安全保障适用场景注意事项ArrayBlockingQueue阻塞有界一把全局锁生产消费模型,平衡两边处理速度用于存储队列元素的存储空间是预先分配的...转载 2019-05-28 16:00:08 · 200 阅读 · 0 评论 -
阻塞队列(七):BlockingQueue 总结
阻塞队列(七):BlockingQueue 总结经过前面六篇博客的阐述,我想各位应该对阻塞队列BlockingQueue有了较为深入的理解,下面来一个总结,先看整个类图:BlockingQueueBlockingQueue接口实现Queue接口,它支持两个附加操作:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。相对于同一操作他提供了四种机制:抛出异常、返回特殊值、阻塞等待、超...转载 2019-05-28 14:12:28 · 327 阅读 · 0 评论 -
阻塞队列(六):LinkedBlockingDeque
阻塞队列(六):LinkedBlockingDeque前面的BlockingQueue都是单向的FIFO队列,而LinkedBlockingDeque则是一个由链表组成的双向阻塞队列,双向队列就意味着可以从对头、对尾两端插入和移除元素,同样意味着LinkedBlockingDeque支持FIFO、FILO两种操作方式。LinkedBlockingDeque是可选容量的,在初始化时可以设置容量防...转载 2019-05-28 14:12:06 · 828 阅读 · 0 评论 -
阻塞队列(五):LinkedTransferQueue
阻塞队列(五):LinkedTransferQueue前面提到的各种BlockingQueue对读或者写都是锁上整个队列,在并发量大的时候,各种锁是比较耗资源和耗时间的,而前面的SynchronousQueue虽然不会锁住整个队列,但它是一个没有容量的“队列”,那么有没有这样一种队列,它即可以像其他的BlockingQueue一样有容量又可以像SynchronousQueue一样不会锁住整个队列...转载 2019-05-28 14:11:35 · 372 阅读 · 0 评论 -
阻塞队列(四):SynchronousQueue
阻塞队列(四):SynchronousQueue作为BlockingQueue中的一员,SynchronousQueue与其他BlockingQueue有着不同特性:SynchronousQueue没有容量。与其他BlockingQueue不同,SynchronousQueue是一个不存储元素的BlockingQueue。每一个put操作必须要等待一个take操作,否则不能继续添加元素,反之...转载 2019-05-28 14:11:12 · 266 阅读 · 0 评论 -
阻塞队列(三):DelayQueue
阻塞队列(三):DelayQueueDelayQueue是一个支持延时获取元素的无界阻塞队列。里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素,如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行。也就是说只有在延迟期到时才能够从队列中取元素。DelayQueue主要用于两个方面:缓存:清掉缓存中超时的缓存数据任务超时处理DelayQueueDela...转载 2019-05-28 14:10:49 · 162 阅读 · 0 评论 -
Java【并发】面试题
Java【并发】面试题Java 线程简述线程、进程、程序的基本概念?程序程序,是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。转载 2019-06-19 14:32:34 · 2448 阅读 · 0 评论 -
Java集合面试题
Java集合面试题Java 集合框架的基础接口有哪些?Collection ,为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java 平台不提供这个接口任何直接的实现。Set ,是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。List ,是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List 更像长度动态...转载 2019-06-25 14:46:19 · 28650 阅读 · 8 评论 -
maven面试题
Maven 是什么?Maven 主要服务于基于 Java 平台的项目构建、依赖管理和项目信息管理。Maven 的主要功能主要分为 5 点:依赖管理系统多模块构建一致的项目结构一致的构建模型和插件机制转载 2019-06-26 16:46:20 · 36976 阅读 · 2 评论 -
简单面试题,但是容易忘记
简单面试题,但是容易忘记1.为什么等待和通知是在 Object 类而不是 Thread 中声明的?**1) wait 和 notify 不仅仅是普通方法或同步工具,更重要的是它们是 Java 中两个线程之间的通信机制。**对语言设计者而言, 如果不能通过 Java 关键字(例如 synchronized)实现通信此机制,同时又要确保这个机制对每个对象可用, 那么 Object 类则是的正确声明...原创 2019-09-06 16:25:06 · 632 阅读 · 0 评论 -
MySQL 面试题
MySQL 面试题MySQL 涉及的内容非常非常非常多,所以面试题也容易写的杂乱。当年,我们记着几个一定要掌握的重心:重点的题目添加了【重点】前缀。索引。锁。事务和隔离级别。因为 MySQL 还会有部分内容和运维相关度比较高,所以本文我们分成两部分【开发】【运维】两部分。对于【开发】部分,我们需要掌握。对于【运维】部分,更多考验开发的知识储备情况,当然能回答出来是比较好的...原创 2019-09-02 16:03:33 · 61697 阅读 · 15 评论 -
【MySQL】经典面试题
【MySQL】经典面试题经典题目1、MySQL的复制原理以及流程主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中;从:sql执行线程——执行relay log中的语句;2、MySQL中myisam与innodb的...原创 2019-09-02 16:03:02 · 2091 阅读 · 0 评论 -
mysql优化
MySQL查询优化1.分析查询速度explain分析单条的SQL语句mysql> explain select * from user;+----+-------------+-------+--------+---------------+------+---------+------+------+-------+| id | select_type | table | ...原创 2019-08-27 11:25:13 · 269 阅读 · 0 评论 -
MM+keepalived 高可用
MM+keepalived**MM+keepalived **简介:双主配合keepalived这种架构设计,也是基于主从复制的原理而搭建的。使用MySQL主主复制技术+Keepalived是一种简单、便捷的解决方案,在高可用集群环境中,keepalived使用VIP,使用Keepalived自带的服务监控功能和自定义脚本来实现MySQL故障时自动切换,非常灵活。应用范围:一般中小型...原创 2019-08-27 11:15:44 · 465 阅读 · 1 评论 -
MySQL日志文件之错误日志和慢查询日志详解
MySQL日志文件之错误日志和慢查询日志详解本文链接:https://blog.csdn.net/u010870518/article/details/76019934一、MySQL日志文件分类官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html日志文件记录了影响MySQL数据库的各种类型活动。常见的日志有以下几个:...转载 2019-08-27 10:27:46 · 406 阅读 · 0 评论 -
git常用命令
git命令大全1.查看git版本$ git --version2.设置用户名,邮箱$ git config --global user.name "test"$ git config --global user.email "test@test.com"#清空用户名,邮箱$ git config --unset --global user.name$ git config --u...原创 2019-08-22 10:56:04 · 332 阅读 · 0 评论 -
深入理解MySQL索引原理和实现——为什么索引可以加速查询?
深入理解MySQL索引原理和实现——为什么索引可以加速查询?说到索引,很多人都知道“索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。”但是索引是怎么实现的呢?因为索引并不是关系模型的组成部分,因此...原创 2019-08-23 16:54:39 · 555 阅读 · 0 评论 -
MySQL索引使用的注意事项
MySQL索引使用的注意事项MySQL 索引通常是被用于提高 WHERE 条件的数据行匹配时的搜索速度,在索引的使用过程中,存在一些使用细节和注意事项。不要在列上使用函数和进行运算不要在列上使用函数,这将导致索引失效而进行全表扫描。select * from news where year(publish_time) < 2017为了使用索引,防止执行全表扫描,可以进行改造。s...转载 2019-07-16 11:34:46 · 870 阅读 · 1 评论 -
MySQL(07) 范式与反模式
MySQL(07) 范式与反模式数据库范式是为解决关系数据库中数据冗余、更新异常、插入异常、删除异常问题而引入的。简单的理解,数据库范式可以避免数据冗余,减少数据库的空间,并且减轻维护数据完整性的麻烦。第一范式(1NF)第一范式,强调属性的原子性约束,要求属性具有原子性,不可再分解。举个例子,活动表(活动编码,活动名称,活动地址),假设这个场景中,活动地址可以细分为国家、省份、城市、市区、...转载 2019-06-28 10:48:34 · 405 阅读 · 0 评论 -
ArrayList 扩容详解,扩容原理
ArrayList 扩容详解,扩容原理ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长。ArrayList不是线程安全的,只能用在单线程环境下。实现了Serializable接口,因此它支持序列化,能够通过序列化传输;实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问;实现了Cloneable接口,能被克隆。动态扩容一 初始化...转载 2019-06-24 17:46:15 · 7647 阅读 · 2 评论 -
计算机网络面试题
计算机网络面试题网络体系结构强烈推荐阅读两篇文章:艿艿:可以后续回过头来看。《计算机网络体系结构综述(上)》《计算机网络体系结构综述(下)》简单一瞥:OSI 七层体系结构具有概念清楚、理论完整的特点,是一个理论上的国际标准,但却不是事实上的国际标准。具有简单易用特点的 TCP/IP 四层体系结构则是事实上的标准。需要指出的是,五层体系结构虽然综合了 OSI 和 TCP/...转载 2019-06-27 15:02:27 · 15614 阅读 · 1 评论 -
Linux面试题
常用命令艿艿:这一小节会非常非常非常长,当做温故知新吧。另外,面试官也可能会问,你熟悉 Linux 么?你平时使用哪些 Linux 命令。酱紫的连环炮~当然,建议重点看下 「性能相关」 小节。目录相关find 命令《Linux 命令大全 —— find 命令》查找指定文件名的文件(不区分大小写):find -iname "MyProgram.c" 。对找到的文件执行某个命令:...转载 2019-06-26 17:11:37 · 199253 阅读 · 32 评论 -
阻塞队列(二):PriorityBlockingQueue
阻塞队列(二):PriorityBlockingQueue我们知道线程Thread可以调用setPriority(int newPriority)来设置优先级的,线程优先级高的线程先执行,优先级低的后执行。而前面介绍的ArrayBlockingQueue、LinkedBlockingQueue都是采用FIFO原则来确定线程执行的先后顺序,那么有没有一个队列可以支持优先级呢? PriorityBl...转载 2019-05-28 14:10:12 · 631 阅读 · 0 评论 -
阻塞队列(一):ArrayBlockingQueue
阻塞队列(一):ArrayBlockingQueue1. 简介ArrayBlockingQueue,一个由数组实现的有界阻塞队列。该队列采用 FIFO 的原则对元素进行排序添加的。ArrayBlockingQueue 为有界且固定,其大小在构造时由构造函数来决定,确认之后就不能再改变了。ArrayBlockingQueue 支持对等待的生产者线程和使用者线程进行排序的可选公平策略,但是在默...转载 2019-05-28 14:09:28 · 581 阅读 · 0 评论 -
ConcurrentHashMap 红黑树转换分析
ConcurrentHashMap 红黑树转换分析先看红黑树的基本概念:红黑树是一课特殊的平衡二叉树,主要用它存储有序的数据,提供高效的数据检索,时间复杂度为O(lgn)。红黑树每个节点都有一个标识位表示颜色,红色或黑色,具备五种特性:每个节点非红即黑根节点为黑色每个叶子节点为黑色。叶子节点为NIL节点,即空节点如果一个节点为红色,那么它的子节点一定是黑色从一个节点到该节点的子孙节点...转载 2019-05-13 15:34:21 · 3112 阅读 · 2 评论 -
Sleep(0)的妙用
Sleep(0)的妙用Thread.Sleep(0) 并非是真的要线程挂起0毫秒,意义在于这次调用Thread.Sleep(0)的当前线程确实的被冻结了一下,让其他线程有机会优先执行。Thread.Sleep(0) 是你的线程暂时放弃cpu,也就是释放一些未用的时间片给其他线程或进程使用,就相当于一个让位动作。Thread th = new Thread(new ThreadStart(Mai...转载 2019-04-28 11:28:11 · 225 阅读 · 0 评论 -
Java多线程——线程间协作方式总结及使用示例
Java多线程——线程间协作方式总结及使用示例线程之间的协作方式方式一、wait()、notify()、notifyAll()wait()提供了一种在任务之间对活动同步的方式。wait()使你可以等待某个条件发生变化,通常,这种条件将由另一个任务来改变。wait()会在等待外部世界发生变化的时候将任务挂起(而不是执行空循环,进行忙等待),并且只有在notify()或notifyAll()发...转载 2019-04-26 14:17:36 · 578 阅读 · 0 评论 -
Notify通知机制解析
Wait/Notify通知机制解析前言我们知道,java的wait/notify的通知机制可以用来实现线程间通信。wait表示线程的等待,调用该方法会导致线程阻塞,直至另一线程调用notify或notifyAll方法才可另其继续执行。经典的生产者、消费者模式即是使用wait/notify机制得以完成。在这篇文章中,我们将深入解析这一机制,了解其背后的原理。线程的状态在了解wait/noti...转载 2019-04-26 14:06:00 · 1094 阅读 · 0 评论 -
JAVA多线程之UncaughtExceptionHandler——处理非正常的线程中止
JAVA多线程之UncaughtExceptionHandler——处理非正常的线程中止当单线程的程序发生一个未捕获的异常时我们可以采用try…catch进行异常的捕获,但是在多线程环境中,线程抛出的异常是不能用try…catch捕获的,这样就有可能导致一些问题的出现,比如异常的时候无法回收一些系统资源,或者没有关闭当前的连接等等。首先来看一个示例:package com.exceptio...转载 2019-04-26 10:48:47 · 678 阅读 · 0 评论 -
深入理解7种垃圾收集器
深入理解7种垃圾收集器**如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。**Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。接下来讨论的收集器基于JDK1.7 Update 14 之后的HotSpot虚拟机(在此版...转载 2019-03-22 16:26:31 · 1700 阅读 · 1 评论