Synchronized 轻量级锁会自旋?好像并不是这样的。

本来是在写面霸系列的,写着写着就写到了这一题: Synchronized 原理知道不? 而关于 Synchronized 我去年还专门翻阅 JVM HotSpot 1.8 的源码来研究了一波,那时候我就发现有一个点,一个几乎网上所有文章包括《Java并发编程的艺术》也是这样说的一个点。 锁升级想必网 ... »

大小厂必问Java后端面试题(含答案)

你好,我是yes。 这个系列的文章不会是背诵版,不是那种贴上标准答案,到时候照着答就行的面试题汇总。 我会用大白话尽量用解释性、理解性的语言来回答,但是肯定没有比平时通过一篇文章来讲解清晰,不过我尽量。 暂时我先放 20 题出来,字数实在太多了,放一些之后看反馈,然后再修订,之后再搞个 pdf。 还 ... »

还不知道简历如何写?就该这样写!

你好,我是 yes。 今天来谈谈如何写好简历,这块敲门砖至关重要,毕竟连面试机会都没有的话任你有万斤力也使不出一分。 写好一份简历还是得花点时间和精力的,做任何事情我们都要有目标,而简历的目标有两点: 让 HR 知晓你这个人是否匹配岗位(获得面试机会)。 让面试官知晓你之前所做的,找到话题点(给面试 ... »

这样提问,大牛才会为你解答(提问的智慧)

在职场上、在生活中提问无处不在,有时我们扮演着提问者,有时我们扮演着回答者。 有些人可能觉得不就是提个问嘛?有啥难的?我很认真的告诉你,提问是一门技术活。 如何正确地提出问题,是一个至关重要的技能。 在写公众号之后,有很多同学会私信我,问我各种问题,作为过来人,我当然懂得那些初入行的程序员们的困惑, ... »

Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)

Hola,我是 yes。 经过了 RPC 核心和 Dubbo 微内核两篇文章后,今天终于要稍稍深入一波 Dubbo 了。 作为一个通用的 RPC 框架,性能是很重要的一环,而易用性和扩展性也极为重要。 简单地、无侵入式地扩展和定制 RPC 各阶段功能是很多团队的述求,Dubbo 就满足了这些需求。 ... »

为什么计算机经典大头书老是看不进去?

你好,我是 yes。 经常有读者问我如何学习,该怎么深入,大头书这么厚怎么看? 知识这么多该怎么联系起来?哪些是重点? 这个阶段我经历过。 那时候还在读大学,都快毕业了,我想着是时候学一些技术了,然后网上搜了一堆书。 一口气全买了,每本书都贼厚,但是都称之为经典,那怎么办?都看呗。 而实际上每本书都 ... »

内存分页不就够了?为什么还要分段?还有段页式?

你好,我是 yes。 关于内存访问你可能听过分段,分页,还有段页式。 但是为什么要分段?又为什么要分页? 有了分页为什么还要分段? 这就需要看一看历史的发展,知晓历史之后就知道这一切其实都是自然而然的。 这些概念也不是硬塞出来的。 正文 1971 年 11 月 15 日,Intel 推出世界第一块个 ... »

操作系统微内核和Dubbo微内核,有何不同?

你好,我是 yes。 在之前的文章已经提到了 RPC 的核心,想必一个 RPC 通信大致的流程和基本原理已经清晰了。 这篇文章借着 Dubbo 来说说微内核这种设计思想,不会扯到 Dubbo 某个具体细节实现上,和 Dubbo 强相关的内容会在之后的文章写到。 所以今天的重点在微内核,而这个概念我最 ... »

RPC 核心,万变不离其宗

微信搜 「yes的练级攻略」干货满满,不然来掐我,回复【123】一份20W字的算法刷题笔记等你来领。 个人文章汇总:https://github.com/yessimida/yes 欢迎 star ! Hola,我是 yes。 在了解 Dubbo 之前有必要先来剖析一波 RPC ,先搞清 RPC 原 ... »

美团面试官问我: ZGC 的 Z 是什么意思

本文的阅读有一定的门槛,请先了解 GC 的基本只知识。 现代垃圾收集器的演进大部分都是往减少停顿方向发展。 像 CMS 就是分离出一些阶段使得应用线程可以和垃圾回收线程并发,当然还有利用回收线程的并行来减少停顿的时间。 基本上 STW 阶段都是利用多线程并行来减少停顿时间,而并发阶段不会有太多的回收 ... »

