摘要: 硬核剖析ThreadLocal源码,面试官看了直呼内行 工作面试中经常遇到ThreadLocal,但是很多同学并不了解ThreadLocal实现原理,到底为什么会发生内存泄漏也是一知半解?今天一灯带你深入剖析ThreadLocal源码,总结ThreadLocal使用规范,解析ThreadLocal高频面试题。 ThreadLocal是线程本地变量,就是线程的私有变量,不同线程之间相互隔离,无法共享,相当于每个线程拷贝了一份变量的副本。 目的就是在多线程环境中,无需加锁,也能保证数据的安全性。 阅读全文
posted @ 2022-10-25 09:59 一灯架构 阅读(472) 评论(1) 推荐(1) 编辑
摘要: 再有人说synchronized是重量级锁,就把这篇文章扔给他看 synchronized作为Java程序员最常用同步工具,很多人却对它的用法和实现原理一知半解,以至于还有不少人认为synchronized是重量级锁,性能较差,尽量少用。 但不可否认的是synchronized依然是并发首选工具,连volatile、CAS、ReentrantLock都无法动摇synchronized的地位。synchronized是工作面试中的必备技能,今天就跟着一灯一块深入剖析synchronized底层到底做了哪些优化? synchronized是用来加锁的,而锁是加在对象上面,所以需要先聊一下JVM中对象构成。 阅读全文
posted @ 2022-10-21 10:20 一灯架构 阅读(550) 评论(1) 推荐(1) 编辑
摘要: Java程序员必会Synchronized底层原理剖析 synchronized作为Java程序员最常用同步工具,很多人却对它的用法和实现原理一知半解,以至于还有不少人认为synchronized是重量级锁,性能较差,尽量少用。 但不可否认的是synchronized依然是并发首选工具,连volatile、CAS、ReentrantLock都无法动摇synchronized的地位。synchronized是工作面试中的必备技能,今天就跟着一灯一块深入剖析synchronized的底层原理。 阅读全文
posted @ 2022-10-19 15:13 一灯架构 阅读(755) 评论(1) 推荐(0) 编辑
摘要: 不允许还有Java程序员不了解BlockingQueue阻塞队列的实现原理 我们平时开发中好像很少使用到BlockingQueue(阻塞队列),比如我们想要存储一组数据的时候会使用ArrayList,想要存储**键值对**数据会使用HashMap,在什么场景下需要用到BlockingQueue呢? 1. BlockingQueue的应用场景 当我们处理完一批数据之后,需要把这批数据发给下游方法接着处理,但是下游方法的处理速率不受控制,可能时快时慢。如果下游方法的处理速率较慢,会拖慢当前方法的处理速率,这时候该怎么办呢? 阅读全文
posted @ 2022-10-17 14:19 一灯架构 阅读(617) 评论(1) 推荐(3) 编辑
摘要: 我说HashMap初始容量是16,面试官让我回去等通知 众所周知HashMap是工作和面试中最常遇到的数据类型,但很多人对HashMap的知识止步于会用的程度,对它的底层实现原理一知半解,了解过很多HashMap的知识点,却都是散乱不成体系,今天一灯带你一块深入浅出的剖析HashMap底层实现原理。 看下面这些面试题,你能完整的答对几道? 阅读全文
posted @ 2022-10-13 10:03 一灯架构 阅读(1680) 评论(10) 推荐(2) 编辑
摘要: 如何优雅的备份MySQL数据?看这篇文章就够了 先说一下为什么需要备份MySQL数据? 一句话总结就是:为了保证数据的安全性。 如果我们把数据只存储在一个地方,如果物理机器损坏,会导致数据丢失,无法恢复。 还有就是我们每次手动修改线上数据之前,为了安全起见,都需要先备份数据。防止人为的误操作,导致弄脏数据或弄丢数据。 阅读全文
posted @ 2022-10-10 09:33 一灯架构 阅读(929) 评论(1) 推荐(0) 编辑
摘要: 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段 工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段? 比如:给下面的用户表(user)添加年龄(age)字段。 有同学会说,这还不简单,直接加不加完了,用下面的命令: 阅读全文
posted @ 2022-10-08 15:48 一灯架构 阅读(2553) 评论(7) 推荐(12) 编辑
摘要: 大家都在用MySQL count(*)统计总数,到底有什么问题? 在日常开发工作中,我经常会遇到需要统计总数的场景,比如:统计订单总数、统计用户总数等。一般我们会使用MySQL 的count函数进行统计,但是随着数据量逐渐增大,统计耗时也越来越长,最后竟然出现慢查询的情况,这究竟是什么原因呢?本篇文章带你一下学习一下。 阅读全文
posted @ 2022-09-19 22:46 一灯架构 阅读(1192) 评论(3) 推荐(7) 编辑
摘要: MySQL到底有没有解决幻读问题?这篇文章彻底给你解答 MySQL InnoDB引擎在Repeatable Read(可重复读)隔离级别下,到底有没有解决幻读的问题? 网上众说纷纭,有的说解决了,有的说没解决,甚至有些大v的意见都无法达成统一。 今天就深入剖析一下,彻底解决这个幻读的问题。 解决幻读问题之前,先普及几个知识点。 阅读全文
posted @ 2022-09-13 14:16 一灯架构 阅读(624) 评论(2) 推荐(2) 编辑
摘要: 硬核解析MySQL的MVCC实现原理,面试官看了都直呼内行 MVCC全称是Multi-Version Concurrency Control(多版本并发控制),是一种并发控制的方法,通过维护一个数据的多个版本,减少读写操作的冲突。 如果没有MVCC,想要实现同一条数据的并发读写,还要保证数据的安全性,就需要操作数据的时候加读锁和写锁,这样就降低了数据库的并发性能。 阅读全文
posted @ 2022-09-06 20:28 一灯架构 阅读(684) 评论(3) 推荐(2) 编辑