<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Kevan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u011207553</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u011207553]]></copyright><item><title><![CDATA[记一次OOM的分析]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/104427840</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/104427840</guid><author>u011207553</author><pubDate>Fri, 21 Feb 2020 17:33:23 +0800</pubDate><description><![CDATA[前言

测试同学反馈测试环境不能正常访问，查看日志发现OOM。虽然是测试环境，但是还是排查了一下原因，以免线上也出同样的问题。

处理步骤
1、保留现场
首先使用jmap -heap pid查看堆空间使用情况，结果发现年轻代和老年代空间都满了

还能看到的信息是JVM使用的垃圾收集器是Parallel Scavenge + Serial Old。
保留现场：
1.使用jmap -histo pid...]]></description><category></category></item><item><title><![CDATA[IntelliJ IDEA 控制台乱码问题解决]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/99599500</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/99599500</guid><author>u011207553</author><pubDate>Wed, 14 Aug 2019 19:26:18 +0800</pubDate><description><![CDATA[IntelliJ IDEA控制台乱码问题存在好久了。。。官方也不给解决下，坑了不少人，所以网上出现了很多解决办法，不过都是差不多的内容，对于直接下载安装Idea的玩家都能解决问题，但是如果你跟我一样，使用ToolBox安装的，那乱码问题再使用网上千篇一律的解决方法肯定是没效果的，具体原因可以直接往下翻到第2种安装方式的解释。

1、如果你是直接下载安装的Idea：

第一步：修改bin目录下ide...]]></description><category></category></item><item><title><![CDATA[java--内部类、静态内部类、成员内部类、局部内部类、匿名内部类]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/97265559</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/97265559</guid><author>u011207553</author><pubDate>Thu, 25 Jul 2019 15:25:58 +0800</pubDate><description><![CDATA[转：https://blog.youkuaiyun.com/qq_21918021/article/details/88052728

知识总结
内部类

外部类只能是public或者默认，不可以是protected之类
内部类是一个编译是的概念，一旦编译成功，就会成为完全不同的两个类，分别为outer.class和outer$inner.class类。内部类的成员变量/方法名可以和外部类的相同。
可以很好...]]></description><category></category></item><item><title><![CDATA[Java 8 Lambda实现原理分析]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/97264546</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/97264546</guid><author>u011207553</author><pubDate>Thu, 25 Jul 2019 15:17:05 +0800</pubDate><description><![CDATA[转自：https://feiyeguohai.iteye.com/blog/1500108

为了支持函数式编程，Java8引入了Lambda表达式，那么在Java8中到底是如何实现Lambda表达式的呢?Lambda表达式经过编译之后，到底会生成什么东西呢?在没有深入分析前，让我们先想一想，Java8中每一个Lambda表达式必须有一个函数式接口与之对应，函数式接口与普通接口的区别，可...]]></description><category></category></item><item><title><![CDATA[为什么匿名内部类参数必须为final类型]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/97264182</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/97264182</guid><author>u011207553</author><pubDate>Thu, 25 Jul 2019 15:14:33 +0800</pubDate><description><![CDATA[转自：https://feiyeguohai.iteye.com/blog/1500108

1) 从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的局部变量(形式参数或局部变量)是天经地义的.是很自然的


2) 为什么JAVA中要加上一条限制:只能访问final型的局部变量?


3) JAVA语...]]></description><category></category></item><item><title><![CDATA[String的intern()方法详解]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96778025</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96778025</guid><author>u011207553</author><pubDate>Sun, 21 Jul 2019 23:33:59 +0800</pubDate><description><![CDATA[0.引言

什么都先不说，先看下面这个引入的例子：

[java]view plaincopy

Stringstr1=newString("SEU")+newString("Calvin");
	System.out.println(str1.intern()==str1);
	System.out.println(str1=="SEUCalvin");...]]></description><category></category></item><item><title><![CDATA[Java的快速失败和安全失败]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96720538</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96720538</guid><author>u011207553</author><pubDate>Sun, 21 Jul 2019 14:38:28 +0800</pubDate><description><![CDATA[转：http://www.cnblogs.com/ygj0930/p/6543350.html

 一：快速失败（fail—fast）

 在用迭代器遍历一个集合对象时，如果遍历过程中对集合对象的内容进行了修改（增加、删除、修改），则会抛出Concurrent Modification Exception。

原理：迭代器在遍历时直接访问集合中的内容，...]]></description><category></category></item><item><title><![CDATA[Kafka 设计与原理详解]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96720040</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96720040</guid><author>u011207553</author><pubDate>Sun, 21 Jul 2019 14:31:34 +0800</pubDate><description><![CDATA[转：https://blog.youkuaiyun.com/suifeng3051/article/details/48053965

一、Kafka简介
本文综合了我之前写的kafka相关文章，可作为一个全面了解学习kafka的培训学习资料。
1
转载请注明出处 : 本文链接

1.1 背景历史
当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息，在大数据时代，我们面临如下几...]]></description><category></category></item><item><title><![CDATA[Java 8系列之重新认识HashMap]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96717033</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96717033</guid><author>u011207553</author><pubDate>Sun, 21 Jul 2019 13:58:26 +0800</pubDate><description><![CDATA[转自美团技术团队，因为一些图片没显示出来，做了下处理，在链表rehash的代码讲解部分加了点说明，便于理解，原文链接：

https://tech.meituan.com/2016/06/24/java-hashmap.html

HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK（Java Developmet Kit）版本的更新，JDK1.8对HashMa...]]></description><category></category></item><item><title><![CDATA[Netty中如何解决select空轮询导致cpu使用率升至100%的bug]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96697233</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96697233</guid><author>u011207553</author><pubDate>Sun, 21 Jul 2019 09:59:58 +0800</pubDate><description><![CDATA[1、 BUG出现的原因：
若Selector的轮询结果为空，也没有wakeup或新消息处理，则发生N多次空轮询，使得CPU使用率100%

2、Netty中的解决思路：
对Selector()方法中的阻塞定时 select（timeMIllinois）操作的 次数进行统计，每完成一次select操作进行一次计数，若在循环周期内 发生N次空轮询，如果N值大于BUG阈值（默认为512），就进行空...]]></description><category></category></item><item><title><![CDATA[Paxos、Raft、ZAB]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96651025</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96651025</guid><author>u011207553</author><pubDate>Sun, 21 Jul 2019 00:12:34 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/qq_34370153/article/details/80998622

]]></description><category></category></item><item><title><![CDATA[一文搞懂Raft算法]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96638956</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96638956</guid><author>u011207553</author><pubDate>Sat, 20 Jul 2019 22:11:33 +0800</pubDate><description><![CDATA[https://www.cnblogs.com/xybaby/p/10124083.html

]]></description><category></category></item><item><title><![CDATA[HashMap源码注解 之 静态工具方法hash()、tableSizeFor()（四）]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96615467</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96615467</guid><author>u011207553</author><pubDate>Sat, 20 Jul 2019 18:32:19 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/fan2012huan/article/details/51097331
]]></description><category></category></item><item><title><![CDATA[HashMap的tableSizeFor方法解析]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96607151</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96607151</guid><author>u011207553</author><pubDate>Sat, 20 Jul 2019 18:14:23 +0800</pubDate><description><![CDATA[前言
HashMap的源码有点小复杂，一次性没办法全部弄懂，所以分多次去理解，看懂一点就记录一点，最后再来写个汇总篇，这里先记录其中的tableSizeFor方法。另外jdk版本是1.8.
上代码
    /**
     * Returns a power of two size for the given target capacity.
     */
    static final in...]]></description><category></category></item><item><title><![CDATA[MySQL索引原理]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96606373</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96606373</guid><author>u011207553</author><pubDate>Sat, 20 Jul 2019 17:08:05 +0800</pubDate><description><![CDATA[声明：本文是摘抄他人的博客，因这个人也是转载其他人的，但是没有附上原文链接，所以我这里不放链接了（他不放原作者的，我也不放他的，手动滑稽^-^）

摘要

本文以MySQL数据库为研究对象，讨论与数据库索引相关的一些话题。特别需要说明的是，MySQL支持诸多存储引擎，而各种存储引擎对索引的支持也各不相同，因此MySQL数据库支持多种索引类型，如BTree索引，哈希索引，全文索引等等。为了避免混乱，...]]></description><category></category></item><item><title><![CDATA[HashMap中的hash函数]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96574849</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96574849</guid><author>u011207553</author><pubDate>Sat, 20 Jul 2019 11:40:36 +0800</pubDate><description><![CDATA[转自：https://www.cnblogs.com/zhengwang/p/8136164.html

在写一个HashSet时候有个需求，是判断HashSet中是否已经存在对象，存在则取出，不存在则add添加。HashSet也是通过HashMap实现，只用了HashMap的key，value都存储一个赘余的Object，如下是HashSet中持有的HashMap对象，add函数：




　　...]]></description><category></category></item><item><title><![CDATA[mysql数据库主从同步的3种一致性方案实现，及优劣比较]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96487090</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96487090</guid><author>u011207553</author><pubDate>Fri, 19 Jul 2019 17:49:31 +0800</pubDate><description><![CDATA[数据主从同步的由来
互联网的很多业务，特别是在高并发的场景下，基本都是读远远大于写，如果数据库读和写的压力都同在一台主机上，这显然不太合理。

于是，把一台数据库主机分为单独的一台写主库（主要负责写操作），而把读的数据库压力分配给读的从库，而且读从库可以变为多台，这就是读写分离的典型场景如下：

为了进一步的降低数据库端的压力(高并发的瓶颈)，这个时候也会在业务层部署分布式缓存集群(redis、m...]]></description><category></category></item><item><title><![CDATA[Mysql redo、undo、bin、relay log 区别]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96486549</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96486549</guid><author>u011207553</author><pubDate>Fri, 19 Jul 2019 17:42:28 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/qq_17612199/article/details/80284080
]]></description><category></category></item><item><title><![CDATA[Zookeeper的Quorum机制-谈谈怎样解决脑裂(split-brain)]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96478090</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96478090</guid><author>u011207553</author><pubDate>Fri, 19 Jul 2019 12:06:31 +0800</pubDate><description><![CDATA[转：http://suroot.cn/306.html

在使用zookeeper的过程中,我们经常会看到这样一些说法:

1.zookeeper cluster的节点数目必须是奇数。

2.zookeeper 集群中必须超过半数节点(Majority)可用，整个集群才能对外可用。

这个说法在大多数情况下是正确的。

实际上ZooKeeper提供了几种方式来认定整个集群是否可用，Majority...]]></description><category></category></item><item><title><![CDATA[JVM类加载机制]]></title><link>https://blog.youkuaiyun.com/u011207553/article/details/96429096</link><guid>https://blog.youkuaiyun.com/u011207553/article/details/96429096</guid><author>u011207553</author><pubDate>Thu, 18 Jul 2019 13:37:58 +0800</pubDate><description><![CDATA[转：http://blog.youkuaiyun.com/ns_code/article/details/17881581

类加载过程
类从被加载到虚拟机内存中开始，到卸载出内存为止，它的整个生命周期包括：加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示：

其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中，加载、验证、准备和初始化这四...]]></description><category></category></item></channel></rss>