<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wdjnb的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wdjnb</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wdjnb]]></copyright><item><title><![CDATA[拿捏大厂面试，2022最新版的Java面试突击班手册]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124830550</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124830550</guid><author>wdjnb</author><pubDate>Tue, 17 May 2022 21:30:50 +0800</pubDate><description><![CDATA[前言

最近很多同学已经成功“拿捏”了今年的面试，好多同学给老师说，2022最新版的Java面试突击班的内容给自己提供了很大的帮助，在这里很感谢这些同学对老师的认可，老师会持续奋战在Java教培的一线，了解最新的技术并且提供给大家学习！ 话说回来，今天给大家分享的就是咱们2022版面试突击班的文字PDF版本，如果大家需要视频版本也可以一并送给大家的，下面是文字版的分享大家可以详细往下看！

由于文章的篇幅有限，所以这里只为大家截图一些大标题内容，里面详细的小标题内容就不为大家截图了，等大家自己拿到手之后可以]]></description><category></category></item><item><title><![CDATA[阿里面试官：你先简单说说JVM 是如何管理内存的吧？]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124829700</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124829700</guid><author>wdjnb</author><pubDate>Tue, 17 May 2022 20:54:39 +0800</pubDate><description><![CDATA[Java 的内存管理都是由 JVM 来进行管理的，不需要程序员手动管理内存，这对于程序员来说是友好的。 但一件事有好处就有坏处。 假如内存管理出现了问题，如果我们不了解 JVM 是如何管理内存的，那么排查问题将会是一项异常艰难的工作。


1、运行时数据区域

Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途。







1.1 程序计数器


程序计数器（Program Counter Register）是一块较小的内存空间，它可以看.]]></description><category></category></item><item><title><![CDATA[当 key 达到过期时间，Redis 就会马上删除么？]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124822451</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124822451</guid><author>wdjnb</author><pubDate>Tue, 17 May 2022 15:35:25 +0800</pubDate><description><![CDATA[码哥，当 key 达到过期时间，Redis 就会马上删除么？


先说结论，并不会立马删除，Redis 有两种删除过期数据的策略：

定期选取部分数据删除；
	惰性删除；
该命令在 Redis 2.4 版本，过期时间并不是很精确，它可能在零到一秒之间。

从 Redis 2.6 开始，过期错误为 0 到 1 毫秒。

EXPIRE key seconds [ NX | XX | GT | LT] 指令可以将指定的 key 设置过期时间，如果没有设置过期时间， key 将一直存在，除非我们明确将其删...]]></description><category></category></item><item><title><![CDATA[SpringBoot终于受不了这种滥用，对循环依赖说再见]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124821928</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124821928</guid><author>wdjnb</author><pubDate>Tue, 17 May 2022 15:11:16 +0800</pubDate><description><![CDATA[原创：小姐姐味道（微信公众号ID：xjjdog），欢迎分享，非公众号转载保留此声明。


Spring的Bean管理，一直是整个体系中津津乐道的东西。尤其是Bean的循环依赖，更是很多面试官最喜欢考察的2B知识点之一。

但事实上，项目中存在Bean的循环依赖，是代码质量低下的表现。多数人寄希望于框架层来给擦屁股，造成了整个代码的设计越来越糟，最后用一些奇技淫巧来填补犯下的错误。

还好，SpringBoot终于受不了这种滥用，默认把循环依赖给禁用了！

从2.6版本开始，如果你的项目里还存在循环依赖，..]]></description><category></category></item><item><title><![CDATA[CTO给我炫了一遍RocketMQ 的设计理念剖析]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124819809</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124819809</guid><author>wdjnb</author><pubDate>Tue, 17 May 2022 14:09:40 +0800</pubDate><description><![CDATA[前言

张大胖最近是又喜又忧，喜的是业务量发展猛增，忧的是由于业务量猛增，一些原来不是问题的问题变成了大问题，比如说新会员注册吧，原来注册成功只要发个短信就行了，但随着业务的发展，现在注册成功也需要发 push，发优惠券,...等





这样光注册用户这一步就需要调用很多服务，导致用户注册都需要花不少时间，假设每个服务调用需要 50 ms，那么光以上服务就需要调用 200 ms，而且后续产品还有可能再加一些发新人红包等活动，每加一个功能，除了引入额外的服务增加耗时外，还需要额外集成服务，重发代码，实在让]]></description><category></category></item><item><title><![CDATA[前后端分离：怎样能提高对接效率，并且代码更优雅呢？]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124807528</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124807528</guid><author>wdjnb</author><pubDate>Mon, 16 May 2022 20:41:27 +0800</pubDate><description><![CDATA[现在大多数公司项目框架，基本都是属于前后端分离模式，这种模式会涉及到一个前后端对接问题，无论是对前端或者是后台服务，维护一套完善且规范的接口是非常有必要的，这样不仅能够提高对接效率，也可以让我的代码看起来更加简洁优雅。

修改前后最大的区别是我们不用在每个接口单独捕获异常，也不用在每个接口都要组装一遍返回参数，可以参考下面这张对比图：





一、SpringBoot不使用统一返回格式

默认情况下，SpringBoot会有如下三种返回情况。

1.1 字符串


@GetMapping("/getUse]]></description><category></category></item><item><title><![CDATA[阿里巴巴开源SpringBoot深度历险（嵩山版），实现面试进阶]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124801099</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124801099</guid><author>wdjnb</author><pubDate>Mon, 16 May 2022 17:05:12 +0800</pubDate><description><![CDATA[前言

大家可以回想一下，当初我们最开始学习Java的时候，搭建一个Web所需要的步骤。。。

1、配置web.xml，加载spring和spring mvc

2、配置数据库连接、配置spring事务

3、配置加载配置文件的读取，开启注解

4、配置日志文件...

5、配置完成之后部署tomcat 调试

现在回看一下，真的是yue了！现在大家学Spring，需要搭建一个新的项目时都是先从SpringBoot入手，用SpringBoot只需要非常少的几个配置就可以迅速搭建起来一套web项目或者微服务（]]></description><category></category></item><item><title><![CDATA[概念详解：MySQL不同事务之间的隔离性，如何实现？]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124799235</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124799235</guid><author>wdjnb</author><pubDate>Mon, 16 May 2022 14:41:44 +0800</pubDate><description><![CDATA[前言

MySQL有ACID四大特性，本文着重讲解MySQL不同事务之间的隔离性的概念，以及MySQL如何实现隔离性。下面先罗列一下MySQL的四种事务隔离级别，以及不同隔离级别可能会存在的问题。事务隔离级别越高，多个事务在并发访问数据库时互相产生数据干扰的可能性越低，但是并发访问的性能就越差。（相当于牺牲了一定的性能去保证数据的安全性）

下面这张表，展示了MySQL的四大隔离级别和伴随着的一些问题，下面详细介绍。





事务隔离级别

读未提交：多个事务同时修改一条记录，A事务对其的改动在A事务还没]]></description><category></category></item><item><title><![CDATA[同事问我Nacos集群架构到底怎么用？我笑了]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124798875</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124798875</guid><author>wdjnb</author><pubDate>Mon, 16 May 2022 14:29:16 +0800</pubDate><description><![CDATA[前言

由于在公司，注册中心和配置中心都是使用的Nacos，因为前一段时间比较忙（木有划水时间），没有精力仔细去研究，时间就像海绵里的水，挤一挤总会是有的，出于对技术的好奇心，今天挤了一点时间，终于到了我牧汉三出马的时候。今儿个就说一说Nacos集群架构是如何搭配，以及在企业中是如何使用的。

Nacos集群架构

在搭建Nacos集群之前，我们首先要了解一下Nacos的架构，工欲善其事必先利其器，磨刀不费砍材功，在上一节中，我们了解了Nacos基础功能，对Nacos的一些基本使用和配置，但是这些在实际..]]></description><category></category></item><item><title><![CDATA[字节面试真题：什么是伪共享？图文详解一番]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124798559</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124798559</guid><author>wdjnb</author><pubDate>Mon, 16 May 2022 14:13:10 +0800</pubDate><description><![CDATA[大家好！

周末的时候，有个读者跟我说，面试字节的时候被问到：「什么是伪共享？又该怎么避免伪共享的问题？」

这个其实是考察 CPU 缓存的问题，我之前的图解系统也有提到过。

今天，我再跟大家讲一下。

正文

CPU 如何读写数据的？

先来认识 CPU 的架构，只有理解了 CPU 的 架构，才能更好地理解 CPU 是如何读写数据的，对于现代 CPU 的架构图如下：







可以看到，一个 CPU 里通常会有多个 CPU 核心是，比如上图中的 1 号和 2 号 CPU 核心，并且每个 CPU 核心]]></description><category></category></item><item><title><![CDATA[Future机制，绝对是并发编程里必须跨过的坎]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124798135</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124798135</guid><author>wdjnb</author><pubDate>Mon, 16 May 2022 13:56:25 +0800</pubDate><description><![CDATA[前言

Java 5在concurrency包中引入了java.util.concurrent.Callable 接口，它和Runnable接口很相似，但它可以返回一个对象或者抛出一个异常。

Callable接口使用泛型去定义它的返回类型。Executors类提供了一些有用的方法在线程池中执行Callable内的任务。由于Callable任务是并行的，我们必须等待它返回的结果。而线程是属于异步计算模型，所以不可能直接从别的线程中得到函数返回值。

java.util.concurrent.Future对象]]></description><category></category></item><item><title><![CDATA[同事告诉我他代码丝滑的原因是用了 Mybatis Plus？]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124773473</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124773473</guid><author>wdjnb</author><pubDate>Sat, 14 May 2022 20:32:26 +0800</pubDate><description><![CDATA[1. Mybatis 存在的痛点

我们知道 MyBatis 是一个基于 java 的持久层框架，它内部封装了 jdbc，极大提高了我们的开发效率。

但是使用 Mybatis 开发也有很多痛点：

每个 Dao 接口都需要自己定义一堆增删改查方法。

/**
 * @Desc: UserDao 接口
 * @Author: 公众号：知否技术
 * @date: 下午7:43 2022/5/7
 */
public interface UserDao {
    // 获取所有用户信息
    Li...]]></description><category></category></item><item><title><![CDATA[Cloudreve自建云盘实站：容量和速度自己来决定]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124769571</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124769571</guid><author>wdjnb</author><pubDate>Sat, 14 May 2022 16:09:27 +0800</pubDate><description><![CDATA[一、前言

为啥要用自建网盘，市面上的云盘不香了？

每一个用户需求的背后都是因为有场景存在，而这些差异化的场景也都是因为不同的用户类型产生的。

就像我作为技术号主想分享一些自己总结的资料，放到一些云盘以后有时候会被其他不知道从哪冒出来的小伙伴给举报，举报链接就取消了，取消了链接也就影响了我的资料分享。同时我可能还希望我的分享内容能被记录到下载次数、允许几次下载、下载时是否要做一些引流动作等等。

所以类似这样的特殊场景下就需要自建网盘来维护个人需要的资料，与之类似的还有一些公司或者组织都会建相对私域的网]]></description><category></category></item><item><title><![CDATA[大厂程序员都在用的都在用的API管理神器，学到就是赚到]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124769170</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124769170</guid><author>wdjnb</author><pubDate>Sat, 14 May 2022 15:48:07 +0800</pubDate><description><![CDATA[❝ 程序员最讨厌的两件事：1. 写文档，2. 别人不写文档。大多数开发人员不愿意写 API 文档的原因：写文档短期收益远低于付出的成本，然而并不是所有人都能够坚持做有长期收益的事情的。你因为写文档而耽误了当前项目进度，老板会直接找你麻烦；但是因为没写文档而带来的长期收益低，老板是看不见的。这就是现实，让人去做违反人性的事情是非常困难的。 ❞


作为一个前后端分离模式开发的团队，我们经常会看到这样的场景：前端开发和后端开发在一起热烈的讨论“你这接口参数怎么又变了？”，“接口怎么又不通了？”，“稍等，我调试.]]></description><category></category></item><item><title><![CDATA[理论详解：为什么 MySQL 采用B+树作为索引？]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124768060</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124768060</guid><author>wdjnb</author><pubDate>Sat, 14 May 2022 15:07:06 +0800</pubDate><description><![CDATA[前言

为什么 MySQL 采用B+树作为索引？

如果纯粹的猜测MySQL数据库索引为什么使用B+树？那么围绕这个问题的回答通常一定是围绕B+树本身是什么，有什么优势这两点去解释这个问题。

（这不是我开始这么去想的，看了很多文章都是从这一维度问答，这些回答让我失望啊。直到那天问了坐在我旁边那个整天摸鱼的5年程序员；他慵懒的回答：你想为什么是使用的是树结构呢？ 咦，听到这回答，一下打开了我的思绪，有点意思！）

先抛开B+树是什么，有什么优势，这些先入为主的答案。

（我并不想要这个往我脑袋硬塞的硬邦邦.]]></description><category></category></item><item><title><![CDATA[常读常新，微服务最强内功心法，这些理论得吃透~]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124767708</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124767708</guid><author>wdjnb</author><pubDate>Sat, 14 May 2022 14:27:26 +0800</pubDate><description><![CDATA[前言

Building Microservices: Designing Fine Grained Systems 读书笔记。

本书偏理论而非实现，可作为内功心法，适合架构师或有经验的系统工程师。

常读常新。

前言

微服务是分布式系统提高细粒度服务（use of finely grained services）使用的一种 方式，在这种模式中，每个服务都有自己独立的生命周期，所有服务共同合作完成整体 的功能。

微服务主要是针对业务领域建模的（modeled around business doma]]></description><category></category></item><item><title><![CDATA[面试大厂真题：怎么实现JVM性能调优？]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124759499</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124759499</guid><author>wdjnb</author><pubDate>Fri, 13 May 2022 20:44:12 +0800</pubDate><description><![CDATA[对于工作3年左右的Java程序员来说，在面试大厂的过程中，面试官可能不会太关注你做了多少个项目、你的CRUD水平如何。更多的是关注你对某项技术点的理解深度，所以说，工作3年左右的小伙伴一定要把自己的重心放到技术的深度上来。

今天，我们先一起聊聊关于JVM性能调优的话题，本文的主要结构如下所示。





常见面试题

关于JVM，一道常见的面试题就是：Java中创建的对象是存储在JVM中的哪个区域的？

例如，这里，我们简单的列举一行代码，如下所示。


User user = new User();

]]></description><category></category></item><item><title><![CDATA[学Netty前，还是要先把JavaNIO编程模型掌握好]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124759281</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124759281</guid><author>wdjnb</author><pubDate>Fri, 13 May 2022 20:30:48 +0800</pubDate><description><![CDATA[一、Java NIO 基本介绍

Java NIO 全称 java non-blocking IO，是指 JDK 提供的新 API。从 JDK1.4 开始，Java 提供了一系列改进的输入/输出的新特性，被统称为 NIO(即 New IO)，是同步非阻塞的

NIO 相关类都被放在 java.nio 包及子包下，并且对原 java.io 包中的很多类进行改写。





NIO是面向缓冲区 ，或者面向 快 编程的。数据读取到一个它稍后处理的缓冲区，需要时可在缓冲区中前后移动，这就增加了处理过程中的灵活性，使]]></description><category></category></item><item><title><![CDATA[596页阿里面试参考指南首发，助力斩获大厂offer]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124758826</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124758826</guid><author>wdjnb</author><pubDate>Fri, 13 May 2022 20:06:41 +0800</pubDate><description><![CDATA[前言

本文主要记录了我的同事能够拿到阿里的offer，一大部分功劳得益于这一本“阿里面试参考指南（恒山版）”，这本手册596页他整整狂刷了29天，收获颇丰。

下面咱们就跟着文章一起来看看吧！

内容大纲


	阿里巴巴高并发秒杀架构
	
	
	分布式
	
	
	中间件
	
	
	数据库
	
	
	设计模式与实践
	
	
	数据结构与算法
	
	
	阿里巴巴面试真实场景还原
	




​恒山版









阿里巴巴高并发秒杀架构







​



XA两阶段提交（2PC）









]]></description><category></category></item><item><title><![CDATA[面试被SpringBoot问倒，那是你不知道它还可以这样学？]]></title><link>https://blog.youkuaiyun.com/wdjnb/article/details/124758260</link><guid>https://blog.youkuaiyun.com/wdjnb/article/details/124758260</guid><author>wdjnb</author><pubDate>Fri, 13 May 2022 19:30:21 +0800</pubDate><description><![CDATA[SpringBoot 以其轻量级、内嵌 Web 容器、一键启动、方便调试等特点被越来越多的微服务实践者所采用。然而知其然还要知其所以然，本 Chat 就来讲解 SpringBoot 核心模块的实现原理，在面试的时候也是会被经常问到的，核心内容主要包括：


	spring-boot-load 模块，正常情况下一个类加载器只能找到加载路径的 jar 包里面当前目录或者文件类里面的 *.class 文件，SpringBoot 允许我们使用 java -jar archive.jar 运行包含嵌套依赖 jar 的]]></description><category></category></item></channel></rss>