<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[rexuejava的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/rexuejava</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rexuejava]]></copyright><item><title><![CDATA[12道RabbitMQ高频面试题你都会了吗？（含答案解析）]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108426206</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108426206</guid><author>rexuejava</author><pubDate>Sat, 05 Sep 2020 23:34:05 +0800</pubDate><description><![CDATA[1、什么是 rabbitmq

采用 AMQP 高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦



2、为什么要使用 rabbitmq

（1）在分布式系统下具备异步,削峰,负载均衡等一系列高级功能;

（2）拥有持久化的机制，进程消息，队列中的信息也可以保存下来。

（3）实现消费者和生产者之间的解耦。

（4）对于高并发场景下，利用消息队列可以使得同步访问变为串行访问达到一定量的限流，利于数据库的操作。

（5）可以使用消息队列达到异步下单的效.]]></description><category></category></item><item><title><![CDATA[大厂必问—20道MySQL面试真题]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108301249</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108301249</guid><author>rexuejava</author><pubDate>Sat, 29 Aug 2020 23:39:14 +0800</pubDate><description><![CDATA[1、MySQL的复制原理以及流程

基本原理流程，3个线程以及之间的关联；

1. 主：binlog线程——记录下所有改变了数据库数据的语句，放进master上的binlog中；

2. 从：io线程——在使用start slave 之后，负责从master上拉取 binlog 内容，放进 自己的relay log中；

3. 从：sql执行线程——执行relay log中的语句；

2、MySQL中myisam与innodb的区别，至少5点

(1)、问5点不同；

1&gt;.InnoDB支持事物，而M]]></description><category></category></item><item><title><![CDATA[5年Java开发经验，面试挂在MySQL InnoDB上！大厂究竟多看重MySQL？]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108301017</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108301017</guid><author>rexuejava</author><pubDate>Sat, 29 Aug 2020 23:15:22 +0800</pubDate><description><![CDATA[前一段时间好兄弟找工作，面试 Java 资深研发工程师岗位，接到了不少大厂的面试邀请，有顺利接到 offer 的，也有半道儿面试被卡掉的。但最想去的企业却因为 MySQL表存储引擎 InnoDB ，与 offer 失之交臂。



相关的面试问题也背了不少，但在实际的回答中还是欠点意思。虽然工作多年，但搞不懂背后的原理其实还是很吃亏，很多内容哪怕背过了答案，其实还是一知半解，不能很快的直击问题的本质。



MySQL 在面试中高频出现，所以弄懂它真的非常有必要。为了帮助更多人理解MySQL，所以我们这..]]></description><category></category></item><item><title><![CDATA[JVM详解篇——运行时常量池]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108249891</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108249891</guid><author>rexuejava</author><pubDate>Wed, 26 Aug 2020 23:34:23 +0800</pubDate><description><![CDATA[简介

JVM在运行的时候会对class文件进行加载，链接和初始化的过程。class文件中定义的常量池在JVM加载之后会发生什么神奇的变化呢？快来看一看吧。





class文件中的常量池

之前我们在讲class文件的结构时，提到了每个class文件都有一个常量池，常量池中存了些什么东西呢？



字符串常量，类和接口名字，字段名，和其他一些在class中引用的常量。





运行时常量池

但是只有class文件中的常量池肯定是不够的，因为我们需要在JVM中运行起来。



这时候就需...]]></description><category></category></item><item><title><![CDATA[JVM详解篇——java class文件的密码本]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108249805</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108249805</guid><author>rexuejava</author><pubDate>Wed, 26 Aug 2020 23:26:48 +0800</pubDate><description><![CDATA[简介

一切的一切都是从javac开始的。从那一刻开始，java文件就从我们肉眼可分辨的文本文件，变成了冷冰冰的二进制文件。



变成了二进制文件是不是意味着我们无法再深入的去了解java class文件了呢？答案是否定的。



机器可以读，人为什么不能读？只要我们掌握java class文件的密码表，我们可以把二进制转成十六进制，将十六进制和我们的密码表进行对比，就可以轻松的解密了。



下面，让我们开始这个激动人心的过程吧。

一个简单的class

为了深入理解java class的含义，...]]></description><category></category></item><item><title><![CDATA[java安全编码指南之:拒绝Denial of Service]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108249773</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108249773</guid><author>rexuejava</author><pubDate>Wed, 26 Aug 2020 23:21:06 +0800</pubDate><description><![CDATA[简介

DOS不是那个windows的前身，而是Denial of Service，有做过系统安全方面的小伙伴可能对这个再熟悉不过了，简单点讲，DOS就是服务型响应不过来，从而拒绝了正常的服务请求。



今天本文不是要讲怎么发起一个DOS攻击，而是讲一下怎么在java的代码层面尽量减少DOS的可能性。

为什么会有DOS

为什么会有DOS呢？排除恶意攻击的情况下，DOS的原因就是资源的使用不当。一般意义上我们所说的资源有CPU周期，内存，磁盘空间，和文件描述符等。



如果这些资源受到了恶意使用，..]]></description><category></category></item><item><title><![CDATA[企业级服务网格架构之路解读——Service Mesh在会话层解耦]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108176688</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108176688</guid><author>rexuejava</author><pubDate>Sat, 22 Aug 2020 23:08:24 +0800</pubDate><description><![CDATA[追本溯源，Service Mesh实际上是一种SDN，等同于OSI模型中的会话层。 每一次技术变革，必然要导致生产力和生产关系的变革，我们看到这种趋势正在加速。本书中给出了企业上Service Mesh的路径，可供广大技术和管理人员参考。


这是一本由Nginx赞助，O’Reilly出版社出品的关于服务网格的书籍，本书标题是

The Enterprise Path to Service Mesh，还有个副标题Decoupling at Layer 5，第一版发行于2018年8月8日。这本书一共61页，.]]></description><category></category></item><item><title><![CDATA[Netty架构原理，不怕你看不懂]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108176655</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108176655</guid><author>rexuejava</author><pubDate>Sat, 22 Aug 2020 23:05:47 +0800</pubDate><description><![CDATA[对于高性能的 RPC 框架，Netty 作为异步通信框架，几乎成为必备品。例如，Dubbo 框架中通信组件，还有 RocketMQ 中生产者和消费者的通信，都使用了 Netty。今天，我们来看看 Netty 的基本架构和原理。

想要了解更多Java架构技术的，可以关注我一下，我后续也会整理更多关于架构技术这一块的知识点分享出来，里面会分享一些：spring，MyBatis，Netty源码分析，高并发、高性能、分布式、微服务架构的原理，JVM性能优化，并发编程这些成为架构师必备的知识体系.

Netty 的]]></description><category></category></item><item><title><![CDATA[Java：多态乃幸福本源，两分钟带你弄懂]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108176612</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108176612</guid><author>rexuejava</author><pubDate>Sat, 22 Aug 2020 23:04:34 +0800</pubDate><description><![CDATA[01 多态是什么

在我刻板的印象里，西游记里的那段孙悟空和二郎神的精彩对战就能很好的解释“多态”这个词：一个孙悟空，能七十二变；一个二郎神，也能七十二变；他们都可以变成不同的形态，但只需要悄悄地喊一声“变”。

Java的多态是什么呢？其实就是一种能力——同一个行为具有不同的表现形式；换句话说就是，执行一段代码，Java在运行时能根据对象的不同产生不同的结果。和孙悟空和二郎神都只需要喊一声“变”，然后就变了，并且每次变得还不一样；一个道理。

多态的前提条件有三个：

子类继承父类

子类覆盖父类的方法
]]></description><category></category></item><item><title><![CDATA[PHP的垃圾回收机制-PHP高级面试题+详解]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108113875</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108113875</guid><author>rexuejava</author><pubDate>Wed, 19 Aug 2020 23:59:55 +0800</pubDate><description><![CDATA[面试题篇



介绍一下PHP的垃圾回收机制
PHP使用了引用计数（reference counting）GC机制，同时使用根缓冲区机制，当php发现有存在循环引用的zval时，就会把其投入到根缓冲区，当根缓冲区达到配置文件中的指定数量后，就会进行垃圾回收，以此解决循环引用导致的内存泄漏问题。

1. 如果引用计数减少到零，所在变量容器将被清除（free），不属于垃圾；
	2. 如果一个zval的引用计数减少后还大于0，那么它会进入垃圾周期。其次，在一个垃圾周期中，通过检查引用计数是否减1，并且检查哪些变.]]></description><category></category></item><item><title><![CDATA[最新MySQL数据库面试题（50道题含答案和思维导图总结）2020版]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108113615</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108113615</guid><author>rexuejava</author><pubDate>Wed, 19 Aug 2020 23:36:59 +0800</pubDate><description><![CDATA[关于MySQL的知识点总结了一个思维导图，希望对大家所有帮助！









1、MySQL 中有哪几种锁？

（1）表级锁：开销小，加锁快；不会出现死锁；锁定粒度大，发生锁冲突的概率最 高，并发度最低。

（2）行级锁：开销大，加锁慢；会出现死锁；锁定粒度最小，发生锁冲突的概率最 低，并发度也最高。

（3）页面锁：开销和加锁时间界于表锁和行锁之间；会出现死锁；锁定粒度界于表 锁和行锁之间，并发度一般。

2、MySQL 中有哪些不同的表格？

共有 5 种类型的表格：

（1）MyISAM

...]]></description><category></category></item><item><title><![CDATA[这次轮到面试官疑惑了，问我这是什么语法？还能这样玩转Java？]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108113494</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108113494</guid><author>rexuejava</author><pubDate>Wed, 19 Aug 2020 23:29:20 +0800</pubDate><description><![CDATA[一：简洁

方法引用分为三种，方法引用通过一对双冒号:: 来表示，方法引用是一种函数式接口的另一种书写方式


	静态方法引用，通过类名::静态方法名， 如 Integer::parseInt
	
	
	实例方法引用，通过实例对象::实例方法，如 str::substring
	
	
	构造方法引用，通过类名::new， 如 User::new
	
二：方法引用


publicfinalclassInteger{
publicstaticintparseInt(Strings)t...]]></description><category></category></item><item><title><![CDATA[SQL | 一定要搞懂这些MySQL优化技巧]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108113458</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108113458</guid><author>rexuejava</author><pubDate>Wed, 19 Aug 2020 23:23:51 +0800</pubDate><description><![CDATA[SQL 优化已经成为衡量程序猿优秀与否的硬性指标，甚至在各大厂招聘岗位职能上都有明码标注，如果是你，在这个问题上能吊打面试官还是会被吊打呢？



有朋友疑问到，SQL 优化真的有这么重要么？如下图所示，SQL 优化在提升系统性能中是：成本最低和优化效果最明显的途径。



如果你的团队在 SQL 优化这方面搞得很优秀，对你们整个大型系统可用性方面无疑是一个质的跨越，真的能让你们老板省下不止几沓子钱。



优化成本：硬件&gt;系统配置&gt;数据库表结构&gt;SQL 及索引。



优化效果：硬...]]></description><category></category></item><item><title><![CDATA[Redis的内存淘汰策略问题]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108113384</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108113384</guid><author>rexuejava</author><pubDate>Wed, 19 Aug 2020 23:21:16 +0800</pubDate><description><![CDATA[Redis是基于内存的key-value数据库，因为系统的内存大小有限，所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。



Redis配置内存

1、通过配置文件配置通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小


	
	

//设置Redis最大占用内存大小为100Mmaxmemory 100mb

redis的配置文件不一定使用的是安装目录下面的redis.conf文件，启动redis服务的时候是可以传一个参数指定redis的...]]></description><category></category></item><item><title><![CDATA[（线程池篇）Java线程池实现原理及其在美团业务中的实践]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108113270</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108113270</guid><author>rexuejava</author><pubDate>Wed, 19 Aug 2020 23:16:26 +0800</pubDate><description><![CDATA[随着计算机行业的飞速发展，摩尔定律逐渐失效，多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池ThreadPoolExecutor类，帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池，是一个开发人员必修的基本功。

本文开篇简述线程池概念和用途，接着结合线程池的源码，帮助读者领略线程池的设计思路，最后回归实践，通过案例讲述使用线程池遇到的问题，并给出了一种动态化线程池解决方案。



一、写在前面

1.1 线程池是什么

线程池（Thre.]]></description><category></category></item><item><title><![CDATA[一文带你了解 MySQL 中的各种锁机制！]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108113155</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108113155</guid><author>rexuejava</author><pubDate>Wed, 19 Aug 2020 23:10:45 +0800</pubDate><description><![CDATA[MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁，其中按用法还分为共享锁和排他锁.





行级锁



行级锁是Mysql中锁定粒度最细的一种锁，表示只针对当前操作的行进行加锁。



行级锁能大大减少数据库操作的冲突。其加锁粒度最小，但加锁的开销也最大。行级锁分为共享锁和排他锁.



特点



开销大，加锁慢；会出现死锁；锁定粒度最小，发生锁冲突的概率最低，并发度也最高。



用法



共享锁(s 锁 读锁)



用法：





排他锁(x 锁 写锁 )



...]]></description><category></category></item><item><title><![CDATA[从 4 个面试题了解「浏览器的垃圾回收」]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108112129</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108112129</guid><author>rexuejava</author><pubDate>Wed, 19 Aug 2020 22:35:21 +0800</pubDate><description><![CDATA[浏览器垃圾回收一直是前端面试常考的部分，我一直不太理解。最近深入学习了一下，争取一篇文章说清楚。


我们首先带着这 4 个问题，来了解浏览器垃圾回收的过程，后面会逐一解答：


	浏览器怎么进行垃圾回收？
	
	
	浏览器中不同类型变量的内存都是何时释放？
	
	
	哪些情况会导致内存泄露？如何避免？
	
	
	weakMap weakSet 和 Map Set 有什么区别？
	
ok, let's go！

什么是垃圾数据?

生活中你买了一瓶可乐，喝完之后可乐瓶就变成了垃圾，应该被回收处理。

同样.]]></description><category></category></item><item><title><![CDATA[教你如何写一份合格的技术简历]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/108024445</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/108024445</guid><author>rexuejava</author><pubDate>Sat, 15 Aug 2020 16:23:42 +0800</pubDate><description><![CDATA[猿灯塔社群kevin大咖教你如何写一份合格的技术简历



]]></description><category></category></item><item><title><![CDATA[10 个牛逼的单行代码编程技巧，你会用吗？]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/107317244</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/107317244</guid><author>rexuejava</author><pubDate>Mon, 13 Jul 2020 15:01:29 +0800</pubDate><description><![CDATA[本文列举了十个使用一行代码即可独立完成(不依赖其他代码)的业务逻辑，主要依赖的是Java8中的Lambda和Stream等新特性以及try-with-resources、JAXB等。

1、对列表/数组中的每个元素都乘以2


 // Range是半开区间
 int [] ia = range(1, 10).map(i -&gt; i * 2).toArray();
 List&lt;Integer&gt; result = range(1, 10).map(i -&gt; i * 2).boxed().c]]></description><category></category></item><item><title><![CDATA[阿里面试官：RocketMQ与Kafka中如何实现事务？]]></title><link>https://blog.youkuaiyun.com/rexuejava/article/details/107311048</link><guid>https://blog.youkuaiyun.com/rexuejava/article/details/107311048</guid><author>rexuejava</author><pubDate>Mon, 13 Jul 2020 10:03:12 +0800</pubDate><description><![CDATA[RocketMQ的事务是如何实现的？

首先我们来看 RocketMQ 的事务。我在之前的课程中，已经给大家讲解过 RocketMQ 事务的大致流程，这里我们再一起通过代码，重温一下这个流程。


public class CreateOrderService {
    @Inject
    private OrderDao orderDao;
    //注入订单表的DAO
    @Inject
    private ExecutorService executorService;
    //注]]></description><category></category></item></channel></rss>