![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 91
程序员大彬
非科班转码,校招拿了多家互联网中大厂offer,专注分享Java技术干货
展开
-
一文吃透计算机网络面试八股文
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。但是在关闭连接时,当Server端收到Client端发出的连接释放报文时,很可能并不会立即关闭SOCKET,所以Server端先回复一个ACK报文,告诉Client端我收到你的连接释放报文了。只有等到Server端所有的报文都发送完了,这时Server端才能发送连接释放报文,之后两边才会真正的断开连接。故需要四次挥手。服务端可以向证书颁发机构CA申请证书,以避免中间人攻击(防止证书被篡改)。原创 2024-02-21 08:04:01 · 956 阅读 · 0 评论 -
一天吃透Redis面试八股文
Redis 官方站提出了一种权威的基于 Redis 实现分布式锁的方式名叫Redlock,此种方式比原先的单节点的方法更安全。安全特性:互斥访问,即永远只有一个 client 能拿到锁避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client 挂掉了容错性:只要大部分 Redis 节点存活就可以正常提供服务。原创 2024-02-20 21:14:36 · 1096 阅读 · 0 评论 -
一天吃透Java面试八股文
JVM,全称Java Virtual Machine(Java虚拟机),是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可在多种平台上不加修改的运行,这也是Java能够“一次编译,到处运行的”原因。类的加载指的是将类的class。原创 2024-01-25 23:37:05 · 1079 阅读 · 0 评论 -
三天吃透Java集合面试八股文
Hash 值的范围值比较大,使用之前需要先对数组的长度取模运算,得到的余数才是元素存放的位置也就是对应的数组下标。这个数组下标的计算方法是。将HashMap的长度定为2 的幂次方,这样就可以使用位运算代替%取余的操作,提高性能。// 容纳键值对的最大值// 负载因子int size;Node[] table的初始化长度length为16,默认的loadFactor是0.75,0.75是对空间和时间效率的一个平衡选择,根据泊松分布,loadFactor 取0.75碰撞最小。原创 2024-01-22 10:05:49 · 908 阅读 · 1 评论 -
三天吃透JVM面试八股文
JVM,全称Java Virtual Machine(Java虚拟机),是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可在多种平台上不加修改的运行,这也是Java能够“一次编译,到处运行的”原因。类的加载指的是将类的class。原创 2024-01-20 20:35:38 · 847 阅读 · 0 评论 -
一天吃透Redis面试八股文
Redis 官方站提出了一种权威的基于 Redis 实现分布式锁的方式名叫Redlock,此种方式比原先的单节点的方法更安全。安全特性:互斥访问,即永远只有一个 client 能拿到锁避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client 挂掉了容错性:只要大部分 Redis 节点存活就可以正常提供服务。原创 2024-01-19 21:05:04 · 430 阅读 · 0 评论 -
一天吃透Spring面试八股文
面向切面编程,作为面向对象的一种补充,将公共逻辑(事务管理、日志、缓存等)封装成切面,跟业务代码进行分离,可以减少系统的重复代码和降低模块之间的耦合度。切面就是那些与业务无关,但所有业务模块都会调用的公共逻辑。在Spring创建对象的过程中,把对象依赖的属性注入到对象中。依赖注入主要有两种方式:构造器注入和属性注入。控制反转,由Spring容器管理bean的整个生命周期。通过反射实现对其他对象的控制,包括初始化、创建、销毁等,解放手动创建对象的过程,同时降低类之间的耦合度。原创 2024-01-16 08:47:38 · 882 阅读 · 0 评论 -
这可能是最全面的Java集合面试八股文了
Hash 值的范围值比较大,使用之前需要先对数组的长度取模运算,得到的余数才是元素存放的位置也就是对应的数组下标。这个数组下标的计算方法是。将HashMap的长度定为2 的幂次方,这样就可以使用位运算代替%取余的操作,提高性能。// 容纳键值对的最大值// 负载因子int size;Node[] table的初始化长度length为16,默认的loadFactor是0.75,0.75是对空间和时间效率的一个平衡选择,根据泊松分布,loadFactor 取0.75碰撞最小。原创 2024-01-14 18:23:08 · 1056 阅读 · 0 评论 -
百度面经整理(2024最新)
链接:https://pan.xunlei.com/s/VNgU60NQQNSDaEy9z955oufbA1?备用链接:https://pan.quark.cn/s/cbbb681e7c19。备用链接:https://pan.quark.cn/s/3f1321952a16。等高频面试题,非常实用,有小伙伴靠着这份手册拿过字节offer~分享一份大彬精心整理的大厂面试手册,包含计。需要的小伙伴可以自行。原创 2024-01-11 07:37:47 · 983 阅读 · 0 评论 -
一天吃透SpringMVC面试八股文
MVC的全名是,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。View,视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。原创 2024-01-02 20:58:16 · 809 阅读 · 0 评论 -
三天吃透Redis面试八股文
Redis 官方站提出了一种权威的基于 Redis 实现分布式锁的方式名叫Redlock,此种方式比原先的单节点的方法更安全。安全特性:互斥访问,即永远只有一个 client 能拿到锁避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client 挂掉了容错性:只要大部分 Redis 节点存活就可以正常提供服务。原创 2023-12-29 10:43:38 · 875 阅读 · 0 评论 -
三天吃透计算机网络面试八股文
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。但是在关闭连接时,当Server端收到Client端发出的连接释放报文时,很可能并不会立即关闭SOCKET,所以Server端先回复一个ACK报文,告诉Client端我收到你的连接释放报文了。只有等到Server端所有的报文都发送完了,这时Server端才能发送连接释放报文,之后两边才会真正的断开连接。故需要四次挥手。服务端可以向证书颁发机构CA申请证书,以避免中间人攻击(防止证书被篡改)。原创 2023-12-26 07:50:10 · 951 阅读 · 0 评论 -
三天吃透Java面试八股文
Hash 值的范围值比较大,使用之前需要先对数组的长度取模运算,得到的余数才是元素存放的位置也就是对应的数组下标。这个数组下标的计算方法是。将HashMap的长度定为2 的幂次方,这样就可以使用位运算代替%取余的操作,提高性能。// 容纳键值对的最大值// 负载因子int size;Node[] table的初始化长度length为16,默认的loadFactor是0.75,0.75是对空间和时间效率的一个平衡选择,根据泊松分布,loadFactor 取0.75碰撞最小。原创 2023-12-24 10:59:46 · 416 阅读 · 0 评论 -
一天吃透Redis面试八股文
Redis 官方站提出了一种权威的基于 Redis 实现分布式锁的方式名叫Redlock,此种方式比原先的单节点的方法更安全。安全特性:互斥访问,即永远只有一个 client 能拿到锁避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client 挂掉了容错性:只要大部分 Redis 节点存活就可以正常提供服务。原创 2023-12-19 09:03:25 · 915 阅读 · 0 评论 -
一天吃透MySQL面试八股文
MySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上的值是有数据类型的,比如:整数、字符串、日期等等。索引是存储引擎用于提高数据库表的访问速度的一种数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。索引一般存储在磁盘的文件中,它是占用物理空间的。如果 SQL 语句中用到了组合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个组合索引去进行匹配。当遇到范围查询(原创 2023-12-17 20:39:42 · 903 阅读 · 0 评论 -
一天吃透Java并发面试八股文
线程死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力作用,它们都将无法推进下去。如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方持有的资源,所以这两个线程就会互相等待而进入死锁状态。下面通过例子说明线程死锁,代码来自并发编程之美。//资源 1//资源 2try {}, "线程 1").start();try {}, "线程 2").start();原创 2023-12-01 08:57:28 · 905 阅读 · 0 评论 -
三天吃透Redis面试八股文
Redis 官方站提出了一种权威的基于 Redis 实现分布式锁的方式名叫Redlock,此种方式比原先的单节点的方法更安全。安全特性:互斥访问,即永远只有一个 client 能拿到锁避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client 挂掉了容错性:只要大部分 Redis 节点存活就可以正常提供服务。原创 2023-11-19 21:58:07 · 276 阅读 · 0 评论 -
计算机科学速成课
建议看看,一门很全面的计算机原理入门课程,短短10分钟可以把大学老师十几节课讲的东西讲清楚!整个系列一共41个视频,B站上有中文字幕版。每个视频都是一个特定的主题,例如软件工程、人工智能、操作系统等,主题之间都是紧密相连的,比国内很多大学计算机课程强太多!这门课程通过生动形象的讲解方式,向普通人介绍了计算机科学相关的基础知识,包括等等。每节课程短小精悍,只有短短十几分钟,适合平时碎片化时间观看。课程目录如下,光看课程大纲都有学习的欲望~原创 2023-11-18 10:57:43 · 209 阅读 · 0 评论 -
秋招进入尾声了,还有哪些公司和岗位可以投递?
在这里跟大家分享一份2024届秋招信息汇总表,目前已更新2000家,不仅有互联网公司,还有外企、国企、各类研究所,不断更新中,可以对照投递,抓住秋招的尾巴!24届秋招基本已经进入尾声了,接下来就是秋招补录了,最近在微信群看到一些同学再问哪些公司还在招人的。另外还有寒假实习和日常实习内推,感兴趣的同学可以看看~原创 2023-11-10 21:52:21 · 149 阅读 · 0 评论 -
一天吃透Java并发面试八股文
线程死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力作用,它们都将无法推进下去。如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方持有的资源,所以这两个线程就会互相等待而进入死锁状态。下面通过例子说明线程死锁,代码来自并发编程之美。//资源 1//资源 2try {}, "线程 1").start();try {}, "线程 2").start();原创 2023-10-24 08:48:18 · 190 阅读 · 0 评论 -
一天吃透JVM面试八股文
JVM,全称Java Virtual Machine(Java虚拟机),是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可在多种平台上不加修改的运行,这也是Java能够“一次编译,到处运行的”原因。类的加载指的是将类的class。原创 2023-10-23 08:55:02 · 182 阅读 · 0 评论 -
一天吃透Java面试题
给大家分享我整理的Java高频面试题,有小伙伴靠他拿到字节offer了。原创 2023-10-22 21:09:19 · 404 阅读 · 0 评论 -
非科班,补基础
你好,我也是非科班转码的,Java方向,不知道你打算想往哪个方向发展。大彬大佬,想问下非科班要补哪些基础?求推荐视频,国内国外都行。小伙伴关于【非科班转码如何补基础】的提问。原创 2023-10-21 09:57:37 · 243 阅读 · 0 评论 -
一天吃透Java集合面试八股文
Hash 值的范围值比较大,使用之前需要先对数组的长度取模运算,得到的余数才是元素存放的位置也就是对应的数组下标。这个数组下标的计算方法是。将HashMap的长度定为2 的幂次方,这样就可以使用位运算代替%取余的操作,提高性能。// 容纳键值对的最大值// 负载因子int size;Node[] table的初始化长度length为16,默认的loadFactor是0.75,0.75是对空间和时间效率的一个平衡选择,根据泊松分布,loadFactor 取0.75碰撞最小。原创 2023-10-19 21:40:58 · 265 阅读 · 0 评论 -
这可能是最全面的TCP面试八股文了
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。但是在关闭连接时,当Server端收到Client端发出的连接释放报文时,很可能并不会立即关闭SOCKET,所以Server端先回复一个ACK报文,告诉Client端我收到你的连接释放报文了。只有等到Server端所有的报文都发送完了,这时Server端才能发送连接释放报文,之后两边才会真正的断开连接。故需要四次挥手。原创 2023-10-19 08:54:09 · 214 阅读 · 0 评论 -
Spring源码解析——事务的回滚和提交
上一篇文章讲解了获取事务,并且通过获取的connection设置只读、隔离级别等,这篇文章讲解剩下的事务的回滚和提交。原创 2023-10-18 21:17:32 · 823 阅读 · 0 评论 -
Spring源码解析——事务增强器
这里判断是否存在事务的依据主要是获取holder中的transactionActive变量是否为true,如果是第一次进入事务,holder直接为null判断不存在了,如果是第二次进入事务transactionActive变量是为true的(后面会提到是在哪里把它变成true的),由此来判断当前是否已经存在事务了。对于嵌入式事务的处理,Spring中主要考虑了两种方式的处理。对于已经存在事务的处理过程中,我们看到了很多熟悉的操作,但是,也有些不同的地方,函数中对已经存在的事务处理考虑两种情况。原创 2023-10-17 08:56:11 · 642 阅读 · 0 评论 -
Spring源码解析——Spring事务是怎么通过AOP实现的?
可以说此处配置是事务的开关,如果没有此处配置,那么Spring中将不存在事务的功能。那么我们就从这个配置开始分析。根据之前的分析,我们因此可以判断,在自定义标签中的解析过程中一定是做了一些辅助操作,于是我们先从自定义标签入手进行分析。@Override在遇到诸如tx:annotation-driven为开头的配置后,Spring都会使用AnnotationDrivenBeanDefinitionParser类的parse方法进行解析。原创 2023-10-15 22:26:54 · 268 阅读 · 0 评论 -
Spring源码解析——@Transactional注解的声明式事物介绍
原子性多个数据库操作是不可分割的,只有所有的操作都执行成功,事物才能被提交;只要有一个操作执行失败,那么所有的操作都要回滚,数据库状态必须回复到操作之前的状态一致性事物操作成功后,数据库的状态和业务规则必须一致。例如:从A账户转账100元到B账户,无论数据库操作成功失败,A和B两个账户的存款总额是不变的。隔离性当并发操作时,不同的数据库事物之间不会相互干扰(当然这个事物隔离级别也是有关系的)持久性事物提交成功之后,事物中的所有数据都必须持久化到数据库中。原创 2023-10-14 16:42:16 · 629 阅读 · 0 评论 -
Spring源码解析——AOP目标方法和增强方法的执行
这个代理类调用过程,我们可以看到是一个递归的调用过程,通过ReflectiveMethodInvocation类中Proceed方法递归调用,顺序执行拦截器链中AspectJAfterThrowingAdvice、AfterReturningAdviceInterceptor、AspectJAfterAdvice、MethodBeforeAdviceInterceptor这几个拦截器,在拦截器中反射调用增强方法最后给大家分享一个Github仓库,上面有大彬整理的300多本经典的计算机书籍PDF,包括。原创 2023-10-13 08:41:20 · 231 阅读 · 0 评论 -
Spring源码解析—— AOP代理的生成
本文已经收录到大彬精心整理的,包含等高频面试题,非常实用,有小伙伴靠着这份手册拿过字节offer~需要的小伙伴可以自行在获取了所有对应bean的增强后,便可以进行代理的创建了。我们上一篇文章分析完了第16行,获取到了所有对应bean的增强器,并获取到了此目标bean所有匹配的 Advisor,接下来我们要从第17行开始分析,如果 specificInterceptors 不为空,则要为当前bean创建代理类,接下来我们来看创建代理类的方法。原创 2023-10-12 08:55:48 · 275 阅读 · 0 评论 -
Spring源码解析——创建AOP代理之获取增强器
在上一篇的博文中我们讲解了通过自定义配置完成了对AnnotationAwareAspectJAutoProxyCreator类型的自动注册,那么这个类到底做了什么工作来完成AOP的操作呢?首先我们看看AnnotationAwareAspectJAutoProxyCreator的层次结构,如下图所示:内容摘自我的学习网站:topjavaer.cn。原创 2023-10-11 08:50:40 · 180 阅读 · 0 评论 -
Spring源码解析——AOP的使用及AOP自定义标签
之前讲过Spring中的自定义注解,如果声明了自定义的注解,那么就一定会在程序中的某个地方注册了对应的解析器。我们搜索@Override这里我们就不再对spring中的自定义注解方式进行讨论了。从这段代码中我们可以得知,在解析配置文件的时候,一旦遇到了aspectj-autoproxy注解的时候会使用解析器AspectJAutoProxyBeanDefinitionParser进行解析,接下来我们就详细分析下其内部实现。原创 2023-10-10 21:44:38 · 245 阅读 · 0 评论 -
Spring源码解析——ApplicationContext容器refresh过程
System.out.println("对容器进行后处理。。。。");然后在配置文件中注册这个bean,如下:</原创 2023-10-10 08:56:48 · 189 阅读 · 0 评论 -
Spring源码解析——IOC之bean 的初始化
客户定制的初始化方法除了我们熟知的使用配置init-method外,还有使自定义的bean实现InitializingBean接口,并在afterPropertiesSet中实现自己的初始化业务逻辑。init-method与afterPropertiesSet都是在初始化bean时执行,执行顺序是afterPropertiesSet先执行,而init-method后执行。在invokeInitMethods方法中就实现了这两个步骤的初始化调用。// 是否实现 InitializingBean。原创 2023-10-09 21:34:35 · 180 阅读 · 0 评论 -
Spring源码解析——IOC之循环依赖处理
循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图所示:注意,这里不是函数的循环调用,是对象的相互依赖关系。循环调用其实就是一个死循环,除非有终结条件。原创 2023-10-09 08:13:34 · 156 阅读 · 0 评论 -
Spring源码解析——IOC属性填充
第一个过程实例化 bean在前面一篇博客中已经分析完了,这篇博客开始分析 属性填充,也就是我们来分析下populateBean的流程:(1)首先进行属性是否为空的判断(2)通过调用InstantiationAwareBeanPostProcessor的postProcessAfterInstantiation(bw.getWrappedInstance(), beanName)方法来控制程序是否继续进行属性填充。原创 2023-10-08 22:43:52 · 1352 阅读 · 0 评论 -
spring源码解析——IOC之bean创建
在 Spring 中存在着不同的 scope,默认是 singleton ,还有 prototype、request 等等其他的 scope,他们的初始化步骤是怎样的呢?这个答案在这篇博客中给出。原创 2023-10-08 08:06:18 · 763 阅读 · 0 评论 -
spring源码解析——IOC-开启 bean 的加载
前面我们已经分析了spring对于xml配置文件的解析,将分析的信息组装成 BeanDefinition,并将其保存注册到相应的 BeanDefinitionRegistry 中。至此,Spring IOC 的初始化工作完成。接下来我们将对bean的加载进行探索。BeanFactory,以Factory结尾,表示它是一个工厂类(接口),它负责生产和管理bean的一个工厂。在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。原创 2023-09-26 08:30:08 · 319 阅读 · 0 评论 -
spring源码解析——IOC之自定义标签解析
之前我们已经介绍了spring中默认标签的解析,解析来我们将分析自定义标签的解析,我们先回顾下自定义标签解析所使用的方法,如下图所示:我们看到自定义标签的解析是通过BeanDefinitionParserDelegate.parseCustomElement(ele)进行的,解析来我们进行详细分析。创建一个需要扩展的组件定义一个 XSD 文件,用于描述组件内容创建一个实现 AbstractSingleBeanDefinitionParser 接口的类,用来解析 XSD 文件中的定义和组件定义。原创 2023-09-25 22:11:35 · 480 阅读 · 0 评论