![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
底层原理与面试
文章平均质量分 57
底层原理与面试
qq_718985935
骑着笨鸟飞呀飞
展开
-
Spring源码分析——循环依赖
Spring源码分析——循环依赖转载 2023-03-11 21:48:56 · 147 阅读 · 0 评论 -
Spring源码分析——SpringIOC
Spring源码分析——SpringIOC转载 2023-03-11 21:44:51 · 129 阅读 · 0 评论 -
Spring源码分析——AOP
Spring源码分析——AOP转载 2023-03-11 21:42:51 · 97 阅读 · 0 评论 -
Mybatis源码解析
Mybatis源码解析转载 2023-03-11 21:39:47 · 382 阅读 · 0 评论 -
SpringBoot源码解析
SpringBoot源码解析转载 2023-03-11 21:37:06 · 143 阅读 · 0 评论 -
SpringMVC源码解析
SpringMVC源码解析转载 2023-03-11 21:33:02 · 140 阅读 · 0 评论 -
人人都能看懂的Spring底层原理,看完绝对不会懵逼
人人都能看懂的Spring底层原理,看完绝对不会懵逼转载 2023-03-11 21:11:37 · 114 阅读 · 0 评论 -
简单易懂的Spring扩展点原理,看不懂你来打我
简单易懂的Spring扩展点原理,看不懂你来打我转载 2023-03-11 20:12:29 · 626 阅读 · 0 评论 -
深入理解MySQL数据库底层原理
1、描述一下数据库事务隔离级别? ACID: 原子性:undo log(MVCC) 一致性: 最核心和最本质的要求 隔离性:锁,mvcc(多版本并发控制) 持久性:redo log 数据库的事务隔离级别有四种,分别是读未提交、读已提交、可重复读、序列化,不同的隔离级别下会产生脏读、幻读、不可重复读等相关问题,因此在选择隔离级别的时候要根据应用场景来决定,使用合适的隔离级别。 各种隔离级别和数据库异常情况对应情况如下:隔离级别脏读不可重复 读幻读原创 2021-03-23 19:44:56 · 368 阅读 · 0 评论 -
MVCC多版本并发控制
MVCC多版本并发控制1、MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。2、当前读 像select lock in share mode(共享锁), select for原创 2021-03-23 19:42:37 · 130 阅读 · 0 评论 -
SpringCloud面试专题及答案
问题一:什么是 Spring Cloud?Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。问题二:使用 Spring Cloud 有什么优势?使用 Spring Boot 开发分布式微服务时,我们面临以下问题• 与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。• 服务原创 2021-03-23 19:39:26 · 119 阅读 · 0 评论 -
zookeeper面试专题及答案
1.ZooKeeper 是什么?ZooKeeper 是一个**分布式*的,开放源码的分布式应用程序协调服务*,是 Google 的 Chubby 一个开源的实现,它是*集群的管理者*,*监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作*。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。客户端的**读请求*可以被集群中的任意一台机器处理*,如果读请求在节点上注册了监听器,这个监听器也是由所连接的 zookeeper 机器来处理。对于写请求*,这些请求会同时发给其他zookeep原创 2021-03-23 00:23:05 · 145 阅读 · 0 评论 -
Dubbo面试专题及答案(下)
1.Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?可以通信的,启动 dubbo 时,消费者会从 zk 拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用;注册中心对等集群,任意一台宕机后,将会切换到另一台;注册中心全部宕机后,服务的提供者和消费者仍能通过本地缓存通讯。服务提供者无状态,任一台 宕机后,不影响使用;服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复;挂掉是不要紧的,但前提是你没有增原创 2021-03-23 00:21:37 · 119 阅读 · 0 评论 -
Netty面试专题及答案
1.BIO、NIO 和 AIO 的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有 I/O 请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的 I/O 请求都是由 OS 先完成了再通知服务器应用去启动线程进行处理,BIO 是面向流的,NIO 是面向缓冲区的;BIO 的各种原创 2021-03-23 00:20:16 · 343 阅读 · 0 评论 -
Dubbo面试专题及答案(下)
1.Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?可以通信的,启动 dubbo 时,消费者会从 zk 拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用;注册中心对等集群,任意一台宕机后,将会切换到另一台;注册中心全部宕机后,服务的提供者和消费者仍能通过本地缓存通讯。服务提供者无状态,任一台 宕机后,不影响使用;服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复;挂掉是不要紧的,但前提是你没有增原创 2021-03-23 00:19:23 · 105 阅读 · 0 评论 -
Kafka消息中间件面试专题
1.Kafka 的设计时什么样的呢?Kafka 将消息以 topic 为单位进行归纳将向 Kafka topic 发布消息的程序成为 producers.将预订 topics 并消费消息的程序成为 consumer.Kafka 以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个 broker.producers 通过网络将消息发送到 Kafka 集群,集群向消费者提供消息2.数据传输的事物定义有哪三种?数据传输的事务定义通常有以下三种级别:(1)最多一次: 消息不会被重复发送,最多原创 2021-03-22 20:04:03 · 176 阅读 · 0 评论 -
JVM面试专题及答案
1. 内存模型以及分区,需要详细到每个区放什么。JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class 类信息常量池(static 常量和 static 变量)等放在方法区new:· 方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字节码)等数据· 堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配· 栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储原创 2021-03-22 20:02:44 · 71 阅读 · 0 评论 -
46个经典Linux面试题!
**问题一:**绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示 ? 切换目录用什么命令?答案:绝对路径:如/etc/init.d当前目录和上层目录:./ …/ 主目录:~/切换目录:cd**问题二:**怎么查看当前进程?怎么执行退出?怎么查看当前路径?答案:查看当前进程:ps 执行退出:exit查看当前路径:pwd**问题三:**怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?答案:清屏:clear退出当前命令:ctrl原创 2021-03-22 19:59:21 · 669 阅读 · 0 评论 -
Spring核心源码深入解读之AOP篇
Spring核心源码深入解读之AOP1,Spring容器的AOP源码解读* AOP:【动态代理】 * 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式; * * 1、导入aop模块;Spring AOP:(spring-aspects) * 2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx) * 3、定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知Mat原创 2020-05-17 12:00:35 · 84 阅读 · 0 评论 -
Spring核心源码深入解读
Spring核心源码深入解读1,Spring容器的refresh()源码@Overridepublic void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); // Tell the su原创 2020-05-16 09:36:51 · 123 阅读 · 2 评论 -
分布式核心设计
分布式核心设计简介最火?大数据、人工智能、区块链、边缘计算、微服务 -> 分布式分布式:拆微服务&分布式分布式:拆了就行微服务:纵向拆分(根据业务逻辑拆分,电商:用户、支付、购物…)、最小化拆分横向:jsp/servlet -> service->daoCAP理论任何一个分布式系统 都必须重点考虑的原则。C:一致性(强一致性):所有子节点中的数据 时刻保持一致A:可用性:整体能用P:分区容错性 :允许部分失败CAP理论:在任何分布式系统中,C\A\P原创 2020-05-08 22:16:57 · 135 阅读 · 0 评论 -
开源框架-面试指导
SSM和开源框架MyBatis重要组件:Mapper配置: 实体类Student.java - 数据表student , XML或注解Mapper接口: DAO层接口。 (只需要写接口,不用写实现类 :需要遵循约定)Mapper接口在编写时 需要遵循约定:1.方法名和SQL配置文件(studentMapper.xml)中的id值必须相同2.方法的输入参数,必须和SQL配置文件的 parameterType的类型相同;3.方法的返回值,必须和SQL配置文件的resultType的类型相原创 2020-05-08 22:15:16 · 141 阅读 · 0 评论 -
技术面试 - Java SE
技术面试 - Java SE背景:秋招 有些同学 没找到offer1.自己知识储备不足2.准备OK,但是仍然没找到offer面试技巧(重点)、代码讲解招聘岗位10, 50个人 : 10 + 40不会脱颖而出主题: 出奇制胜1.反对和所有应聘者 千篇一律积累: 阿里巴巴 编程规范 , 《effective java》2.反对和所有《面试宝典》 千篇一律建议: 只看宝典里的题目,不看答案(答案自己写)只看题目 + github/知乎/博客线程通信 wait()、notif原创 2020-05-08 22:13:04 · 141 阅读 · 0 评论 -
01-面试指导
1.技术面试指导本文从“必备项”和“加分项”两个角度分析。一、必备项0.自我介绍表达流畅,不要太差即可1.基础坑:【答案很标准】面试时的回答,一定不要背网上《面试大全》中的标准答案,一定要有自己的思想 (哪怕有少量错误) 。常见的题,一定要提前准备好。例如,以下列举的几乎都是必考题目:arraylist/hashmap的源码、实现原理 ,冒泡排序/快速排序、 单例模式/工厂模式/动态工厂、谈谈你对面向对象的理解, 事务ACID/隔离级别 ,Spring IOC/AOP建议:自己的理解 ,或原创 2020-05-08 22:10:10 · 100 阅读 · 0 评论 -
2020java面试分模块总结
2020java面试分模块总结设计模式1、用到哪些设计模式?怎么用的2、单例模式的不同写法JDK1、聊一下java的集合类2、HashMap底层数据结构,以及解决hash碰撞的方法3、Hashmap为什么要使用红黑树4、集合类怎么解决高并发问题5、队列的使用问题6、自定义异常的应用场景7、Object类中的方法8、1.8的新特性9、Java中的静态方法只有一个实例,如果想...原创 2020-05-05 18:06:05 · 236 阅读 · 0 评论 -
IO多路复用
假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。你会怎么做?最简单的做法,就是你去招一大批空管员,然后每人盯一架飞机, 从进港,接客,排位,出港,航线监控,直至交接给下一个空港,全程监控。那么问题就来了:很快你就发现空管塔里面聚集起来一大票的空管员,交通稍微繁忙一点,新的空管员就已经挤不进来了。空管员之间需要协...原创 2020-04-29 11:21:47 · 85 阅读 · 0 评论 -
什么是java OOM?如何分析及解决oom问题?
OOM:表示内存用完了。1-为什么会OOM?为什么会内存用完呢,原因无外乎两点:● 分配少了(通过启动时的VM参数可以指定);● 应用用的太多,并且用完没释放,会造成内存泄露或内存溢出;2-最常见的三种OOM:JAVA堆内存溢出(最常见): 一般由内存泄露或者内存设置不当引起,对于内存泄露解决办法为:(需要通过内存监控软件查找程序中的泄露代码,或者使用分析内存泄漏);而堆大小可以通过-...原创 2020-04-28 23:00:40 · 369 阅读 · 0 评论 -
AQS数据结构及实现原理?
1、同步代码块采用monitorenter、monitorexit指令显式的实现。2、同步方法则使用ACC_SYNCHRONIZED标记符隐式的实现。在了解synchronized锁之前,我们先要了解两个重要概念:● Java对象头● MonitorJava对象头Java对象内存包括:对象头、实例数据和对齐填充。Java对象头是实现synchronized锁机制的基础,对象头包含markword...原创 2020-04-28 22:46:06 · 587 阅读 · 0 评论 -
synchronized的锁的原理?
1、同步代码块采用monitorenter、monitorexit指令显式的实现。2、同步方法则使用ACC_SYNCHRONIZED标记符隐式的实现。在了解synchronized锁之前,我们先要了解两个重要概念:● Java对象头● MonitorJava对象头Java对象内存包括:对象头、实例数据和对齐填充。Java对象头是实现synchronized锁机制的基础,对象头包含markw...原创 2020-04-28 22:44:12 · 120 阅读 · 2 评论 -
官网技术框架学习方法
官网是学习技术框架最好的地方,是自学的最佳方式以学习Spring为例子,进入到官网,选:project—>(比如想学springboot)点击springboot—>点击"Learn"—>选择一个版本—>浏览器右上角选翻译成中文—>大致看个几遍—>切换到英文,再具体看...原创 2020-05-04 17:03:17 · 213 阅读 · 0 评论 -
包装类Integer a=10,Integer b=10 a==b
Integer a=10,100,1000;Integer b=10,100,1000;ab当a和b为10,100时,为true,当a和b为1000时,为false。因为Integer存在常量池,一次性把从-128到127之间的所有数都初始化了比较的是内存地址,当没超出赋值范围时,内存地址都为常量池中的地址;超出了int的最大缓存量后各自new了一个对象,两个地址肯定不一样了。...原创 2020-05-02 15:04:32 · 1289 阅读 · 0 评论 -
Kafka零拷贝总结
总的来说Kafka快的原因:1、partition顺序读写,充分利用磁盘特性,这是基础;2、Producer生产的数据持久化到broker,采用mmap文件映射,实现顺序的快速写入;3、Customer从broker读取数据,采用sendfile,将磁盘文件读到OS内核缓冲区后,直接转到socket buffer进行网络发送。mmap 和 sendfile总结1、都是Linux内核提供、实现零拷贝...原创 2020-04-29 13:25:55 · 237 阅读 · 0 评论 -
线上CPU100%的场景,如何排查?
top命令,先查出是哪个进程占用CPU最高;top命令找到最耗CPU的线程,top -Hp pid将查出的线程id转换为16进制aa然后用jstack查出该线程具体的堆栈jstack pid | grep ‘0xaa’ -C5 --color5. 定位到具体的哪一行代码。...原创 2020-04-28 23:04:10 · 176 阅读 · 1 评论 -
volatile的原理?
1、可见性实现原理:JMM之主内存和工作内存。2、有序性实现原理:3、内存屏障volatile的作用:1、保证共享变量的可见性:使用volatile修饰的变量,任何线程对其进行操作都是在主内存中进行的,不会产生副本,从而保证共享变量的可见性。2、防止局部指令重排序:happens-before规则中的volatile变量规则规定了一个线程先去写一个volatile变量,然后一个线程去读这个变量,...原创 2020-04-28 22:58:07 · 84 阅读 · 0 评论