<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Java4396的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Java4396</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Java4396]]></copyright><item><title><![CDATA[Redis入门与实践]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/123073081</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/123073081</guid><author>Java4396</author><pubDate>Tue, 22 Feb 2022 17:24:17 +0800</pubDate><description><![CDATA[今天继续更新austin项目，如果还没看过该系列的同学可以点开我的历史文章回顾下，在看的过程中不要忘记了点赞哟！建议不要漏了或者跳着看，不然这篇就看不懂了，之前写过的知识点和业务我就不再赘述啦。

今天要实现的是handler消费消息后，实现平台性去重的功能。

01、什么是去重和幂等

这个话题我之前在《对线面试官》系列就已经分享过了，这块面试也会经常问到，可以再跟大家一起复习下

「幂等」和「去重」的本质：「唯一Key」+「存储」



唯一Key如何构建以及选择用什么存储，都是业务决定的。「本...]]></description><category></category></item><item><title><![CDATA[干了三年外包的普通程序员还能社招进阿里吗？]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/123023483</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/123023483</guid><author>Java4396</author><pubDate>Sat, 19 Feb 2022 21:22:56 +0800</pubDate><description><![CDATA[作为程序员相信每个人都有一个大厂梦，作为一个面试过阿里的菜鸡，那么今天我就来说说普通Java程序员要达到什么水平才能社招进阿里


阿里面试都问什么？

我参加的是阿里的社招面试，而社招不同于校招，问题的范围其实是很随机的。因为能参加一些比较知名的互联网公司社招的人，70%以上都会有个3-5年的经验。这倒不是说一两年经验的同学没有机会进这些公司，而是因为这种公司，大部分情况下只招一些比较资深的开发和应届生，而不招那些处于中间阶段的人。而1-2年经验的同学，往往就刚好处于这个尴尬的阶段。

对于能有3-5年.]]></description><category></category></item><item><title><![CDATA[阿里二面：Spring框架用到了哪些设计模式？]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/123020829</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/123020829</guid><author>Java4396</author><pubDate>Sat, 19 Feb 2022 17:06:34 +0800</pubDate><description><![CDATA[前言

前几天，一位读者面阿里被问到一个问题：Spring框架用到了哪些设计模式？，答的不是很好，于是打算写篇文章讲讲这个！

代理模式

所谓代理，是指它与被代理对象实现了相同的接口，客户端必须通过代理才能与被代理的目标类进行交互，而代理一般在交互的过程中（交互前后），进行某些特定的处理，比如在调用这个方法前做前置处理，调用这个方法后做后置处理。

代理又分为静态代理和动态代理两种方式，Spring的AOP采用的是动态代理的方式

Spring通过动态代理对类进行方法级别的切面增强，动态生成目标对象的代理]]></description><category></category></item><item><title><![CDATA[阿里微服务架构师三年经验分享：Spring Cloud开发入门到实战]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122991416</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122991416</guid><author>Java4396</author><pubDate>Fri, 18 Feb 2022 20:46:41 +0800</pubDate><description><![CDATA[SpringCloud自述

微服务？Spring？SpringBoot？SpringCloud？......作为一名Java开发人员，对于这些字眼，是否有一种既熟悉又陌生的感觉。你见过，了解过，知道它们也是面试中很重要的一部分，但是不会运用，不会实践到项目中，这就是很尴尬的一种局面，那么你该如何对它们进行深层的剖析呢？

想必不需要多说，阿里这些年来开源的步子是不是迈得很大，其实在开源的软件上，阿里的发展速度和规模确实都是比较可圈可点的。

SpringCloud也是现在开源领域的一大热门的软件，尽管前.]]></description><category></category></item><item><title><![CDATA[18个实列详解 Spring 事务传播机制]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122611018</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122611018</guid><author>Java4396</author><pubDate>Thu, 17 Feb 2022 17:10:12 +0800</pubDate><description><![CDATA[什么是事务传播机制

事务的传播机制，顾名思义就是多个事务方法之间调用，事务如何在这些方法之间传播。


举个例子，方法 A 是一个事务的方法，方法 A 执行的时候调用了方法 B,此时方法 B 有无事务以及是否需要事务都会对方法 A 和方法 B 产生不同的影响，而这个影响是由两个方法的事务传播机制决定的。


传播属性 Propagation 枚举

Spring 对事务的传播机制在 http://​ Propagation​ 枚举中定义了7个分类：

REQUIRED 默认
	SUPPORTS 支持
	.]]></description><category></category></item><item><title><![CDATA[阿里p8耗时一个月整理的面试突击手册助力金三银四]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122951841</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122951841</guid><author>Java4396</author><pubDate>Tue, 15 Feb 2022 22:01:16 +0800</pubDate><description><![CDATA[2022年的互联网行业竞争越来越严峻，程序员一个比一个内卷，面试也是越来越难，一直以来我都想整理一套完美的面试宝典，奈何难抽出时间，这次我利用春节假期耗时一个月整理了这一份Java面试突击手册，离今年的金三银四就只剩下了一个多月的时间趁着这个机会今天我就把这份手册免费分享给大家。由于篇幅限制，下面只能截图展示这份资料


这份面试突击手册涵盖了备战面试，Java基础+集合+多线程+JVM，计算机，数据库，常用框架，系统设计常用面试题，整体分为当季最新系列、大厂面试真题系列、技术系统分类系列三部分。（纯文字文]]></description><category></category></item><item><title><![CDATA[复习了一个月的MySQL，阿里二面我居然就挂了]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122932730</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122932730</guid><author>Java4396</author><pubDate>Mon, 14 Feb 2022 21:43:57 +0800</pubDate><description><![CDATA[作为Java程序员相信大家对于MySQL的索引都不陌生，索引(Index)是帮助MySQL高效获取数据的数据结构。索引作为MySQL中比较重点的知识，在面试中出现的频率特别高。本人自认为对MySQL的索引知识相当了解，同事们工作中也都热情的称呼我为大佬。

为了进阿里，我特地花了1个月左右时间复习相关知识，自信满满的在简历上写了“精通MySQL”，想不到被阿里面试官狠狠虐了一把… 前半段和面试官相谈甚欢，聊着聊着我提到我们业务量比较大，每天大概有几百万的新数据生成，面试官来了兴趣......... 面试官：]]></description><category></category></item><item><title><![CDATA[3年程序员感慨：都这么内卷现在Java面试都这么难了]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122914560</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122914560</guid><author>Java4396</author><pubDate>Sun, 13 Feb 2022 21:37:11 +0800</pubDate><description><![CDATA[都说现在Java面试是越来越难，是企业对JAVA人员的要求越来越高。

一个行业在发展初期是非常需要人力物力各种资源的填充，前景好的扩张更快更大，也可以称作是野蛮生长吧，而在互联网行业这块尤为突出。互联网在咱们国家发展起来不过20几年时间，但是目前我国互联网普及率达已经达到了67.0%，网民规模达9.40亿，可见它的扩张速度有多快，市场有多大。由于互联网计算机行业的吃香，加之行业发展初期入行门槛要求不高，无数的计算机专业或非计算机专业转行的人才都投身进来，无论技术高低，都有适合而充足的岗位源源不断的出现。互]]></description><category></category></item><item><title><![CDATA[大厂面试真的很难吗？字节跳动3面+腾讯6面一次过，谈谈我的大厂面经]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122887699</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122887699</guid><author>Java4396</author><pubDate>Fri, 11 Feb 2022 20:14:47 +0800</pubDate><description><![CDATA[写在开头的闲言碎语

2021年春节接近尾声，对很多人来说，这一年经历了太多太多，可能是十年来记忆里比较浓墨重彩的一笔。过去的一年里，“熬”算是这个阶段我的关键字，确实太多时候就要放弃，好在自己“熬”过去了，在新的2022年里，也有个一个非常好的开端，我收获了心仪的offer。

简单来说，我今天也想要凡尔赛一次，原来大厂的面试也没有想象中的那么难，字节跳动3面+腾讯6面，就这么一次性过了，下面就细细聊聊我的大厂面经吧，希望能够给要面试的朋友提供一些经验。





PART1：字节跳动3轮面试场景重现

]]></description><category></category></item><item><title><![CDATA[为什么要学Java调优？]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122868125</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122868125</guid><author>Java4396</author><pubDate>Thu, 10 Feb 2022 19:50:40 +0800</pubDate><description><![CDATA[Java性能调优

Java性能调优，是一个老生常谈的话题。可能有些人觉得没用，一些细小的地方没有好修改的，改与不改对于代码的运行效率有什么影响呢？

Java性能调优不单单是学一门编程语言那么简单，没有办法通过直线式的思维去掌握并运用，对架构师的技术和深度都是有较高的要求的。互联网的时代，一个简单的系统囊括了应用程序、数据库、操作系统、网络等很多技术，如果线上一旦出现什么问题的话，可能就要去协调多方面的组件去进行优化，这又将是一个问题。

在这个“糙、快、猛”的互联网开发模式大行其道的今天，随着系统访问量]]></description><category></category></item><item><title><![CDATA[分布式锁是用 Redis好还是 Zookeeper]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122867792</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122867792</guid><author>Java4396</author><pubDate>Thu, 10 Feb 2022 19:33:44 +0800</pubDate><description><![CDATA[在讨论这个问题之前，我们先来看一个业务场景：系统A是一个电商系统，目前是一台机器部署，系统中有一个用户下订单的接口，但是用户下订单之前一定要去检查一下库存，确保库存足够了才会给用户下单。由于系统有一定的并发，所以会预先将商品的库存保存在redis中，用户下单的时候会更新redis的库存。此时系统架构如下：



但是这样一来会产生一个问题：假如某个时刻，redis里面的某个商品库存为1，此时两个请求同时到来，其中一个请求执行到上图的第3步，更新数据库的库存为0，但是第4步还没有执行。而另外一个请求执行到了第]]></description><category></category></item><item><title><![CDATA[为什么都说今年金三银四会比往年更加难找工作]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122831877</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122831877</guid><author>Java4396</author><pubDate>Wed, 09 Feb 2022 21:52:10 +0800</pubDate><description><![CDATA[三个原因：

一、疫情原因，公司少了。

众所周知，2020年发生了疫情。

疫情期间，倒闭了很多公司，很多公司也缩小规模裁员。所以，面试找工作的人就多了，岗位就少了。

最近还听有朋友找工作(非IT)，遇到一些公司的流氓操作。

实习期就采用岗位备选，招多个人实习，竞争一个岗位，过了三个月实习期，最后公司从中选择一个上岗，或者一个都不选。

实习完就开掉，再招实习……这样像骗子公司一样的行情，很生气，也很无奈。

二、近几年的互联网行业，初级人才多了，面试的要求水涨船高了。

在十几年前零几年的时候，IT]]></description><category></category></item><item><title><![CDATA[Java程序员都是如何准备面试的]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122830533</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122830533</guid><author>Java4396</author><pubDate>Tue, 08 Feb 2022 20:16:48 +0800</pubDate><description><![CDATA[Java面试通常可分为技术性问题和非技术性问题。

一、技术方面

技术方面的问题包含Java基础、框架等，特别是Java的一些核心基础知识点、对源码解读和核心原理的理解都是加分项。

二、非技术方面

非技术性方面的问题，虽然不能考察你多少技术能力，但能侧面看出你的一些综合能力，所以作为面试者，非技术性方面的问题，也要有所准备！

无论是技术方面还是非技术方面的问题，总结起来无非三个方向：

1. 知识结构

2. 项目经验

3. 综合能力

所以，想要在短时间内突击Java面试，可从这三方面去着手准备]]></description><category></category></item><item><title><![CDATA[微服务在弹性云实现无损发布实践]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122689357</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122689357</guid><author>Java4396</author><pubDate>Tue, 25 Jan 2022 17:30:44 +0800</pubDate><description><![CDATA[1. 背景

原来的系统是个单体服务，导致逻辑越来越复杂，牵一发而动全身。为了提高系统的可扩展性，我们把原来的单体系统，按照功能拆分成不同的微服务。



2. 弹性云配置

我们所有的微服务都是部署在弹性云上的，希望在部署服务时能够做到无损发布。要做到这一点，以下几个步骤是需要实现的：

容器销毁之前服务进程能够主动从eureka注册中心列表中删除；
	在eureka注册中心列表删除实例后，该实例在一定的时间内还要能够承接一些流量，因为此时其他eureka客户端还有该实例的缓存；
	最后等待其他线程全部处]]></description><category></category></item><item><title><![CDATA[【MySql项目实战优化】多行数据转化为同一行多列显示]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122656318</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122656318</guid><author>Java4396</author><pubDate>Sun, 23 Jan 2022 20:06:37 +0800</pubDate><description><![CDATA[在我的工作中，接到过这么一个需求，需要合并纵向的数据为 1 条记录显示出来。


业务场景

用业务上的说法，我这里有 1 个物料，其中有 n 个属性，每个属性配置有是否显示的开关，对于这个物料的 n 个属性，就是 n 条记录存储在这个表中；现在就需要对这个表按物料编码分组，分组后的数据，提取出物料的属性和配置，作为单条记录显示，画一个大概的示意图



这需求的理由是大量的数据拉出来后，上方的模式阅读数据会非常的不直观

这种转化的操作，我们可以使用 java 来处理，拉取到全部的数据后，再根据物料编码.]]></description><category></category></item><item><title><![CDATA[学会这10种实用的定时任务，拿捏所有业务场景]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122643939</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122643939</guid><author>Java4396</author><pubDate>Sat, 22 Jan 2022 21:22:00 +0800</pubDate><description><![CDATA[前言

最近有几个读者私信给我，问我他们的业务场景，要用什么样的定时任务。确实，在不用的业务场景下要用不同的定时任务，其实我们的选择还是挺多的。我今天给大家总结10种非常实用的定时任务，总有一种是适合你的。

一. linux自带的定时任务

crontab

不知道你有没有遇到过这种场景：有时需要临时统计线上的数据，然后导出到excel表格中。这种需求有时较为复杂，光靠写sql语句是无法满足需求的，这就需要写java代码了。然后将该程序打成一个jar包，在线上环境执行，最后将生成的excel文件下载到本地]]></description><category></category></item><item><title><![CDATA[面试官：HashMap实现原理是什么？HashMap是线程安全的吗？]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122643908</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122643908</guid><author>Java4396</author><pubDate>Sat, 22 Jan 2022 21:19:41 +0800</pubDate><description><![CDATA[面试题1：说一下 HashMap 的实现原理？

追问1：如何实现HashMap的有序？
	追问2：那TreeMap怎么实现有序的？
	追问3：put方法原理是怎么实现的？
	追问4：HashMap扩容机制原理
	追问5：HashMap在JDK1.8都做了哪些优化？
	追问6：链表红黑树如何互相转换？阈值多少？
面试题2：HashMap是线程安全的吗？

追问1：你是如何解决这个线程不安全问题的？
	追问2：说一下大家为什么要选择ConcurrentHashMap？
	追问3：ConcurrentHash.]]></description><category></category></item><item><title><![CDATA[亿级流量架构：服务器扩容思路及问题分析]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122643874</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122643874</guid><author>Java4396</author><pubDate>Sat, 22 Jan 2022 21:17:48 +0800</pubDate><description><![CDATA[为什么要扩容

说人话就是, 无论如何优化性能,能达到的最大值是一定的,对于一个用户量大的应用,可以对服务器进行各种优化,诸如限流、资源隔离,但是上限还是在那里,这时候就应该改变我们的硬件,例如使用更强的CPU、更大的内存,在前文中举了一个学生食堂打饭的例子,如果学生多了,可以通过令牌桶算法优先给高三学生令牌打饭,但是如果高三的学生还是很多呢?那就只有增加窗口或者食堂的数量,也就是硬件上的扩容。

扩容策略

扩容策略可以分为两种, 一种是对单机整体扩容,也就是机器内部包含CPU、内存、存储设备等,另一种.]]></description><category></category></item><item><title><![CDATA[工龄3年的Java开发程序员居然只能靠跳槽来涨薪？]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122629554</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122629554</guid><author>Java4396</author><pubDate>Fri, 21 Jan 2022 21:19:12 +0800</pubDate><description><![CDATA[各位职场人都听说过薪资倒挂这词儿吧，这个情况在行业内早就不是什么稀罕事了，我有一个认识的，作为公司3年工龄的Java开发老员工，技术过关，能够独立工作，并且思考优化方向，我不吹牛的说，至少也是个阿里P6的水平，无限接近于P7。 可即使是这么优秀的员工，3年工资一毛钱不涨，仅仅只想提升个30%的薪资，就留下来勤勤恳恳和公司共进退，但HR死活不肯，各种规章制度卡得死死的，我都为他抱不平。 人家也要生活的呀，总不能用自己的青春来给公司陪跑吧。心一横，跳槽了离家更近的公司，年薪大涨了50%。 他走以后，公司用原来.]]></description><category></category></item><item><title><![CDATA[SpringCloud Gateway集成Alibaba Nacos实现动态路由配置]]></title><link>https://blog.youkuaiyun.com/Java4396/article/details/122629499</link><guid>https://blog.youkuaiyun.com/Java4396/article/details/122629499</guid><author>Java4396</author><pubDate>Fri, 21 Jan 2022 21:13:14 +0800</pubDate><description><![CDATA[SpringCloud Gateway的核心概念

SpringCloud Gateway是Spring官方最新推出的一款基于SpringFramework5，Project Reactor和SpringBoot 2之上开发的网关。
它与第一代网关Zuul不同的是：gateway是异步非阻塞的（netty + webflux实现）；zuul是同步阻塞请求的
Gateway由三大组成部分，分别是路由、断言、过滤器。



谓词Predicate

谓词Predicate对于熟悉Java8函数式编程的开发者来.]]></description><category></category></item></channel></rss>