<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Java_supermanNO1的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Java_supermanNO1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Java_supermanNO1]]></copyright><item><title><![CDATA[含泪拿下腾讯60W Offer，五轮面试，六个小时，灵魂拷问，扶我起来我还能再战]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/118197608</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/118197608</guid><author>Java_supermanNO1</author><pubDate>Thu, 24 Jun 2021 22:26:23 +0800</pubDate><description><![CDATA[在互联网做了几年之后，去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好，更重要的是，它是对你专业能力的背书，大厂工作背景多少会给你的简历增加几分竞争力。
但说实话，想进大厂还真没那么容易。我的一个朋友在入职腾讯之前，大大小小的面试经历了十几次，最后终于在 4 轮技术面+1 轮 HR 面之后成功接到 Offer，40k*16 薪！

第一轮主要考察 Java 基础， 比如：

hashmap的实现
Java中的垃圾回收
除了代码之外你还学习了什么技术，框架
死锁是怎么产生的
线程和进程的区别

二、三]]></description><category></category></item><item><title><![CDATA[【面试复盘】2021金三银四之后，这些大厂Java高频面试点你都知道吗？]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/118025172</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/118025172</guid><author>Java_supermanNO1</author><pubDate>Fri, 18 Jun 2021 14:15:09 +0800</pubDate><description><![CDATA[时隔半年，历经金三银四之后，大厂招聘已然接近尾声，接踵而来的是下一波毕业季应届生招聘计划及金九银十。在这几个月里收到很多粉丝反馈，今年找工作太难了，好不容易有面试邀请，却倒在了前几轮技术面，据了解在大厂面试中基本都会问到Redis、分布式、高并发、JVM、源码框架、项目实战、微服务、消息中间件等这些热门知识点。然而这些知识点在平常工作中有些不一定会经常用到，让许多面试者很是头疼。
在与他们交谈中，问了他们在面试中遇到了哪些问题，经过一个月时间，我把从他们那收集到的问题进行了分类整理，经过多方面资料查阅以及和]]></description><category></category></item><item><title><![CDATA[系统性能百倍提升典型案例分析：高性能队列Disruptor]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/115254939</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/115254939</guid><author>Java_supermanNO1</author><pubDate>Fri, 26 Mar 2021 20:48:50 +0800</pubDate><description><![CDATA[Disruptor 是一款高性能的有界内存队列，目前应用非常广泛，Log4j2、SpringMessaging、HBase、Storm 都用到了 Disruptor，那 Disruptor 的性能为什么这么高呢？Disruptor 项目团队曾经写过一篇论文，详细解释了其原因，可以总结为如下：

内存分配更加合理，使用 RingBuffer 数据结构，数组元素在初始化时一次性全部创建，提升缓存命中率；对象循环利用，避免频繁 GC。
能够避免伪共享，提升缓存利用率。3. 采用无锁算法，避免频繁加锁、解锁的性能消]]></description><category></category></item><item><title><![CDATA[并发编程经典案例分析：高性能限流器Guava RateLimiter]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/115057445</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/115057445</guid><author>Java_supermanNO1</author><pubDate>Sun, 21 Mar 2021 22:09:31 +0800</pubDate><description><![CDATA[Guava 是Google 开源的 Java 类库，提供了一个工具类 RateLimiter。我们先来看看 RateLimiter的使用，让你对限流有个感官的印象。假设我们有一个线程池，它每秒只能处理两个任务，如果提交的任务过快，可能导致系统不稳定，这个时候就需要用到限流。
在下面的示例代码中，我们创建了一个流速为 2 个请求 / 秒的限流器，这里的流速该怎么理解呢？直观地看，2 个请求 / 秒指的是每秒最多允许 2 个请求通过限流器，其实在Guava中，流速还有更深一层的意思：是一种匀速的概念，2 个请求]]></description><category></category></item><item><title><![CDATA[你的线程很可能出现了：安全性、活跃性以及性能问题]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/115036585</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/115036585</guid><author>Java_supermanNO1</author><pubDate>Sat, 20 Mar 2021 22:41:38 +0800</pubDate><description><![CDATA[并发编程中我们需要注意的问题有很多，很庆幸前人已经帮我们总结过了，主要有三个方面，分别是：安全性问题、活跃性问题和性能问题。下面我就来一一介绍这些问题。
安全性问题
相信你一定听说过类似这样的描述：这个方法不是线程安全的，这个类不是线程安全的，等等。
那什么是线程安全呢？其实本质上就是正确性，而正确性的含义就是程序按照我们期望的执行，不要让我们感到意外。在上一篇《深入底层探究并发编程Bug罪魁祸首——可见性、原子性、有序性&nbsp;》中，我们已经见识过很多诡异的 Bug，都是出乎我们预料的，它们都没有按.]]></description><category></category></item><item><title><![CDATA[Java架构进阶笔记：一不小心就死锁了，怎么办？]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/115003310</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/115003310</guid><author>Java_supermanNO1</author><pubDate>Fri, 19 Mar 2021 12:04:03 +0800</pubDate><description><![CDATA[我们用 Account.class 作为互斥锁，来解决银行业务里面的转账问题，虽然这个方案不存在并发问题，但是所有账户的转账操作都是串行的，例如账户 A 转账户 B、账户 C 转账户 D 这两个转账操作现实世界里是可以并行的，但是在这个方案里却被串行化了，这样的话，性能太差。
试想互联网支付盛行的当下，8 亿网民每人每天一笔交易，每天就是 8 亿笔交易；每笔交易都对应着一次转账操作，8 亿笔交易就是 8 亿次转账操作，也就是说平均到每秒就是近 1万次转账操作，若所有的转账操作都串行，性能完全不能接受。
那下]]></description><category></category></item><item><title><![CDATA[深入底层探究并发编程Bug罪魁祸首——可见性、原子性、有序性]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114646653</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114646653</guid><author>Java_supermanNO1</author><pubDate>Wed, 10 Mar 2021 21:09:57 +0800</pubDate><description><![CDATA[如果你细心观察的话，你会发现，不管是哪一门编程语言，并发类的知识都是在高级篇里。换句话说，这块知识点其实对于程序员来说，是比较进阶的知识。我自己这么多年学习过来，也确实觉得并发是比较难的，因为它会涉及到很多的底层知识，比如若你对操作系统相关的知识一无所知的话，那去理解一些原理就会费些力气。
大家都知道，编写正确的并发程序是一件极困难的事情，并发程序的 Bug 往往会诡异地出现，然后又诡异地消失，很难重现，也很难追踪，很多时候都让人很抓狂。但要快速而又精准地解决“并发”类的疑难杂症，你就要理解这件事情的本质，]]></description><category></category></item><item><title><![CDATA[Java内存模型：看Java如何解决可见性和有序性问题]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114605342</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114605342</guid><author>Java_supermanNO1</author><pubDate>Tue, 09 Mar 2021 22:33:50 +0800</pubDate><description><![CDATA[什么是 Java 内存模型？
你已经知道，导致可见性的原因是缓存，导致有序性的原因是编译优化，那解决可见性、有序性最直接的办法就是禁用缓存和编译优化，但是这样问题虽然解决了，我们程序的性能可就堪忧了。
合理的方案应该是按需禁用缓存以及编译优化。那么，如何做到“按需禁用”呢？对于并发程序，何时禁用缓存以及编译优化只有程序员知道，那所谓“按需禁用”其实就是指按照程序员的要求来禁用。所以，为了解决可见性和有序性问题，只需要提供给程序员按需禁用缓存和编译优化的方法即可。
Java 内存模型是个很复杂的规范，可以从不]]></description><category></category></item><item><title><![CDATA[史前最详细的：Java线程池核心流程解析]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114339764</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114339764</guid><author>Java_supermanNO1</author><pubDate>Wed, 03 Mar 2021 22:54:01 +0800</pubDate><description><![CDATA[1. 前言
线程池是JAVA开发中最常使用的池化技术之一，可以减少线程资源的重复创建与销毁造成的开销。
2. 灵魂拷问：怎么做到线程重复利用?
很多同学会联想到连接池，理所当然的说：需要的时候从池中取出线程，执行完任务再放回去。
如何用代码实现呢?
此时就会发现，调用线程的start方法后，生命周期就不由父线程直接控制了。线程的run方法执行完成就销毁了，所谓的“取出”和“放回”只不过是想当然的操作。
这里先说答案：生产者消费者模型
3. ThreadPoolExecutor的实现

3.1 结构
首先看下]]></description><category></category></item><item><title><![CDATA[最详细教程：正则表达式匹配${key}并在Java中使用]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114195880</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114195880</guid><author>Java_supermanNO1</author><pubDate>Sat, 27 Feb 2021 22:20:59 +0800</pubDate><description><![CDATA[1.正则表达式匹配${key}
\$\{([a-z]+)\}&nbsp;能够匹配字符串中以${key}形式的文本(其中key为小写应为字母)
.*\$\{([a-z]+)\}.*&nbsp;可以用来检测文本中是否有${key}形式的文本
解释如下:
.&nbsp;匹配除换行符&nbsp;\n&nbsp;之外的任何单字符
*&nbsp;匹配前面的子表达式零次或多次 要匹配&nbsp;*&nbsp;字符，请使用&nbsp;\*
{&nbsp;标记限定符表达式的开始。要匹配&nbsp;{&nbsp;，请使用&nb]]></description><category></category></item><item><title><![CDATA[神操作：他凭借“Java核心技能精讲”，竟收割了21个Offer]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114025590</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/114025590</guid><author>Java_supermanNO1</author><pubDate>Wed, 24 Feb 2021 16:34:36 +0800</pubDate><description><![CDATA[作为一个资历不浅的 Java 开发，这几年我面试过不少人。 发现大多数面试者，虽然看起来工作努力，但他们表现出来的能力水平，却不足以通过面试，或拿到期望的薪资。
在我看来，造成这种情况的原因，主要有这么两方面：
第一，“知其然不知其所以然”。 做了几年技术，开发了一些业务应用，但没有思考过这些技术选择背后的逻辑。所以，我很难定位他们日后的成长潜力，也不会放心把有一定深度的任务交给他们。
第二，知识碎片化，不成系统。 事实上，当面试者无法完整、清晰地描述自己所开发的系统或使用的相关技术时，面试官就会怀疑他是否]]></description><category></category></item><item><title><![CDATA[金三银四面试必备，“全新”突击真题宝典，阿里腾讯字节都稳了]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/113925852</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/113925852</guid><author>Java_supermanNO1</author><pubDate>Mon, 22 Feb 2021 16:33:52 +0800</pubDate><description><![CDATA[前言
春节过后招聘旺季就到了，不知道大家是否准备好了，面对金三银四的招聘旺季，如果没有精心准备那笔者认为那是对自己不负责任；就我们Java程序员来说，多数的公司总体上面试都是以自我介绍+项目介绍+项目细节/难点提问+基础知识点考核+算法题这个流程下来的。
有些公司可能还会问几个实际的场景类的问题，这个环节阿里是必问的，这种问题通常是没有正确答案的，就看个人的理解，个人的积累了。剩下的就没啥了，都是换汤不换药，聊项目就看你自己对你自己的项目是否理解的透彻，比如经常问你你为什么选择这个技术，为什么这么处理之类.]]></description><category></category></item><item><title><![CDATA[阿里官方推荐：SpringMVC高能笔记，从头到尾，都是精华]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/113743886</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/113743886</guid><author>Java_supermanNO1</author><pubDate>Sun, 07 Feb 2021 17:02:31 +0800</pubDate><description><![CDATA[公众号：【慕容千语】欢迎大家的关注
前言
在网络技术中基于浏览器的B/S结构无论在PC端还是手机端都充当着至关重要的角色。 PC端自不必说，手机中很多应用虽然是以APP的形式存在，但它采用的还是B/S结构。如今日头条、微信的朋友圈等，这些应用在内部封装了浏览器，后端仍然是 Web站点。
在大型网站和复杂系统的开发中，Java无疑具有很大的优势，而在lava的Web框架中 Sprig MVC 以其强大的功能和简单且灵活的用法受到越来越多开发者的青睐。
Spring MVC入门很简单，但是要想真正使用好却并非.]]></description><category></category></item><item><title><![CDATA[程序员进阶之路：Java之String重点解析]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/111410951</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/111410951</guid><author>Java_supermanNO1</author><pubDate>Sat, 19 Dec 2020 21:48:24 +0800</pubDate><description><![CDATA[主题

String s = new String("abc") 这段代码创建了几个对象呢？ s=="abc" 这个判断的结果是什么？ s.substring(0,2).intern()=="ab" 这个的结果是什么呢？
s.charAt(index) 真的能表示出所有对应的字符吗？
"abc"+"gbn"+s 直接的字符串拼接是否真的比使用StringBuilder的性能低？

前言
Java中的String对象特性，与c/c++语言是很不同的，重点在于其 不可变性 。那么为了服务字符串不可变性的设计，则]]></description><category></category></item><item><title><![CDATA[阿里P7大牛花了16小时讲完Spring源码解析整套笔记，满满399页，拿走不谢]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/110356536</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/110356536</guid><author>Java_supermanNO1</author><pubDate>Mon, 30 Nov 2020 18:03:55 +0800</pubDate><description><![CDATA[正文
开发人员面对突如其来的变化，无论在架构选型，还是在日常开发中，总会面临各种挑战和考验。唯有系统性地掌握 Spring Framework 编程思想、设计理念，以及具体的实现方式，方可游刃有余，以免进退失据。
作为 Spring 技术生态的基石，Spring Framework 无论在设计，还是在实现上，都是一个优秀的框架，许多细节方面是非常值得我们学习的，包括：

Java 语言特性的运用，如反射、动态代理、枚举、泛型、注解、ARM，Lambda 语法等
设计思想和模式的实现，如 OOP、IoC、DD]]></description><category></category></item><item><title><![CDATA[涨薪秘籍之源码篇：Spring全家桶源码解读，大师晋级笔记]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/110143612</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/110143612</guid><author>Java_supermanNO1</author><pubDate>Wed, 25 Nov 2020 20:38:37 +0800</pubDate><description><![CDATA[最近很多人留言说今年找工作太难了，要涨薪几乎更难了 ！真的就这么悲观吗？其实不然，我们企业一直都在大量的招人，一直都没停过。只是一点和之前不一样要求变高了，优秀的人一直都缺。
我身边朋友所在的大厂也一样比平时的要求更高了，优秀的人给出薪水甚至比平时还高，因为优秀的人产出高，效率高，特殊时期企业压力也大这样的人才能给企业创造更大的价值，企业才能发展。我就在思考怎么用好这段时间快速把我们自身的能力提升上来为下半年和来年提前做好准备，这才是当下最重要的事情 ！在现在的面试基本没有不问源码的？那么为什么要了解源码呢]]></description><category></category></item><item><title><![CDATA[首发！阿里大佬整理的万字MyBatis实战笔记，精简易懂，开源免费下载]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/109648246</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/109648246</guid><author>Java_supermanNO1</author><pubDate>Thu, 12 Nov 2020 17:26:10 +0800</pubDate><description><![CDATA[MyBatis作为国内经常使用的持久层框架，其内部代码的设计非常优秀。比如在开发过程中，有能力对框架进行深度的定制化开发，解决BUG也更加得心应手！另外学习开发者是如何设计高扩展性、低耦合性的代码，便于在自己的开发场景中应用。
而在跳槽的时候MyBatis更是面试必问的内容，那你对于MyBatis又掌握了多少呢？想学习MyBatisK但，市面上真正适合学习的MyBatis资料太少，有的书或资料虽然讲得比较深入，但是语言晦涩难懂，大多数人看完这些书基本都是从入门到放弃。学透MyBatis源码难道就真的就没有一]]></description><category></category></item><item><title><![CDATA[超详细280页Docker实战文档，97.6 MB高清可下载，24h后删！]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/109627923</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/109627923</guid><author>Java_supermanNO1</author><pubDate>Wed, 11 Nov 2020 17:54:28 +0800</pubDate><description><![CDATA[Docker如日中天，这不是单纯的炒概念，Docker确确实实解决了开发与运维的痛点，因此在企业开发中得到了非常广泛的使用。
Docker是一个开放源代码软件项目，让应用程序部署在软件容器下的工作可以自动化进行，借此在Linux操作系统上，提供一-个额外的软件抽象层，以及操作系统层虚拟化的自动管理机制。
今天分享一份280页的Docker实战文档，相信看完后对Docker会有更深入的了解。由于文档内容过多，在此只以截图展示部分内容，需要详细完整版的Docker实战文档的朋友，点击此处即可免费下载。
第一章：]]></description><category></category></item><item><title><![CDATA[理解 MyBatis 是如何在 Spring 容器中初始化的]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/109586989</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/109586989</guid><author>Java_supermanNO1</author><pubDate>Mon, 09 Nov 2020 21:35:37 +0800</pubDate><description><![CDATA[MyBatis 初始化过程就是生成一些必须的对象放到 Spring 容器中。问题是这个过程到底生成了哪些对象？当遇到 MyBatis 初始化失败时，如何正确的找到分析问题的切入点？本文将针对这些问题进行介绍。
本文基于 MyBatis 3和 Spring，假设读者已经知道如何使用 Maven 和 MyBatis，以及了解 Spring 的容器机制。
一、Mybatis 三件套
我们知道 MyBatis 的主要功能是由 SqlSessionFactory 和 Mapper 两者提供的，初始化 MyBatis ]]></description><category></category></item><item><title><![CDATA[阿里弃用Hibernate，却用MyBatis，竟然是因为这个！]]></title><link>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/109565734</link><guid>https://blog.youkuaiyun.com/Java_supermanNO1/article/details/109565734</guid><author>Java_supermanNO1</author><pubDate>Sun, 08 Nov 2020 21:56:28 +0800</pubDate><description><![CDATA[最近一直在研究MyBatis源码，作为国内经常使用的持久层框架，其内部代码的设计非常优秀。比如在开发过程中，有能力对框架进行深度的定制化开发，解决BUG也更加得心应手！另外学习开发者是如何设计高扩展性、低耦合性的代码，便于在自己的开发场景中应用。
而在Mybatis中，缓存是一个绕不开的话题。比如说，MyBatis的一级缓存竟然还会引来麻烦？
MyBatis 一级缓存与 SpringFramework 的声明式事务有冲突吗？在 Service 中开启事务，连续查询两次同样的数据，结果两次查询的结果不一致。这]]></description><category></category></item></channel></rss>