![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java面经
文章平均质量分 71
Java面经
Panda_威少
优秀的威
展开
-
Netty入门学习
Netty网络编程0.Netty 入门代码1.NIO基础(三个组件)2. Netty入门学习2.1 服务端代码![在这里插入图片描述](https://img-blog.csdnimg.cn/6af914f6e41c493ea3328f02ee94630a.png)2.2 客户端代码2.3 netty流程2.4 形象比喻3. Netty 组件之一:EventLoopGroup3.1 处理普通任务与定时任务3.2 处理io事件任务3.3 EventLoop与channel进行绑定3.4 EventLoopGr原创 2022-05-31 14:59:00 · 135 阅读 · 0 评论 -
计算机网络
计算机网络超详细面试汇总链接: Java_Master_xqk总结链接: TCP的三次握手与四次挥手理解及面试题原创 2022-05-18 10:02:41 · 219 阅读 · 0 评论 -
手撕死锁代码
手撕死锁代码1.死锁1.死锁public class DeadLock { public static void main(String[] args) { dataSource da = new dataSource(); //开启线程A,先获取A锁,在获取B锁 new Thread(() -> { try { da.getLockA(); } catch原创 2022-05-06 10:56:47 · 238 阅读 · 0 评论 -
手撕几种常见单例模式
手撕几种常见单例模式1.单例模式特点2. 静态内部类单例模式3. 其余单例参考下述超详细的链接1.单例模式特点定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。常见的使用场景:线程池,数据库连接池、网站计数器、Spring容器默认Bean构建方式:饿汉式,懒汉式,内部类(重点)2. 静态内部类单例模式优点:该方法集成的饿汉式和懒汉式的优点,既延时加载又线程安全,还不需要synchronized 锁。外部类加载时不需要加载静态内部类,不被加载则不占用内存(延迟加载),当外部类调用getI原创 2022-04-18 11:15:31 · 751 阅读 · 0 评论 -
垃圾回收器CMS与G1的区别
垃圾回收器CMS与G1的区别1. CMS1.0 概念1. 1 步骤如下:1.2 CMS的优点:1.3 CMS的缺点:1.4 使用场景2. G12.0 概念2.1 步骤如下:2.2 G1的特点2.3 使用场景1. CMS1.0 概念CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现,在标记清理过程中不会导致用户线程无法定位引用对象。仅作用于老年代收集。1. 1 步骤如下:初始标记(CMS initial mark):独占C原创 2022-03-03 19:57:31 · 4471 阅读 · 0 评论 -
JMM及volatile深入理解
JMM及volatile底层深入理解1. JMM- - - Java内存模型2. volatile 如何保证可见性(底层原理)3. volatile 如何保证指令重排的(底层原理)1. JMM- - - Java内存模型在 JDK1.2 之前,Java 的内存模型实现总是从主存(即共享内存)读取变量,是不需要进⾏特别的注意的。⽽在当前的 Java 内存模型下,线程可以把变量保存本地内存(⽐如机器的寄存器)中,⽽不是直接在主存中进⾏读写。这就可能造成⼀个线程在主存中修改了⼀个变量的值,⽽另外⼀个线程原创 2022-03-03 15:26:09 · 551 阅读 · 0 评论 -
JVM:如何实现一个自定义类加载器?
JVM:如何实现一个自定义类加载器?1. 为什么要自定义加载器2. 如何实现自定义加载器3. 能不能自己写一个java.lang.String1. 为什么要自定义加载器原因:1、存放在自定义路径上的类,需要通过自定义类加载器去加载。【注意:AppClassLoader加载classpath下的类】2、类不一定从文件中加载,也可能从网络中的流中加载,这就需要自定义加载器去实现加密解密。2. 如何实现自定义加载器实现自定义类加载有以下两步:1、继承ClassLoader2、重写findClass原创 2022-02-22 21:39:01 · 1521 阅读 · 6 评论 -
Java---JUC并发篇(多线程详细版)
这里写目录标题1. 并发基础(线程篇)1.1 java线程状态及线程状态之间的转化1.2 操作系统层面有5种状态2. 线程池的核心参数(7个核心参数)2.1 线程池参数介绍2.2 代码实现2.3 handler 4种拒绝策略3. sleep与wait方法对比3.1 异同点3.2 代码展示4. lock锁与synchronized锁区别4.1 异同点4.2 代码实现5. volatile 能否保证线程安全5.1 什么是线程安全5.2 代码展示5.2.1 原子性5.2.2 可见性5.2.3 有序性6. Java原创 2021-12-09 22:05:32 · 624 阅读 · 3 评论 -
锁机制(自旋锁-乐观锁-悲观锁)
各种锁机制(主要介绍自旋锁)1. 自旋锁2. 悲观锁---Synchornized2.1 偏向锁2.1.1 为什么要引入偏向锁?2.1.2 偏向锁原理和升级过程2.2 轻量级锁2.2.1 为什么要引入轻量级锁?2.2.2 轻量级锁原理和升级过程2.3 几种锁的优缺点1. 自旋锁自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务原创 2022-01-23 19:44:00 · 2216 阅读 · 1 评论 -
经典的海量数据处理面试题
海量数据处理总结1. 如何从大量的 URL 中找出相同的 URL?1.1 题目描述1.2 解答思路1.3 方法总结2. 如何从大量数据中找出高频词?2.1 题目描述2.2 解答思路2.3 方法总结3. 如何找出某一天访问百度网站最多的 IP?3.1 题目描述3.2 解答思路3.3 方法总结4. 如何在大量的数据中找出不重复的整数?4.1 题目描述4.2 解答思路4.2.1 方法一:分治法4.2.2 方法二:位图法4.3 方法总结5. 如何在大量的数据中判断一个数是否存在?1. 如何从大量的 URL 中找出原创 2022-01-26 16:50:47 · 1102 阅读 · 0 评论 -
2022最新超详细Spring全家桶面试题(待更新ing)
2022最新超详细Spring全家桶面试题完整版0. 参考视频1. 谈谈对Spring的理解77.SpringBoot的自动配置原理81. Springboot 启动原理 (启动过程)86. Springboot默认的日志实现框架,如何切换其他日志框架?101.@Component 和@ComponentScan的联系102. @SpringBootApplication和@ComponentScan,扫描包的区别:103 @GetMapping和@RequestMapping的区别1.JDK JRE JV原创 2022-01-18 15:02:05 · 4845 阅读 · 1 评论 -
final和static使用场景
final和static使用场景1. final 和 static 总结2. final (修饰符)2.1 final修饰类2.2 final修饰方法2.3 final修饰变量3. static (关键字)3.1 static修饰的方法,3.2 static变量3.3 static代码块1. final 和 static 总结我们在程序中经常出现 final和static,那什么时候什么场景下使用?通常在项目很多地方需要使用的常量 需要用 static finalpublic static f原创 2022-01-25 16:45:42 · 624 阅读 · 0 评论 -
Java中双链表的插入(含单链表反转)
Java中双链表的查找、插入、删除1. Java中双链表1. Java中双链表 private void addAfter(Node newNode,Node node){//在某个节点后面添加 newNode.next = node.next; newNode.previous = node; newNode.previous.next = newNode; newNode.next.previous = newNode; ++size; }package cn.xiao原创 2022-02-08 17:42:26 · 359 阅读 · 0 评论