<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[reaijava的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/reaijava</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; reaijava]]></copyright><item><title><![CDATA[Java程序员非要进大厂才能拿到年薪50W+，从而告别重复的CRUD？]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/109200630</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/109200630</guid><author>reaijava</author><pubDate>Mon, 26 Oct 2020 14:48:38 +0800</pubDate><description><![CDATA[接私活 对程序员这个圈子来说是一个既公开又隐私的话题，不说全部，应该大多数程序员都有过想要接私活的想法，当然，也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题，似乎都在避嫌。就跟有人下班后跑滴滴一样，程序员私有时间接点活挣点钱不也很正常么，不过不要在上班时间就行，就跟你上班期间出去跑滴滴一样。

但是我是不建议接私活的，接私活会浪费自己在一大部分的精力，就算不接私活，利用好工作后的八小时也能比别人强，月薪也绝对不会比那些接私活的少。

把有限的时间花在提升自己的能力上，技术深度，技术广.]]></description><category></category></item><item><title><![CDATA[非常强悍的 RabbitMQ 总结，干货满满，看到就是赚到！]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107340900</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107340900</guid><author>reaijava</author><pubDate>Tue, 14 Jul 2020 16:26:11 +0800</pubDate><description><![CDATA[RabbitMQ是基于AMQP协议的，通过使用通用协议就可以做到在不同语言之间传递。

AMQP协议

核心概念

server：又称broker，接受客户端连接，实现AMQP实体服务。
	connection：连接和具体broker网络连接。
	channel：网络信道，几乎所有操作都在channel中进行，channel是消息读写的通道。客户端可以建立多个channel，每个channel表示一个会话任务。
	message：消息，服务器和应用程序之间传递的数据，由properties和body组成。p]]></description><category></category></item><item><title><![CDATA[不只是fastjson，这个你每天都在用的类库也被爆过反序列化漏洞！]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107313715</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107313715</guid><author>reaijava</author><pubDate>Mon, 13 Jul 2020 11:32:25 +0800</pubDate><description><![CDATA[工作久了的话，就会慢慢有种感觉：代码都是人写的，是人写的代码就可能存在漏洞，这个是永远都无法避免的，任何牛X的程序员都不可能写出完全没有bug的代码！

其实关于序列化的安全性问题，无论是Java原生的序列化技术还是很多其他的开源序列化工具，都曾经发生过。

序列化的安全性，一直都是比较大的一个话题，我无意为fastjson辩驳，但是出问题之后直接喷代码写的烂，其实是有点不负责任的。

Apache-Commons-Collections这个框架，相信每一个Java程序员都不陌生，这是一个非常著名的开源框架]]></description><category></category></item><item><title><![CDATA[创建线程那么容易，为什么非要让我使用线程池？（深深深入剖析）]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107286374</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107286374</guid><author>reaijava</author><pubDate>Sat, 11 Jul 2020 16:24:09 +0800</pubDate><description><![CDATA[一、概述

1、问题

先看我们遇到的问题：我们创建线程的方式很简单，new Thread(() -&gt; {...})，就是因为这么简单粗暴的方式，才带来了致命的问题。首先线程的创建和销毁都是很耗时很浪费性能的操作，你用线程为了什么？为了就是异步，为了就是提升性能。简单的new三五个Thread还好，我需要一千个线程呢？你也for循环new1000个Thread吗？用完在销毁掉。那这一千个线程的创建和销毁的性能是很糟糕的！

2、解决

为了解决上述问题，线程池诞生了，线程池的核心思想就是：线程复用。也]]></description><category></category></item><item><title><![CDATA[github标星81.6k的Java面试突击手册，全面详细对标P7岗]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107257384</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107257384</guid><author>reaijava</author><pubDate>Fri, 10 Jul 2020 17:45:46 +0800</pubDate><description><![CDATA[Java是一门纯粹的面向对象的编程语言，所以除了基础语法之外，必须得弄懂它的 oop 特性：封装、继承、多态。此外还有泛型、反射的特性，很多框架的技术都依赖它，比如 Spring 核心的 Ioc 和 AOP，都用到了反射，而且 Java 自身的动态代理也是利用反射实现的。

此外还有 Java 一些标准库也是非常常见，比如集合、I/O、并发，几乎在 Web 开发中无处不在，也是面试经常会被问到的，所以在面试Java后端岗位之前，不妨先打好这些核心的基础。

Github作为程序员们的后花园，一直以来都是程.]]></description><category></category></item><item><title><![CDATA[Java 程序员如何使用 Shiro 框架]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107245306</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107245306</guid><author>reaijava</author><pubDate>Fri, 10 Jul 2020 10:49:20 +0800</pubDate><description><![CDATA[一、架构

要学习如何使用Shiro必须先从它的架构谈起，作为一款安全框架Shiro的设计相当精妙。Shiro的应用不依赖任何容器，它也可以在JavaSE下使用。但是最常用的环境还是JavaEE。下面以用户登录为例：







1、使用用户的登录信息创建令牌


UsernamePasswordToken token =newUsernamePasswordToken(username, password);

token可以理解为用户令牌，登录的过程被抽象为Shiro验证令牌是否具有合法身份以...]]></description><category></category></item><item><title><![CDATA[为什么说Redis是单线程的以及Redis为什么这么快！Redis、面试、缓存、雪崩、分布式锁实现一篇文章搞定！]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107214523</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107214523</guid><author>reaijava</author><pubDate>Wed, 08 Jul 2020 20:32:33 +0800</pubDate><description><![CDATA[什么是Redis及其重要性？

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久化的高性能键值对数据库。

Redis的之父是来自意大利的西西里岛的Salvatore Sanfilippo，Github网名antirez，笔者找了作者的一些简要信息并翻译了一下，如图：



从2009年第一个版本起Redis已经走过了10个年头，目前Redis仍然是最流行的key-value型内存数据库的之一。

优秀的开源项目离不开大公司的支持，在2013年5月之前，其开发由VMware赞助，而2]]></description><category></category></item><item><title><![CDATA[连夜整理了142页Spring知识点总离线文档（源码笔记+思维导图）]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107207034</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107207034</guid><author>reaijava</author><pubDate>Wed, 08 Jul 2020 16:53:32 +0800</pubDate><description><![CDATA[写在前面

由于Spring家族的东西很多，一次性写完也不太现实。所以这一次先更新Spring【最核心】的知识点：AOP和IOC





无论是入门还是面试，理解AOP和IOC都是非常重要的。在面试的时候，我没怎么被问过MyBatis/Hibernate/Struts2这样的框架，而Spring就经常被问到。

本次PDF共有【142】页，涉及到的内容有：

IOC和AOP的全面讲解
	Spring事务详解和相关问题
	Spring IOC/AOP相关面试题
Spring AOP/IOC源码笔记


这.]]></description><category></category></item><item><title><![CDATA[谁再悄咪咪的吃掉异常，我上去就是一 JIO]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107199701</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107199701</guid><author>reaijava</author><pubDate>Wed, 08 Jul 2020 10:30:48 +0800</pubDate><description><![CDATA[这图太魔性了啊

这次分享一下上个月碰到的离奇的问题。一个简单的问题，硬是因为异常被悄咪咪吃掉，过关难度直线提升，导致小黑哥排查一个晚上。

这个美好的晚上，本想着开两把 LOL 无限火力，在召唤师峡谷来个五杀的~

哎，就这样没了啊！我知道，你们一定能理解这种五杀被抢的感觉~

下次，真的，谁再让我看到悄咪咪的吃掉异常，我真的要上去一 Jio 了！





好了，本文可不是水文，看完本篇文章，你可以学到以下知识点：

Arthas 排查技巧
	啥是 NoClassDefFoundError
...]]></description><category></category></item><item><title><![CDATA[拥有大厂梦，却因为MySQL败下阵来，那你一定要看这本经典之作]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107190136</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107190136</guid><author>reaijava</author><pubDate>Tue, 07 Jul 2020 20:54:35 +0800</pubDate><description><![CDATA[写在前面

在互联网行业，MySql数据库毫无疑问已经是最常用的数据库。由于其体积小、速度快、总体拥有成本低，尤其是开放源码这一特点，许多中小型网站为了降低网站总体拥有成本而选择MySql作为网站数据库。

作为一名编程人员，对MySql一定不会陌生，尤其是互联网行业，对MySql的使用是比较多的。对于求职者来说，MySql又是面试中一定会问到的重点，很多人拥有大厂梦，却因为MySQL败下阵来。

要学习Mysql，那就必须给大家安利一波《高性能MySql（第3版）》这本MySql领域的经典之作了。（全书共]]></description><category></category></item><item><title><![CDATA[我敢说这是Java面试史上最全的JAVA专业术语面试100问，先放50问]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107177669</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107177669</guid><author>reaijava</author><pubDate>Tue, 07 Jul 2020 11:27:45 +0800</pubDate><description><![CDATA[前言：


说在前面，

面试题是根据一些朋友去面试提供的，再就是从网上整理了一些。

先更新50道，下一波吧后面的也更出来。

求赞求关注！！


废话也不多说，现在就来看看有哪些面试题









1、面向对象的特点有哪些?

抽象、继承、封装、多态。

2、接口和抽象类有什么联系和区别?

3、重载和重写有什么区别?

4、java有哪些基本数据类型?

5、数组有没有length()方法?String有没有length()方法?

数组没有length()方法，它有length属性。 S...]]></description><category></category></item><item><title><![CDATA[看完这篇Redis 分布式锁实现原理，面试官都被你征服！]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107164571</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107164571</guid><author>reaijava</author><pubDate>Mon, 06 Jul 2020 18:03:14 +0800</pubDate><description><![CDATA[谈起redis锁，下面三个，算是出现最多的高频词汇：

setnx
	redLock
	redisson
setnx

其实目前通常所说的setnx命令，并非单指redis的setnx key value这条命令。

一般代指redis中对set命令加上nx参数进行使用，set这个命令，目前已经支持这么多参数可选：






SETkeyvalue[EXseconds|PXmilliseconds][NX|XX][KEEPTTL]

当然了，就不在文章中默写Api了，基础参数还有不清晰的...]]></description><category></category></item><item><title><![CDATA[Java程序员的必修课之Spring理解透彻了吗？不会还咋去面试？]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107152980</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107152980</guid><author>reaijava</author><pubDate>Mon, 06 Jul 2020 11:19:32 +0800</pubDate><description><![CDATA[在实际研发中，Spring是我们经常会使用的框架，毕竟它们太火了，Spring相关的知识点也是面试必问点。

有次被问到Spring IOC的时候，就顺带打了个比方，IOC类似于一个菜筐，以前需要自己去菜市场买菜，现在只要在家门口放一个菜框applicationcontext.xml，就会有人来给你配菜。

除了IOC之外，AOP也是Spring整个系列的核心的概念。简而言之，将对象创建过程的职责赋予容器，通过容器管理对象的生老病死。IOC是factory加上依赖管理，通过IOC, AOP事...]]></description><category></category></item><item><title><![CDATA[简直了！顶级架构师分享心得，如何在项目中兼容多种数据库]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107121109</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107121109</guid><author>reaijava</author><pubDate>Sat, 04 Jul 2020 10:48:43 +0800</pubDate><description><![CDATA[前段时间，在和一个做了十年的顶级叫故事聊天，他说，在开发项目的时候，往往碰到的不同的需求情况，兼容不同类型的数据库是我们项目以不变应万变的举措之一，在底层能够兼容多种数据库会使得我们开发不同类型的项目得心应手，如果配合快速的框架支持，那更是锦上添花的举措。他开发的项目或者框架，采用了微软企业库Enterprise Library的模块，倾向于支持多种数据库，也为我们开发不同类型的项目提供非常方便、快速、统一的处理方式。一般常规的数据库包括MS Server、Oracle、MySQL、PostgreSQL、.]]></description><category></category></item><item><title><![CDATA[被面试官问懵B了，十亿级数据ES搜索怎么优化？]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107080920</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107080920</guid><author>reaijava</author><pubDate>Thu, 02 Jul 2020 11:33:05 +0800</pubDate><description><![CDATA[面试题

es 在数据量很大的情况下（数十亿级别）如何提高查询效率啊？文末可领取大厂真实面试题

面试官心理分析

这个问题是肯定要问的，说白了，就是看你有没有实际干过 es，因为啥？其实 es 性能并没有你想象中那么好的。很多时候数据量大了，特别是有几亿条数据的时候，可能你会懵逼的发现，跑个搜索怎么一下 5~10s，坑爹了。第一次搜索的时候，是5~10s，后面反而就快了，可能就几百毫秒。

你就很懵，每个用户第一次访问都会比较慢，比较卡么？所以你要是没玩儿过 es，或者就是自己玩玩儿 demo，被问到这个]]></description><category></category></item><item><title><![CDATA[面试官官：如何在 Spring 异步调用中传递上下文]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107059818</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107059818</guid><author>reaijava</author><pubDate>Wed, 01 Jul 2020 11:29:38 +0800</pubDate><description><![CDATA[什么是异步调用？

异步调用是相对于同步调用而言的，同步调用是指程序按预定顺序一步步执行，每一步必须等到上一步执行完后才能执行，异步调用则无需等待上一步程序执行完即可执行。异步调用指，在程序在执行时，无需等待执行的返回值即可继续执行后面的代码。在我们的应用服务中，有很多业务逻辑的执行操作不需要同步返回（如发送邮件、冗余数据表等），只需要异步执行即可。

本文将介绍 Spring 应用中，如何实现异步调用。在异步调用的过程中，会出现线程上下文信息的丢失，我们该如何解决线程上下文信息的传递。

Spring 应]]></description><category></category></item><item><title><![CDATA[JVM 面试题 | JVM 中运行时数据区的划分以及类加载机制]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107036415</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107036415</guid><author>reaijava</author><pubDate>Tue, 30 Jun 2020 10:39:37 +0800</pubDate><description><![CDATA[本系列文章讲解 面试中常见的 JVM 问题。这些问题之所以常见，是因为很基础，对于一个有点逼格的程序猿来说， JVM 的相关特性和原理在工作也需要熟知。笔者也在面试的过程中屡屡受挫，屡败屡战，总结一些常见知识点，这些知识点既可以应付面试，也可以帮助读者深入了解 JVM 提供大纲。


在用 C 之类的编程语言时，程序员需要自己手动分配和释放内存。而 Java 不一样，它有垃圾回收器，释放内存由回收器负责。

Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。那我们来.]]></description><category></category></item><item><title><![CDATA[Golang 里千万别踩到这50 个雷（一）]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107027494</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107027494</guid><author>reaijava</author><pubDate>Mon, 29 Jun 2020 20:09:36 +0800</pubDate><description><![CDATA[前言

Go 是一门简单有趣的编程语言，与其他语言一样，在使用时不免会遇到很多坑，不过它们大多不是 Go 本身的设计缺陷。如果你刚从其他语言转到 Go，那这篇文章里的坑多半会踩到。

如果花时间学习官方 doc、wiki、讨论邮件列表、 Rob Pike 的大量文章以及 Go 的源码，会发现这篇文章中的坑是很常见的，新手跳过这些坑，能减少大量调试代码的时间。

初级篇：1-35

1. 左大括号 { 一般不能单独放一行

在其他大多数语言中，{ 的位置你自行决定。Go 比较特别，遵守分号注入规则（autom]]></description><category></category></item><item><title><![CDATA[Java 线程池 | ThreadPoolExecutor 原理分析]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/107021214</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/107021214</guid><author>reaijava</author><pubDate>Mon, 29 Jun 2020 15:26:35 +0800</pubDate><description><![CDATA[在我们的开发中“池”的概念并不罕见，有数据库连接池、线程池、对象池、常量池等等。下面我们主要针对线程池来一步一步揭开线程池的面纱。

使用线程池的好处

1、降低资源消耗

可以重复利用已创建的线程降低线程创建和销毁造成的消耗。

2、提高响应速度

当任务到达时，任务可以不需要等到线程创建就能立即执行。

3、提高线程的可管理性

线程是稀缺资源，如果无限制地创建，不仅会消耗系统资源，还会降低系统的稳定性，使用线程池可以进行统一分配、调优和监控

线程池的工作原理

首先我们看下当一个新的任务提交到线程池]]></description><category></category></item><item><title><![CDATA[一文让你学会SpringAOP的动态代理]]></title><link>https://blog.youkuaiyun.com/reaijava/article/details/106987482</link><guid>https://blog.youkuaiyun.com/reaijava/article/details/106987482</guid><author>reaijava</author><pubDate>Sat, 27 Jun 2020 20:22:02 +0800</pubDate><description><![CDATA[xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;

4.0.0

com.gupaoedu

gupaoedu-springaop

0.0.1-SNAPSHOT

gupaoedu-springaop

1.8

org.projectlombok

lombok

1.16.10

org.slf4j

slf4j-api

1.7.25

ch.q]]></description><category></category></item></channel></rss>