
面试
灯盏菜
上火你就喝灯盏菜啊
展开
-
【spring】spring boot 注解启动流程
SpringBoot 究竟是如何跑起来的?SpringBoot中的条件注解底层是如何实现?如何让这些条件注解生效的?SpringBoot 启动类 @SpringBootApplication 注解 以及执行流程原创 2021-01-09 17:42:07 · 393 阅读 · 1 评论 -
【Java基础】理解Java虚拟机-运行时数据区
JVM运行时数据区堆方法区虚拟机栈程序计算器本地方法栈运⾏时栈帧结构局部变量表操作栈动态链接返回地址原创 2021-01-09 17:38:33 · 286 阅读 · 0 评论 -
【Java基础】 内部类 基础知识结构
成员内部类局部内部类匿名内部类静态内部类为什么局部内部类和匿名内部类只能访问局部final变量?原创 2021-01-09 17:22:43 · 187 阅读 · 0 评论 -
【转载】【面试】高并发处理思路与手段
扩容缓存队列应用拆分限流服务熔断与降级数据库分表分库原创 2020-12-05 09:54:03 · 152 阅读 · 0 评论 -
【转载】【面试】【多线程】多线程并发与线程安全
线程安全性原子性、可见性、有序性volatilehappens -beforeJava并发编程:volatile关键字解析https://www.cnblogs.com/dolphin0520/p/3920373.htmlcas算法CAS算法的理解及应用 https://blog.youkuaiyun.com/mashaokang1314/article/details/84335970理解CAS算法在JAVA中的作用 https://www.cnblogs.co...转载 2020-12-03 22:04:50 · 149 阅读 · 0 评论 -
【面试基础复习】github -Java基础
Java基础https://github.com/CyC2018/CS-Notes/blob/master/notes/Java%20%E5%9F%BA%E7%A1%80.md一、数据类型 :基本类型 ,包装类型 ,缓存池二、string :不可变的好处 ,string stringbuffer stringbuilder 区别 ,string pool ,newstring("abc")三、运算 :参数传递 ,flot double ,隐式类型转换 ,switch四、关键...转载 2020-09-27 22:47:15 · 278 阅读 · 0 评论 -
【面试】JAVA 多线程并发(下)
转载 Java 并发进阶常见面试题总结1、synchronized1.1 说一说对于synchronized关键字的了解synchronized关键字解决的是多线程之间访问资源的同步性问题。synchronized可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。在早期版本中,synchronized属于重量级锁,效率低,因为监视(monitor)是依赖于底...转载 2019-05-04 21:15:11 · 238 阅读 · 1 评论 -
【面试】Nginx全面解析 --【负载均衡、反向代理、高可用、宕机容错】
1、什么是NginxNginx是一个高性能的HTTP和反向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。 同时也是一个非常高效的反向代理、负载平衡。 cpu、内存等资源消耗却非常低,运行非常稳定。 多进程异步非阻塞事件处理机制:运用了epoll模型2、为什么要用Nginx跨平台、配置简单。 非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万...转载 2019-04-19 18:09:19 · 1457 阅读 · 0 评论 -
分库分表--如何做到永不迁移数据和避免热点
转载分库分表?如何做到永不迁移数据和避免热点?1、前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们...转载 2019-04-29 15:09:20 · 1430 阅读 · 0 评论 -
【面试】redis缓存穿透、缓存击穿、缓存雪崩区别和解决方案
设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。缓存穿透描述: 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求。由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据...转载 2019-04-23 18:40:03 · 90367 阅读 · 23 评论 -
【转载】Redlock(redis分布式锁)原理分析
转载 Redlock(redis分布式锁)原理分析Redlock:全名叫做 Redis Distributed Lock;即使用redis实现的分布式锁;使用场景:多个服务间保证同一时刻同一时间段内同一用户只能有一个请求(防止关键业务出现并发攻击);官网文档地址如下:https://redis.io/topics/distlock这个锁的算法实现了多redis实例的情况...转载 2019-04-23 12:17:06 · 964 阅读 · 0 评论 -
【面试】 MySQL的读写分离的思路
1、读写分离是什么读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。2、为什么要读写分离呢?增加冗余 增加机器的处理能力 对于读操作作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上...转载 2019-04-18 15:45:48 · 915 阅读 · 0 评论 -
MySQL的执行流程 —— 一条SQL语句在MySQL中如何执行的
References•《MySQL实战45讲》•MySQL 5.6参考手册:https://dev.MySQL.com/doc/refman/5.6/en/[16]转载 一条SQL语句在MySQL中如何执行的1.MySQL 基本架构概览Server 层 :主要包括连接器,查询缓存,分析器,优化器,执行器。所有跨存储引擎的功能都在这一层实现 ,比如,存储过程,...转载 2019-04-18 11:20:30 · 260 阅读 · 0 评论 -
【面试】为什么要重写hashcode和equals方法?
1、通过Hash算法来了解HashMap对象的高效性先复习数据结构里的一个知识点:在一个长度为n(假设是10000)的线性表(假设是ArrayList)里,存放着无序的数字;如果我们要找一个指定的数字,就不得不通过从头到尾依次遍历来查找,这样的平均查找次数是n除以2(这里是5000)。我们再来观察Hash表(这里的Hash表纯粹是数据结构上的概念,和Java无关)。它的平均查找次数接...转载 2019-04-19 23:35:39 · 1070 阅读 · 1 评论 -
Java 开发 设计模式 ----策略模式strategy
策略模式 strategy策略模式 strategy 定义了一系列算法,并将每个算法封装起来,使得他们可以相互转化,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(辅助类)。ICalculator提供统一的方法。AbstractCalculator是辅助类,提供辅助方法,接下来,依次实现下每个类:首先...原创 2019-04-20 13:57:49 · 273 阅读 · 0 评论 -
【面试】分布式事务方案与分布式系统一致性
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。分布式系统的经典基础理论 CAP 理论对于一个分布式计算系统来说,不可...转载 2019-04-24 21:04:45 · 948 阅读 · 1 评论 -
【转载】MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
转载MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的 ISAM (Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5...转载 2019-05-05 11:57:57 · 141 阅读 · 0 评论 -
MySQL锁机制
转载一、 锁分类(按照锁的粒度分类) 表级锁 Mysql中锁定粒度最大的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyISAM和 InnoDB引擎都支持表级锁。表锁下又分为两种模式:表读锁(Table Read Lock) 表写锁(Table Write Lock)从下图可...转载 2019-05-05 14:38:42 · 224 阅读 · 0 评论 -
【面试】MySQL事务隔离
转载事务隔离级别(图文详解)什么是事务事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都...转载 2019-05-05 15:25:01 · 169 阅读 · 0 评论 -
Spring中bean的作用域与生命周期
转载【Spring】Bean的生命周期Spring中bean的作用域与生命周期在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean的定义以及bean相互间的依赖关系将通过配置元数据来描述。 Spring中...转载 2019-04-30 17:53:17 · 281 阅读 · 2 评论 -
【面试】反射用到了哪些接口,哪些类?--Java基础知识
反射用到了哪些接口,哪些类?JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射就是把java类中的各种成分映射成一个个的Java对象接口和类:类:Class(Class 对象是在加载类时由 Java 虚拟机...原创 2019-03-27 18:48:31 · 1565 阅读 · 0 评论 -
【面试】消息中间件 Rabbit MQ
1、为什么使用RabbitMQ? RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件;优点流量削峰,高并发缓存 消息缓冲 消息分发 应用解耦(系统拆分,分布式解耦) 异步处理(预约挂号业务处理成功后,异步发送短信、推送消息、日志记录等)缺点系统可用性降低(MQ中间件突然挂掉) 系统稳定性降低(消息丢失) 分布式一致性问题...转载 2019-04-14 17:08:06 · 450 阅读 · 0 评论 -
笔试题
【1】hello world(10分)描述:判断从一个字符串中是否能抓取出helloworld,可以不连续但是一定要保持顺序。如helllllllo wwwwwwworld 但不能是helolllllworld。 public static boolean isHelloWorld(String text) { char[] word1=text.toCharArray()...原创 2019-04-16 15:10:31 · 235 阅读 · 2 评论 -
【面试】Java泛型
1. 概述Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。2. 为什么要用泛型--解决编译时期的问题public class Gen...转载 2019-04-11 10:37:22 · 158 阅读 · 0 评论 -
【面试】Java中sleep方法和wait方法的区别? --Java基础
Java中sleep方法和wait方法的区别最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁)。 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围) 。 sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常 。...原创 2019-03-28 09:39:32 · 191 阅读 · 0 评论 -
【面试】Java static方法能否被重写或重载
“覆盖”只有在某方法是基类的接口的一部分时才会出现。即,必须能将一个对象向上转型为它的基本类型并调用相同的方法。class StaticSuper{ public static void staticGet() { System.out.println("StaticSuper staticGet"); } public void dynamicG...原创 2019-04-10 21:01:44 · 17303 阅读 · 3 评论 -
【面试】Redis面试常见问题总结
Redis是单进程单线程的,Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。Redis快的主要原因是:完全基于内存 数据结构简单,对数据操作也简单 使用多路 I/O 复用模型redis 的单进程单线程的,利用队列技术,...原创 2019-04-10 18:06:18 · 186 阅读 · 0 评论 -
Java从入门到放弃 --没放弃就写java程序员职业规划
网上很多这样的段子,表情包 : Java从入门到放弃,从入门到改行,从入门到出轨,,,最近看到一段话,很喜欢何炅说的一段话:想要得到,你就要学会付出,要付出还要坚持;如果你真的觉得很难,那你就放弃,如果你放弃了就不要抱怨。人生就是这样,世界是平衡的,每个人都是通过自己的努力去决定自己生活的样子。 最怕的就是我懵懵懂懂过了一年,这一年似乎没有改变,,,,,,翻...原创 2019-04-10 16:03:40 · 944 阅读 · 1 评论 -
【面试】volatile有什么用? --Java基础知识
volatile有什么用?把代码声明synchronized 有两个重要的后果,通常指该代码的原子性atomicty和可见性visibility。原子性意味着 这个时刻只有一个线程能够执行一段代码,这代码通过一个monitor object保护。从而防止多个线程在更新共享状态时相互冲突。 可见性则更奇妙 ,他必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另...原创 2019-03-27 18:42:18 · 186 阅读 · 0 评论 -
【面试】 MySQL语句优化 --通过慢查询日志监控查询语句性能分析
一、定位慢查询 1.1、数据库准备首先创建一个数据库表:CREATE TABLE emp(empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '编号',ename VARCHAR(20) NOT NULL DEFAULT "" COMMENT '名字',job VARCHAR(9) NOT NULL DEFAUL...转载 2019-03-26 20:53:48 · 465 阅读 · 0 评论 -
【面试】兼任IE低版本思路方案
【主要是针对ie6 7 8对支持和让老浏览器支持html5+css3的一些js脚本】 html5shiv.js // 让IE8及耕地版本的IE识别section,article,nav等html5元素 CSS3Pie(www.css3pie.com) // 让IE6-IE9支持圆角,背景渐变,边框图片,盒子阴影,RGB...原创 2019-03-26 17:45:59 · 273 阅读 · 0 评论 -
【面试】HTTP中post和get的区别 --Java面试题
1. get在浏览器回退时是无害的,而post会再次提交请求;2. get产生的url可以被添加到书签,而post不可以;3. get请求会被浏览器主动缓存,而post不会,除非手动设置;4. get请求只能进行url编码,而post支持多种编码方式;5. get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留;6. ge...转载 2019-03-26 15:23:31 · 633 阅读 · 0 评论 -
【面试】平时是如何优化MySQL的?
1、EXPLAIN做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。mysql> explain select * from emp where empno=413345\G;*************************** 1. row *************************** id: 1 select_type: ...转载 2019-03-28 15:58:28 · 255 阅读 · 0 评论 -
【面试】Java的OOP三特性 与抽象类
一、抽象类 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象类的声明格式如下:public abstract class ClassName { abstract void...原创 2019-03-28 13:43:37 · 347 阅读 · 0 评论 -
【面试】tomcat 8的特性
Servlet 3.1Servlet 3.1最大的改进是实现了非阻塞式的I/O通信。这使得性能得到巨大的改进,数据可以通过ReadListener和WriteListener接口以异步的方式进行管理。Servlet 3.1的第二大改进是HTTP协议的升级。它允许客户端指定双方通信所使用的协议。比如说,服务器和客户端原本使用HTTP通信协议,能够升级成WebSockets通信。...原创 2019-04-09 17:20:38 · 371 阅读 · 0 评论 -
【面试】数据库的三大范式以及五大约束
实体:表; 属性:表中的数据(字段); 关系:表与表之间的关系;数据库设计三大范式(重点): 第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性; 例如:userInfo:山东省烟台市 131777368781 --》 userAds:山东0省烟台市 userTel:1317773...原创 2019-04-09 17:10:09 · 441 阅读 · 0 评论 -
【面试】JAVA 多线程并发(上)
1.JAVA 线程实现/创建方式 1.1继承 Thread 类Thread类实质上是实现了Runnable接口的一个实例,代表一个线程的实例,启动的方法通过Thread类的start()方法,start()方法是一个native()方法,它将启动一个新的线程,并执行run()方法。public class MyThread extends Thread { pub...原创 2019-04-12 12:40:33 · 199 阅读 · 0 评论 -
【面试】遍历HashMap的方法以及性能比较
JDK8之前,可以使用keySet或者entrySet来遍历HashMap,JDK8中引入了map.foreach来进行遍历。原因:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而entrySet只是遍历了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法。...原创 2019-04-08 22:29:24 · 244 阅读 · 0 评论 -
【面试】拦截器、过滤器、监听器 servlet、filter、listener、interceptor 区别总结
1、过滤器:依赖于servlet容器; 在实现上基于函数回调,可以对几乎所有请求进行过滤; 缺点是一个过滤器实例只能在容器初始化时调用一次; 使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。2、拦截器:依赖于web框架,在SpringMVC中就是...原创 2019-04-08 21:42:50 · 1301 阅读 · 0 评论 -
【面试】SpringMVC与Struts2区别与比较总结
一、框架机制1、Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。 2、Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。二、拦截机制Struts2框架是类级别的...转载 2019-04-08 21:25:53 · 498 阅读 · 0 评论