自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 寄就一个字-------快手实习二面面经

1:自我介绍2:juc多线程的参数,执行线程的流程3:怎么并发读取数据4:mysql的索引和优化5:redis的sorted set 底层6:redis 主从怎么实现7:四次挥手过程详解8:git的一些常用命令,查日志的命令,查端口的命令9:反问技术学习的指导。一个字,寄...

2022-03-22 16:41:30 1342

原创 唉嘿嘿,寄经来咯。快手实习一面面经

面试我的是一个很和蔼的大叔,面试体验非常好,我要夸爆这个大叔,虽然我答的非常垃圾。从Spring开始入手的一些八股文1:Spring的IOC与AOP设计思想回答思路,描述设计思想,讲了一下具体在项目中的实现2:bean的生命周期经典八股3:SpringBoot的自动装配原理这个忘记了,直接寄4:面试官看我没答出来,又问了启动类有没有自己深入去debug走过之前看狂神的视频倒是看了一遍,完全记不住啊,面试官一问,就全忘记了,得记笔记。。5:多线程,谈谈对多线程的理解

2022-03-19 09:39:26 370

原创 Java集合HashSet介绍

Set接口HashSet 底层HashMap 实际上是K,V模式,只不过V放的是一个统一的Object 可以存放null值,但是只能有一个null值 不能有重复元素 这里面需要考虑到hashcode与equals方法的重写 如果放入Set集合的元素只重写hashcode而不重写equals,会导致重复元素添加,源码如下 此时认为hashcode是相等的,这两个元素到同一个hash槽里面 并且执行遍历链表寻找插入位置的操作。 .

2022-03-02 21:06:41 582

原创 ArrayList相关介绍

ArrayList 底层:一个Object[]数组 ArrayList线程不安全,多线程的情况下不建议使用ArrayList ArrayList中维护了一个Object类型的数组elementData.transient Object[] elementData; 这里的transient表示瞬间,短暂的,表示该属性不会被序列化 当创建ArrayList对象时,如果使用的时无参构造器,则初始elementData容量为0,第一次添加,则会扩容elementData.

2022-03-02 20:49:43 83

原创 数据库学习笔记—MySQL技术nei幕—第一章—MySQL体系结构和存储引擎

数据库和实例数据库和实例很容易混淆,如果要更加深入地理解MySQL,将这两个概念区分开来是必不可少的。数据库是物理操作系统文件或其他形式文件类型的集合。就比如在MySQL数据库中,数据库文件可以是以frm、MYD、MYI、等结尾的文件。 实例是由一个后台线程和一个共享内存区域组成的。大部分情况一个数据库对应一个实例,而在集群情况下可能存在一个数据库被多个实例所对应。数据库实例实际上是位于用户与操作系统之间的一层数据管理软件,用户通过编写相应的操作指令,比如数据库的定义,数据查询,数据维护等等,这

2022-01-16 10:30:35 654 1

原创 ThreadLocal的使用与原理解析

基本介绍从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。我们可以得知 ThreadLocal 的作用是:提供线程内的局部变量,不同的线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度。使用方法.

2021-12-21 17:21:08 481 1

原创 JDK8 currentHashMap 相关讲解

put方法public V put(K key, V value) {return putVal(key, value, false);}final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerException(); // 其中 spread 方法会综合高位低位, 具有更好的 hash 性 int hash = spread(

2021-12-20 17:38:18 1047

转载 LongAdder讲解

思维导图.png阿里巴巴开发手册.png对于Java项目中计数统计的一些需求,如果是 JDK8,推荐使用 LongAdder 对象,比 AtomicLong 性能更好(减少乐观锁的重试次数)在大多数项目及开源组件中,计数统计使用最多的仍然还是AtomicLong,虽然是阿里巴巴这样说,但是我们仍然要根据使用场景来决定是否使用LongAdder。今天主要是来讲讲LongAdder的实现原理,还是老方式,通过图文一步步解开LongAdder神秘的面纱,通过此篇文章你会了解到:...

2021-12-19 10:15:55 1735

原创 ReentrantLock非公平锁实现原理解读

概述ReentrantLock基于AQS,在并发编程中可以实现公平锁和非公平锁来对共享资源进行同步,同时和synchronized一样,支持锁重入,除此之外,RenentrantLock更加灵活,支持实现更多丰富的功能。说到ReentrantLock根据它的中文名,翻译过来叫做,可重入锁。但是仅仅用可重入一个特性来描述ReentrantLock好像有点以偏概全,其公平锁,非公平锁的实现,以及condition的实现似乎都很重要。所以这也是编程人员命名的一个烦恼。 基于上...

2021-12-17 16:16:47 816

原创 AQS原理以及源码解读

AQS概述:全称是AbstractQueuedSynchronizer,是一个阻塞式锁和相关的同步器工具的框架特点:用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取 锁和释放锁 getState - 获取 state 状态 setState - 设置 state 状态 compareAndSetState - cas 机制设置 state 状态 独占模式是只有一个线程能够访问资源,而共享模式可以允许多个线程访问资源 提供了

2021-12-16 21:08:37 254

原创 线程池源码解读以及相关面试题

目录线程池整体解读核心源码解读ThreadPoolExecutor的属性线程池的构造方法线程池的工作流程不同的线程池newFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutor内部类WorkerWorker类的run方法Worker类中的getTask方法ThreadPoolExecutor的execute方法线程池整体解读 线程池是一个可以自动创建并且维护相关线程的一个...

2021-12-13 19:39:12 401

原创 那就手写一个线程池玩一下吧