炸了!一口气问了我18个JVM问题!

前言 GC 对于Java 来说重要性不言而喻,不论是平日里对 JVM 的调优还是面试中的无情轰炸。 这篇文章我会以一问一答的方式来展开有关 GC 的内容。 不过在此之前强烈建议先看这篇文章深度揭秘垃圾回收底层。 因为这篇文章解释了很多有关垃圾回收的基本知识,能从源头上理解垃圾回收和日益发展的垃圾收集 ... »

深度揭秘垃圾回收底层,这次让你彻底弄懂她

Java 与 C++ 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙 《深入理解Java虚拟机》 我们知道手动管理内存意味着自由、精细化地掌控,但是却极度依赖于开发人员的水平和细心程度。 如果使用完了忘记释放内存空间就会发生内存泄露,再如释放错了内存空间或者使用了悬垂指针则会发生无法预知的问题。 ... »

编码之路,与君共勉

不知道各位是如何踏上程序员之路的。 我选择程序员这个职业是因为一部韩剧《幽灵》。 没记错的话那是一个闷热的下午,我姐双手做紧握状,满脸激动地向我推荐了这部剧。 这部写黑客的韩剧揭开了网络世界不为人知的一面,展现了隐写、逆向工程、通信拦截等各种当时在我看来非常酷炫的技术,坚定了我学计算机的决心。 那时 ... »

你用对锁了吗?浅谈 Java “锁” 事

每个时代,都不会亏待会学习的人 大家好,我是yes。 本来打算继续写消息队列的东西的,但是最近在带新同事,发现新同事对于锁这方面有一些误解,所以今天就来谈谈“锁”事和 Java 中的并发安全容器使用有哪些注意点。 不过在这之前还是得先来盘一盘为什么需要锁这玩意,这得从并发 BUG 的源头说起。 并发 ... »

这份算法攻略,我拿到了5个大厂的offer

每个时代,都不会亏待会学习的人。 大家好,我是 yes。 我持续在 LeetCode 刷算法题将近有一年半的时间了,这一年半以来我对算法的看法改变了很多,但是实话实说支持我前进的还是面试。 在之前的文章提到过我是面试驱动型选手,我享受面试官问我啥我都嘴角一翘微微一笑的那种不羁,而近年来算法在面试中的 ... »

消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?

每个时代,都不会亏待会学习的人。 大家好,我是 yes。 今天我们来谈一谈消息队列的事务消息,一说起事务相信大家都不陌生,脑海里蹦出来的就是 ACID。 通常我们理解的事务就是为了一些更新操作要么都成功,要么都失败,不会有中间状态的产生,而 ACID 是一个严格的事务实现的定义,不过在单体系统时候一 ... »

通透,23 个问题 TCP 疑难杂症全解析

每个时代,都不会亏待会学习的人。 在进入今天主题之前我先抛几个问题,这篇文章一共提出 23 个问题。 TCP 握手一定是三次?TCP 挥手一定是四次? 为什么要有快速重传,超时重传不够用?为什么要有 SACK,为什么要有 D-SACK? 都知道有滑动窗口,那由于接收方的太忙了滑动窗口降为了 0 怎么 ... »

从一段 Dubbo 源码到 CPU 分支预测的一次探险之旅

每个时代,都不会亏待会学习的人。 大家好,我是 yes。 这次本来是打算写一篇 RocketMQ 相关文章的,但是被插队了,我也是没想到的。 说来也是巧最近在看 Dubbo 源码,然后发现了一处很奇怪的代码,于是就有了这篇文章,让我们来看一下这段代码,它属于 ChannelEventRunnable ... »

头条终面:写个消息中间件

每个时代,都不会亏待会学习的人。 大家好,我是 yes。 这种设计类问题想必大家都不陌生,面试时或多或少都能碰到。 比如如何写一个线程池?如何写一个 HashMap ?如何写一个 RPC 框架等等,当然这里的写不是真的叫你用代码写出来,只是说说设计理念,整体架构。 这个面试题来自于一个读者的字节面试 ... »

国庆期间,我造了台计算机

每个时代,都不会亏待会学习的人。 大家好,我是 yes。 对于我们程序员来说计算机的重要性不言而喻,相信大家对计算机内部也有一定的了解。 但是大家有没想过为什么一堆逻辑门组合起来就能运算了?它是如何运作来实现加减法的? 为什么 cpu 会不停地取指执行?是什么在驱动着它? 今天我就和大家一起来探索一 ... »