![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java面经
文章平均质量分 60
自用
cashapxxx
MVS/SLAM/Java
展开
-
【没什么难的】SpringBoot自动配置原理
SpringBoot自动配置原理1 SpringBoot自动配置思想1.1 在项目中使用redis数据库2. SpringBoot自动配置原理3 如何读取spring.factories文件?1 SpringBoot自动配置思想自动配置说到底就是为了加速开发的效率,将开发者在开发过程中,用到的某种技术所需要的bean提前加载好。使用bean的时候,如果不设置属性,就有默认值;如果不想用默认值,就可以自己设置,也就是可以修改部分或者全部参数。即,一些技术的某些参数或属性,SpringBoot无原创 2022-05-04 20:22:28 · 389 阅读 · 0 评论 -
分布式与集群的区别是什么?kafka和redis的分布式体现在哪?
太多的说法是分布式是不同的人做不同的事,集群是多个人做同一件事的说法了。这太误导人了。比如zookeeper,3台机器的一个集群。从系统应用来看zookeeper,他就是集群,因为他为我提供了一样的服务。但是这个集群内部,主从之间又有不同的分工,主负责写,从负责读,主从之间又要通过长连接来同步数据副本,这样看,他又是个分布式系统了。redis也是,kafka也是…其实分布式不一定就是不同的组件,同一个组件也可以,关键在于是否通过交换信息的方式进行协作。比如说Zookeeper的节点都是对等的,但原创 2022-04-17 12:25:14 · 176 阅读 · 0 评论 -
知乎上一篇写kafka和zookeeper的文章
写得很好很清晰,记录一下:Kafka为什么要放弃Zookeeper原创 2022-04-17 11:30:45 · 2391 阅读 · 0 评论 -
双亲委派模型
双亲委派模型1 怎么进行类加载?2 双亲委派模型是啥?有什么用?用在哪里?3 双亲委派模型怎么用?其工作机制是?(源码分析)1 怎么进行类加载?每一个类都有一个对应它的类加载器(ClassLoader)。通过该类的类加载器调用loadClass方法,加载该类(如下图的H类),即可实现类加载。2 双亲委派模型是啥?有什么用?用在哪里?系统中的ClassLoader在协同工作的时候会默认使用双亲委派模型。即双亲委派模型的作用是:当一个类的class文件(二进制流文件)要加载到JVM内存(堆、栈)原创 2022-04-14 15:52:46 · 258 阅读 · 0 评论 -
【知乎】G1垃圾回收流程
一步一图带你理清G1垃圾回收流程1 Yong Collection2 Yong Collection + Concunrrent Mark2.1 Yong Collection2.2 Concunrrent Mark3 Mixed Collection知乎上看到的一篇文章:24-一步一图带你理清G1垃圾回收流程1 Yong Collection当Eden区域装满,会触发Yong GC,那么Yong GC会通过复制算法来进行垃圾回收同时系统进入“Stop the World”状态,然后把Eden区原创 2022-04-13 21:20:34 · 715 阅读 · 0 评论 -
Java到底是值传递还是引用传递
详情请看:Java到底是值传递还是引用传递Java中只有值传递,没有引用传递。值传递和引用传递的根本区别是有没有变量的拷贝,或者说有没有变量的副本。1 值啥叫值?值就是内存中真实存在的数据,就像碗里装的饭,盆里装的水一样。2 引用啥叫引用?引用就是装值这块内存区域的地址,在碗上贴个标签写上张三,下次我要找张三的碗我直接看标签就行了,这个标签就是引用。(假设所有的碗颜色形状大小都一样)3 指针啥叫指针?指针就是这块内存我不装数据了,装的是另外一块内存的地址,我在一个小碗里面装个标签,上面写着张三原创 2022-04-13 10:39:13 · 98 阅读 · 0 评论 -
抽象类与接口的区别与联系
抽象类与接口0 共同点0.1 都不能被实例化0.2 都可以包含抽象方法0.3 都可以有默认实现的方法(Java 8 可以用 default 关键在接口中定义默认方法)1 成员的区别1.1 抽象类(抽象类的本质还是类!可以有任意成员,比如非抽象方法、构造器、静态属性啥的都可)1.1.1 成员变量(属性):可以是变量,也可以是常量1.1.2 构造方法:有构造方法,用于子类实例化使用1.1.3 成员方法:可以是抽象的,也可以是非抽象的1.2 接口2 类和接口的关系区别2.1 类与类2.2 类与接口2.3 接口与接原创 2022-04-09 00:21:00 · 140 阅读 · 0 评论 -
Springboot中的数据库连接池
在JDBC编程中,每次创建和断开Connection对象都会消耗一定的时间和IO资源。这是因为在Java程序与数据库之间建立连接时,数据库端要验证用户名和密码,并且要为这个连接分配资源,Java程序则要把代表连接的java.sql,Connection对象等加载到内存中,所以建立数据库连接的开销很大。尤其是在大量的并发访问时,假如某网站一天的访问量是10万,那么,该网站的服务器就需要创建、断开连接10万次,频繁地创建、断开数据库连接势必会影响数据库的访问效率,甚至导致数据库崩溃。为了避免频繁地创建数据库连原创 2022-04-06 23:48:42 · 2035 阅读 · 1 评论 -
spring开发提倡接口编程,配合di技术可以实现层与层的解耦(程序间的解耦)
现在我们体验一下spring的di配合接口编程的,完成一个字母大小写转换的案例:思路:创建一个接口 ChangeLetter两个类实现接口把对象配置到spring容器中使用通过上面的案例,我们可以初步体会到di配合接口编程,的确可以减少层(web层) 和 业务层的耦合度.......原创 2022-03-28 23:50:49 · 503 阅读 · 0 评论 -
spring容器扫描配置文件的bean的底层
spring底层spring容器对象什么时候被加载?spring中配置的bean怎么被创建的呢?答:当new ClassPathXmlApplicationContext("xml配置文件名(applicationContext.xml)")时会创建spring容器对象——ac。applicationContext.xml文件如下图:同时,applicationContext.xml文件中配置的bean对象会被创建到内存(类似Hashmap的数据结构)中。其中id对应key,对象对应value,原创 2022-03-28 21:12:35 · 147 阅读 · 0 评论 -
静态的main方法为啥可以访问非静态成员
首先第一点: 静态方法中可以创建动态变量和方法第二点:对象属于动态的第三点:动态的可以调用调用静态的综上,所以要在静态方法里面调用动态参数和动态的方法就可以通过创建对象来实现调用动态参数和动态的方法。......原创 2022-03-24 15:51:12 · 531 阅读 · 1 评论 -
使用【代理模式】来实现Runnable接口来【开发线程】
目的:对Tiger类的run方法启动线程实例化Tiger类,得到对象tiger对Tiger类的run方法创建并线程,需要借助ThreadProxy代理中的start方法故实例化Thread底层源码的ThreadProxy代理类,并将Runnable类型的tiger对象传入ThreadProxy代理类的构造器中,得到ThreadProxy代理类的对象threadProxy,并将tiger赋给ThreadProxy代理类的属性target然后通过threadProxy.start()启动线程,调用Th原创 2022-03-19 15:50:57 · 115 阅读 · 0 评论