最近在学JUC,学到线程池,感觉简简单单调用API对线程池的理解不够透彻,于是我决定,手写一个线程池。 首先,要手写一个线程池,就需要了解线程池具体的概念,它实现了什么功能,具体的组件是什么。以大哥李写的Executors为参考,下面先对线程池做一个简单的介绍。 线程池顾名思义,是一个装线程的一个池子。它可以创建,销毁线程,并且给这些线程安排任务。线程池被设计出来肯定是为了解决一些技术问题。技术问题就是比如创建一个线程需要T1的时间,销毁一个线程需要T2的...

2021-12-12 22:01:28 234

原创 CAS无锁编程详解

概述在面对并发的场景,我们要对共享的资源进行保护,方式一般有两种,一种是使用Synchronized对资源进行加锁,另外一种方式就是本文要介绍的使用CAS来对共享资源进行保护。CAS全称是Compare And Swap,意思是比较与交换。通过比较之前的值是否发生改变,来决定是否对共享资源进行修改,如果这个值变了,那就说明有其它线程已经修改过这个值了,则修改失败,返回false,如果值没变,那顺利修改并且返回trueCAS底层是调用了native本地函数库,调用的是c++编写的函数,通.

2021-12-02 20:34:50 567

原创 Volatile实现原理以及应用附加相关面试题

volatile实现原理以及应用

2021-12-02 11:37:00 150

原创 Java线程的6种状态及切换

Java中线程的状态分为6种 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 实现Runnable接口和继承Thread可以得到一个线程类,new一个实例出来,线程就进入了初始状态。 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。 线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(re

2021-12-01 20:18:05 90

原创 UML复习

资料来源于学长,整理不易,还望给个三连UML复习第一部分:迭代开发和进化开发的概念(p15)迭代开发:是up和大多数其他现代方法中的关键实践进化开发:迭代生命周期基于对经过多次迭代的系统进行持续的扩展和精华,并以循环反馈和调整为核心驱动力,使之最终成为适当的系统。RUP的阶段和项目(p26 图2-7)RUP的阶段:初始 细化 构造 移交科目:业务建模 需求 分析第二部分:1) 初始阶段的目标(p37)定义初始化阶段的步骤和为本部分后续章做铺垫2) 需求的类型(

2021-12-01 19:46:36 3314 6

原创 算法复习——填空题

算法复习算法填空题子集生成给定一个正整数集合X={x1,x2, ... , xn}和一个正整数y,设计一个回溯算法求集合x的一个子集Y,使得Y中的元素之和等于y算法如下:输入:数组x,解向量p,开始下标from,目标y输出:true或者false1.若X[from]等于y,则p[from] = 1,返回ture//找到解2.若X[from]大于y,则p[from] = 0,返回false//剪枝回溯3.置p[from] = 13.1调用本算法,参数X,p,from+1

2021-11-30 10:39:59 2507 1

原创 JUC学习笔记三共享模型之管程

共享带来的问题临界区 Critical Section一个程序运行多个线程本身是没有问题的 问题出在多个线程访问共享资源 多个线程读共享资源其实也没有问题 在多个线程对共享资源读写操作时发生指令交错,就会出现问题 一段代码块内如果存在对共享资源的多线程读写操作,称这段代码块为临界区。就比如i++这个操作实际上的JVM指令有四条getstatic i // 获取静态变量i的值iconst_1 // 准备常量1iadd // 自增putstatic i // 将修改后的值存入静态变量i

2021-11-29 16:13:11 215

原创 JUC学习笔记二Java中的线程

创建和运行线程方法一,直接使用 Thread// 构造方法的参数是给线程指定名字,推荐Thread t1 = new Thread("t1") { @Override // run 方法内实现了要执行的任务 public void run() { log.debug("hello"); }};t1.start();方法二,使用 Runnable 配合 Thread把【线程】和【任务】(要执行的代码)分开// 创建任务对象Runnable task2 = new

2021-11-20 21:01:16 368

原创 JUC学习笔记一进程与线程

进程与线程的概念进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等) 线程 线程是操作系

2021-11-20 20:46:56 316

原创 看你简历写了了解类加载机制,那我们谈谈类加载机制吧。怎么谈?这么谈。进来丰富你的谈资。

相信许多学Java的小伙伴为了把自己简历包装的更好看一些,往往会去学习一下Java的高级篇,把JVM的一些知识学一下再写到简历里面,就会让面试官觉得你不只是学了一下Java的if-else和一些简单的API。而当我们遇到类加载机制这个问题的时候,由于这个过程我们是看不见的,也就没有办法去应用然后熟能生巧地理解,大多数时候都是靠背。这篇文章我们就好好盘一下这个类加载机制!让你和面试官有谈资! 先放一张大家耳熟能详的图 这张图相信大家都不陌生,很...

2021-11-17 22:26:59 946

原创 面试官问你GC怎么调优?思路是什么呀?我直接把这篇文章甩到面试官脸上

有学过JVM垃圾回收机制的小伙伴肯定了解过CG调优,当面试官问到这个问题时,相信很多小伙伴第一时间想到的就是调节几个参数,调节一下分代的大小。简单的可以用这么一句话概括,水多了加面,面多了加水。十分形象了。可是这么简单的几句话怎么能让面试官觉得你可以修航母呢?接下来,这篇文章就以修航母的角度来好好教教你怎么回答这个问题,让面试官耳目一新! 思路清晰,回答不虚。 这里先放一张思维导图来介绍一下回答GC调优的思路。通过这张图我们可以梳...

2021-11-17 15:28:10 837 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除